cape.pyover.databook: DataBook module for OVERFLOW

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.pyover.cntl.Cntl.ReadDataBook() function.

# Read OVERFLOW control instance
cntl = pyOver.Cntl("pyOver.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.pyover.runmatrix.RunMatrix, so it is a more involved process.

Data book modules are also invoked during update and reporting command-line calls.

$ pyfun --aero
$ pyfun --ll
$ pyfun --triqfm
$ pyfun --report
See Also:
class cape.pyover.databook.CaseFM(proj: str, comp: str, **kw)

Force and moment iterative histories

This class contains methods for reading data about an the history of an individual component for a single casecntl. It reads the Tecplot file $proj_fm_$comp.dat where proj is the lower-case root project name and comp is the name of the component. From this file it determines which coefficients are recorded automatically.

Call:
>>> fm = CaseFM(proj, comp)
Inputs:
proj: str

Root name of the project

comp: str

Name of component to process

Outputs:
fm: CaseFM

Force and moment iterative history instance

get_filelist() list

Get ordered list of files to read to build iterative history

Call:
>>> filelist = h.get_filelist()
Inputs:
h: CaseData

Single-case iterative history instance

Outputs:
filelist: list[str]

List of files to read

Versions:
  • 2024-01-24 @ddalle: v1.0

read_fomoco_meta(fname: str, comp: str)

Get basic stats about an OVERFLOW fomoco file

Call:
>>> ic, nc, ni = fm.GetFomocoInfo(fname, comp)
Inputs:
fm: CaseFM

Force and moment iterative history

fname: str

Name of file to query

comp: str

Name of component to find

Outputs:
ic: int | None

Index of component in the list of components

nc: int | None

Number of components

ni: int

Number of iterations

Versions:
  • 2016-02-03 @ddalle: v1.0 (GetFomocoInfo)

  • 2024-01-24 @ddalle: v1.1

readfile(fname: str) dict

Read a FOMOCO output file for one component

Call:
>>> db = fm.readfile(fname)
Inputs:
fm: CaseFM

Single-case force & moment iterative history instance

fname: str

Name of file to read

Outputs:
db: basedata.BaseData

Data read from fname

Versions:
  • 2024-01-24 @ddalle: v1.0

class cape.pyover.databook.CaseResid(proj: str, **kw)

OVERFLOW iterative residual history class

This class provides an interface to residuals for a given case by reading the files resid.out, resid.tmp, run.resid, turb.out, species.out, etc.

Call:
>>> hist = CaseResid(proj)
Inputs:
proj: str

Project root name

Outputs:
hist: CaseResid

Instance of the residual histroy class

PlotL2(n=None, nFirst=None, nLast=None, **kw)

Plot the L2 residual

Call:
>>> h = hist.PlotL2(n=None, nFirst=None, nLast=None, **kw)
Inputs:
hist: cape.cfdx.databook.CaseResid

Instance of the DataBook residual history

n: int

Only show the last n iterations

nFirst: int

Plot starting at iteration nStart

nLast: int

Plot up to iteration nLast

FigWidth: float

Figure width

FigHeight: float

Figure height

Outputs:
h: dict

Dictionary of figure/plot handles

Versions:
  • 2014-11-12 @ddalle: v1.0

  • 2014-12-09 @ddalle: v1.1; move to AeroPlot

  • 2015-02-15 @ddalle: v1.2; move to databook.Aero

  • 2015-03-04 @ddalle: v1.3; add nStart and nLast

  • 2015-10-21 @ddalle: v1.4; use PlotResid()

get_filelist() list

Get ordered list of files to read to build iterative history

Call:
>>> filelist = h.get_filelist()
Inputs:
h: CaseData

Single-case iterative history instance

Outputs:
filelist: list[str]

List of files to read

Versions:
  • 2024-01-24 @ddalle: v1.0

readfile(fname: str) dict

Read an OVERFLOW residual history file; create global resid

Call:
>>> db = fm.readfile(fname)
Inputs:
fm: CaseFM

Single-case force & moment iterative history instance

fname: str

Name of file to read

Outputs:
db: basedata.BaseData

Data read from fname

Versions:
  • 2024-01-24 @ddalle: v1.0

cape.pyover.databook.ReadResidFirstIter(fname)

Read the first iteration number in an OVERFLOW residual file

Call:
>>> iIter = ReadResidFirstIter(fname)
>>> iIter = ReadResidFirstIter(f)
Inputs:
fname: str

Name of file to query

f: file

Already opened file handle to query

Outputs:
iIter: int

Iteration number from first line

Versions:
  • 2016-02-04 @ddalle: v1.0

  • 2023-01-14 @ddalle: v1.1; fix file type check for py3

cape.pyover.databook.ReadResidGrids(fname)

Get list of grids in an OVERFLOW residual file

Call:
>>> grids = ReadResidGrids(fname)
Inputs:
fname: str

Name of file to read

Outputs:
grids: list[str]

List of grids

Versions:
  • 2016-02-04 @ddalle: v1.0

cape.pyover.databook.ReadResidNGrids(fname)

Get number of grids from an OVERFLOW residual file

Call:
>>> nGrid = ReadResidNGrids(fname)
Inputs:
fname: str

Name of file to read

Outputs:
nGrid: int

Number of grids

Versions:
  • 2016-02-04 @ddalle: v1.0

  • 2024-01-24 @ddalle: v1.1; context manager

cape.pyover.databook.ReadResidNIter(fname)

Get number of iterations in an OVERFLOW residual file

Call:
>>> nIter = ReadResidNIter(fname)
Inputs:
fname: str

Name of file to query

Outputs:
nIter: int

Number of iterations

Versions:
  • 2016-02-04 @ddalle: v1.0

  • 2022-01-09 @ddalle: v1.1; Python 3 int division

cape.pyover.databook.read_fomoco_comps(fname: str)

Get list of components in an OVERFLOW fomoco file

Call:
>>> comps = read_fomoco_comps(fp)
Inputs:
fname: str

Name of the file to read

Outputs:
comps: list[str]

List of components

Versions:
  • 2016-02-03 @ddalle: v1.0 (ReadFomocoCOmps)

  • 2024-01-24 @ddalle: v1.1; handle instead of file name

cape.pyover.databook.read_fomoco_niter(fname, ncomp: int)

Get number of iterations in an OVERFLOW fomoco file

Call:
>>> nIter = read_fomoco_niter(fname)
>>> nIter = read_fomoco_niter(fname, nComp)
Inputs:
fname: str

Name of file to read

nComp: int | None

Number of components in each record

Outputs:
nIter: int

Number of iterations in the file

Versions:
  • 2016-02-03 @ddalle: v1.0

  • 2024-01-24 @ddalle: v1.1; require ncomp