SpECTRE
v2024.05.11

The basic instructions for getting up and running with a standalone CCE using external data are:
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 20, and filter lmax (Filtering.FilterLMax
) of 18; that may run a bit slow for basic tests, but this value yields the best precisiontoruntime ratio for a typical BBH system. Note that 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 finitedifference 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
as .5 for 100M and perhaps even lower yet for nearer extraction.InitializeJ
in the example file uses ConformalFactor
which has been found to perform better than the other schemes implemented so far. Other schemes for InitializeJ
can be found in namespace Cce::InitializeJ. Some of these are:ZeroNonSmooth
: Make J
vanishNoIncomingRadiation
: Make \(\Psi_0 = 0\); this does not actually lead to no incoming radiation, since \(\Psi_0\) and \(\Psi_4\) both include incoming and outgoing radiation.InverseCubic
: Ansatz where \(J = A/r + B/r^3\)ConformalFactor
: Try to make initial time coordinate as inertial as possible at \(\mathscr{I}^+\).*.h5
files required as an input_file
(and also needed in the .yaml
file) will need to be obtained from an SXS member who has completed a relevant SpEC
run.Once you have the reduction data output file from a successful CCE run, you can confirm the integrity of the h5 file and its contents by running
For the reduction file produced by a successful run, the output of the h5ls
should resemble
h5ls
looked like this The Strain
represents the asymptotic transversetraceless contribution to the metric scaled by the Bondi radius (to give the asymptotically leading part), the News
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 BondiSachs radius to retrieve the asymptotically leading contribution.
The EthInertialRetardedTime
is a diagnostic dataset that represents the angular derivative of the inertial retarded time, which determines the coordinate transformation that is performed at scri+.
If you'd like to visualize the output of a CCE run, we offer a CLI that will produce a plot of all of quantities except EthInertialRetardedTime
. To see how to use this cli, run
If you'd like to do something more complicated than just make a quick plot, you'll have to load in the output data yourself using h5py
or our spectre.IO.H5
bindings.
ccegroup Cce
to the CLI. This option is only for backwards compatibility with the old CCE output and is not supported for the current version of output. This options is deprecated and will be removed in the future.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 mvariesfastest format. That is,
Each dataset in the file must also have an attribute named "Legend" which is an ASCIIencoded nullterminated variablelength string. That is, the HDF5 type is:
This can be checked for a dataset by running
The second format is BondiSachs metric component data. This format is far more spaceefficient (by around a factor of 4), and SpECTRE provides a separate executable for converting to the BondiSachs worldtube format, ReduceCceWorldtube
. The ReduceCceWorldtube
executable should be run on a Cauchy metric worldtube file, and will produce a corresponding 'reduced' BondiSachs worldtube file. The basic commandline 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 spinweighted spherical harmonic modes, and the real (spinweight0) quantities omit the redundant negativem modes and imaginary parts of m=0 modes. The quantities that must be provided by the BondiSachs metric data format are:
Beta.dat
DrJ.dat
DuR.dat
H.dat
J.dat
Q.dat
R.dat
U.dat
W.dat
The BondiSachs data may also be used directly for CCE input data. To specify that the input type is in 'reduced' BondiSachs form, use:
Otherwise, for the Cauchy metric data format, use: