3#include <Kokkos_Core.hpp>
12template <
typename DeviceType>
16 using simd_type = Kokkos::Experimental::simd<double>;
17 using TeamPolicy = Kokkos::TeamPolicy<typename DeviceType::execution_space>;
19 constexpr auto width = simd_type::size();
22 const auto padded_num_nodes = (num_nodes / width + 1) * width;
24 const auto vector_length =
25 std::min(
static_cast<int>(num_nodes * num_nodes), TeamPolicy::vector_length_max());
26 auto range_policy = TeamPolicy(
static_cast<int>(beams.
num_elems), Kokkos::AUTO(), vector_length);
28 const auto shape_size = Kokkos::View<double**>::shmem_size(padded_num_nodes, num_qps);
29 const auto weight_size = Kokkos::View<double*>::shmem_size(num_qps);
30 const auto node_variable_size = Kokkos::View<double* [7]>::shmem_size(num_nodes);
31 const auto qp_variable_size = Kokkos::View<double* [6]>::shmem_size(num_qps);
32 const auto qp_matrix_size = Kokkos::View<double* [6][6]>::shmem_size(num_qps);
33 const auto system_matrix_size = Kokkos::View<double** [6][6]>::shmem_size(num_nodes, num_nodes);
36 4 * node_variable_size + 5 * qp_variable_size + 7 * qp_matrix_size + 2 * system_matrix_size;
37 const auto smem = 2 * shape_size + 2 * weight_size;
38 range_policy.set_scratch_size(1, Kokkos::PerTeam(hbmem))
39 .set_scratch_size(0, Kokkos::PerTeam(smem));
42 "CalculateQuadraturePointValues", range_policy,
Definition assemble_constraints_matrix.hpp:11
void UpdateSystemVariablesBeams(StepParameters ¶meters, const Beams< DeviceType > &beams, State< DeviceType > &state)
Definition update_system_variables_beams.hpp:13
Contains the field variables needed to compute the per-element contributions to the residual vector a...
Definition beams.hpp:22
View< double ** > qp_weight
Definition beams.hpp:46
size_t num_elems
Definition beams.hpp:26
View< double *** > shape_interp
Definition beams.hpp:70
size_t max_elem_nodes
Definition beams.hpp:27
View< double *** > shape_deriv
Definition beams.hpp:71
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
View< double **[4]> qp_r0
Definition beams.hpp:53
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< double[3]> gravity
Definition beams.hpp:36
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
size_t max_elem_qps
Definition beams.hpp:28
Container for storing the complete system state of the simulation at a given time increment.
Definition state.hpp:18
View< double *[6]> v
Definition state.hpp:34
View< double *[6][6]> tangent
Definition state.hpp:38
View< double *[7]> q
Definition state.hpp:33
View< double *[6]> vd
Definition state.hpp:35
A Struct containing the paramters used to control the time stepping process.
Definition step_parameters.hpp:12
double gamma_prime
Definition step_parameters.hpp:20
double beta_prime
Definition step_parameters.hpp:21
Definition calculate_quadrature_point_values.hpp:16