NEML2 2.1.0
Loading...
Searching...
No Matches

The base class of all "manufacturable" objects in the NEML2 library. More...

Detailed Description

The base class of all "manufacturable" objects in the NEML2 library.

NEML2 uses the standard registry-factory pattern for automatic object registration and creation. The registry and the factory relies on polymophism to collect and resolve all types at run-time. See Registry and Factory for more details.

#include <NEML2Object.h>

Inheritance diagram for NEML2Object:

Public Member Functions

 NEML2Object ()=delete
 NEML2Object (NEML2Object &&)=delete
 NEML2Object (const NEML2Object &)=delete
NEML2Objectoperator= (NEML2Object &&)=delete
NEML2Objectoperator= (const NEML2Object &)=delete
virtual ~NEML2Object ()=default
 NEML2Object (const OptionSet &options)
 Construct a new NEML2Object object.
const OptionSetinput_options () const
virtual void setup ()
 Setup this object.
const std::string & name () const
 A readonly reference to the object's name.
std::string type () const
 The object's type.
const std::string & path () const
 A readonly reference to the object's path.
const std::string & doc () const
 A readonly reference to the object's docstring.
Factoryfactory () const
 Get the factory that created this object.
const Settingssettings () const
 Settings.
template<typename T = NEML2Object>
const T * host () const
 Get a readonly pointer to the host.
template<typename T = NEML2Object>
T * host ()
 Get a writable pointer to the host.
template<typename T>
const T & resolve_tensor (const std::string &name)
 Resolve a TensorName to a Tensor.
template<class T>
std::shared_ptr< T > get_object (const std::string &section, const std::string &name)
template<class T = EquationSystem>
std::shared_ptr< T > get_es (const std::string &name)
 Get an equation system from the factory.
template<class T = Solver>
std::shared_ptr< T > get_solver (const std::string &name)
 Get a solver from the factory.
template<class T = Data>
std::shared_ptr< T > get_data (const std::string &name)
 Get a data from the factory.
template<class T = Model>
std::shared_ptr< T > get_model (const std::string &name)
 Get a model from the factory.
template<class T = Driver>
std::shared_ptr< T > get_driver (const std::string &name)
 Get a driver from the factory.
template<class T = WorkScheduler>
std::shared_ptr< T > get_scheduler (const std::string &name)
 Get a scheduler from the factory.

Static Public Member Functions

static OptionSet expected_options ()

Protected Member Functions

VariableName history_name (const VariableName &var, std::size_t nstep) const
 Helper method to wrap a variable name into its history form.
VariableName rate_name (const VariableName &var) const
 Helper method to wrap a variable name into its rate form.
VariableName residual_name (const VariableName &var) const
 Helper method to wrap a variable name into its residual form.

Constructor & Destructor Documentation

◆ NEML2Object() [1/4]

NEML2Object ( )
delete

◆ NEML2Object() [2/4]

NEML2Object ( NEML2Object && )
delete

◆ NEML2Object() [3/4]

NEML2Object ( const NEML2Object & )
delete

◆ ~NEML2Object()

virtual ~NEML2Object ( )
virtualdefault

◆ NEML2Object() [4/4]

NEML2Object ( const OptionSet & options)

Construct a new NEML2Object object.

Parameters
optionsThe set of options extracted from the input file

Member Function Documentation

◆ doc()

const std::string & doc ( ) const
inline

A readonly reference to the object's docstring.

◆ expected_options()

OptionSet expected_options ( )
static

◆ factory()

Factory * factory ( ) const
inline

Get the factory that created this object.

◆ get_data()

template<class T>
std::shared_ptr< T > get_data ( const std::string & name)

Get a data from the factory.

◆ get_driver()

template<class T>
std::shared_ptr< T > get_driver ( const std::string & name)

Get a driver from the factory.

◆ get_es()

template<class T>
std::shared_ptr< T > get_es ( const std::string & name)

Get an equation system from the factory.

◆ get_model()

template<class T>
std::shared_ptr< T > get_model ( const std::string & name)

Get a model from the factory.

◆ get_object()

template<class T>
std::shared_ptr< T > get_object ( const std::string & section,
const std::string & name )

Get an object from the factory

◆ get_scheduler()

template<class T>
std::shared_ptr< T > get_scheduler ( const std::string & name)

Get a scheduler from the factory.

◆ get_solver()

template<class T>
std::shared_ptr< T > get_solver ( const std::string & name)

Get a solver from the factory.

◆ history_name()

VariableName history_name ( const VariableName & var,
std::size_t nstep ) const
protected

Helper method to wrap a variable name into its history form.

This is a personal preference in the end. The idea is to have a consistent way to name the history form of a variable, which is commonly used in time integration. The behavior can be controlled via Settings::history_separator.

Parameters
varThe variable name
nstepThe history step (0 for current, 1 for previous, etc.)
Returns
The history form of the variable name

◆ host() [1/2]

template<typename T>
T * host ( )

Get a writable pointer to the host.

◆ host() [2/2]

template<typename T>
const T * host ( ) const

Get a readonly pointer to the host.

◆ input_options()

const OptionSet & input_options ( ) const
inline

◆ name()

const std::string & name ( ) const
inline

A readonly reference to the object's name.

◆ operator=() [1/2]

NEML2Object & operator= ( const NEML2Object & )
delete

◆ operator=() [2/2]

NEML2Object & operator= ( NEML2Object && )
delete

◆ path()

const std::string & path ( ) const
inline

A readonly reference to the object's path.

◆ rate_name()

VariableName rate_name ( const VariableName & var) const
protected

Helper method to wrap a variable name into its rate form.

This is a personal preference in the end. The idea is to have a consistent way to name the rate form of a variable, which is commonly used in time integration. The behavior can be controlled via Settings::rate_prefix and Settings::rate_suffix.

Parameters
varThe variable name
Returns
The rate form of the variable name

◆ residual_name()

VariableName residual_name ( const VariableName & var) const
protected

Helper method to wrap a variable name into its residual form.

Similar to rate_name, this is for consistent naming of residual variables, which are commonly used in nonlinear systems. The behavior can be controlled via Settings::residual_prefix and Settings::residual_suffix.

Parameters
varThe variable name
Returns
The residual form of the variable name

◆ resolve_tensor()

template<typename T>
const T & resolve_tensor ( const std::string & name)

Resolve a TensorName to a Tensor.

◆ settings()

const Settings & settings ( ) const
inline

◆ setup()

virtual void setup ( )
inlinevirtual

Setup this object.

This method is called automatically if you use the Factory method get_object or get_object, right after construction. This serves as the entry point for things that are not convenient/possible to do at construction time, but are necessary before this object can be used (by others).

Reimplemented in Model, ModelDriver, ModelNonlinearSystem, SimpleMPIScheduler, StaticHybridScheduler, TransientDriver, UserTensorBase< T >, UserTensorBase< R2 >, UserTensorBase< Rot >, UserTensorBase< Scalar >, UserTensorBase< SR2 >, UserTensorBase< Tensor >, and UserTensorBase< WR2 >.

◆ type()

std::string type ( ) const
inline

The object's type.