File griddata.hxx#
-
class GridDataSource#
- #include <griddata.hxx>
Interface class to serve grid data.
Provides a generic interface for sources of equilibrium data. Could be used to simplify interfacing between BOUT++ and other codes
Subclassed by GridFile, GridFromOptions
Public Functions
-
inline GridDataSource(const bool source_is_file = false)#
-
virtual ~GridDataSource() = default#
-
virtual bool get(Mesh *m, std::string &sval, const std::string &name, const std::string &def = "") = 0#
Get a string.
-
virtual bool get(Mesh *m, BoutReal &rval, const std::string &name, BoutReal def = 0.0) = 0#
Get a BoutReal number.
-
virtual bool get(Mesh *m, Field2D &var, const std::string &name, BoutReal def = 0.0, CELL_LOC location = CELL_DEFAULT) = 0#
-
virtual bool get(Mesh *m, Field3D &var, const std::string &name, BoutReal def = 0.0, CELL_LOC location = CELL_DEFAULT) = 0#
-
virtual bool get(Mesh *m, FieldPerp &var, const std::string &name, BoutReal def = 0.0, CELL_LOC location = CELL_DEFAULT) = 0#
-
virtual bool get(Mesh *m, std::vector<int> &var, const std::string &name, int len, int offset = 0, Direction dir = GridDataSource::X) = 0#
-
virtual bool get(Mesh *m, std::vector<BoutReal> &var, const std::string &name, int len, int offset = 0, Direction dir = GridDataSource::X) = 0#
-
virtual bool hasYBoundaryGuards() = 0#
Are y-boundary guard cells read from the source?
Public Members
-
const bool is_file#
Is the data source a grid file?
-
inline GridDataSource(const bool source_is_file = false)#
-
class GridFile : public GridDataSource#
- #include <griddata.hxx>
Interface to grid data in a file.
This is a thin wrapper around a DataFormat object. Only needs to implement reading routines.
Public Functions
-
GridFile() = delete#
-
~GridFile() = default#
-
virtual bool get(Mesh *m, std::string &sval, const std::string &name, const std::string &def = "") override#
Get a string.
Read a string from file. If the string is not found, then string is set to “” and false is returned.
Inputs
m Pointer to mesh, not used name String containing name of variable
Outputs
sval Reference to string
Returns
Boolean. True on success.
-
virtual bool get(Mesh *m, int &ival, const std::string &name, int def = 0) override#
Get an integer.
Read a single integer from file. If the integer is not found, then ival is set to zero and false is returned.
Inputs
m Pointer to mesh, not used name String containing name of variable
Outputs
ival Reference to integer
Returns
Boolean. True on success.
-
virtual bool get(Mesh *m, BoutReal &rval, const std::string &name, BoutReal def = 0.0) override#
Get a BoutReal number.
-
virtual bool get(Mesh *m, Field2D &var, const std::string &name, BoutReal def = 0.0, CELL_LOC location = CELL_DEFAULT) override#
Reads a 2D, 3D or FieldPerp field variable from a file
Successfully reads Field2D or FieldPerp if the variable in the file is 0-D or 2-D. Successfully reads Field3D if the variable in the file is 0-D, 2-D or 3-D.
-
virtual bool get(Mesh *m, Field3D &var, const std::string &name, BoutReal def = 0.0, CELL_LOC location = CELL_DEFAULT) override#
-
inline virtual bool get(Mesh *m, FieldPerp &var, const std::string &name, BoutReal def = 0.0, CELL_LOC location = CELL_DEFAULT) override#
-
virtual bool get(Mesh *m, std::vector<int> &var, const std::string &name, int len, int offset = 0, GridDataSource::Direction dir = GridDataSource::X) override#
-
virtual bool get(Mesh *m, std::vector<BoutReal> &var, const std::string &name, int len, int offset = 0, GridDataSource::Direction dir = GridDataSource::X) override#
-
inline virtual bool hasYBoundaryGuards() override#
Are y-boundary guard cells read from the source?
Private Functions
-
bool readgrid_3dvar_fft(Mesh *m, const std::string &name, int yread, int ydest, int ysize, int xread, int xdest, int xsize, Field3D &var)#
Reads in a portion of the X-Y domain.
-
bool readgrid_3dvar_real(const std::string &name, int yread, int ydest, int ysize, int xread, int xdest, int xsize, Field3D &var)#
Reads a 3D variable directly from the file, without any processing
-
bool readgrid_perpvar_fft(Mesh *m, const std::string &name, int xread, int xdest, int xsize, FieldPerp &var)#
-
bool readgrid_perpvar_real(const std::string &name, int xread, int xdest, int xsize, FieldPerp &var)#
Reads a FieldPerp variable directly from the file, without any processing
-
template<typename T>
bool getField(Mesh *m, T &var, const std::string &name, BoutReal def, CELL_LOC location)#
-
void readField(Mesh *m, const std::string &name, int ys, int yd, int ny_to_read, int xs, int xd, int nx_to_read, const std::vector<int> &size, Field2D &var)#
-
GridFile() = delete#
-
class GridFromOptions : public GridDataSource#
- #include <griddata.hxx>
Provides a way to create variables from options, which can be set in the input file or on the command line. This is done using FieldFactory to convert string expressions into fields.
Public Functions
-
inline GridFromOptions(Options *opt = nullptr)#
Constructor, passing optional Options object
- Parameters:
opt – [in] Options section to use as input. By default the “mesh” section under root will be used.
-
virtual bool get(Mesh *mesh, std::string &sval, const std::string &name, const std::string &def = "") override#
Reads strings from options. Uses Options::get to handle expressions
- Parameters:
mesh – [in] Not used
name – [in] Name of variable
sval – [out] Always given a value, defaults to 0
- Returns:
True if option is set, false if ival is default (0)
-
virtual bool get(Mesh *mesh, int &ival, const std::string &name, int def = 0) override#
Reads integers from options. Uses Options::get to handle expressions
- Parameters:
mesh – [in] Not used
ival – [out] The variable which will be set
name – [in] Name of variable
def – [in] Default value to use if option not found
- Returns:
True if option is set, false if ival is default (0)
-
virtual bool get(Mesh *mesh, BoutReal &rval, const std::string &name, BoutReal def = 0.0) override#
Reads BoutReal from options. Uses Options::get to handle expressions
- Parameters:
mesh – [in] Not used
name – [in] Name of variable
rval – [out] Always given a value, defaults to 0
- Returns:
True if option is set, false if ival is default (0)
-
virtual bool get(Mesh *mesh, Field2D &var, const std::string &name, BoutReal def = 0.0, CELL_LOC location = CELL_DEFAULT) override#
Get a Field2D object by finding the option with the given name, and passing the string to FieldFactory
- Parameters:
mesh – [in] The Mesh object over which the field is defined
var – [out] The variable which will be set
name – [in] The name in the options. Not case sensitive
def – [in] Default value to use if option not found
location – [in] Location at which to get the variable
-
virtual bool get(Mesh *mesh, Field3D &var, const std::string &name, BoutReal def = 0.0, CELL_LOC location = CELL_DEFAULT) override#
Get a Field3D object by finding the option with the given name, and passing the string to FieldFactory
- Parameters:
mesh – [in] The Mesh object over which the field is defined
var – [out] The variable which will be set
name – [in] The name in the options. Not case sensitive
def – [in] Default value to use if option not found
location – [in] Location at which to get the variable
-
virtual bool get(Mesh *mesh, FieldPerp &var, const std::string &name, BoutReal def = 0.0, CELL_LOC location = CELL_DEFAULT) override#
Get a FieldPerp object by finding the option with the given name, and passing the string to FieldFactory
- Parameters:
mesh – [in] The Mesh object over which the field is defined
var – [out] The variable which will be set
name – [in] The name in the options. Not case sensitive
def – [in] Default value to use if option not found
location – [in] Location at which to get the variable
-
virtual bool get(Mesh *mesh, std::vector<int> &var, const std::string &name, int len, int offset = 0, GridDataSource::Direction dir = GridDataSource::X) override#
Get an array of integers. Currently reads a single integer, and sets the whole array to the same value
- Parameters:
mesh – [in] Mesh object
var – [out] A vector which will be resized to length len
name – [in] The name of the option
len – [in] The length of the vector
offset – [in] Not currently used
dir – [in] The direction (X,Y,Z) of the array
-
virtual bool get(Mesh *mesh, std::vector<BoutReal> &var, const std::string &name, int len, int offset = 0, GridDataSource::Direction dir = GridDataSource::X) override#
Get an array of BoutReals. Uses FieldFactory to generate an expression, then evaluates it at indices depending on the direction (dir) and length (len)
- Parameters:
mesh – [in] Mesh object
var – [out] A vector which will be resized to length len
name – [in] The name of the option
len – [in] The length of the vector
offset – [in] The index where this vector starts i.e. var[0] is at x=offset if dir is X.
dir – [in] The direction (X,Y,Z) of the array
-
inline virtual bool hasXBoundaryGuards(Mesh *m) override#
Are x-boundary guard cells read from the source?
-
inline virtual bool hasYBoundaryGuards() override#
Are y-boundary guard cells read from the source?
-
inline GridFromOptions(Options *opt = nullptr)#