## SphericalHarmonicRecon

June 18 2009

### Abstract

This thorn is used to reconstruct the metric data saved by SphericalHarmonicDecomp. It also provides aliased functions that are used by NullSHRExtract to construct the boundary data for CCE.

### 2 Using and Filtering Cauchy data from SphericalHarmonicDecomp

The thorn SphericalHarmonicDecomp uses a least-squares fit of the metric data in some spherical shell to a set of spectral functions (Chebyshev in R and Ylm in angle). These data are dumped into files with names metric_obs_0_Decomp.h5, metric_obs_1_Decomp.h5, etc., where the 0,1,etc. refer to the spherical shell (several are allowed).

This thorn takes the data in one of these files and passes it to NullSHRExtract, which uses them to construct the null boundary data. Several utilities are provided in order to view and modify these data files. These include a program to filter the data via an FFT and calculate a smooth time derivative, which may be important in order to obtain accurate waveforms.

These utilities require the HDF5 and FFTW3 libraries and are compiled using the gamke CONFIGNAME-utils mechanism.

To filter the Cauchy data:

In general a simulation will be run over multiple jobs, each one producing an individual metric_decomp.h5 file. You will need to combine these files using hdf5_merge.

For example
hdf5\_merge Run1/metric_obs\_0\_Decomp.h5 \
Run2/metric\_obs\_0\_Decomp.h5 \
metric\_obs\_0\_Decomp.h5


Once the files are merged, you will need to find the last timestep using the ”findlast” command

./findlast  metric\_obs\_0\_Decomp.h5
8086: 4.010913e+02


Here 8086 is the last timestep, which corresponds to a time of 401.0913.

Next it is a good idea to examine the data in one of the higher modes you will use. In this case we will examine the n=1, l=4,m=4 mode of gxx (the 0 below corresponds to gxx, see the source)

./ascii\_output 8086 1 4 4 0 metric\_obs\_0\_Decomp.h5  > test\_out


We will use this data to ensure that only high-frequency junk is filtered. In this case it was found that the true signal frequency is smaller than 0.5 (omega). To be safe, we’ll set the maximum allowed frequency to 2.

./fftwfilter 8086 2 1 metric\_obs\_0\_Decomp.h5


Here the ”2” corresponds to the maximum frequency, while the ”1” corresponds to the damping length. Note that the maximum frequency is in units of 2*pi/(physical time), while the damping length is units of integer frequency. Choosing a large damping length can lead to suppression of the true signal.

The output file is metric_obs_0_Decomp_ft.h5, which contains the filtered metric data and the time derivatives of these data (which the original file did not contain). The filtered data can now be used in a Characteristic evolution.

In order to use the Cauchy extraction data in a subsequent Characteristic evolution, you need to know the timestep in the Cauchy data and the region in radius that the data cover. The program ”readmeta” will give you this region.

./readmeta metric\_obs\_0\_Decomp\_ft.h5
Run Parameters
... nn = 7
... na = 49
... Rin = 1.800000e+01
... Rout = 2.200000e+01


Here we see that the data covers the interval 18¡r¡22. In this case, we would choose an extraction radius of 20 and set the following parameters in the parfile

 #Extraction radius---------------
SphericalHarmonicRecon::r\_extract=20.0
NullSHRExtract::cr = 20.0
NullGrid::null\_rwt = 20.0

SphericalHarmonicRecon::time\_derivative\_in\_file = "yes"
SphericalHarmonicRecon::metric\_data\_filename = "metric\_obs\_0\_Decomp\_ft.h5"


Choosing a timestep for the characteristic evolution that is an integer multiple of the Cauchy dump times will remove time interpolation errors and can lead to smoother signals. To find these dump time, use the ”printtime” command. The syntax is ”printtime iteration file”

./printtime 1 metric\_obs\_0\_Decomp\_ft.h5
1: 4.960317e-02


In this case the dump times are separated by 0.04960317.

For complete example parfiles for both the initial Cauchy evolution, and subsequent null evolution, see SphericalHarmonicDecomp/par/ and SphericalHarmonicRecon/par/

#### 2.1 Parameters

SphericalHarmonicRecon::order order used in time interpolation /
differentiation. Options are 2 or 4.

SphericalHarmonicRecon::r_extract the radius of the worldtube. This
must be consistent with the setup of the null grid

SphericalHarmonicRecon::metric_data_filename filename for the cauchy
metric data

SphericalHarmonicRecon::time_derivative_in_file flag that indicates if
the  time derivative of the metric is in the cauchy file. The
time derivative may be generated via the fftwfilter program mentioned
above.

# the following parameters should only be used if the
# hdf5 was corrupted and extraction parameters
# are not recoverable. Of course, we should actually
# fix the extraction code so that this does not happen
BOOLEAN override_extraction_parameters "never set this"
{
} no

CCTK_INT override_spin "spin: never set this"
{
*:* :: "anything, but you probably want 0"
} 0

CCTK_INT override_nn "number of Chabyshev coefficients: never use this"
{
1:* :: "positive: must actualy match the extraction run"
} 1

CCTK_INT override_na "number of angular coefficients: never use this"
{
1:* :: "positive: must actualy match the extraction run"
} 1

CCTK_REAL override_Rin "inner radius of extraction zone: ..."
{
(0:* :: "positive"
} 1

CCTK_REAL override_Rout "outer radius of extraction zone: ..."
{
(0:* :: "positive"
} 1


### 7 Parameters

 metric_data_filename Scope: private STRING Description: filename for the cauchy metric data Range Default: metric_Decomp.h5 .* the Cauchy metric data

 order Scope: private INT Description: order used in time interpolation / differentiation Range Default: 4 2 two or four 4 two or four

 override_extraction_parameters Scope: private BOOLEAN Description: never set this Default: no

 override_na Scope: private INT Description: number of angular coefficition: never use this Range Default: 1 1:* positive: must actualy match the extraction run

 override_nn Scope: private INT Description: number of Chabyshev coefficition: never use this Range Default: 1 1:* positive: must actualy match the extraction run

 override_rin Scope: private REAL Description: inner radius of extraction zone: ... Range Default: 1 (0:* positive

 override_rout Scope: private REAL Description: outer radius of extraction zone: ... Range Default: 1 (0:* positive

 override_spin Scope: private INT Description: spin: never set this Range Default: (none) *:* anything, but you probably want 0

 r_extract Scope: private REAL Description: the radius of the worldtube Range Default: 50.0 (0:* positive

 time_derivative_in_file Scope: private BOOLEAN Description: is the time derivative of the metric in the cauchy file Default: no

### 8 Interfaces

#### General

Implements:

sphericalharmonicrecon

Provides:

GetCurrentExtractionCoefs to

GetExtractionParameters to

### 9 Schedule

This section lists all the variables which are assigned storage by thorn PITTNullCode/SphericalHarmonicRecon. 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.

NONE

#### Scheduled Functions

SphericalHarmonicReconRead

metricreconstruction

group for use by external thorns to use the metric

 After: sphericalharmonicrecon_readdata Before: sphericalharmonicrecon_poststep Type: group

SphericalHarmonicReconRead

sphericalharmonicrecon_readdata

read the world tube data and set the data flag to read

 Language: c Type: function

SphericalHarmonicReconRead

sphericalharmonicrecon_poststep

set data flag to unread

 After: sphericalharmonicrecon_readdata Language: c Options: global Type: function

CCTK_WRAGH

sphericalharmonicrecon_startup

startup

 Language: c Options: global Type: function