Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #include "MooseInit.h" 11 : #include "ParallelUniqueId.h" 12 : #include "Factory.h" 13 : #include "ActionFactory.h" 14 : #include "Executioner.h" 15 : #include "MooseRandom.h" 16 : 17 : #include "libmesh/petsc_solver_exception.h" 18 : 19 : // PETSc 20 : #include "petscsys.h" 21 : 22 : #ifdef LIBMESH_HAVE_OPENMP 23 : #include <omp.h> 24 : #endif 25 : 26 : #include <unistd.h> 27 : #include <signal.h> 28 : 29 : void 30 28 : SigHandler(int signum) 31 : { 32 28 : Moose::interrupt_signal_number = signum; 33 28 : return; 34 : } 35 : 36 : void 37 51208 : RegisterSigHandler() 38 : { 39 51208 : signal(SIGUSR1, SigHandler); 40 51208 : } 41 : 42 51208 : MooseInit::MooseInit(int argc, char * argv[], MPI_Comm COMM_WORLD_IN) 43 51208 : : LibMeshInit(argc, argv, COMM_WORLD_IN) 44 : { 45 51208 : LibmeshPetscCallA(COMM_WORLD_IN, PetscPopSignalHandler()); // get rid of PETSc error handler 46 : 47 : // Set the number of OpenMP threads to the same as the number of threads libMesh is going to use 48 : #ifdef LIBMESH_HAVE_OPENMP 49 51208 : omp_set_num_threads(libMesh::n_threads()); 50 : #endif 51 : 52 51208 : ParallelUniqueId::initialize(); 53 : 54 : // Make sure that any calls to the global random number generator are consistent among processes 55 51208 : MooseRandom::seed(0); 56 : 57 51208 : RegisterSigHandler(); 58 51208 : }