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

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

Private Members

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

Dirichlet (set to zero) boundary condition.

Public Functions

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

Private Members

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

3nd-order boundary condition

Public Functions

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

Private Members

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

4th-order boundary condition

Public Functions

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

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

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

Private Members

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

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

Public Functions

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

Apply a boundary condition on field f.

virtual void apply(Field3D &f) override

Private Members

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

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

Public Functions

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

Apply a boundary condition on field f.

virtual void apply(Field3D &f) override
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

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

Private Members

BoutReal val
class BoundaryNeumann : public BoundaryOp

Public Functions

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

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

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

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

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

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

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

Apply a boundary condition on field f.

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

Robin (mix of Dirichlet and Neumann)

Public Functions

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

Apply a boundary condition on field f.

virtual void apply(Field3D &f) override

Private Members

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

Constant gradient (zero second derivative)

Public Functions

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

Apply a boundary condition on field f.

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

Zero Laplacian, decaying solution.

Public Functions

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

Apply a boundary condition on field f.

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

Zero Laplacian.

Public Functions

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

Apply a boundary condition on field f.

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

Constant Laplacian, decaying solution.

Public Functions

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

Apply a boundary condition on field f.

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

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

Public Functions

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

Apply a boundary condition on field f.

inline virtual void apply(Field3D &f) override
virtual void apply(Vector2D &f) override
virtual void apply(Vector3D &f) override
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

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

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

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

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

Public Functions

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

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

Convert a boundary condition to a relaxing one.

Public Functions

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

Private Members

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

Increase the width of a boundary.

Public Functions

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override

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

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override
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

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

Apply a boundary condition on field f.

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

Apply a boundary condition on ddt(f)

virtual void apply_ddt(Field3D &f) override