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 32 : SigHandler(int signum) 31 : { 32 32 : Moose::interrupt_signal_number = signum; 33 32 : return; 34 : } 35 : 36 : void 37 55092 : RegisterSigHandler() 38 : { 39 55092 : signal(SIGUSR1, SigHandler); 40 55092 : } 41 : 42 55092 : MooseInit::MooseInit(int argc, char * argv[], MPI_Comm COMM_WORLD_IN) 43 55092 : : LibMeshInit(argc, argv, COMM_WORLD_IN) 44 : { 45 55092 : 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 55092 : omp_set_num_threads(libMesh::n_threads()); 50 : #endif 51 : 52 55092 : ParallelUniqueId::initialize(); 53 : 54 : // Make sure that any calls to the global random number generator are consistent among processes 55 55092 : MooseRandom::seed(0); 56 : 57 55092 : RegisterSigHandler(); 58 55092 : }