/home/runner/work/kynema/kynema/kynema/src/system/springs/calculate_quadrature_point_values.hpp Source File

Kynema API: /home/runner/work/kynema/kynema/kynema/src/system/springs/calculate_quadrature_point_values.hpp Source File
Kynema API
A flexible multibody structural dynamics code for wind turbines
Loading...
Searching...
No Matches
calculate_quadrature_point_values.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Kokkos_Core.hpp>
4
10
11namespace kynema::springs {
12
13template <typename DeviceType>
15 template <typename ValueType>
16 using View = Kokkos::View<ValueType, DeviceType>;
17 template <typename ValueType>
19
21
26
29
31 void operator()(size_t element) const {
32 using Kokkos::Array;
33
34 const auto index_0 = node_state_indices(element, 0);
35 const auto index_1 = node_state_indices(element, 1);
36
37 const auto x0_data = Array<double, 3>{x0_(element, 0), x0_(element, 1), x0_(element, 2)};
38 const auto u1_data = Array<double, 3>{Q(index_0, 0), Q(index_0, 1), Q(index_0, 2)};
39 const auto u2_data = Array<double, 3>{Q(index_1, 0), Q(index_1, 1), Q(index_1, 2)};
40 auto r_data = Array<double, 3>{};
41 auto f_data = Array<double, 3>{};
42 auto a_data = Array<double, 9>{};
43
44 const auto x0 = ConstView<double[3]>(x0_data.data());
45 const auto u1 = ConstView<double[3]>(u1_data.data());
46 const auto u2 = ConstView<double[3]>(u2_data.data());
47 const auto r = View<double[3]>(r_data.data());
48 const auto f = View<double[3]>(f_data.data());
49 const auto a = View<double[3][3]>(a_data.data());
50
51 const auto l_ref = l_ref_(element);
52 const auto k = k_(element);
53
55 const auto l = springs::CalculateLength<DeviceType>(r);
56 const auto c1 = springs::CalculateForceCoefficient1<DeviceType>(k, l_ref, l);
57 const auto c2 = springs::CalculateForceCoefficient2<DeviceType>(k, l_ref, l);
60
61 for (auto component = 0; component < 3; ++component) {
63 residual_vector_terms(element, 1, component) = -f(component);
64 }
65
66 for (auto component_1 = 0; component_1 < 3; ++component_1) {
67 for (auto component_2 = 0; component_2 < 3; ++component_2) {
70 }
71 }
72 for (auto component_1 = 0; component_1 < 3; ++component_1) {
73 for (auto component_2 = 0; component_2 < 3; ++component_2) {
76 }
77 }
78 for (auto component_1 = 0; component_1 < 3; ++component_1) {
79 for (auto component_2 = 0; component_2 < 3; ++component_2) {
82 }
83 }
84 for (auto component_1 = 0; component_1 < 3; ++component_1) {
85 for (auto component_2 = 0; component_2 < 3; ++component_2) {
88 }
89 }
90 }
91};
92
93} // namespace kynema::springs
Definition calculate_distance_components.hpp:5
static KOKKOS_FUNCTION void invoke(const ConstView< double[3]> &x0, const ConstView< double[3]> &u1, const ConstView< double[3]> &u2, const View< double[3]> &r)
Definition calculate_distance_components.hpp:14
static KOKKOS_FUNCTION void invoke(const ConstView< double[3]> &r, double c1, const View< double[3]> &f)
Definition calculate_force_vectors.hpp:14
Definition calculate_quadrature_point_values.hpp:14
ConstView< double *[7]> Q
Definition calculate_quadrature_point_values.hpp:20
View< double *[2][2][3][3]> stiffness_matrix_terms
Definition calculate_quadrature_point_values.hpp:28
View< double *[2][3]> residual_vector_terms
Definition calculate_quadrature_point_values.hpp:27
ConstView< double * > l_ref_
Definition calculate_quadrature_point_values.hpp:24
ConstView< double *[3]> x0_
Definition calculate_quadrature_point_values.hpp:23
ConstView< size_t *[2]> node_state_indices
Definition calculate_quadrature_point_values.hpp:22
Kokkos::View< ValueType, DeviceType > View
Definition calculate_quadrature_point_values.hpp:16
KOKKOS_FUNCTION void operator()(size_t element) const
Definition calculate_quadrature_point_values.hpp:31
ConstView< double * > k_
Definition calculate_quadrature_point_values.hpp:25
typename View< ValueType >::const_type ConstView
Definition calculate_quadrature_point_values.hpp:18
static KOKKOS_FUNCTION void invoke(double c1, double c2, const ConstView< double[3]> &r, double l, const View< double[3][3]> &a)
Definition calculate_stiffness_matrix.hpp:19