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

A general-purpose driver that does something with a model. More...

Detailed Description

A general-purpose driver that does something with a model.

Derived classes define that "something".

#include <ModelDriver.h>

Inheritance diagram for ModelDriver:

Public Member Functions

 ModelDriver (const OptionSet &options)
void setup () override
 Setup this object.
void diagnose () const override
 Check for common problems.
const Modelmodel () const
const Modelpostprocessor () const
Public Member Functions inherited from Driver
 Driver (const OptionSet &options)
 Construct a new Driver object.
virtual bool run ()=0
 Let the driver run, return true upon successful completion, and return false otherwise.
Public Member Functions inherited from NEML2Object
 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
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 = 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.
Public Member Functions inherited from DiagnosticsInterface
 DiagnosticsInterface ()=delete
 DiagnosticsInterface (NEML2Object *object)
 DiagnosticsInterface (DiagnosticsInterface &&)=delete
 DiagnosticsInterface (const DiagnosticsInterface &)=delete
DiagnosticsInterfaceoperator= (const DiagnosticsInterface &)=delete
DiagnosticsInterfaceoperator= (DiagnosticsInterface &&)=delete
virtual ~DiagnosticsInterface ()=default
const NEML2Objectobject () const
 Get the object.

Static Public Member Functions

static OptionSet expected_options ()
Static Public Member Functions inherited from Driver
static OptionSet expected_options ()
Static Public Member Functions inherited from NEML2Object
static OptionSet expected_options ()

Protected Types

using DispatcherType = WorkDispatcher<ValueMap, ValueMap, ValueMap, ValueMap, ValueMap>
 Work dispatcher.

Protected Attributes

const std::shared_ptr< Model_model
 The model which the driver uses to perform constitutive updates.
const std::shared_ptr< Model_postprocessor
 Postprocessor model.
const Device _device
 The device on which to evaluate the model.
std::shared_ptr< WorkScheduler_scheduler
 The work scheduler to use.
std::unique_ptr< DispatcherType_dispatcher
const bool _async_dispatch
 Whether to dispatch work asynchronously.
std::unordered_map< std::thread::id, std::shared_ptr< Model > > _models
 Cloned models for each thread.
Protected Attributes inherited from Driver
bool _verbose
 Whether to print out additional (debugging) information during the execution.

Member Typedef Documentation

◆ DispatcherType

Work dispatcher.

Constructor & Destructor Documentation

◆ ModelDriver()

ModelDriver ( const OptionSet & options)

Member Function Documentation

◆ diagnose()

void diagnose ( ) const
overridevirtual

Check for common problems.

This method serves as the entry point for diagnosing common problems in object setup. The idea behind this method is that while some errors could be detected at construction time, i.e., when the object's constructor is called, it doesn't hinder other objects' creation. We therefore would like to defer the detection of errors until after all objects have been created, collect all errors at once, and present the user with a complete understanding of all errors encountered.

Note, however, if an error could interfere with other objects' creation, it should be raised right away inside the constructor, instead of inside this method.

Reimplemented from Driver.

Reimplemented in SolidMechanicsDriver, and TransientDriver.

◆ expected_options()

OptionSet expected_options ( )
static

◆ model()

const Model & model ( ) const
inline

◆ postprocessor()

const Model & postprocessor ( ) const
inline

◆ setup()

void setup ( )
overridevirtual

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 from NEML2Object.

Reimplemented in SolidMechanicsDriver, and TransientDriver.

Member Data Documentation

◆ _async_dispatch

const bool _async_dispatch
protected

Whether to dispatch work asynchronously.

◆ _device

const Device _device
protected

The device on which to evaluate the model.

◆ _dispatcher

std::unique_ptr<DispatcherType> _dispatcher
protected

◆ _model

const std::shared_ptr<Model> _model
protected

The model which the driver uses to perform constitutive updates.

◆ _models

std::unordered_map<std::thread::id, std::shared_ptr<Model> > _models
protected

Cloned models for each thread.

◆ _postprocessor

const std::shared_ptr<Model> _postprocessor
protected

Postprocessor model.

◆ _scheduler

std::shared_ptr<WorkScheduler> _scheduler
protected

The work scheduler to use.