27 bool PoiseuilleTestResult =
true;
28 int myRank = testComm.
Rank();
29 int numProc = testComm.
NProc();
31 const std::string testFunctionName(
"TestIntegrated_Poiseuille2DX");
32 const std::string testSuiteName(
"ViscidTest");
33 const std::string testCaseName(
"Poiseuille2DX");
34 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
36 std::ostringstream compareStream;
37 double errorTolerancePC1_2 = 1.e-4;
38 double errorToleranceExact = 2.e-5;
40 std::cout <<
"Running " << testFunctionName << std::endl;
43 const char *argv[] = {
"plascom2x",
"-c",
"poiseuille2d.config",NULL};
52 PoiseuilleTestResult =
false;
53 std::cout <<
"TestIntegrated_Poiseuille2D: testing directory (" 54 << testDirectory <<
") did not exist. Aborting test." 58 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
59 if(!PoiseuilleTestResult)
68 std::cout <<
"Running nonDimensional PlasCom2... (PC1ND)" << std::endl;
71 std::cout <<
"Done running nonDimensional PlasCom2 (PC1ND)." << std::endl;
74 std::cout <<
"TestIntegrated_Poiseuille2DX: PlasCom2 returned error code (" 75 << returnValue <<
"). Test failed." << std::endl;
76 PoiseuilleTestResult =
false;
82 std::cout <<
"TestIntegrated_Poiseuille2DX: PlasCom2 failed to produce expected" << std::endl
83 <<
"output file (PlasCom2_000006000.h5). Test failed." << std::endl;
84 PoiseuilleTestResult =
false;
87 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
88 if(!PoiseuilleTestResult)
95 DomainVector &simulationDomain(simulationApplicationNonDimen2.GetDomains());
101 state_t exactState(simulationDomain[0].State(0));
103 PoiseuilleTestResult =
false;
104 std::cout <<
"Fail to calculated exact poiseuille solution" << std::endl;
106 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
107 if(!PoiseuilleTestResult)
114 double *rhoPtr = rhoData.
Data<
double>();
118 double *rhoVPtr = rhoVData.
Data<
double>();
122 double *rhoEPtr = rhoEData.
Data<
double>();
124 int velocityHandle = exactState.
GetDataIndex(
"velocity");
126 double *velocityPtr = velocityData.
Data<
double>();
128 int pressureHandle = exactState.
GetDataIndex(
"pressure");
130 double *pressurePtr = pressureData.
Data<
double>();
132 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
134 double *temperaturePtr = temperatureData.
Data<
double>();
138 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 139 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
148 double refRho = 1.225;
149 double refPress = 101325;
150 double refSndSpd = sqrt(gamma*refPress/refRho);
151 double refTemp = (gamma-1)*288.15;
152 double refLength = 0.5;
155 rhoEPtr[iPoint] -= 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
158 rhoPtr[iPoint] /= refRho;
159 rhoVPtr[iPoint] /= refRho*refSndSpd/refLength;
162 rhoEPtr[iPoint] /= refSndSpd*refSndSpd*refRho;
163 rhoEPtr[iPoint] += 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
165 velocityPtr[iPoint] /= refSndSpd;
166 pressurePtr[iPoint] /= refRho*refSndSpd*refSndSpd;
167 temperaturePtr[iPoint] /= refTemp;
170 std::ostringstream Ostr;
171 Ostr <<
"exact_Poiseuille_PC1ND_6000";
172 const std::string domainName(Ostr.str());
173 const std::string hdfFileName(domainName+
".h5");
174 const std::string xdmfFileName(domainName+
".xdmf");
175 const std::string geometryName(
"poiseuille2d");
176 const std::string gridName(
"grid1");
184 gridName,exactGrid,exactState,paramState,
185 testConfig,compareStream)){
186 std::cout << compareStream.str();
187 std::cout <<
"Output to HDF5 failed:\n";
188 std::cout <<
"Continuing....\n";
199 std::cout <<
"TestIntegrated_Poiseuille2DX: failed to produce expected" << std::endl
200 <<
"output file (exact_Poiseuille_PC1ND_6000.h5). Test failed." << std::endl;
201 PoiseuilleTestResult =
false;
204 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
205 if(!PoiseuilleTestResult)
210 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" 211 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
214 "exact_Poiseuille_PC1ND_6000.h5",
215 errorToleranceExact,compareStream);
217 std::cout <<
"TestIntegrated_Poiseuille2DX: Resulting state comparison yielded negative result:" 219 << compareStream.str()
221 PoiseuilleTestResult =
false;
223 std::cout <<
"Passed!" << std::endl;
228 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
235 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:Poiseuille2DX",PoiseuilleTestResult);
245 bool PoiseuilleTestResult =
true;
246 int myRank = testComm.
Rank();
247 int numProc = testComm.
NProc();
249 const std::string testFunctionName(
"TestIntegrated_PFRectilinear2DX");
250 const std::string testSuiteName(
"ViscidTest");
251 const std::string testCaseName(
"Poiseuille2DX");
252 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
254 std::ostringstream compareStream;
255 double errorTolerancePC1_2 = 1.e-4;
256 double errorToleranceExact = 2.e-5;
258 std::cout <<
"Running " << testFunctionName << std::endl;
261 const char *argv[] = {
"plascom2x",
"-c",
"rectilinear.config",NULL};
270 PoiseuilleTestResult =
false;
271 std::cout << testFunctionName <<
": testing directory (" 272 << testDirectory <<
") did not exist. Aborting test." 276 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
277 if(!PoiseuilleTestResult)
288 std::cout <<
"Running nonDimensional PlasCom2... (PC1ND)" << std::endl;
297 std::cout <<
"Done running nonDimensional PlasCom2 (PC1ND)." << std::endl;
300 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 301 << returnValue <<
"). Test failed." << std::endl;
302 PoiseuilleTestResult =
false;
308 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
309 <<
"output file (PlasCom2_000006000.h5). Test failed." << std::endl;
310 PoiseuilleTestResult =
false;
313 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
314 if(!PoiseuilleTestResult)
321 DomainVector &simulationDomain(simulationApplicationNonDimen2.GetDomains());
327 state_t exactState(simulationDomain[0].State(0));
329 PoiseuilleTestResult =
false;
330 std::cout <<
"Fail to calculated exact poiseuille solution" << std::endl;
332 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
333 if(!PoiseuilleTestResult)
340 double *rhoPtr = rhoData.
Data<
double>();
344 double *rhoVPtr = rhoVData.
Data<
double>();
348 double *rhoEPtr = rhoEData.
Data<
double>();
350 int velocityHandle = exactState.
GetDataIndex(
"velocity");
352 double *velocityPtr = velocityData.
Data<
double>();
354 int pressureHandle = exactState.
GetDataIndex(
"pressure");
356 double *pressurePtr = pressureData.
Data<
double>();
358 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
360 double *temperaturePtr = temperatureData.
Data<
double>();
364 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 365 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
374 double refRho = 1.225;
375 double refPress = 101325;
376 double refSndSpd = sqrt(gamma*refPress/refRho);
377 double refTemp = (gamma-1)*288.15;
378 double refLength = 0.5;
381 rhoEPtr[iPoint] -= 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
384 rhoPtr[iPoint] /= refRho;
385 rhoVPtr[iPoint] /= refRho*refSndSpd/refLength;
388 rhoEPtr[iPoint] /= refSndSpd*refSndSpd*refRho;
389 rhoEPtr[iPoint] += 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
391 velocityPtr[iPoint] /= refSndSpd;
392 pressurePtr[iPoint] /= refRho*refSndSpd*refSndSpd;
393 temperaturePtr[iPoint] /= refTemp;
396 std::ostringstream Ostr;
397 Ostr <<
"exact_Poiseuille_PC1ND_6000";
398 const std::string domainName(Ostr.str());
399 const std::string hdfFileName(domainName+
".h5");
400 const std::string xdmfFileName(domainName+
".xdmf");
401 const std::string geometryName(
"poiseuille2d");
402 const std::string gridName(
"grid1");
410 gridName,exactGrid,exactState,paramState,
411 testConfig,compareStream)){
412 std::cout << compareStream.str();
413 std::cout <<
"Output to HDF5 failed:\n";
414 std::cout <<
"Continuing....\n";
425 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
426 <<
"output file (exact_Poiseuille_PC1ND_6000.h5). Test failed." << std::endl;
427 PoiseuilleTestResult =
false;
430 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
431 if(!PoiseuilleTestResult)
436 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" 437 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
440 "exact_Poiseuille_PC1ND_6000.h5",
441 errorToleranceExact,compareStream);
443 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 445 << compareStream.str()
447 PoiseuilleTestResult =
false;
449 std::cout <<
"Passed!" << std::endl;
454 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
461 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:PFRectilinear2DX",PoiseuilleTestResult);
471 bool PoiseuilleTestResult =
true;
472 int myRank = testComm.
Rank();
473 int numProc = testComm.
NProc();
475 const std::string testFunctionName(
"TestIntegrated_PFCurvilinear2DX");
476 const std::string testSuiteName(
"ViscidTest");
477 const std::string testCaseName(
"Poiseuille2DX");
478 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
480 std::ostringstream compareStream;
481 double errorToleranceExact = 9.e-3;
486 std::cout <<
"Running " << testFunctionName << std::endl;
489 const char *argv[] = {
"plascom2x",
"-c",
"curvilinear.config",NULL};
498 PoiseuilleTestResult =
false;
499 std::cout << testFunctionName <<
": testing directory (" 500 << testDirectory <<
") did not exist. Aborting test." 504 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
505 if(!PoiseuilleTestResult)
516 std::cout <<
"Running nonDimensional PlasCom2... (PC1ND)" << std::endl;
525 std::cout <<
"Done running nonDimensional PlasCom2 (PC1ND)." << std::endl;
528 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 529 << returnValue <<
"). Test failed." << std::endl;
530 PoiseuilleTestResult =
false;
536 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
537 <<
"output file (PlasCom2_000006000.h5). Test failed." << std::endl;
538 PoiseuilleTestResult =
false;
541 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
542 if(!PoiseuilleTestResult)
549 DomainVector &simulationDomain(simulationApplicationNonDimen2.GetDomains());
555 state_t exactState(simulationDomain[0].State(0));
557 PoiseuilleTestResult =
false;
558 std::cout <<
"Fail to calculated exact poiseuille solution" << std::endl;
560 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
561 if(!PoiseuilleTestResult)
568 double *rhoPtr = rhoData.
Data<
double>();
572 double *rhoVPtr = rhoVData.
Data<
double>();
576 double *rhoEPtr = rhoEData.
Data<
double>();
578 int velocityHandle = exactState.
GetDataIndex(
"velocity");
580 double *velocityPtr = velocityData.
Data<
double>();
582 int pressureHandle = exactState.
GetDataIndex(
"pressure");
584 double *pressurePtr = pressureData.
Data<
double>();
586 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
588 double *temperaturePtr = temperatureData.
Data<
double>();
592 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 593 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
602 double refRho = 1.225;
603 double refPress = 101325;
604 double refSndSpd = sqrt(gamma*refPress/refRho);
605 double refTemp = (gamma-1)*288.15;
606 double refLength = 0.5;
609 rhoEPtr[iPoint] -= 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
612 rhoPtr[iPoint] /= refRho;
613 rhoVPtr[iPoint] /= refRho*refSndSpd/refLength;
616 rhoEPtr[iPoint] /= refSndSpd*refSndSpd*refRho;
617 rhoEPtr[iPoint] += 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
619 velocityPtr[iPoint] /= refSndSpd;
620 pressurePtr[iPoint] /= refRho*refSndSpd*refSndSpd;
621 temperaturePtr[iPoint] /= refTemp;
624 std::ostringstream Ostr;
625 Ostr <<
"exact_Poiseuille_PC1ND_6000";
626 const std::string domainName(Ostr.str());
627 const std::string hdfFileName(domainName+
".h5");
628 const std::string xdmfFileName(domainName+
".xdmf");
629 const std::string geometryName(
"poiseuille2d");
630 const std::string gridName(
"grid1");
638 gridName,exactGrid,exactState,paramState,
639 testConfig,compareStream)){
640 std::cout << compareStream.str();
641 std::cout <<
"Output to HDF5 failed:\n";
642 std::cout <<
"Continuing....\n";
653 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
654 <<
"output file (exact_Poiseuille_PC1ND_6000.h5). Test failed." << std::endl;
655 PoiseuilleTestResult =
false;
658 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
659 if(!PoiseuilleTestResult)
664 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" 665 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
668 "exact_Poiseuille_PC1ND_6000.h5",
669 errorToleranceExact,compareStream);
671 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 673 << compareStream.str()
675 PoiseuilleTestResult =
false;
677 std::cout <<
"Passed!" << std::endl;
682 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
689 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:PFCurvilinear2DX",PoiseuilleTestResult);
700 bool PoiseuilleTestResult =
true;
701 int myRank = testComm.
Rank();
702 int numProc = testComm.
NProc();
704 const std::string testFunctionName(
"TestIntegrated_Poiseuille2DY");
705 const std::string testSuiteName(
"ViscidTest");
706 const std::string testCaseName(
"Poiseuille2DY");
707 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
709 std::ostringstream compareStream;
710 double errorToleranceExact = 2.e-5;
712 std::cout <<
"Running " << testFunctionName << std::endl;
715 const char *argv[] = {
"plascom2x",
"-c",
"poiseuille2d.config",NULL};
724 PoiseuilleTestResult =
false;
725 std::cout <<
"TestIntegrated_Poiseuille2D: testing directory (" 726 << testDirectory <<
") did not exist. Aborting test." 730 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
731 if(!PoiseuilleTestResult)
740 std::cout <<
"Running dimensional PlasCom2..." << std::endl;
743 std::cout <<
"Done running dimensional PlasCom2." << std::endl;
746 std::cout <<
"TestIntegrated_Poiseuille2DY: PlasCom2 returned error code (" 747 << returnValue <<
"). Test failed." << std::endl;
748 PoiseuilleTestResult =
false;
754 std::cout <<
"TestIntegrated_Poiseuille2DY: PlasCom2 failed to produce expected" 755 <<
"output file (PlasCom2_000003000.h5). Test failed." << std::endl;
756 PoiseuilleTestResult =
false;
759 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
760 if(!PoiseuilleTestResult)
767 DomainVector &simulationDomain(simulationApplicationDimen.GetDomains());
773 state_t exactState(simulationDomain[0].State(0));
775 PoiseuilleTestResult =
false;
776 std::cout <<
"Fail to calculate exact poiseuille solution" << std::endl;
778 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
779 if(!PoiseuilleTestResult)
786 double *rhoPtr = rhoData.
Data<
double>();
790 double *rhoVPtr = rhoVData.
Data<
double>();
794 double *rhoEPtr = rhoEData.
Data<
double>();
796 int velocityHandle = exactState.
GetDataIndex(
"velocity");
798 double *velocityPtr = velocityData.
Data<
double>();
800 int pressureHandle = exactState.
GetDataIndex(
"pressure");
802 double *pressurePtr = pressureData.
Data<
double>();
804 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
806 double *temperaturePtr = temperatureData.
Data<
double>();
811 std::cout <<
"Writing exact solution for dimensional PlasCom2" << std::endl;
812 std::ostringstream Ostr;
813 Ostr <<
"exact_Poiseuille_dimen_3000";
814 const std::string domainName(Ostr.str());
815 const std::string hdfFileName(domainName+
".h5");
816 const std::string xdmfFileName(domainName+
".xdmf");
817 const std::string geometryName(
"poiseuille");
818 const std::string gridName(
"grid1");
826 gridName,exactGrid,exactState,paramState,
827 testConfig,compareStream)){
828 std::cout << compareStream.str();
829 std::cout <<
"Output to HDF5 failed:\n";
830 std::cout <<
"Continuing....\n";
840 std::cout <<
"TestIntegrated_Poiseuille2DY: failed to produce expected" << std::endl
841 <<
"output file (exact_Poiseuille_dimen_3000.h5). Test failed." << std::endl;
842 PoiseuilleTestResult =
false;
846 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
847 if(!PoiseuilleTestResult)
852 std::cout <<
"Comparing exact solution against dimensional PlasCom2" << std::endl;
855 "exact_Poiseuille_dimen_3000.h5",
856 errorToleranceExact,compareStream);
859 std::cout <<
"TestIntegrated_Poiseuille2DY: Resulting state comparison yielded negative result:" 861 << compareStream.str()
863 PoiseuilleTestResult =
false;
865 std::cout <<
"Passed!" << std::endl;
871 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
877 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:Poiseuille2DY",PoiseuilleTestResult);
887 bool PoiseuilleTestResult =
true;
888 int myRank = testComm.
Rank();
889 int numProc = testComm.
NProc();
891 const std::string testFunctionName(
"TestIntegrated_PFRectilinear2DY");
892 const std::string testSuiteName(
"ViscidTest");
893 const std::string testCaseName(
"Poiseuille2DY");
894 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
896 std::ostringstream compareStream;
897 double errorToleranceExact = 2.e-5;
899 std::cout <<
"Running " << testFunctionName << std::endl;
902 const char *argv[] = {
"plascom2x",
"-c",
"rectilinear.config",NULL};
911 PoiseuilleTestResult =
false;
912 std::cout << testFunctionName <<
": testing directory (" 913 << testDirectory <<
") did not exist. Aborting test." 917 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
918 if(!PoiseuilleTestResult)
927 std::cout <<
"Running dimensional PlasCom2..." << std::endl;
930 std::cout <<
"Done running dimensional PlasCom2." << std::endl;
933 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 934 << returnValue <<
"). Test failed." << std::endl;
935 PoiseuilleTestResult =
false;
941 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" 942 <<
"output file (PlasCom2_000003000.h5). Test failed." << std::endl;
943 PoiseuilleTestResult =
false;
946 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
947 if(!PoiseuilleTestResult)
954 DomainVector &simulationDomain(simulationApplicationDimen.GetDomains());
960 state_t exactState(simulationDomain[0].State(0));
962 PoiseuilleTestResult =
false;
963 std::cout <<
"Fail to calculate exact poiseuille solution" << std::endl;
965 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
966 if(!PoiseuilleTestResult)
973 double *rhoPtr = rhoData.
Data<
double>();
977 double *rhoVPtr = rhoVData.
Data<
double>();
981 double *rhoEPtr = rhoEData.
Data<
double>();
983 int velocityHandle = exactState.
GetDataIndex(
"velocity");
985 double *velocityPtr = velocityData.
Data<
double>();
987 int pressureHandle = exactState.
GetDataIndex(
"pressure");
989 double *pressurePtr = pressureData.
Data<
double>();
991 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
993 double *temperaturePtr = temperatureData.
Data<
double>();
998 std::cout <<
"Writing exact solution for dimensional PlasCom2" << std::endl;
999 std::ostringstream Ostr;
1000 Ostr <<
"exact_Poiseuille_dimen_3000";
1001 const std::string domainName(Ostr.str());
1002 const std::string hdfFileName(domainName+
".h5");
1003 const std::string xdmfFileName(domainName+
".xdmf");
1004 const std::string geometryName(
"poiseuille");
1005 const std::string gridName(
"grid1");
1013 gridName,exactGrid,exactState,paramState,
1014 testConfig,compareStream)){
1015 std::cout << compareStream.str();
1016 std::cout <<
"Output to HDF5 failed:\n";
1017 std::cout <<
"Continuing....\n";
1027 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
1028 <<
"output file (exact_Poiseuille_dimen_3000.h5). Test failed." << std::endl;
1029 PoiseuilleTestResult =
false;
1033 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1034 if(!PoiseuilleTestResult)
1039 std::cout <<
"Comparing exact solution against dimensional PlasCom2" << std::endl;
1042 "exact_Poiseuille_dimen_3000.h5",
1043 errorToleranceExact,compareStream);
1045 if(returnValue > 0){
1046 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 1048 << compareStream.str()
1050 PoiseuilleTestResult =
false;
1052 std::cout <<
"Passed!" << std::endl;
1058 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1064 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:PFRectilinear2DY",PoiseuilleTestResult);
1074 bool PoiseuilleTestResult =
true;
1075 int myRank = testComm.
Rank();
1076 int numProc = testComm.
NProc();
1078 const std::string testFunctionName(
"TestIntegrated_PFCurvilinear2DY");
1079 const std::string testSuiteName(
"ViscidTest");
1080 const std::string testCaseName(
"Poiseuille2DY");
1081 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
1083 std::ostringstream compareStream;
1084 double errorToleranceExact = 2.e-5;
1086 std::cout <<
"Running " << testFunctionName << std::endl;
1089 const char *argv[] = {
"plascom2x",
"-c",
"curvilinear.config",NULL};
1094 int returnValue = 0;
1098 PoiseuilleTestResult =
false;
1099 std::cout << testFunctionName <<
": testing directory (" 1100 << testDirectory <<
") did not exist. Aborting test." 1104 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1105 if(!PoiseuilleTestResult)
1114 std::cout <<
"Running dimensional PlasCom2..." << std::endl;
1117 std::cout <<
"Done running dimensional PlasCom2." << std::endl;
1119 if(returnValue > 0){
1120 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 1121 << returnValue <<
"). Test failed." << std::endl;
1122 PoiseuilleTestResult =
false;
1128 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" 1129 <<
"output file (PlasCom2_000003000.h5). Test failed." << std::endl;
1130 PoiseuilleTestResult =
false;
1133 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1134 if(!PoiseuilleTestResult)
1141 DomainVector &simulationDomain(simulationApplicationDimen.GetDomains());
1147 state_t exactState(simulationDomain[0].State(0));
1149 PoiseuilleTestResult =
false;
1150 std::cout <<
"Fail to calculate exact poiseuille solution" << std::endl;
1152 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1153 if(!PoiseuilleTestResult)
1160 double *rhoPtr = rhoData.
Data<
double>();
1164 double *rhoVPtr = rhoVData.
Data<
double>();
1168 double *rhoEPtr = rhoEData.
Data<
double>();
1170 int velocityHandle = exactState.
GetDataIndex(
"velocity");
1172 double *velocityPtr = velocityData.
Data<
double>();
1174 int pressureHandle = exactState.
GetDataIndex(
"pressure");
1176 double *pressurePtr = pressureData.
Data<
double>();
1178 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
1180 double *temperaturePtr = temperatureData.
Data<
double>();
1185 std::cout <<
"Writing exact solution for dimensional PlasCom2" << std::endl;
1186 std::ostringstream Ostr;
1187 Ostr <<
"exact_Poiseuille_dimen_3000";
1188 const std::string domainName(Ostr.str());
1189 const std::string hdfFileName(domainName+
".h5");
1190 const std::string xdmfFileName(domainName+
".xdmf");
1191 const std::string geometryName(
"poiseuille");
1192 const std::string gridName(
"grid1");
1200 gridName,exactGrid,exactState,paramState,
1201 testConfig,compareStream)){
1202 std::cout << compareStream.str();
1203 std::cout <<
"Output to HDF5 failed:\n";
1204 std::cout <<
"Continuing....\n";
1214 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
1215 <<
"output file (exact_Poiseuille_dimen_3000.h5). Test failed." << std::endl;
1216 PoiseuilleTestResult =
false;
1220 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1221 if(!PoiseuilleTestResult)
1226 std::cout <<
"Comparing exact solution against dimensional PlasCom2" << std::endl;
1229 "exact_Poiseuille_dimen_3000.h5",
1230 errorToleranceExact,compareStream);
1232 if(returnValue > 0){
1233 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 1235 << compareStream.str()
1237 PoiseuilleTestResult =
false;
1239 std::cout <<
"Passed!" << std::endl;
1245 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1251 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:PFCurvilinear2DY",PoiseuilleTestResult);
1261 bool PoiseuilleTestResult =
true;
1262 int myRank = testComm.
Rank();
1263 int numProc = testComm.
NProc();
1265 const std::string testFunctionName(
"TestIntegrated_Poiseuille3DZ");
1266 const std::string testSuiteName(
"ViscidTest");
1267 const std::string testCaseName(
"Poiseuille3DZ");
1268 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
1270 std::ostringstream compareStream;
1271 double errorToleranceExact = 2.e-4;
1273 std::cout <<
"Running " << testFunctionName << std::endl;
1276 const char *argv[] = {
"plascom2x",
"-c",
"poiseuille3d.config",NULL};
1281 int returnValue = 0;
1285 PoiseuilleTestResult =
false;
1286 std::cout <<
"TestIntegrated_poiseuille3d: testing directory (" 1287 << testDirectory <<
") did not exist. Aborting test." 1291 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1292 if(!PoiseuilleTestResult)
1301 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
1304 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
1306 if(returnValue > 0){
1307 std::cout <<
"TestIntegrated_Poiseuille3DZ: PlasCom2 returned error code (" 1308 << returnValue <<
"). Test failed." << std::endl;
1309 PoiseuilleTestResult =
false;
1315 std::cout <<
"TestIntegrated_Poiseuille3DZ: PlasCom2 failed to produce expected" << std::endl
1316 <<
"output file (PlasCom2_000003000.h5). Test failed." << std::endl;
1317 PoiseuilleTestResult =
false;
1320 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1321 if(!PoiseuilleTestResult)
1328 DomainVector &simulationDomain(simulationApplicationNonDimen.GetDomains());
1334 state_t exactState(simulationDomain[0].State(0));
1336 PoiseuilleTestResult =
false;
1337 std::cout <<
"Fail to calculated exact poiseuille solution" << std::endl;
1339 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1340 if(!PoiseuilleTestResult)
1347 double *rhoPtr = rhoData.
Data<
double>();
1351 double *rhoVPtr = rhoVData.
Data<
double>();
1355 double *rhoEPtr = rhoEData.
Data<
double>();
1357 int velocityHandle = exactState.
GetDataIndex(
"velocity");
1359 double *velocityPtr = velocityData.
Data<
double>();
1361 int pressureHandle = exactState.
GetDataIndex(
"pressure");
1363 double *pressurePtr = pressureData.
Data<
double>();
1365 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
1367 double *temperaturePtr = temperatureData.
Data<
double>();
1371 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" << std::endl;
1380 double refRho = 1.225;
1381 double refPress = 101325;
1382 double refSndSpd = sqrt(gamma*refPress/refRho);
1383 double refVel = sqrt(refPress/refRho);
1384 double refTemp = 288.15;
1385 double refLength = 1.0;
1388 rhoEPtr[iPoint] -= 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
1391 rhoPtr[iPoint] /= refRho;
1395 rhoEPtr[iPoint] /= refVel*refVel*refRho;
1396 rhoEPtr[iPoint] += 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
1399 pressurePtr[iPoint] /= refPress;
1400 temperaturePtr[iPoint] /= refTemp;
1403 std::ostringstream Ostr;
1404 Ostr <<
"exact_Poiseuille_ND_3000";
1405 const std::string domainName(Ostr.str());
1406 const std::string hdfFileName(domainName+
".h5");
1407 const std::string xdmfFileName(domainName+
".xdmf");
1408 const std::string geometryName(
"poiseuille3d");
1409 const std::string gridName(
"grid1");
1417 gridName,exactGrid,exactState,paramState,
1418 testConfig,compareStream)){
1419 std::cout << compareStream.str();
1420 std::cout <<
"Output to HDF5 failed:\n";
1421 std::cout <<
"Continuing....\n";
1432 std::cout <<
"TestIntegrated_Poiseuille3DZ: failed to produce expected" << std::endl
1433 <<
"output file (exact_Poiseuille_ND_3000.h5). Test failed." << std::endl;
1434 PoiseuilleTestResult =
false;
1437 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1438 if(!PoiseuilleTestResult)
1443 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
1446 "exact_Poiseuille_ND_3000.h5",
1447 errorToleranceExact,compareStream);
1448 if(returnValue > 0){
1449 std::cout <<
"TestIntegrated_Poiseuille3DZ: Resulting state comparison yielded negative result:" 1451 << compareStream.str()
1453 PoiseuilleTestResult =
false;
1455 std::cout <<
"Passed!" << std::endl;
1460 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1466 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:Poiseuille3DZ",PoiseuilleTestResult);
1476 bool PoiseuilleTestResult =
true;
1477 int myRank = testComm.
Rank();
1478 int numProc = testComm.
NProc();
1480 const std::string testFunctionName(
"TestIntegrated_PFRectilinear3DZ");
1481 const std::string testSuiteName(
"ViscidTest");
1482 const std::string testCaseName(
"Poiseuille3DZ");
1483 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
1485 std::ostringstream compareStream;
1486 double errorToleranceExact = 2.e-4;
1488 std::cout <<
"Running " << testFunctionName << std::endl;
1491 const char *argv[] = {
"plascom2x",
"-c",
"rectilinear.config",NULL};
1496 int returnValue = 0;
1500 PoiseuilleTestResult =
false;
1501 std::cout <<
"TestIntegrated_poiseuille3d: testing directory (" 1502 << testDirectory <<
") did not exist. Aborting test." 1506 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1507 if(!PoiseuilleTestResult)
1516 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
1519 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
1521 if(returnValue > 0){
1522 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 1523 << returnValue <<
"). Test failed." << std::endl;
1524 PoiseuilleTestResult =
false;
1530 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
1531 <<
"output file (PlasCom2_000003000.h5). Test failed." << std::endl;
1532 PoiseuilleTestResult =
false;
1535 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1536 if(!PoiseuilleTestResult)
1543 DomainVector &simulationDomain(simulationApplicationNonDimen.GetDomains());
1549 state_t exactState(simulationDomain[0].State(0));
1551 PoiseuilleTestResult =
false;
1552 std::cout <<
"Fail to calculated exact poiseuille solution" << std::endl;
1554 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1555 if(!PoiseuilleTestResult)
1562 double *rhoPtr = rhoData.
Data<
double>();
1566 double *rhoVPtr = rhoVData.
Data<
double>();
1570 double *rhoEPtr = rhoEData.
Data<
double>();
1572 int velocityHandle = exactState.
GetDataIndex(
"velocity");
1574 double *velocityPtr = velocityData.
Data<
double>();
1576 int pressureHandle = exactState.
GetDataIndex(
"pressure");
1578 double *pressurePtr = pressureData.
Data<
double>();
1580 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
1582 double *temperaturePtr = temperatureData.
Data<
double>();
1586 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" << std::endl;
1595 double refRho = 1.225;
1596 double refPress = 101325;
1597 double refSndSpd = sqrt(gamma*refPress/refRho);
1598 double refVel = sqrt(refPress/refRho);
1599 double refTemp = 288.15;
1600 double refLength = 1.0;
1603 rhoEPtr[iPoint] -= 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
1606 rhoPtr[iPoint] /= refRho;
1610 rhoEPtr[iPoint] /= refVel*refVel*refRho;
1611 rhoEPtr[iPoint] += 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
1614 pressurePtr[iPoint] /= refPress;
1615 temperaturePtr[iPoint] /= refTemp;
1618 std::ostringstream Ostr;
1619 Ostr <<
"exact_Poiseuille_ND_3000";
1620 const std::string domainName(Ostr.str());
1621 const std::string hdfFileName(domainName+
".h5");
1622 const std::string xdmfFileName(domainName+
".xdmf");
1623 const std::string geometryName(
"poiseuille3d");
1624 const std::string gridName(
"grid1");
1632 gridName,exactGrid,exactState,paramState,
1633 testConfig,compareStream)){
1634 std::cout << compareStream.str();
1635 std::cout <<
"Output to HDF5 failed:\n";
1636 std::cout <<
"Continuing....\n";
1647 std::cout <<
"TestIntegrated_Poiseuille3DZ: failed to produce expected" << std::endl
1648 <<
"output file (exact_Poiseuille_ND_3000.h5). Test failed." << std::endl;
1649 PoiseuilleTestResult =
false;
1652 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1653 if(!PoiseuilleTestResult)
1658 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
1661 "exact_Poiseuille_ND_3000.h5",
1662 errorToleranceExact,compareStream);
1663 if(returnValue > 0){
1664 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 1666 << compareStream.str()
1668 PoiseuilleTestResult =
false;
1670 std::cout <<
"Passed!" << std::endl;
1675 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1681 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:PFRectilinear3DZ",PoiseuilleTestResult);
1691 bool PoiseuilleTestResult =
true;
1692 int myRank = testComm.
Rank();
1693 int numProc = testComm.
NProc();
1695 const std::string testFunctionName(
"TestIntegrated_PFCurvilinear3DZ");
1696 const std::string testSuiteName(
"ViscidTest");
1697 const std::string testCaseName(
"Poiseuille3DZ");
1698 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
1700 std::ostringstream compareStream;
1701 double errorToleranceExact = 2.e-4;
1703 std::cout <<
"Running " << testFunctionName << std::endl;
1706 const char *argv[] = {
"plascom2x",
"-c",
"curvilinear.config",NULL};
1711 int returnValue = 0;
1715 PoiseuilleTestResult =
false;
1716 std::cout <<
"TestIntegrated_poiseuille3d: testing directory (" 1717 << testDirectory <<
") did not exist. Aborting test." 1721 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1722 if(!PoiseuilleTestResult)
1731 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
1734 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
1736 if(returnValue > 0){
1737 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 1738 << returnValue <<
"). Test failed." << std::endl;
1739 PoiseuilleTestResult =
false;
1745 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
1746 <<
"output file (PlasCom2_000003000.h5). Test failed." << std::endl;
1747 PoiseuilleTestResult =
false;
1750 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1751 if(!PoiseuilleTestResult)
1758 DomainVector &simulationDomain(simulationApplicationNonDimen.GetDomains());
1764 state_t exactState(simulationDomain[0].State(0));
1766 PoiseuilleTestResult =
false;
1767 std::cout <<
"Fail to calculated exact poiseuille solution" << std::endl;
1769 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1770 if(!PoiseuilleTestResult)
1777 double *rhoPtr = rhoData.
Data<
double>();
1781 double *rhoVPtr = rhoVData.
Data<
double>();
1785 double *rhoEPtr = rhoEData.
Data<
double>();
1787 int velocityHandle = exactState.
GetDataIndex(
"velocity");
1789 double *velocityPtr = velocityData.
Data<
double>();
1791 int pressureHandle = exactState.
GetDataIndex(
"pressure");
1793 double *pressurePtr = pressureData.
Data<
double>();
1795 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
1797 double *temperaturePtr = temperatureData.
Data<
double>();
1801 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" << std::endl;
1810 double refRho = 1.225;
1811 double refPress = 101325;
1812 double refSndSpd = sqrt(gamma*refPress/refRho);
1813 double refVel = sqrt(refPress/refRho);
1814 double refTemp = 288.15;
1815 double refLength = 1.0;
1818 rhoEPtr[iPoint] -= 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
1821 rhoPtr[iPoint] /= refRho;
1825 rhoEPtr[iPoint] /= refVel*refVel*refRho;
1826 rhoEPtr[iPoint] += 0.5*rhoVPtr[iPoint]*rhoVPtr[iPoint]/rhoPtr[iPoint];
1829 pressurePtr[iPoint] /= refPress;
1830 temperaturePtr[iPoint] /= refTemp;
1833 std::ostringstream Ostr;
1834 Ostr <<
"exact_Poiseuille_ND_3000";
1835 const std::string domainName(Ostr.str());
1836 const std::string hdfFileName(domainName+
".h5");
1837 const std::string xdmfFileName(domainName+
".xdmf");
1838 const std::string geometryName(
"poiseuille3d");
1839 const std::string gridName(
"grid1");
1847 gridName,exactGrid,exactState,paramState,
1848 testConfig,compareStream)){
1849 std::cout << compareStream.str();
1850 std::cout <<
"Output to HDF5 failed:\n";
1851 std::cout <<
"Continuing....\n";
1862 std::cout <<
"TestIntegrated_Poiseuille3DZ: failed to produce expected" << std::endl
1863 <<
"output file (exact_Poiseuille_ND_3000.h5). Test failed." << std::endl;
1864 PoiseuilleTestResult =
false;
1867 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1868 if(!PoiseuilleTestResult)
1873 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
1876 "exact_Poiseuille_ND_3000.h5",
1877 errorToleranceExact,compareStream);
1878 if(returnValue > 0){
1879 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 1881 << compareStream.str()
1883 PoiseuilleTestResult =
false;
1885 std::cout <<
"Passed!" << std::endl;
1890 PoiseuilleTestResult =
CheckResult(PoiseuilleTestResult,testComm);
1896 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:PFCurvilinear3DZ",PoiseuilleTestResult);
1906 bool viscousShockTestResult =
true;
1907 int myRank = testComm.
Rank();
1908 int numProc = testComm.
NProc();
1910 const std::string testFunctionName(
"TestIntegrated_ViscousShock2DX");
1911 const std::string testSuiteName(
"ViscidTest");
1912 const std::string testCaseName(
"ViscousShock2DX");
1913 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
1915 std::ostringstream compareStream;
1916 double errorTolerancePC1_2 = 1.e-4;
1917 double errorToleranceExact = 5.e-2;
1919 std::cout <<
"Running " << testFunctionName << std::endl;
1922 const char *argv[] = {
"plascom2x",
"-c",
"shock.test.config",NULL};
1932 int returnValue = 0;
1936 viscousShockTestResult =
false;
1937 std::cout <<
"TestIntegrated_viscousShock2D: testing directory (" 1938 << testDirectory <<
") did not exist. Aborting test." 1942 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
1943 if(!viscousShockTestResult)
1953 std::cout <<
"Running dimensional PlasCom2..." << std::endl;
1956 std::cout <<
"Done running dimensional PlasCom2." << std::endl;
1958 if(returnValue > 0){
1959 std::cout <<
"TestIntegrated_ViscousShock2DX: PlasCom2 returned error code (" 1960 << returnValue <<
"). Test failed." << std::endl;
1961 viscousShockTestResult =
false;
1967 std::cout <<
"TestIntegrated_ViscousShock2DX: PlasCom2 failed to produce expected" 1968 <<
"output file (PlasCom2_000040000.h5). Test failed." << std::endl;
1969 viscousShockTestResult =
false;
1972 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
1973 if(!viscousShockTestResult)
1982 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
1985 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
1987 if(returnValue > 0){
1988 std::cout <<
"TestIntegrated_ViscousShock2DX: PlasCom2 returned error code (" 1989 << returnValue <<
"). Test failed." << std::endl;
1990 viscousShockTestResult =
false;
1996 std::cout <<
"TestIntegrated_ViscousShock2DX: PlasCom2 failed to produce expected" << std::endl
1997 <<
"output file (PlasCom2_000002000.h5). Test failed." << std::endl;
1998 viscousShockTestResult =
false;
2001 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2002 if(!viscousShockTestResult)
2011 std::cout <<
"Running nonDimensional PlasCom2... (PC1ND)" << std::endl;
2014 std::cout <<
"Done running nonDimensional PlasCom2 (PC1ND)." << std::endl;
2016 if(returnValue > 0){
2017 std::cout <<
"TestIntegrated_ViscousShock2DX: PlasCom2 returned error code (" 2018 << returnValue <<
"). Test failed." << std::endl;
2019 viscousShockTestResult =
false;
2025 std::cout <<
"TestIntegrated_ViscousShock2DX: PlasCom2 failed to produce expected" << std::endl
2026 <<
"output file (PlasCom2_000002000.h5). Test failed." << std::endl;
2027 viscousShockTestResult =
false;
2030 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2031 if(!viscousShockTestResult)
2038 DomainVector &simulationDomain(simulationApplicationDimen.GetDomains());
2044 state_t exactState(simulationDomain[0].State(0));
2046 viscousShockTestResult =
false;
2047 std::cout <<
"Fail to calculated exact viscid shock solution" << std::endl;
2049 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2050 if(!viscousShockTestResult)
2057 double *rhoPtr = rhoData.
Data<
double>();
2061 double *rhoVPtr = rhoVData.
Data<
double>();
2065 double *rhoEPtr = rhoEData.
Data<
double>();
2067 int velocityHandle = exactState.
GetDataIndex(
"velocity");
2069 double *velocityPtr = velocityData.
Data<
double>();
2071 int pressureHandle = exactState.
GetDataIndex(
"pressure");
2073 double *pressurePtr = pressureData.
Data<
double>();
2075 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
2077 double *temperaturePtr = temperatureData.
Data<
double>();
2082 std::cout <<
"Writing exact solution for dimensional PlasCom2" << std::endl;
2084 std::ostringstream Ostr;
2085 Ostr <<
"exact_ViscousShock_dimen_40000";
2086 const std::string domainName(Ostr.str());
2087 const std::string hdfFileName(domainName+
".h5");
2088 const std::string xdmfFileName(domainName+
".xdmf");
2089 const std::string geometryName(
"shockTube");
2090 const std::string gridName(
"grid1");
2098 gridName,exactGrid,exactState,paramState,
2099 testConfig,compareStream)){
2100 std::cout << compareStream.str();
2101 std::cout <<
"Output to HDF5 failed:\n";
2102 std::cout <<
"Continuing....\n";
2110 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 2115 double refRho = 1.225;
2116 double refPress = 101325;
2117 double refVel = sqrt(refPress/refRho);
2118 double refTemp = 288.15;
2121 rhoPtr[iPoint] /= refRho;
2122 rhoVPtr[iPoint] /= refRho*refVel;
2123 rhoEPtr[iPoint] /= refVel*refVel*refRho;
2125 velocityPtr[iPoint] /= refVel;
2126 pressurePtr[iPoint] /= refRho*refVel*refVel;
2127 temperaturePtr[iPoint] /= refTemp;
2130 std::ostringstream Ostr;
2131 Ostr <<
"exact_ViscousShock_ND_40000";
2132 const std::string domainName(Ostr.str());
2133 const std::string hdfFileName(domainName+
".h5");
2134 const std::string xdmfFileName(domainName+
".xdmf");
2135 const std::string geometryName(
"shockTube");
2136 const std::string gridName(
"grid1");
2144 gridName,exactGrid,exactState,paramState,
2145 testConfig,compareStream)){
2146 std::cout << compareStream.str();
2147 std::cout <<
"Output to HDF5 failed:\n";
2148 std::cout <<
"Continuing....\n";
2156 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 2157 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
2167 double refRho = 1.0;
2168 double refPress = 101325;
2169 double refSndSpd = sqrt(gamma);
2170 double refTemp = gamma-1;
2172 rhoPtr[iPoint] /= refRho;
2173 rhoVPtr[iPoint] /= refRho*refSndSpd;
2174 rhoEPtr[iPoint] /= refSndSpd*refSndSpd*refRho;
2176 velocityPtr[iPoint] /= refSndSpd;
2177 pressurePtr[iPoint] /= refRho*refSndSpd*refSndSpd;
2178 temperaturePtr[iPoint] /= refTemp;
2181 std::ostringstream Ostr;
2182 Ostr <<
"exact_ViscousShock_PC1ND_40000";
2183 const std::string domainName(Ostr.str());
2184 const std::string hdfFileName(domainName+
".h5");
2185 const std::string xdmfFileName(domainName+
".xdmf");
2186 const std::string geometryName(
"shockTube");
2187 const std::string gridName(
"grid1");
2195 gridName,exactGrid,exactState,paramState,
2196 testConfig,compareStream)){
2197 std::cout << compareStream.str();
2198 std::cout <<
"Output to HDF5 failed:\n";
2199 std::cout <<
"Continuing....\n";
2209 std::cout <<
"TestIntegrated_ViscousShock2DX: failed to produce expected" << std::endl
2210 <<
"output file (exact_ViscousShock_dimen_40000.h5). Test failed." << std::endl;
2211 viscousShockTestResult =
false;
2215 std::cout <<
"TestIntegrated_ViscousShock2DX: failed to produce expected" << std::endl
2216 <<
"output file (exact_ViscousShock_ND_40000.h5). Test failed." << std::endl;
2217 viscousShockTestResult =
false;
2221 std::cout <<
"TestIntegrated_ViscousShock2DX: failed to produce expected" << std::endl
2222 <<
"output file (exact_ViscousShock_PC1ND_40000.h5). Test failed." << std::endl;
2223 viscousShockTestResult =
false;
2226 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2227 if(!viscousShockTestResult)
2232 std::cout <<
"Comparing exact solution against dimensional PlasCom2" << std::endl;
2235 "exact_ViscousShock_dimen_40000.h5",
2236 errorToleranceExact,compareStream);
2238 if(returnValue > 0){
2239 std::cout <<
"TestIntegrated_ViscousShock2DX: Resulting state comparison yielded negative result:" 2241 << compareStream.str()
2243 viscousShockTestResult =
false;
2245 std::cout <<
"Passed!" << std::endl;
2251 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2256 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
2259 "exact_ViscousShock_ND_40000.h5",
2260 errorToleranceExact,compareStream);
2261 if(returnValue > 0){
2262 std::cout <<
"TestIntegrated_ViscousShock2DX: Resulting state comparison yielded negative result:" 2264 << compareStream.str()
2266 viscousShockTestResult =
false;
2268 std::cout <<
"Passed!" << std::endl;
2273 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2278 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" 2279 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
2282 "exact_ViscousShock_PC1ND_40000.h5",
2283 errorToleranceExact,compareStream);
2284 if(returnValue > 0){
2285 std::cout <<
"TestIntegrated_ViscousShock2DX: Resulting state comparison yielded negative result:" 2287 << compareStream.str()
2289 viscousShockTestResult =
false;
2291 std::cout <<
"Passed!" << std::endl;
2295 std::cout <<
"Comparing PlasComCM results against nonDimensional PlasCom2" 2296 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
2299 "PlasComCM/RocFlo-CM.00040000.h5",
2300 errorTolerancePC1_2,compareStream);
2301 if(returnValue > 0){
2302 std::cout <<
"TestIntegrated_ViscousShock2DX: Resulting state comparison yielded negative result:" 2304 << compareStream.str()
2306 viscousShockTestResult =
false;
2308 std::cout <<
"Passed!" << std::endl;
2313 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2320 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:ViscousShock2DX",viscousShockTestResult);
2330 bool viscousShockTestResult =
true;
2331 int myRank = testComm.
Rank();
2332 int numProc = testComm.
NProc();
2334 const std::string testFunctionName(
"TestIntegrated_VSRectilinear2DX");
2335 const std::string testSuiteName(
"ViscidTest");
2336 const std::string testCaseName(
"ViscousShock2DX");
2337 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
2339 std::ostringstream compareStream;
2340 double errorTolerancePC1_2 = 1.e-4;
2341 double errorToleranceExact = 5.e-2;
2343 std::cout <<
"Running " << testFunctionName << std::endl;
2346 const char *argv[] = {
"plascom2x",
"-c",
"rectilinear.config",NULL};
2356 int returnValue = 0;
2360 viscousShockTestResult =
false;
2361 std::cout <<
": testing directory (" 2362 << testDirectory <<
") did not exist. Aborting test." 2366 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2367 if(!viscousShockTestResult)
2377 std::cout <<
"Running dimensional PlasCom2..." << std::endl;
2380 std::cout <<
"Done running dimensional PlasCom2." << std::endl;
2382 if(returnValue > 0){
2383 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 2384 << returnValue <<
"). Test failed." << std::endl;
2385 viscousShockTestResult =
false;
2391 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" 2392 <<
"output file (PlasCom2_000040000.h5). Test failed." << std::endl;
2393 viscousShockTestResult =
false;
2396 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2397 if(!viscousShockTestResult)
2406 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
2409 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
2411 if(returnValue > 0){
2412 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 2413 << returnValue <<
"). Test failed." << std::endl;
2414 viscousShockTestResult =
false;
2420 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
2421 <<
"output file (PlasCom2_000002000.h5). Test failed." << std::endl;
2422 viscousShockTestResult =
false;
2425 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2426 if(!viscousShockTestResult)
2435 std::cout <<
"Running nonDimensional PlasCom2... (PC1ND)" << std::endl;
2438 std::cout <<
"Done running nonDimensional PlasCom2 (PC1ND)." << std::endl;
2440 if(returnValue > 0){
2441 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 2442 << returnValue <<
"). Test failed." << std::endl;
2443 viscousShockTestResult =
false;
2449 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
2450 <<
"output file (PlasCom2_000002000.h5). Test failed." << std::endl;
2451 viscousShockTestResult =
false;
2454 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2455 if(!viscousShockTestResult)
2462 DomainVector &simulationDomain(simulationApplicationDimen.GetDomains());
2468 state_t exactState(simulationDomain[0].State(0));
2470 viscousShockTestResult =
false;
2471 std::cout <<
"Fail to calculated exact viscid shock solution" << std::endl;
2473 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2474 if(!viscousShockTestResult)
2481 double *rhoPtr = rhoData.
Data<
double>();
2485 double *rhoVPtr = rhoVData.
Data<
double>();
2489 double *rhoEPtr = rhoEData.
Data<
double>();
2491 int velocityHandle = exactState.
GetDataIndex(
"velocity");
2493 double *velocityPtr = velocityData.
Data<
double>();
2495 int pressureHandle = exactState.
GetDataIndex(
"pressure");
2497 double *pressurePtr = pressureData.
Data<
double>();
2499 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
2501 double *temperaturePtr = temperatureData.
Data<
double>();
2506 std::cout <<
"Writing exact solution for dimensional PlasCom2" << std::endl;
2508 std::ostringstream Ostr;
2509 Ostr <<
"exact_ViscousShock_dimen_40000";
2510 const std::string domainName(Ostr.str());
2511 const std::string hdfFileName(domainName+
".h5");
2512 const std::string xdmfFileName(domainName+
".xdmf");
2513 const std::string geometryName(
"shockTube");
2514 const std::string gridName(
"grid1");
2522 gridName,exactGrid,exactState,paramState,
2523 testConfig,compareStream)){
2524 std::cout << compareStream.str();
2525 std::cout <<
"Output to HDF5 failed:\n";
2526 std::cout <<
"Continuing....\n";
2534 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 2539 double refRho = 1.225;
2540 double refPress = 101325;
2541 double refVel = sqrt(refPress/refRho);
2542 double refTemp = 288.15;
2545 rhoPtr[iPoint] /= refRho;
2546 rhoVPtr[iPoint] /= refRho*refVel;
2547 rhoEPtr[iPoint] /= refVel*refVel*refRho;
2549 velocityPtr[iPoint] /= refVel;
2550 pressurePtr[iPoint] /= refRho*refVel*refVel;
2551 temperaturePtr[iPoint] /= refTemp;
2554 std::ostringstream Ostr;
2555 Ostr <<
"exact_ViscousShock_ND_40000";
2556 const std::string domainName(Ostr.str());
2557 const std::string hdfFileName(domainName+
".h5");
2558 const std::string xdmfFileName(domainName+
".xdmf");
2559 const std::string geometryName(
"shockTube");
2560 const std::string gridName(
"grid1");
2568 gridName,exactGrid,exactState,paramState,
2569 testConfig,compareStream)){
2570 std::cout << compareStream.str();
2571 std::cout <<
"Output to HDF5 failed:\n";
2572 std::cout <<
"Continuing....\n";
2580 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 2581 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
2591 double refRho = 1.0;
2592 double refPress = 101325;
2593 double refSndSpd = sqrt(gamma);
2594 double refTemp = gamma-1;
2596 rhoPtr[iPoint] /= refRho;
2597 rhoVPtr[iPoint] /= refRho*refSndSpd;
2598 rhoEPtr[iPoint] /= refSndSpd*refSndSpd*refRho;
2600 velocityPtr[iPoint] /= refSndSpd;
2601 pressurePtr[iPoint] /= refRho*refSndSpd*refSndSpd;
2602 temperaturePtr[iPoint] /= refTemp;
2605 std::ostringstream Ostr;
2606 Ostr <<
"exact_ViscousShock_PC1ND_40000";
2607 const std::string domainName(Ostr.str());
2608 const std::string hdfFileName(domainName+
".h5");
2609 const std::string xdmfFileName(domainName+
".xdmf");
2610 const std::string geometryName(
"shockTube");
2611 const std::string gridName(
"grid1");
2619 gridName,exactGrid,exactState,paramState,
2620 testConfig,compareStream)){
2621 std::cout << compareStream.str();
2622 std::cout <<
"Output to HDF5 failed:\n";
2623 std::cout <<
"Continuing....\n";
2633 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
2634 <<
"output file (exact_ViscousShock_dimen_40000.h5). Test failed." << std::endl;
2635 viscousShockTestResult =
false;
2639 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
2640 <<
"output file (exact_ViscousShock_ND_40000.h5). Test failed." << std::endl;
2641 viscousShockTestResult =
false;
2645 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
2646 <<
"output file (exact_ViscousShock_PC1ND_40000.h5). Test failed." << std::endl;
2647 viscousShockTestResult =
false;
2650 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2651 if(!viscousShockTestResult)
2656 std::cout <<
"Comparing exact solution against dimensional PlasCom2" << std::endl;
2659 "exact_ViscousShock_dimen_40000.h5",
2660 errorToleranceExact,compareStream);
2662 if(returnValue > 0){
2663 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 2665 << compareStream.str()
2667 viscousShockTestResult =
false;
2669 std::cout <<
"Passed!" << std::endl;
2675 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2680 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
2683 "exact_ViscousShock_ND_40000.h5",
2684 errorToleranceExact,compareStream);
2685 if(returnValue > 0){
2686 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 2688 << compareStream.str()
2690 viscousShockTestResult =
false;
2692 std::cout <<
"Passed!" << std::endl;
2697 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2702 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" 2703 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
2706 "exact_ViscousShock_PC1ND_40000.h5",
2707 errorToleranceExact,compareStream);
2708 if(returnValue > 0){
2709 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 2711 << compareStream.str()
2713 viscousShockTestResult =
false;
2715 std::cout <<
"Passed!" << std::endl;
2719 std::cout <<
"Comparing PlasComCM results against nonDimensional PlasCom2" 2720 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
2723 "PlasComCM/RocFlo-CM.00040000.h5",
2724 errorTolerancePC1_2,compareStream);
2725 if(returnValue > 0){
2726 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 2728 << compareStream.str()
2730 viscousShockTestResult =
false;
2732 std::cout <<
"Passed!" << std::endl;
2737 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2744 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:VSRectilinear2DX",viscousShockTestResult);
2754 bool viscousShockTestResult =
true;
2755 int myRank = testComm.
Rank();
2756 int numProc = testComm.
NProc();
2758 const std::string testFunctionName(
"TestIntegrated_VSCurvilinear2DX");
2759 const std::string testSuiteName(
"ViscidTest");
2760 const std::string testCaseName(
"ViscousShock2DX");
2761 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
2763 std::ostringstream compareStream;
2764 double errorTolerancePC1_2 = 1.e-4;
2765 double errorToleranceExact = 5.e-2;
2767 std::cout <<
"Running " << testFunctionName << std::endl;
2770 const char *argv[] = {
"plascom2x",
"-c",
"curvilinear.config",NULL};
2780 int returnValue = 0;
2784 viscousShockTestResult =
false;
2785 std::cout <<
": testing directory (" 2786 << testDirectory <<
") did not exist. Aborting test." 2790 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2791 if(!viscousShockTestResult)
2801 std::cout <<
"Running dimensional PlasCom2..." << std::endl;
2804 std::cout <<
"Done running dimensional PlasCom2." << std::endl;
2806 if(returnValue > 0){
2807 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 2808 << returnValue <<
"). Test failed." << std::endl;
2809 viscousShockTestResult =
false;
2815 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" 2816 <<
"output file (PlasCom2_000040000.h5). Test failed." << std::endl;
2817 viscousShockTestResult =
false;
2820 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2821 if(!viscousShockTestResult)
2830 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
2833 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
2835 if(returnValue > 0){
2836 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 2837 << returnValue <<
"). Test failed." << std::endl;
2838 viscousShockTestResult =
false;
2844 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
2845 <<
"output file (PlasCom2_000002000.h5). Test failed." << std::endl;
2846 viscousShockTestResult =
false;
2849 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2850 if(!viscousShockTestResult)
2859 std::cout <<
"Running nonDimensional PlasCom2... (PC1ND)" << std::endl;
2862 std::cout <<
"Done running nonDimensional PlasCom2 (PC1ND)." << std::endl;
2864 if(returnValue > 0){
2865 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 2866 << returnValue <<
"). Test failed." << std::endl;
2867 viscousShockTestResult =
false;
2873 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
2874 <<
"output file (PlasCom2_000002000.h5). Test failed." << std::endl;
2875 viscousShockTestResult =
false;
2878 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2879 if(!viscousShockTestResult)
2886 DomainVector &simulationDomain(simulationApplicationDimen.GetDomains());
2892 state_t exactState(simulationDomain[0].State(0));
2894 viscousShockTestResult =
false;
2895 std::cout <<
"Fail to calculated exact viscid shock solution" << std::endl;
2897 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
2898 if(!viscousShockTestResult)
2905 double *rhoPtr = rhoData.
Data<
double>();
2909 double *rhoVPtr = rhoVData.
Data<
double>();
2913 double *rhoEPtr = rhoEData.
Data<
double>();
2915 int velocityHandle = exactState.
GetDataIndex(
"velocity");
2917 double *velocityPtr = velocityData.
Data<
double>();
2919 int pressureHandle = exactState.
GetDataIndex(
"pressure");
2921 double *pressurePtr = pressureData.
Data<
double>();
2923 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
2925 double *temperaturePtr = temperatureData.
Data<
double>();
2930 std::cout <<
"Writing exact solution for dimensional PlasCom2" << std::endl;
2932 std::ostringstream Ostr;
2933 Ostr <<
"exact_ViscousShock_dimen_40000";
2934 const std::string domainName(Ostr.str());
2935 const std::string hdfFileName(domainName+
".h5");
2936 const std::string xdmfFileName(domainName+
".xdmf");
2937 const std::string geometryName(
"shockTube");
2938 const std::string gridName(
"grid1");
2946 gridName,exactGrid,exactState,paramState,
2947 testConfig,compareStream)){
2948 std::cout << compareStream.str();
2949 std::cout <<
"Output to HDF5 failed:\n";
2950 std::cout <<
"Continuing....\n";
2958 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 2963 double refRho = 1.225;
2964 double refPress = 101325;
2965 double refVel = sqrt(refPress/refRho);
2966 double refTemp = 288.15;
2969 rhoPtr[iPoint] /= refRho;
2970 rhoVPtr[iPoint] /= refRho*refVel;
2971 rhoEPtr[iPoint] /= refVel*refVel*refRho;
2973 velocityPtr[iPoint] /= refVel;
2974 pressurePtr[iPoint] /= refRho*refVel*refVel;
2975 temperaturePtr[iPoint] /= refTemp;
2978 std::ostringstream Ostr;
2979 Ostr <<
"exact_ViscousShock_ND_40000";
2980 const std::string domainName(Ostr.str());
2981 const std::string hdfFileName(domainName+
".h5");
2982 const std::string xdmfFileName(domainName+
".xdmf");
2983 const std::string geometryName(
"shockTube");
2984 const std::string gridName(
"grid1");
2992 gridName,exactGrid,exactState,paramState,
2993 testConfig,compareStream)){
2994 std::cout << compareStream.str();
2995 std::cout <<
"Output to HDF5 failed:\n";
2996 std::cout <<
"Continuing....\n";
3004 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 3005 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
3015 double refRho = 1.0;
3016 double refPress = 101325;
3017 double refSndSpd = sqrt(gamma);
3018 double refTemp = gamma-1;
3020 rhoPtr[iPoint] /= refRho;
3021 rhoVPtr[iPoint] /= refRho*refSndSpd;
3022 rhoEPtr[iPoint] /= refSndSpd*refSndSpd*refRho;
3024 velocityPtr[iPoint] /= refSndSpd;
3025 pressurePtr[iPoint] /= refRho*refSndSpd*refSndSpd;
3026 temperaturePtr[iPoint] /= refTemp;
3029 std::ostringstream Ostr;
3030 Ostr <<
"exact_ViscousShock_PC1ND_40000";
3031 const std::string domainName(Ostr.str());
3032 const std::string hdfFileName(domainName+
".h5");
3033 const std::string xdmfFileName(domainName+
".xdmf");
3034 const std::string geometryName(
"shockTube");
3035 const std::string gridName(
"grid1");
3043 gridName,exactGrid,exactState,paramState,
3044 testConfig,compareStream)){
3045 std::cout << compareStream.str();
3046 std::cout <<
"Output to HDF5 failed:\n";
3047 std::cout <<
"Continuing....\n";
3057 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
3058 <<
"output file (exact_ViscousShock_dimen_40000.h5). Test failed." << std::endl;
3059 viscousShockTestResult =
false;
3063 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
3064 <<
"output file (exact_ViscousShock_ND_40000.h5). Test failed." << std::endl;
3065 viscousShockTestResult =
false;
3069 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
3070 <<
"output file (exact_ViscousShock_PC1ND_40000.h5). Test failed." << std::endl;
3071 viscousShockTestResult =
false;
3074 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3075 if(!viscousShockTestResult)
3080 std::cout <<
"Comparing exact solution against dimensional PlasCom2" << std::endl;
3083 "exact_ViscousShock_dimen_40000.h5",
3084 errorToleranceExact,compareStream);
3086 if(returnValue > 0){
3087 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 3089 << compareStream.str()
3091 viscousShockTestResult =
false;
3093 std::cout <<
"Passed!" << std::endl;
3099 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3104 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
3107 "exact_ViscousShock_ND_40000.h5",
3108 errorToleranceExact,compareStream);
3109 if(returnValue > 0){
3110 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 3112 << compareStream.str()
3114 viscousShockTestResult =
false;
3116 std::cout <<
"Passed!" << std::endl;
3121 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3126 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" 3127 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
3130 "exact_ViscousShock_PC1ND_40000.h5",
3131 errorToleranceExact,compareStream);
3132 if(returnValue > 0){
3133 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 3135 << compareStream.str()
3137 viscousShockTestResult =
false;
3139 std::cout <<
"Passed!" << std::endl;
3143 std::cout <<
"Comparing PlasComCM results against nonDimensional PlasCom2" 3144 <<
" with legacy PlasComCM nonDimensionalization" << std::endl;
3147 "PlasComCM/RocFlo-CM.00040000.h5",
3148 errorTolerancePC1_2,compareStream);
3149 if(returnValue > 0){
3150 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 3152 << compareStream.str()
3154 viscousShockTestResult =
false;
3156 std::cout <<
"Passed!" << std::endl;
3161 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3168 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:VSCurvilinear2DX",viscousShockTestResult);
3178 bool viscousShockTestResult =
true;
3179 int myRank = testComm.
Rank();
3180 int numProc = testComm.
NProc();
3183 const std::string testFunctionName(
"TestIntegrated_ViscousShock2DY");
3184 const std::string testSuiteName(
"ViscidTest");
3185 const std::string testCaseName(
"ViscousShock2DY");
3186 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
3188 std::ostringstream compareStream;
3190 double errorToleranceExact = 5.e-2;
3192 std::cout <<
"Running " << testFunctionName << std::endl;
3195 const char *argv[] = {
"plascom2x",
"-c",
"shock.test.config",NULL};
3200 int returnValue = 0;
3204 viscousShockTestResult =
false;
3205 std::cout <<
"TestIntegrated_viscousShock2D: testing directory (" 3206 << testDirectory <<
") did not exist. Aborting test." 3210 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3211 if(!viscousShockTestResult)
3220 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
3223 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
3225 if(returnValue > 0){
3226 std::cout <<
"TestIntegrated_ViscousShock2DY: PlasCom2 returned error code (" 3227 << returnValue <<
"). Test failed." << std::endl;
3228 viscousShockTestResult =
false;
3234 std::cout <<
"TestIntegrated_ViscousShock2DY: PlasCom2 failed to produce expected" << std::endl
3235 <<
"output file (PlasCom2_000040000.h5). Test failed." << std::endl;
3236 viscousShockTestResult =
false;
3239 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3240 if(!viscousShockTestResult)
3247 DomainVector &simulationDomain(simulationApplicationNonDimen.GetDomains());
3253 state_t exactState(simulationDomain[0].State(0));
3255 viscousShockTestResult =
false;
3256 std::cout <<
"Fail to calculated exact viscid shock solution" << std::endl;
3258 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3259 if(!viscousShockTestResult)
3266 double *rhoPtr = rhoData.
Data<
double>();
3270 double *rhoVPtr = rhoVData.
Data<
double>();
3274 double *rhoEPtr = rhoEData.
Data<
double>();
3276 int velocityHandle = exactState.
GetDataIndex(
"velocity");
3278 double *velocityPtr = velocityData.
Data<
double>();
3280 int pressureHandle = exactState.
GetDataIndex(
"pressure");
3282 double *pressurePtr = pressureData.
Data<
double>();
3284 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
3286 double *temperaturePtr = temperatureData.
Data<
double>();
3290 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 3295 double refRho = 1.225;
3296 double refPress = 101325;
3297 double refVel = sqrt(refPress/refRho);
3298 double refTemp = 288.15;
3301 rhoPtr[iPoint] /= refRho;
3303 rhoEPtr[iPoint] /= refVel*refVel*refRho;
3306 pressurePtr[iPoint] /= refRho*refVel*refVel;
3307 temperaturePtr[iPoint] /= refTemp;
3310 std::ostringstream Ostr;
3311 Ostr <<
"exact_ViscousShock_ND_40000";
3312 const std::string domainName(Ostr.str());
3313 const std::string hdfFileName(domainName+
".h5");
3314 const std::string xdmfFileName(domainName+
".xdmf");
3315 const std::string geometryName(
"shockTube");
3316 const std::string gridName(
"grid1");
3324 gridName,exactGrid,exactState,paramState,
3325 testConfig,compareStream)){
3326 std::cout << compareStream.str();
3327 std::cout <<
"Output to HDF5 failed:\n";
3328 std::cout <<
"Continuing....\n";
3337 std::cout <<
"TestIntegrated_ViscousShock2DY: failed to produce expected" << std::endl
3338 <<
"output file (exact_ViscousShock_ND_40000.h5). Test failed." << std::endl;
3339 viscousShockTestResult =
false;
3342 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3343 if(!viscousShockTestResult)
3348 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
3350 "exact_ViscousShock_ND_40000.h5",
3351 errorToleranceExact,compareStream);
3352 if(returnValue > 0){
3353 std::cout <<
"TestIntegrated_ViscousShock2DY: Resulting state comparison yielded negative result:" 3355 << compareStream.str()
3357 viscousShockTestResult =
false;
3359 std::cout <<
"Passed!" << std::endl;
3363 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3369 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:ViscousShock2DY",viscousShockTestResult);
3379 bool viscousShockTestResult =
true;
3380 int myRank = testComm.
Rank();
3381 int numProc = testComm.
NProc();
3384 const std::string testFunctionName(
"TestIntegrated_VSRectilinear2DY");
3385 const std::string testSuiteName(
"ViscidTest");
3386 const std::string testCaseName(
"ViscousShock2DY");
3387 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
3389 std::ostringstream compareStream;
3391 double errorToleranceExact = 5.e-2;
3393 std::cout <<
"Running " << testFunctionName << std::endl;
3396 const char *argv[] = {
"plascom2x",
"-c",
"rectilinear.config",NULL};
3401 int returnValue = 0;
3405 viscousShockTestResult =
false;
3406 std::cout << testFunctionName <<
": testing directory (" 3407 << testDirectory <<
") did not exist. Aborting test." 3411 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3412 if(!viscousShockTestResult)
3421 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
3424 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
3426 if(returnValue > 0){
3427 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 3428 << returnValue <<
"). Test failed." << std::endl;
3429 viscousShockTestResult =
false;
3435 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
3436 <<
"output file (PlasCom2_000040000.h5). Test failed." << std::endl;
3437 viscousShockTestResult =
false;
3440 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3441 if(!viscousShockTestResult)
3448 DomainVector &simulationDomain(simulationApplicationNonDimen.GetDomains());
3454 state_t exactState(simulationDomain[0].State(0));
3456 viscousShockTestResult =
false;
3457 std::cout <<
"Fail to calculated exact viscid shock solution" << std::endl;
3459 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3460 if(!viscousShockTestResult)
3467 double *rhoPtr = rhoData.
Data<
double>();
3471 double *rhoVPtr = rhoVData.
Data<
double>();
3475 double *rhoEPtr = rhoEData.
Data<
double>();
3477 int velocityHandle = exactState.
GetDataIndex(
"velocity");
3479 double *velocityPtr = velocityData.
Data<
double>();
3481 int pressureHandle = exactState.
GetDataIndex(
"pressure");
3483 double *pressurePtr = pressureData.
Data<
double>();
3485 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
3487 double *temperaturePtr = temperatureData.
Data<
double>();
3491 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 3496 double refRho = 1.225;
3497 double refPress = 101325;
3498 double refVel = sqrt(refPress/refRho);
3499 double refTemp = 288.15;
3502 rhoPtr[iPoint] /= refRho;
3504 rhoEPtr[iPoint] /= refVel*refVel*refRho;
3507 pressurePtr[iPoint] /= refRho*refVel*refVel;
3508 temperaturePtr[iPoint] /= refTemp;
3511 std::ostringstream Ostr;
3512 Ostr <<
"exact_ViscousShock_ND_40000";
3513 const std::string domainName(Ostr.str());
3514 const std::string hdfFileName(domainName+
".h5");
3515 const std::string xdmfFileName(domainName+
".xdmf");
3516 const std::string geometryName(
"shockTube");
3517 const std::string gridName(
"grid1");
3525 gridName,exactGrid,exactState,paramState,
3526 testConfig,compareStream)){
3527 std::cout << compareStream.str();
3528 std::cout <<
"Output to HDF5 failed:\n";
3529 std::cout <<
"Continuing....\n";
3538 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
3539 <<
"output file (exact_ViscousShock_ND_40000.h5). Test failed." << std::endl;
3540 viscousShockTestResult =
false;
3543 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3544 if(!viscousShockTestResult)
3549 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
3551 "exact_ViscousShock_ND_40000.h5",
3552 errorToleranceExact,compareStream);
3553 if(returnValue > 0){
3554 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 3556 << compareStream.str()
3558 viscousShockTestResult =
false;
3560 std::cout <<
"Passed!" << std::endl;
3564 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3570 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:VSRectilinear2DY",viscousShockTestResult);
3580 bool viscousShockTestResult =
true;
3581 int myRank = testComm.
Rank();
3582 int numProc = testComm.
NProc();
3585 const std::string testFunctionName(
"TestIntegrated_VSCurvilinear2DY");
3586 const std::string testSuiteName(
"ViscidTest");
3587 const std::string testCaseName(
"ViscousShock2DY");
3588 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
3590 std::ostringstream compareStream;
3592 double errorToleranceExact = 5.e-2;
3594 std::cout <<
"Running " << testFunctionName << std::endl;
3597 const char *argv[] = {
"plascom2x",
"-c",
"curvilinear.config",NULL};
3602 int returnValue = 0;
3606 viscousShockTestResult =
false;
3607 std::cout << testFunctionName <<
": testing directory (" 3608 << testDirectory <<
") did not exist. Aborting test." 3612 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3613 if(!viscousShockTestResult)
3622 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
3625 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
3627 if(returnValue > 0){
3628 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 3629 << returnValue <<
"). Test failed." << std::endl;
3630 viscousShockTestResult =
false;
3636 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
3637 <<
"output file (PlasCom2_000040000.h5). Test failed." << std::endl;
3638 viscousShockTestResult =
false;
3641 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3642 if(!viscousShockTestResult)
3649 DomainVector &simulationDomain(simulationApplicationNonDimen.GetDomains());
3655 state_t exactState(simulationDomain[0].State(0));
3657 viscousShockTestResult =
false;
3658 std::cout <<
"Fail to calculated exact viscid shock solution" << std::endl;
3660 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3661 if(!viscousShockTestResult)
3668 double *rhoPtr = rhoData.
Data<
double>();
3672 double *rhoVPtr = rhoVData.
Data<
double>();
3676 double *rhoEPtr = rhoEData.
Data<
double>();
3678 int velocityHandle = exactState.
GetDataIndex(
"velocity");
3680 double *velocityPtr = velocityData.
Data<
double>();
3682 int pressureHandle = exactState.
GetDataIndex(
"pressure");
3684 double *pressurePtr = pressureData.
Data<
double>();
3686 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
3688 double *temperaturePtr = temperatureData.
Data<
double>();
3692 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 3697 double refRho = 1.225;
3698 double refPress = 101325;
3699 double refVel = sqrt(refPress/refRho);
3700 double refTemp = 288.15;
3703 rhoPtr[iPoint] /= refRho;
3705 rhoEPtr[iPoint] /= refVel*refVel*refRho;
3708 pressurePtr[iPoint] /= refRho*refVel*refVel;
3709 temperaturePtr[iPoint] /= refTemp;
3712 std::ostringstream Ostr;
3713 Ostr <<
"exact_ViscousShock_ND_40000";
3714 const std::string domainName(Ostr.str());
3715 const std::string hdfFileName(domainName+
".h5");
3716 const std::string xdmfFileName(domainName+
".xdmf");
3717 const std::string geometryName(
"shockTube");
3718 const std::string gridName(
"grid1");
3726 gridName,exactGrid,exactState,paramState,
3727 testConfig,compareStream)){
3728 std::cout << compareStream.str();
3729 std::cout <<
"Output to HDF5 failed:\n";
3730 std::cout <<
"Continuing....\n";
3739 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
3740 <<
"output file (exact_ViscousShock_ND_40000.h5). Test failed." << std::endl;
3741 viscousShockTestResult =
false;
3744 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3745 if(!viscousShockTestResult)
3750 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
3752 "exact_ViscousShock_ND_40000.h5",
3753 errorToleranceExact,compareStream);
3754 if(returnValue > 0){
3755 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 3757 << compareStream.str()
3759 viscousShockTestResult =
false;
3761 std::cout <<
"Passed!" << std::endl;
3765 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3771 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:VSCurvilinear2DY",viscousShockTestResult);
3781 bool viscousShockTestResult =
true;
3782 int myRank = testComm.
Rank();
3783 int numProc = testComm.
NProc();
3786 const std::string testFunctionName(
"TestIntegrated_ViscousShock3DZ");
3787 const std::string testSuiteName(
"ViscidTest");
3788 const std::string testCaseName(
"ViscousShock3DZ");
3789 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
3791 std::ostringstream compareStream;
3793 double errorToleranceExact = 5.e-2;
3795 std::cout <<
"Running " << testFunctionName << std::endl;
3798 const char *argv[] = {
"plascom2x",
"-c",
"shock.test.config",NULL};
3803 int returnValue = 0;
3807 viscousShockTestResult =
false;
3808 std::cout <<
"TestIntegrated_viscousShock3DZ: testing directory (" 3809 << testDirectory <<
") did not exist. Aborting test." 3813 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3814 if(!viscousShockTestResult)
3823 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
3826 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
3828 if(returnValue > 0){
3829 std::cout <<
"TestIntegrated_ViscousShock3DZ: PlasCom2 returned error code (" 3830 << returnValue <<
"). Test failed." << std::endl;
3831 viscousShockTestResult =
false;
3837 std::cout <<
"TestIntegrated_ViscousShock3DZ: PlasCom2 failed to produce expected" << std::endl
3838 <<
"output file (PlasCom2_000040000.h5). Test failed." << std::endl;
3839 viscousShockTestResult =
false;
3842 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3843 if(!viscousShockTestResult)
3850 DomainVector &simulationDomain(simulationApplicationNonDimen.GetDomains());
3856 state_t exactState(simulationDomain[0].State(0));
3858 viscousShockTestResult =
false;
3859 std::cout <<
"Fail to calculated exact viscid shock solution" << std::endl;
3861 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3862 if(!viscousShockTestResult)
3869 double *rhoPtr = rhoData.
Data<
double>();
3873 double *rhoVPtr = rhoVData.
Data<
double>();
3877 double *rhoEPtr = rhoEData.
Data<
double>();
3879 int velocityHandle = exactState.
GetDataIndex(
"velocity");
3881 double *velocityPtr = velocityData.
Data<
double>();
3883 int pressureHandle = exactState.
GetDataIndex(
"pressure");
3885 double *pressurePtr = pressureData.
Data<
double>();
3887 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
3889 double *temperaturePtr = temperatureData.
Data<
double>();
3893 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 3898 double refRho = 1.225;
3899 double refPress = 101325;
3900 double refVel = sqrt(refPress/refRho);
3901 double refTemp = 288.15;
3904 rhoPtr[iPoint] /= refRho;
3906 rhoEPtr[iPoint] /= refVel*refVel*refRho;
3909 pressurePtr[iPoint] /= refRho*refVel*refVel;
3910 temperaturePtr[iPoint] /= refTemp;
3913 std::ostringstream Ostr;
3914 Ostr <<
"exact_ViscousShock_ND_40000";
3915 const std::string domainName(Ostr.str());
3916 const std::string hdfFileName(domainName+
".h5");
3917 const std::string xdmfFileName(domainName+
".xdmf");
3918 const std::string geometryName(
"shockTube");
3919 const std::string gridName(
"grid1");
3927 gridName,exactGrid,exactState,paramState,
3928 testConfig,compareStream)){
3929 std::cout << compareStream.str();
3930 std::cout <<
"Output to HDF5 failed:\n";
3931 std::cout <<
"Continuing....\n";
3940 std::cout <<
"TestIntegrated_ViscousShock3DZ: failed to produce expected" << std::endl
3941 <<
"output file (exact_ViscousShock_ND_40000.h5). Test failed." << std::endl;
3942 viscousShockTestResult =
false;
3945 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3946 if(!viscousShockTestResult)
3951 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
3953 "exact_ViscousShock_ND_40000.h5",
3954 errorToleranceExact,compareStream);
3955 if(returnValue > 0){
3956 std::cout <<
"TestIntegrated_ViscousShock3DZ: Resulting state comparison yielded negative result:" 3958 << compareStream.str()
3960 viscousShockTestResult =
false;
3962 std::cout <<
"Passed!" << std::endl;
3966 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
3972 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:ViscousShock3DZ",viscousShockTestResult);
3984 bool viscousShockTestResult =
true;
3985 int myRank = testComm.
Rank();
3986 int numProc = testComm.
NProc();
3989 const std::string testFunctionName(
"TestIntegrated_VSRectilinear3DZ");
3990 const std::string testSuiteName(
"ViscidTest");
3991 const std::string testCaseName(
"ViscousShock3DZ");
3992 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
3994 std::ostringstream compareStream;
3996 double errorToleranceExact = 5.e-2;
3998 std::cout <<
"Running " << testFunctionName << std::endl;
4001 const char *argv[] = {
"plascom2x",
"-c",
"rectilinear.config",NULL};
4006 int returnValue = 0;
4010 viscousShockTestResult =
false;
4011 std::cout << testFunctionName <<
": testing directory (" 4012 << testDirectory <<
") did not exist. Aborting test." 4016 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
4017 if(!viscousShockTestResult)
4026 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
4029 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
4031 if(returnValue > 0){
4032 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 4033 << returnValue <<
"). Test failed." << std::endl;
4034 viscousShockTestResult =
false;
4040 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
4041 <<
"output file (PlasCom2_000040000.h5). Test failed." << std::endl;
4042 viscousShockTestResult =
false;
4045 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
4046 if(!viscousShockTestResult)
4053 DomainVector &simulationDomain(simulationApplicationNonDimen.GetDomains());
4059 state_t exactState(simulationDomain[0].State(0));
4061 viscousShockTestResult =
false;
4062 std::cout <<
"Fail to calculated exact viscid shock solution" << std::endl;
4064 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
4065 if(!viscousShockTestResult)
4072 double *rhoPtr = rhoData.
Data<
double>();
4076 double *rhoVPtr = rhoVData.
Data<
double>();
4080 double *rhoEPtr = rhoEData.
Data<
double>();
4082 int velocityHandle = exactState.
GetDataIndex(
"velocity");
4084 double *velocityPtr = velocityData.
Data<
double>();
4086 int pressureHandle = exactState.
GetDataIndex(
"pressure");
4088 double *pressurePtr = pressureData.
Data<
double>();
4090 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
4092 double *temperaturePtr = temperatureData.
Data<
double>();
4096 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 4101 double refRho = 1.225;
4102 double refPress = 101325;
4103 double refVel = sqrt(refPress/refRho);
4104 double refTemp = 288.15;
4107 rhoPtr[iPoint] /= refRho;
4109 rhoEPtr[iPoint] /= refVel*refVel*refRho;
4112 pressurePtr[iPoint] /= refRho*refVel*refVel;
4113 temperaturePtr[iPoint] /= refTemp;
4116 std::ostringstream Ostr;
4117 Ostr <<
"exact_ViscousShock_ND_40000";
4118 const std::string domainName(Ostr.str());
4119 const std::string hdfFileName(domainName+
".h5");
4120 const std::string xdmfFileName(domainName+
".xdmf");
4121 const std::string geometryName(
"shockTube");
4122 const std::string gridName(
"grid1");
4130 gridName,exactGrid,exactState,paramState,
4131 testConfig,compareStream)){
4132 std::cout << compareStream.str();
4133 std::cout <<
"Output to HDF5 failed:\n";
4134 std::cout <<
"Continuing....\n";
4143 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
4144 <<
"output file (exact_ViscousShock_ND_40000.h5). Test failed." << std::endl;
4145 viscousShockTestResult =
false;
4148 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
4149 if(!viscousShockTestResult)
4154 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
4156 "exact_ViscousShock_ND_40000.h5",
4157 errorToleranceExact,compareStream);
4158 if(returnValue > 0){
4159 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 4161 << compareStream.str()
4163 viscousShockTestResult =
false;
4165 std::cout <<
"Passed!" << std::endl;
4169 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
4175 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:VSRectilinear3DZ",viscousShockTestResult);
4185 bool viscousShockTestResult =
true;
4186 int myRank = testComm.
Rank();
4187 int numProc = testComm.
NProc();
4190 const std::string testFunctionName(
"TestIntegrated_VSCurvilinear3DZ");
4191 const std::string testSuiteName(
"ViscidTest");
4192 const std::string testCaseName(
"ViscousShock3DZ");
4193 const std::string testDirectory(testSuiteName+
"/"+testCaseName);
4195 std::ostringstream compareStream;
4197 double errorToleranceExact = 5.e-2;
4199 std::cout <<
"Running " << testFunctionName << std::endl;
4202 const char *argv[] = {
"plascom2x",
"-c",
"curvilinear.config",NULL};
4207 int returnValue = 0;
4211 viscousShockTestResult =
false;
4212 std::cout << testFunctionName <<
": testing directory (" 4213 << testDirectory <<
") did not exist. Aborting test." 4217 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
4218 if(!viscousShockTestResult)
4227 std::cout <<
"Running nonDimensional PlasCom2..." << std::endl;
4230 std::cout <<
"Done running nonDimensional PlasCom2." << std::endl;
4232 if(returnValue > 0){
4233 std::cout << testFunctionName <<
": PlasCom2 returned error code (" 4234 << returnValue <<
"). Test failed." << std::endl;
4235 viscousShockTestResult =
false;
4241 std::cout << testFunctionName <<
": PlasCom2 failed to produce expected" << std::endl
4242 <<
"output file (PlasCom2_000040000.h5). Test failed." << std::endl;
4243 viscousShockTestResult =
false;
4246 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
4247 if(!viscousShockTestResult)
4254 DomainVector &simulationDomain(simulationApplicationNonDimen.GetDomains());
4260 state_t exactState(simulationDomain[0].State(0));
4262 viscousShockTestResult =
false;
4263 std::cout <<
"Fail to calculated exact viscid shock solution" << std::endl;
4265 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
4266 if(!viscousShockTestResult)
4273 double *rhoPtr = rhoData.
Data<
double>();
4277 double *rhoVPtr = rhoVData.
Data<
double>();
4281 double *rhoEPtr = rhoEData.
Data<
double>();
4283 int velocityHandle = exactState.
GetDataIndex(
"velocity");
4285 double *velocityPtr = velocityData.
Data<
double>();
4287 int pressureHandle = exactState.
GetDataIndex(
"pressure");
4289 double *pressurePtr = pressureData.
Data<
double>();
4291 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
4293 double *temperaturePtr = temperatureData.
Data<
double>();
4297 std::cout <<
"Writing exact solution for nonDimensional PlasCom2" 4302 double refRho = 1.225;
4303 double refPress = 101325;
4304 double refVel = sqrt(refPress/refRho);
4305 double refTemp = 288.15;
4308 rhoPtr[iPoint] /= refRho;
4310 rhoEPtr[iPoint] /= refVel*refVel*refRho;
4313 pressurePtr[iPoint] /= refRho*refVel*refVel;
4314 temperaturePtr[iPoint] /= refTemp;
4317 std::ostringstream Ostr;
4318 Ostr <<
"exact_ViscousShock_ND_40000";
4319 const std::string domainName(Ostr.str());
4320 const std::string hdfFileName(domainName+
".h5");
4321 const std::string xdmfFileName(domainName+
".xdmf");
4322 const std::string geometryName(
"shockTube");
4323 const std::string gridName(
"grid1");
4331 gridName,exactGrid,exactState,paramState,
4332 testConfig,compareStream)){
4333 std::cout << compareStream.str();
4334 std::cout <<
"Output to HDF5 failed:\n";
4335 std::cout <<
"Continuing....\n";
4344 std::cout << testFunctionName <<
": failed to produce expected" << std::endl
4345 <<
"output file (exact_ViscousShock_ND_40000.h5). Test failed." << std::endl;
4346 viscousShockTestResult =
false;
4349 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
4350 if(!viscousShockTestResult)
4355 std::cout <<
"Comparing exact solution against nonDimensional PlasCom2" << std::endl;
4357 "exact_ViscousShock_ND_40000.h5",
4358 errorToleranceExact,compareStream);
4359 if(returnValue > 0){
4360 std::cout << testFunctionName <<
": Resulting state comparison yielded negative result:" 4362 << compareStream.str()
4364 viscousShockTestResult =
false;
4366 std::cout <<
"Passed!" << std::endl;
4370 viscousShockTestResult =
CheckResult(viscousShockTestResult,testComm);
4376 parallelUnitResults.
UpdateResult(
"Integrated:Viscid:VSCurvilinear3DZ",viscousShockTestResult);
4392 const std::vector<double> &dX(exactGrid.
DX());
4395 int numDim = gridSizes.size();
4396 const std::vector<double> &coordinateData(exactGrid.
CoordinateData());
4402 double *rhoPtr = rhoData.
Data<
double>();
4406 double *rhoVPtr = rhoVData.
Data<
double>();
4410 double *rhoEPtr = rhoEData.
Data<
double>();
4412 int velocityHandle = exactState.
GetDataIndex(
"velocity");
4414 double *velocityPtr = velocityData.
Data<
double>();
4416 int pressureHandle = exactState.
GetDataIndex(
"pressure");
4418 double *pressurePtr = pressureData.
Data<
double>();
4420 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
4422 double *temperaturePtr = temperatureData.
Data<
double>();
4426 rhoPtr[iPoint] = 0.0;
4427 rhoEPtr[iPoint] = 0.0;
4428 pressurePtr[iPoint] = 0.0;
4429 temperaturePtr[iPoint] = 0.0;
4432 for(
int iDim = 0;iDim < numDim;iDim++){
4435 rhoVPtr[iPoint+dimOffset] = 0.0;
4436 velocityPtr[iPoint+dimOffset]=0.0;
4447 double rho1 = 1.225;
4449 double R = p1/rho1/T1;
4451 double a1 = sqrt(gamma*p1/rho1);
4452 double u1 = mach*a1;
4453 double E1 = p1/(gamma-1)/rho1 + 0.5*u1*u1;
4457 double pressureRatio = (2.*gamma*mach*mach-(gamma-1.))/(gamma+1.);
4458 double densityRatio = (gamma+1.)*mach*mach/((gamma-1.)*mach*mach+2.);
4459 double rho2 = rho1*densityRatio;
4460 double u2 = u1/densityRatio;
4461 double p2 = p1*pressureRatio;
4462 double T2 = p2/rho2/R;
4465 double aCoeff = 3*rho1*u1*(gamma+1)/(8*mu*gamma);
4466 double bCoeff = u1/(u1-u2);
4467 double cCoeff = u2/(u1-u2);
4472 double x0 = 0.7272167;
4473 double nu1 = u1*.999;
4474 double nu2 = u2*1.001;
4475 double xMin = (cCoeff*log(nu2-u2)-bCoeff*log(u1-nu2))/aCoeff+x0;
4476 double xMax = (cCoeff*log(nu1-u2)-bCoeff*log(u1-nu1))/aCoeff+x0;
4478 size_t iStart = partitionBufferInterval[0].first;
4479 size_t iEnd = partitionBufferInterval[0].second;
4480 size_t jStart = partitionBufferInterval[1].first;
4481 size_t jEnd = partitionBufferInterval[1].second;
4487 kStart = partitionBufferInterval[2].first;
4488 kEnd = partitionBufferInterval[2].second;
4492 for(
size_t kIndex = kStart;kIndex <= kEnd;kIndex++){
4493 size_t kBufferIndex = kIndex*nPlane;
4494 size_t kPartIndex = (kIndex - kStart) + partitionInterval[2].first;
4495 double z = kPartIndex*dX[2];
4496 for(
size_t jIndex = jStart;jIndex <= jEnd;jIndex++){
4497 size_t jkBufferIndex = kBufferIndex + jIndex*
bufferSizes[0];
4498 size_t jPartIndex = (jIndex - jStart) + partitionInterval[1].first;
4499 double y = jPartIndex*dX[1];
4500 for(
size_t iIndex = iStart;iIndex <= iEnd;iIndex++){
4501 size_t bufferIndex = jkBufferIndex + iIndex;
4502 size_t iPartIndex = (iIndex - iStart) + partitionInterval[0].first;
4503 double x = iPartIndex*dX[0];
4505 double nuGuess = 0.;
4506 double position = 0.;
4507 size_t velOffSet = 0;
4508 if(direction == 0) {
4511 }
else if(direction == 1){
4514 }
else if(direction == 2){
4519 if (position > xMax) {
4520 rhoPtr[bufferIndex] = rho1;
4521 rhoVPtr[bufferIndex+velOffSet] = -rho1*u1;
4522 rhoEPtr[bufferIndex] = p1/(gamma-1)+0.5*rho1*u1*u1;
4523 velocityPtr[bufferIndex+velOffSet] = -u1;
4524 pressurePtr[bufferIndex] = p1;
4525 temperaturePtr[bufferIndex] = T1;
4526 }
else if (position < xMin) {
4527 rhoPtr[bufferIndex] = rho2;
4528 rhoVPtr[bufferIndex+velOffSet] = -rho2*u2;
4529 rhoEPtr[bufferIndex] = p2/(gamma-1)+0.5*rho2*u2*u2;
4530 velocityPtr[bufferIndex+velOffSet] = -u2;
4531 pressurePtr[bufferIndex] = p2;
4532 temperaturePtr[bufferIndex] = T2;
4537 nuGuess = nu2+(nu1-nu2)/(xMax-xMin)*(position-xMin);
4538 double xGuess = (cCoeff*log(nuGuess-u2)-bCoeff*log(u1-nuGuess))/aCoeff+x0;
4539 double error = std::abs((position-xGuess)/position);
4540 double toler = 1.e-9;
4542 while(error > toler) {
4543 double dNudX = (u1-nuGuess)*(nuGuess-u2)/nuGuess*aCoeff;
4544 double nuGuessNew = nuGuess+dNudX*(position-xGuess);
4548 if(nuGuessNew < nu2){
4549 nuGuess = nu2+(nuGuess-nu2)/(xGuess-xMin)*(position-xMin);
4550 }
else if (nuGuessNew > nu1) {
4551 nuGuess = nu1-(nu1-nuGuess)/(xMax-xGuess)*(xMax-position);
4553 nuGuess = nuGuessNew;
4556 xGuess = (cCoeff*log(nuGuess-u2)-bCoeff*log(u1-nuGuess))/aCoeff+x0;
4557 error = std::abs((position-xGuess)/position);
4560 std::cout <<
"TestIntegrated_ViscousShockPulse2D: Newton iteration failed (" 4561 <<
"error=" << error <<
"). Test failed." << std::endl;
4567 rhoPtr[bufferIndex] = rho1*u1/nuGuess;
4568 rhoVPtr[bufferIndex+velOffSet] = -rhoPtr[bufferIndex]*nuGuess;
4569 velocityPtr[bufferIndex+velOffSet] = -nuGuess;
4572 double E = (E1+p1/rho1)/gamma+0.5*nuGuess*nuGuess*(gamma-1)/gamma;
4573 rhoEPtr[bufferIndex] = E*rhoPtr[bufferIndex];
4574 pressurePtr[bufferIndex] = (gamma-1)*rhoPtr[bufferIndex]*
4575 (E - 0.5*nuGuess*nuGuess);
4576 temperaturePtr[bufferIndex] = pressurePtr[bufferIndex]/rhoPtr[bufferIndex]/R;
4594 const std::vector<double> &dX(exactGrid.
DX());
4597 int numDim = gridSizes.size();
4598 const std::vector<double> &coordinateData(exactGrid.
CoordinateData());
4599 const std::vector<double> &readGridExtent(exactGrid.
PhysicalExtent());
4605 double *rhoPtr = rhoData.
Data<
double>();
4609 double *rhoVPtr = rhoVData.
Data<
double>();
4613 double *rhoEPtr = rhoEData.
Data<
double>();
4615 int velocityHandle = exactState.
GetDataIndex(
"velocity");
4617 double *velocityPtr = velocityData.
Data<
double>();
4619 int pressureHandle = exactState.
GetDataIndex(
"pressure");
4621 double *pressurePtr = pressureData.
Data<
double>();
4623 int temperatureHandle = exactState.
GetDataIndex(
"temperature");
4625 double *temperaturePtr = temperatureData.
Data<
double>();
4629 rhoPtr[iPoint] = 0.0;
4630 rhoEPtr[iPoint] = 0.0;
4631 pressurePtr[iPoint] = 0.0;
4632 temperaturePtr[iPoint] = 0.0;
4635 for(
int iDim = 0;iDim < numDim;iDim++){
4638 rhoVPtr[iPoint+dimOffset] = 0.0;
4639 velocityPtr[iPoint+dimOffset]=0.0;
4650 double rho1 = 1.225;
4652 double R = p1/rho1/T1;
4654 double a1 = sqrt(gamma*p1/rho1);
4655 double u1 = mach*a1;
4656 double E1 = p1/(gamma-1)/rho1 + 0.5*u1*u1;
4663 double xMin = readGridExtent[0];
4664 double xMax = readGridExtent[1];
4665 double yMin = readGridExtent[2];
4666 double yMax = readGridExtent[3];
4670 zMin = readGridExtent[4];
4671 zMax = readGridExtent[5];
4679 if(xMax-xMin > yMax-yMin){
4692 double pressureRatio = 1418.55;
4694 double pi = 3.14159265359;
4696 size_t iStart = partitionBufferInterval[0].first;
4697 size_t iEnd = partitionBufferInterval[0].second;
4698 size_t jStart = partitionBufferInterval[1].first;
4699 size_t jEnd = partitionBufferInterval[1].second;
4705 kStart = partitionBufferInterval[2].first;
4706 kEnd = partitionBufferInterval[2].second;
4710 for(
size_t kIndex = kStart;kIndex <= kEnd;kIndex++){
4711 size_t kBufferIndex = kIndex*nPlane;
4712 size_t kPartIndex = 0;
4715 kPartIndex = (kIndex - kStart) + partitionInterval[2].first;
4716 z = kPartIndex*dX[2];
4718 for(
size_t jIndex = jStart;jIndex <= jEnd;jIndex++){
4719 size_t jkBufferIndex = kBufferIndex + jIndex*
bufferSizes[0];
4720 size_t jPartIndex = (jIndex - jStart) + partitionInterval[1].first;
4721 double y = jPartIndex*dX[1];
4722 for(
size_t iIndex = iStart;iIndex <= iEnd;iIndex++){
4723 size_t bufferIndex = jkBufferIndex + iIndex;
4724 size_t iPartIndex = (iIndex - iStart) + partitionInterval[0].first;
4725 double x = iPartIndex*dX[0];
4729 double positionX = 0.;
4730 double positionY = 0.;
4731 double positionZ = 0.;
4732 size_t velOffSet = 0;
4733 if(direction == 0) {
4734 positionX = (xMax-
x)/(xMax-xMin);
4737 }
else if(direction == 1){
4738 positionX = (yMax-
y)/(yMax-yMin);
4741 }
else if(direction == 2){
4742 positionX = (zMax-z)/(zMax-zMin);
4748 rhoPtr[bufferIndex] = rho1;
4749 pressurePtr[bufferIndex] = p1+pressureRatio*positionX;
4750 temperaturePtr[bufferIndex] = pressurePtr[bufferIndex]/rhoPtr[bufferIndex]/R;
4751 double velocity = pressureRatio*positionY*(height-positionY)/(2*length*mu);
4759 for(
int n=1;n<nMax;n++){
4760 double beta = (2*n-1)*pi/height;
4761 sumTerm += sin(beta*positionY)/pow((2*n-1),3)*
4762 (sinh(beta*positionZ)+sinh(beta*(width-positionZ)))/sinh(beta*width);
4765 sumTerm *= 4*pressureRatio/length*height*height/mu/pow(pi,3);
4766 velocity -= sumTerm;
4769 velocityPtr[bufferIndex+velOffSet] =
velocity;
4771 rhoVPtr[bufferIndex+velOffSet] = rhoPtr[bufferIndex]*velocityPtr[bufferIndex+velOffSet];
4772 rhoEPtr[bufferIndex] = pressurePtr[bufferIndex]/(gamma-1)+
4773 0.5*rhoPtr[bufferIndex]*velocity*velocity;
void TestIntegrated_PFCurvilinear3DZ(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
void TestIntegrated_VSRectilinear2DX(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
void TestIntegrated_Poiseuille2DY(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
int ApplicationDriver(ApplicationType &simulationApplication)
void TestIntegrated_ViscousShock2DX(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
int Remove(const std::string &fname)
int GetDataIndex(const std::string &name) const
void TestIntegrated_PFRectilinear2DY(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
std::vector< DomainBaseType > domainvector
void TestIntegrated_VSCurvilinear2DY(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
const std::vector< double > & DX() const
pcpp::IndexIntervalType & PartitionInterval()
void TestIntegrated_VSRectilinear2DY(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
void const size_t const size_t * gridSizes
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 CheckResult(bool &localResult, pcpp::CommunicatorType &testComm)
int ChDir(const std::string &path)
void const size_t const size_t const size_t const double const double double * y
simulation::grid::parallel_blockstructured pbsgrid_t
void const size_t const size_t const size_t const int const double const int const double * velocity
void TestIntegrated_PFRectilinear3DZ(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
int GeneratePoiseuilleExact(pbsgrid_t &exactGrid, state_t &exactState, const int direction)
int OutputSingle(const std::string &fileName, const GridType &inGrid, const StateType &inState, const ConfigType &simConfig, const ConfigType &gridConfig, const ConfigType &stateConfig)
void const size_t const size_t const size_t const double const double * x
const std::vector< size_t > & BufferSizes() const
Encapsulating class for collections of test results.
pcpp::IndexIntervalType & PartitionBufferInterval()
const std::vector< size_t > & GridSizes() const
bool FILEEXISTS(const std::string &fname)
Main encapsulation of MPI.
std::string Grid(const GridType &inGrid)
Testing constructs for unit testing.
simulation::state::base state_t
void TestIntegrated_VSCurvilinear3DZ(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
void TestIntegrated_Poiseuille3DZ(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
void TestIntegrated_ViscousShock3DZ(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
void const size_t const size_t * bufferSizes
void UpdateResult(const std::string &name, const ValueType &result)
Updates an existing test result.
const std::vector< double > & PhysicalExtent() const
std::vector< double > & CoordinateData()
void TestIntegrated_ViscousShock2DY(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
plascom2::application::domainvector DomainVector
void TestIntegrated_Poiseuille2DX(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
void TestIntegrated_PFCurvilinear2DX(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
int GenerateViscidShockExact(pbsgrid_t &exactGrid, state_t &exactState, const int direction)
Simple Block Structured Mesh object.
void TestIntegrated_PFCurvilinear2DY(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
void TestIntegrated_VSRectilinear3DZ(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
size_t BufferSize() const
void const size_t * numPointsBuffer
void TestIntegrated_VSCurvilinear2DX(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)
DataBufferType & Field(const std::string &name)
void TestIntegrated_PFRectilinear2DX(ix::test::results ¶llelUnitResults, pcpp::CommunicatorType &testComm)