IFEM  90A354
SIMadmin.h
Go to the documentation of this file.
1 // $Id$
2 //==============================================================================
12 //==============================================================================
13 
14 #ifndef _SIM_ADMIN_H
15 #define _SIM_ADMIN_H
16 
17 #include "XMLInputBase.h"
18 #include "SIMoptions.h"
19 #include "ProcessAdm.h"
20 #include <iostream>
21 #include <string>
22 
23 
31 class SIMadmin : public XMLInputBase
32 {
33 protected:
34  using IntVec = std::vector<int>;
35 
37  explicit SIMadmin(const char* heading = nullptr);
39  SIMadmin(SIMadmin& anotherSIM);
40 
41 public:
43  virtual ~SIMadmin() {}
44 
46  virtual bool read(const char* fileName);
47 
49  virtual bool parse(char* keyWord, std::istream& is);
51  virtual bool parse(const tinyxml2::XMLElement* elem);
52 
54  virtual bool preprocess(const IntVec& ignored = {}, bool fixDup = false)
55  {
56  return this->preprocessC(ignored,fixDup);
57  }
58 
60  virtual bool preprocessC(const IntVec&, bool, double = 0.0) { return false; }
61 
63  const ProcessAdm& getProcessAdm() const { return adm; }
64 
67  int getGlobalProcessID() const { return myPid; }
68 
70  const std::string& getHeading() const { return myHeading; }
72  void setHeading(const std::string& heading) { myHeading = heading; }
74  void printHeading(int& supStep) const;
75 
76 private:
78  bool readFlat(const char* fileName);
79 
80 public:
81  static int msgLevel;
83 
84 private:
86 
87 protected:
89  int myPid;
90  int nProc;
91  std::string myHeading;
92 };
93 
94 #endif
Class for administration MPI processes used by the IFEM library, in particular parallel linear algebr...
Class for encapsulation of general simulation options.
Base class for XML input parsing functionality.
Class for administration of MPI processes in IFEM library.
Definition: ProcessAdm.h:33
Administration base class for FEM simulators.
Definition: SIMadmin.h:32
SIMadmin(const char *heading=nullptr)
The default constructor initializes the process administrator.
Definition: SIMadmin.C:30
std::string myHeading
Heading written before reading the input file.
Definition: SIMadmin.h:91
void setHeading(const std::string &heading)
Defines the simulator heading.
Definition: SIMadmin.h:72
bool readFlat(const char *fileName)
Reads a flat text input file (the old file format).
Definition: SIMadmin.C:86
virtual bool read(const char *fileName)
Reads model data from the specified input file *fileName.
Definition: SIMadmin.C:68
int myPid
Processor ID in parallel simulations.
Definition: SIMadmin.h:89
virtual ~SIMadmin()
Empty destructor.
Definition: SIMadmin.h:43
virtual bool preprocess(const IntVec &ignored={}, bool fixDup=false)
Performs some pre-processing tasks on the FE model.
Definition: SIMadmin.h:54
std::vector< int > IntVec
Convenience alias.
Definition: SIMadmin.h:34
virtual bool preprocessC(const IntVec &, bool, double=0.0)
Performs some pre-processing tasks on the FE model.
Definition: SIMadmin.h:60
const ProcessAdm & getProcessAdm() const
Returns the parallel process administrator.
Definition: SIMadmin.h:63
SIMoptions myOpts
Actual control parameters owned by this simulator.
Definition: SIMadmin.h:85
const std::string & getHeading() const
Returns the simulator heading.
Definition: SIMadmin.h:70
void printHeading(int &supStep) const
Prints the heading of this simulator, if any, to IFEM::cout.
Definition: SIMadmin.C:54
ProcessAdm adm
Parallel administrator.
Definition: SIMadmin.h:88
int nProc
Number of processors in parallel simulations.
Definition: SIMadmin.h:90
SIMoptions & opt
Simulation control parameters.
Definition: SIMadmin.h:82
int getGlobalProcessID() const
Returns the global process ID.
Definition: SIMadmin.h:67
static int msgLevel
Controls the console output amount during solving.
Definition: SIMadmin.h:81
virtual bool parse(char *keyWord, std::istream &is)
Parses a data section from an input stream.
Definition: SIMadmin.C:113
Class for encapsulation of general simulation options.
Definition: SIMoptions.h:37
Base class for XML based input file parsing.
Definition: XMLInputBase.h:32