HeatCutOperator< dim, number > Class Template Reference
|
Developer Documentation
|
#include <heat_cut_operator.hpp>
Public Member Functions | |
| HeatCutOperator (const ScratchData< dim, dim, number > &scratch_data_in, const HeatData< number > &heat_data_in, const MaterialData< number > &material_data_in, const Evaporation::EvaporationData< number > &evapor_data_in, const unsigned int heat_cut_dof_idx_in, const unsigned int heat_cut_no_bc_dof_idx_in, const unsigned int heat_continuous_no_bc_dof_idx_in, const unsigned int heat_quad_idx_in, const VectorType &temperature_in, dealii::NonMatching::MappingInfo< dim, dim, dealii::VectorizedArray< number > > &mapping_info_surface_in, const std::vector< std::shared_ptr< dealii::NonMatching::MappingInfo< dim, dim, dealii::VectorizedArray< number > > > > &mapping_info_cells_in, const bool do_solidification_in, const unsigned int vel_dof_idx_in=-1, const VectorType *velocity_in=nullptr, const VectorType *velocity_old_in=nullptr) | |
| void | register_laser_intensity_function_and_direction (std::shared_ptr< const dealii::Function< dim, number > > laser_intensity_profile_in, const dealii::Tensor< 1, dim, number > &laser_direction_in) |
| void | reinit () final |
| Reinitialize data structures. Can be overridden by derived classes. | |
| void | init_time_advance (const double dt) |
| void | update_ghost_values () const |
| void | vmult (VectorType &dst, const VectorType &src) const final |
| void | compute_inverse_diagonal_from_matrixfree (VectorType &diagonal) const final |
| Compute the inverse diagonal using matrix-free techniques. | |
| void | compute_system_matrix_from_matrixfree (dealii::TrilinosWrappers::SparseMatrix &system_matrix) const final |
| Compute a sparse matrix using matrix-free techniques. | |
| void | create_rhs (VectorType &residual, const VectorType &temperature_old) const final |
Public Member Functions inherited from MeltPoolDG::OperatorMatrixFree< dim, number > | |
| virtual | ~OperatorMatrixFree ()=default |
| virtual void | create_rhs (BlockVectorType &, const VectorType &) const |
Compute the right-hand side vector for block vectors dst. | |
| virtual void | create_rhs (VectorType &, const BlockVectorType &) const |
Compute the right-hand side vector for block vectors src. | |
| virtual void | vmult (BlockVectorType &, const BlockVectorType &) const |
| virtual void | compute_inverse_diagonal_from_matrixfree (BlockVectorType &) const |
| Compute the inverse diagonal using matrix-free techniques for block vectors. | |
Public Member Functions inherited from MeltPoolDG::OperatorBase< number > | |
| virtual | ~OperatorBase ()=default |
| void | reset_dof_index (const unsigned int dof_idx_in) |
| Set the index for the current degrees of freedom (DoF). | |
| void | reset_time_increment (const number dt) |
| Set the time increment for the operator. | |
| virtual void | pre () |
| Prepare for computations (e.g. update ghost values). Can be overridden by derived classes. | |
| virtual void | post () |
| Finalize for computations (e.g. zero out ghost values). Can be overridden by derived classes. | |
Private Types | |
| template<int n_components = 1> | |
| using | DomainEval = FECellIntegrator< dim, n_components, number > |
| template<int n_components = 1> | |
| using | PointEval = dealii::FEPointEvaluation< n_components, dim, dim, dealii::VectorizedArray< number > > |
| using | FaceEval = FEFaceIntegrator< dim, 1, number > |
| using | VectorType = typename OperatorMatrixFree< dim, number >::VectorType |
| using | SparseMatrixType = typename OperatorMatrixFree< dim, number >::SparseMatrixType |
Private Member Functions | |
| dealii::VectorizedArray< number > | compute_qVapor (const dealii::VectorizedArray< number > &T) const |
| dealii::VectorizedArray< number > | compute_qVapor_derivative (const dealii::VectorizedArray< number > &T) const |
| void | tangent_cell_operation_liquid (const unsigned int cell_batch, DomainEval<> &eval_l, DomainEval<> *T_eval_l, DomainEval< dim > *vel_eval, const bool do_reinit_cell=true) const |
| void | tangent_cell_operation_gas (const unsigned int cell_batch, DomainEval<> &eval_g, DomainEval< dim > *vel_eval, const bool do_reinit_cell=true) const |
| void | tangent_cell_operation_intersected_one_phase (const unsigned int cell_batch, DomainEval<> &eval_cell_l, PointEval<> &eval_subdomain_l, PointEval<> *eval_interface_l, DomainEval<> *T_eval_cell_l, PointEval<> *T_eval_subdomain_l, PointEval<> *T_eval_interface_l, DomainEval< dim > *vel_eval, PointEval< dim > *vel_eval_subdomain_l, const bool do_reinit_cell=true) const |
| void | tangent_cell_operation_intersected_two_phase (const unsigned int cell_batch, DomainEval<> &eval_cell_l, DomainEval<> &eval_cell_g, PointEval<> &eval_subdomain_l, PointEval<> &eval_subdomain_g, PointEval<> &eval_interface_l, PointEval<> &eval_interface_g, DomainEval<> *T_eval_cell_l, DomainEval<> *T_eval_cell_g, PointEval<> *T_eval_subdomain_l, PointEval<> *T_eval_interface_l, PointEval<> *T_eval_interface_g, DomainEval< dim > *vel_eval, PointEval< dim > *vel_eval_subdomain_l, PointEval< dim > *vel_eval_subdomain_g, const bool do_reinit_cell=true) const |
| void | tangent_cell_loop (const dealii::MatrixFree< dim, number, dealii::VectorizedArray< number > > &matrix_free_in, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &cell_batch_range) const |
| void | tangent_inner_face_loop (const dealii::MatrixFree< dim, number, dealii::VectorizedArray< number > > &matrix_free_in, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_batch_range) const |
| void | tangent_boundary_face_loop (const dealii::MatrixFree< dim, number, dealii::VectorizedArray< number > > &matrix_free_in, VectorType &dst, const VectorType &src, const std::pair< unsigned int, unsigned int > &face_batch_range) const |
| void | residual_cell_loop (const dealii::MatrixFree< dim, number, dealii::VectorizedArray< number > > &matrix_free, VectorType &residual, const VectorType &temperature_new, const std::pair< unsigned int, unsigned int > &cell_batch_range) const |
| void | residual_inner_face_loop (const dealii::MatrixFree< dim, number, dealii::VectorizedArray< number > > &matrix_free_in, VectorType &residual, const VectorType &temperature_new, const std::pair< unsigned int, unsigned int > &face_batch_range) const |
| void | residual_boundary_face_loop (const dealii::MatrixFree< dim, number, dealii::VectorizedArray< number > > &matrix_free_in, VectorType &residual, const VectorType &temperature_new, const std::pair< unsigned int, unsigned int > &face_batch_range) const |
| void | internal_compute_diagonal_or_system_matrix (VectorType &diagonal, dealii::TrilinosWrappers::SparseMatrix &system_matrix, const bool do_diagonal) const |
Private Attributes | |
| const ScratchData< dim, dim, number > & | scratch_data |
| const HeatData< number > & | heat_data |
| const Material< number > | material |
| const unsigned int | heat_cut_dof_idx |
| const unsigned int | heat_cut_no_bc_dof_idx |
| const unsigned int | heat_continuous_no_bc_dof_idx |
| const unsigned int | heat_quad_idx |
| const VectorType & | temperature |
| dealii::NonMatching::MappingInfo< dim, dim, dealii::VectorizedArray< number > > & | mapping_info_surface |
| const std::vector< std::shared_ptr< dealii::NonMatching::MappingInfo< dim, dim, dealii::VectorizedArray< number > > > > & | mapping_info_cells |
| const dealii::FE_Q< dim > | reference_finite_element_heat |
| const unsigned int | n_dofs_per_cell_heat |
| const dealii::FESystem< dim > | reference_finite_element_vel |
| const unsigned int | n_dofs_per_cell_vel |
| const number | kappa_l |
| const number | kappa_g |
| number | weighted_nitsche_factor |
| number | cell_side_length = 0. |
| number | ost_factor_implicit |
| number | ost_factor_explicit |
| number | nitsche_factor |
| std::unique_ptr< Evaporation::EvaporativeCooling< number > > | evapor_cooling |
| std::shared_ptr< const dealii::Function< dim, number > > | laser_intensity_profile |
| dealii::Tensor< 1, dim, number > | laser_direction |
| const unsigned int | vel_dof_idx |
| const VectorType * | velocity |
| const VectorType * | velocity_old |
| const bool | do_solidification |
Static Private Attributes | |
| static constexpr unsigned int | n_lanes = dealii::VectorizedArray<number>::size() |
Additional Inherited Members | |
Public Types inherited from MeltPoolDG::OperatorMatrixFree< dim, number > | |
| using | VectorType = dealii::LinearAlgebra::distributed::Vector< number > |
| using | BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector< number > |
| using | SparseMatrixType = dealii::TrilinosWrappers::SparseMatrix |
Protected Attributes inherited from MeltPoolDG::OperatorBase< number > | |
| unsigned int | dof_idx = dealii::numbers::invalid_unsigned_int |
| number | time_increment = numbers::invalid_double |
| number | time_increment_inv = numbers::invalid_double |
Member Typedef Documentation
◆ DomainEval
|
private |
◆ FaceEval
|
private |
◆ PointEval
|
private |
◆ SparseMatrixType
|
private |
◆ VectorType
|
private |
Constructor & Destructor Documentation
◆ HeatCutOperator()
| MeltPoolDG::Heat::HeatCutOperator< dim, number >::HeatCutOperator | ( | const ScratchData< dim, dim, number > & | scratch_data_in, |
| const HeatData< number > & | heat_data_in, | ||
| const MaterialData< number > & | material_data_in, | ||
| const Evaporation::EvaporationData< number > & | evapor_data_in, | ||
| const unsigned int | heat_cut_dof_idx_in, | ||
| const unsigned int | heat_cut_no_bc_dof_idx_in, | ||
| const unsigned int | heat_continuous_no_bc_dof_idx_in, | ||
| const unsigned int | heat_quad_idx_in, | ||
| const VectorType & | temperature_in, | ||
| dealii::NonMatching::MappingInfo< dim, dim, dealii::VectorizedArray< number > > & | mapping_info_surface_in, | ||
| const std::vector< std::shared_ptr< dealii::NonMatching::MappingInfo< dim, dim, dealii::VectorizedArray< number > > > > & | mapping_info_cells_in, | ||
| const bool | do_solidification_in, | ||
| const unsigned int | vel_dof_idx_in = -1, |
||
| const VectorType * | velocity_in = nullptr, |
||
| const VectorType * | velocity_old_in = nullptr |
||
| ) |
Member Function Documentation
◆ compute_inverse_diagonal_from_matrixfree()
|
finalvirtual |
Compute the inverse diagonal using matrix-free techniques.
- Parameters
-
diag Vector representing the diagonal.
Reimplemented from MeltPoolDG::OperatorMatrixFree< dim, number >.
◆ compute_qVapor()
|
private |
◆ compute_qVapor_derivative()
|
private |
◆ compute_system_matrix_from_matrixfree()
|
finalvirtual |
Compute a sparse matrix using matrix-free techniques.
- Parameters
-
matrix Sparse matrix to compute.
Reimplemented from MeltPoolDG::OperatorMatrixFree< dim, number >.
◆ create_rhs()
|
finalvirtual |
compute residual (-R)
Reimplemented from MeltPoolDG::OperatorMatrixFree< dim, number >.
◆ init_time_advance()
| void MeltPoolDG::Heat::HeatCutOperator< dim, number >::init_time_advance | ( | const double | dt | ) |
◆ internal_compute_diagonal_or_system_matrix()
|
private |
The setup for dealii::MatrixFreeTools::internal::compute_diagonal and dealii::MatrixFreeTools::internal::compute_matrix is identical. To avoid duplicate code this internal function can handle both operations. Choose which operation to perform using
- Parameters
-
do_diagonal truefor compute_diagonal andfalsefor compute_matrix.
◆ register_laser_intensity_function_and_direction()
| void MeltPoolDG::Heat::HeatCutOperator< dim, number >::register_laser_intensity_function_and_direction | ( | std::shared_ptr< const dealii::Function< dim, number > > | laser_intensity_profile_in, |
| const dealii::Tensor< 1, dim, number > & | laser_direction_in | ||
| ) |
◆ reinit()
|
finalvirtual |
Reinitialize data structures. Can be overridden by derived classes.
Reimplemented from MeltPoolDG::OperatorBase< number >.
◆ residual_boundary_face_loop()
|
private |
◆ residual_cell_loop()
|
private |
◆ residual_inner_face_loop()
|
private |
◆ tangent_boundary_face_loop()
|
private |
◆ tangent_cell_loop()
|
private |
◆ tangent_cell_operation_gas()
|
private |
◆ tangent_cell_operation_intersected_one_phase()
|
private |
◆ tangent_cell_operation_intersected_two_phase()
|
private |
◆ tangent_cell_operation_liquid()
|
private |
◆ tangent_inner_face_loop()
|
private |
◆ update_ghost_values()
| void MeltPoolDG::Heat::HeatCutOperator< dim, number >::update_ghost_values | ( | ) | const |
◆ vmult()
|
finalvirtual |
Apply the matrix-free operator to a vector src and store It inside dst. This function is used in the iterative linear solver.
- Parameters
-
src Source vector. dst Destination vector.
Reimplemented from MeltPoolDG::OperatorMatrixFree< dim, number >.
Member Data Documentation
◆ cell_side_length
|
private |
◆ do_solidification
|
private |
◆ evapor_cooling
|
private |
◆ heat_continuous_no_bc_dof_idx
|
private |
◆ heat_cut_dof_idx
|
private |
◆ heat_cut_no_bc_dof_idx
|
private |
◆ heat_data
|
private |
◆ heat_quad_idx
|
private |
◆ kappa_g
|
private |
◆ kappa_l
|
private |
◆ laser_direction
|
private |
◆ laser_intensity_profile
|
private |
◆ mapping_info_cells
|
private |
◆ mapping_info_surface
|
private |
◆ material
|
private |
◆ n_dofs_per_cell_heat
|
private |
◆ n_dofs_per_cell_vel
|
private |
◆ n_lanes
|
staticconstexprprivate |
◆ nitsche_factor
|
private |
◆ ost_factor_explicit
|
private |
◆ ost_factor_implicit
|
private |
◆ reference_finite_element_heat
|
private |
◆ reference_finite_element_vel
|
private |
◆ scratch_data
|
private |
◆ temperature
|
private |
◆ vel_dof_idx
|
private |
◆ velocity
|
private |
◆ velocity_old
|
private |
◆ weighted_nitsche_factor
|
private |
The documentation for this class was generated from the following files:
- include/meltpooldg/heat/heat_cut_operator.hpp
- source/heat/heat_cut_operator.cpp
Generated by
Public Member Functions inherited from