Constraints< DeviceType > Struct Template Reference

Kynema API: kynema::Constraints< DeviceType > Struct Template Reference
Kynema API
A flexible multibody structural dynamics code for wind turbines
Loading...
Searching...
No Matches
kynema::Constraints< DeviceType > Struct Template Reference

Container class for managing multiple constraints in a simulation. More...

#include <constraints.hpp>

Public Types

template<typename ValueType >
using View = Kokkos::View< ValueType, DeviceType >
 
template<typename ValueType >
using ConstView = typename View< ValueType >::const_type
 

Public Member Functions

 Constraints (std::span< const constraints::Constraint > constraints, std::span< const Node > nodes)
 
template<typename ArrayType >
void UpdateDisplacement (size_t constraint_id, const ArrayType &disp) const
 Sets the new displacement for the given constraint.
 
void UpdateViews ()
 Transfers new prescribed displacements and control signals to Views.
 

Static Public Member Functions

static std::array< double, 3 > CalculateX0 (const constraints::Constraint &constraint, const Node &target_node, const Node &base_node)
 Calculates the initial relative position (X0) based on constraint type and nodes.
 
static std::array< std::array< double, 3 >, 3 > CalculateAxes (const constraints::Constraint &constraint, const std::array< double, 3 > &x0)
 Calculates the rotation axes for a constraint based on its type and configuration.
 

Public Attributes

size_t num_constraints
 
size_t num_dofs
 
View< constraints::ConstraintType * > type
 
std::vector< double * > control_signal
 
View< size_t * > base_node_index
 
View< size_t * > target_node_index
 
View< Kokkos::pair< size_t, size_t > * > row_range
 
View< dof::FreedomSignature * > base_node_freedom_signature
 
View< dof::FreedomSignature * > target_node_freedom_signature
 
View< size_t * > base_active_dofs
 
View< size_t * > target_active_dofs
 
View< size_t *[6]> base_node_freedom_table
 
View< size_t *[6]> target_node_freedom_table
 
View< double *[3]> X0
 
View< double *[3][3]> axes
 
View< double *[7]> input
 
View< double *[3]> output
 
View< double *[6]> lambda
 
View< double *[7]>::HostMirror host_input
 
View< double *[3]>::HostMirror host_output
 
View< double *[6]> residual_terms
 
View< double *[6]> base_lambda_residual_terms
 
View< double *[6]> target_lambda_residual_terms
 
View< double *[6]> system_residual_terms
 
View< double *[6][6]> base_gradient_terms
 
View< double *[6][6]> target_gradient_terms
 
View< double *[6][6]> base_gradient_transpose_terms
 
View< double *[6][6]> target_gradient_transpose_terms
 

Detailed Description

template<typename DeviceType>
struct kynema::Constraints< DeviceType >

Container class for managing multiple constraints in a simulation.

Manages a collection of constraints between nodes, including their properties, freedom signatures, and computational data structures. This class handles both single-node boundary conditions and two-node constraints (like joints). It provides facilities for:

  • Storing constraint properties (types, node indices, axes)
  • Managing degrees of freedom and freedom signatures
  • Handling control signals and prescribed displacements
  • Maintaining computational views for residuals and gradients

Member Typedef Documentation

◆ ConstView

template<typename DeviceType >
template<typename ValueType >
using kynema::Constraints< DeviceType >::ConstView = typename View<ValueType>::const_type

◆ View

template<typename DeviceType >
template<typename ValueType >
using kynema::Constraints< DeviceType >::View = Kokkos::View<ValueType, DeviceType>

Constructor & Destructor Documentation

◆ Constraints()

template<typename DeviceType >
kynema::Constraints< DeviceType >::Constraints ( std::span< const constraints::Constraint constraints,
std::span< const Node nodes 
)
inlineexplicit

Member Function Documentation

◆ CalculateAxes()

template<typename DeviceType >
static std::array< std::array< double, 3 >, 3 > kynema::Constraints< DeviceType >::CalculateAxes ( const constraints::Constraint constraint,
const std::array< double, 3 > &  x0 
)
inlinestatic

Calculates the rotation axes for a constraint based on its type and configuration.

◆ CalculateX0()

template<typename DeviceType >
static std::array< double, 3 > kynema::Constraints< DeviceType >::CalculateX0 ( const constraints::Constraint constraint,
const Node target_node,
const Node base_node 
)
inlinestatic

