TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Collision_Model_FT_arbitrary Class Reference

#include <Collision_Model_FT_arbitrary.h>

Inheritance diagram for Collision_Model_FT_arbitrary:
[legend]
Collaboration diagram for Collision_Model_FT_arbitrary:
[legend]

Public Member Functions

 Collision_Model_FT_arbitrary ()
void compute_lagrangian_contact_forces (const Fluide_Diphasique &two_phase_fluid, const DoubleTab &particles_position, const DoubleTab &particles_velocity, const double &deltat_simu) override
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) override
Public Member Functions inherited from Collision_Model_FT_base
 Collision_Model_FT_base ()
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.
int reprendre (Entree &is) override
 Reprise d'un Objet_U sur un flot d'entree Methode a surcharger.
int sauvegarder (Sortie &os) const override
 Sauvegarde d'un Objet_U sur un flot de sortie Methode a surcharger.
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)
void set_param (Param &p) const override
void reset ()
void resize_geometric_parameters ()
void resize_lagrangian_contact_force ()
void resize_particles_collision_number ()
void associate_transport_equation (const Equation_base &equation)
int check_for_duplicates (ArrOfInt &vector)
 Check if two particles have the same ID Very important function to stop computation if two particles coalesce.
void compute_fictive_wall_coordinates (const double &radius)
void research_collision_pairs_Verlet (const Navier_Stokes_FT_Disc &eq_ns, const Transport_Interfaces_FT_Disc &eq_transport)
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)
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)
double compute_ewet_legendre (const double &St)
double compute_stiffness_breugem (const double &mass_eff, const double &e_dry)
double compute_damper_breugem (const double &mass_eff, const double &e_dry)
void add_collision (const int part_i, const int part_j, const bool is_part_part_collision)
bool is_Verlet_activated ()
bool is_LC_activated ()
void set_nb_particles_tot (int nb_particles_tot)
void set_nb_real_particles (int nb_real_particles)
void set_activation_distance (const double &diameter)
void set_spring_properties (const Solid_Particle_base &solid_particle)
void set_domain_dimensions (DoubleVect &Longueurs)
void set_origin (DoubleVect &Origin)
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 domain dimensions of the domain.
void set_LC_zones (const Domaine_VF &domaine_vf, const Schema_Comm &schema_com)
const int & get_nb_dt_Verlet () const
const int & get_nb_dt_compute_Verlet () const
const int & get_nb_dt_max_Verlet () const
const int & get_is_force_on_two_phase_elem () const
const int & get_collision_number () const
const int & get_nb_real_particles () const
const int & get_nb_particles_tot () const
int get_last_id (const ArrOfInt &list_particles_to_check_LC)
int get_id (const ArrOfInt &list_particle, const int ind_id_particle)
const double & get_duration_collision () const
const double & get_delta_n () const
const double & get_s_Verlet () const
const DoubleVect & get_wall_coordinates () const
const DoubleVect & get_origin () const
const DoubleVect & get_domain_dimensions () const
const DoubleTab & get_lagrangian_contact_forces () const
const DoubleTab & get_particles_collision_number () const
const ArrOfInt & get_list_upper_zone () const
const ArrOfInt & get_list_lower_zone () const
const IntLists & get_Verlet_table () const
DoubleVect & get_set_collisions_detected ()
DoubleTab & get_set_e_eff ()
DoubleTab & get_set_F_old ()
DoubleTab & get_set_F_now ()
DoubleTab & get_set_lagrangian_contact_forces ()
int & get_set_nb_dt_Verlet ()
Public Member Functions inherited from Objet_U
 ~Objet_U () override
 Destructeur, supprime l'objet de la liste d'objets enregistres dans "memoire".
int numero () const
 Renvoie l'indice de l'objet dans Memoire::data.
virtual int duplique () const =0
virtual SortieprintOn (Sortie &) const
 Ecriture de l'objet sur un flot de sortie Methode a surcharger.
virtual EntreereadOn (Entree &)
 Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
virtual unsigned taille_memoire () const =0
virtual int est_egal_a (const Objet_U &) const
 Renvoie 1 si l'objet x et *this sont une seule et meme instance (meme adresse en memoire).
virtual const Nomle_nom () const
 Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual void nommer (const Nom &)
 Donne un nom a l'Objet_U Methode virtuelle a surcharger.
int get_object_id () const
 Renvoie l'identifiant unique de l'objet object_id_.
virtual const Type_infoget_info () const
 Donne des informations sur le type de l'Objet_U.
const Nomque_suis_je () const
 renvoie la chaine identifiant la classe.
const char * le_type () const
 Donne le nom du type de l'Objet_U.
virtual int change_num (const int *const)
 Change le numero interne de l'Objet_U.
