Branch data Line data Source code
1 : : /**
2 : : * MOAB, a Mesh-Oriented datABase, is a software component for creating,
3 : : * storing and accessing finite element mesh data.
4 : : *
5 : : * Copyright 2004 Sandia Corporation. Under the terms of Contract
6 : : * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
7 : : * retains certain rights in this software.
8 : : *
9 : : * This library is free software; you can redistribute it and/or
10 : : * modify it under the terms of the GNU Lesser General Public
11 : : * License as published by the Free Software Foundation; either
12 : : * version 2.1 of the License, or (at your option) any later version.
13 : : *
14 : : */
15 : :
16 : : #include "moab/ProcConfig.hpp"
17 : : #include "moab/gs.hpp"
18 : :
19 : : namespace moab
20 : : {
21 : :
22 : : //! Constructor
23 : 45 : ProcConfig::ProcConfig( MPI_Comm proc_comm1 ) : procComm( proc_comm1 ), crystalData( 0 )
24 : : {
25 : : #ifdef MOAB_HAVE_MPI
26 : : int rank, size;
27 [ + - ]: 45 : MPI_Comm_rank( procComm, &rank );
28 : 45 : procRank = (unsigned int)rank;
29 [ + - ]: 45 : MPI_Comm_size( procComm, &size );
30 : 45 : procSize = (unsigned int)size;
31 : : #else
32 : : procRank = 0;
33 : : procSize = 1;
34 : : #endif
35 : 45 : }
36 : :
37 : 0 : gs_data::crystal_data* ProcConfig::crystal_router( bool construct_if_missing )
38 : : {
39 : : #ifdef MOAB_HAVE_MPI
40 [ # # ][ # # ]: 0 : if( !crystalData && construct_if_missing ) { crystalData = new gs_data::crystal_data( procComm ); }
[ # # ]
41 : : #endif
42 : :
43 : 0 : return crystalData;
44 : : }
45 : :
46 : 42 : ProcConfig::~ProcConfig()
47 : : {
48 [ - + ]: 42 : if( crystalData )
49 : : {
50 : : #ifdef MOAB_HAVE_MPI
51 : 0 : crystalData->reset();
52 : : #endif
53 [ # # ]: 0 : delete crystalData;
54 : 0 : crystalData = 0;
55 : : }
56 : 42 : }
57 : :
58 : : } // namespace moab
|