The basic instructions for getting up and running with a stand-alone CCE using external data are:
At this point (provided the build succeeds) you should have the executable bin/CharacteristicExtract
in the build directory; You can now run it using an input file to provide options. The input file tests/InputFiles/Cce/CharacteristicExtract.yaml
from the spectre source tree can help you get started with writing your input file. There are a few important notes there:
Cce.LMax
) of 12, and filter lmax (Filtering.FilterLMax
) of 10; that'll run pretty fast but might be a little low for full precision. lmax 16, filter 14 should be pretty good, and typically precision doesn't improve above lmax 24, filter 22 (be sure to update the filter as you update lmax – it should generally be around 2 lower than the maximum l to reduce possible aliasing).EndTime
option and the executable will figure it out from the worldtube file.ScriOutputDensity
adds extra interpolation points to the output, which is useful for finite-difference derivatives on the output data, but otherwise it'll just unnecessarily inflate the output files, so if you don't need the extra points, best just set it to 1.TargetStepSize
, to around .5 at 100M and lower yet for nearer extraction.InitializeJ
in the example file uses InverseCubic
which is a pretty primitive scheme, but early tests indicate that it gives the best results for most systems. If initial data is a concern, you can also try replacing the InverseCubic
entry with: which are probably pretty good choices for those parameters, and the RequireConvergence: true
will cause the iterative solve in this version to error out if it doesn't find a good frame.
An example of an appropriate submission command for slurm systems is:
CCE doesn't currently scale to more than 4 cores, so those slurm options are best.
Once you have the volume data output file from a successful CCE run, you can confirm the integrity of the h5 file and its contents by running
For the volume file produced by a successful run, the output of the h5ls
should resemble
The Strain.dat
represents the asymptotic transverse-traceless contribution to the metric scaled by the Bondi radius (to give the asymptotically leading part), the News.dat
represents the first derivative of the strain, and each of the Psi...
datasets represent the Weyl scalars, each scaled by the appropriate factor of the Bondi-Sachs radius to retrieve the asymptotically leading contribution.
The EthInertialRetardedTime.dat
is a diagnostic dataset that represents the angular derivative of the inertial retarded time, which determines the coordinate transformation that is performed at scri+.
The following python script will load data from a successful CCE run and construct a plot of all of the physical waveform data.
The worldtube data must be constructed as spheres of constant coordinate radius, and (for the time being) written to a filename of the format ...CceRXXXX.h5
, where the XXXX
is to be replaced by the integer for which the extraction radius is equal to XXXX
M. For instance, a 100M extraction should have filename ...CceR0100.h5
. This scheme of labeling files with the extraction radius is constructed for compatibility with SpEC worldtube data.
There are two possible formats of the input data, one based on the Cauchy metric at finite radius, and one based on Bondi data. The metric data format must be provided as spherical harmonic modes with the following datasets:
gxx.dat
, gxy.dat
, gxz.dat
, gyy.dat
, gyz.dat
, gzz.dat
Drgxx.dat
, Drgxy.dat
, Drgxz.dat
, Drgyy.dat
, Drgyz.dat
, Drgzz.dat
Dtgxx.dat
, Dtgxy.dat
, Dtgxz.dat
, Dtgyy.dat
, Dtgyz.dat
, Dtgzz.dat
Shiftx.dat
, Shifty.dat
, Shiftz.dat
DrShiftx.dat
, DrShifty.dat
, DrShiftz.dat
DtShiftx.dat
, DtShifty.dat
, DtShiftz.dat
Lapse.dat
DrLapse.dat
DtLapse.dat
In this format, each row must start with the time stamp, and the remaining values are the complex modes in m-varies-fastest format.
The second format is Bondi-Sachs metric component data. This format is far more space-efficient (by around a factor of 4), and SpECTRE provides a separate executable for converting to the Bondi-Sachs worldtube format, ReduceCceWorldtube
. The ReduceCceWorldtube
executable should be run on a Cauchy metric worldtube file, and will produce a corresponding 'reduced' Bondi-Sachs worldtube file. The basic command-line arguments for the executable are:
The argument --lmax_factor
determines the factor by which the resolution at which the boundary computation that is run will exceed the resolution of the input and output files. Empirically, we have found that lmax_factor
of 3 is sufficient to achieve roundoff precision in all boundary data we have attempted, and an lmax_factor
of 2 is usually sufficient to vastly exceed the precision of the simulation that provided the boundary dataset.
The format is similar to the metric components, except in spin-weighted spherical harmonic modes, and the real (spin-weight-0) quantities omit the redundant negative-m modes and imaginary parts of m=0 modes. The quantities that must be provided by the Bondi-Sachs metric data format are:
Beta.dat
DrJ.dat
DuR.dat
H.dat
J.dat
Q.dat
R.dat
U.dat
W.dat
The Bondi-Sachs data may also be used directly for CCE input data. To specify that the input type is in 'reduced' Bondi-Sachs form, use:
Otherwise, for the Cauchy metric data format, use: