File boundary_standard.hxx

Functions

BoutReal default_func(BoutReal t, int x, int y, int z)
class BoundaryDirichlet_2ndOrder : public BoundaryOp
#include <boundary_standard.hxx>

Some standard boundary conditions.

Dirichlet boundary condition set half way between guard cell and grid cell at 2nd order accuracy

Public Functions

BoundaryDirichlet_2ndOrder()
BoundaryDirichlet_2ndOrder(BoutReal setval)
BoundaryDirichlet_2ndOrder(BoundaryRegion *region, BoutReal setval = 0.)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

BoutReal val
class BoundaryDirichlet : public BoundaryOp
#include <boundary_standard.hxx>

Dirichlet (set to zero) boundary condition.

Public Functions

BoundaryDirichlet()
BoundaryDirichlet(BoundaryRegion *region, std::shared_ptr<FieldGenerator> g)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field2D &f, BoutReal t)
void apply(Field3D &f)
void apply(Field3D &f, BoutReal t)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

std::shared_ptr<FieldGenerator> gen
class BoundaryDirichlet_O3 : public BoundaryOp
#include <boundary_standard.hxx>

3nd-order boundary condition

Public Functions

BoundaryDirichlet_O3()
BoundaryDirichlet_O3(BoundaryRegion *region, std::shared_ptr<FieldGenerator> g)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field2D &f, BoutReal t)
void apply(Field3D &f)
void apply(Field3D &f, BoutReal t)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

std::shared_ptr<FieldGenerator> gen
class BoundaryDirichlet_O4 : public BoundaryOp
#include <boundary_standard.hxx>

4th-order boundary condition

Public Functions

BoundaryDirichlet_O4()
BoundaryDirichlet_O4(BoundaryRegion *region, std::shared_ptr<FieldGenerator> g)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field2D &f, BoutReal t)
void apply(Field3D &f)
void apply(Field3D &f, BoutReal t)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

std::shared_ptr<FieldGenerator> gen
class BoundaryDirichlet_4thOrder : public BoundaryOp
#include <boundary_standard.hxx>

Dirichlet boundary condition set half way between guard cell and grid cell at 4th order accuracy.

Public Functions

BoundaryDirichlet_4thOrder()
BoundaryDirichlet_4thOrder(BoutReal setval)
BoundaryDirichlet_4thOrder(BoundaryRegion *region, BoutReal setval = 0.)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

BoutReal val
class BoundaryNeumann_NonOrthogonal : public BoundaryOp
#include <boundary_standard.hxx>

Neumann (zero-gradient) boundary condition for non-orthogonal meshes.

Public Functions

BoundaryNeumann_NonOrthogonal()
BoundaryNeumann_NonOrthogonal(BoutReal setval)
BoundaryNeumann_NonOrthogonal(BoundaryRegion *region, BoutReal setval = 0.)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)

Private Members

BoutReal val
class BoundaryNeumann2 : public BoundaryOp
#include <boundary_standard.hxx>

Neumann (zero-gradient) boundary condition, using 2nd order on boundary.

Public Functions

BoundaryNeumann2()
BoundaryNeumann2(BoundaryRegion *region)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
class BoundaryNeumann_2ndOrder : public BoundaryOp
#include <boundary_standard.hxx>

Neumann boundary condition set half way between guard cell and grid cell at 2nd order accuracy.

Public Functions

BoundaryNeumann_2ndOrder()
BoundaryNeumann_2ndOrder(BoutReal setval)
BoundaryNeumann_2ndOrder(BoundaryRegion *region, BoutReal setval = 0.)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

BoutReal val
class BoundaryNeumann : public BoundaryOp

Public Functions

BoundaryNeumann()
BoundaryNeumann(BoundaryRegion *region, std::shared_ptr<FieldGenerator> g)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field2D &f, BoutReal t)
void apply(Field3D &f)
void apply(Field3D &f, BoutReal t)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

std::shared_ptr<FieldGenerator> gen
class BoundaryNeumann_4thOrder : public BoundaryOp
#include <boundary_standard.hxx>

Neumann boundary condition set half way between guard cell and grid cell at 4th order accuracy.

Public Functions

BoundaryNeumann_4thOrder()
BoundaryNeumann_4thOrder(BoutReal setval)
BoundaryNeumann_4thOrder(BoundaryRegion *region, BoutReal setval = 0.)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

BoutReal val
class BoundaryNeumann_O4 : public BoundaryOp
#include <boundary_standard.hxx>

Neumann boundary condition set half way between guard cell and grid cell at 4th order accuracy.

Public Functions

BoundaryNeumann_O4()
BoundaryNeumann_O4(BoundaryRegion *region, std::shared_ptr<FieldGenerator> g)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field2D &f, BoutReal t)
void apply(Field3D &f)
void apply(Field3D &f, BoutReal t)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

std::shared_ptr<FieldGenerator> gen
class BoundaryNeumannPar : public BoundaryOp
#include <boundary_standard.hxx>

