NEML2 2.0.0
Loading...
Searching...
No Matches
NEML2Object Class Reference

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.
 
const std::string & type () const
 A readonly reference to 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 = 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 ()
 

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_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.

◆ 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.

◆ 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 LDISolidMechanicsDriver, Model, ModelDriver, SimpleMPIScheduler, SolidMechanicsDriver, StaticHybridScheduler, TransientDriver, UserTensorBase< T >, UserTensorBase< R2 >, UserTensorBase< Rot >, UserTensorBase< SR2 >, UserTensorBase< Tensor >, and UserTensorBase< WR2 >.

◆ type()

const std::string & type ( ) const
inline

A readonly reference to the object's type.