PlasCom2  1.0
XPACC Multi-physics simluation application
PlasCom2IO.C
Go to the documentation of this file.
1 #include "PlasCom2.H"
2 #include "PCPPCommUtil.H"
3 #include "PCPPIO.H"
4 #include "PCPPReport.H"
5 #include "PCPPIntervalUtils.H"
6 
7 namespace plascom2 {
8  namespace io {
9  namespace hdf5 {
10 
11  template<typename GridType,typename StateType,typename ConfigType>
12  int OutputSingle(const std::string &fileName,const GridType &inGrid,const StateType &inState,
13  const ConfigType &simConfig,const ConfigType &gridConfig,const ConfigType &stateConfig) {
14 
15  pcpp::CommunicatorType &gridComm(inGrid.Communicator());
16 
17 
18  // Begin PlasCom2 output
19  if(ix::sys::FILEEXISTS(fileName))
20  ix::sys::Remove(fileName);
21  pcpp::io::hdf5::base pc2File(fileName,gridComm);
22  pc2File.CreateGroup("/PlasCom2");
23  pc2File.CreateGroup("/PlasCom2/Configuration");
24  std::ostringstream configStream;
25  configStream << simConfig;
26  std::string configString(configStream.str());
27  if(!configString.empty())
28  pc2File.CreateAttribute("/PlasCom2/Configuration/Parameters",configString);
29 
30  pc2File.CreateGroup("/PlasCom2/Geometry");
31  std::vector<size_t> attSize(1,1);
32  pc2File.CreateAttribute("/PlasCom2/Geometry/numGeometries",attSize,&numGeometries);
33  pc2File.CreateAttribute("/PlasCom2/Geometry/geometryNames",geometryName);
34  std::string geomGroupName(std::string("/PlasCom2/Geometry/")+geometryName);
35  pc2File.CreateGroup(geomGroupName);
36  int numGrids = 1;
37  pc2File.CreateAttribute(geomGroupName+"/numGrids",attSize,&numGrids);
38  pc2File.CreateAttribute(geomGroupName+"/gridNames",gridName);
39  pcpp::io::hdf5::WriteGrid(testGrid,gridName,geomGroupName,pc2File);
40 
41 
42  pc2File.CreateGroup("/PlasCom2/Simulation");
43  pc2File.CreateAttribute("/PlasCom2/Simulation/numDomains",attSize,&numDomains);
44  pc2File.CreateAttribute("/PlasCom2/Simulation/domainNames",domainName);
45  pcpp::io::hdf5::WriteStateAttributes(simState,'s',"/PlasCom2/Simulation",pc2File);
46  pcpp::io::hdf5::WriteStateAttributes(paramState,'s',"/PlasCom2/Simulation",pc2File);
47  std::string domainGroupName(std::string("/PlasCom2/Simulation/")+domainName);
48  pc2File.CreateGroup(domainGroupName);
49  pc2File.CreateGroup(domainGroupName+"/Configuration");
50  std::ostringstream domainConfigStream;
51  domainConfigStream << domainConfig;
52  pc2File.CreateAttribute(domainGroupName+"/Configuration/Parameters",domainConfigStream.str());
53  pc2File.CreateAttribute(domainGroupName+"/numGrids",attSize,&numDomainGrids);
54  pc2File.CreateAttribute(domainGroupName+"/gridNames",domainGridName);
55  pcpp::io::hdf5::WriteStateAttributes(simState,'d',domainGroupName,pc2File);
56  pcpp::io::hdf5::WriteStateAttributes(paramState,'d',domainGroupName,pc2File);
57  std::string gridGroupName(domainGroupName+"/"+domainGridName);
58  pc2File.CreateGroup(gridGroupName);
59  std::vector<size_t> partitionSizes(partInterval.Sizes());
60  std::vector<size_t> partitionStarts(partInterval.Starts());
61  std::vector<size_t> partitionBufferStarts(partitionBufferInterval.Starts());
62  pcpp::io::hdf5::WriteStateNodeData(simState,gridSizes,partitionSizes,partitionStarts,
63  bufferSizes,partitionBufferStarts,gridGroupName,pc2File);
64  pc2File.Close();
65  }
66  }
67 
68  }
69 }
int Remove(const std::string &fname)
Definition: UnixUtils.C:141
void const size_t const size_t * gridSizes
Definition: EulerKernels.H:10
int WriteStateAttributes(const StateType &inState, const char attributeLocation, const std::string &filePath, base &hdfFile)
Writes state data matching attributeLocation into HDF5 attributes at filePath.
Definition: PCPPHDF5.H:1411
Definition: PC2IO.H:10
int OutputSingle(const std::string &fileName, const GridType &inGrid, const StateType &inState, const ConfigType &simConfig, const ConfigType &gridConfig, const ConfigType &stateConfig)
Definition: PlasCom2IO.C:12
int WriteGrid(const GridType &inGrid, const std::string &gridName, const std::string &parentPath, base &hdfFile)
Definition: PCPPHDF5.H:1131
int CreateGroup(const std::string &inName)
Definition: PCPPHDF5.C:2353
bool FILEEXISTS(const std::string &fname)
Definition: UnixUtils.C:189
Main encapsulation of MPI.
Definition: COMM.H:62
void const size_t const size_t * bufferSizes
Definition: MetricKernels.H:19
int CreateAttribute(const std::string &inName, const std::vector< size_t > &spaceDimensions, size_t sizeInBytes=8)
Definition: PCPPHDF5.C:2482
int WriteStateNodeData(const StateType &inState, const std::vector< size_t > &gridSizes, const std::vector< size_t > &partitionSizes, const std::vector< size_t > &partitionStarts, const std::vector< size_t > &bufferSizes, const std::vector< size_t > &partitionBufferStarts, const std::string &filePath, base &hdfFile)
Definition: PCPPHDF5.H:1516