/home/runner/work/kynema/kynema/kynema/src/elements/beams/beams.hpp Source File

Kynema API: /home/runner/work/kynema/kynema/kynema/src/elements/beams/beams.hpp Source File
Kynema API
A flexible multibody structural dynamics code for wind turbines
Loading...
Searching...
No Matches
beams.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Kokkos_Core.hpp>
4
6
7namespace kynema {
8
21template <typename DeviceType>
22struct Beams {
23 template <typename ValueType>
24 using View = Kokkos::View<ValueType, DeviceType>;
25
26 size_t num_elems; // Total number of element
27 size_t max_elem_nodes; // Maximum number of nodes per element
28 size_t max_elem_qps; // Maximum number of quadrature points per element
29
32 View<size_t**> node_state_indices; // State row index for each node
35
37
38 // Node-based data
39 View<double** [7]> node_x0; // Inital position/rotation
40 View<double** [7]> node_u; // State: translation/rotation displacement
41 View<double** [6]> node_u_dot; // State: translation/rotation velocity
42 View<double** [6]> node_u_ddot; // State: translation/rotation acceleration
43 View<double** [6]> node_FX; // External forces
44
45 // Quadrature point data
46 View<double**> qp_weight; // Integration weights
47 View<double**> qp_jacobian; // Jacobian vector
48 View<double** [6][6]> qp_Mstar; // Mass matrix in material frame
49 View<double** [6][6]> qp_Cstar; // Stiffness matrix in material frame
50 View<double** [7]> qp_x; // Current position/orientation
51 View<double** [3]> qp_x0; // Initial position
52 View<double** [3]> qp_x0_prime; // Initial position derivative
53 View<double** [4]> qp_r0; // Initial rotation
54 View<double** [3]> qp_u; // State: translation displacement
55 View<double** [3]> qp_u_prime; // State: translation displacement derivative
56 View<double** [3]> qp_u_dot; // State: translation velocity
57 View<double** [3]> qp_u_ddot; // State: translation acceleration
58 View<double** [4]> qp_r; // State: rotation
59 View<double** [4]> qp_r_prime; // State: rotation derivative
60 View<double** [3]> qp_omega; // State: angular velocity
61 View<double** [3]> qp_omega_dot; // State: position/rotation
62 View<double** [3]> qp_deformation; // Deformation relative to rigid body motion
63 View<double** [3][4]> qp_E; // Quaternion derivative
64 View<double** [6]> qp_Fe; // External force
65
68
69 // Shape Function data
70 View<double***> shape_interp; // Shape function values
71 View<double***> shape_deriv; // Shape function derivatives
72
73 // Constructor which initializes views based on given sizes
74 Beams(const size_t n_beams, const size_t max_e_nodes, const size_t max_e_qps)
78 // Element Data
80 Kokkos::view_alloc("num_nodes_per_element", Kokkos::WithoutInitializing), num_elems
81 ),
83 Kokkos::view_alloc("num_qps_per_element", Kokkos::WithoutInitializing), num_elems
84 ),
86 Kokkos::view_alloc("node_state_indices", Kokkos::WithoutInitializing), num_elems,
88 ),
90 Kokkos::view_alloc("element_freedom_signature", Kokkos::WithoutInitializing),
92 ),
94 Kokkos::view_alloc("element_freedom_table", Kokkos::WithoutInitializing), num_elems,
96 ),
98 // Node Data
99 node_x0(
101 ),
102 node_u(
104 ),
108 ),
112 ),
113 node_FX(
114 Kokkos::view_alloc("node_force_external", Kokkos::WithoutInitializing), num_elems,
116 ),
117 // Quadrature Point data
118 qp_weight(
120 ),
123 ),
124 qp_Mstar(
126 ),
127 qp_Cstar(
129 ),
134 ),
139 ),
140 qp_u_dot(
142 ),
143 qp_u_ddot(
145 ),
149 ),
150 qp_omega(
152 ),
156 ),
160 ),
163 Kokkos::view_alloc("residual_vector_terms", Kokkos::WithoutInitializing), num_elems,
165 ),
167 Kokkos::view_alloc("system_matrix_terms", Kokkos::WithoutInitializing), num_elems,
169 ),
170 // Shape Function data
174 ),
178 ) {
180 }
181};
182
183} // namespace kynema
Definition calculate_constraint_output.hpp:8
Contains the field variables needed to compute the per-element contributions to the residual vector a...
Definition beams.hpp:22
View< double **[3]> qp_u_ddot
Definition beams.hpp:57
View< double ** > qp_weight
Definition beams.hpp:46
size_t num_elems
Definition beams.hpp:26
View< double *** > shape_interp
Definition beams.hpp:70
View< double **[3]> qp_omega_dot
Definition beams.hpp:61
View< double **[3]> qp_deformation
Definition beams.hpp:62
View< double **[4]> qp_r
Definition beams.hpp:58
size_t max_elem_nodes
Definition beams.hpp:27
View< double **[4]> qp_r_prime
Definition beams.hpp:59
View< dof::FreedomSignature ** > element_freedom_signature
Definition beams.hpp:33
View< double **[7]> qp_x
Definition beams.hpp:50
View< double *** > shape_deriv
Definition beams.hpp:71
View< double **[6]> node_u_ddot
Definition beams.hpp:42
View< double **[3]> qp_x0_prime
Definition beams.hpp:52
View< double **[6][6]> qp_Cstar
Definition beams.hpp:49
View< size_t * > num_qps_per_element
Definition beams.hpp:31
Kokkos::View< ValueType, DeviceType > View
Definition beams.hpp:24
View< double **[4]> qp_r0
Definition beams.hpp:53
View< double **[7]> node_x0
Definition beams.hpp:39
View< double ** > qp_jacobian
Definition beams.hpp:47
View< size_t ** > node_state_indices
Definition beams.hpp:32
View< double **[6]> node_FX
Definition beams.hpp:43
View< double **[6][6]> qp_Mstar
Definition beams.hpp:48
View< size_t **[6]> element_freedom_table
Definition beams.hpp:34
View< double **[3]> qp_u
Definition beams.hpp:54
View< double[3]> gravity
Definition beams.hpp:36
View< double **[3]> qp_u_dot
Definition beams.hpp:56
Beams(const size_t n_beams, const size_t max_e_nodes, const size_t max_e_qps)
Definition beams.hpp:74
View< double **[3]> qp_omega
Definition beams.hpp:60
View< double **[6]> residual_vector_terms
Definition beams.hpp:66
View< double **[3]> qp_x0
Definition beams.hpp:51
View< double **[6]> qp_Fe
Definition beams.hpp:64
View< double ***[6][6]> system_matrix_terms
Definition beams.hpp:67
View< size_t * > num_nodes_per_element
Definition beams.hpp:30
View< double **[6]> node_u_dot
Definition beams.hpp:41
size_t max_elem_qps
Definition beams.hpp:28
View< double **[3]> qp_u_prime
Definition beams.hpp:55
View< double **[3][4]> qp_E
Definition beams.hpp:63
View< double **[7]> node_u
Definition beams.hpp:40