include/meltpooldg/fluid_structure_interaction/fluid_structure_interaction_util.hpp Source File

Developer Documentation: include/meltpooldg/fluid_structure_interaction/fluid_structure_interaction_util.hpp Source File
Developer Documentation
fluid_structure_interaction_util.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/vectorization.h>
4
5#include <deal.II/grid/tria_accessor.h>
6#include <deal.II/grid/tria_iterator.h>
7
8#include <deal.II/particles/particle_accessor.h>
9
11#include <meltpooldg/utilities/better_enum.hpp>
12
13#include <functional>
14
15namespace MeltPoolDG
16{
17 BETTER_ENUM(MaskFunctionType, char, discontinuous);
18
30 template <int dim, typename number, typename VectorizedArrayType>
31 VectorizedArrayType
32 discontinuous_mask_function(const dealii::Point<dim, VectorizedArrayType> &location,
34 {
35 dealii::Point<dim, VectorizedArrayType> vectorized_obstacle_location;
36 for (auto i = 0; i < dim; ++i)
37 vectorized_obstacle_location[i] = VectorizedArrayType(particle.get_location()[i]);
38 const VectorizedArrayType distance = location.distance(vectorized_obstacle_location);
39 return dealii::compare_and_apply_mask<dealii::SIMDComparison::less_than_or_equal>(
40 distance,
41 VectorizedArrayType(particle.radius()),
42 VectorizedArrayType(1.),
43 VectorizedArrayType(0.));
44 }
45
46 template <int dim, typename number, typename VectorizedArrayType>
47 VectorizedArrayType
48 mask_function(const MaskFunctionType mask_function_type,
49 const dealii::Point<dim, VectorizedArrayType> &location,
51 {
52 switch (mask_function_type)
53 {
54 case MaskFunctionType::discontinuous:
55 return discontinuous_mask_function<dim, number, VectorizedArrayType>(location, particle);
56 default:
57 AssertThrow(false, dealii::ExcMessage("Unknown mask function type."));
58 }
59 return VectorizedArrayType(0.);
60 }
61} // namespace MeltPoolDG
Definition particle_accessor.hpp:20
number & radius()
Definition particle_accessor.hpp:584
dealii::Point< dim, number > & get_location()
Definition particle_accessor.hpp:376
Interface for a general preconditioner.
Definition boundary_condition_functions.hpp:17
VectorizedArrayType mask_function(const MaskFunctionType mask_function_type, const dealii::Point< dim, VectorizedArrayType > &location, const DEMParticleAccessor< dim, number > &particle)
Definition fluid_structure_interaction_util.hpp:48
VectorizedArrayType discontinuous_mask_function(const dealii::Point< dim, VectorizedArrayType > &location, const DEMParticleAccessor< dim, number > &particle)
Definition fluid_structure_interaction_util.hpp:32
BETTER_ENUM(MaterialTemplate, char, none, stainless_steel, Ti64, Ti64Benchmark) BETTER_ENUM(SolidLiquidPropertiesTransitionType