xx CCE Export

CCE Export

Deborah Ferguson

23 April 2025

Abstract

Outputs EinsteinToolkit data in a format which can be read by SpECTRE’s CCE code for obtaining waveform data at infinity.

1 Introduction

This thorn allows the user to output the metric, lapse, and shift data in a format which can be fed directly into SpECTRE’s Cauchy Characteristic Evolution code (documentation for that code here: https://spectre-code.org/tutorial_cce.html). Doing so enables the evolution of gravitational radiation to spatial and temporal infinity as well as the direct extraction of gravitational wave strain.

The format is an h5 file for each desired worldtube radius. Within this h5 file are datasets for the metric, lapse, shift, and their respective radial and time derivatives:

gxx.dat,xgxy.dat,xgxz.dat,xgyy.dat,xgyz.dat,xgzz.dat
Drgxx.dat,xDrgxy.dat,xDrgxz.dat,xDrgyy.dat,xDrgyz.dat,xDrgzz.dat
Dtgxx.dat,xDtgxy.dat,xDtgxz.dat,xDtgyy.dat,xDtgyz.dat,xDtgzz.dat
Shiftx.dat,xShifty.dat,xShiftz.dat
DrShiftx.dat,xDrShifty.dat,xDrShiftz.dat
DtShiftx.dat,xDtShifty.dat,xDtShiftz.dat
Lapse.dat
DrLapse.dat
DtLapse.dat

Each dataset is two dimensional with rows signifying timesteps and coluns containing the data decomposed into spin-weight 0 spherical harmonics. The first column denotes the time, and the remaining columns are the real and imaginary coefficients for the modes in m-changes-fastest order:

"time",x"Re(0,0)",x"Im(0,0)",x"Re(1,-1)",x"Im(1,-1)",x"Re(1,0)",x"Im(1,0)",
"Re(1,1)",x"Im(1,1)",x"Re(2,-2)",x"Im(2,-2)",x"Re(2,-1)",x"Im(2,-1)",x"Re(2,0)",
"Im(2,0)",x"Re(2,1)",x"Im(2,1)",x"Re(2,2)",x"Im(2,2)",x...

2 Numerical Implementation

To accomplish this, the metric, extrinsic curvature, lapse, shift, dtlapse, and dtshift are interpolated onto spheres of the desired radii using CCTK_InterpGridArrays. This interpolater can also return the cartesian derivatives which are then used to compute the radial derivatives for the metric, lapse, and shift.

The metric is computed from the extrinsic curvature, lapse, and shift as:

The metric, lapse, shift, and their radial and time derivatives are then decomposed using spin-weight 0 spherical harmonics. As described in the Multipole thorn, this allows us to separate out the angular dependence and represent a field as:

The coefficients are computed as

This thorn uses the same numerical implementation of spherical harmonic decomposition as the Multipole thorn using Simpson’s rule for the integration.

The data is then output into h5 files in the format specified above.

3 Using This Thorn

3.1 Obtaining This Thorn

This thorn can be obtained at https://github.com/deborahferguson/CCE_Export and is included as part of

the EinsteinToolkit.

3.2 Basic Usage

The user specifies how many radii they would like to extract at (nradii) and the value of each of those radii in M (radius[]). The user should also specify how often they want to output the data in iterations (outxevery). Optionally, the user can also provide a specific location to output the files (outxdir) as well as the desired number of iterations to preallocate in the h5 files (hdf5xchunkxsize).

3.3 Interaction With Other Thorns

The functionality of this thorn relies upon grid variables set up in ADMBase, specifically those in the groups metric, curv, lapse, shift, dtlapse, and dtshift. These grid variables must all be populated in order to use this thorn. Since some evolution codes do not write the time derivatives of the lapse and shift to these variables, those evolution codes are not compatible with this thorn.

3.4 Examples

CCE_Export::nradiixxxxxxx=x3
CCE_Export::radius[0]xxxx=x100.00
CCE_Export::radius[1]xxxx=x150.00
CCE_Export::radius[2]xxxx=x200.00
CCE_Export::out_everyxxxx=x32

3.5 Support and Feedback

If any issues arise, please create a ticket on the github (https://github.com/deborahferguson/CCE_Export/issues).

References

4 Parameters

11 basexfilexname10 Scope: private01  STRING

11 Description: Base file name for CCExExport’s files, will be appended by ’R’ and then the worldtube radius with 2 sig figs after the decimal

11  Range  10              01  Default: CCExExport
11 .+  10 A valid base file name

11

11 extension  10 Scope: private01  STRING

11 Description: Extension for CCExExtract’s files

11 Range 10 01 Default: h5
11 .+  10 A nonempty string

11 hdf5xchunkxsize10 Scope: private01  INT

11 Description: How many iterations to preallocate in extensible HDF5 datasets

11 Range 10 01 Default: 200
11 1:*  10 Any integer

11

11 nradii  10 Scope: private01  INT

11 Description: How many radii to export the data on

11 Range 10 01 Default: 1
11 0:100  10 number of radii

11

11 outxdir  10 Scope: private01  STRING

11 Description: Output directory for CCExExport’s files, overrides IO::outxdir

11 Range 10 01 Default: (none)
11 .+  10 A valid directory name
11 ˆ$  10 An empty string to choose the default from IO::outxdir

11

11 outxevery  10 Scope: private01  INT

11 Description: How often to output the metric data

11 Range 10 01 Default: 1
11               10 no output
11 1:*  10 output every x iterations

11

11 radius  10 Scope: private01  REAL

11 Description: Radii to export the metric data on

11 Range 10 01 Default: 0.0
11 0.0:*  10 Extraction radius

11

11 ioxoutxdir  10 Scope: shared from IO01STRING

11

5 Interfaces

General Implements: ccexexport

Inherits: admbase 6 Schedule This section lists all the variables which are assigned storage by thorn EinsteinAnalysis/CCExExport. Storage can either last for the duration of the run (Always means that if this thorn is activated storage will be assigned, Conditional means that if this thorn is activated storage will be assigned for the duration of the run if some condition is met), or can be turned on for the duration of a schedule function.

Storage NONE

Scheduled Functions

CCTKxANALYSIS x ccexexport x export metric data on sphere for cce x

11 x 11 Language: 11 c
11 x 11 Options: 11 global
11 x 11 Reads:  11 admbase::metric(everywhere)
11 x 11 x  11 admbase::curv(everywhere)
11 x 11 x  11 admbase::lapse(everywhere)
11 x 11 x  11 admbase::shift(everywhere)
11 x 11 x  11 admbase::dtlapse(everywhere)
11 x 11 x  11 admbase::dtshift(everywhere)
11 x 11 Type:  11 function