NEML2 2.0.0
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
VariableStore Class Reference

#include <VariableStore.h>

Inheritance diagram for VariableStore:

Public Types

using VariableStorage = std::map<VariableName, std::unique_ptr<VariableBase>>
 

Public Member Functions

 VariableStore (Model *object)
 
 VariableStore (const VariableStore &)=delete
 
 VariableStore (VariableStore &&)=delete
 
VariableStoreoperator= (const VariableStore &)=delete
 
VariableStoreoperator= (VariableStore &&)=delete
 
virtual ~VariableStore ()=default
 
LabeledAxisdeclare_axis (const std::string &name)
 
virtual void setup_layout ()
 Setup the layout of all the registered axes.
 
const TensorOptionsvariable_options () const
 Current tensor options for variables.
 
LabeledAxisinput_axis ()
 
const LabeledAxisinput_axis () const
 
LabeledAxisoutput_axis ()
 
const LabeledAxisoutput_axis () const
 
VariableStorageinput_variables ()
 
const VariableStorageinput_variables () const
 
VariableStorageoutput_variables ()
 
const VariableStorageoutput_variables () const
 
VariableBaseinput_variable (const VariableName &)
 
const VariableBaseinput_variable (const VariableName &) const
 
VariableBaseoutput_variable (const VariableName &)
 
const VariableBaseoutput_variable (const VariableName &) const
 
virtual void clear_input ()
 
virtual void clear_output ()
 
virtual void zero_input ()
 
virtual void zero_output ()
 
void assign_input (const ValueMap &vals)
 
void assign_input (ValueMap &&vals)
 Assign input variable values.
 
void assign_output (const ValueMap &vals)
 Assign output variable values.
 
void assign_output_derivatives (const DerivMap &derivs)
 Assign variable derivatives.
 
ValueMap collect_input () const
 
ValueMap collect_output () const
 
DerivMap collect_output_derivatives () const
 Collect variable derivatives.
 
SecDerivMap collect_output_second_derivatives () const
 Collect variable second derivatives.
 

Protected Member Functions

virtual void send_variables_to (const TensorOptions &options)
 Send padding variables to options.
 
template<typename T>
const Variable< T > & declare_input_variable (const char *name, TensorShapeRef list_shape={})
 Declare an input variable.
 
template<typename T>
const Variable< T > & declare_input_variable (const VariableName &name, TensorShapeRef list_shape={})
 Declare an input variable.
 
template<typename T>
Variable< T > & declare_output_variable (const char *name, TensorShapeRef list_shape={})
 Declare an output variable.
 
template<typename T>
Variable< T > & declare_output_variable (const VariableName &name, TensorShapeRef list_shape={})
 Declare an output variable.
 
const VariableBaseclone_input_variable (const VariableBase &var, const VariableName &new_name={})
 Clone a variable and put it on the input axis.
 
VariableBaseclone_output_variable (const VariableBase &var, const VariableName &new_name={})
 Clone a variable and put it on the output axis.
 
void assign_input_stack (jit::Stack &stack)
 Assign stack to input variables.
 
void assign_output_stack (jit::Stack &stack, bool out, bool dout, bool d2out)
 Assign stack to output variables and derivatives.
 
jit::Stack collect_input_stack () const
 Collect stack from input variables.
 
jit::Stack collect_output_stack (bool out, bool dout, bool d2out) const
 Collect stack from output variables and derivatives.
 

Friends

template<typename T>
const T & resolve_tensor_name (const TensorName< T > &tn, Model *caller, const std::string &pname)
 

Member Typedef Documentation

◆ VariableStorage

using VariableStorage = std::map<VariableName, std::unique_ptr<VariableBase>>

Constructor & Destructor Documentation

◆ VariableStore() [1/3]

VariableStore ( Model * object)

◆ VariableStore() [2/3]

VariableStore ( const VariableStore & )
delete

◆ VariableStore() [3/3]

◆ ~VariableStore()

virtual ~VariableStore ( )
virtualdefault

Member Function Documentation

◆ assign_input() [1/2]

void assign_input ( const ValueMap & vals)

Assign input variable values

◆ assign_input() [2/2]

void assign_input ( ValueMap && vals)

Assign input variable values.

◆ assign_input_stack()

void assign_input_stack ( jit::Stack & stack)
protected

Assign stack to input variables.

◆ assign_output()

void assign_output ( const ValueMap & vals)

Assign output variable values.

◆ assign_output_derivatives()

