| ... | ... | @@ -168,7 +168,7 @@ possible values or a numeric range. |
|
|
|
|
|
|
|
- `_C.freq_ana`: interval in units of timesteps at which the user
|
|
|
|
interface function `analysisUser()` is called for user-specific
|
|
|
|
analysis tasks (cf. [Data analysis](3.3-Output-data#data-analysis)).
|
|
|
|
analysis tasks (cf. [Data analysis](3.5-Data-analysis)).
|
|
|
|
|
|
|
|
- `_C.freq_walltime`: interval in seconds at which the special
|
|
|
|
snapshot `NIRLAST.#` (cf. [Snapshot files](3.3-Output-data#snapshot-files)) is
|
| ... | ... | @@ -297,14 +297,14 @@ possible values or a numeric range. |
|
|
|
$u_o=u_i$ for the perpendicular magnetic field component.
|
|
|
|
|
|
|
|
- `R`: reflection-on-axis (only of relevance in cylindrical
|
|
|
|
geometry at the $y$-lower boundary (at $R=0$) or in
|
|
|
|
spherical geometry at the $y$-lower/upper boundaries (at
|
|
|
|
$\theta=0,\pi$)) -- reflecting conditions at the geometric
|
|
|
|
geometry at the $y$-lower boundary at $R=0$ or in
|
|
|
|
spherical geometry at the $y$-lower/upper boundaries at
|
|
|
|
$\theta =0,\pi $) -- reflecting conditions at the geometric
|
|
|
|
axis. Same as M except for the azimutal magnetic field
|
|
|
|
component for which $u_o=-u_i$.
|
|
|
|
|
|
|
|
- `C`: reflection-at-center (only of relevance in spherical
|
|
|
|
geometry at the $x$-lower boundary (at $r=0$)) -- reflecting
|
|
|
|
geometry at the $x$-lower boundary at $r=0$) -- reflecting
|
|
|
|
conditions at the coordinate center. Same as M except for
|
|
|
|
the non-radial magnetic field components for which
|
|
|
|
$u_o=-u_i$.
|
| ... | ... | @@ -316,9 +316,9 @@ possible values or a numeric range. |
|
|
|
(pseudo-vacuum condition) for the magnetic field.
|
|
|
|
|
|
|
|
- `F`: free boundary (only of relevance in cylindrical
|
|
|
|
geometry at the $y$-lower boundary (at $R=0$) or in
|
|
|
|
spherical geometry at the $y$-lower/upper boundaries (at
|
|
|
|
$\theta=0,\pi$) and $x$-lower boundary (at $r=0$)) --
|
|
|
|
geometry at the $y$-lower boundary at $R=0$ or in
|
|
|
|
spherical geometry at the $y$-lower/upper boundaries at
|
|
|
|
$\theta =0,\pi$ and $x$-lower boundary at $r=0$) --
|
|
|
|
'natural' boundary condition at the geometric axis. Boundary
|
|
|
|
values are not set explictely but are implicitly given by
|
|
|
|
$\pi$-shifted values. Note that when a `F`-type boundary
|
| ... | ... | @@ -400,13 +400,13 @@ possible values or a numeric range. |
|
|
|
value `_C.amr_exp>1` (`_C.amr_exp<1`) means that mesh refinement
|
|
|
|
becomes progressively more difficult (easier) with increasing
|
|
|
|
refinement level compared to the standard linear dependence
|
|
|
|
(`_C.amr_exp=1`) (cf. [AMR](#adaptive-mesh-refinement)).
|
|
|
|
(`_C.amr_exp=1`) (cf. [AMR](3.1-Code-basics#adaptive-mesh-refinement)).
|
|
|
|
|
|
|
|
- `05` (`_C.amr_Jeans`, `_C.amr_exp`, `_C.amr_Field`)
|
|
|
|
|
|
|
|
- `_C.amr_Jeans` (typical value: $0.2$): threshold in the
|
|
|
|
Jeans-length-based mesh refinement criterion (cf.
|
|
|
|
[AMR](#adaptive-mesh-refinement)). The value `_C.amr_Jeans`
|
|
|
|
[AMR](3.1-Code-basics#adaptive-mesh-refinement)). The value `_C.amr_Jeans`
|
|
|
|
defines the fraction of local Jeans length to be resolved by one
|
|
|
|
grid cell. A zero or negative value means that the
|
|
|
|
Jeans-length-based criterion is disabled.
|
| ... | ... | @@ -426,7 +426,7 @@ possible values or a numeric range. |
|
|
|
|
|
|
|
- `_C.amr_Field` (typical value: $0.2$): threshold in the
|
|
|
|
Field-length-based mesh refinement criterion (cf.
|
|
|
|
[AMR](#adaptive-mesh-refinement)). The value `_C.amr_Field`
|
|
|
|
[AMR](3.1-Code-basics#adaptive-mesh-refinement)). The value `_C.amr_Field`
|
|
|
|
defines the fraction of the local Field length to be resolved by
|
|
|
|
one grid cell. A zero or negative value means that the
|
|
|
|
Field-length-based criterion is disabled.
|
| ... | ... | @@ -603,7 +603,7 @@ possible values or a numeric range. |
|
|
|
given by the parameter `_C.diffusion_coeff` described below. U
|
|
|
|
enables Ohmic diffusion with a user-defined magnetic diffusion
|
|
|
|
coefficient as coded in the user interface function
|
|
|
|
**diffusionCoeffUser()**. (cf. [Ohmic
|
|
|
|
`diffusionCoeffUser()`. (cf. [Ohmic
|
|
|
|
diffusion](#ohmic-diffusion)). N disables Ohmic diffusion.
|
|
|
|
|
|
|
|
- `_C.diffusion_coeff`: constant magnetic diffusion coefficient.
|
| ... | ... | @@ -646,7 +646,7 @@ possible values or a numeric range. |
|
|
|
coefficient given by the parameter `_C.APdiffusion_coeff`
|
|
|
|
described below. U enables ambipolar diffusion with a
|
|
|
|
user-defined anbipolar diffusion coefficient as coded in the
|
|
|
|
user interface function **APdiffusionCoeffUser()** (cf.
|
|
|
|
user interface function `APdiffusionCoeffUser()` (cf.
|
|
|
|
[Ambipolar diffusion](#user-defined-coefficient-for-ambipolar-diffusion)).
|
|
|
|
N disables ambipolar diffusion.
|
|
|
|
|
| ... | ... | @@ -800,7 +800,7 @@ The module `configUser.c` serves as user interface for the definition of |
|
|
|
initial conditions (IC). To do this the user must program the function
|
|
|
|
`configUser()` in the module. Defining IC means assigning values to
|
|
|
|
primary physical variables on the mesh, that are
|
|
|
|
$\{\varrho,\mathbf{m},e,\mathbf{B},C_\mc,n_\ms\}$ -- gas density,
|
|
|
|
$\{\varrho,\mathbf{m},e,\mathbf{B},C_c,n_s\}$ -- gas density,
|
|
|
|
momentum,total energy density, magnetic field, tracer
|
|
|
|
($c=0,{\tt\_C.tracer}-1$), species number densities
|
|
|
|
($s=0,{\tt\_C.species}-1$). The parameter `_C.tracer` (`_C.species`)
|
| ... | ... | @@ -819,7 +819,7 @@ considered as primary variables and must be assigned by the user. The |
|
|
|
parameter `_C.testfields` denotes the number of testfields.
|
|
|
|
|
|
|
|
**Important:** In case magnetic field splitting is enabled (cf. [Code
|
|
|
|
features](#code-features)) the variable $\mathbf{B}$ represents the
|
|
|
|
features](3.1-Code-basics#code-features)) the variable $\mathbf{B}$ represents the
|
|
|
|
residual magnetic field, i.e., total field minus background field. In
|
|
|
|
addition, $e$ represents the residual total energy density, i.e, has a
|
|
|
|
magnetic energy density contribution solely from the residual magnetic
|
| ... | ... | @@ -843,7 +843,7 @@ il=0,`_C.level`, and all its superblocks: |
|
|
|
}
|
|
|
|
|
|
|
|
Please recall in this context the introduction to NIRVANA's [Mesh data
|
|
|
|
structure](#mesh-data-structure).
|
|
|
|
structure](3.1-Code-basics#mesh-data-structure).
|
|
|
|
|
|
|
|
There are two types of mesh variables: cell-averaged variables and
|
|
|
|
face-averaged variables. Cell-averaged variables are
|
| ... | ... | @@ -944,7 +944,7 @@ divergence-free setup: |
|
|
|
|
|
|
|
**(I)** Explicit computation of cell-face-averaged magnetic field
|
|
|
|
components by exact integration of given analytical expressions. For a
|
|
|
|
grid cell (,,) on superblock `g` the discretized components would then
|
|
|
|
grid cell (ix,iy,iz) on superblock `g` the discretized components would then
|
|
|
|
read
|
|
|
|
$$\mathtt{g->bx[iz][iy][ix]}=\frac{1}{\delta \mathcal{A}_x}\int
|
|
|
|
\limits_\mathtt{g->y[iy]}^\mathtt{g->y[iy+1]}
|
| ... | ... | @@ -958,7 +958,7 @@ $$\mathtt{g->bz[iz][iy][ix]}=\frac{1}{\delta \mathcal{A}_z}\int |
|
|
|
where the numerical expressions for the cell faces are:
|
|
|
|
|
|
|
|
| cell face | expression |
|
|
|
|
|:---------------------|:-----------------------------------------|
|
|
|
|
|:-------------------|:-----------------------------------------|
|
|
|
|
| *δ*𝒜<sub>*x*</sub> | `g->hyh[ix]*g->hyh[ix]*g->dvy[iy]*g->dz` |
|
|
|
|
| *δ*𝒜<sub>*y*</sub> | `g->dax[ix]*g->hzyh[iy]*g->dz` |
|
|
|
|
| *δ*𝒜<sub>*z*</sub> | `g->dax[ix]*g->dy` |
|
| ... | ... | @@ -982,21 +982,21 @@ integral form of $\mathbf{B}=\nabla\times \mathbf{A}$: |
|
|
|
where the difference operators $\Delta_{ix}$, $\Delta_{iy}$ and
|
|
|
|
$\Delta_{iz}$ are given by
|
|
|
|
|
|
|
|
$\Delta_{ix}X=X(\mathtt{ix+1,iy,iz})-X(\mathtt{ix,iy,iz})$,
|
|
|
|
$\Delta_{ix}X=X(\mathtt{iz,iy,ix+1})-X(\mathtt{iz,iy,ix})$,
|
|
|
|
|
|
|
|
$\Delta_{iy}X=X(\mathtt{ix,iy+1,iz})-X(\mathtt{ix,iy,iz})$,
|
|
|
|
$\Delta_{iy}X=X(\mathtt{iz,iy+1,ix})-X(\mathtt{iz,iy,ix})$,
|
|
|
|
|
|
|
|
$\Delta_{iz}X=X(\mathtt{ix,iy,iz+1})-X(\mathtt{ix,iy,iz})$
|
|
|
|
$\Delta_{iz}X=X(\mathtt{iz,iy,ix+1})-X(\mathtt{iz,iy,ix})$
|
|
|
|
|
|
|
|
and $(\hat{A}_x,\hat{A}_y,\hat{A}_z)$ are the cell-edge integrals
|
|
|
|
|
|
|
|
$$\hat{A}_x(\mathtt{ix,iy,iz})=\int\limits_\mathtt{g->x[ix]}^\mathtt{g->x[ix+1]}
|
|
|
|
$$\hat{A}_x(\mathtt{iz,iy,ix})=\int\limits_\mathtt{g->x[ix]}^\mathtt{g->x[ix+1]}
|
|
|
|
A_x(x,\mathtt{g->y[iy]},\mathtt{g->z[iz]})dx$$
|
|
|
|
|
|
|
|
$$\hat{A}_y(\mathtt{ix,iy,iz})=\int\limits_\mathtt{g->y[iy]}^\mathtt{g->y[iy+1]}
|
|
|
|
$$\hat{A}_y(\mathtt{iz,iy,ix})=\int\limits_\mathtt{g->y[iy]}^\mathtt{g->y[iy+1]}
|
|
|
|
A_y(\mathtt{g->x[ix]},y,\mathtt{g->z[iz]})dy$$
|
|
|
|
|
|
|
|
$$\hat{A}_z(\mathtt{ix,iy,iz})=\int\limits_\mathtt{g->z[iz]}^\mathtt{g->z[iz+1]}
|
|
|
|
$$\hat{A}_z(\mathtt{iz,iy,ix})=\int\limits_\mathtt{g->z[iz]}^\mathtt{g->z[iz+1]}
|
|
|
|
A_z(\mathtt{g->x[ix]},\mathtt{g->y[iy]},z)dz$$
|
|
|
|
|
|
|
|
The $\hat{A}$'s are usually easier to compute than the face-averaged
|
| ... | ... | @@ -1025,7 +1025,7 @@ for two problems: the Orszag-Tang vortex problem (example 1) and a |
|
|
|
shock-cloud interaction problem (example 2).
|
|
|
|
|
|
|
|
**Example 1** (taken from `/nirvana/testproblems/MHD/problem2`; cf.
|
|
|
|
[@Z04])
|
|
|
|
\[[Z04](#references)\])
|
|
|
|
|
|
|
|
IC for the Orszag-Tang vortex problem simulated in a doubly-periodic
|
|
|
|
square domain of length $L$ (given by `_C.up[0]-_C.lo[0]`):
|
| ... | ... | |