Calculates the initial relative position (X0) based on constraint type and nodes.

◆ UpdateDisplacement()

template<typename DeviceType >
template<typename ArrayType >
void kynema::Constraints< DeviceType >::UpdateDisplacement ( size_t  constraint_id,
const ArrayType disp 
) const
inline

Sets the new displacement for the given constraint.

◆ UpdateViews()

template<typename DeviceType >
void kynema::Constraints< DeviceType >::UpdateViews ( )
inline

Transfers new prescribed displacements and control signals to Views.

Member Data Documentation

◆ axes

template<typename DeviceType >
View<double* [3][3]> kynema::Constraints< DeviceType >::axes

◆ base_active_dofs

template<typename DeviceType >
View<size_t*> kynema::Constraints< DeviceType >::base_active_dofs

◆ base_gradient_terms

template<typename DeviceType >
View<double* [6][6]> kynema::Constraints< DeviceType >::base_gradient_terms

◆ base_gradient_transpose_terms

template<typename DeviceType >
View<double* [6][6]> kynema::Constraints< DeviceType >::base_gradient_transpose_terms

◆ base_lambda_residual_terms

template<typename DeviceType >
View<double* [6]> kynema::Constraints< DeviceType >::base_lambda_residual_terms

◆ base_node_freedom_signature

template<typename DeviceType >
View<dof::FreedomSignature*> kynema::Constraints< DeviceType >::base_node_freedom_signature

◆ base_node_freedom_table

template<typename DeviceType >
View<size_t* [6]> kynema::Constraints< DeviceType >::base_node_freedom_table

◆ base_node_index

template<typename DeviceType >
View<size_t*> kynema::Constraints< DeviceType >::base_node_index

◆ control_signal

template<typename DeviceType >
std::vector<double*> kynema::Constraints< DeviceType >::control_signal

◆ host_input

template<typename DeviceType >
View<double*[7]>::HostMirror kynema::Constraints< DeviceType >::host_input

◆ host_output

template<typename DeviceType >
View<double*[3]>::HostMirror kynema::Constraints< DeviceType >::host_output

◆ input

template<typename DeviceType >
View<double* [7]> kynema::Constraints< DeviceType >::input

◆ lambda

template<typename DeviceType >
View<double* [6]> kynema::Constraints< DeviceType >::lambda

◆ num_constraints

template<typename DeviceType >
size_t kynema::Constraints< DeviceType >::num_constraints

◆ num_dofs

template<typename DeviceType >
size_t kynema::Constraints< DeviceType >::num_dofs

◆ output

template<typename DeviceType >
View<double* [3]> kynema::Constraints< DeviceType >::output

◆ residual_terms

template<typename DeviceType >
View<double* [6]> kynema::Constraints< DeviceType >::residual_terms

◆ row_range

template<typename DeviceType >
View<Kokkos::pair<size_t, size_t>*> kynema::Constraints< DeviceType >::row_range

◆ system_residual_terms

template<typename DeviceType >
View<double* [6]> kynema::Constraints< DeviceType >::system_residual_terms

◆ target_active_dofs

template<typename DeviceType >
View<size_t*> kynema::Constraints< DeviceType >::target_active_dofs

◆ target_gradient_terms

template<typename DeviceType >
View<double* [6][6]> kynema::Constraints< DeviceType >::target_gradient_terms

◆ target_gradient_transpose_terms

template<typename DeviceType >
View<double* [6][6]> kynema::Constraints< DeviceType >::target_gradient_transpose_terms

◆ target_lambda_residual_terms

template<typename DeviceType >
View<double* [6]> kynema::Constraints< DeviceType >::target_lambda_residual_terms

◆ target_node_freedom_signature

template<typename DeviceType >
View<dof::FreedomSignature*> kynema::Constraints< DeviceType >::target_node_freedom_signature

◆ target_node_freedom_table

template<typename DeviceType >
View<size_t* [6]> kynema::Constraints< DeviceType >::target_node_freedom_table

◆ target_node_index

template<typename DeviceType >
View<size_t*> kynema::Constraints< DeviceType >::target_node_index

◆ type

template<typename DeviceType >
View<constraints::ConstraintType*> kynema::Constraints< DeviceType >::type

◆ X0

template<typename DeviceType >
View<double* [3]> kynema::Constraints< DeviceType >::X0

The documentation for this struct was generated from the following file: