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

#include <VariableStore.h>

Inheritance diagram for VariableStore:

Public Types

using VariableStorage = std::map<VariableName, std::unique_ptr<VariableBase>>
using DerivSparsity = std::vector<std::pair<VariableBase *, const VariableBase *>>
using SecDerivSparsity

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)
const TensorOptionsvariable_options () const
 Current tensor options for variables.
virtual void zero_undefined_input ()
 Fill undefined input variables with zeros.
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 clear_derivatives ()
void cache_derivative_sparsity ()
void cache_second_derivative_sparsity ()
 Cache sparsity of second derivatives.
const std::optional< DerivSparsity > & derivative_sparsity () const
 Derivative sparsity.
const std::optional< SecDerivSparsity > & second_derivative_sparsity () const
 Second derivative sparsity.
void assign_input (const ValueMap &vals)
void assign_input (const std::vector< VariableName > &, const SparseTensorList &)
 Assign input variable values for the given variable names.
void assign_output (const ValueMap &vals)
 Assign output variable values.
void assign_output (const std::vector< VariableName > &, const SparseTensorList &)
 Assign output variable values for the given variable names.
void assign_output_derivatives (const DerivMap &derivs)
 Assign variable derivatives.
void assign_output_derivatives (const std::vector< VariableName > &, const std::vector< VariableName > &, const SparseTensorList &)
 Assign variable derivatives for the given variable names.
ValueMap collect_input () const
SparseTensorList collect_input (const std::vector< VariableName > &) const
 Collect input variable values for the given variable names.
ValueMap collect_output () const
 Collect output variable values.
SparseTensorList collect_output (const std::vector< VariableName > &) const
 Collect output variable values for the given variable names.
DerivMap collect_output_derivatives () const
 Collect variable derivatives.
SparseTensorList collect_output_derivatives (const std::vector< VariableName > &, const std::vector< VariableName > &) const
 Collect variable derivatives for the given variable names.
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, bool allow_duplicate=false)
 Declare an input variable.
template<typename T>
const Variable< T > & declare_input_variable (const VariableName &name, bool allow_duplicate=false)
 Declare an input variable.
template<typename T>
Variable< T > & declare_output_variable (const char *name)
 Declare an output variable.
template<typename T>
Variable< T > & declare_output_variable (const VariableName &name)
 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 > &, Model *, const std::string &)

Member Typedef Documentation

◆ DerivSparsity

using DerivSparsity = std::vector<std::pair<VariableBase *, const VariableBase *>>

◆ SecDerivSparsity

Initial value:
std::vector<std::tuple<VariableBase *, const VariableBase *, const VariableBase *>>

◆ 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 ( VariableStore && )
delete

◆ ~VariableStore()

virtual ~VariableStore ( )
virtualdefault

Member Function Documentation

◆ assign_input() [1/2]

void assign_input ( const std::vector< VariableName > & ,
const SparseTensorList &  )

Assign input variable values for the given variable names.

◆ assign_input() [2/2]

void assign_input ( const ValueMap & vals)

Assign input variable values

◆ assign_input_stack()

void assign_input_stack ( jit::Stack & stack)
protected

Assign stack to input variables.

◆ assign_output() [1/2]

void assign_output ( const std::vector< VariableName > & ,
const SparseTensorList &  )

Assign output variable values for the given variable names.

◆ assign_output() [2/2]

void assign_output ( const ValueMap & vals)

Assign output variable values.

◆ assign_output_derivatives() [1/2]

void assign_output_derivatives ( const DerivMap & derivs)

Assign variable derivatives.

◆ assign_output_derivatives() [2/2]

void assign_output_derivatives ( const std::vector< VariableName > & ,
const std::vector< VariableName > & ,
const SparseTensorList &  )

Assign variable derivatives for the given variable names.

◆ assign_output_stack()

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

Assign stack to output variables and derivatives.

◆ cache_derivative_sparsity()

void cache_derivative_sparsity ( )

Cache sparsity of first derivatives

