include/meltpooldg/level_set/level_set_operation_base.hpp Source File

Developer Documentation: include/meltpooldg/level_set/level_set_operation_base.hpp Source File
Developer Documentation
level_set_operation_base.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#include <deal.II/base/types.h>
6
7#include <deal.II/grid/tria.h>
8
9#include <deal.II/lac/la_parallel_block_vector.h>
10#include <deal.II/lac/la_parallel_vector.h>
11
13
14#include <map>
15#include <memory>
16#include <tuple>
17#include <vector>
18
19
21{
22 template <int dim, typename number>
24 {
25 // triangulation info on surface mesh of zero level set contour
27 std::vector<std::tuple<const typename dealii::Triangulation<dim, dim>::cell_iterator /*cell*/,
28 std::vector<dealii::Point<dim>> /*quad_points*/,
29 std::vector<number> /*weights*/
30 >>;
31
32 public:
33 virtual ~LevelSetOperationBase() = default;
34
35 virtual void
36 set_initial_condition(const dealii::Function<dim> &initial_field_function_level_set,
37 const bool is_signed_distance_initial_field_function = false) = 0;
38
39 virtual void
41 const std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>>
42 inflow_outflow_bc) = 0;
43
44 virtual void
46 ScratchData<dim, dim, number> &mutable_scratch_data,
48 const std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>>
49 &ls_dirichlet_bc_in,
50 const std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>>
51 &normal_x_dirichlet_bc_in,
52 const std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>>
53 &normal_y_dirichlet_bc_in,
54 const std::map<dealii::types::boundary_id, std::shared_ptr<dealii::Function<dim>>>
55 &normal_z_dirichlet_bc_in) = 0;
56
57 virtual void
58 reinit() = 0;
59
60 virtual void
62
63
64 virtual void
66
67 virtual void
68 solve(const bool do_finish_time_step = true) = 0;
69
70 virtual void
72
73 virtual void
75 const dealii::LinearAlgebra::distributed::Vector<number> &level_set_user_rhs) = 0;
76
77 virtual void
79 std::vector<dealii::types::boundary_id> && /*wetting_bc_ids*/)
80 {
81 AssertThrow(false, dealii::ExcNotImplemented());
82 }
83
84 virtual void
86
87 /*
88 * getter functions for solution vectors
89 */
90 virtual const dealii::LinearAlgebra::distributed::Vector<number> &
91 get_curvature() const = 0;
92
93 virtual dealii::LinearAlgebra::distributed::Vector<number> &
95
96 virtual const dealii::LinearAlgebra::distributed::BlockVector<number> &
97 get_normal_vector() const = 0;
98
99 virtual dealii::LinearAlgebra::distributed::BlockVector<number> &
101
102 virtual const dealii::LinearAlgebra::distributed::Vector<number> &
103 get_level_set() const = 0;
104
105 virtual dealii::LinearAlgebra::distributed::Vector<number> &
107
108 virtual const dealii::LinearAlgebra::distributed::Vector<number> &
110
111 virtual dealii::LinearAlgebra::distributed::Vector<number> &
113
114 virtual const dealii::LinearAlgebra::distributed::Vector<number> &
116
117 virtual const SurfaceMeshInfo &
122 virtual void
123 attach_vectors(std::vector<dealii::LinearAlgebra::distributed::Vector<number> *> &vectors) = 0;
124
125 virtual void
127
128 virtual void
130
131 virtual void
133 };
134} // namespace MeltPoolDG::LevelSet
A generic utility for managing simulation output data in the MeltPoolDG context.
Definition generic_data_out.hpp:32
Definition level_set_operation_base.hpp:24
virtual void set_inflow_outflow_bc(const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > inflow_outflow_bc)=0
virtual void set_level_set_user_rhs(const dealii::LinearAlgebra::distributed::Vector< number > &level_set_user_rhs)=0
virtual const dealii::LinearAlgebra::distributed::BlockVector< number > & get_normal_vector() const =0
virtual dealii::LinearAlgebra::distributed::Vector< number > & get_curvature()=0
virtual dealii::LinearAlgebra::distributed::Vector< number > & get_level_set()=0
virtual const dealii::LinearAlgebra::distributed::Vector< number > & get_distance_to_level_set() const =0
virtual void attach_output_vectors(GenericDataOut< dim, number > &data_out) const =0
virtual void set_initial_condition(const dealii::Function< dim > &initial_field_function_level_set, const bool is_signed_distance_initial_field_function=false)=0
virtual void attach_vectors(std::vector< dealii::LinearAlgebra::distributed::Vector< number > * > &vectors)=0
virtual const dealii::LinearAlgebra::distributed::Vector< number > & get_level_set_as_heaviside() const =0
virtual void transform_level_set_to_smooth_heaviside()=0
std::vector< std::tuple< const typename dealii::Triangulation< dim, dim >::cell_iterator, std::vector< dealii::Point< dim > >, std::vector< number > > > SurfaceMeshInfo
Definition level_set_operation_base.hpp:30
virtual const dealii::LinearAlgebra::distributed::Vector< number > & get_level_set() const =0
virtual void solve(const bool do_finish_time_step=true)=0
virtual dealii::LinearAlgebra::distributed::Vector< number > & get_level_set_as_heaviside()=0
virtual void setup_constraints(ScratchData< dim, dim, number > &mutable_scratch_data, const PeriodicBoundaryConditions< dim > &pbc, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &ls_dirichlet_bc_in, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &normal_x_dirichlet_bc_in, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &normal_y_dirichlet_bc_in, const std::map< dealii::types::boundary_id, std::shared_ptr< dealii::Function< dim > > > &normal_z_dirichlet_bc_in)=0
virtual const SurfaceMeshInfo & get_surface_mesh_info() const =0
virtual const dealii::LinearAlgebra::distributed::Vector< number > & get_curvature() const =0
virtual dealii::LinearAlgebra::distributed::BlockVector< number > & get_normal_vector()=0
virtual void set_wetting_boundary_condition_ids(std::vector< dealii::types::boundary_id > &&)
Definition level_set_operation_base.hpp:78
Container for shared scratch data between operations/operators.
Definition scratch_data.hpp:61
This operation solves the reinitialization problem for a CG- or DG-FEM-based discrete level-set field...
Definition advection_DG_operation.hpp:20
Definition periodic_boundary_conditions.hpp:11