The SELF_DataObj class is a base class for all data objects in SELF.
A data object in SELF is a multidimensional array of data, represented
on both host and device, that is associated with an interpolant, metadata,
and (optionally) an equation string.
Type extensions of the SELF_DataObj include scalars, vectors, and tensors
in 1-D, 2-D, and 3-D using the storage patterns that are expected for
derivative and interpolation operations defined in SELF_Lagrange.f90
Additionally, each extended type has the necessary attributes to store
information on element interiors and element boundaries, both of which
are commonly used for spectral element solvers.
Nodes of different colours represent the following:
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s). Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Nodes of different colours represent the following:
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s). Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
type,public::SELF_DataObj!! The SELF_DataObj class is a base class for all data objects in SELF.!! A data object in SELF is a multidimensional array of data, represented!! on both host and device, that is associated with an interpolant, metadata,!! and (optionally) an equation string.!! Type extensions of the SELF_DataObj include scalars, vectors, and tensors!! in 1-D, 2-D, and 3-D using the storage patterns that are expected for!! derivative and interpolation operations defined in SELF_Lagrange.f90!! Additionally, each extended type has the necessary attributes to store!! information on element interiors and element boundaries, both of which!! are commonly used for spectral element solvers.integer::nVarinteger::nEleminteger::Ninteger::Mtype(Lagrange),pointer::interptype(Metadata),allocatable::meta(:)type(EquationParser),allocatable::eqn(:)contains! Procedures for setting metadata forprocedure,public::SetName=>SetName_DataObjprocedure,public::SetDescription=>SetDescription_DataObjprocedure,public::SetUnits=>SetUnits_DataObjgeneric,public::SetEquation=>SetEquation_DataObjprocedure,private::SetEquation_DataObjendtype SELF_DataObj