16 if(elementId <= numDim)
18 int testId = elementId/numDim;
22 return(elementId - 1);
23 return(elementId - numDim);
30 int PC2Compare(
const std::string &redFileName,
const std::string &blueFileName,
31 double errTolerance,std::ostream &outStream)
34 std::ostringstream errStream;
42 std::cerr <<
"ERROR: FileInfo failed for " << redFileName
43 <<
".\nHDF5 messages:" 44 << errStream.str() << std::endl;
48 std::cerr <<
"ERROR: FileInfo failed for " << blueFileName
49 <<
".\nHDF5 messages:" 50 << errStream.str() << std::endl;
57 std::ostringstream infoStream;
58 infoStream <<
"--------- File1 (Red) -----------" << std::endl;
60 infoStream <<
"--------- File2 (Blue) -----------" << std::endl;
62 outStream << infoStream.str() << std::endl;
64 std::ostringstream processingStream;
66 processingStream <<
"Error: Files are not compatible or cannot be processed." << std::endl;
67 std::cerr << processingStream.str() << std::endl;
72 for(
int iGrid = 0;iGrid < numGrids;iGrid++){
77 processingStream <<
"Error: Could not get state and grid from " << redFileInfo.
fileName 79 std::cerr << processingStream.str() << std::endl;
93 processingStream <<
"Error: Could not get state and grid from " << blueFileInfo.
fileName 95 std::cerr << processingStream.str() << std::endl;
100 bool gridTestPassed =
true;
103 std::vector<double> gridDiffNormData(4,0.0);
106 size_t numPoints2 = 1;
108 const std::vector<double> &coordinateData1(redGrid.
CoordinateData());
109 const std::vector<double> &coordinateData2(blueGrid.
CoordinateData());
110 numPoints = coordinateData1.size()/numDim;
111 numPoints2 = coordinateData2.size()/numDim;
113 if(numPoints != numPoints2){
114 outStream <<
"Incompatible grid sizes: Red(" << numPoints
115 <<
") != Blue(" << numPoints2 <<
")" 129 std::vector<double> &normData(gridDiffNormData);
133 std::vector<double> gridDiff(numPoints*numDim,0);
134 std::vector<double>::iterator gridDiffIt = gridDiff.begin();
135 std::vector<double>::const_iterator redGridIt = coordinateData1.begin();
136 std::vector<double>::const_iterator blueGridIt = coordinateData2.begin();
137 while(gridDiffIt != gridDiff.end())
138 *gridDiffIt++ = *redGridIt++ - *blueGridIt++;
140 size_t maxErrLocation = 0;
141 outStream <<
"# (Red Grid - Blue Grid):" << std::endl;
142 outStream <<
"# Coordinate 1-Norm 2-Norm inf-Norm Sum" << std::endl;
143 for(
int iDim = 0;iDim < numDim;iDim++){
145 outStream << iDim+1 <<
" " << normData[1] <<
" " << normData[2]
146 <<
" " << normData[0] <<
" " << normData[3] << std::endl;
147 if(normData[0] > errTolerance)
148 gridTestPassed =
false;
152 outStream <<
"One or more grids not present, grid test skipped." << std::endl;
156 bool stateTestPassed =
true;
163 std::vector<std::string> stateFields;
165 stateFields.push_back(
"rho");
166 stateFields.push_back(
"rhoV");
167 stateFields.push_back(
"rhoE");
168 stateFields.push_back(
"scalarVars");
173 std::vector<double> redNormData(4,0.0);
174 std::vector<double> blueNormData(4,0.0);
175 std::vector<double> diffNormData(4,0.0);
187 std::ostringstream stateReportStream;
188 redState.
Report(stateReportStream);
189 outStream <<
"Red State Report: " << std::endl
190 << stateReportStream.str() << std::endl;
193 blueState.
Report(stateReportStream);
194 outStream <<
"Blue State Report: " << std::endl
195 << stateReportStream.str() << std::endl;
198 std::ostringstream stateValidationStream;
200 outStream <<
"Red state invalid: " << std::endl
201 << stateValidationStream.str()
206 outStream <<
"Blue state invalid: " << std::endl
207 << stateValidationStream.str()
214 double *rhoErr = redState.template GetFieldBuffer<double>(
"rho");
215 double *rhoVErr = redState.template GetFieldBuffer<double>(
"rhoV");
216 double *rhoEErr = redState.template GetFieldBuffer<double>(
"rhoE");
220 double *scalarVarsErr = NULL;
221 if(scalarHandle >= 0){
222 scalarVarsErr = redState.template GetFieldBuffer<double>(
"scalarVars");
223 numScalars = redState.
Meta()[scalarHandle].ncomp;
228 size_t maxErrLocation = 0;
230 outStream <<
"# Red State Metrics:" << std::endl;
231 outStream <<
"# Field 1-Norm 2-Norm inf-Norm Sum" << std::endl;
233 outStream <<
"rho " << redNormData[1] <<
" " << redNormData[2]
234 <<
" " << redNormData[0] <<
" " << redNormData[3] << std::endl;
235 for(
int iDim = 0;iDim < numDim;iDim++){
237 outStream <<
"rhoV-" << iDim+1 <<
" " << redNormData[1] <<
" " << redNormData[2]
238 <<
" " << redNormData[0] <<
" " << redNormData[3] << std::endl;
241 outStream <<
"rhoE " << redNormData[1] <<
" " << redNormData[2]
242 <<
" " << redNormData[0] <<
" " << redNormData[3] << std::endl;
243 for(
int iScalar = 0;iScalar <
numScalars;iScalar++){
245 &redNormData[0],maxErrLocation);
246 outStream <<
"scalarVars-" << iScalar+1 <<
" " << redNormData[1]
247 <<
" " << redNormData[2] <<
" " << redNormData[0]
248 <<
" " << redNormData[3] << std::endl;
251 rhoErr = blueState.template GetFieldBuffer<double>(
"rho");
252 rhoVErr = blueState.template GetFieldBuffer<double>(
"rhoV");
253 rhoEErr = blueState.template GetFieldBuffer<double>(
"rhoE");
256 scalarVarsErr = NULL;
257 if(scalarHandle >= 0){
258 scalarVarsErr = blueState.template GetFieldBuffer<double>(
"scalarVars");
259 numScalars = blueState.
Meta()[scalarHandle].ncomp;
262 outStream << std::endl << std::endl
263 <<
"# Blue State Metrics:" << std::endl;
264 outStream <<
"# Field 1-Norm 2-Norm inf-Norm Sum" << std::endl;
266 outStream <<
"rho " << blueNormData[1] <<
" " << blueNormData[2]
267 <<
" " << blueNormData[0] <<
" " << blueNormData[3] << std::endl;
268 for(
int iDim = 0;iDim < numDim;iDim++){
270 &blueNormData[0],maxErrLocation);
271 outStream <<
"rhoV-" << iDim+1 <<
" " << blueNormData[1] <<
" " << blueNormData[2]
272 <<
" " << blueNormData[0] <<
" " << blueNormData[3] << std::endl;
276 outStream <<
"rhoE " << blueNormData[1] <<
" " << blueNormData[2]
277 <<
" " << blueNormData[0] <<
" " << blueNormData[3] << std::endl;
278 for(
int iScalar = 0;iScalar <
numScalars;iScalar++){
280 &blueNormData[0],maxErrLocation);
281 outStream <<
"scalarVars-" << iScalar+1 <<
" " << blueNormData[1]
282 <<
" " << blueNormData[2] <<
" " << blueNormData[0]
283 <<
" " << blueNormData[3] << std::endl;
288 diffState -= blueState;
291 double *rhoErr = diffState.template GetFieldBuffer<double>(
"rho");
292 double *rhoVErr = diffState.template GetFieldBuffer<double>(
"rhoV");
293 double *rhoEErr = diffState.template GetFieldBuffer<double>(
"rhoE");
295 int scalarHandle = diffState.
GetDataIndex(
"scalarVars");
296 double *scalarVarsErr = NULL;
297 if(scalarHandle >= 0){
298 scalarVarsErr = diffState.template GetFieldBuffer<double>(
"scalarVars");
299 numScalars = diffState.
Meta()[scalarHandle].ncomp;
302 size_t maxErrLocation = 0;
304 outStream << std::endl;
305 outStream <<
"# (Red - Blue) State Metrics (Absolute): " << std::endl;
306 outStream <<
"# Field 1-Norm 2-Norm inf-Norm Sum" << std::endl;
308 outStream <<
"rho " << diffNormData[1] <<
" " << diffNormData[2]
309 <<
" " << diffNormData[0] <<
" " << diffNormData[3] << std::endl;
310 if(std::abs(blueNormData[0]) > 0.0){
311 if(std::abs(diffNormData[0])/std::abs(blueNormData[0]) > errTolerance ||
312 std::isnan(diffNormData[0]) || std::isinf(diffNormData[0])) stateTestPassed =
false;
314 if(std::abs(diffNormData[0]) > errTolerance ||
315 std::isnan(diffNormData[0]) || std::isinf(diffNormData[0])) stateTestPassed =
false;
318 for(
int iDim = 0;iDim < numDim;iDim++){
320 &diffNormData[0],maxErrLocation);
321 outStream <<
"rhoV-" << iDim+1 <<
" " << diffNormData[1] <<
" " << diffNormData[2]
322 <<
" " << diffNormData[0] <<
" " << diffNormData[3] << std::endl;
324 if(std::abs(blueNormData[0]) > 0.0){
325 if(std::abs(diffNormData[0])/std::abs(blueNormData[0]) > errTolerance ||
326 std::isnan(diffNormData[0]) || std::isinf(diffNormData[0])) stateTestPassed =
false;
328 if(std::abs(diffNormData[0]) > errTolerance ||
329 std::isnan(diffNormData[0]) || std::isinf(diffNormData[0])) stateTestPassed =
false;
335 outStream <<
"rhoE " << diffNormData[1] <<
" " << diffNormData[2]
336 <<
" " << diffNormData[0] <<
" " << diffNormData[3] << std::endl;
338 if(std::abs(blueNormData[0]) > 0.0){
339 if(std::abs(diffNormData[0])/std::abs(blueNormData[0]) > errTolerance ||
340 std::isnan(diffNormData[0]) || std::isinf(diffNormData[0])) stateTestPassed =
false;
342 if(std::abs(diffNormData[0]) > errTolerance ||
343 std::isnan(diffNormData[0]) || std::isinf(diffNormData[0])) stateTestPassed =
false;
346 for(
int iScalar = 0;iScalar <
numScalars;iScalar++){
348 &diffNormData[0],maxErrLocation);
349 outStream <<
"scalarVars-" << iScalar+1 <<
" " << diffNormData[1]
350 <<
" " << diffNormData[2] <<
" " << diffNormData[0]
351 <<
" " << diffNormData[3] << std::endl;
353 if(std::abs(blueNormData[0]) > 0.0){
354 if(std::abs(diffNormData[0])/std::abs(blueNormData[0]) > errTolerance ||
355 std::isnan(diffNormData[0]) || std::isinf(diffNormData[0])) stateTestPassed =
false;
357 if(std::abs(diffNormData[0]) > errTolerance ||
358 std::isnan(diffNormData[0]) || std::isinf(diffNormData[0])) stateTestPassed =
false;
363 outStream <<
"One or more states not present, state test skipped." << std::endl;
367 outStream <<
"Two states were not equivalent within tolerance." << std::endl;
369 outStream <<
"Two grids were not equivalent within tolerance." << std::endl;
371 if(!stateTestPassed || !gridTestPassed || !anyTest)
384 for(
int iVal = 0;iVal < 6;iVal++)
414 int myRank = inCommunicator.
Rank();
415 int returnStatus = 0;
416 std::string bcString;
419 std::ostringstream Ostr;
420 Inf.open(bcFileName.c_str());
422 messageStream <<
"Error: Could not open legacy BC data file (" 423 << bcFileName <<
"). Aborting read." << std::endl;
427 while(std::getline(Inf,bcLine)){
428 std::string::size_type
x = bcLine.find(
"#");
431 if(x != std::string::npos){
432 bcLine = bcLine.substr(0,x);
436 std::istringstream Istr(bcLine);
439 Ostr << myBc << std::endl;
441 bcString = Ostr.str();
444 if(inCommunicator.
Check())
449 std::istringstream Istr(bcString);
450 while(std::getline(Istr,bcLine)){
452 std::istringstream bcInStr(bcLine);
454 bcDat.push_back(myBC);
457 return(returnStatus);
473 std::ostream &messageStream)
475 int myRank = inCommunicator.
Rank();
483 const std::string geomName(
"cmgeom");
486 double bcWallTemp = 298.0;
487 double tempRef = 298.0;
488 if(inConfig.
IsSet(
"TEMPERATURE_REFERENCE"))
489 tempRef = inConfig.
GetValue<
double>(
"TEMPERATURE_REFERENCE");
490 if(inConfig.
IsSet(
"BCIC_WALL_TEMP"))
491 bcWallTemp = inConfig.
GetValue<
double>(
"BCIC_WALL_TEMP");
493 bcWallTemp = tempRef;
495 inConfig.
ResetKey(
"NSTEPMAX",
"PlasCom2:NumSteps");
496 inConfig.
ResetKey(
"NRESTART",
"PlasCom2:NumStepsIO");
497 inConfig.
ResetKey(
"NOUTPUT",
"PlasCom2:NumStepsStatus");
502 inConfig.
ResetKey(
"SPACEORDER",
"PlasComCM:SpatialOrder");
503 inConfig.
ResetKey(
"LENGTH_REFERENCE",
"PlasComCM:Param:refLength");
504 inConfig.
ResetKey(
"TEMPERATURE_REFERENCE",
"PlasComCM:Param:refTemperature");
505 inConfig.
ResetKey(
"DENSITY_REFERENCE",
"PlasComCM:Param:refRho");
506 inConfig.
ResetKey(
"PRESSURE_REFERENCE",
"PlasComCM:Param:refPressure");
507 inConfig.
ResetKey(
"GAMMA_REFERENCE",
"PlasComCM:Param:gamma");
508 inConfig.
ResetKey(
"REYNOLDS_NUMBER",
"PlasComCM:Param:refRe");
509 inConfig.
ResetKey(
"PRANDTL_NUMBER",
"PlasComCM:Param:refPr");
510 inConfig.
ResetKey(
"TIMESTEP",
"PlasComCM:Param:inputDT");
513 bool artDiss =
false;
514 if(inConfig.
IsSet(
"SAT_ARTIFICIAL_DISSIPATION"))
515 artDiss = inConfig.
GetFlagValue(
"SAT_ARTIFICIAL_DISSIPATION");
516 double adSigma = 0.0;
518 double adDilCutOff = 0.0;
523 if(inConfig.
IsSet(
"AMOUNT_SAT_ARTIFICIAL_DISSIPATION"))
524 adSigma = inConfig.
GetValue<
double>(
"AMOUNT_SAT_ARTIFICIAL_DISSIPATION");
525 if(inConfig.
IsSet(
"AMOUNT_SAT_ARTIFICIAL_DISSIPATION_FOR_DILATATION"))
526 adDil = inConfig.
GetValue<
double>(
"AMOUNT_SAT_ARTIFICIAL_DISSIPATION_FOR_DILATATION");
527 if(inConfig.
IsSet(
"SAT_ARTIFICIAL_DISSIPATION_DIL_CUTOFF"))
528 adDilCutOff = inConfig.
GetValue<
double>(
"SAT_ARTIFICIAL_DISSIPATION_DIL_CUTOFF");
530 inConfig.
SetParameter(
"PlasComCM:Param:sigmaDissipation",adSigma);
531 inConfig.
SetParameter(
"PlasComCM:Param:sigmaDilatation",adDil);
532 inConfig.
SetParameter(
"PlasComCM:Param:dilatationCutoff",adDilCutOff);
534 int numDim = inConfig.
GetValue<
int>(
"ND");
535 int numStepsStatus = inConfig.
GetValue<
int>(
"PlasCom2:NumStepsIO");
536 if(numStepsStatus >= 100)
540 inConfig.
SetParameter<
int>(
"PlasCom2:NumStepsStatus",numStepsStatus);
542 if(inConfig.
IsSet(
"NUMBER_OF_SCALARS"))
543 numScalars = inConfig.
GetValue<
int>(
"NUMBER_OF_SCALARS");
544 if(numScalars < 0) numScalars = 0;
546 inConfig.
SetParameter<
double>(
"PlasComCM:Param:power",0.666);
547 inConfig.
SetParameter<
double>(
"PlasComCM:Param:beta",1.0);
548 inConfig.
SetParameter<
double>(
"PlasComCM:Param:bulkViscFac",0.6);
550 inConfig.
SetParameter<
int>(
"PlasComCM:Param:nonDimensional",2);
551 std::string bcFileName(inConfig.
GetValue(
"BC_FNAME"));
552 if(bcFileName.empty())
553 bcFileName =
"bc.dat";
555 std::vector<legacybc> bcData;
556 std::map<int,int> legacyBCToPC2;
562 messageStream <<
"Reading legacy boundary conditions from " << bcFileName
566 messageStream <<
"Read of legacy bc data failed." << std::endl;
569 int numBC = bcData.size();
570 std::vector<std::string> gridNames;
572 std::multimap<int,int> gridIdToLegacyBCIndex;
573 std::multimap<int,std::string> bcToRegion;
574 std::set<int> gridIds;
575 for(
int iBCLine = 0;iBCLine < numBC;iBCLine++){
576 legacybc &legacyBC(bcData[iBCLine]);
577 gridIdToLegacyBCIndex.insert(std::make_pair(legacyBC.
gridID,iBCLine));
578 gridIds.insert(legacyBC.
gridID);
581 std::ostringstream gridNamesStream;
582 std::ostringstream geomGridNamesStream;
583 int numLegacyGrids = gridIds.size();
584 messageStream <<
"Found configuration for " << numLegacyGrids
585 <<
" legacy grids." << std::endl;
586 for(
int iGrid = 0;iGrid < numLegacyGrids;iGrid++){
587 int gridId = iGrid+1;
588 std::ostringstream nameStream;
589 nameStream <<
"Group" 590 << (gridId >= 100 ?
"" :
593 const std::string gridName(nameStream.str());
595 gridNames.push_back(gridName);
596 gridNamesStream << gridName <<
" ";
597 nameStream << geomName <<
":" << gridName;
598 const std::string geomGridName(nameStream.str());
599 geomGridNamesStream << geomGridName <<
" ";
603 std::pair<std::multimap<int,int>::iterator,
604 std::multimap<int,int>::iterator> gridBCs =
605 gridIdToLegacyBCIndex.equal_range(gridId);
609 while(gridBCs.first != gridBCs.second){
610 int bcIndex = gridBCs.first->second;
611 legacybc &legacyBC(bcData[bcIndex]);
614 messageStream <<
"legacyBC("<< bcIndex <<
"):" << std::endl
615 <<
"GridID: " << legacyBC.
gridID << std::endl
616 <<
"BCType: " << legacyBC.
bcType << std::endl
617 <<
"BCDir: " << legacyBC.
bcDir << std::endl
619 for(
int iDim = 0;iDim < numDim;iDim++){
620 if(iDim > 0) messageStream <<
"x";
621 messageStream <<
"[" << legacyBC.
bcInterval[iDim*2] <<
":" 627 std::ostringstream regionNameStream;
628 regionNameStream <<
"Region" << regionId++;
629 const std::string regionName(regionNameStream.str());
631 nameStream << regionName <<
" ";
632 regionNameStream << geomName <<
":" << gridName
633 <<
":" << regionName;
634 std::string regionPath(regionNameStream.str());
636 int pc2BCID = legacyBCToPC2[legacyBC.
bcType];
637 bcToRegion.insert(std::make_pair(pc2BCID,regionPath));
638 std::ostringstream regionConfigStream;
639 regionConfigStream << legacyBC.
bcDir <<
" ";
640 for(
int iDir = 0;iDir < 6;iDir++)
641 regionConfigStream << legacyBC.
bcInterval[iDir] <<
" ";
642 inConfig.
SetParameter(regionPath,regionConfigStream.str());
645 inConfig.
SetParameter(geomGridName+
":RegionNames",nameStream.str());
651 std::string geomGridParam(geomName+std::string(
":GridNames"));
652 inConfig.
SetParameter(geomGridParam,gridNamesStream.str());
653 inConfig.
SetParameter(
"PlasComCM:GridNames",geomGridNamesStream.str());
655 std::string gridFileName;
657 if(inConfig.
IsSet(
"GRID_FNAME")){
658 gridFileName = inConfig.
GetValue(
"GRID_FNAME");
660 std::ostringstream errStream;
662 messageStream <<
"ERROR: FileInfo failed for grid file (" 663 << gridFileName <<
"). HDF5 messages:" << std::endl
664 << errStream.str() << std::endl;
668 if(inCommunicator.
Check())
673 for(
int iGrid = 0;iGrid < numLegacyGrids;iGrid++){
674 const std::string &gridName(gridNames[iGrid]);
675 std::string gridParam(geomName+
":"+gridName);
676 std::ostringstream paramNameStream;
677 paramNameStream << gridParam <<
":Dimension";
680 if(!gridFileName.empty()){
681 paramNameStream << gridParam <<
":GridFile";
682 inConfig.
SetParameter(paramNameStream.str(),gridFileName);
686 paramNameStream << gridParam <<
":NumPoints";
687 const std::vector<size_t> &gridSize(gridFileInfo.
gridSizes[iGrid]);
688 std::ostringstream gridSizeStream;
689 for(
int iDim = 0;iDim < numDim;iDim++)
690 gridSizeStream << gridSize[iDim] <<
" ";
691 inConfig.
SetParameter(paramNameStream.str(),gridSizeStream.str());
694 paramNameStream << gridParam <<
":GenerateGrid";
701 double satSigma1 = 1.0;
702 if(inConfig.
IsSet(
"AMOUNT_SAT_SIGMAI1"))
703 satSigma1 = inConfig.
GetValue<
double>(
"AMOUNT_SAT_SIGMAI1");
704 double satSigma2 = 1.0;
705 if(inConfig.
IsSet(
"AMOUNT_SAT_SIGMAI2"))
706 satSigma2 = inConfig.
GetValue<
double>(
"AMOUNT_SAT_SIGMAI2");
708 double farfieldSigma1 = .5;
709 double farfieldSigma2 = 1.0;
710 if(inConfig.
IsSet(
"AMOUNT_SAT_SIGMAI1_FARFIELD"))
711 farfieldSigma1 = inConfig.
GetValue<
double>(
"AMOUNT_SAT_SIGMAI1_FARFIELD");
712 if(inConfig.
IsSet(
"AMOUNT_SAT_SIGMAI2_FARFIELD"))
713 farfieldSigma2 = inConfig.
GetValue<
double>(
"AMOUNT_SAT_SIGMAI2_FARFIELD");
715 double spongeAmp = 5.0;
716 double spongePower = 2.0;
717 if(inConfig.
IsSet(
"SPONGE_AMP"))
718 spongeAmp = inConfig.
GetValue<
double>(
"SPONGE_AMP");
719 if(inConfig.
IsSet(
"SPONGE_POW"))
720 spongePower = inConfig.
GetValue<
double>(
"SPONGE_POW");
722 std::ostringstream satSigmaStream;
723 satSigmaStream << satSigma1 <<
" " << satSigma2;
724 const std::string satSigma(satSigmaStream.str());
726 std::ostringstream ffSigmaStream;
727 ffSigmaStream << farfieldSigma1 <<
" " << farfieldSigma2
729 const std::string ffSigma(ffSigmaStream.str());
731 std::ostringstream noSlipStream;
732 noSlipStream << satSigma1 <<
" " << satSigma2 <<
" " 733 << bcWallTemp <<
" 0.0";
734 const std::string noSlipSetting(noSlipStream.str());
736 std::ostringstream spongeStream;
737 spongeStream << spongeAmp <<
" " << spongePower;
738 const std::string spongeSetting(spongeStream.str());
740 std::ostringstream bcNamesStream;
741 std::multimap<int,std::string>::iterator bc2RegionsIt = bcToRegion.begin();
742 while(bc2RegionsIt != bcToRegion.end()){
743 int currentBC = bc2RegionsIt->first;
744 int bcId = currentBC;
745 std::ostringstream bcRegionStream;
746 while(bcId == currentBC){
747 bcRegionStream << bc2RegionsIt++->second <<
" ";
748 bcId = bc2RegionsIt->first;
750 const std::string bcRegion(bcRegionStream.str());
753 bcNamesStream <<
"SlipWall ";
754 inConfig.
SetParameter(
"PlasComCM:SlipWall:BCType",
"SAT_SLIP_ADIABATIC");
755 inConfig.
SetParameter(
"PlasComCM:SlipWall:Param:Fields",
"Numbers Flags");
756 inConfig.
SetParameter(
"PlasComCM:SlipWall:Field:Numbers:Meta",
"2 s 8");
757 inConfig.
SetParameter(
"PlasComCM:SlipWall:Field:Flags:Meta",
"1 s 4");
758 inConfig.
SetParameter(
"PlasComCM:SlipWall:Field:Numbers",satSigma);
759 inConfig.
SetParameter(
"PlasComCM:SlipWall:Param:Flags",
"0");
760 inConfig.
SetParameter(
"PlasComCM:SlipWall:RegionNames",bcRegion);
762 bcNamesStream <<
"Farfield ";
763 inConfig.
SetParameter(
"PlasComCM:Farfield:BCType",
"SAT_FARFIELD");
764 inConfig.
SetParameter(
"PlasComCM:Farfield:Param:Fields",
"Numbers Flags");
765 inConfig.
SetParameter(
"PlasComCM:Farfield:Field:Numbers:Meta",
"3 s 8");
766 inConfig.
SetParameter(
"PlasComCM:Farfield:Field:Flags:Meta",
"1 s 4");
767 inConfig.
SetParameter(
"PlasComCM:Farfield:Param:Numbers",ffSigma);
768 inConfig.
SetParameter(
"PlasComCM:Farfield:Param:Flags",
"0");
769 inConfig.
SetParameter(
"PlasComCM:Farfield:RegionNames",bcRegion);
771 bcNamesStream <<
"NoSlip ";
772 inConfig.
SetParameter(
"PlasComCM:NoSlip:BCType",
"SAT_NOSLIP_ISOTHERMAL");
773 inConfig.
SetParameter(
"PlasComCM:NoSlip:Param:Fields",
"Numbers Flags");
774 inConfig.
SetParameter(
"PlasComCM:NoSlip:Field:Numbers:Meta",
"4 s 8");
775 inConfig.
SetParameter(
"PlasComCM:NoSlip:Field:Flags:Meta",
"1 s 4");
776 inConfig.
SetParameter(
"PlasComCM:NoSlip:Param:Numbers",noSlipSetting);
777 inConfig.
SetParameter(
"PlasComCM:NoSlip:Param:Flags",
"0");
778 inConfig.
SetParameter(
"PlasComCM:NoSlip:RegionNames",bcRegion);
780 bcNamesStream <<
"Sponge ";
781 inConfig.
SetParameter(
"PlasComCM:Sponge:BCType",
"SPONGE");
782 inConfig.
SetParameter(
"PlasComCM:Sponge:Param:Fields",
"Numbers Flags");
783 inConfig.
SetParameter(
"PlasComCM:Sponge:Field:Numbers:Meta",
"2 s 8");
784 inConfig.
SetParameter(
"PlasComCM:Sponge:Field:Flags:Meta",
"1 s 4");
785 inConfig.
SetParameter(
"PlasComCM:Sponge:Param:Numbers",spongeSetting);
786 inConfig.
SetParameter(
"PlasComCM:Sponge:Param:Flags",
"0");
787 inConfig.
SetParameter(
"PlasComCM:Sponge:RegionNames",bcRegion);
791 inConfig.
SetParameter(
"PlasComCM:BCNames",bcNamesStream.str());
806 const std::string &gridName,
808 std::ostream &messageStream)
810 messageStream <<
"Configuring Grid Inforomation for [" << gridName <<
"]" << std::endl;
812 int numDim = gridSizes.size();
815 std::string defaultGridTypeName(
"Uniform-rectangular");
818 if(typeName ==
"Uniform") typeName = defaultGridTypeName;
823 messageStream <<
"Warning: Invalid grid type specified (" << typeName
824 <<
"). Defaulting to grid type (" << defaultGridTypeName
825 <<
")." << std::endl;
828 messageStream <<
"Grid (" << gridName <<
") Type: " << typeName << std::endl;
std::vector< int > decompDirs
void SimFileInfo(std::ostream &outStream, const pcpp::io::simfileinfo &simFileInfo)
int ReadSingle(const pcpp::io::simfileinfo &fileInfo, plascom2::grid_t &inGrid, plascom2::state_t &inState, std::ostream &infoStream)
void CreateDictionaryConfiguration(int numDim, int gridType, int numScalars, bool withDV, bool withAuxData, bool withLegacyData, bool withGridMetrics, const std::string &configPrefix, fixtures::ConfigurationType &inConfig)
int GetDataIndex(const std::string &name) const
void const size_t * numPoints
bool operator==(const legacybc &lhs, const legacybc &rhs)
int ValidateState(const DatasetType &inState, const DatasetType &inParam, std::ostream &outStream)
int SetStateFields(const std::vector< int > &inFieldIndices)
bool Compatible(const pcpp::io::simfileinfo &fileInfo1, const pcpp::io::simfileinfo &fileInfo2, std::ostream &infoStream)
int ReadLegacyBCDat(const std::string &bcFileName, std::vector< legacybc > &bcDat, fixtures::CommunicatorType &inCommunicator, std::ostream &messageStream)
virtual void SetParameter(const std::string &key, const std::string &value)
std::ostream & operator<<(std::ostream &outStream, const legacybc &bcDat)
void ConvertLegacyState(int numDim, size_t numPoints, StateType &inState)
void const size_t const size_t * gridSizes
int FileInfo(const std::string &hdfFileName, pcpp::io::simfileinfo &fileInfo, std::ostream &messageStream)
int PC2Compare(const std::string &redFileName, const std::string &blueFileName, double errTolerance, std::ostream &outStream)
Read two HDF5 files and compare the state data therein.
void RenewStream(std::ostringstream &outStream)
bool operator!=(const legacybc &lhs, const legacybc &rhs)
std::vector< int > periodicDirs
std::istream & operator>>(std::istream &inStream, legacybc &bcDat)
void const size_t const size_t const size_t const int const int * gridType
std::vector< size_t > gridSizes
std::vector< int > gridNumDimensions
std::bitset< NUMFORMATBITS > formatBits
void const size_t const size_t const size_t const double const double * x
std::vector< int > threadDecompDirs
int SymmetricElementID(int numDim, int i, int j)
int ErrorMetrics(int numDim, size_t numPoints, double *dataBuffer, double *normData, size_t &maxErrLocation)
virtual void Report(std::ostream &outStream)
int Check(comm::Ops op=comm::MAXOP)
std::vector< std::vector< size_t > > gridSizes
bool FILEEXISTS(const std::string &fname)
Main encapsulation of MPI.
int ResolveTopoName(const std::string &inName)
bool GetFlagValue(const std::string &key) const
std::vector< double > physicalExtent
std::string GetValue(const std::string &key) const
std::vector< std::string > GetValueVector(const std::string &key) const
int ConvertLegacyConfiguration(fixtures::ConfigurationType &inConfig, fixtures::CommunicatorType &inCommunicator, std::ostream &messageStream)
int ResetKey(const std::string &origKey, const std::string &newKey)
void const size_t const size_t const size_t const int * numScalars
std::string ConfigKey(const std::string &configName, const std::string &keyName)
std::vector< double > & CoordinateData()
int ConfigureGridInfo(const fixtures::ConfigurationType &inConfig, const std::string &gridName, simulation::geometry::gridinfo &gridInfo, std::ostream &messageStream)
std::vector< int > decompSizes
std::string ResolveTopoType(int inType)
int StreamBroadCast(DataType &inData, int root_rank=0)
bool IsSet(const std::string &Key) const
int BroadCast(std::string &sval, int root_rank=0)
std::vector< double > periodicLengths