PlasCom2  1.0
XPACC Multi-physics simluation application
PlasCom2.H
Go to the documentation of this file.
1 #ifndef __PC2_H__
5 #define __PC2_H__
6 
7 #include "Stencil.H"
8 #include "Simulation.H"
9 
10 #ifdef USE_OVERKIT
11 #include "overkit.h"
12 #endif
13 
14 namespace plascom2 {
15 
21 
22  // struct domain_info {
23  // int numDomains;
24  // std::vector<int> globalIndex;
25  // };
26 
27  struct process_info {
28  int worldRank;
29  int ioRank;
31  };
32 
33 #ifdef USE_OVERKIT
34  struct overkit_data {
35  ovk_context *context;
36  std::vector<ovk_domain *> domains;
37  };
38 #endif
39 
40  class application : public application_t
41  {
42 
43 
44  public:
45 
46  application(int numArgs,char **argList,MPI_Comm mpiCommunicator) :
47  application_t(numArgs,argList,mpiCommunicator), isRestart(0),
48  numSteps(0), numGrids(0)
49  {};
50  virtual int ConfigureApplication();
51  virtual int ConfigureSimulation();
52  virtual int ConfigureDomains();
53  virtual int InitializeApplication();
54  virtual int RunApplication();
55  virtual int FinalizeApplication();
56  virtual int WriteDomains();
57  virtual int ReadDomains();
58  virtual int Restart() { return(isRestart); };
59  void SetRestart(int trufals = 1){ isRestart = trufals; };
60  int RunEulerPBSPeriodic();
61  int RunPlasCom2();
62  int RunMaxwellSolver();
63  int ConfigureGeometries();
64  void SetNumGrids(int nGrids)
65  {
66  numGrids = nGrids;
67  numPointsGrid.resize(numGrids);
68  };
69  int SetNumPointsGrid(int iGrid,size_t numPoints)
70  {
71  if(iGrid > (numGrids - 1))
72  return(1);
73  numPointsGrid[iGrid] = numPoints;
74  return(0);
75  };
76  void SetNumSteps(size_t nSteps) {numSteps = nSteps;};
77 #ifdef USE_OVERKIT
78  int InitializeOverkit();
79  int ConfigureOverkit();
80  int FinalizeOverkit();
81  overkit_data *GetOverkitData() { return &overkitData; }
82 #endif
83 
84  protected:
86  pcpp::PlatformInfoType platformInfo;
88  int isRestart;
89 #ifdef USE_OVERKIT
90  overkit_data overkitData;
91 #endif
92  size_t numSteps;
93  int numGrids;
94  std::vector<size_t> numPointsGrid;
95  };
96 }
97 
98 #endif
simulation::application< domain_t > application_t
Definition: PlasCom2.H:20
simulation::state::base state_t
Definition: PlasCom2.H:17
void const size_t * numPoints
Definition: EulerKernels.H:10
std::vector< size_t > numPointsGrid
Definition: PlasCom2.H:94
virtual int Restart()
Definition: PlasCom2.H:58
Definition: PC2IO.H:10
application(int numArgs, char **argList, MPI_Comm mpiCommunicator)
Definition: PlasCom2.H:46
void SetNumGrids(int nGrids)
Definition: PlasCom2.H:64
pcpp::VirtualNodeType virtualNode
Definition: PlasCom2.H:87
simulation::domain::base< grid_t, state_t > domain_t
Definition: PlasCom2.H:19
void SetRestart(int trufals=1)
Definition: PlasCom2.H:59
void SetNumSteps(size_t nSteps)
Definition: PlasCom2.H:76
int SetNumPointsGrid(int iGrid, size_t numPoints)
Definition: PlasCom2.H:69
simulation::grid::halo halo_t
Definition: PlasCom2.H:18
simulation::grid::parallel_blockstructured grid_t
Definition: PlasCom2.H:16