◆ cache_second_derivative_sparsity()

void cache_second_derivative_sparsity ( )

Cache sparsity of second derivatives.

◆ clear_derivatives()

virtual void clear_derivatives ( )
virtual

◆ clear_input()

virtual void clear_input ( )
virtual

Release allocated tensor

Reimplemented in Model.

◆ clear_output()

virtual 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() [1/2]

ValueMap collect_input ( ) const

Collect input variable values

◆ collect_input() [2/2]

SparseTensorList collect_input ( const std::vector< VariableName > & ) const

Collect input variable values for the given variable names.

◆ collect_input_stack()

jit::Stack collect_input_stack ( ) const
protected

Collect stack from input variables.

◆ collect_output() [1/2]

ValueMap collect_output ( ) const

Collect output variable values.

◆ collect_output() [2/2]

SparseTensorList collect_output ( const std::vector< VariableName > & ) const

Collect output variable values for the given variable names.

◆ collect_output_derivatives() [1/2]

DerivMap collect_output_derivatives ( ) const

Collect variable derivatives.

◆ collect_output_derivatives() [2/2]

SparseTensorList collect_output_derivatives ( const std::vector< VariableName > & ,
const std::vector< VariableName > &  ) const

Collect variable derivatives for the given variable names.

◆ 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,
bool allow_duplicate = false )
protected

Declare an input variable.

Template Parameters
TTensor type
Parameters
nameVariable name
allow_duplicateWhether to allow duplicate variable declaration
Returns
const Variable<T>&

◆ declare_input_variable() [2/2]

template<typename T>
const Variable< T > & declare_input_variable ( const VariableName & name,
bool allow_duplicate = false )
protected

Declare an input variable.

Template Parameters
TTensor type
Parameters
nameVariable name
allow_duplicateWhether to allow duplicate variable declaration
Returns
const Variable<T>&

◆ declare_output_variable() [1/2]

template<typename T>
Variable< T > & declare_output_variable ( const char * name)
protected

Declare an output variable.

Template Parameters
TTensor type
Parameters
nameVariable name
Returns
const Variable<T>&

◆ declare_output_variable() [2/2]

template<typename T>
Variable< T > & declare_output_variable ( const VariableName & name)
protected

Declare an output variable.

Template Parameters
TTensor type
Parameters
nameVariable name
Returns
const Variable<T>&

◆ derivative_sparsity()

const std::optional< DerivSparsity > & derivative_sparsity ( ) const

Derivative sparsity.

◆ input_axis() [1/2]

LabeledAxis & input_axis ( )

Input axis describing the assembly layout of input variables

◆ input_axis() [2/2]

const LabeledAxis & input_axis ( ) const

◆ input_variable() [1/2]

VariableBase & input_variable ( const VariableName & )

Lookup a variable by name

◆ input_variable() [2/2]

const VariableBase & input_variable ( const VariableName & ) 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 ( )

Output axis describing the assembly layout of output variables

◆ output_axis() [2/2]

const LabeledAxis & output_axis ( ) const

◆ output_variable() [1/2]

VariableBase & output_variable ( const VariableName & )

◆ output_variable() [2/2]

const VariableBase & output_variable ( const VariableName & ) const

◆ output_variables() [1/2]

VariableStorage & output_variables ( )
inline

◆ output_variables() [2/2]

const VariableStorage & output_variables ( ) const
inline

◆ second_derivative_sparsity()

const std::optional< SecDerivSparsity > & second_derivative_sparsity ( ) const

Second derivative sparsity.

◆ send_variables_to()

virtual void send_variables_to ( const TensorOptions & options)
protectedvirtual

Send padding variables to options.

Parameters
optionsThe target options

◆ variable_options()

const TensorOptions & variable_options ( ) const
inline

Current tensor options for variables.

◆ zero_undefined_input()

virtual void zero_undefined_input ( )
virtual

Fill undefined input variables with zeros.

Reimplemented in Model.

◆ resolve_tensor_name

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