include/meltpooldg/particles/contact_forces.hpp Source File

Developer Documentation: include/meltpooldg/particles/contact_forces.hpp Source File
Developer Documentation
contact_forces.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deal.II/base/parameter_handler.h>
4#include <deal.II/base/tensor.h>
5
11
12#include <memory>
13
14
15namespace MeltPoolDG
16{
17 template <int dim, typename number, typename ObstacleType>
19 {
20 public:
30
31
45 void
46 attach_wall(std::unique_ptr<dealii::Function<dim, number>> &&wall_distance_function);
47
64 void
66
67 private:
70
72 const number damping_prefactor;
73
76 mutable std::map<int, std::map<int, dealii::Tensor<1, dim, number>>> tangential_gaps;
77
82 mutable std::map<int, std::map<int, dealii::Tensor<1, dim, number>>> tangential_gaps_with_walls;
83
87
90 std::map<int, std::unique_ptr<dealii::Function<dim, number>>> wall_distance_functions;
91
98 {
110 const number youngs_modulus,
111 const number poisson_ratio);
112
123 const dealii::Function<dim> *wall,
124 const number youngs_modulus,
125 const number poisson_ratio);
126
129
132
135
138
140 dealii::Tensor<1, dim, number> normal_vector;
141
144
146 dealii::Tensor<1, axial_dim<dim>, number> relative_angular_velocity;
147
151 struct
152 {
154 dealii::Tensor<1, dim, number> value;
155
157 dealii::Tensor<1, dim, number> normal_component;
158
160 dealii::Tensor<1, dim, number> tangential_component;
162 };
163
191 dealii::Tensor<1, dim, number>
192 normal_contact_force(const ContactConfiguration &contact_configuration) const;
193
234 dealii::Tensor<1, dim, number>
235 tangential_contact_force(const ContactConfiguration &contact_configuration,
236 const dealii::Tensor<1, dim, number> &normal_force,
237 dealii::Tensor<1, dim, number> &tangential_gap) const;
238
251 dealii::Tensor<1, axial_dim<dim>, number>
252 tangential_contact_torque(const ContactConfiguration &contact_configuration,
253 const dealii::Tensor<1, dim, number> &tangential_force,
254 const number particle_radius) const;
255
278 dealii::Tensor<1, axial_dim<dim>, number>
279 rolling_resistance_torque(const ContactConfiguration &contact_configuration,
280 const dealii::Tensor<1, dim, number> &contact_normal_force) const;
281
292 number
293 compute_damping_prefactor(const number restitution_coefficient) const;
294 };
295} // namespace MeltPoolDG
Definition particle_accessor.hpp:20
Definition obstacle_field.hpp:32
Definition contact_forces.hpp:19
std::map< int, std::map< int, dealii::Tensor< 1, dim, number > > > tangential_gaps_with_walls
Definition contact_forces.hpp:82
const number damping_prefactor
Damping prefactor computed from the restitution coefficient. This is cached for efficiency.
Definition contact_forces.hpp:72
std::map< int, std::map< int, dealii::Tensor< 1, dim, number > > > tangential_gaps
Definition contact_forces.hpp:76
dealii::Tensor< 1, dim, number > normal_contact_force(const ContactConfiguration &contact_configuration) const
Definition contact_forces.cpp:115
dealii::Tensor< 1, axial_dim< dim >, number > rolling_resistance_torque(const ContactConfiguration &contact_configuration, const dealii::Tensor< 1, dim, number > &contact_normal_force) const
Definition contact_forces.cpp:205
void add_load_to_obstacles(ObstacleField< dim, number, ObstacleType > &obstacle_field) const
Definition contact_forces.cpp:37
const MeltPoolDG::TimeIntegration::TimeIterator< number > & time_iterator
Definition contact_forces.hpp:86
std::map< int, std::unique_ptr< dealii::Function< dim, number > > > wall_distance_functions
Definition contact_forces.hpp:90
dealii::Tensor< 1, axial_dim< dim >, number > tangential_contact_torque(const ContactConfiguration &contact_configuration, const dealii::Tensor< 1, dim, number > &tangential_force, const number particle_radius) const
Definition contact_forces.cpp:175
dealii::Tensor< 1, dim, number > tangential_contact_force(const ContactConfiguration &contact_configuration, const dealii::Tensor< 1, dim, number > &normal_force, dealii::Tensor< 1, dim, number > &tangential_gap) const
Definition contact_forces.cpp:133
const SphericalParticleContactData< number > & contact_data
Contact data for the spherical particle contact force model.
Definition contact_forces.hpp:69
void attach_wall(std::unique_ptr< dealii::Function< dim, number > > &&wall_distance_function)
Definition contact_forces.cpp:27
number compute_damping_prefactor(const number restitution_coefficient) const
Definition contact_forces.cpp:235
Definition time_iterator.hpp:15
Interface for a general preconditioner.
Definition boundary_condition_functions.hpp:17
Definition contact_forces_data.hpp:9
number effective_mass
Effective mass of the two contacting particles, i.e., m1*m2/(m1+m2).
Definition contact_forces.hpp:128
number normal_overlap
Normal overlap between the two particles (positive if in contact).
Definition contact_forces.hpp:143
dealii::Tensor< 1, dim, number > value
Full relative velocity vector at the contact point.
Definition contact_forces.hpp:154
number effective_shear_modulus
Effective shear modulus of the two contacting particles, i.e., G/(4*(2-nu)*(1+nu)).
Definition contact_forces.hpp:137
dealii::Tensor< 1, axial_dim< dim >, number > relative_angular_velocity
Relative angular velocity between the two particles or the particle and the wall.
Definition contact_forces.hpp:146
dealii::Tensor< 1, dim, number > tangential_component
Tangential component of the relative velocity.
Definition contact_forces.hpp:160
number effective_radius
Effective radius of the two contacting particles, i.e., R1*R2/(R1+R2).
Definition contact_forces.hpp:131
number effective_youngs_modulus
Effective youngs modulus of the two contacting particles, i.e., E/(2*(1-nu^2)).
Definition contact_forces.hpp:134
dealii::Tensor< 1, dim, number > normal_component
Normal component of the relative velocity.
Definition contact_forces.hpp:157
struct MeltPoolDG::SphericalParticleContactForce::ContactConfiguration::@5 relative_velocity
dealii::Tensor< 1, dim, number > normal_vector
Normal vector pointing from self to other.
Definition contact_forces.hpp:140