void assign_output_derivatives ( const DerivMap & derivs)

Assign variable derivatives.

◆ assign_output_stack()

void assign_output_stack ( jit::Stack & stack,
bool out,
bool dout,
bool d2out )
protected

Assign stack to output variables and derivatives.

◆ clear_input()

void clear_input ( )
virtual

Release allocated tensor

Reimplemented in Model.

◆ clear_output()

void clear_output ( )
virtual

Reimplemented in Model.

◆ clone_input_variable()

const VariableBase * clone_input_variable ( const VariableBase & var,
const VariableName & new_name = {} )
protected

Clone a variable and put it on the input axis.

◆ clone_output_variable()

VariableBase * clone_output_variable ( const VariableBase & var,
const VariableName & new_name = {} )
protected

Clone a variable and put it on the output axis.

◆ collect_input()

ValueMap collect_input ( ) const

Collect variable values

◆ collect_input_stack()

jit::Stack collect_input_stack ( ) const
protected

Collect stack from input variables.

◆ collect_output()

ValueMap collect_output ( ) const

◆ collect_output_derivatives()

DerivMap collect_output_derivatives ( ) const

Collect variable derivatives.

◆ collect_output_second_derivatives()

SecDerivMap collect_output_second_derivatives ( ) const

Collect variable second derivatives.

◆ collect_output_stack()

jit::Stack collect_output_stack ( bool out,
bool dout,
bool d2out ) const
protected

Collect stack from output variables and derivatives.

◆ declare_axis()

LabeledAxis & declare_axis ( const std::string & name)

◆ declare_input_variable() [1/2]

template<typename T>
const Variable< T > & declare_input_variable ( const char * name,
TensorShapeRef list_shape = {} )
protected

Declare an input variable.

◆ declare_input_variable() [2/2]

template<typename T>
const Variable< T > & declare_input_variable ( const VariableName & name,
TensorShapeRef list_shape = {} )
protected

Declare an input variable.

◆ declare_output_variable() [1/2]

template<typename T>
Variable< T > & declare_output_variable ( const char * name,
TensorShapeRef list_shape = {} )
protected

Declare an output variable.

◆ declare_output_variable() [2/2]

template<typename T>
Variable< T > & declare_output_variable ( const VariableName & name,
TensorShapeRef list_shape = {} )
protected

Declare an output variable.

◆ input_axis() [1/2]

LabeledAxis & input_axis ( )
inline

Definition of the input axis showing the layout of input variables

◆ input_axis() [2/2]

const LabeledAxis & input_axis ( ) const
inline

◆ input_variable() [1/2]

VariableBase & input_variable ( const VariableName & name)

Lookup a variable by name

◆ input_variable() [2/2]

const VariableBase & input_variable ( const VariableName & name) const

◆ input_variables() [1/2]

VariableStorage & input_variables ( )
inline

Variables

◆ input_variables() [2/2]

const VariableStorage & input_variables ( ) const
inline

◆ operator=() [1/2]

VariableStore & operator= ( const VariableStore & )
delete

◆ operator=() [2/2]

VariableStore & operator= ( VariableStore && )
delete

◆ output_axis() [1/2]

LabeledAxis & output_axis ( )
inline

Definition of the output axis showing the layout of output variables

◆ output_axis() [2/2]

const LabeledAxis & output_axis ( ) const
inline

◆ output_variable() [1/2]

VariableBase & output_variable ( const VariableName & name)

◆ output_variable() [2/2]

const VariableBase & output_variable ( const VariableName & name) const

◆ output_variables() [1/2]

VariableStorage & output_variables ( )
inline

◆ output_variables() [2/2]

const VariableStorage & output_variables ( ) const
inline

◆ send_variables_to()

void send_variables_to ( const TensorOptions & options)
protectedvirtual

Send padding variables to options.

Parameters
optionsThe target options

◆ setup_layout()

void setup_layout ( )
virtual

Setup the layout of all the registered axes.

◆ variable_options()

const TensorOptions & variable_options ( ) const
inline

Current tensor options for variables.

◆ zero_input()

void zero_input ( )
virtual

Zero variable values

Reimplemented in Model.

◆ zero_output()

void zero_output ( )
virtual

Reimplemented in Model.

Friends And Related Symbol Documentation

◆ resolve_tensor_name

template<typename T>
const T & resolve_tensor_name ( const TensorName< T > & tn,
Model * caller,
const std::string & pname )
friend