|
|
@ -55,16 +55,20 @@ Idea for a Foam-formated file for Verify |
|
|
|
// so on. |
|
|
|
// so on. |
|
|
|
|
|
|
|
|
|
|
|
runs |
|
|
|
runs |
|
|
|
( |
|
|
|
( |
|
|
|
// This is a quick test: The example is reduced to just 2 timesteps, and |
|
|
|
// This is a quick test: The example is reduced to just 2 timesteps, and |
|
|
|
// we check the resulting file against its MD5 hash. |
|
|
|
// we check the resulting file against its MD5 hash. |
|
|
|
quick { |
|
|
|
quick { |
|
|
|
steps 2; |
|
|
|
steps 2; |
|
|
|
// Any other key name that it is not reserved ("steps", "continuations") |
|
|
|
// Any other key name that it is not reserved ("steps", "continuations") |
|
|
|
// represents a file to be compared. |
|
|
|
// represents a file to be compared. |
|
|
|
"postProcessing/2/qux" { |
|
|
|
checks |
|
|
|
md5 "123123"; |
|
|
|
( |
|
|
|
} |
|
|
|
{ |
|
|
|
|
|
|
|
result "postProcessing/2/qux"; |
|
|
|
|
|
|
|
md5 "123123"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// In case the MD5 fails, the case is run again, but this time reduced to |
|
|
|
// In case the MD5 fails, the case is run again, but this time reduced to |
|
|
@ -72,6 +76,15 @@ runs |
|
|
|
// listed files to make one follow the timesteps of the previous. The run |
|
|
|
// listed files to make one follow the timesteps of the previous. The run |
|
|
|
// will fail if relative or absolute differences are above 0. |
|
|
|
// will fail if relative or absolute differences are above 0. |
|
|
|
short { |
|
|
|
short { |
|
|
|
|
|
|
|
// ********** Maybe future improvements ********** |
|
|
|
|
|
|
|
execute previousFails; // previousFails, previousPass, always |
|
|
|
|
|
|
|
workspace reuse; // restart (default), reuse |
|
|
|
|
|
|
|
changes { |
|
|
|
|
|
|
|
"foamFile" { |
|
|
|
|
|
|
|
"system/controlDict/timestep" 0.2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// *********************************************** |
|
|
|
steps 10; |
|
|
|
steps 10; |
|
|
|
// This makes the continuations explicit, by specificing files that |
|
|
|
// This makes the continuations explicit, by specificing files that |
|
|
|
// form a single run. |
|
|
|
// form a single run. |
|
|
@ -80,17 +93,22 @@ runs |
|
|
|
"system/caseSetupDict.continuation1" |
|
|
|
"system/caseSetupDict.continuation1" |
|
|
|
"system/caseSetupDict.continuation2" |
|
|
|
"system/caseSetupDict.continuation2" |
|
|
|
); |
|
|
|
); |
|
|
|
"postProcessing/10/foo" { |
|
|
|
checks |
|
|
|
reference "verification/10/foo"; |
|
|
|
( |
|
|
|
variables "phi" "Tmean"; |
|
|
|
{ |
|
|
|
// No tolerances mean "it will fail if the values are not the same". |
|
|
|
result "postProcessing/10/foo"; |
|
|
|
} |
|
|
|
reference "verification/10/foo"; |
|
|
|
// This is a completely different file from the above, with different |
|
|
|
variables "phi" "Tmean"; |
|
|
|
// keys |
|
|
|
// No tolerances mean "it will fail if the values are |
|
|
|
"postProcessing/10/bar" { |
|
|
|
// not the same as they are in the reference". |
|
|
|
reference "verification/10/bar"; |
|
|
|
} |
|
|
|
variables "Tmin" "Tmax"; |
|
|
|
{ |
|
|
|
} |
|
|
|
// A different file, with different variables. |
|
|
|
|
|
|
|
result "postProcessing/10/bar"; |
|
|
|
|
|
|
|
reference "verification/10/bar"; |
|
|
|
|
|
|
|
variables "Tmin" "Tmax"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// If in 10 timestemps the values do not match the reference file, a 100 |
|
|
|
// If in 10 timestemps the values do not match the reference file, a 100 |
|
|
@ -102,41 +120,48 @@ runs |
|
|
|
// This file only appears in the 100 runs, so we can't have a global |
|
|
|
// This file only appears in the 100 runs, so we can't have a global |
|
|
|
// list of files not attached to steps (although it is the same "foo" |
|
|
|
// list of files not attached to steps (although it is the same "foo" |
|
|
|
// from 10 steps). |
|
|
|
// from 10 steps). |
|
|
|
"postProcessing/100/foo" { |
|
|
|
checks |
|
|
|
reference "verification/100/foo"; |
|
|
|
( |
|
|
|
variables "phi" "Tmean"; |
|
|
|
{ |
|
|
|
} |
|
|
|
result "postProcessing/100/foo"; |
|
|
|
"postProcessing/100/bar" { |
|
|
|
reference "verification/100/foo"; |
|
|
|
reference "verification/100/bar"; |
|
|
|
variables "phi" "Tmean"; |
|
|
|
variables "Tmin" "Tmax"; |
|
|
|
} |
|
|
|
} |
|
|
|
{ |
|
|
|
|
|
|
|
result "postProcessing/100/bar"; |
|
|
|
|
|
|
|
reference "verification/100/bar"; |
|
|
|
|
|
|
|
variables "Tmin" "Tmax"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// If the 100 timesteps fails, then we run the example a 4th time, this |
|
|
|
// If the 100 timesteps fails, then we run the example a 4th time, this |
|
|
|
// time without any reductions (the "steps" property is not set in this |
|
|
|
// time without any reductions (the "steps" property is not set in this |
|
|
|
// run). There are no continations either. |
|
|
|
// run). There are no continations either. |
|
|
|
"run till completion" { |
|
|
|
"run till completion" { |
|
|
|
// With no steps, there is no reduction. |
|
|
|
checks |
|
|
|
"postProcessing/20000/baz" { |
|
|
|
( |
|
|
|
reference "verification/20000/baz"; |
|
|
|
{ |
|
|
|
variables "integral"; |
|
|
|
result "postProcessing/20000/baz"; |
|
|
|
absolute 20; |
|
|
|
reference "verification/20000/baz"; |
|
|
|
relative 20; |
|
|
|
variables "integral"; |
|
|
|
// no operator means OR, so example will fail if the |
|
|
|
absolute 20; |
|
|
|
// absolute different is above 20 OR the relative |
|
|
|
relative 20; |
|
|
|
// difference is above 20. |
|
|
|
// no operator means OR, so example will fail if the |
|
|
|
} |
|
|
|
// absolute different is above 20 OR the relative |
|
|
|
|
|
|
|
// difference is above 20. |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
); |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
// This is used for filtering. |
|
|
|
// This is used for filtering. |
|
|
|
tags ("GIB" "AES" "compressible"); |
|
|
|
tags "GIB" "AES" "compressible"; |
|
|
|
|
|
|
|
|
|
|
|
// Only present if the example can't be run in some platform. |
|
|
|
// Only present if the example can't be run in some platform. |
|
|
|
unstable { |
|
|
|
unstable true; |
|
|
|
operatingSystem windows; // valid values: "windows", "linux", "all" |
|
|
|
operatingSystem windows; // valid values: "windows", "linux", "all" |
|
|
|
reason "Allrun uses Python, and Python isn't usually available on Windows"; |
|
|
|
reason "Allrun uses Python, and Python isn't usually available on Windows"; |
|
|
|
} |
|
|
|
|
|
|
|
``` |
|
|
|
``` |
|
|
|
Pest: |
|
|
|
Pest: |
|
|
|
```pest |
|
|
|
```pest |
|
|
@ -369,4 +394,21 @@ loop { |
|
|
|
- Inside each of those, expand the case (default won't expand, but still....) |
|
|
|
- Inside each of those, expand the case (default won't expand, but still....) |
|
|
|
- We could say it is not possible to add a new verificationDict into variations, but I do like the idea of having a different content for it. |
|
|
|
- We could say it is not possible to add a new verificationDict into variations, but I do like the idea of having a different content for it. |
|
|
|
- Ok, ignoring this for now 'cause it fucks up my thinking. |
|
|
|
- Ok, ignoring this for now 'cause it fucks up my thinking. |
|
|
|
- Expand by run on default, send variations down the pipeline |
|
|
|
- Expand by run on default, send variations down the pipeline\ |
|
|
|
|
|
|
|
# Named dicts |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
list ( name1 { inner 1; } name2 { inner 2; } ) |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
Dictionary({ |
|
|
|
|
|
|
|
"list": [ |
|
|
|
|
|
|
|
List( |
|
|
|
|
|
|
|
[Value("name1"), Dictionary({"inner": [Value("1")]}), |
|
|
|
|
|
|
|
Value("name2"), Dictionary({"inner": [Value("2")]}) |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
``` |