include/meltpooldg/heat/laser_heat_source_projection_based.hpp Source File

Developer Documentation: include/meltpooldg/heat/laser_heat_source_projection_based.hpp Source File
Developer Documentation
laser_heat_source_projection_based.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/function.h>
4#include <deal.II/base/point.h>
5
6#include <deal.II/lac/la_parallel_block_vector.h>
7#include <deal.II/lac/la_parallel_vector.h>
8
13
14#include <memory>
15
16namespace MeltPoolDG::Heat
17{
21 template <int dim, typename number>
23 {
24 using VectorType = dealii::LinearAlgebra::distributed::Vector<number>;
25 using BlockVectorType = dealii::LinearAlgebra::distributed::BlockVector<number>;
26
27 public:
29 const LaserData<number> &laser_data_in,
30 const std::shared_ptr<const dealii::Function<dim, number>> intensity_profile_in,
31 const bool variable_properties_over_interface_in,
33 &delta_approximation_phase_weighted_data);
34
38 void
40 const ScratchData<dim, dim, number> &scratch_data,
41 const unsigned int heat_dof_idx,
42 const VectorType &level_set_heaviside,
43 const unsigned int ls_dof_idx,
44 const bool zero_out = true,
45 const BlockVectorType *normal_vector = nullptr,
46 const unsigned int normal_dof_idx = 0) const;
47
52 void
54 const ScratchData<dim, dim, number> &scratch_data,
55 const unsigned int heat_dof_idx,
56 const VectorType &level_set_heaviside,
57 const unsigned int ls_dof_idx,
58 const bool zero_out = true,
59 const BlockVectorType *normal_vector = nullptr,
60 const unsigned int normal_dof_idx = 0) const;
61
80 void
82 VectorType &heat_rhs,
83 const ScratchData<dim, dim, number> &scratch_data,
84 const unsigned int heat_dof_idx,
85 const unsigned int heat_quad_idx,
86 const VectorType &level_set_heaviside,
87 const unsigned int ls_dof_idx,
88 const bool zero_out,
89 const BlockVectorType *normal_vector,
90 const unsigned int normal_dof_idx) const;
91
92 private:
98 number
99 local_compute_interfacial_heat_source(const dealii::Point<dim> &p,
100 const dealii::Tensor<1, dim, number> &normal_vector,
101 const number delta_value,
102 const number heaviside) const;
103
105
106 const std::shared_ptr<const dealii::Function<dim, number>> intensity_profile;
107
108 const dealii::Tensor<1, dim, number> laser_direction;
109
111
112 std::unique_ptr<const LevelSet::DeltaApproximationBase<number>> delta_phase_weighted;
113 };
114} // namespace MeltPoolDG::Heat
Definition laser_heat_source_projection_based.hpp:23
dealii::LinearAlgebra::distributed::Vector< number > VectorType
Definition laser_heat_source_projection_based.hpp:24
void compute_interfacial_heat_source_sharp(VectorType &heat_rhs, const ScratchData< dim, dim, number > &scratch_data, const unsigned int heat_dof_idx, const VectorType &level_set_heaviside, const unsigned int ls_dof_idx, const bool zero_out=true, const BlockVectorType *normal_vector=nullptr, const unsigned int normal_dof_idx=0) const
Definition laser_heat_source_projection_based.cpp:443
std::unique_ptr< const LevelSet::DeltaApproximationBase< number > > delta_phase_weighted
Definition laser_heat_source_projection_based.hpp:112
number local_compute_interfacial_heat_source(const dealii::Point< dim > &p, const dealii::Tensor< 1, dim, number > &normal_vector, const number delta_value, const number heaviside) const
Definition laser_heat_source_projection_based.cpp:59
void compute_interfacial_heat_source_sharp_conforming(VectorType &heat_rhs, const ScratchData< dim, dim, number > &scratch_data, const unsigned int heat_dof_idx, const unsigned int heat_quad_idx, const VectorType &level_set_heaviside, const unsigned int ls_dof_idx, const bool zero_out, const BlockVectorType *normal_vector, const unsigned int normal_dof_idx) const
Definition laser_heat_source_projection_based.cpp:322
void compute_interfacial_heat_source(VectorType &heat_source_vector, const ScratchData< dim, dim, number > &scratch_data, const unsigned int heat_dof_idx, const VectorType &level_set_heaviside, const unsigned int ls_dof_idx, const bool zero_out=true, const BlockVectorType *normal_vector=nullptr, const unsigned int normal_dof_idx=0) const
Definition laser_heat_source_projection_based.cpp:78
const std::shared_ptr< const dealii::Function< dim, number > > intensity_profile
Definition laser_heat_source_projection_based.hpp:106
const dealii::Tensor< 1, dim, number > laser_direction
Definition laser_heat_source_projection_based.hpp:108
const bool variable_properties_over_interface
Definition laser_heat_source_projection_based.hpp:110
dealii::LinearAlgebra::distributed::BlockVector< number > BlockVectorType
Definition laser_heat_source_projection_based.hpp:25
const LaserData< number > & laser_data
Definition laser_heat_source_projection_based.hpp:104
Container for shared scratch data between operations/operators.
Definition scratch_data.hpp:61
Definition apparent_capacity.hpp:9
Definition laser_data.hpp:49
Definition delta_approximation_phase_weighted_data.hpp:31