=================== Boundary conditions =================== The following tables list all possible boundary condition labels. .. raw:: html
Filter:

Boundary conditions *bcx* ------------------------- Module *boundcond.f90* ~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 :widths: 25 75 * - Variable - Meaning * - *0* - zero value in ghost zones, free value on boundary * - *p* - periodic * - *s* - symmetry, :math:`f_{N+i}=f_{N-i}` ; implies :math:`f'(x_N)=f'''(x_0)=0` * - *sf* - symmetry with respect to interface * - *ss* - symmetry, plus function value given * - *sds* - symmetric-derivative-set * - *s0d* - symmetry, function value such that df/dx=0 * - *a* - antisymmetry, :math:`f_{N+i}=-f_{N-i}` ; implies :math:`f(x_N)=f''(x_0)=0` * - *af* - antisymmetry with respect to interface * - *a2* - antisymmetry relative to boundary value, :math:`f_{N+i}=2 f_{N}-f_{N-i}` ; implies :math:`f''(x_0)=0` * - *a2v* - set boundary value and antisymmetry relative to it :math:`f_{N+i}=2 f_{N}-f_{N-i}` ; implies :math:`f''(x_0)=0` * - *a2r* - sets :math:`d^2f/dr^2 +2df/dr- 2f/r^2 = 0` This is the replacement of zero second derivative in spherical coordinates, in radial direction. * - *cpc* - cylindrical perfect conductor implies :math:`f''+f'/R=0` * - *cpp* - cylindrical perfect conductor for Aphi implies :math:`RA''+A'=0` * - *cpz* - cylindrical perfect conductor for Az implies :math:`R(RA)''-(RA)'=0` * - *spr* - spherical perfect conductor implies :math:`f''+2f'/R=0` and :math:`f(x_N)=0` * - *v* - vanishing third derivative * - *cop* - copy value of last physical point to all ghost cells * - *1s* - onesided * - *d1s* - onesided for 1st/2nd derivative in two first inner points, Dirichlet in boundary point * - *n1s* - onesided for 1st/2nd derivative in two first inner points, Neumann in boundary point * - *1so* - onesided * - *cT* - constant temperature (implemented as condition for entropy :math:`s` or temperature :math:`T` ) * - *c1* - constant conductive flux * - *Fgs* - black body: - chi_t*rho*T*grad(s) - K*grad(T) = sigmaSBt*T**4 * - *Fct* - Fbot = - K*grad(T) - chi_t*rho*T*grad(s) * - *Fcm* - :math:`Fbot = - K*grad(\overline{T})` :math:` - chi_t*\overline{rho}*\overline{T}*grad(\overline{s})` * - *sT* - symmetric temperature, :math:`T_{N-i}=T_{N+i}` ; implies :math:`T'(x_N)=T'''(x_0)=0` * - *asT* - select entropy for uniform ghost temperature matching fluctuating boundary value, :math:`T_{N-i}=T_{N}=` ; implies :math:`T'(x_N)=T'(x_0)=0` * - *db* - low-order one-sided derivatives (``no boundary condition'') for density * - *f* - ``freeze'' value, i.e. maintain initial value; antisymm wrt boundary * - *fg* - ``freeze'' value, i.e. maintain initial value at boundary, also mantaining the ghost zones at the initial coded value, i.e., keep the gradient frozen as well * - *1* - :math:`f=1` (for debugging) * - *set* - set boundary value to \var{fbcx} * - *st* - set boundary value to value generated by function bc_st. Special time-dependent boundary condition to model temporal changes. * - *st2* - set boundary value to value generated by function bc_st. Special time-dependent boundary condition to model temporal changes. * - *der* - set derivative on boundary to \var{fbcx} * - *slo* - set slope at the boundary = \var{fbcx} * - *slp* - set slope at the boundary and in ghost cells = \var{fbcx} * - *shx* - set shearing boundary proportional to x with slope=\var{fbcx} and abscissa=\var{fbcx2} * - *shy* - set shearing boundary proportional to y with slope=\var{fbcx} and abscissa=\var{fbcx2} * - *shz* - set shearing boundary proportional to z with slope=\var{fbcx} and abscissa=\var{fbcx2} * - *dr0* - set boundary value [really??] * - *ovr* - overshoot boundary condition ie :math:`(d/dx-1/\mathrm{dist}) f = 0.` * - *out* - allow outflow, but no inflow forces ghost cells and boundary to not point inwards * - *e1o* - allow outflow, but no inflow uses the e1 extrapolation scheme * - *ant* - stops and prompts for adding documentation * - *e1* - extrapolation [describe] * - *e2* - extrapolation [describe] * - *e2h* - extrapolation [describe] * - *e3* - extrapolation in log [maintain a power law] * - *el* - linear extrapolation from last two active cells * - *pl* - extrapolate using power law with the power index specified by fbcx * - *hat* - top hat jet profile in spherical coordinate. * - *jet* - top hat jet profile in cartezian coordinate. * - *spd* - sets :math:`d(rA_{\alpha})/dr = \mathtt{fbcx(j)}` * - *sfr* - stress-free boundary condition for spherical coordinate system. * - *sr1* - Stress-free bc for spherical coordinate system. Implementation with one-sided derivative. * - *nfr* - Normal-field bc for spherical coordinate system. Some people call this the ``(angry) hedgehog bc''. * - *nr1* - Normal-field bc for spherical coordinate system. Some people call this the ``(angry) hedgehog bc''. Implementation with one-sided derivative. * - *sa2* - :math:`(d/dr)(r B_{\phi}) = 0` imposes boundary condition on 2nd derivative of :math:`r A_{\phi}` . Same applies to :math:`\theta` component. * - *pfc* - perfect-conductor in spherical coordinate: :math:`d/dr( A_r) + 2/r = 0` . * - *fix* - set boundary value [really??] * - *fil* - set boundary value from a file * - *cfb* - radial centrifugal balance * - *g* - set to given value(s) or function * - *ioc* - inlet/outlet on western/eastern hemisphere in cylindrical coordinates * - *tay* - * - *exp* - exponentiate x ghost zone of other variable * - *slc* - set x ghost zones from slice. * - *density_wind* - 'wind' bc for lnrho * - *nil, '', no* - do nothing; assume that everything is set Module *boundcond_alt.f90* ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 :widths: 25 75 * - Variable - Meaning * - *0* - do nothing; assume that everything is set zero value in ghost zones, free value on boundary * - *p* - periodic * - *s* - symmetry, :math:`f_{N+i}=f_{N-i}` ; implies :math:`f'(x_N)=f'''(x_0)=0` * - *ss* - symmetry, plus function value given * - *s0d* - symmetry, function value such that df/dx=0 * - *a* - antisymmetry, :math:`f_{N+i}=-f_{N-i}` ; implies :math:`f(x_N)=f''(x_0)=0` * - *a2* - antisymmetry relative to boundary value, :math:`f_{N+i}=2 f_{N}-f_{N-i}` ; implies :math:`f''(x_0)=0` * - *a2r* - sets :math:`d^2f/dr^2 +2df/dr- 2f/r^2 = 0` This is the replacement of zero second derivative in spherical coordinates, in radial direction. * - *cpc* - cylindrical perfect conductor implies :math:`f''+f'/R=0` * - *cpp* - cylindrical perfect conductor implies :math:`f''+f'/R=0` * - *cpz* - cylindrical perfect conductor implies :math:`f''+f'/R=0` * - *spr* - spherical perfect conductor implies :math:`f''+2f'/R=0` and :math:`f(x_N)=0` * - *v* - vanishing third derivative * - *cop* - copy value of last physical point to all ghost cells * - *1s* - onesided * - *1so* - onesided * - *cT* - constant temperature (implemented as condition for entropy :math:`s` or temperature :math:`T` ) * - *c1* - constant temperature (or maybe rather constant conductive flux??) * - *Fgs* - Fconv = - chi_t*rho*T*grad(s) * - *Fct* - Fbot = - K*grad(T) - chi_t*rho*T*grad(s) * - *Fcm* - :math:`Fbot = - K*grad(\overline{T})` :math:` - chi_t*\overline{rho}*\overline{T}*grad(\overline{s})` * - *sT* - symmetric temperature, :math:`T_{N-i}=T_{N+i}` ; implies :math:`T'(x_N)=T'''(x_0)=0` * - *asT* - select entropy for uniform ghost temperature matching fluctuating boundary value, :math:`T_{N-i}=T_{N}=` ; implies :math:`T'(x_N)=T'(x_0)=0` * - *db* - * - *f* - ``freeze'' value, i.e. maintain initial * - *fg* - ``freeze'' value, i.e. maintain initial * - *1* - :math:`f=1` (for debugging) * - *set* - set boundary value to \var{fbcx12} * - *der* - set derivative on boundary to \var{fbcx12} * - *slo* - set slope at the boundary = \var{fbcx12} * - *dr0* - set boundary value [really??] * - *ovr* - overshoot boundary condition ie :math:`(d/dx-1/\mathrm{dist}) f = 0.` * - *out* - allow outflow, but no inflow forces ghost cells and boundary to not point inwards * - *e1o* - allow outflow, but no inflow uses the e1 extrapolation scheme * - *ant* - stops and prompts for adding documentation * - *e1* - extrapolation [describe] * - *e2* - extrapolation [describe] * - *e3* - extrapolation in log [maintain a power law] * - *hat* - top hat jet profile in spherical coordinate. * - *jet* - top hat jet profile in cartezian coordinate. * - *spd* - sets :math:`d(rA_{\alpha})/dr = \mathtt{fbcx12(j)}` * - *sfr* - stress-free boundary condition for spherical coordinate system. * - *nfr* - Normal-field bc for spherical coordinate system. Some people call this the ``(angry) hedgehog bc''. * - *sa2* - :math:`(d/dr)(r B_{\phi}) = 0` imposes boundary condition on 2nd derivative of :math:`r A_{\phi}` . Same applies to :math:`\theta` component. * - *pfc* - perfect-conductor in spherical coordinate: :math:`d/dr( A_r) + 2/r = 0` . * - *fix* - set boundary value [really??] * - *fil* - set boundary value from a file * - *g* - set to given value(s) or function * - *ioc* - do nothing; assume that everything is set inlet/outlet on western/eastern hemisphere in cylindrical coordinates * - *tay* - Boundary conditions *bcz* ------------------------- Module *boundcond.f90* ~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 :widths: 25 75 * - Variable - Meaning * - *in* - allow inflow, but no outflow forces ghost cells and boundary to not point outwards * - *0* - zero value in ghost zones, free value on boundary * - *p* - periodic * - *yy* - Yin-Yang grid * - *s* - symmetry * - *sf* - symmetry with respect to interface * - *s0d* - symmetry, function value such that df/dz=0 * - *0ds* - symmetry, function value such that df/dz=0 * - *a* - antisymmetry * - *a2* - antisymmetry relative to boundary value * - *a2v* - set boundary value and antisymmetry relative to it * - *af* - antisymmetry with respect to interface * - *a0d* - antisymmetry with zero derivative * - *v* - vanishing third derivative * - *v3* - vanishing third derivative * - *1s* - one-sided * - *d1s* - onesided for 1st and 2nd derivative in two first inner points, Dirichlet in boundary point * - *n1s* - onesided for 1st and 2nd derivative in two first inner points, Neumann in boundary point * - *a1s* - special for perfect conductor with const alpha and etaT when A considered as B; one-sided for 1st and 2nd derivative in two first inner points * - *fg* - ``freeze'' value, i.e. maintain initial value at boundary, also mantaining the ghost zones at the initial coded value, i.e., keep the gradient frozen as well * - *c1* - special boundary condition for :math:`\ln\rho` and :math:`s` : constant heat flux through the boundary * - *c1s* - complex * - *Fgs* - black body: - chi_t*rho*T*grad(s) - K*grad(T) = sigmaSBt*T**4 * - *Fct* - Fbot = - K*grad(T) - chi_t*rho*T*grad(s) * - *c3* - constant flux at the bottom with a variable hcond * - *pfe* - potential field extrapolation * - *p1D* - potential field extrapolation in 1D * - *pot* - potential magnetic field * - *pwd* - a variant of 'pot' for nprocx=1 * - *d2z* - * - *hds* - hydrostatic equilibrium with a high-frequency filter * - *cT* - constant temperature. If used for lnrho, sets both lnrho and ss (in which case the BC for ss should be set to 'nil') If used for ss, sets only ss. * - *cT1* - constant temperature using one-sided derivatives * - *cT2* - constant temp. (keep lnrho) * - *cT3* - constant temp. (keep lnrho) * - *hs* - hydrostatic equilibrium * - *hse* - hydrostatic extrapolation rho or lnrho is extrapolated linearily and the temperature is calculated in hydrostatic equilibrium. * - *cp* - constant pressure * - *sT* - symmetric temp. * - *ctz* - for interstellar runs copy T * - *cdz* - for interstellar runs limit rho * - *ism* - exponential decay/growth in rho/T by scale height * - *asT* - select entropy for uniform ghost temperature matching fluctuating boundary value, :math:`T_{N-i}=T_{N}=` ; implies :math:`T'(x_N)=T'(x_0)=0` * - *c2* - special boundary condition for s: constant temperature at the boundary --- requires boundary condition 'a2' for :math:`\ln\rho` * - *db* - low-order one-sided derivatives (``no boundary condition'') for density * - *ce* - complex * - *e1* - extrapolation * - *e2* - extrapolation * - *ex* - simple linear extrapolation in first order * - *exf* - simple linear extrapolation in first order * - *exd* - simple linear extrapolation in first order * - *exm* - simple linear extrapolation in first order * - *b1* - extrapolation with zero value (improved 'a') * - *b2* - extrapolation with zero value (improved 'a') * - *b3* - extrapolation with zero value (improved 'a') * - *f, fa* - freeze value + antisymmetry * - *fs* - freeze value + symmetry * - *fBs* - frozen-in B-field (s) * - *fB* - frozen-in B-field (a2) * - *g* - set to given value(s) or function * - *gs* - * - *1* - f=1 (for debugging) * - *StS* - solar surface boundary conditions * - *set* - set boundary value * - *sep* - set boundary value * - *der* - set derivative on the boundary * - *div* - set the divergence of :math:`\uv` to a given value use bc = 'div' for iuz * - *ovr* - set boundary value * - *inf* - allow inflow, but no outflow * - *ouf* - allow outflow, but no inflow * - *out* - allow outflow, but no inflow forces ghost cells and boundary to not point inwards * - *crk* - no-inflow: copy value of last physical point to all ghost cells, but suppressing any inflow * - *in0* - allow inflow, but no outflow forces ghost cells and boundary to not point outwards relaxes to vanishing 1st derivative at boundary * - *ou0* - allow outflow, but no inflow forces ghost cells and boundary to not point inwards relaxes to vanishing 1st derivative at boundary * - *ind* - allow inflow, but no outflow forces ghost cells and boundary to not point outwards creates inwards pointing or zero 1st derivative at boundary * - *oud* - allow outflow, but no inflow forces ghost cells and boundary to not point inwards creates outwards pointing or zero 1st derivative at boundary * - *ubs* - copy boundary outflow, reduce inflow speed outside the boundary * - *win* - forces massflux given as :math:`\Sigma \rho_i ( u_i + u_0)=\textrm{fbcz1/2}(\rho)` * - *cop* - copy value of last physical point to all ghost cells * - *str* - * - *tay* - * - *exp* - exponentiate z ghost zone of other variable * - *slc* - set z ghost zones from slice. * - *nil, '', no* - do nothing; assume that everything is set Module *boundcond_alt.f90* ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 :widths: 25 75 * - Variable - Meaning * - *cfb* - radial centrifugal balance * - *fBs* - frozen-in B-field (s) * - *fB* - frozen-in B-field (a2) * - *0* - zero value in ghost zones, free value on boundary * - *p* - periodic * - *s* - symmetry * - *sf* - symmetry with respect to interface * - *s0d* - symmetry, function value such that df/dz=0 * - *0ds* - symmetry, function value such that df/dz=0 * - *a* - antisymmetry * - *a2* - antisymmetry relative to boundary value * - *af* - antisymmetry with respect to interface * - *a0d* - antisymmetry with zero derivative * - *v* - vanishing third derivative * - *v3* - vanishing third derivative * - *1s* - one-sided * - *fg* - ``freeze'' value, i.e. maintain initial * - *c1* - complex * - *Fgs* - Fconv = - chi_t*rho*T*grad(s) * - *Fct* - Fbot = - K*grad(T) - chi_t*rho*T*grad(s) * - *c3* - constant flux at the bottom with a variable hcond * - *pfe* - potential field extrapolation * - *p1D* - potential field extrapolation in 1D * - *pot* - potential magnetic field * - *pwd* - a variant of 'pot' for nprocx=1 * - *d2z* - * - *hds* - hydrostatic equilibrium with a high-frequency filter * - *cT* - constant temp. * - *cT2* - constant temp. (keep lnrho) * - *cT3* - constant temp. (keep lnrho) * - *hs* - hydrostatic equilibrium * - *hse* - hydrostatic extrapolation rho or lnrho is extrapolated linearily and the temperature is calculated in hydrostatic equilibrium. * - *cp* - constant pressure * - *sT* - symmetric temp. * - *ctz* - for interstellar runs copy T * - *cdz* - for interstellar runs limit rho * - *asT* - select entropy for uniform ghost temperature matching fluctuating boundary value, :math:`T_{N-i}=T_{N}=` ; implies :math:`T'(x_N)=T'(x_0)=0` * - *c2* - complex * - *db* - complex * - *ce* - complex * - *e1* - extrapolation * - *e2* - extrapolation * - *ex* - simple linear extrapolation in first order * - *exf* - simple linear extrapolation in first order * - *exd* - simple linear extrapolation in first order * - *exm* - simple linear extrapolation in first order * - *b1* - extrapolation with zero value (improved 'a') * - *b2* - extrapolation with zero value (improved 'a') * - *b3* - extrapolation with zero value (improved 'a') * - *f, fa* - freeze value + antisymmetry * - *fs* - freeze value + symmetry * - *g* - set to given value(s) or function * - *gs* - * - *1* - f=1 (for debugging) * - *StS* - solar surface boundary conditions * - *set* - set boundary value * - *der* - set derivative on the boundary * - *div* - set the divergence of :math:`\uv` to a given value use bc = 'div' for iuz * - *ovr* - set boundary value * - *inf* - allow inflow, but no outflow * - *ouf* - allow outflow, but no inflow * - *in* - allow inflow, but no outflow forces ghost cells and boundary to not point outwards * - *out* - allow outflow, but no inflow forces ghost cells and boundary to not point inwards * - *in0* - allow inflow, but no outflow forces ghost cells and boundary to not point outwards relaxes to vanishing 1st derivative at boundary * - *ou0* - allow outflow, but no inflow forces ghost cells and boundary to not point inwards relaxes to vanishing 1st derivative at boundary * - *ind* - allow inflow, but no outflow forces ghost cells and boundary to not point outwards creates inwards pointing or zero 1st derivative at boundary * - *oud* - allow outflow, but no inflow forces ghost cells and boundary to not point inwards creates outwards pointing or zero 1st derivative at boundary * - *ubs* - copy boundary outflow, * - *win* - forces massflux given as :math:`\Sigma \rho_i ( u_i + u_0)=\textrm{fbcz1/2}(\rho)` * - *cop* - copy value of last physical point to all ghost cells * - *nil* - do nothing; assume that everything is set Boundary conditions *bcy* ------------------------- Module *boundcond.f90* ~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 :widths: 25 75 * - Variable - Meaning * - *0* - zero value in ghost zones, free value on boundary * - *p* - periodic * - *pp* - periodic across the pole * - *yy* - Yin-Yang grid * - *ap* - anti-periodic across the pole * - *s* - symmetry, :math:`f_{N+i}=f_{N-i}` ; implies :math:`f'(y_N)=f'''(y_0)=0` * - *sf* - symmetry with respect to interface * - *ss* - symmetry, plus function value given * - *sds* - symmetric-derivative-set * - *cds* - complex symmetric-derivative-set * - *s0d* - symmetry, function value such that df/dy=0 * - *a* - antisymmetry * - *af* - antisymmetry with respect to interface * - *a2* - antisymmetry relative to boundary value * - *v* - vanishing third derivative * - *v3* - vanishing third derivative * - *out* - allow outflow, but no inflow forces ghost cells and boundary to not point inwards * - *1s* - onesided * - *d1s* - onesided for 1st and 2nd derivative in two first inner points, Dirichlet in boundary point * - *n1s* - onesided for 1st and 2nd derivative in two first inner points, Neumann in boundary point * - *cT* - constant temp. * - *sT* - symmetric temp. * - *asT* - select entropy for uniform ghost temperature matching fluctuating boundary value, :math:`T_{N-i}=T_{N}=` ; implies :math:`T'(x_N)=T'(x_0)=0` * - *f* - freeze value * - *s+f* - freeze value * - *fg* - ``freeze'' value, i.e. maintain initial * - *fBs* - frozen-in B-field (s) * - *fB* - frozen-in B-field (a2) * - *1* - f=1 (for debugging) * - *set* - set boundary value * - *sse* - symmetry, set boundary value * - *sep* - set boundary value * - *e1* - extrapolation * - *e2* - extrapolation * - *e3* - extrapolation in log [maintain a power law] * - *der* - set derivative on the boundary * - *cop* - outflow: copy value of last physical point to all ghost cells * - *c+k* - no-inflow: copy value of last physical point to all ghost cells, but suppressing any inflow * - *sfr* - stress-free boundary condition for spherical coordinate system. * - *nfr* - Normal-field bc for spherical coordinate system. Some people call this the ``(angry) hedgehog bc''. * - *spt* - spherical perfect conducting boundary condition along :math:`\theta` boundary :math:`f''+\cot\theta f'=0` and :math:`f(x_N)=0` * - *pfc* - perfect conducting boundary condition along :math:`\theta` boundary * - *str* - * - *tay* - * - *exp* - exponentiate y ghost zone of other variable * - *slc* - set x ghost zones from slice. * - *nil, '', no* - do nothing; assume that everything is set Module *boundcond_alt.f90* ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 :widths: 25 75 * - Variable - Meaning * - *sds* - symmetric-derivative-set * - *p* - periodic * - *pp* - periodic across the pole * - *ap* - anti-periodic across the pole * - *s* - symmetry symmetry, :math:`f_{N+i}=f_{N-i}` ; implies :math:`f'(y_N)=f'''(y_0)=0` * - *ss* - symmetry, plus function value given * - *cds* - complex symmetric-derivative-set * - *s0d* - symmetry, function value such that df/dy=0 * - *a* - antisymmetry * - *a2* - antisymmetry relative to boundary value * - *v* - vanishing third derivative * - *v3* - vanishing third derivative * - *out* - allow outflow, but no inflow forces ghost cells and boundary to not point inwards * - *1s* - onesided * - *cT* - constant temp. * - *sT* - symmetric temp. * - *asT* - select entropy for uniform ghost temperature matching fluctuating boundary value, :math:`T_{N-i}=T_{N}=` ; implies :math:`T'(x_N)=T'(x_0)=0` * - *f* - freeze value * - *s+f* - freeze value * - *fg* - ``freeze'' value, i.e. maintain initial * - *1* - f=1 (for debugging) * - *set* - set boundary value * - *sse* - symmetry, set boundary value * - *sep* - set boundary value * - *e1* - extrapolation * - *e2* - extrapolation * - *e3* - extrapolation in log [maintain a power law] * - *der* - set derivative on the boundary * - *cop* - outflow: copy value of last physical point to all ghost cells * - *c+k* - no-inflow: copy value of last physical point to all ghost cells, but suppressing any inflow * - *sfr* - stress-free boundary condition for spherical coordinate system. * - *nfr* - Normal-field bc for spherical coordinate system. Some people call this the ``(angry) hedgehog bc''. * - *spt* - spherical perfect conducting boundary condition along :math:`\theta` boundary :math:`f''+\cot\theta f'=0` and :math:`f(x_N)=0` * - *pfc* - perfect conducting boundary condition along :math:`\theta` boundary * - *str* - * - *nil, ''* - do nothing; assume that everything is set