virtual int associer_ (Objet_U &)
 Associe l'Objet_U a un autre Objet_U Methode virtuelle a surcharger.
const Interpreteinterprete () const
Interpreteinterprete ()
Public Member Functions inherited from Process
virtual ~Process ()

Additional Inherited Members

Static Public Member Functions inherited from Objet_U
static const Nomnom_du_cas ()
 Renvoie une reference constante vers le nom du cas.
static Nomget_set_nom_du_cas ()
 Renvoie une reference non constante vers le nom du cas (pour pouvoir le modifier).
static const Type_infoinfo ()
 Donne des informations sur le type de l'Objet_U.
static const Objet_Uself_cast (const Objet_U &)
 methode ajoutee pour caster en python
static Objet_Uself_cast (Objet_U &)
Static Public Member Functions inherited from Process
static int me ()
 renvoie mon rang dans le groupe de communication courant.
static int nproc ()
 renvoie le nombre de processeurs dans le groupe courant Voir Comm_Group::nproc() et PE_Groups::current_group()
static bool is_parallel ()
static void exit (int exit_code=-1)
 Routine de sortie de TRUST dans une region Kokkos.
static double mp_sum (double)
 Calcule la somme de x sur tous les processeurs du groupe courant.
static float mp_sum (float)
static trustIdType mp_sum (trustIdType)
 Calcule la somme de x sur tous les processeurs du groupe courant.
static double mp_max (double)
static double mp_min (double)
static int mp_max (int)
 renvoie le plus grand int i sur l'ensemble des processeurs du groupe courant.
static int mp_min (int)
 renvoie le plus petit int i sur l'ensemble des processeurs du groupe courant.
static double mp_sum_as_double (int v)
static trustIdType mppartial_sum (trustIdType i)
 Calul de la somme partielle de i sur les processeurs 0 a me()-1 (renvoie 0 sur le processeur 0).
template<typename T>
static void mp_sum_for_each (T &arg1, T &arg2)
 C++14 compatible mp_sum_for_each: combine multiple mp_sum calls into one collective operation Usage: mp_sum_for_each(a, b); mp_sum_for_each(a, b, c); mp_sum_for_each(a, b, c, d); mp_sum_for_each(a, b, c, d, e); All arguments must be of the same type (double or int) and are modified in place. Supports 2-5 parameters.
template<typename T>
static void mp_sum_for_each (T &arg1, T &arg2, T &arg3)
template<typename T>
static void mp_sum_for_each (T &arg1, T &arg2, T &arg3, T &arg4)
template<typename T>
static void mp_sum_for_each (T &arg1, T &arg2, T &arg3, T &arg4, T &arg5)
template<typename T>
static void mp_max_for_each (T &arg1, T &arg2)
 C++14 compatible mp_max_for_each: combine multiple mp_max calls into one collective operation.
template<typename T>
static void mp_max_for_each (T &arg1, T &arg2, T &arg3)
template<typename T>
static void mp_max_for_each (T &arg1, T &arg2, T &arg3, T &arg4)
template<typename T>
static void mp_max_for_each (T &arg1, T &arg2, T &arg3, T &arg4, T &arg5)
template<typename T>
static void mp_min_for_each (T &arg1, T &arg2)
 C++14 compatible mp_min_for_each: combine multiple mp_min calls into one collective operation.
template<typename T>
static void mp_min_for_each (T &arg1, T &arg2, T &arg3)
template<typename T>
static void mp_min_for_each (T &arg1, T &arg2, T &arg3, T &arg4)
template<typename T>
static void mp_min_for_each (T &arg1, T &arg2, T &arg3, T &arg4, T &arg5)
template<typename _TYPE_>
static void mp_sum_for_each_item (TRUSTArray< _TYPE_ > &x, int n=-1)
template<typename _TYPE_>
static void mp_max_for_each_item (TRUSTArray< _TYPE_ > &x, int n=-1)
template<typename _TYPE_>
static void mp_min_for_each_item (TRUSTArray< _TYPE_ > &x, int n=-1)
static bool mp_and (bool)
 Calcule le 'et' logique de b sur tous les processeurs du groupe courant.
