cape.pycart.case
: Case Control Module¶
cape.pycart.case
: Case Control Module¶
This module contains the important function case.run_flowCart()
,
which actually runs flowCart
or aero.csh
, along with the
utilities that support it.
For instance, it contains function to determine how many iterations have
been run, what the working folder is (e.g. .
, adapt00
, etc.),
and what command-line options to run.
It also contains Cart3D-specific versions of some of the generic methods
from cape.case
. All of the functions in that module are also
available here.
- class cape.pycart.case.CaseRunner(fdir=None)¶
- check_error()¶
Check iteration counts and residual change for most recent run
- Call:
>>> runner.check_error()
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- runner:
- Outputs:
- ierr:
int
Return code
- ierr:
- Versions:
2016-03-04
@ddalle
: v1.0 (CheckSuccess
)
- check_unsteady_history(fname='history.dat') bool ¶
Check if the current history ends with an unsteady iteration
- Call:
>>> q = runner.check_unsteady_history(fname='history.dat')
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- fname:
str
Name of file to read
- runner:
- Outputs:
- q:
True
|False
Whether the last iteration of fname has a ‘.’ in it
- q:
- Versions:
2014-12-17
@ddalle
: v1.0 (CheckUnsteadyHistory
)2023-07-10
@ddalle
: v1.1; rename, instance method
- finalize_files(j: int)¶
Clean up files names after running one cycle of phase j
- Call:
>>> runner.finalize_files(j)
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- j:
int
Phase number
- runner:
- Versions:
2016-03-04
@ddalle
: v1.0 (FinalizeFiles
)2023-07-10
@ddalle
: v1.1; rename, instance method
- get_check_resub_iter()¶
Get total iteration number of most recent check file
This is the sum of the most recent steady iteration number and unsteady iteration number.
- Call:
>>> n = self.get_check_resub_iter()
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- runner:
- Outputs:
- n:
int
Index of most recent check file
- n:
- Versions:
2014-11-28
@ddalle
: v1.0 (GetRestartIter
)2014-11-29
@ddalle
: v1.1 (GetCheckResubIter
)2023-07-10
@ddalle
: v1.2; rename, instance method
- get_current_resid()¶
Get the most recent iteration including unsaved progress
Iteration numbers from time-accurate restarts are corrected to match the global iteration numbering.
- Call:
>>> L1 = runner.get_current_resid()
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- runner:
- Outputs:
- L1:
float
Last L1 residual
- L1:
- Versions:
2015-01-02
@ddalle
: v1.0 (GetCurrentResid
)2023-07-10
@ddalle
: v1.1; rename, instance method
- get_first_resid()¶
Get the first iteration
- Call:
>>> L1 = GetFirstResid()
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- runner:
- Outputs:
- L1:
float
First L1 residual
- L1:
- Versions:
2015-07-22
@ddalle
: v1.0 (GetFirstResid
)2023-07-10
@ddalle
: v1.1; rename, instance method
- get_history_iter(fname='history.dat') float ¶
Read last iteration number from a
history.dat
file- Call:
>>> n = runner.get_history_iter(fname='history.dat')
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- fname: {
"history.dat"
} |str
Name of file to read
- runner:
- Outputs:
- n:
float
Last iteration number
- n:
- Versions:
2014-11-24
@ddalle
: v1.0 (GetHistoryIter
)2023-07-10
@ddalle
: v1.1; rename, instance method
- get_history_resid(fname='history.dat')¶
Get the last residual in a
history.dat
file- Call:
>>> L1 = runner.get_history_resid(fname='history.dat')
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- fname:
str
Name of file to read
- runner:
- Outputs:
- L1:
float
Last L1 residual
- L1:
- Versions:
2015-01-02
@ddalle
: v1.0 (GetHistoryResid
)2023-07-10
@ddalle
: v1.1; rename, instance method
- get_steady_iter()¶
Get iteration number of most recent steady check file
- Call:
>>> n = runner.get_steady_iter()
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- runner:
- Outputs:
- n:
int
Index of most recent check file
- n:
- Versions:
2014-10-02
@ddalle
: v1.0 (GetRestartIter
)2014-11-28
@ddalle
: v1.1 (GetSteadyIter
)2023-06-06
@ddalle
: v1.2; supportBEST/FLOW/
2023-07-10
@ddalle
: v2.3; rename, instance method
- get_unsteady_iter()¶
Get iteration number of most recent unsteady check file
- Call:
>>> n = runner.get_unsteady_iter()
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- runner:
- Outputs:
- n:
int
Index of most recent check file
- n:
- Versions:
2014-11-28
@ddalle
: v1.0 (GetUnsteadyIter
)2023-07-10
@ddalle
: v1.1; rename, instance method
- get_working_folder() str ¶
Get working folder,
.
,adapt??/
, oradapt??/FLOW/
This function must be called from the top level of a case.
- Call:
>>> fdir = runner.get_working_folder()
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- runner:
- Outputs:
- fdir:
str
Most recently used working folder with a history file
- fdir:
- Versions:
2014-11-24
@ddalle
: v1.0 (GetWorkingFolder
)2023-06-05
@ddalle
: v2.0; supportadapt??/FLOW/
2023-07-10
@ddalle
: v2.1; rename, instance method
- getx_iter()¶
Get the residual of the most recent iteration
- Call:
>>> n = runner.getx_iter()
- Outputs:
- n:
int
Most recent index written to
history.dat
- n:
- Versions:
2014-11-28
@ddalle
: v1.0 (GetCurrentIter
)2023-06-06
@ddalle
: v1.1; checkadapt??/FLOW/
2023-07-10
@ddalle
: v1.2; rename, instance method
- getx_restart_iter()¶
Get total iteration number of most recent check file
This is the sum of the most recent steady iteration and the most recent unsteady iteration.
- Call:
>>> n = runner.getx_restart_iter()
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- runner:
- Outputs:
- n:
int
Index of most recent check file
- n:
- Versions:
2014-11-28
@ddalle
: v1.0 (GetRestartIter
)2023-07-10
@ddalle
: v1.1; rename, instance method
- prepare_files(j: int)¶
Prepare file names appropriate to run phase i of Cart3D
- Call:
>>> runner.prepare_files(j)
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- j:
int
Phase number
- runner:
- Versions:
2016-03-04
@ddalle
: v1.0 (PrepareFiles
)2023-07-09
@ddalle
: v1.1; rename, instance method
- run_autoInputs(j: int)¶
Run
autoInputs
if necessary- Call:
>>> runner.run_autoInputs(j)
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- j:
int
Phase number
- runner:
- Versions:
2016-04-06
@ddalle
: v1.0 (CaseAutoInputs
)2023-07-09
@ddalle
: v2.0; rename, instance method
- run_cubes(j: int)¶
Run
cubes
andmgPrep
to create multigrid volume mesh- Call:
>>> runner.run_cubes(j)
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- j:
int
Phase number
- runner:
- Versions:
2016-04-06
@ddalle
: v1.0 (CaseCubes
)2023-07-09
@ddalle
: v2.0; rename, instance method
- run_phase(j: int)¶
Run one phase using appropriate commands
- Call:
>>> runner.run_phase(j)
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- j:
int
Phase number
- runner:
- Versions:
2016-03-04
@ddalle
: v1.0 (RunPhase
)2023-06-02
@ddalle
: v1.12023-07-09
@ddalle
: v1.2; rename, instance method
- run_phase_adaptive(j: int) int ¶
Run one phase using adaptive commands
- Call:
>>> ierr = runner.run_phase_adaptive(j)
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- j:
int
Phase number
- runner:
- Outputs:
- ierr:
int
Return code
- ierr:
- Versions:
2016-03-04
@ddalle
: v1.0 (RunAdaptive
)2023-07-09
@ddalle
: v1.1; rename; instance method
- run_phase_fixed(j: int) int ¶
Run
flowCart
the nominal way- Call:
>>> ierr = runner.run_phase_fixed(j)
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- j:
int
Phase number
- runner:
- Outputs:
- ierr:
int
Return code
- ierr:
- Versions:
2016-03-04
@ddalle
: v1.0 (RunFixed
)2023-07-09
@ddalle
: v1.1; rename, instance method
- run_phase_with_restarts(j)¶
Run
flowCart
a few iters at a time for averaging purposes- Call:
>>> RunWithRestarts(rc, i)
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- j:
int
Phase number
- runner:
- Outputs:
- ierr:
int
Return code
- ierr:
- Versions:
2016-03-04
@ddalle
: v1.0
- set_restart_iter(n=None, ntd=None)¶
Set a given check file as the restart point
- Call:
>>> runner.set_restart_iter(n=None, ntd=None)
- Inputs:
- runner:
CaseRunner
Controller to run one case of solver
- n: {
None
} |int
Restart iteration number, defaults to most recent available
- ntd: {
None
} |int
Unsteady iteration number
- runner:
- Versions:
2014-10-02
@ddalle
: v1.0 (SetRestartIter
)2014-11-28
@ddalle
: v1.1; support time-accurate2023-07-10
@ddalle
: v1.2; rename, instance method
- cape.pycart.case.GetTriqFile()¶
Get most recent
triq
file and its associated iterations- Call:
>>> ftriq, n, i0, i1 = GetTriqFile()
- Outputs:
- Versions:
2015-09-16
@ddalle
: v1.0- 2021-12-09
@ddalle
: v1.1 Check for
adapt??/
folder w/otriq
file
- 2021-12-09
2022-06-06
@ddalle
: v1.2; checkadapt??/FLOW/
- cape.pycart.case.LinkFromGlob(fname, fglb, isplit=-2, csplit='.')¶
Link the most recent file to a basic unmarked file name
The function will attempt to map numbered or adapted file names using the most recent iteration or adaptation. The following gives examples of links that could be created using
Components.i.plt
for fname andComponents.[0-9]*.plt
for fglb.Components.i.plt
(no link)Components.01000.plt
–>Components.i.plt
adapt03/Components.i.plt
–>Components.i.plt
- Call:
>>> LinkFromGlob(fname, fglb, isplit=-2, csplit='.')
- Inputs:
- Versions:
2015-11-20
@ddalle
: v1.0
- cape.pycart.case.LinkPLT()¶
Link the most recent Tecplot files to fixed file names
Uses file names
Components.i.plt
andcutPlanes.plt
- Call:
>>> LinkPLT()
- Versions:
2015-03-10
@ddalle
: v1.02015-11-20
@ddalle
: Delegate work and support*.dat
files
- cape.pycart.case.run_flowCart()¶
Setup and run
flowCart
,mpi_flowCart
command- Call:
>>> run_flowCart()
- Versions:
2014-10-02
@ddalle
: v1.02014-12-18
@ddalle
: v1.1; AddedTarAdapt()
2021-10-08
@ddalle
: v1.2; removed args2023-07-08
@ddalle
: v2.0; use CaseRunner