deal.II version GIT relicensing-6834-g5b78e6bcdf 2026-10-01 11:20:01+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
Portable::MatrixFree< dim, Number >::PrecomputedData Struct Reference

#include <deal.II/matrix_free/portable_matrix_free.h>

Detailed Description

template<int dim, typename Number = double>
struct Portable::MatrixFree< dim, Number >::PrecomputedData

Structure which is passed to the kernel for a single DoFHandler. It is used to pass all the necessary information from the CPU to the GPU and is precomputed on the CPU. This data is read-only once we run on the GPU.

Definition at line 276 of file portable_matrix_free.h.

Public Member Functions

unsigned int inv_jacobian_index (const int cell, const int q_point) const
 
Number JxW_value (const int cell, const int q_point) const
 

Public Attributes

Kokkos::View< point_type **, MemorySpace::Default::kokkos_space > q_points
 
Kokkos::View< types::global_dof_index **, MemorySpace::Default::kokkos_space > local_to_global
 
Kokkos::View< Number *[dim][dim], MemorySpace::Default::kokkos_space > inv_jacobian
 
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > JxW
 
Kokkos::View<::internal::MatrixFreeFunctions::GeometryType *, MemorySpace::Default::kokkos_space > cell_type
 
Kokkos::View< unsigned int *, MemorySpace::Default::kokkos_space > data_index_offsets
 
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > q_weights
 
Kokkos::View<::internal::MatrixFreeFunctions::ConstraintKinds *, MemorySpace::Default::kokkos_space > constraint_mask
 
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > shape_values
 
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > shape_gradients
 
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > co_shape_gradients
 
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > constraint_weights
 
unsigned int n_cells
 
unsigned int n_components
 
unsigned int padding_length
 
unsigned int row_start
 
bool use_coloring
 
::internal::MatrixFreeFunctions::ElementType element_type
 
unsigned int scratch_pad_size
 

Member Function Documentation

◆ inv_jacobian_index()

template<int dim, typename Number = double>
unsigned int Portable::MatrixFree< dim, Number >::PrecomputedData::inv_jacobian_index ( const int  cell,
const int  q_point 
) const
inline

Return the index into the compressed inv_jacobian storage for the given cell and quadrature point.

Definition at line 406 of file portable_matrix_free.h.

◆ JxW_value()

template<int dim, typename Number = double>
Number Portable::MatrixFree< dim, Number >::PrecomputedData::JxW_value ( const int  cell,
const int  q_point 
) const
inline

Return the mapped JxW for the given cell and quadrature point, taking the compressed storage into account.

Definition at line 420 of file portable_matrix_free.h.

Member Data Documentation

◆ q_points

template<int dim, typename Number = double>
Kokkos::View<point_type **, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::q_points

Kokkos::View of the quadrature points.

Definition at line 281 of file portable_matrix_free.h.

◆ local_to_global

template<int dim, typename Number = double>
Kokkos::View<types::global_dof_index **, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::local_to_global

Map the position in the local vector to the position in the global vector.

Definition at line 289 of file portable_matrix_free.h.

◆ inv_jacobian

template<int dim, typename Number = double>
Kokkos::View<Number *[dim][dim], MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::inv_jacobian

Kokkos::View of the inverse Jacobian, stored in compressed form: for a cell classified as Cartesian or affine only a single inverse Jacobian is stored (at index data_index_offsets(cell)), while for a general cell one inverse Jacobian per quadrature point is stored (starting at index data_index_offsets(cell)).

Definition at line 299 of file portable_matrix_free.h.

◆ JxW

template<int dim, typename Number = double>
Kokkos::View<Number *, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::JxW

Kokkos::View of the determinant of the mapping Jacobian times quadrature weights, stored in compressed form: for a cell classified as Cartesian or affine only the (constant) Jacobian determinant is stored (at index data_index_offsets(cell)), which must be multiplied by the quadrature weight of the respective quadrature point to obtain JxW, while for a general cell the JxW values of all quadrature points are stored (starting at index data_index_offsets(cell)). Use JxW_value() to access the data.