NeumannPar (zero-gradient) boundary condition on the variable / sqrt(g_22)

Public Functions

BoundaryNeumannPar()
BoundaryNeumannPar(BoundaryRegion *region)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
class BoundaryRobin : public BoundaryOp
#include <boundary_standard.hxx>

Robin (mix of Dirichlet and Neumann)

Public Functions

BoundaryRobin()
BoundaryRobin(BoundaryRegion *region, BoutReal a, BoutReal b, BoutReal g)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)

Private Members

BoutReal aval
BoutReal bval
BoutReal gval
class BoundaryConstGradient : public BoundaryOp
#include <boundary_standard.hxx>

Constant gradient (zero second derivative)

Public Functions

BoundaryConstGradient()
BoundaryConstGradient(BoundaryRegion *region)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
class BoundaryZeroLaplace : public BoundaryOp
#include <boundary_standard.hxx>

Zero Laplacian, decaying solution.

Public Functions

BoundaryZeroLaplace()
BoundaryZeroLaplace(BoundaryRegion *region)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
class BoundaryZeroLaplace2 : public BoundaryOp
#include <boundary_standard.hxx>

Zero Laplacian.

Public Functions

BoundaryZeroLaplace2()
BoundaryZeroLaplace2(BoundaryRegion *region)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
class BoundaryConstLaplace : public BoundaryOp
#include <boundary_standard.hxx>

Constant Laplacian, decaying solution.

Public Functions

BoundaryConstLaplace()
BoundaryConstLaplace(BoundaryRegion *region)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
class BoundaryDivCurl : public BoundaryOp
#include <boundary_standard.hxx>

Vector boundary condition Div(B) = 0, Curl(B) = 0.

Public Functions

BoundaryDivCurl()
BoundaryDivCurl(BoundaryRegion *region)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
void apply(Vector2D &f)
void apply(Vector3D &f)
class BoundaryFree : public BoundaryOp
#include <boundary_standard.hxx>

Free boundary condition (evolve the field in the guard cells, using non-centred derivatives to calculate the ddt)

Public Functions

BoundaryFree()
BoundaryFree(BoutReal setval)
BoundaryFree(BoundaryRegion *region, BoutReal setval = 0.)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

BoutReal val
class BoundaryFree_O2 : public BoundaryOp
#include <boundary_standard.hxx>

Alternative free boundary condition (evolve the field in the guard cells, using non-centred derivatives to calculate the ddt)

Public Functions

BoundaryFree_O2()
BoundaryFree_O2(BoundaryRegion *region)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)
class BoundaryFree_O3 : public BoundaryOp

Public Functions

BoundaryFree_O3()
BoundaryFree_O3(BoundaryRegion *region)
BoundaryOp *clone(BoundaryRegion *region, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field3D &f)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)
class BoundaryRelax : public BoundaryModifier
#include <boundary_standard.hxx>

Convert a boundary condition to a relaxing one.

Public Functions

BoundaryRelax()
BoundaryRelax(BoundaryOp *operation, BoutReal rate)
BoundaryOp *cloneMod(BoundaryOp *op, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field2D &f, BoutReal t)
void apply(Field3D &f)
void apply(Field3D &f, BoutReal t)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

BoutReal r
class BoundaryWidth : public BoundaryModifier
#include <boundary_standard.hxx>

Increase the width of a boundary.

Public Functions

BoundaryWidth()
BoundaryWidth(BoundaryOp *operation, int wid)
BoundaryOp *cloneMod(BoundaryOp *op, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field2D &f, BoutReal t)
void apply(Field3D &f)
void apply(Field3D &f, BoutReal t)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)

Private Members

int width
class BoundaryToFieldAligned : public BoundaryModifier
#include <boundary_standard.hxx>

Convert input field fromFieldAligned, apply boundary and then convert back toFieldAligned Equivalent to converting the boundary condition to “Field Aligned” from “orthogonal”

Public Functions

BoundaryToFieldAligned()
BoundaryToFieldAligned(BoundaryOp *operation)
BoundaryOp *cloneMod(BoundaryOp *op, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field2D &f, BoutReal t)
void apply(Field3D &f)
void apply(Field3D &f, BoutReal t)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)
class BoundaryFromFieldAligned : public BoundaryModifier
#include <boundary_standard.hxx>

Convert input field toFieldAligned, apply boundary and then convert back fromFieldAligned Equivalent to converting the boundary condition from “Field Aligned” to “orthogonal”

Public Functions

BoundaryFromFieldAligned()
BoundaryFromFieldAligned(BoundaryOp *operation)
BoundaryOp *cloneMod(BoundaryOp *op, const std::list<std::string> &args)
void apply(Field2D &f)

Apply a boundary condition on field f.

void apply(Field2D &f, BoutReal t)
void apply(Field3D &f)
void apply(Field3D &f, BoutReal t)
void apply_ddt(Field2D &f)

Apply a boundary condition on ddt(f)

void apply_ddt(Field3D &f)