cape.pycart.dataBook: pyCart data book module¶
This module contains functions for reading and processing forces, moments, and
other statistics from cases in a trajectory. Data books are usually created by
using the cape.pycart.cntl.Cntl.ReadDataBook() function.
# Read Cart3D control instance cntl = pyCart.Cntl("pyCart.json") # Read the data book cntl.ReadDataBook() # Get a handle DB = cntl.DataBook # Read a line load component DB.ReadLineLoad("CORE_LL") DBL = DB.LineLoads["CORE_LL"] # Read a target DB.ReadTarget("t97") DBT = DB.Targets["t97"]
Data books can be created without an overall control structure, but it requires
creating a run matrix object using cape.pycart.runmatrix.RunMatrix, so it
is a more involved process.
Data book modules are also invoked during update and reporting command-line calls.
$ pycart --aero $ pycart --ll $ pycart --report
The available components mirror those described on the template data book
modules, cape.cfdx.dataBook, cape.cfdx.lineLoad, and
cape.cfdx.pointSensor. However, some data book types may not be implemented
for all CFD solvers.
- See Also:
- class cape.pycart.dataBook.CaseFM(comp)¶
Cart3D case force and moment history
This class contains methods for reading data about an the history of an individual component for a single case. It reads the file
$comp.datwhere comp is the name of the component. From this file it determines which coefficients are recorded automatically. If some of the comment lines from the Cart3D output file have been deleted, it guesses at the column definitions based on the number of columns.- Call:
>>> FM = pyCart.dataBook.CaseFM(comp)
- Inputs:
- comp:
str Name of component to process
- comp:
- Outputs:
- FM:
cape.pycart.aero.FM Instance of the force and moment class
- FM.coeffs:
list[str] List of coefficients
- FM.i:
numpy.ndarrayshape=(0,) List of iteration numbers
- FM.CA:
numpy.ndarrayshape=(0,) Axial force coefficient at each iteration
- FM.CY:
numpy.ndarrayshape=(0,) Lateral force coefficient at each iteration
- FM.CN:
numpy.ndarrayshape=(0,) Normal force coefficient at each iteration
- FM.CLL:
numpy.ndarrayshape=(0,) Rolling moment coefficient at each iteration
- FM.CLM:
numpy.ndarrayshape=(0,) Pitching moment coefficient at each iteration
- FM.CLN:
numpy.ndarrayshape=(0,) Yaw moment coefficient at each iteration
- FM:
- Versions:
2014-11-12
@ddalle: Starter version2014-12-21
@ddalle: Copied from previous aero.FM2015-10-16
@ddalle: Self-contained version
- MakeEmpty()¶
Create empty CaseFM instance
- Call:
>>> FM.MakeEmpty()
- Inputs:
- FM:
cape.pycart.dataBook.CaseFM Case force/moment history
- FM:
- Versions:
2015-10-16
@ddalle: First version
- ProcessColumnNames(lines)¶
Determine column names
- Call:
>>> FM.ProcessColumnNames(lines)
- Inputs:
- FM:
cape.pycart.dataBook.CaseFM Case force/moment history
- lines:
list[str] List of lines from the data file
- FM:
- Versions:
2015-10-16
@ddalle: First version
- Write(fname)¶
Write contents to force/moment file
- Call:
>>> FM.Write(fname)
- Inputs:
- FM:
cape.pycart.dataBook.CaseFM Instance of the force and moment class
- fname:
str Name of file to write.
- FM:
- Versions:
2015-03-02
@ddalle: First version
- class cape.pycart.dataBook.CaseResid¶
Iterative history class
This class provides an interface to residuals, CPU time, and similar data for a given run directory
- Call:
>>> hist = pyCart.dataBook.CaseResid()
- Outputs:
- hist:
cape.pycart.dataBook.CaseResid Instance of the run history class
- hist:
- Versions:
2014-11-12
@ddalle: Starter version
- class cape.pycart.dataBook.DBComp(comp, cntl, targ=None, check=False, lock=False, **kw)¶
Individual component data book
- Call:
>>> DBi = DBComp(comp, x, opts, targ=None)
- Inputs:
- comp:
str Name of the component
- x:
cape.pycart.runmatrix.RunMatrix RunMatrix for processing variable types
- opts:
cape.pycart.options.Options Global pyCart options instance
- targ: {
None} |str If used, read a duplicate data book as a target named targ
- comp:
- Outputs:
- DBi:
cape.pycart.dataBook.DBComp An individual component data book
- DBi:
- Versions:
2014-12-20
@ddalle: Started
- class cape.pycart.dataBook.DBTarget(targ, x, opts, RootDir=None)¶
Class to handle data from data book target files. There are more constraints on target files than the files that data book creates, and raw data books created by pyCart are not valid target files.
- Call:
>>> DBT = pyCart.dataBook.DBTarget(targ, x, opts)
- Inputs:
- targ:
cape.pycart.options.DataBook.DBTarget Instance of a target source options interface
- x:
cape.pycart.runmatrix.RunMatrix Run matrix interface
- opts:
cape.pycart.options.Options Global pyCart options instance to determine which fields are useful
- targ:
- Outputs:
- DBT:
cape.pycart.dataBook.DBTarget Instance of the pyCart data book target data carrier
- DBT:
- Versions:
2014-12-20
@ddalle: Started
- class cape.pycart.dataBook.DBTriqFM(x, opts, comp, **kw)¶
Force and moment component extracted from surface triangulation
- Call:
>>> DBF = DBTriqFM(x, opts, comp, RootDir=None)
- Inputs:
- x:
cape.runmatrix.RunMatrix RunMatrix/run matrix interface
- opts:
cape.options.Options Options interface
- comp:
str Name of TriqFM component
- RootDir: {
None} |st Root directory for the configuration
- x:
- Outputs:
- DBF:
cape.pycart.dataBook.DBTriqFM Instance of TriqFM data book
- DBF:
- Versions:
2017-03-29
@ddalle: First version
- GetTriqFile()¶
Get most recent
triqfile and its associated iterations- Call:
>>> qtriq, ftriq, n, i0, i1 = DBF.GetTriqFile()
- Inputs:
- DBF:
cape.pycart.dataBook.DBTriqFM Instance of TriqFM data book
- DBF:
- Outputs:
- qtriq: {
False} Whether or not to convert file from other format
- ftriq:
str Name of
triqfile- n:
int Number of iterations included
- i0:
int First iteration in the averaging
- i1:
int Last iteration in the averaging
- qtriq: {
- Versions:
2016-12-19
@ddalle: Added to the module
- class cape.pycart.dataBook.DataBook(cntl, RootDir=None, targ=None, **kw)¶
This class provides an interface to the data book for a given CFD run matrix.
- Call:
>>> DB = pyCart.dataBook.DataBook(x, opts)
- Inputs:
- x:
cape.pycart.runmatrix.RunMatrix The current pyCart trajectory (i.e. run matrix)
- opts:
cape.pycart.options.Options Global pyCart options instance
- x:
- Outputs:
- DB:
cape.pycart.dataBook.DataBook Instance of the pyCart data book class
- DB:
- Versions:
2014-12-20
@ddalle: Started2015-01-03
@ddalle: First version2015-10-16
@ddalle: Subclassed tocape.cfdx.dataBook.DataBook
- Delete(I)¶
Delete list of cases from data book
- Call:
>>> DB.Delete(I)
- Inputs:
- DB:
cape.pycart.dataBook.DataBook Instance of the pyCart data book class
- I:
list[int] List of trajectory indices or update all cases in trajectory
- DB:
- Versions:
2015-03-13
@ddalle: First version
- GetCurrentIter()¶
Determine iteration number of current folder
- Call:
>>> n = DB.GetCurrentIter()
- Inputs:
- DB:
cape.pycart.dataBook.DataBook Instance of data book class
- DB:
- Outputs:
- n:
int|None Iteration number
- n:
- Versions:
2017-04-13
@ddalle: First separate version
- ReadCaseFM(comp)¶
Read a
CaseFMobject- Call:
>>> FM = DB.ReadCaseFM(comp)
- Inputs:
- DB:
cape.pycart.dataBook.DataBook Instance of data book class
- comp:
str Name of component
- DB:
- Outputs:
- FM:
pyFun.dataBook.CaseFM Residual history class
- FM:
- Versions:
2017-04-13
@ddalle: First separate version
- ReadCaseResid()¶
Read a
CaseResidobject- Call:
>>> H = DB.ReadCaseResid()
- Inputs:
- DB:
cape.pycart.dataBook.DataBook Instance of data book class
- DB:
- Outputs:
- H:
pyFun.dataBook.CaseResid Residual history class
- H:
- Versions:
2017-04-13
@ddalle: First separate version
- ReadDBComp(comp, check=False, lock=False)¶
Initialize data book for one component
- Call:
>>> DB.ReadDBComp(comp, check=False, lock=False)
- Inputs:
- DB:
cape.pycart.dataBook.DataBook Instance of the pyCart data book class
- comp:
str Name of component
- check:
True| {False} Whether or not to check LOCK status
- lock:
True| {False} If
True, wait if the LOCK file exists
- DB:
- Versions:
2015-11-10
@ddalle: First version2016-06-27
@ddalle: Added targ keyword2017-04-13
@ddalle: Self-contained and renamed
- ReadLineLoad(comp, conf=None, targ=None)¶
Read a line load data book target if it is not already present
- Call:
>>> DB.ReadLineLoad(comp)
- Inputs:
- DB:
pycart.dataBook.DataBook Instance of the pycart data book class
- comp:
str Line load component group
- conf: {
"None"} |cape.config.Config Surface configuration interface
- targ: {
"None"} |str Sets alternate directory to read from, defaults to DB.targ
- DB:
- Versions:
2015-09-16
@ddalle: First version2016-06-27
@ddalle: Added targ
- ReadPointSensor(name, pts=None)¶
Read a point sensor group if it is not already present
- Call:
>>> DB.ReadPointSensor(name)
- Inputs:
- DB:
cape.pycart.dataBook.DataBook Instance of the pyCart data book class
- name:
str Name of point sensor group
- DB:
- Versions:
2015-12-04
@ddalle: First version
- ReadTarget(targ)¶
Read a data book target if it is not already present
- Call:
>>> DB.ReadTarget(targ)
- Inputs:
- DB:
cape.pycart.dataBook.DataBook Instance of the Cape data book class
- targ:
str Target name
- DB:
- Versions:
2015-09-16
@ddalle: First version
- ReadTriqFM(comp, check=False, lock=False)¶
Read a TriqFM data book if not already present
- Call:
>>> DB.ReadTriqFM(comp, check=False, lock=False)
- Inputs:
- DB:
cape.pycart.dataBook.DataBook Instance of pyCart data book class
- comp:
str Name of TriqFM component
- check:
True| {False} Whether or not to check LOCK status
- lock:
True| {False} If
True, wait if the LOCK file exists
- DB:
- Versions:
2017-03-29
@ddalle: First version
- UpdatePointSensor(name, I=None)¶
Update a point sensor group data book for a list of cases
- Call:
>>> DB.UpdatePointSensorGroup(name) >>> DB.UpdatePointSensorGroup(name, I)
- Inputs:
- DB:
cape.pycart.dataBook.DataBook Instance of the pyCart data book class
- I:
list[int] orNone List of trajectory indices or update all cases in trajectory
- DB:
- Versions:
2015-10-04
@ddalle: First version
- cape.pycart.dataBook.get_xlim(ha, pad=0.05)¶
Calculate appropriate x-limits to include all lines in a plot
Plotted objects in the classes
matplotlib.lines.Lines2Dare checked.- Call:
>>> xmin, xmax = get_xlim(ha, pad=0.05)
- Inputs:
- ha:
matplotlib.axes.AxesSubplot Axis handle
- pad:
float Extra padding to min and max values to plot.
- ha:
- Outputs:
- xmin:
float Minimum x coordinate including padding
- xmax:
float Maximum x coordinate including padding
- xmin:
- Versions:
2015-07-06
@ddalle: First version
- cape.pycart.dataBook.get_ylim(ha, pad=0.05)¶
Calculate appropriate y-limits to include all lines in a plot
Plotted objects in the classes
matplotlib.lines.Lines2Dandmatplotlib.collections.PolyCollectionare checked.- Call:
>>> ymin, ymax = get_ylim(ha, pad=0.05)
- Inputs:
- ha:
matplotlib.axes.AxesSubplot Axis handle
- pad:
float Extra padding to min and max values to plot.
- ha:
- Outputs:
- ymin:
float Minimum y coordinate including padding
- ymax:
float Maximum y coordinate including padding
- ymin:
- Versions:
2015-07-06
@ddalle: First version