Definition at line 311 of file portable_matrix_free.h.

◆ cell_type

template<int dim, typename Number = double>
Kokkos::View<::internal::MatrixFreeFunctions::GeometryType *, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::cell_type

Geometric classification (Cartesian, affine, or general) of each cell.

Definition at line 318 of file portable_matrix_free.h.

◆ data_index_offsets

template<int dim, typename Number = double>
Kokkos::View<unsigned int *, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::data_index_offsets

Index of the first entry of each cell within the compressed inv_jacobian and JxW storage.

Definition at line 325 of file portable_matrix_free.h.

◆ q_weights

template<int dim, typename Number = double>
Kokkos::View<Number *, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::q_weights

Quadrature weights of the reference cell, used to compute JxW on Cartesian and affine cells from the stored Jacobian determinant.

Definition at line 331 of file portable_matrix_free.h.

◆ constraint_mask

template<int dim, typename Number = double>
Kokkos::View<::internal::MatrixFreeFunctions::ConstraintKinds *, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::constraint_mask

Mask deciding where constraints are set on a given cell.

Definition at line 338 of file portable_matrix_free.h.

◆ shape_values

template<int dim, typename Number = double>
Kokkos::View<Number *, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::shape_values

Values of the shape functions.

Definition at line 343 of file portable_matrix_free.h.

◆ shape_gradients

template<int dim, typename Number = double>
Kokkos::View<Number *, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::shape_gradients

Gradients of the shape functions.

Definition at line 349 of file portable_matrix_free.h.

◆ co_shape_gradients

template<int dim, typename Number = double>
Kokkos::View<Number *, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::co_shape_gradients

Gradients of the shape functions for collocation methods.

Definition at line 355 of file portable_matrix_free.h.

◆ constraint_weights

template<int dim, typename Number = double>
Kokkos::View<Number *, MemorySpace::Default::kokkos_space> Portable::MatrixFree< dim, Number >::PrecomputedData::constraint_weights

Weights used when resolving hanging nodes.

Definition at line 361 of file portable_matrix_free.h.

◆ n_cells

template<int dim, typename Number = double>
unsigned int Portable::MatrixFree< dim, Number >::PrecomputedData::n_cells

Number of cells.

Definition at line 366 of file portable_matrix_free.h.

◆ n_components

template<int dim, typename Number = double>
unsigned int Portable::MatrixFree< dim, Number >::PrecomputedData::n_components

Number of components.

Definition at line 371 of file portable_matrix_free.h.

◆ padding_length

template<int dim, typename Number = double>
unsigned int Portable::MatrixFree< dim, Number >::PrecomputedData::padding_length

Length of the padding.

Definition at line 376 of file portable_matrix_free.h.

◆ row_start

template<int dim, typename Number = double>
unsigned int Portable::MatrixFree< dim, Number >::PrecomputedData::row_start

Row start (including padding).

Definition at line 381 of file portable_matrix_free.h.

◆ use_coloring

template<int dim, typename Number = double>
bool Portable::MatrixFree< dim, Number >::PrecomputedData::use_coloring

If true, use graph coloring has been used and we can simply add into the destingation vector. Otherwise, use atomic operations.

Definition at line 387 of file portable_matrix_free.h.

◆ element_type

template<int dim, typename Number = double>
::internal::MatrixFreeFunctions::ElementType Portable::MatrixFree< dim, Number >::PrecomputedData::element_type

Encodes the type of element detected at construction. FEEvaluation will select the most efficient algorithm based on the given element type.

Definition at line 394 of file portable_matrix_free.h.

◆ scratch_pad_size

template<int dim, typename Number = double>
unsigned int Portable::MatrixFree< dim, Number >::PrecomputedData::scratch_pad_size

Size of the scratch pad for temporary storage in shared memory.

Definition at line 399 of file portable_matrix_free.h.


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