File boundary_region.hxx#

Enums

enum class BndryLoc#

Location of boundary.

Values:

enumerator xin#
enumerator xout#
enumerator ydown#
enumerator yup#
enumerator all#
enumerator par_fwd_xin#
enumerator par_bkwd_xin#
enumerator par_fwd_xout#
enumerator par_bkwd_xout#

Variables

constexpr BndryLoc BNDRY_XIN = BndryLoc::xin#
constexpr BndryLoc BNDRY_XOUT = BndryLoc::xout#
constexpr BndryLoc BNDRY_YDOWN = BndryLoc::ydown#
constexpr BndryLoc BNDRY_YUP = BndryLoc::yup#
constexpr BndryLoc BNDRY_ALL = BndryLoc::all#
constexpr BndryLoc BNDRY_PAR_FWD_XIN = BndryLoc::par_fwd_xin#
constexpr BndryLoc BNDRY_PAR_BKWD_XIN = BndryLoc::par_bkwd_xin#
constexpr BndryLoc BNDRY_PAR_FWD_XOUT = BndryLoc::par_fwd_xout#
constexpr BndryLoc BNDRY_PAR_BKWD_XOUT = BndryLoc::par_bkwd_xout#
class BoundaryRegionBase#

Subclassed by BoundaryRegion, BoundaryRegionPar

Public Functions

BoundaryRegionBase() = delete#
inline BoundaryRegionBase(std::string name, Mesh *passmesh = nullptr)#
inline BoundaryRegionBase(std::string name, BndryLoc loc, Mesh *passmesh = nullptr)#
virtual ~BoundaryRegionBase() = default#
virtual void first() = 0#

Move the region iterator to the start.

virtual void next() = 0#

Get the next element in the loop over every element from inside out (in X or Y first)

virtual bool isDone() = 0#

Returns true if outside domain. Can use this with nested nextX, nextY.

Public Members

Mesh *localmesh#

Mesh does this boundary region belongs to.

std::string label#

Label for this boundary region.

BndryLoc location#

Which side of the domain is it on?

bool isParallel = false#

Is this a parallel boundary?

class BoundaryRegion : public BoundaryRegionBase#
#include <boundary_region.hxx>

Describes a region of the boundary, and a means of iterating over it.

Subclassed by BoundaryRegionXIn, BoundaryRegionXOut, BoundaryRegionYDown, BoundaryRegionYUp

Public Functions

BoundaryRegion() = delete#
inline BoundaryRegion(std::string name, BndryLoc loc, Mesh *passmesh = nullptr)#
inline BoundaryRegion(std::string name, int xd, int yd, Mesh *passmesh = nullptr)#
~BoundaryRegion() override = default#
virtual void next1d() = 0#

Loop over the innermost elements.

virtual void nextX() = 0#

Just loop over X.

virtual void nextY() = 0#

Just loop over Y.

Public Members

int x#
int y#

Indices of the point in the boundary.

int bx#
int by#

Direction of the boundary [x+bx][y+by] is going outwards.

int width#

Width of the boundary.

class BoundaryRegionXIn : public BoundaryRegion#

Public Functions

BoundaryRegionXIn(std::string name, int ymin, int ymax, Mesh *passmesh = nullptr)#
virtual void first() override#

Move the region iterator to the start.

virtual void next() override#

Get the next element in the loop over every element from inside out (in X or Y first)

virtual void next1d() override#

Loop over the innermost elements.

virtual void nextX() override#

Just loop over X.

virtual void nextY() override#

Just loop over Y.

virtual bool isDone() override#

Returns true if outside domain. Can use this with nested nextX, nextY.

Private Members

int ys#
int ye#
class BoundaryRegionXOut : public BoundaryRegion#

Public Functions

BoundaryRegionXOut(std::string name, int ymin, int ymax, Mesh *passmesh = nullptr)#
virtual void first() override#

Move the region iterator to the start.

virtual void next() override#

Get the next element in the loop over every element from inside out (in X or Y first)

virtual void next1d() override#

Loop over the innermost elements.

virtual void nextX() override#

Just loop over X.

virtual void nextY() override#

Just loop over Y.

virtual bool isDone() override#

Returns true if outside domain. Can use this with nested nextX, nextY.

Private Members

int ys#
int ye#
class BoundaryRegionYDown : public BoundaryRegion#

Public Functions

BoundaryRegionYDown(std::string name, int xmin, int xmax, Mesh *passmesh = nullptr)#
virtual void first() override#

Move the region iterator to the start.

virtual void next() override#

Get the next element in the loop over every element from inside out (in X or Y first)

virtual void next1d() override#

Loop over the innermost elements.

virtual void nextX() override#

Just loop over X.

virtual void nextY() override#

Just loop over Y.

virtual bool isDone() override#

Returns true if outside domain. Can use this with nested nextX, nextY.

Private Members

int xs#
int xe#
class BoundaryRegionYUp : public BoundaryRegion#

Public Functions

BoundaryRegionYUp(std::string name, int xmin, int xmax, Mesh *passmesh = nullptr)#
virtual void first() override#

Move the region iterator to the start.

virtual void next() override#

Get the next element in the loop over every element from inside out (in X or Y first)

virtual void next1d() override#

Loop over the innermost elements.

virtual void nextX() override#

Just loop over X.

virtual void nextY() override#

Just loop over Y.

virtual bool isDone() override#

Returns true if outside domain. Can use this with nested nextX, nextY.

Private Members

int xs#
int xe#
namespace bout#

Provides access to the Hypre library, handling initialisation and finalisation.

Usage

#include <bout/hyprelib.hxx>

class MyClass { public:

private: HypreLib lib; };

This will then automatically initialise Hypre the first time an object is created, and finalise it when the last object is destroyed.

Copyright 2012 B.D.Dudson, S.Farley, M.V.Umansky, X.Q.Xu

Contact: Ben Dudson, bd512@york.ac.uk

This file is part of BOUT++.

BOUT++ is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

BOUT++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with BOUT++. If not, see http://www.gnu.org/licenses/.

Information about the version of BOUT++

The build system will update this file on every commit, which may result in files that include it getting rebuilt. Therefore it should be included in as few places as possible

Information about the version of BOUT++

The build system will update this file at configure-time

SNB model

namespace globals#

Variables

Mesh *mesh#

Global mesh.

The mesh object.