16#ifndef Collision_Model_FT_base_included
17#define Collision_Model_FT_base_included
20#include <TRUSTTabFT_forward.h>
21#include <Fluide_Diphasique.h>
22#include <Schema_Comm.h>
23#include <Champ_Don_base.h>
24#include <Matrice_Morse.h>
25#include <Domaine_VDF.h>
26#include <TRUSTTabFT.h>
27#include <TRUSTLists.h>
61 const int nb_particles_tot,
78 const DoubleTab& particles_position,
79 const DoubleTab& particles_velocity,
80 const double& deltat_simu)=0;
84 const IntTab& particles_eulerian_id_number,
85 DoubleTab& contact_force_source_term)=0;
91 const DoubleTab& particles_velocity,
94 const ArrOfInt& list_particles_to_check_LC);
97 const double& next_dist_int,
98 const DoubleTab& norm,
100 const int& particle_i,
101 const int& particle_j,
102 const int& is_compression_step,
103 const double& is_collision_part_part);
113 void add_collision(
const int part_i,
const int part_j,
const bool is_part_part_collision);
141 int get_last_id(
const ArrOfInt& list_particles_to_check_LC);
142 int get_id(
const ArrOfInt& list_particle,
const int ind_id_particle);
191 void compute_dX_dU(DoubleTab& dX, DoubleTab& dU,
const int& particle,\
192 const int& neighbor,
const DoubleTab& particles_position,
const\
193 DoubleTab& particles_velocity,
const bool is_particle_particle_collision );
199 int get_particle_j(
const int ind_particle_i,
const int ind_particle_j);
void compute_fictive_wall_coordinates(const double &radius)
int & get_set_nb_dt_Verlet()
const IntLists & get_Verlet_table() const
double stiffness_breugem_part_part_
void set_activation_distance(const double &diameter)
double compute_damper_breugem(const double &mass_eff, const double &e_dry)
DoubleVect fictive_wall_coordinates_
OBS_PTR(Domaine) ref_domaine
int sauvegarder(Sortie &os) const override
Sauvegarde d'un Objet_U sur un flot de sortie Methode a surcharger.
const int & get_nb_dt_compute_Verlet() const
const DoubleVect & get_wall_coordinates() const
void associate_transport_equation(const Equation_base &equation)
void set_origin(DoubleVect &Origin)
Collision_Model_FT_base()
const int & get_nb_real_particles() const
DoubleTab & get_set_F_now()
double activation_distance_
ArrOfInt list_lower_zone_
void resize_lagrangian_contact_force()
const ArrOfInt & get_list_upper_zone() const
void set_geometric_parameters(const Domaine_VDF &domaine_vdf)
Recover the geometric parameters of the domain: number of nodes in each direction origin of the domai...
void resize_particles_collision_number()
int nb_dt_compute_Verlet_
const DoubleVect & get_origin() const
DoubleVect domain_dimensions_
double detection_thickness_Verlet_
void resize_geometric_parameters()
virtual void discretize_contact_forces_eulerian_field(const DoubleTab &volumic_phase_indicator_function, const Domaine_VF &domain_vf, const IntTab &particles_eulerian_id_number, DoubleTab &contact_force_source_term)=0
Collision_model collision_model_
const int & get_nb_dt_max_Verlet() const
int get_particle_i(const int ind_particle_i)
const DoubleTab & get_particles_collision_number() const
const int & get_nb_dt_Verlet() const
int check_for_duplicates(ArrOfInt &vector)
Check if two particles have the same ID Very important function to stop computation if two particles ...
int get_ind_start_particles_j(const int ind_particle_i) const
int get_nb_particles_j(const int ind_particle_i) const
void add_collision(const int part_i, const int part_j, const bool is_part_part_collision)
double stiffness_breugem_wall_part_
double compute_stiffness_breugem(const double &mass_eff, const double &e_dry)
const double & get_delta_n() const
double collision_duration_
double activation_distance_percentage_diameter_
const double & get_s_Verlet() const
int is_collision_activated_before_impact_
const int & get_nb_particles_tot() const
DoubleTab particles_collision_number_
int preparer_calcul(const Domaine_VDF &domain_vdf, const int nb_particles_tot, const Navier_Stokes_FT_Disc &ns, const Transport_Interfaces_FT_Disc &eq_transport, const Schema_Comm &schema_comm_FT)
int is_force_on_two_phase_elem_
void set_domain_dimensions(DoubleVect &Longueurs)
void research_collision_pairs_Verlet(const Navier_Stokes_FT_Disc &eq_ns, const Transport_Interfaces_FT_Disc &eq_transport)
DoubleTab & get_set_lagrangian_contact_forces()
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
double compute_ewet_legendre(const double &St)
int get_id(const ArrOfInt &list_particle, const int ind_id_particle)
DoubleVect & get_set_collisions_detected()
ArrOfInt list_real_particles_
const ArrOfInt & get_list_lower_zone() const
double damper_breugem_wall_part_
DoubleTab & get_set_F_old()
DoubleTab lagrangian_contact_forces_
const DoubleTab & get_lagrangian_contact_forces() const
int get_particle_j(const int ind_particle_i, const int ind_particle_j)
void set_nb_particles_tot(int nb_particles_tot)
OBS_PTR(Transport_Interfaces_FT_Disc) refequation_transport_
void set_spring_properties(const Solid_Particle_base &solid_particle)
double damper_breugem_part_part_
int get_last_id(const ArrOfInt &list_particles_to_check_LC)
Detection_method detection_method_
void set_LC_zones(const Domaine_VF &domaine_vf, const Schema_Comm &schema_com)
int reprendre(Entree &is) override
Reprise d'un Objet_U sur un flot d'entree Methode a surcharger.
DoubleTab compute_contact_force(const double &next_dist_int, const DoubleTab &norm, const DoubleTab &dUn, const int &particle_i, const int &particle_j, const int &is_compression_step, const double &is_collision_part_part)
const double & get_duration_collision() const
void compute_dX_dU(DoubleTab &dX, DoubleTab &dU, const int &particle, const int &neighbor, const DoubleTab &particles_position, const DoubleTab &particles_velocity, const bool is_particle_particle_collision)
const int & get_collision_number() const
virtual void compute_lagrangian_contact_forces(const Fluide_Diphasique &two_phase_fluid, const DoubleTab &particles_position, const DoubleTab &particles_velocity, const double &deltat_simu)=0
void set_nb_real_particles(int nb_real_particles)
void set_param(Param &p) const override
ArrOfInt list_upper_zone_
DoubleTab & get_set_e_eff()
const DoubleVect & get_domain_dimensions() const
const int & get_is_force_on_two_phase_elem() const
bool is_Verlet_activated()
DoubleVect collision_detected_
void compute_Verlet_tables(const DoubleTab &particles_position, const DoubleTab &particles_velocity, double &max_vi, const double &radius, const ArrOfInt &list_particles_to_check_LC)
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
: class Maillage_FT_Disc Cette classe decrit un maillage:
Une chaine de caractere (Nom) en majuscules.
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Helper class to factorize the readOn method of Objet_U classes.