From db270e8566e561f51f8d88ccede8381f8fc76aa0 Mon Sep 17 00:00:00 2001 From: Harry Saunders Date: Fri, 13 Sep 2024 12:15:41 +0100 Subject: [PATCH 1/4] Tidy includes --- src/base/hippoApp.C | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/base/hippoApp.C b/src/base/hippoApp.C index 9a32c2d7..7f6741cb 100644 --- a/src/base/hippoApp.C +++ b/src/base/hippoApp.C @@ -1,8 +1,9 @@ #include "hippoApp.h" -#include "Moose.h" -#include "AppFactory.h" -#include "ModulesApp.h" -#include "MooseSyntax.h" + +#include +#include +#include +#include InputParameters hippoApp::validParams() From 5ba4e14bc0873cab5eb4253c0e4847ae91b1f94a Mon Sep 17 00:00:00 2001 From: Harry Saunders Date: Fri, 20 Sep 2024 16:12:22 +0100 Subject: [PATCH 2/4] Add test for checkpointing This currently fails, but will be used for test that the backup/restore functionality works as expected. --- .../restart_from_transient_serial/.gitignore | 13 + .../buoyantCavity/0/T | 44 + .../buoyantCavity/0/U | 42 + .../buoyantCavity/0/alphat | 50 + .../buoyantCavity/0/epsilon | 46 + .../buoyantCavity/0/k | 46 + .../buoyantCavity/0/nut | 58 + .../buoyantCavity/0/omega | 54 + .../buoyantCavity/0/p | 46 + .../buoyantCavity/0/p_rgh | 1342 +++++++++++++++++ .../buoyantCavity/0/phi | 46 + .../buoyantCavity/Allclean | 10 + .../buoyantCavity/constant/g | 21 + .../buoyantCavity/constant/momentumTransport | 28 + .../buoyantCavity/constant/pRef | 20 + .../buoyantCavity/constant/physicalProperties | 47 + .../buoyantCavity/system/blockMeshDict | 76 + .../buoyantCavity/system/controlDict | 47 + .../buoyantCavity/system/fvSchemes | 60 + .../buoyantCavity/system/fvSolution | 72 + .../buoyantCavity/system/sample | 99 ++ .../restart_from_transient_serial/first.i | 63 + .../gold/first_out.e | Bin 0 -> 136068 bytes .../gold/second_out.e | Bin 0 -> 197348 bytes .../restart_from_transient_serial/second.i | 48 + .../restart_from_transient_serial/tests | 26 + 26 files changed, 2404 insertions(+) create mode 100644 test/tests/restart/restart_from_transient_serial/.gitignore create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/0/T create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/0/U create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/0/alphat create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/0/epsilon create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/0/k create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/0/nut create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/0/omega create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/0/p create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/0/p_rgh create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/0/phi create mode 100755 test/tests/restart/restart_from_transient_serial/buoyantCavity/Allclean create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/g create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/momentumTransport create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/pRef create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/physicalProperties create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/system/blockMeshDict create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/system/controlDict create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/system/fvSchemes create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/system/fvSolution create mode 100644 test/tests/restart/restart_from_transient_serial/buoyantCavity/system/sample create mode 100644 test/tests/restart/restart_from_transient_serial/first.i create mode 100644 test/tests/restart/restart_from_transient_serial/gold/first_out.e create mode 100644 test/tests/restart/restart_from_transient_serial/gold/second_out.e create mode 100644 test/tests/restart/restart_from_transient_serial/second.i create mode 100644 test/tests/restart/restart_from_transient_serial/tests diff --git a/test/tests/restart/restart_from_transient_serial/.gitignore b/test/tests/restart/restart_from_transient_serial/.gitignore new file mode 100644 index 00000000..6a78ae32 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/.gitignore @@ -0,0 +1,13 @@ +# Files generated by running the buoyantFoam tests +**/processor*/* +**/postProcessing/* +**/constant/polyMesh/* +**/buoyantCavity/[1-9]/* +**/buoyantCavity/[1-9][0-9]/* +*.blockMesh +*.buoyantFoam +*.createGraphs +*.postProcess.* + +# Files for displaying OpenFOAM meshes in paraview +**/buoyantCavity/*.foam diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/T b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/T new file mode 100644 index 00000000..d66e2ef8 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/T @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 293; + +boundaryField +{ + topAndBottom + { + type zeroGradient; + } + frontAndBack + { + type zeroGradient; + } + hot + { + type fixedValue; + value uniform 307.75; + } + cold + { + type fixedValue; + value uniform 288.15; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/U b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/U new file mode 100644 index 00000000..5d3b392b --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/U @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + topAndBottom + { + type noSlip; + } + frontAndBack + { + type noSlip; + } + hot + { + type noSlip; + } + cold + { + type noSlip; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/alphat b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/alphat new file mode 100644 index 00000000..51fc3869 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/alphat @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + location "0"; + object alphat; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + topAndBottom + { + type compressible::alphatWallFunction; + Prt 0.85; + value uniform 0; + } + frontAndBack + { + type compressible::alphatWallFunction; + Prt 0.85; + value uniform 0; + } + hot + { + type compressible::alphatWallFunction; + Prt 0.85; + value uniform 0; + } + cold + { + type compressible::alphatWallFunction; + Prt 0.85; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/epsilon b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/epsilon new file mode 100644 index 00000000..888eefc9 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/epsilon @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 4e-06; + +boundaryField +{ + frontAndBack + { + type epsilonWallFunction; + value uniform 4e-06; + } + topAndBottom + { + type epsilonWallFunction; + value uniform 4e-06; + } + hot + { + type epsilonWallFunction; + value uniform 4e-06; + } + cold + { + type epsilonWallFunction; + value uniform 4e-06; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/k b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/k new file mode 100644 index 00000000..1c8e8236 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/k @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.000375; + +boundaryField +{ + topAndBottom + { + type kqRWallFunction; + value uniform 0.000375; + } + frontAndBack + { + type kqRWallFunction; + value uniform 0.000375; + } + hot + { + type kqRWallFunction; + value uniform 0.000375; + } + cold + { + type kqRWallFunction; + value uniform 0.000375; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/nut b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/nut new file mode 100644 index 00000000..f10bb671 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/nut @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + location "0"; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0.003125; + +boundaryField +{ + topAndBottom + { + type nutUWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } + frontAndBack + { + type nutUWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } + hot + { + type nutUWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } + cold + { + type nutUWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/omega b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/omega new file mode 100644 index 00000000..d7dd3f10 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/omega @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + location "0"; + object omega; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 -1 0 0 0 0]; + +internalField uniform 0.12; + +boundaryField +{ + topAndBottom + { + beta1 0.075; + blended 0; + type omegaWallFunction; + value uniform 0.12; + } + frontAndBack + { + beta1 0.075; + blended 0; + type omegaWallFunction; + value uniform 0.12; + } + hot + { + beta1 0.075; + blended 0; + type omegaWallFunction; + value uniform 0.12; + } + cold + { + beta1 0.075; + blended 0; + type omegaWallFunction; + value uniform 0.12; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/p b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/p new file mode 100644 index 00000000..f2e57d0e --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/p @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + topAndBottom + { + type calculated; + value uniform 100000; + } + frontAndBack + { + type calculated; + value uniform 100000; + } + hot + { + type calculated; + value uniform 100000; + } + cold + { + type calculated; + value uniform 100000; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/p_rgh b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/p_rgh new file mode 100644 index 00000000..8c91dd23 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/p_rgh @@ -0,0 +1,1342 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + location "0"; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField nonuniform List +630 +( +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +0.423711853436544 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +1.27113556029508 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.11855926715361 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +2.9659829740267 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +3.81340668088524 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +4.66083038775832 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +5.50825409461686 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +6.35567780147539 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +7.20310150834848 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.05052521520702 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +8.8979489220801 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +9.74537262893864 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +10.5927963357972 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +11.4402200426703 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +12.2876437495288 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.1350674563873 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +13.9824911632604 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +14.829914870119 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +15.677338576992 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +16.5247622838506 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +17.3721859907091 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +18.2196096975822 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.0670334044407 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +19.9144571112993 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +20.7618808181724 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +21.6093045250309 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +22.456728231904 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +23.3041519387625 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.1515756456211 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +24.9989993524941 +) +; + +boundaryField +{ + topAndBottom + { + type fixedFluxPressure; + gradient uniform 0; + value nonuniform List +42 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +25.4227112059161 +) +; + } + frontAndBack + { + type fixedFluxPressure; + gradient uniform 0; + value nonuniform List +420 +( +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +0.423711853436544 +1.27113556029508 +2.11855926715361 +2.9659829740267 +3.81340668088524 +4.66083038775832 +5.50825409461686 +6.35567780147539 +7.20310150834848 +8.05052521520702 +8.8979489220801 +9.74537262893864 +10.5927963357972 +11.4402200426703 +12.2876437495288 +13.1350674563873 +13.9824911632604 +14.829914870119 +15.677338576992 +16.5247622838506 +17.3721859907091 +18.2196096975822 +19.0670334044407 +19.9144571112993 +20.7618808181724 +21.6093045250309 +22.456728231904 +23.3041519387625 +24.1515756456211 +24.9989993524941 +) +; + } + hot + { + type fixedFluxPressure; + gradient uniform 0; + value nonuniform List +90 +( +0.403403974181856 +1.21021192256012 +2.01701987092383 +2.8238278193021 +3.63063576766581 +4.43744371604407 +5.24425166440778 +6.05105961278605 +6.85786756114976 +7.66467550952802 +8.47148345789174 +9.27829140627 +10.0850993546337 +10.891907303012 +11.6987152513757 +12.505523199754 +13.3123311481177 +14.1191390964959 +14.9259470448596 +15.7327549932379 +16.5395629416016 +17.3463708899799 +18.1531788383436 +18.9599867867219 +19.7667947350856 +20.5736026834638 +21.3804106318275 +22.1872185802058 +22.9940265285695 +23.8008344769478 +0.403403974181856 +1.21021192256012 +2.01701987092383 +2.8238278193021 +3.63063576766581 +4.43744371604407 +5.24425166440778 +6.05105961278605 +6.85786756114976 +7.66467550952802 +8.47148345789174 +9.27829140627 +10.0850993546337 +10.891907303012 +11.6987152513757 +12.505523199754 +13.3123311481177 +14.1191390964959 +14.9259470448596 +15.7327549932379 +16.5395629416016 +17.3463708899799 +18.1531788383436 +18.9599867867219 +19.7667947350856 +20.5736026834638 +21.3804106318275 +22.1872185802058 +22.9940265285695 +23.8008344769478 +0.403403974181856 +1.21021192256012 +2.01701987092383 +2.8238278193021 +3.63063576766581 +4.43744371604407 +5.24425166440778 +6.05105961278605 +6.85786756114976 +7.66467550952802 +8.47148345789174 +9.27829140627 +10.0850993546337 +10.891907303012 +11.6987152513757 +12.505523199754 +13.3123311481177 +14.1191390964959 +14.9259470448596 +15.7327549932379 +16.5395629416016 +17.3463708899799 +18.1531788383436 +18.9599867867219 +19.7667947350856 +20.5736026834638 +21.3804106318275 +22.1872185802058 +22.9940265285695 +23.8008344769478 +) +; + } + cold + { + type fixedFluxPressure; + gradient uniform 0; + value nonuniform List +90 +( +0.430843564303359 +1.29253069292463 +2.1542178215459 +3.01590495016717 +3.87759207877389 +4.73927920739516 +5.60096633601643 +6.4626534646377 +7.32434059324441 +8.18602772186568 +9.04771485048695 +9.90940197910822 +10.7710891077149 +11.6327762363362 +12.4944633649575 +13.3561504935788 +14.2178376221855 +15.0795247508067 +15.941211879428 +16.8028990080493 +17.664586136656 +18.5262732652773 +19.3879603938985 +20.2496475225198 +21.1113346511265 +21.9730217797478 +22.8347089083691 +23.6963960369903 +24.5580831655971 +25.4197702942183 +0.430843564303359 +1.29253069292463 +2.1542178215459 +3.01590495016717 +3.87759207877389 +4.73927920739516 +5.60096633601643 +6.4626534646377 +7.32434059324441 +8.18602772186568 +9.04771485048695 +9.90940197910822 +10.7710891077149 +11.6327762363362 +12.4944633649575 +13.3561504935788 +14.2178376221855 +15.0795247508067 +15.941211879428 +16.8028990080493 +17.664586136656 +18.5262732652773 +19.3879603938985 +20.2496475225198 +21.1113346511265 +21.9730217797478 +22.8347089083691 +23.6963960369903 +24.5580831655971 +25.4197702942183 +0.430843564303359 +1.29253069292463 +2.1542178215459 +3.01590495016717 +3.87759207877389 +4.73927920739516 +5.60096633601643 +6.4626534646377 +7.32434059324441 +8.18602772186568 +9.04771485048695 +9.90940197910822 +10.7710891077149 +11.6327762363362 +12.4944633649575 +13.3561504935788 +14.2178376221855 +15.0795247508067 +15.941211879428 +16.8028990080493 +17.664586136656 +18.5262732652773 +19.3879603938985 +20.2496475225198 +21.1113346511265 +21.9730217797478 +22.8347089083691 +23.6963960369903 +24.5580831655971 +25.4197702942183 +) +; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/phi b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/phi new file mode 100644 index 00000000..5657a15b --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/0/phi @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class surfaceScalarField; + location "0"; + object phi; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 0 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + topAndBottom + { + type calculated; + value uniform 0; + } + frontAndBack + { + type calculated; + value uniform 0; + } + hot + { + type calculated; + value uniform 0; + } + cold + { + type calculated; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/Allclean b/test/tests/restart/restart_from_transient_serial/buoyantCavity/Allclean new file mode 100755 index 00000000..bb7f5888 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/Allclean @@ -0,0 +1,10 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +cleanCase +rm -f validation/*.eps + +#------------------------------------------------------------------------------ diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/g b/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/g new file mode 100644 index 00000000..72d18dc9 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/g @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/momentumTransport b/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/momentumTransport new file mode 100644 index 00000000..55c2d61e --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/momentumTransport @@ -0,0 +1,28 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object RASProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + model kOmegaSST; + + turbulence on; + + printCoeffs on; +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/pRef b/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/pRef new file mode 100644 index 00000000..fc25cd80 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/pRef @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class uniformDimensionedScalarField; + location "constant"; + object pRef; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; +value 1e5; + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/physicalProperties b/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/physicalProperties new file mode 100644 index 00000000..6005622f --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/constant/physicalProperties @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "constant"; + object physicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleEnthalpy; +} + +mixture +{ + specie + { + molWeight 28.96; + } + thermodynamics + { + Cp 1004.4; + Hf 0; + } + transport + { + mu 1.831e-05; + Pr 0.705; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/blockMeshDict b/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/blockMeshDict new file mode 100644 index 00000000..6b76c4b7 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/blockMeshDict @@ -0,0 +1,76 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.001; + +vertices +( + ( 0 0 -260) + (76 0 -260) + (76 2180 -260) + ( 0 2180 -260) + ( 0 0 260) + (76 0 260) + (76 2180 260) + ( 0 2180 260) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (7 30 3) simpleGrading (1 1 1) +); + +boundary +( + topAndBottom + { + type wall; + faces + ( + (0 1 5 4) + (2 3 7 6) + ); + } + + frontAndBack + { + type wall; + faces + ( + (4 5 6 7) + (3 2 1 0) + ); + } + + hot + { + type wall; + faces + ( + (6 5 1 2) + ); + } + + cold + { + type wall; + faces + ( + (4 7 3 0) + ); + } +); + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/controlDict b/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/controlDict new file mode 100644 index 00000000..a13e9ca6 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/controlDict @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application buoyantFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 1; + +deltaT 0.25; + +writeControl timeStep; + +writeInterval 1; + +purgeWrite 1; + +writeFormat ascii; + +writePrecision 15; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/fvSchemes b/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/fvSchemes new file mode 100644 index 00000000..dad97318 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/fvSchemes @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default steadyState; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,U) bounded Gauss limitedLinear 0.2; + div(phi,K) bounded Gauss limitedLinear 0.2; + div(phi,h) bounded Gauss limitedLinear 0.2; + div(phi,k) bounded Gauss limitedLinear 0.2; + div(phi,epsilon) bounded Gauss limitedLinear 0.2; + div(phi,omega) bounded Gauss limitedLinear 0.2; + div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear orthogonal; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default orthogonal; +} + +wallDist +{ + method meshWave; +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/fvSolution b/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/fvSolution new file mode 100644 index 00000000..f94499f3 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/fvSolution @@ -0,0 +1,72 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p_rgh + { + solver GAMG; + tolerance 1e-7; + relTol 0.01; + + smoother DICGaussSeidel; + + } + + "(U|h|k|epsilon|omega)" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-8; + relTol 0.1; + } +} + +PIMPLE +{ + momentumPredictor no; + nNonOrthogonalCorrectors 0; + pRefCell 0; + pRefValue 0; + + residualControl + { + p_rgh 1e-4; + U 1e-4; + h 1e-4; + + // possibly check turbulence fields + "(k|epsilon|omega)" 1e-3; + } +} + +relaxationFactors +{ + fields + { + rho 1.0; + p_rgh 0.7; + } + equations + { + U 0.3; + h 0.3; + "(k|epsilon|omega)" 0.7; + } +} + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/sample b/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/sample new file mode 100644 index 00000000..fdfd92cc --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/buoyantCavity/system/sample @@ -0,0 +1,99 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 10 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + location "system"; + object sample; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type sets; +libs ("libsampling.so"); + +interpolationScheme cellPointFace; + +setFormat raw; + +sets +( + y0.1 + { + type lineFace; + axis x; + start (-1 0.218 0); + end (1 0.218 0); + } + y0.2 + { + type lineFace; + axis x; + start (-1 0.436 0); + end (1 0.436 0); + } + y0.3 + { + type lineFace; + axis x; + start (-1 0.654 0); + end (1 0.654 0); + } + y0.4 + { + type lineFace; + axis x; + start (-1 0.872 0); + end (1 0.872 0); + } + y0.5 + { + type lineFace; + axis x; + start (-1 1.09 0); + end (1 1.09 0); + } + y0.6 + { + type lineFace; + axis x; + start (-1 1.308 0); + end (1 1.308 0); + } + y0.7 + { + type lineFace; + axis x; + start (-1 1.526 0); + end (1 1.526 0); + } + y0.8 + { + type lineFace; + axis x; + start (-1 1.744 0); + end (1 1.744 0); + } + y0.9 + { + type lineFace; + axis x; + start (-1 1.962 0); + end (1 1.962 0); + } +); + +fields +( + T + U +); + + +// ************************************************************************* // diff --git a/test/tests/restart/restart_from_transient_serial/first.i b/test/tests/restart/restart_from_transient_serial/first.i new file mode 100644 index 00000000..d4bda11d --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/first.i @@ -0,0 +1,63 @@ +[Mesh] + type = FoamMesh + foam_args = '-case buoyantCavity' + foam_patch = 'topAndBottom frontAndBack' + dim=2 +[] + +[Variables] + [Dummy] + initial_condition = 3.14 + [] +[] + +[AuxVariables] + [T] + initial_condition = 111 + family = MONOMIAL + order = CONSTANT + [] + + [foam_T] + initial_condition = 999 + family = MONOMIAL + order = CONSTANT + [] + + [foam_hf] + initial_condition = -999 + family = MONOMIAL + order = CONSTANT + [] +[] + +[Problem] + type=BuoyantFoamProblem + temp = T + foam_temp = foam_T + foam_heat_flux = foam_hf + # restart_file_base = restart_from_transient_out_cp/LATEST +[] + +[Executioner] + type = Transient + start_time = 0 + end_time = 2 + dt = 0.25 + solve_type = 'PJFNK' + petsc_options_iname = '-pc_type -pc_hypre_type' + petsc_options_value = 'hypre boomeramg' + + [TimeStepper] + type = FoamTimeStepper + [] +[] + +[Outputs] + # [out] + # type = Checkpoint + # time_step_interval = 3 + # [] + exodus = true + checkpoint = true +[] diff --git a/test/tests/restart/restart_from_transient_serial/gold/first_out.e b/test/tests/restart/restart_from_transient_serial/gold/first_out.e new file mode 100644 index 0000000000000000000000000000000000000000..be227e8a212b101c0c375ca57b0307873a09fa4c GIT binary patch literal 136068 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%0DDKUD)iCmCHW=z?i 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 literal 0 HcmV?d00001 diff --git a/test/tests/restart/restart_from_transient_serial/second.i b/test/tests/restart/restart_from_transient_serial/second.i new file mode 100644 index 00000000..698edd60 --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/second.i @@ -0,0 +1,48 @@ +[Mesh] + type = FoamMesh + foam_args = '-case buoyantCavity' + foam_patch = 'topAndBottom frontAndBack' + dim=2 +[] + +[Variables] + [Dummy] + [] +[] + +[AuxVariables] + [T] + [] + + [foam_T] + [] + + [foam_hf] + [] +[] + +[Problem] + type = FoamProblem + temp = T + foam_temp = foam_T + foam_heat_flux = foam_hf + restart_file_base = first_out_cp/LATEST +[] + +[Executioner] + type = Transient + start_time = 1 + end_time = 2 + dt = 0.25 + solve_type = 'PJFNK' + petsc_options_iname = '-pc_type -pc_hypre_type' + petsc_options_value = 'hypre boomeramg' + + [TimeStepper] + type = FoamTimeStepper + [] +[] + +[Outputs] + exodus = true +[] diff --git a/test/tests/restart/restart_from_transient_serial/tests b/test/tests/restart/restart_from_transient_serial/tests new file mode 100644 index 00000000..5c4b878b --- /dev/null +++ b/test/tests/restart/restart_from_transient_serial/tests @@ -0,0 +1,26 @@ +[Tests] + [restart_from_transient_serial] + # Test that we can create a checkpoint in 'first.i' and restart from that + # checkpoint in 'second.i'. + # The final reference mesh was generated by running the solve for the full + # 2 seconds, whereas each input file in this test runs one second. + [setup] + type = RunCommand + command = '(cd buoyantCavity && ./Allclean && blockMesh)' + [] + [first] + type = Exodiff + prereq = restart_from_transient_serial/setup + input = first.i + exodiff = first_out.e + delete_output_before_running = true + [] + [restart] + type = Exodiff + prereq = restart_from_transient_serial/first + input = second.i + cli_args = '--recover first_out_cp/LATEST' + exodiff = second_out.e + [] + [] +[] From 570b49e2d58562bb55bf8d6b2f8bf9815ae2197a Mon Sep 17 00:00:00 2001 From: Harry Saunders Date: Wed, 25 Sep 2024 12:51:06 +0100 Subject: [PATCH 3/4] Implement crude backup/restore functionality --- include/base/FoamInterface.h | 9 +++- include/base/FoamProblem.h | 10 ++++ include/base/hippoApp.h | 3 ++ src/base/FoamInterface.C | 12 +++++ src/base/FoamProblem.C | 24 +++++++++ src/base/hippoApp.C | 96 ++++++++++++++++++++++++++++++++++++ 6 files changed, 152 insertions(+), 2 deletions(-) diff --git a/include/base/FoamInterface.h b/include/base/FoamInterface.h index 2ac56f28..15410643 100644 --- a/include/base/FoamInterface.h +++ b/include/base/FoamInterface.h @@ -2,9 +2,12 @@ #include -#include -#include +#include #include +#include +#include + +namespace fs = std::filesystem; /* * In theory the class through which all calls to the OpenFOAM "environment" are made @@ -78,6 +81,8 @@ class FoamInterface Foam::Time & getRuntime(); Foam::argList & getArglist(); Foam::fvMesh & getMesh(); + fs::path currentTimePath() const; + void readTime(const std::string & path); void write(); }; } diff --git a/include/base/FoamProblem.h b/include/base/FoamProblem.h index f0413f5a..f06fc5ac 100644 --- a/include/base/FoamProblem.h +++ b/include/base/FoamProblem.h @@ -30,6 +30,16 @@ class FoamProblem : public ExternalProblem virtual FoamMesh const & mesh() const override { return *_foam_mesh; } virtual FoamMesh & mesh() override { return *_foam_mesh; } + /** + * Save the current state of the OpenFOAM solve. + */ + void saveState(); + + /** + * Load the saved state of the OpenFOAM solve. + */ + void loadState(); + protected: FoamMesh * _foam_mesh = nullptr; Hippo::FoamInterface * _interface = nullptr; diff --git a/include/base/hippoApp.h b/include/base/hippoApp.h index 3cbd74ff..4e232f8d 100644 --- a/include/base/hippoApp.h +++ b/include/base/hippoApp.h @@ -21,4 +21,7 @@ class hippoApp : public MooseApp static void registerApps(); static void registerAll(Factory & f, ActionFactory & af, Syntax & s); + + void preBackup() override; + void postRestore(const bool /* for_restart */) override; }; diff --git a/src/base/FoamInterface.C b/src/base/FoamInterface.C index 71db9dea..4c47abff 100644 --- a/src/base/FoamInterface.C +++ b/src/base/FoamInterface.C @@ -134,6 +134,18 @@ FoamInterface::getArglist() return _impl->_args.args; } +fs::path +FoamInterface::currentTimePath() const +{ + return fs::path(_impl->_runtime.timePath()); +} + +void +FoamInterface::readTime(const std::string & path) +{ + getRuntime().read(); +} + void FoamInterface::write() { diff --git a/src/base/FoamProblem.C b/src/base/FoamProblem.C index 9bcbc0e2..8ea7d42b 100644 --- a/src/base/FoamProblem.C +++ b/src/base/FoamProblem.C @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -101,6 +102,29 @@ FoamProblem::externalSolve() { } +void +FoamProblem::saveState() +{ + _interface->write(); + _backup_foam_timestep_dir = _interface->currentTimePath().string(); + printf("saveState() -> %s", _backup_foam_timestep_dir.c_str()); +} + +void +FoamProblem::loadState() +{ + if (_backup_foam_timestep_dir.empty()) + { + mooseError("Cannot load OpenFOAM state: the backup state path is not set."); + } + if (!fs::is_directory(_backup_foam_timestep_dir)) + { + mooseError("Cannot load OpenFOAM state: the backup state path does not exist."); + } + printf("loadState() -> %s", _backup_foam_timestep_dir.c_str()); + _interface->readTime(_backup_foam_timestep_dir); +} + InputParameters BuoyantFoamProblem::validParams() { diff --git a/src/base/hippoApp.C b/src/base/hippoApp.C index 7f6741cb..b8d090a6 100644 --- a/src/base/hippoApp.C +++ b/src/base/hippoApp.C @@ -1,10 +1,16 @@ #include "hippoApp.h" +#include "FoamProblem.h" #include #include #include #include +#include +#include + +namespace fs = std::filesystem; + InputParameters hippoApp::validParams() { @@ -39,6 +45,96 @@ hippoApp::registerApps() registerApp(hippoApp); } +void +hippoApp::preBackup() +{ + auto problem = reinterpret_cast(&feProblem()); + if (!problem) + { + mooseError("FoamProblem must be used with a Hippo App"); + } + printf("preBackup()\n"); + problem->saveState(); + + // auto problem = reinterpret_cast(&feProblem()); + // if (!problem) + // { + // mooseError("FoamProblem must be used with a Hippo App"); + // } + // auto * foam_interface = problem->mesh().getFoamInterface(); + // foam_interface->write(); + + // // std::string temp_dir = std::getenv("TMP"); + // // if (temp_dir.empty()) + // // { + // // temp_dir = "/tmp"; + // // } + + // auto backup_dir = fs::path("./backup"); + // if (!fs::is_directory(backup_dir)) + // { + // fs::create_directory(backup_dir); + // } + // auto time_path = foam_interface->currentTimePath(); + // auto backup_path = backup_dir / time_path.filename(); + // printf("backup %s -> %s\n", time_path.c_str(), backup_path.c_str()); + // fs::copy( + // time_path, backup_path, fs::copy_options::overwrite_existing | + // fs::copy_options::recursive); + + // // auto tid = parameters().get("_tid"); + // // THREAD_ID tid = processor_id(); + // // auto * app = + // // reinterpret_cast(AppFactory::instance().registeredObjects().at("hippoApp").get()); + // // std::vector vol_scalar_fields; + // // for (const auto & obj_name : app->feProblem()) + + // // _restartable_data[tid].addData(std::move(foam_data)); + // // printf("tid=%u\n", tid); + // // printf("_restartable_data.size()=%lu\n", _restartable_data.size()); + + // // // TODO: look at 'readCheckpoint' and 'writeCheckpoint' in precice adapter. + // // // OR: + // // // _interface->getMesh().writeObject( + // // // IOstream::streamFormat fmt, IOstream::versionNumber ver, IOstream::compressionType cmp, ) + // // } +} + +void +hippoApp::postRestore(const bool for_restart) +{ + auto problem = reinterpret_cast(&feProblem()); + if (!problem) + { + mooseError("FoamProblem must be used with a Hippo App"); + } + printf("postRestore()\n"); + problem->loadState(); + + // auto problem = reinterpret_cast(&feProblem()); + // if (!problem) + // { + // mooseError("FoamProblem must be used with a Hippo App"); + // } + // auto * foam_interface = problem->mesh().getFoamInterface(); + + // auto time_path = foam_interface->currentTimePath(); + // auto backup_dir = fs::path("./backup"); + // auto backup_path = backup_dir / time_path.filename(); + // if (!fs::is_directory(backup_path)) + // { + // return; + // } + // printf("restoring %s -> %s\n", backup_path.c_str(), time_path.c_str()); + // fs::copy( + // backup_path, time_path, fs::copy_options::overwrite_existing | + // fs::copy_options::recursive); + // foam_interface->readTime(""); + // // std::vector _; + // // foam_interface->getWallHeatFlux(_, 0); +} + /*************************************************************************************************** *********************** Dynamic Library Entry Points - DO NOT MODIFY ****************************** **************************************************************************************************/ From 375e5283c505344c1703f6312a59ff24126aa1b7 Mon Sep 17 00:00:00 2001 From: Harry Saunders Date: Mon, 7 Oct 2024 15:59:18 +0100 Subject: [PATCH 4/4] --wip-- [skip ci] --- include/base/hippoApp.h | 9 ---- src/base/hippoApp.C | 3 -- .../restart_from_transient_serial/first.i | 7 +-- .../gold/first_out.e | Bin 136068 -> 0 bytes .../gold/second_out.e | Bin 197348 -> 0 bytes .../restart_from_transient_serial/second.i | 48 ------------------ .../restart_from_transient_serial/tests | 15 ++++-- 7 files changed, 11 insertions(+), 71 deletions(-) delete mode 100644 test/tests/restart/restart_from_transient_serial/gold/first_out.e delete mode 100644 test/tests/restart/restart_from_transient_serial/gold/second_out.e delete mode 100644 test/tests/restart/restart_from_transient_serial/second.i diff --git a/include/base/hippoApp.h b/include/base/hippoApp.h index 4e232f8d..a6c0e2bc 100644 --- a/include/base/hippoApp.h +++ b/include/base/hippoApp.h @@ -1,12 +1,3 @@ -//* This file is part of the MOOSE framework -//* https://www.mooseframework.org -//* -//* All rights reserved, see COPYRIGHT for full restrictions -//* https://github.com/idaholab/moose/blob/master/COPYRIGHT -//* -//* Licensed under LGPL 2.1, please see LICENSE for details -//* https://www.gnu.org/licenses/lgpl-2.1.html - #pragma once #include diff --git a/src/base/hippoApp.C b/src/base/hippoApp.C index b8d090a6..bc15b3cb 100644 --- a/src/base/hippoApp.C +++ b/src/base/hippoApp.C @@ -7,9 +7,6 @@ #include #include -#include - -namespace fs = std::filesystem; InputParameters hippoApp::validParams() diff --git a/test/tests/restart/restart_from_transient_serial/first.i b/test/tests/restart/restart_from_transient_serial/first.i index d4bda11d..2b4b3eb8 100644 --- a/test/tests/restart/restart_from_transient_serial/first.i +++ b/test/tests/restart/restart_from_transient_serial/first.i @@ -2,7 +2,7 @@ type = FoamMesh foam_args = '-case buoyantCavity' foam_patch = 'topAndBottom frontAndBack' - dim=2 + dim = 2 [] [Variables] @@ -36,7 +36,6 @@ temp = T foam_temp = foam_T foam_heat_flux = foam_hf - # restart_file_base = restart_from_transient_out_cp/LATEST [] [Executioner] @@ -54,10 +53,6 @@ [] [Outputs] - # [out] - # type = Checkpoint - # time_step_interval = 3 - # [] exodus = true checkpoint = true [] diff --git a/test/tests/restart/restart_from_transient_serial/gold/first_out.e b/test/tests/restart/restart_from_transient_serial/gold/first_out.e deleted file mode 100644 index be227e8a212b101c0c375ca57b0307873a09fa4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136068 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%0DDKUD)iCmCHW=z?i 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 diff --git a/test/tests/restart/restart_from_transient_serial/second.i b/test/tests/restart/restart_from_transient_serial/second.i deleted file mode 100644 index 698edd60..00000000 --- a/test/tests/restart/restart_from_transient_serial/second.i +++ /dev/null @@ -1,48 +0,0 @@ -[Mesh] - type = FoamMesh - foam_args = '-case buoyantCavity' - foam_patch = 'topAndBottom frontAndBack' - dim=2 -[] - -[Variables] - [Dummy] - [] -[] - -[AuxVariables] - [T] - [] - - [foam_T] - [] - - [foam_hf] - [] -[] - -[Problem] - type = FoamProblem - temp = T - foam_temp = foam_T - foam_heat_flux = foam_hf - restart_file_base = first_out_cp/LATEST -[] - -[Executioner] - type = Transient - start_time = 1 - end_time = 2 - dt = 0.25 - solve_type = 'PJFNK' - petsc_options_iname = '-pc_type -pc_hypre_type' - petsc_options_value = 'hypre boomeramg' - - [TimeStepper] - type = FoamTimeStepper - [] -[] - -[Outputs] - exodus = true -[] diff --git a/test/tests/restart/restart_from_transient_serial/tests b/test/tests/restart/restart_from_transient_serial/tests index 5c4b878b..c6610a40 100644 --- a/test/tests/restart/restart_from_transient_serial/tests +++ b/test/tests/restart/restart_from_transient_serial/tests @@ -1,9 +1,8 @@ [Tests] [restart_from_transient_serial] - # Test that we can create a checkpoint in 'first.i' and restart from that - # checkpoint in 'second.i'. + # Test that we can create a checkpoint and restart from it. # The final reference mesh was generated by running the solve for the full - # 2 seconds, whereas each input file in this test runs one second. + # 2 seconds, whereas each stage of this tests runs 1 second. [setup] type = RunCommand command = '(cd buoyantCavity && ./Allclean && blockMesh)' @@ -12,15 +11,21 @@ type = Exodiff prereq = restart_from_transient_serial/setup input = first.i + cli_args = '--half-transient' exodiff = first_out.e + gold_dir = gold_1 delete_output_before_running = true [] + # TODO: issue here is that the output file is frozen at the midway point. + # The file doesn't seem to be being written to after the restart. [restart] type = Exodiff prereq = restart_from_transient_serial/first - input = second.i + input = first.i cli_args = '--recover first_out_cp/LATEST' - exodiff = second_out.e + exodiff = first_out.e + gold_dir = gold_2 + delete_output_before_running = false [] [] []