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
46 void
47 attach_wall(std::unique_ptr<dealii::Function<dim>> &&wall_signed_distance_function);
48
65 void
67
68 private:
71
73 const number damping_prefactor;
74
77 mutable std::map<int, std::map<int, dealii::Tensor<1, dim, number>>> tangential_gaps;
78
83 mutable std::map<int, std::map<int, dealii::Tensor<1, dim, number>>> tangential_gaps_with_walls;
84
88
91 std::map<int, std::unique_ptr<dealii::Function<dim>>> wall_signed_distance_functions;
92
99 {
111 const number youngs_modulus,
112 const number poisson_ratio);
113
124 const dealii::Function<dim> *wall,
125 const number youngs_modulus,
126 const number poisson_ratio);
127
130
133
136
139
141 dealii::Tensor<1, dim, number> normal_vector;
142
145
147 dealii::Tensor<1, axial_dim<dim>, number> relative_angular_velocity;
148
152 struct
153 {
155 dealii::Tensor<1, dim, number> value;
156
158 dealii::Tensor<1, dim, number> normal_component;
159
161 dealii::Tensor<1, dim, number> tangential_component;
163 };
164
192 dealii::Tensor<1, dim, number>
193 normal_contact_force(const ContactConfiguration &contact_configuration) const;
194
235 dealii::Tensor<1, dim, number>
236 tangential_contact_force(const ContactConfiguration &contact_configuration,
237 const dealii::Tensor<1, dim, number> &normal_force,
238 dealii::Tensor<1, dim, number> &tangential_gap) const;
239
252 dealii::Tensor<1, axial_dim<dim>, number>
253 tangential_contact_torque(const ContactConfiguration &contact_configuration,
254 const dealii::Tensor<1, dim, number> &tangential_force,
255 const number particle_radius) const;
256
279 dealii::Tensor<1, axial_dim<dim>, number>
280 rolling_resistance_torque(const ContactConfiguration &contact_configuration,
281 const dealii::Tensor<1, dim, number> &contact_normal_force) const;
282
293 number
294 compute_damping_prefactor(const number restitution_coefficient) const;
295 };
296} // 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:83
void attach_wall(std::unique_ptr< dealii::Function< dim > > &&wall_signed_distance_function)
Definition contact_forces.cpp:27
const number damping_prefactor
Damping prefactor computed from the restitution coefficient. This is cached for efficiency.
Definition contact_forces.hpp:73
std::map< int, std::map< int, dealii::Tensor< 1, dim, number > > > tangential_gaps
Definition contact_forces.hpp:77
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
std::map< int, std::unique_ptr< dealii::Function< dim > > > wall_signed_distance_functions
Definition contact_forces.hpp:91
const MeltPoolDG::TimeIntegration::TimeIterator< number > & time_iterator
Definition contact_forces.hpp:87
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:70
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:129
number normal_overlap
Normal overlap between the two particles (positive if in contact).
Definition contact_forces.hpp:144
dealii::Tensor< 1, dim, number > value
Full relative velocity vector at the contact point.
Definition contact_forces.hpp:155
number effective_shear_modulus
Effective shear modulus of the two contacting particles, i.e., G/(4*(2-nu)*(1+nu)).
Definition contact_forces.hpp:138
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:147
dealii::Tensor< 1, dim, number > tangential_component
Tangential component of the relative velocity.
Definition contact_forces.hpp:161
number effective_radius
Effective radius of the two contacting particles, i.e., R1*R2/(R1+R2).
Definition contact_forces.hpp:132
struct MeltPoolDG::SphericalParticleContactForce::ContactConfiguration::@4 relative_velocity
number effective_youngs_modulus
Effective youngs modulus of the two contacting particles, i.e., E/(2*(1-nu^2)).
Definition contact_forces.hpp:135
dealii::Tensor< 1, dim, number > normal_component
Normal component of the relative velocity.
Definition contact_forces.hpp:158
dealii::Tensor< 1, dim, number > normal_vector
Normal vector pointing from self to other.
Definition contact_forces.hpp:141