Releases: nasa/cape
CAPE 2.0.3
New Features
-
CAPE now includes PreShellCmds to go alongise PostShellCmds. This is an
option in the"RunControl"
section that allows the user to run one or
more BASH (or whatever your shell of choice is) commands prior to running
the primary CFD solver executables. -
There is an exciting new feature called WorkerShellCmds in the
"RunControl"
section. It allows you to specify 0 or more BASH commands
that you run every WorkerSleepTime seconds (default=10.0
) while your
case is running. It has working clean-up after the main executable is
finished, allowing up to"WorkerTimeout"
(default=600.0
) seconds
for the last instance of the worker to complete. -
These run hooks also have Python function versions, in the form of options
PrePythonFuncs, PostPythonFuncs, and WorkerPythonFuncs. If these are
defined as a simple string, CAPE will import any modules implied by the
function name and then call that function with no arguments. However, users
may also specify more details for Python functions by defining the function
in adict
.
"RunControl": {
"WorkerPythonFuncs": [
"mymod.mufunc",
{
"name": "clean",
"type": "runner"
},
{
"name": "mymod.otherfunc",
"args": [
"$runner",
"$mach"
]
}
]
}
-
Users of FUN3D and Kestrel can now link the mesh file into folders instead
of copying it. Set"LinkMesh"
totrue
in the"Mesh"
section. -
cape.pyfun
in particular changes how it uses XML or JSON configuration
files (which is specified in the"Config"
>"File"
setting). In
previous versions of CAPE, the face labels or component ID numbers in that
file had to match your actual grid, which had to match your.mapbc
file. Now CAPE only uses the text names in the ConfigFile, and it's ok to
include components that aren't actually present in your grid. If your case
worked as expected before, it will still work now, but for new cases it
might be much easier to set up. The (new) recommended process is to use a
ConfigJSON file and only specify a"Tree"
section.
Behavior Changes
- Binary files storing iterative histories are no longer saved automatically
- Calculation of job status, especially for FUN3D, is much faster. This
change should not cause any functional changes for users. - Python modules used to define hooks are no longer universally imported
duringCntl
instantiation. Modules are imported dynamically if needed
to execute a hook. The"Modules"
setting is still present in the JSON
file but has no effect.
Bugs Fixed
- Fix bug in area-weighted node normal calculation,
cape.trifile.TriBase.GetNodeNormals()
. - The
refine/three
capability with FUN3D now works more reliably.
CAPE 2.0.2
New Features
-
New capabilities in nProc, the number of MPI processes to use. Instead of
requiring a positive integer, there are now four ways to interpret this
setting:- positive integer:
"nProc": 128
will continue to work in the
obvious way that it always has - negative integer:
"nProc": -2
on a node with 128 cores will mean
using 126 cores - fraction:
"nProc": 0.5
will mean using 50% (rounded down), so
mpiexec -np 64
on a 128-core node - blank:
"nProc": null
(or leaving out entirely) means use all the
MPI procs available
- positive integer:
Behavior Changes
- Don't write Archive settings to each case folder
Bugs Fixed
All of the tutorials at
https://github.com/nasa-ddalle/
now work properly with this version. Most of the updates were to the tutorials
themselves, but some CAPE bugs were fixed, too.
CAPE 2.0.1
New Features
- GPU options in RunControl section of options
CaseRunner
system calls now allow piping lines of a file to STDIN
Behavior Changes
- Archiving uses
tar -u
if using the standard.tar
archive format - Fix
-e
option to execute commands in case folders, and allow it to run
regular system commands (not just local scripts)
Bugs Fixed
- Add several missing options to RunMatrix definitions
- Fix zone type when reading Cart3D
.triq
files into Tecplot format - Improve handling of different-sized iterative histories in
CaseFM
- Add PyYAML and colorama to install requirements
CAPE 2.0.0
New Features
-
Added a command
cape --1to2
to help update Python files written against
the CAPE 1.2 API to the newer module names mentioned below. -
The main input file can now be a YAML file in addition to the standard
JSON. However, there is no "include" statement like theJSONFile()
directive supported in CAPE JSON files. -
New command-line interface. The CLI supports the commands that would have
worked for CAPE 1 but also support a new method that allows the user to be
more explicit about the primary purpose of the command. For example$ pyfun --re "m1.2" --report
is the same as
$ pyfun report --re "m1.2"
The new CLI also implements checks so that misspelled or unrecognized
options will result in an error instead of just ignoring those options. -
Created a new executable
cape-tec
that takes a Tecplot(R) layout file
as input and exports a PNG from that layout. -
Rewritten interface to RunControl > Archive. Users may now prescribe
"only keep the most recent file of this set" of multiple patterns in a
single line. For example ..."Archive": { "SearchMethod": "regex", "clean": { "PreDeleteFiles": { "pyfun[0-9]+_([a-z][a-z0-9_-]+)_timestep[0-9]+\\.plt": 1 } } }
This will delete most Tecplot
.plt
files but keep the most recent1
matches. The new feature is that it will collect all the files that match
this regular expression but divide them into separate lists for all the
unique values of the regular expression group (the part inside
parentheses). So if you have the following filespyfun00_plane-y0_timestep1000.plt
pyfun00_tec_boundary_timestep1000.plt
pyfun01_plane-y0_timestep2000.plt
pyfun01_tec_boundary_timestep2000.plt
pyfun02_plane-y0_timestep3000.plt
pyfun02_plane-y0_timestep4000.plt
pyfun02_tec_boundary_timestep3000.plt
pyfun02_tec_boundary_timestep4000.plt
Then it would delete most of these files but only keep
pyfun02_plane-y0_timestep4000.plt
pyfun02_tec_boundary_timestep4000.plt
This would not have been possible in CAPE 1; users would need to provide
two separate instructions. -
A RunMatrix key with the type
"translation"
can now use two named
points as the"Vector"
. This means that the direction that a component
is translated can be affected by prior RunMatrix keys
Behavior Changes
- Many modules have been renamed, including renaming the
case
modules to
the less-confusing namecasecntl
. In addition, the maincntl
module
has been moved into thecape.cfdx
folder.
Bugs Fixed
- Determination of number of available MPI ranks on Slurm jobs
CAPE 1.2.2
New Features
- A RunMatrix key with the type
"translation"
can now use two named
points as the"Vector"
. This means that the direction that a component
is translated can be affected by prior RunMatrix keys
Bugs Fixed
- Determination of number of available MPI ranks on Slurm jobs
v1.2.1
CAPE 1.2.1
New Features
- Each case now generates logs, which are helpful for debugging or just
understanding the sequence of actions CAPE takes. The two log files within
each case arecape/cape-main.log
andcape/cape-verbose.log
). - PBS/Slurm job names are now longer (32 chars instead of 15), and the length
is configurable (RunMatrix > MaxJobNameLength).
Behavior Changes
- PBS/Slurm job IDs are now saved as the full string instead of just the
job number (often something like123456.pbspl1
)
Bugs Fixed
- Better support of newer
aero.csh
script for Cart3D
CAPE 1.2.0
CAPE 1.2 is a smaller change than CAPE 1.1 and focuses on improving the quality
of CAPE's underlying code. Many modules have been de-linted, and some of the
older modules have been rewritten. Test coverage is also significantly
improved.
New Features
- The iterative histories (both
CaseFM
andCaseResid
) now create a
cache file so that CAPE can read them in much faster after the first read.
It also creates a uniform file format for users who might be interested in
saving iterative histories. - Add
TSVTecDatFile
class to read Tecplot-style column-data into
DataKit
. See
https://nasa.github.io/cape-doc/1.2/api/attdb/ftypes/tecdatfile.html - Add a
--incremental
option (or set RunControl ▸ StartNextPhase to
False
) option to run one phase at a time. See
https://nasa.github.io/cape-doc/1.2/common/json/RunControl.html for the
StartNextPhase option and/or
https://nasa.github.io/cape-doc/1.2/bin/pyfun.html for--incremental
.
Behavior Changes
-
The iterative history modules,
CaseFM
andCaseResid
, are now
subclasses ofDataKit
. Among other things, this means that what used to
befm.CN
is nowfm["CN"]
. This is a major improvement to making
those classes extensible for histories of things other than forces &
moments. -
The
cape.filecntl.filecntl
module, which is critical to how CAPE
reads and modifies CFD input files, was rewritten and tested to 100%
coverage. -
Rename some RunControl options to more understandable
- Resubmit ➝ ResubmitNextPhase
- Continue ➝ opposite of ResubmitSamePhase
(See https://nasa.github.io/cape-doc/1.2/common/json/RunControl.html)
CAPE 1.1.1.post2
Release 1.1.1.post2
Bugs Fixed
- Add (back) default
"MuFormat"
for coefficient table subfigures, which
was causing tables full of the text "None" in some cases - Fix
nmlfile
when saving a long string in an existing array - Fix default formatting of
user
andtag
run matrix keys in
conditions table subfigures
CAPE 1.1.1.post1
Release 1.1.1.post1
That's a weird-looking version number...
This post-release fixes some issues that the testing suite did not catch
regarding the previous CAPE 1.1 releases.
Bugs Fixed
- The
TriRotate
andTriTranslate
run matrix keys now work properly
again; they were not getting noticed as the correct key type in previous
1.1 releases. - Using a
list
inside a@map
dict
now works with phase numbers in
cape.optdict
- Fixes to flow initializations for FUN3D for new
nmlfile
Fortran
namelist manipulation module - The
cape.nmlfile
namelist module now supports N-dimensional arrays,
whereas theset_opt()
method didn't support this before.
CAPE 1.2.0-alpha1
Release 1.2.0 (preliminary)
CAPE 1.2 is a smaller change than CAPE 1.1 and focuses on improving the quality
of CAPE's underlying code. Many modules have been de-linted, and some of the
older modules have been rewritten. Test coverage is also signiticantly
improved.
Behavior Changes
- The iterative history modules,
CaseFM
andCaseResid
, are now
subclasses ofDataKit
. Among other things, this means that what used to
befm.CN
is nowfm["CN"]
. This is a major improvement to making
those classes extensible for histories of things other than forces &
moments. - The
cape.filecntl.filecntl
module, which is critical to how CAPE
reads and modifies CFD input files, was rewritten and tested to 100%
coverage.
Bugs Fixed
- The documentation now builds without warnings.