|
TrioCFD 1.9.9_beta
TrioCFD documentation
|
Navier–Cauchy equation for small-strain linear elasticity. More...
#include <Equation_Navier_Cauchy.h>
Public Member Functions | |
| int | nombre_d_operateurs () const override |
| const Operateur & | operateur (int) const override |
| Operateur & | operateur (int) override |
| const Champ_Inc_base & | inconnue () const override |
| Champ_Inc_base & | inconnue () override |
| void | mettre_a_jour (double temps) override |
| The value of the unknown at the time step has been calculated. | |
| void | associer_milieu_base (const Milieu_base &) override |
| const Milieu_base & | milieu () const override |
| Milieu_base & | milieu () override |
| void | discretiser () override |
| Discretizes the equation. | |
| void | set_param (Param ¶m) const override |
| int | lire_motcle_non_standard (const Motcle &mot, Entree &is) override |
| Reads non-simple-type parameters of an Objet_U from an input stream. | |
| virtual const Champ_Don_base & | diffusivite_pour_transport () const |
| virtual const Champ_base & | diffusivite_pour_pas_de_temps () const |
| const Motcle & | domaine_application () const override |
| Returns "indeterminate" Navier_Stokes_standard for example overrides this method. | |
| void | valider_iteration () override |
| virtual method to correct the unknown during implicit iterations for example K-eps must remain positive | |
| Public Member Functions inherited from Equation_base | |
| void | nommer (const Nom &nom) override |
| Method called when the object instance is created in the data file (Interprete::ajouter). | |
| virtual void | avancer (int i=1) |
| virtual void | reculer (int i=1) |
| virtual int | nombre_d_operateurs_tot () const |
| virtual const Operateur & | operateur_fonctionnel (int) const |
| virtual Operateur & | operateur_fonctionnel (int) |
| virtual std::vector< YAML_data > | data_a_sauvegarder () const |
| for PDI IO: retrieve name, type and dimensions of the data to save/restore. This has to be overrode for all the equations that either: | |
| int | sauvegarder (Sortie &) const override |
| We save the unknown, then the source terms to an output stream. | |
| int | reprendre (Entree &) override |
| We resume the unknown from an input stream. | |
| Nom | create_polymacfamily_syno (const Nom &field_tag) const |
| Create a synonym of a field name in order to ensure backward compatibility with old names of the PolyMAC discretisation family. | |
| virtual void | init_save_file () |
| virtual void | close_save_file () |
| int | limpr () const |
| Ask the time scheme if an output is needed. | |
| virtual void | imprimer (Sortie &os) const |
| Prints the equation operators if the time scheme indicates it is necessary. | |
| virtual int | impr (Sortie &os) const |
| Prints the equation operators to an output stream, unconditionally. | |
| virtual void | associer_milieu_equation () |
| virtual DoubleTab & | derivee_en_temps_inco (DoubleTab &) |
| Returns the time derivative of the unknown I of the equation: dI/dt = M-1*(sum(operators(I) + sources)). | |
| virtual DoubleTab & | derivee_en_temps_inco_transport (DoubleTab &derivee) |
| virtual DoubleTab & | corriger_derivee_expl (DoubleTab &) |
| virtual DoubleTab & | corriger_derivee_impl (DoubleTab &) |
| virtual void | abortTimeStep () |
| Reinitialize what must be. | |
| virtual void | resetTime (double time) |
| Reset current time of the equation. Used from ICoCo. See documentation of Problem_base::resetTime(). | |
| virtual int | preparer_calcul () |
| Everything that does not depend on other possible problems. | |
| virtual bool | initTimeStep (double dt) |
| Allocation and initialization of the unknown and boundary conditions until present+dt. | |
| virtual bool | updateGivenFields () |
| virtual void | associer_pb_base (const Probleme_base &) |
| Associates with the Problem passed as parameter. | |
| virtual void | completer () |
| Completes the construction (initialization) of objects associated with the equation. | |
| virtual double | calculer_pas_de_temps () const |
| Calculation of the next time step. | |
| void | calculer_pas_de_temps_locaux (DoubleTab &) const |
| Sources & | sources () |
| Returns the source terms associated with the equation. | |
| const Sources & | sources () const |
| Returns the source terms associated with the equation (const version). | |
| Solveur_Masse_base & | solv_masse () |
| Returns the mass solver associated with the equation. | |
| const Solveur_Masse_base & | solv_masse () const |
| Returns the mass solver associated with the equation (const version). | |
| Probleme_base & | probleme () |
| Returns the problem associated with the equation. | |
| const Probleme_base & | probleme () const |
| Returns the problem associated with the equation. | |
| Schema_Temps_base & | schema_temps () |
| Returns the time scheme associated with the equation. | |
| const Schema_Temps_base & | schema_temps () const |
| Returns the time scheme associated with the equation. | |
| virtual void | associer_sch_tps_base (const Schema_Temps_base &) |
| Associates the time scheme with the equation. | |
| virtual void | associer_domaine_dis (const Domaine_dis_base &) |
| Associates the discretized domain with the equation. | |
| const Discretisation_base & | discretisation () const |
| Returns the discretization associated with the equation. | |
| virtual Domaine_Cl_dis_base & | domaine_Cl_dis () |
| Returns the discretized boundary condition domain associated with the equation. | |
| virtual const Domaine_Cl_dis_base & | domaine_Cl_dis () const |
| Returns the discretized boundary condition domain associated with the equation (const version). | |
| Domaine_dis_base & | domaine_dis () |
| Returns the discretized domain associated with the equation. | |
| const Domaine_dis_base & | domaine_dis () const |
| Returns the discretized domain associated with the equation. | |
| const Nom & | le_nom () const override |
| Returns the name of the equation. | |
| DoubleVect & | get_residu () |
| DoubleVect & | residu_initial () |
| void | initialise_residu (int=0) |
| virtual void | imprime_residu (SFichier &) |
| virtual Nom | expression_residu () |
| virtual void | dimensionner_matrice (Matrice_Morse &mat_morse) |
| virtual void | dimensionner_matrice_sans_mem (Matrice_Morse &mat_morse) |
| virtual void | assembler (Matrice_Morse &mat_morse, const DoubleTab &present, DoubleTab &secmem) |
| virtual void | modifier_pour_Cl (Matrice_Morse &mat_morse, DoubleTab &secmem) const |
| virtual void | assembler_avec_inertie (Matrice_Morse &mat_morse, const DoubleTab &present, DoubleTab &secmem) |
| virtual void | dimensionner_termes_croises (Matrice_Morse &matrice, const Probleme_base &autre_pb, int nl, int nc) |
| virtual void | ajouter_termes_croises (const DoubleTab &inco, const Probleme_base &autre_pb, const DoubleTab &autre_inco, DoubleTab &resu) const |
| virtual void | contribuer_termes_croises (const DoubleTab &inco, const Probleme_base &autre_pb, const DoubleTab &autre_inco, Matrice_Morse &matrice) const |
| virtual int | has_interface_blocs () const |
| virtual double | get_time_factor () const |
| virtual void | dimensionner_blocs (matrices_t matrices, const tabs_t &semi_impl={}) const |
| virtual void | assembler_blocs (matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl={}) const |
| virtual void | assembler_blocs_avec_inertie (matrices_t matrices, DoubleTab &secmem, const tabs_t &semi_impl={}) |
| Champ_Inc_base & | champ_conserve () const |
| int | has_champ_conserve () const |
| void | init_champ_conserve () const |
| virtual std::pair< std::string, fonc_calc_t > | get_fonc_champ_conserve () const |
| virtual Champ_Inc_base & | champ_convecte () const |
| virtual int | has_champ_convecte () const |
| virtual void | init_champ_convecte () const |
| virtual void | mettre_a_jour_champs_conserves (double temps, int reset=0) |
| void | creer_champ (const Motcle &motlu) override |
| const Champ_base & | get_champ (const Motcle &nom) const override |
| void | get_noms_champs_postraitables (Noms &nom, Option opt=NONE) const override |
| bool | has_champ (const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override |
| bool | has_champ (const Motcle &nom) const override |
| virtual void | verifie_ch_init_nb_comp (const Champ_Inc_base &ch_ref, const int nb_comp) const |
| Verification of the number of components read for the specification of a field. | |
| virtual void | verifie_ch_init_nb_comp_cl (const Champ_Inc_base &ch_ref, const int nb_comp, const Cond_lim_base &cl) const |
| DoubleTab & | derivee_en_temps_conv (DoubleTab &, const DoubleTab &) |
| Add convection term In: solution is the unknown I. | |
| void | Gradient_conjugue_diff_impl (DoubleTrav &secmem, DoubleTab &solution) |
| void | Gradient_conjugue_diff_impl (DoubleTrav &secmem, DoubleTab &solution, const DoubleTab &terme_mul) |
| OWN_PTR (Parametre_equation_base) ¶metre_equation() | |
| const | OWN_PTR (Parametre_equation_base) ¶metre_equation() const |
| virtual const RefObjU & | get_modele (Type_modele type) const |
| virtual int | equation_non_resolue () const |
| int | disable_equation_residual () const |
| virtual const Champ_Inc_base & | derivee_en_temps () const |
| virtual Champ_Inc_base & | derivee_en_temps () |
| void | set_calculate_time_derivative (int i) |
| int | calculate_time_derivative () const |
| void | set_residuals (const DoubleTab &residual) |
| virtual bool | positive_unkown () |
| void | add_champs_compris (const Champ_base &ch) |
| void | set_diffusion_multi_scalaire (bool flg=true) |
| const bool & | diffusion_multi_scalaire () const |
| public_for_cuda void | Gradient_conjugue_diff_impl (DoubleTrav &secmem, DoubleTab &solution, int size_terme_mul, const DoubleTab &term_mul) |
| Solve: (1/dt + M-1*L)*dI = M-1 * secmem with a Conjugate Gradient matrix-free algorithm by default. | |
| Public Member Functions inherited from Champs_compris_interface | |
| virtual | ~Champs_compris_interface () |
| virtual bool | has_champ (const Motcle &nom, OBS_PTR(Champ_base)&ref_champ) const =0 |
| Public Member Functions inherited from Objet_U | |
| ~Objet_U () override | |
| Destructor. Removes the object from the list of objects registered in "memory". | |
| int | numero () const |
| Returns the index of the object in Memoire::data. | |
| virtual int | duplique () const =0 |
| virtual Sortie & | printOn (Sortie &) const |
| Writes the object to an output stream. Virtual method to override. | |
| virtual Entree & | readOn (Entree &) |
| Reads an Objet_U from an input stream. Virtual method to override. | |
| virtual unsigned | taille_memoire () const =0 |
| virtual int | est_egal_a (const Objet_U &) const |
| Returns 1 if x and *this are the same instance (same memory address). | |
| int | get_object_id () const |
| Returns the unique identifier of the object (object_id_). | |
| virtual const Type_info * | get_info () const |
| Returns type information for the Objet_U. | |
| const Nom & | que_suis_je () const |
| Returns the string identifying the class. | |
| const char * | le_type () const |
| Returns the type name of the Objet_U. | |
| virtual int | change_num (const int *const) |
| Changes the internal number of the Objet_U. | |
| virtual int | associer_ (Objet_U &) |
| Associates the Objet_U with another Objet_U. Virtual method to override. | |
| const Interprete & | interprete () const |
| Interprete & | interprete () |
| Public Member Functions inherited from Process | |
| virtual | ~Process () |
Additional Inherited Members | |
| Static Public Member Functions inherited from Equation_base | |
| static void | calculer_champ_conserve (const Objet_U &obj, DoubleTab &val, DoubleTab &bval, tabs_t &deriv) |
| Static Public Member Functions inherited from Objet_U | |
| static const Nom & | nom_du_cas () |
| Returns a constant reference to the case name. This method is static. | |
| static Nom & | get_set_nom_du_cas () |
| Returns a non-constant reference to the case name (to allow modification). This method is static. | |
| static const Type_info * | info () |
| Returns type information for the Objet_U (static version). | |
| static const Objet_U & | self_cast (const Objet_U &) |
| Method added for casting in Python. | |
| static Objet_U & | self_cast (Objet_U &) |
| Static Public Member Functions inherited from Process | |
| static int | me () |
| Returns the rank of the local processor in the current communication group. See Comm_Group::rank() and PE_Groups::current_group(). | |
| static int | nproc () |
| Returns the number of processors in the current group. See Comm_Group::nproc() and PE_Groups::current_group(). | |
| static bool | is_parallel () |
| static void | exit (int exit_code=-1) |
| Exit routine for TRUST within a Kokkos region. | |
| static double | mp_sum (double) |
| Computes the sum of x over all processors in the current group. | |
| static float | mp_sum (float) |
| static trustIdType | mp_sum (trustIdType) |
| Computes the sum of x over all processors in the current group. | |
| static double | mp_max (double) |
| static double | mp_min (double) |
| static int | mp_max (int) |
| Returns the maximum value of x across all processors in the current group. | |
| static int | mp_min (int) |
| Returns the minimum value of x across all processors in the current group. | |
| static double | mp_sum_as_double (int v) |
| static trustIdType | mppartial_sum (trustIdType i) |
| Computes the partial sum of x over processors 0 to me()-1 (returns 0 on processor 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) |
| Computes the logical AND of b across all processors in the current group. | |
| static bool | mp_or (bool) |
| static int | check_int_overflow (trustIdType) |
| static int | je_suis_maitre () |
| Returns 1 if on the master processor of the current group (i.e. me() == 0), 0 otherwise. | |
| static KOKKOS_INLINE_FUNCTION void | Kokkos_exit (const char *) |
| Exit routine for TRUST within a Kokkos region. | |
| static int | node_master () |
| Returns 1 if on the NUMA node master processor, 0 otherwise. | |
| static void | exit (const Nom &message, int exit_code=-1) |
| static bool | is_sequential () |
| static void | barrier () |
| Synchronizes all processors in the current group (waits until all processors have reached the barrier). | |
| static void | abort () |
| Abort routine for TRUST on a fatal error. | |
| static Sortie & | Journal (int message_level=0) |
| Returns a static Sortie object used as an event journal. | |
| static double | ram_processeur () |
| static void | imprimer_ram_totale (int all_process=0) |
| static bool | force_single_file (const int ranks, const Nom &filename) |
| Public Attributes inherited from Equation_base | |
| Matrice_Morse_Diag | diag_ |
| 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 Member Functions inherited from Equation_base | |
| OWN_PTR (Solveur_Masse_base) solveur_masse | |
| OBS_PTR (Schema_Temps_base) le_schema_en_temps | |
| OBS_PTR (Domaine_dis_base) le_dom_dis | |
| OWN_PTR (Domaine_Cl_dis_base) le_dom_Cl_dis | |
| OBS_PTR (Probleme_base) mon_probleme | |
| virtual Entree & | lire_sources (Entree &) |
| Reading of source terms in an input stream. | |
| virtual Entree & | lire_cond_init (Entree &) |
| Reading of initial conditions in an input stream. | |
| virtual Entree & | lire_cl (Entree &) |
| Reading of boundary conditions in an input stream. | |
| virtual int | verif_Cl () const |
| Verifies the compatibility of boundary conditions with the equation. | |
| virtual void | lire () |
| OWN_PTR (Parametre_equation_base) parametre_equation_ | |
| LIST (RefObjU) liste_modeles_ | |
| OWN_PTR (Champ_Inc_base) champ_conserve_ | |
| OWN_PTR (Champ_Inc_base) champ_convecte_ | |
| OWN_PTR (Champ_Inc_base) derivee_en_temps_ | |
| Protected Member Functions inherited from Objet_U | |
| Objet_U () | |
| Default constructor: assigns a unique identifier to the object (object_id_) and registers the object in "memory" by giving it a num_obj number. | |
| Objet_U (const Objet_U &) | |
| Copy constructor. | |
| const Objet_U & | operator= (const Objet_U &) |
| Assignment operator: does nothing (the number and identifier are preserved). | |
| Protected Attributes inherited from Equation_base | |
| Nom | nom_ |
| Sources | les_sources |
| DoubleList | dt_op_bak |
| int | sys_invariant_ |
| int | implicite_ |
| bool | has_time_factor_ |
| Champs_compris | champs_compris_ |
| Champs_Fonc | list_champ_combi |
| Matrice_Morse | matrice_stockee |
| int | matrice_init |
| int | calculate_time_derivative_ |
| bool | diffusion_multi_scalaire_ = false |
Navier–Cauchy equation for small-strain linear elasticity.
Solves for the displacement field \(\mathbf{u}\) of an isotropic linear elastic solid.
Governing equations (optionally including thermal expansion and body forces):
The Lamé parameters \(\lambda\) and \(\mu\), the bulk modulus \(K\) and the thermal expansion coefficient \(\alpha\) are provided by Milieu_Elasticite.
The operator terme_diffusif represents the whole divergence term \(\nabla\cdot(\mu(\nabla\mathbf{u}+\nabla\mathbf{u}^T)+\lambda(\nabla\cdot\mathbf{u})\mathbf{I})\), including the volumetric contribution ( \(\lambda\), sometimes referred to as a “volumetric viscosity” in diffusion-like operator form).
Post-processing fields may be created/updated, depending on the discretization and options: stresses, strains, von Mises equivalent stress, and (when needed) nodal velocity.
Definition at line 49 of file Equation_Navier_Cauchy.h.
|
overridevirtual |
Implements Equation_base.
Definition at line 73 of file Equation_Navier_Cauchy.cpp.
|
inlinevirtual |
Definition at line 70 of file Equation_Navier_Cauchy.h.
|
inlinevirtual |
Definition at line 69 of file Equation_Navier_Cauchy.h.
|
overridevirtual |
Discretizes the equation.
Type the domaine_Cl_dis, the format, associate it with the equation. Type the mass solver, associate the discretized domain and the discretized boundary condition domain with it.
Reimplemented from Equation_base.
Definition at line 83 of file Equation_Navier_Cauchy.cpp.
|
overridevirtual |
Returns "indeterminate" Navier_Stokes_standard for example overrides this method.
to return "Hydraulic"
Reimplemented from Equation_base.
Definition at line 113 of file Equation_Navier_Cauchy.cpp.
|
inlineoverridevirtual |
Implements Equation_base.
Definition at line 59 of file Equation_Navier_Cauchy.h.
|
inlineoverridevirtual |
Implements Equation_base.
Definition at line 60 of file Equation_Navier_Cauchy.h.
|
overridevirtual |
Reads non-simple-type parameters of an Objet_U from an input stream.
| motlu | The name of the keyword to read. |
| is | An input stream. |
Reimplemented from Equation_base.
Definition at line 45 of file Equation_Navier_Cauchy.cpp.
|
overridevirtual |
The value of the unknown at the time step has been calculated.
This method advances the present until the time passed as parameter. It also updates the properties of the medium.
| (double | temps) the time step for update |
Reimplemented from Equation_base.
Definition at line 139 of file Equation_Navier_Cauchy.cpp.
|
inlineoverridevirtual |
Implements Equation_base.
Definition at line 64 of file Equation_Navier_Cauchy.h.
|
inlineoverridevirtual |
Implements Equation_base.
Definition at line 65 of file Equation_Navier_Cauchy.h.
|
inlineoverridevirtual |
Implements Equation_base.
Definition at line 55 of file Equation_Navier_Cauchy.h.
|
overridevirtual |
Implements Equation_base.
Definition at line 61 of file Equation_Navier_Cauchy.cpp.
|
overridevirtual |
Implements Equation_base.
Definition at line 67 of file Equation_Navier_Cauchy.cpp.
|
overridevirtual |
Reimplemented from Equation_base.
Definition at line 39 of file Equation_Navier_Cauchy.cpp.
|
overridevirtual |
virtual method to correct the unknown during implicit iterations for example K-eps must remain positive
mass fractions between 0 and 1
Reimplemented from Equation_base.
Definition at line 119 of file Equation_Navier_Cauchy.cpp.