HeatDiffuseMultiPhaseOperator< dim, number > Class Template Reference
|
Developer Documentation
|
#include <heat_diffuse_operator.hpp>
Public Member Functions | |
| HeatDiffuseMultiPhaseOperator (const ScratchData< dim, dim, number > &scratch_data_in, const std::shared_ptr< const BoundaryConditionManager< dim, number > > heat_bc_manager, const HeatData< number > &data_in, const Material< number > &material, const unsigned int heat_dof_idx_in, const unsigned int heat_quad_idx_in, const unsigned int heat_no_bc_dof_idx, const VectorType &temperature_in, const VectorType &temperature_old_in, const VectorType &heat_source_in, const unsigned int vel_dof_idx_in=0, const VectorType *velocity_in=nullptr, const unsigned int ls_dof_idx_in=0, const VectorType *level_set_as_heaviside_in=nullptr, const bool do_solidifiaction_in=false) | |
| void | register_evaporative_mass_flux (VectorType *evaporative_mass_flux_in, const unsigned int mass_flux_dof_idx_in, const Evaporation::EvaporationData< number > &evapor_data) |
| void | register_surface_mesh (const std::vector< std::tuple< const typename dealii::Triangulation< dim, dim >::cell_iterator, std::vector< dealii::Point< dim > >, std::vector< number > > > &surface_mesh_info) |
| void | pre () final |
| Prepare for computations (e.g. update ghost values). Can be overridden by derived classes. | |
| void | post () final |
| Finalize for computations (e.g. zero out ghost values). Can be overridden by derived classes. | |
| void | vmult (VectorType &dst, const VectorType &src) const final |
| void | tangent_cell_loop (const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, std::pair< unsigned int, unsigned int > cell_range) const |
| void | tangent_boundary_loop (const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, std::pair< unsigned int, unsigned int > face_range) const |
| void | compute_inverse_diagonal_from_matrixfree (VectorType &diagonal) const final |
| Compute the inverse diagonal using matrix-free techniques. | |
| void | compute_system_matrix_from_matrixfree (SparseMatrixType &system_matrix) const final |
| Compute a sparse matrix using matrix-free techniques. | |
| void | rhs_cell_loop (const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, std::pair< unsigned int, unsigned int > cell_range) const |
| void | rhs_boundary_loop (const dealii::MatrixFree< dim, number > &matrix_free, VectorType &dst, const VectorType &src, std::pair< unsigned int, unsigned int > face_range) const |
| void | rhs_cut_cell_loop (VectorType &dst) const |
| void | create_rhs (VectorType &dst, const VectorType &src) const final |
| void | attach_vectors (std::vector< VectorType * > &vectors) |
| void | distribute_constraints () |
| void | reinit () final |
| Reinitialize data structures. Can be overridden by derived classes. | |
| void | attach_output_vectors (GenericDataOut< dim, number > &data_out) const |
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. | |
Private Types | |
| using | VectorType = typename OperatorMatrixFree< dim, number >::VectorType |
| using | SparseMatrixType = typename OperatorMatrixFree< dim, number >::SparseMatrixType |
Private Member Functions | |
| void | tangent_local_cell_operation (FECellIntegrator< dim, 1, number > &eval, FECellIntegrator< dim, 1, number > &T_new_eval, FECellIntegrator< dim, 1, number > &T_old_eval, FECellIntegrator< dim, dim, number > &vel_eval, FECellIntegrator< dim, 1, number > &heaviside_eval, FECellIntegrator< dim, 1, number > &heaviside_interpolated_eval, const std::unique_ptr< FECellIntegrator< dim, 1, number > > &mass_flux_eval, bool do_reinit_cells) const |
| void | tangent_local_boundary_operation (FEFaceIntegrator< dim, 1, number > &face_eval, FEFaceIntegrator< dim, 1, number > &T_face_eval, bool do_reinit_face) const |
| void | internal_compute_diagonal_or_system_matrix (VectorType &diagonal, SparseMatrixType &system_matrix, const bool do_diagonal) const |
| std::tuple< dealii::VectorizedArray< number >, dealii::VectorizedArray< number > > | get_material_parameters (const FECellIntegrator< dim, 1, number > &T_eval, const FECellIntegrator< dim, 1, number > &heaviside_eval, unsigned int q) const |
| std::tuple< dealii::VectorizedArray< number >, dealii::VectorizedArray< number >, dealii::VectorizedArray< number >, dealii::VectorizedArray< number > > | get_material_parameters_and_derivatives (const FECellIntegrator< dim, 1, number > &T_eval, const FECellIntegrator< dim, 1, number > &heaviside_eval, unsigned int q) const |
Private Attributes | |
| const ScratchData< dim, dim, number > & | scratch_data |
| const HeatData< number > & | data |
| const Material< number > & | material |
| const unsigned int | heat_dof_idx |
| const unsigned int | heat_quad_idx |
| const unsigned int | heat_no_bc_dof_idx |
| const VectorType & | temperature |
| const VectorType & | temperature_old |
| std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > | neumann_bc |
| std::vector< dealii::types::boundary_id > | bc_radiation_indices |
| std::vector< dealii::types::boundary_id > | bc_convection_indices |
| const VectorType & | heat_source |
| const unsigned int | vel_dof_idx = dealii::numbers::invalid_unsigned_int |
| const VectorType * | velocity |
| const unsigned int | ls_dof_idx = dealii::numbers::invalid_unsigned_int |
| const VectorType * | level_set_as_heaviside |
| VectorType * | evaporative_mass_flux = nullptr |
| unsigned int | mass_flux_dof_idx = dealii::numbers::invalid_unsigned_int |
| std::unique_ptr< Evaporation::EvaporativeCooling< number > > | evaporative_cooling |
| const bool | do_solidification |
| dealii::FullMatrix< number > | ls_to_heat_grad_interpolation_matrix |
| bool | do_level_set_temperature_gradient_interpolation = false |
| VectorType | evapor_heat_source |
| VectorType | evapor_heat_source_projected |
| dealii::AlignedVector< dealii::VectorizedArray< number > > | q_vapor |
| std::unique_ptr< const LevelSet::DeltaApproximationBase< number > > | delta_phase_weighted |
| dealii::AlignedVector< dealii::VectorizedArray< number > > | conductivity_at_q |
| VectorType | conductivity_vec |
| dealii::AlignedVector< dealii::VectorizedArray< number > > | rho_cp_at_q |
| VectorType | rho_cp_vec |
| std::vector< bool > | do_update_ghosts |
| const std::vector< std::tuple< const typename dealii::Triangulation< dim, dim >::cell_iterator, std::vector< dealii::Point< dim > >, std::vector< number > > > * | surface_mesh_info = nullptr |
| Evaporation::EvaporCoolingInterfaceFluxType | evaporative_cooling_interface_flux_type |
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
◆ SparseMatrixType
|
private |
◆ VectorType
|
private |
Constructor & Destructor Documentation
◆ HeatDiffuseMultiPhaseOperator()
| MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::HeatDiffuseMultiPhaseOperator | ( | const ScratchData< dim, dim, number > & | scratch_data_in, |
| const std::shared_ptr< const BoundaryConditionManager< dim, number > > | heat_bc_manager, | ||
| const HeatData< number > & | data_in, | ||
| const Material< number > & | material, | ||
| const unsigned int | heat_dof_idx_in, | ||
| const unsigned int | heat_quad_idx_in, | ||
| const unsigned int | heat_no_bc_dof_idx, | ||
| const VectorType & | temperature_in, | ||
| const VectorType & | temperature_old_in, | ||
| const VectorType & | heat_source_in, | ||
| const unsigned int | vel_dof_idx_in = 0, |
||
| const VectorType * | velocity_in = nullptr, |
||
| const unsigned int | ls_dof_idx_in = 0, |
||
| const VectorType * | level_set_as_heaviside_in = nullptr, |
||
| const bool | do_solidifiaction_in = false |
||
| ) |
Member Function Documentation
◆ attach_output_vectors()
| void MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::attach_output_vectors | ( | GenericDataOut< dim, number > & | data_out | ) | const |
write conductivity vector to dof vector
write evaporative mass flux to dof vector
◆ attach_vectors()
| void MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::attach_vectors | ( | std::vector< VectorType * > & | vectors | ) |
attach vector for solution transfer for AMR
◆ 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_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 |
-R(T)
Reimplemented from MeltPoolDG::OperatorMatrixFree< dim, number >.
◆ distribute_constraints()
| void MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::distribute_constraints | ( | ) |
◆ get_material_parameters()
|
private |
Determine the material parameters. This function takes two-phase flow and solidification effects into account.
The values of rho_cp and conductivity must be set to the material.gas values initially. This function only modifies their values if necessary. I.e. in case of no two-phase flow and no solidification this function does nothing.
◆ get_material_parameters_and_derivatives()
|
private |
Determine the material parameters and their temperature derivatives. This function takes two-phase flow and solidification effects into account.
The values of rho_cp, conductivity, d_rho_cp_d_T and d_conductivity_dT must be set to the material.gas values initially (0 for the derivatives). This function only modifies their values if necessary. I.e. in case of no two-phase flow and no solidification this function does nothing.
- Note
- The derivatives
d_rho_cp_d_Tandd_conductivity_dTare only non-zero in the case of solidification and if the temperature is between the solidus- and liquidus temperature.
◆ 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.
◆ post()
|
finalvirtual |
Finalize for computations (e.g. zero out ghost values). Can be overridden by derived classes.
Reimplemented from MeltPoolDG::OperatorBase< number >.
◆ pre()
|
finalvirtual |
Prepare for computations (e.g. update ghost values). Can be overridden by derived classes.
Reimplemented from MeltPoolDG::OperatorBase< number >.
◆ register_evaporative_mass_flux()
| void MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::register_evaporative_mass_flux | ( | VectorType * | evaporative_mass_flux_in, |
| const unsigned int | mass_flux_dof_idx_in, | ||
| const Evaporation::EvaporationData< number > & | evapor_data | ||
| ) |
◆ register_surface_mesh()
| void MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::register_surface_mesh | ( | const std::vector< std::tuple< const typename dealii::Triangulation< dim, dim >::cell_iterator, std::vector< dealii::Point< dim > >, std::vector< number > > > & | surface_mesh_info | ) |
◆ reinit()
|
finalvirtual |
Reinitialize data structures. Can be overridden by derived classes.
Reimplemented from MeltPoolDG::OperatorBase< number >.
◆ rhs_boundary_loop()
| void MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::rhs_boundary_loop | ( | const dealii::MatrixFree< dim, number > & | matrix_free, |
| VectorType & | dst, | ||
| const VectorType & | src, | ||
| std::pair< unsigned int, unsigned int > | face_range | ||
| ) | const |
◆ rhs_cell_loop()
| void MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::rhs_cell_loop | ( | const dealii::MatrixFree< dim, number > & | matrix_free, |
| VectorType & | dst, | ||
| const VectorType & | src, | ||
| std::pair< unsigned int, unsigned int > | cell_range | ||
| ) | const |
◆ rhs_cut_cell_loop()
| void MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::rhs_cut_cell_loop | ( | VectorType & | dst | ) | const |
◆ tangent_boundary_loop()
| void MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::tangent_boundary_loop | ( | const dealii::MatrixFree< dim, number > & | matrix_free, |
| VectorType & | dst, | ||
| const VectorType & | src, | ||
| std::pair< unsigned int, unsigned int > | face_range | ||
| ) | const |
◆ tangent_cell_loop()
| void MeltPoolDG::Heat::HeatDiffuseMultiPhaseOperator< dim, number >::tangent_cell_loop | ( | const dealii::MatrixFree< dim, number > & | matrix_free, |
| VectorType & | dst, | ||
| const VectorType & | src, | ||
| std::pair< unsigned int, unsigned int > | cell_range | ||
| ) | const |
◆ tangent_local_boundary_operation()
|
private |
This function executes the local boundary operation for computing the tangent.
- Note
- The function assumes that
face_evalhas been already initialized and the dof-values offace_evalare already set a priori. Afterwards, the dof-values held byface_evalcan be written back to the global vector via face_eval.distribute_local_to_global(dst).
◆ tangent_local_cell_operation()
|
private |
This function executes the local cell operation for computing the tangent.
- Note
- The function assumes that
evalhas been already initialized and the dof-values ofevalare already set a priori. Afterwards, the dof-values held byevalcan be written back to the global vector via eval.distribute_local_to_global(dst).
◆ 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
◆ bc_convection_indices
|
private |
◆ bc_radiation_indices
|
private |
◆ conductivity_at_q
|
mutableprivate |
◆ conductivity_vec
|
mutableprivate |
◆ data
|
private |
◆ delta_phase_weighted
|
private |
◆ do_level_set_temperature_gradient_interpolation
|
private |
◆ do_solidification
|
private |
◆ do_update_ghosts
|
mutableprivate |
◆ evapor_heat_source
|
mutableprivate |
◆ evapor_heat_source_projected
|
mutableprivate |
◆ evaporative_cooling
|
private |
◆ evaporative_cooling_interface_flux_type
|
private |
◆ evaporative_mass_flux
|
private |
◆ heat_dof_idx
|
private |
◆ heat_no_bc_dof_idx
|
private |
◆ heat_quad_idx
|
private |
◆ heat_source
|
private |
◆ level_set_as_heaviside
|
private |
◆ ls_dof_idx
|
private |
◆ ls_to_heat_grad_interpolation_matrix
|
private |
◆ mass_flux_dof_idx
|
private |
◆ material
|
private |
◆ neumann_bc
|
private |
◆ q_vapor
|
mutableprivate |
◆ rho_cp_at_q
|
mutableprivate |
◆ rho_cp_vec
|
mutableprivate |
◆ scratch_data
|
private |
◆ surface_mesh_info
|
private |
◆ temperature
|
private |
◆ temperature_old
|
private |
◆ vel_dof_idx
|
private |
◆ velocity
|
private |
The documentation for this class was generated from the following files:
- include/meltpooldg/heat/heat_diffuse_operator.hpp
- source/heat/heat_diffuse_operator.cpp
Generated by
Public Member Functions inherited from