## Dissipation

Date

### Abstract

Add $n$th-order Kreiss-Oliger dissipation to the right hand side of evolution equations. This thorn is intended for time evolutions that use MoL.

### 1 Physical System

For a description of Kreiss-Oliger artificial dissipation, see [1].

The additional dissipation terms appear as follows, for a general grid function $U$. Here, the tensor character of the field is irrelevant: each component of, say, ${\stackrel{~}{\gamma }}_{ij}$ is treated as an independent field for dissipation purposes.

$\begin{array}{rcll}{\partial }_{t}U& =& {\partial }_{t}U+{\left(-1\right)}^{\left(p+3\right)∕2}𝜖\frac{1}{{2}^{p+1}}\left({h}_{x}^{p}\frac{{\partial }^{\left(p+1\right)}}{\partial {x}^{\left(p+1\right)}}+{h}_{y}^{p}\frac{{\partial }^{\left(p+1\right)}}{\partial {y}^{\left(p+1\right)}}+{h}_{z}^{p}\frac{{\partial }^{\left(p+1\right)}}{\partial {z}^{\left(p+1\right)}}\right)U,& \text{}\\ & =& {\partial }_{t}U+{\left(-1\right)}^{\left(p+3\right)∕2}𝜖\frac{{h}^{p}}{{2}^{p+1}}\left(\frac{{\partial }^{\left(p+1\right)}}{\partial {x}^{\left(p+1\right)}}+\frac{{\partial }^{\left(p+1\right)}}{\partial {y}^{\left(p+1\right)}}+\frac{{\partial }^{\left(p+1\right)}}{\partial {z}^{\left(p+1\right)}}\right)U,& \text{}\end{array}$

where ${h}_{x}$, ${h}_{y}$, and ${h}_{z}$ are the local grid spacings in each Cartesian direction, and the second equality holds in the usual situation where the three are equal: ${h}_{x}={h}_{y}={h}_{z}=h$.

### 2 Implementation in Cactus

The Dissipation thorn’s dissipation rate is controlled by a small number of parameters:

• order is the order $p$ of the dissipation, implying the use of the $\left(p+1\right)$-st spatial derivatives;

• epsdiss is the overall dissipation strength $𝜖$.

Currently available values of order are $p\in \left\{1,3,5,7,9\right\}$. To apply dissipation at order $p$ requires that we have at least $\left(p+1\right)∕2$ ghostzones — $\left\{1,2,3,4,5\right\}$, respectively.

The list of fields to be dissipated is specified in the parameter vars. The thorn does not allow for individually tuned dissipation strengths for different fields. However, the dissipation strength $𝜖$ can be varied according to refinement level, using the parameter array epsdis_for_level, which overrides epsdiss if set.

The thorn also allows for enhanced dissipation within the apparent horizons, triggered by the boolean parameter extra_dissipation_in_horizons, and near the outer boundary, triggered by the boolean parameter extra_dissipation_at_outerbound. Both of these default to “no”.

#### 2.1 Acknowledgements

I thank Scott Hawley who wrote a very similar thorn HawleyThorns/Dissipation for evolutions that do not use MoL; this thorn here is modelled after his.

### References

[1]   H. Kreiss and J. Oliger, Methods for the Approximate Solution of Time Dependent Problems, vol. 10 of Global Atmospheric Research Programme (GARP): GARP Publication Series (GARP Publication, 1973)

### 3 Parameters

 ah_max_epsdis Scope: restricted REAL Description: maximal epsdis Range Default: -1.0 *:* <0 for ’off’, >=0 for maximal epsdis in horizon

 ah_radius_offset Scope: restricted REAL Description: Offset to the distance from the AH. Range Default: 0.0 *:* negative values shift inwards, positive outwards

 ah_slope Scope: restricted REAL Description: Slope inside AH Range Default: 0.2 *:* Slope from the outside value to the inside value in AHs

 epsdis Scope: restricted REAL Description: Dissipation strength Range Default: 0.2 *:* 0 for no dissipation. Unstable for epsdis<0 and epsdis>1/3

 epsdis_for_level Scope: restricted REAL Description: Alternate epsdis for a specific refinement level Range Default: -1.0 : Negative indicates use default

 extra_dissipation_at_outerbound Scope: restricted BOOLEAN Description: increase dissipation at outer boundary Default: no

 extra_dissipation_in_horizons Scope: restricted BOOLEAN Description: extra dissipation in horizons Default: no

 horizon_number Scope: restricted INT Description: horizon number for extra dissipation in horizons – AHFinderDirect number Range Default: -1 -1 do not use a horizon 1:* horizon number (from AHFinderDirect); starts from 1

 ob_slope Scope: restricted REAL Description: slope at outer boundary Range Default: 5 0:* increase dissipation

 order Scope: restricted INT Description: Dissipation order Range Default: 3 1 first order accurate dissipation (using a second derivative) 3 third order accurate dissipation (using a fourth derivative) 5 fifth order accurate dissipation (using a sixth derivative) 7 seventh order accurate dissipation (using an eighth derivative) 9 ninth order accurate dissipation (using a tenth derivative)

 outer_bound_npoints Scope: restricted INT Description: number of points in which dissipation should be increased Range Default: 3 0:* positive number

 outer_boundary_max_epsdis Scope: restricted REAL Description: maximal epsdis Range Default: -1.0 *:* <0 for ’off’, >=0 for maximal epsdis at the outer boundary

 surface_number Scope: restricted INT Description: horizon number for extra dissipation in horizons – SphericalSurface number Range Default: -1 -1 do not use a spherical surface 0:* surface number (from SphericalSurface); starts from 0

 update_ah_every Scope: restricted INT Description: how often to update the AH information for dissipation Range Default: 1 0:* positive iteration number

 use_dissipation_near_excision Scope: restricted BOOLEAN Description: Apply excision near the excision boundary (does not work for high orders) Default: yes

 vars Scope: restricted STRING Description: List of evolved grid functions that should have dissipation added Range Default: (none) .* must be a valid list of grid functions

 verbose Scope: restricted BOOLEAN Description: produce log output Default: no

### 4 Interfaces

Implements:

dissipation

Inherits:

grid

sphericalsurface

#### Grid Variables

##### 4.0.1 PRIVATE GROUPS
 Group Names Variable Names Details epsdisa_group compact 0 epsdisA description dissipation array for spatially different dissipation dimensions 3 distribution DEFAULT group type GF tags Checkpoint=”no” Prolongation=”none” timelevels 1 variable type REAL

### 5 Schedule

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

 Always: epsdisA_group

#### Scheduled Functions

CCTK_PARAMCHECK

dissipation_paramcheck

check dissipation parameters for consistency

 Language: c Type: function

CCTK_BASEGRID

dissipation_basegrid

ensure that there are enough ghost zones

 Language: c Type: function Writes: dissipation::epsdisa(everywhere)

CCTK_POSTSTEP

setup_epsdis

setup spatially varying dissipation

 After: sphericalsurface_hasbeenset Language: c Reads: grid::x grid::y grid::z spacemask::emask sphericalsurface::sf_info sphericalsurface::sf_origin sphericalsurface::sf_valid Sync: epsdisa_group Type: function Writes: dissipation::epsdisa(everywhere)

CCTK_POSTREGRIDINITIAL

setup_epsdis

setup spatially varying dissipation

CCTK_POSTREGRID

setup_epsdis

setup spatially varying dissipation