static bool mp_or (bool)
static int check_int_overflow (trustIdType)
static int je_suis_maitre ()
 renvoie 1 si on est sur le processeur maitre du groupe courant (c'est a dire me() == 0), 0 sinon.
static KOKKOS_INLINE_FUNCTION void Kokkos_exit (const char *)
 Routine de sortie de TRUST dans une region Kokkos.
static int node_master ()
 renvoie 1 si on est sur le processeur maitre du noeud numa, 0 sinon.
static void exit (const Nom &message, int exit_code=-1)
static bool is_sequential ()
static void barrier ()
 Synchronise tous les processeurs du groupe courant (attend que tous les processeurs soient arrives a la barriere).
static void abort ()
 Routine de sortie de Trio-U sur une erreur abort().
static SortieJournal (int message_level=0)
 Renvoie un objet statique de type Sortie qui sert de journal d'evenements.
static double ram_processeur ()
static void imprimer_ram_totale (int all_process=0)
static bool force_single_file (const int ranks, const Nom &filename)
Static Public Attributes inherited from Objet_U
static double precision_geom = 1e-10
static constexpr bool HAS_POINTER = false
static int dimension =0
static int format_precision_geom =11
static int axi =0
static int bidim_axi =0
static int DEACTIVATE_SIGINT_CATCH =0
static Type_info info_obj
static bool disable_TU =false
 Flag to disable or not the writing of the .TU files.
static bool stat_per_proc_perf_log =false
 Flag to enable the writing of the statistics detailed per processor in _csv.TU file.
Static Public Attributes inherited from Process
static int exception_sur_exit =0
static int multiple_files =5120
Protected Types inherited from Collision_Model_FT_base
enum class  Collision_model { HYBRID_ESI , BREUGEM }
enum class  Detection_method { CHECK_ALL , VERLET , LC_VERLET }
Protected Member Functions inherited from Collision_Model_FT_base
 OBS_PTR (Transport_Interfaces_FT_Disc) refequation_transport_
 OBS_PTR (Domaine) ref_domaine
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)
int get_nb_particles_j (const int ind_particle_i) const
int get_ind_start_particles_j (const int ind_particle_i) const
int get_particle_i (const int ind_particle_i)
int get_particle_j (const int ind_particle_i, const int ind_particle_j)
Protected Member Functions inherited from Objet_U
 Objet_U ()
 Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_), et enregistre l'objet en "memoire".
 Objet_U (const Objet_U &)
 Constructeur par copie.
const Objet_Uoperator= (const Objet_U &)
 Operateur= : ne fait rien (on conserve le numero et l'identifiant).
Protected Attributes inherited from Collision_Model_FT_base
int is_collision_activated_before_impact_ = 1
int is_force_on_two_phase_elem_ = 0
int nb_particles_tot_ = 0
int nb_dt_Verlet_ = 0
int nb_dt_compute_Verlet_ = 0
int nb_dt_max_Verlet_ = 0
int collision_number_ = 0
int no_collision_model_ =0
double activation_distance_percentage_diameter_ = 0
double activation_distance_ = 0
double collision_duration_ = 0.
double detection_thickness_Verlet_ = 0.
DoubleTab particles_collision_number_
DoubleTab e_eff_
DoubleTab F_old_
DoubleTab F_now_
DoubleTab lagrangian_contact_forces_
DoubleVect collision_detected_
ArrOfInt list_upper_zone_
ArrOfInt list_lower_zone_
IntVect nb_nodes_
DoubleVect origin_
DoubleVect domain_dimensions_
DoubleVect fictive_wall_coordinates_
IntLists Verlet_tables_
ArrOfInt list_real_particles_
int nb_real_particles_
double stiffness_breugem_part_part_ = 0
double stiffness_breugem_wall_part_ = 0
double damper_breugem_part_part_ = 0
double damper_breugem_wall_part_ = 0
Collision_model collision_model_ = Collision_model::HYBRID_ESI
Detection_method detection_method_ = Detection_method::CHECK_ALL

Detailed Description

Definition at line 21 of file Collision_Model_FT_arbitrary.h.

Constructor & Destructor Documentation

◆ Collision_Model_FT_arbitrary()

Collision_Model_FT_arbitrary::Collision_Model_FT_arbitrary ( )

Definition at line 22 of file Collision_Model_FT_arbitrary.cpp.

Member Function Documentation

◆ compute_lagrangian_contact_forces()

void Collision_Model_FT_arbitrary::compute_lagrangian_contact_forces ( const Fluide_Diphasique & two_phase_fluid,
const DoubleTab & particles_position,
const DoubleTab & particles_velocity,
const double & deltat_simu )
overridevirtual

Implements Collision_Model_FT_base.

Definition at line 40 of file Collision_Model_FT_arbitrary.cpp.

◆ discretize_contact_forces_eulerian_field()

void Collision_Model_FT_arbitrary::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 )
overridevirtual

Implements Collision_Model_FT_base.

Definition at line 49 of file Collision_Model_FT_arbitrary.cpp.


The documentation for this class was generated from the following files:
  • /home/docs/checkouts/readthedocs.org/user_builds/triocfd-documentation/checkouts/next/src/Multiphase/fluid_particle_interaction/Collision_Model_FT_arbitrary.h
  • /home/docs/checkouts/readthedocs.org/user_builds/triocfd-documentation/checkouts/next/src/Multiphase/fluid_particle_interaction/Collision_Model_FT_arbitrary.cpp