include/meltpooldg/flow/darcy_damping_operation.hpp Source File

Developer Documentation: include/meltpooldg/flow/darcy_damping_operation.hpp Source File
Developer Documentation
darcy_damping_operation.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/aligned_vector.h>
4#include <deal.II/base/vectorization.h>
5
6#include <deal.II/lac/generic_linear_algebra.h>
7#include <deal.II/lac/la_parallel_vector.h>
8#include <deal.II/lac/vector.h>
9
14
15
16namespace MeltPoolDG::Flow
17{
44 template <int dim, typename number>
46 {
47 public:
49 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
50
59 explicit DarcyDampingOperation(const DarcyDampingData<number> &data_in,
61 const unsigned int flow_vel_hanging_nodes_dof_idx,
62 const unsigned int flow_quad_idx);
63
69 void
70 reinit();
71
82 void
84 const VectorType &ls_as_heaviside,
85 const VectorType &temperature,
86 const unsigned int ls_hanging_nodes_dof_idx,
87 const unsigned int heat_dof_idx);
101 void
103 const VectorType &ls_as_heaviside,
104 const VectorType &temperature,
105 const VectorType *interface_temperature,
106 const unsigned int ls_hanging_nodes_dof_idx,
107 const unsigned int heat_cut_dof_idx,
108 const unsigned int heat_cont_no_bc_dof_idx);
109
124 void
125 assemble_rhs(VectorType &force_rhs, const VectorType &velocity_vec, const bool zero_out = true);
126
132 void
134
144 dealii::VectorizedArray<number> &
145 get_damping(const unsigned int cell, const unsigned int q);
146
156 const dealii::VectorizedArray<number> &
157 get_damping(const unsigned int cell, const unsigned int q) const;
158
159 private:
162
165
168
171
173 const unsigned int flow_quad_idx;
174
177
179 mutable dealii::AlignedVector<dealii::VectorizedArray<number>> damping_at_q;
180
182 mutable dealii::Vector<number> damping_output;
183
191 dealii::VectorizedArray<number>
192 compute_darcy_damping_coefficient(const dealii::VectorizedArray<number> &solid_fraction) const;
193
200 dealii::AlignedVector<dealii::VectorizedArray<number>> &
202 };
203} // namespace MeltPoolDG::Flow
This class computes the Darcy damping force (or Darcy source term).
Definition darcy_damping_operation.hpp:46
dealii::AlignedVector< dealii::VectorizedArray< number > > damping_at_q
Damping coefficients evaluated at quadrature points.
Definition darcy_damping_operation.hpp:179
dealii::AlignedVector< dealii::VectorizedArray< number > > & get_damping_at_q()
Getter function for the vector of damping coefficients, holding the values at each cell and at each q...
Definition darcy_damping_operation.cpp:300
dealii::VectorizedArray< number > & get_damping(const unsigned int cell, const unsigned int q)
Getter function for the damping coefficients cell-wise at each quadrature point (modifiable version).
Definition darcy_damping_operation.cpp:285
const unsigned int flow_quad_idx
Index for quadrature rule for flow computation.
Definition darcy_damping_operation.hpp:173
dealii::VectorizedArray< number > compute_darcy_damping_coefficient(const dealii::VectorizedArray< number > &solid_fraction) const
Compute the Darcy damping coefficient based on a given solid_fraction.
Definition darcy_damping_operation.cpp:226
const number avoid_div_zero_constant
Small constant b to avoid division by zero.
Definition darcy_damping_operation.hpp:164
void attach_output_vectors(GenericDataOut< dim, number > &data_out) const
Attach the element-wise damping coefficient to the output data.
Definition darcy_damping_operation.cpp:239
VectorType damping
Global vector to hold cell-wise damping values.
Definition darcy_damping_operation.hpp:176
const number mushy_zone_morphology
Morphological constant C.
Definition darcy_damping_operation.hpp:161
void set_darcy_damping_at_q(const Material< number > &material, const VectorType &ls_as_heaviside, const VectorType &temperature, const unsigned int ls_hanging_nodes_dof_idx, const unsigned int heat_dof_idx)
Loop over all cells and quadrature points (defined via flow_quad_idx), compute the Darcy damping coef...
Definition darcy_damping_operation.cpp:83
dealii::LinearAlgebra::distributed::Vector< number > VectorType
DoF vector type.
Definition darcy_damping_operation.hpp:49
const ScratchData< dim, dim, number > & scratch_data
Reference to scratch data used for assembling.
Definition darcy_damping_operation.hpp:167
const unsigned int flow_vel_hanging_nodes_dof_idx
Index for velocity DoF in scratch data.
Definition darcy_damping_operation.hpp:170
dealii::Vector< number > damping_output
Element-wise output vector of damping coefficient.
Definition darcy_damping_operation.hpp:182
void assemble_rhs(VectorType &force_rhs, const VectorType &velocity_vec, const bool zero_out=true)
Assemble the Darcy damping force contribution into the right-hand side (RHS) vector force_rhs.
Definition darcy_damping_operation.cpp:40
void reinit()
Reinitialize data structures.
Definition darcy_damping_operation.cpp:277
A generic utility for managing simulation output data in the MeltPoolDG context.
Definition generic_data_out.hpp:32
Definition material.hpp:96
Container for shared scratch data between operations/operators.
Definition scratch_data.hpp:61
Definition equation_of_state.hpp:17
Collection of parameters for Darcy damping.
Definition darcy_damping_data.hpp:16