adamantine
Public Member Functions | Private Types | Private Attributes | List of all members
adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType > Class Template Referencefinal

#include <ThermalOperatorDevice.hh>

Inheritance diagram for adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >:
adamantine::ThermalOperatorBase< dim, MemorySpaceType >

Public Member Functions

 ThermalOperatorDevice (MPI_Comm const &communicator, Boundary const &boundary, MaterialProperty< dim, n_materials, p_order, MaterialStates, MemorySpaceType > &material_properties)
 
void reinit (dealii::DoFHandler< dim > const &dof_handler, dealii::AffineConstraints< double > const &affine_constraints, dealii::hp::QCollection< 1 > const &q_collection) override
 
void compute_inverse_mass_matrix (dealii::DoFHandler< dim > const &dof_handler, dealii::AffineConstraints< double > const &affine_constraints) override
 
void clear () override
 
dealii::types::global_dof_index m () const override
 
dealii::types::global_dof_index n () const override
 
dealii::CUDAWrappers::MatrixFree< dim, double > const & get_matrix_free () const
 
void vmult (dealii::LA::distributed::Vector< double, MemorySpaceType > &dst, dealii::LA::distributed::Vector< double, MemorySpaceType > const &src) const override
 
void vmult_add (dealii::LA::distributed::Vector< double, MemorySpaceType > &dst, dealii::LA::distributed::Vector< double, MemorySpaceType > const &src) const override
 
std::shared_ptr< dealii::LA::distributed::Vector< double, MemorySpaceType > > get_inverse_mass_matrix () const override
 
void initialize_dof_vector (dealii::LA::distributed::Vector< double, MemorySpaceType > &vector) const override
 
void update_boundary_material_properties (dealii::LA::distributed::Vector< double, MemorySpaceType > const &state)
 
void get_state_from_material_properties () override
 
void set_state_to_material_properties () override
 
void set_material_deposition_orientation (std::vector< double > const &deposition_cos, std::vector< double > const &deposition_sin) override
 
void set_time_and_source_height (double, double) override
 
void update_inv_rho_cp_cell ()
 
double get_inv_rho_cp (typename dealii::DoFHandler< dim >::cell_iterator const &cell, unsigned int q) const
 
- Public Member Functions inherited from adamantine::ThermalOperatorBase< dim, MemorySpaceType >
 ThermalOperatorBase ()=default
 
virtual ~ThermalOperatorBase ()=default
 

Private Types

using kokkos_default = dealii::MemorySpace::Default::kokkos_space
 

Private Attributes

MPI_Comm const & _communicator
 
bool _adiabatic_only_bc = true
 
dealii::types::global_dof_index _m
 
unsigned int _n_owned_cells
 
dealii::CUDAWrappers::MatrixFree< dim, double >::AdditionalData _matrix_free_data
 
MaterialProperty< dim, n_materials, p_order, MaterialStates, MemorySpaceType > & _material_properties
 
dealii::CUDAWrappers::MatrixFree< dim, double > _matrix_free
 
Kokkos::View< double *, kokkos_default_liquid_ratio
 
Kokkos::View< double *, kokkos_default_powder_ratio
 
Kokkos::View< dealii::types::material_id *, kokkos_default_material_id
 
Kokkos::View< double *, kokkos_default_inv_rho_cp
 
Kokkos::View< double *, kokkos_default_deposition_cos
 
Kokkos::View< double *, kokkos_default_deposition_sin
 
std::map< typename dealii::DoFHandler< dim >::cell_iterator, std::vector< unsigned int > > _cell_it_to_mf_pos
 
std::shared_ptr< dealii::LA::distributed::Vector< double, MemorySpaceType > > _inverse_mass_matrix
 
std::map< typename dealii::DoFHandler< dim >::cell_iterator, double > _inv_rho_cp_cells
 

Detailed Description

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates, typename MemorySpaceType>
class adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >

Definition at line 19 of file ThermalOperatorDevice.hh.

Member Typedef Documentation

◆ kokkos_default

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
using adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::kokkos_default = dealii::MemorySpace::Default::kokkos_space
private

