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
const TensorOptionsvariable_options () const
 Current tensor options for variables.
virtual void zero_undefined_input ()
 Fill undefined input variables with zeros.
void set_output_derivative_filter (const std::vector< std::pair< VariableName, VariableName > > &derivs)
const std::optional< std::vector< std::pair< VariableName, VariableName > > > & requested_output_derivatives () const
 The currently active output derivative filter, or nullopt if all derivatives are requested.
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 &, bool allow_nonexistent=false)
void assign_input (const SparseVector &, bool allow_nonexistent=false)
void assign_output (const SparseVector &)
 Assign output variable values.
void assign_output_derivatives (const SparseMatrix &)
 Assign variable derivatives.
SparseVector collect_input (const AxisLayout &) const
ValueMap collect_output () const
 Collect output variable values.
SparseVector collect_output (const AxisLayout &) const
DerivMap collect_output_derivatives () const
 Collect variable derivatives.
SparseMatrix collect_output_derivatives (const AxisLayout &, const AxisLayout &) const
SecDerivMap collect_output_second_derivatives () const
 Collect variable second derivatives.

Protected Member Functions

void set_output_derivative_filter_nl_sys (const std::vector< std::pair< VariableName, VariableName > > &derivs)
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, std::optional< VariableName > new_name=std::nullopt)
 Clone a variable and put it on the input axis.
VariableBaseclone_output_variable (const VariableBase &var, std::optional< VariableName > new_name=std::nullopt)
 Clone a variable and put it on the output axis.
void assign_input_stack (jit::Stack &stack)
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 SparseVector & ,
bool allow_nonexistent = false )

◆ assign_input() [2/2]

void assign_input ( const ValueMap & ,
bool allow_nonexistent = false )

Assign input variable values

◆ assign_input_stack()

void assign_input_stack ( jit::Stack & stack)
protected

JIT-specific methods for stack assignment and collection Assign stack to input variables

◆ assign_output()

void assign_output ( const SparseVector & )

Assign output variable values.

◆ assign_output_derivatives()

void assign_output_derivatives ( const SparseMatrix & )

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.

◆ 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,
std::optional< VariableName > new_name = std::nullopt )
protected

Clone a variable and put it on the input axis.

◆ clone_output_variable()

VariableBase * clone_output_variable ( const VariableBase & var,
std::optional< VariableName > new_name = std::nullopt )
protected

Clone a variable and put it on the output axis.

◆ collect_input()

SparseVector collect_input ( const AxisLayout & ) const

Collect input variable values

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

SparseVector collect_output ( const AxisLayout & ) const

◆ collect_output_derivatives() [1/2]

DerivMap collect_output_derivatives ( ) const

Collect variable derivatives.

◆ collect_output_derivatives() [2/2]

SparseMatrix collect_output_derivatives ( const AxisLayout & ,
const AxisLayout &  ) const

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

◆ requested_output_derivatives()

const std::optional< std::vector< std::pair< VariableName, VariableName > > > & requested_output_derivatives ( ) const
inline

The currently active output derivative filter, or nullopt if all derivatives are requested.

◆ 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

◆ set_output_derivative_filter()

void set_output_derivative_filter ( const std::vector< std::pair< VariableName, VariableName > > & derivs)

Set the (output, input) pairs whose derivatives should be computed and returned. Pass an empty vector to clear the filter and compute all derivatives.

◆ set_output_derivative_filter_nl_sys()

void set_output_derivative_filter_nl_sys ( const std::vector< std::pair< VariableName, VariableName > > & derivs)
protected

Same as set_output_derivative_filter but applies only during nonlinear system assembly. Pass an empty vector to clear the filter. Independent from the regular filter.

◆ 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