Definition at line 94 of file ThermalOperatorDevice.hh.

Constructor & Destructor Documentation

◆ ThermalOperatorDevice()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::ThermalOperatorDevice ( MPI_Comm const &  communicator,
Boundary const &  boundary,
MaterialProperty< dim, n_materials, p_order, MaterialStates, MemorySpaceType > &  material_properties 
)

Definition at line 454 of file ThermalOperatorDevice.templates.hh.

Member Function Documentation

◆ clear()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::clear
overridevirtual

◆ compute_inverse_mass_matrix()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::compute_inverse_mass_matrix ( dealii::DoFHandler< dim > const &  dof_handler,
dealii::AffineConstraints< double > const &  affine_constraints 
)
overridevirtual

◆ get_inv_rho_cp()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
double adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::get_inv_rho_cp ( typename dealii::DoFHandler< dim >::cell_iterator const &  cell,
unsigned int  q 
) const
inline

Return the value of $ \frac{1}{\rho C_p} $ for a given cell and quadrature point.

Definition at line 172 of file ThermalOperatorDevice.hh.

◆ get_inverse_mass_matrix()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
std::shared_ptr< dealii::LA::distributed::Vector< double, MemorySpaceType > > adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::get_inverse_mass_matrix
inlineoverridevirtual

◆ get_matrix_free()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
dealii::CUDAWrappers::MatrixFree< dim, double > const & adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::get_matrix_free
inline

Definition at line 163 of file ThermalOperatorDevice.hh.

◆ get_state_from_material_properties()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::get_state_from_material_properties
overridevirtual

◆ initialize_dof_vector()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::initialize_dof_vector ( dealii::LA::distributed::Vector< double, MemorySpaceType > &  vector) const
overridevirtual

◆ m()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
dealii::types::global_dof_index adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::m ( ) const
inlineoverridevirtual

Return the dimension of the codomain (or range) space. To remember: the matrix is of dimension m×n.

Implements adamantine::ThermalOperatorBase< dim, MemorySpaceType >.

Definition at line 134 of file ThermalOperatorDevice.hh.

◆ n()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
dealii::types::global_dof_index adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::n ( ) const
inlineoverridevirtual

Return the dimension of the domain space. To remember: the matrix is of dimension m×n.

Implements adamantine::ThermalOperatorBase< dim, MemorySpaceType >.

Definition at line 143 of file ThermalOperatorDevice.hh.

◆ reinit()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::reinit ( dealii::DoFHandler< dim > const &  dof_handler,
dealii::AffineConstraints< double > const &  affine_constraints,
dealii::hp::QCollection< 1 > const &  q_collection 
)
overridevirtual

◆ set_material_deposition_orientation()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::set_material_deposition_orientation ( std::vector< double > const &  deposition_cos,
std::vector< double > const &  deposition_sin 
)
overridevirtual

Set the deposition cosine and sine angles and convert the data from std::vector to Kokkos::View.

Implements adamantine::ThermalOperatorBase< dim, MemorySpaceType >.

Definition at line 761 of file ThermalOperatorDevice.templates.hh.

◆ set_state_to_material_properties()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::set_state_to_material_properties
overridevirtual

◆ set_time_and_source_height()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::set_time_and_source_height ( double  ,
double   
)
inlineoverridevirtual

◆ update_boundary_material_properties()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::update_boundary_material_properties ( dealii::LA::distributed::Vector< double, MemorySpaceType > const &  state)

Definition at line 738 of file ThermalOperatorDevice.templates.hh.

◆ update_inv_rho_cp_cell()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::update_inv_rho_cp_cell

Update $ \frac{1}{\rho C_p} $ on the cells using the values computed at the quadrature points.

Definition at line 808 of file ThermalOperatorDevice.templates.hh.

◆ vmult()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::vmult ( dealii::LA::distributed::Vector< double, MemorySpaceType > &  dst,
dealii::LA::distributed::Vector< double, MemorySpaceType > const &  src 
) const
overridevirtual

Matrix-vector multiplication. This function applies the operator to the vector src.

Parameters
[in]src
[out]dst

Implements adamantine::ThermalOperatorBase< dim, MemorySpaceType >.

Definition at line 585 of file ThermalOperatorDevice.templates.hh.

◆ vmult_add()

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
void adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::vmult_add ( dealii::LA::distributed::Vector< double, MemorySpaceType > &  dst,
dealii::LA::distributed::Vector< double, MemorySpaceType > const &  src 
) const
overridevirtual

Matrix-vector multiplication and addition of the result to dst. This function applies the operator to the vector src and add the result to the vector dst.

Parameters
[in]src
[in,out]dst

Implements adamantine::ThermalOperatorBase< dim, MemorySpaceType >.

Definition at line 597 of file ThermalOperatorDevice.templates.hh.

Member Data Documentation

◆ _adiabatic_only_bc

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
bool adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_adiabatic_only_bc = true
private

Flag set to true if all the boundary conditions are adiabatic. It is set to false otherwise.

Definition at line 104 of file ThermalOperatorDevice.hh.

◆ _cell_it_to_mf_pos

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
std::map<typename dealii::DoFHandler<dim>::cell_iterator, std::vector<unsigned int> > adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_cell_it_to_mf_pos
private

Definition at line 123 of file ThermalOperatorDevice.hh.

◆ _communicator

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
MPI_Comm const& adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_communicator
private

MPI communicator.

Definition at line 99 of file ThermalOperatorDevice.hh.

◆ _deposition_cos

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
Kokkos::View<double *, kokkos_default> adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_deposition_cos
private

Definition at line 119 of file ThermalOperatorDevice.hh.

◆ _deposition_sin

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
Kokkos::View<double *, kokkos_default> adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_deposition_sin
private

Definition at line 120 of file ThermalOperatorDevice.hh.

◆ _inv_rho_cp

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
Kokkos::View<double *, kokkos_default> adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_inv_rho_cp
private

Definition at line 118 of file ThermalOperatorDevice.hh.

◆ _inv_rho_cp_cells

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
std::map<typename dealii::DoFHandler<dim>::cell_iterator, double> adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_inv_rho_cp_cells
private

Definition at line 127 of file ThermalOperatorDevice.hh.

◆ _inverse_mass_matrix

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
std::shared_ptr<dealii::LA::distributed::Vector<double, MemorySpaceType> > adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_inverse_mass_matrix
private

Definition at line 125 of file ThermalOperatorDevice.hh.

◆ _liquid_ratio

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
Kokkos::View<double *, kokkos_default> adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_liquid_ratio
private

Definition at line 115 of file ThermalOperatorDevice.hh.

◆ _m

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
dealii::types::global_dof_index adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_m
private

Definition at line 105 of file ThermalOperatorDevice.hh.

◆ _material_id

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
Kokkos::View<dealii::types::material_id *, kokkos_default> adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_material_id
private

Definition at line 117 of file ThermalOperatorDevice.hh.

◆ _material_properties

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
MaterialProperty<dim, n_materials, p_order, MaterialStates, MemorySpaceType>& adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_material_properties
private

Material properties associated with the domain.

Definition at line 113 of file ThermalOperatorDevice.hh.

◆ _matrix_free

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
dealii::CUDAWrappers::MatrixFree<dim, double> adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_matrix_free
private

Definition at line 114 of file ThermalOperatorDevice.hh.

◆ _matrix_free_data

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
dealii::CUDAWrappers::MatrixFree<dim, double>::AdditionalData adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_matrix_free_data
private

Definition at line 108 of file ThermalOperatorDevice.hh.

◆ _n_owned_cells

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
unsigned int adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_n_owned_cells
private

Definition at line 106 of file ThermalOperatorDevice.hh.

◆ _powder_ratio

template<int dim, int n_materials, bool use_table, int p_order, int fe_degree, typename MaterialStates , typename MemorySpaceType >
Kokkos::View<double *, kokkos_default> adamantine::ThermalOperatorDevice< dim, n_materials, use_table, p_order, fe_degree, MaterialStates, MemorySpaceType >::_powder_ratio
private

Definition at line 116 of file ThermalOperatorDevice.hh.