From 3935825158653779389d96c7835c79136ad030c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9rard=20Rio?= Date: Sun, 5 May 2024 10:44:44 +0200 Subject: [PATCH] =?UTF-8?q?mise=20=C3=A0=20jour=20de=20Hypo=5Fhooke2D=5FC:?= =?UTF-8?q?=20ajout=20m=C3=A9thode=20d'initialisation=20de=20grandeurs=20q?= =?UTF-8?q?uelconques=20locales:=20Hypo=5Fhooke2D=5FC::Verif=5Fet=5Fprepar?= =?UTF-8?q?ation=5Facces=5Fgrandeurs=5Flocale()=20et=20son=20utilisation?= =?UTF-8?q?=20mise=20=C3=A0=20jour=20info=20de=20l'utilisation=20de=20l'ut?= =?UTF-8?q?ilisation=20de=20Map=5Ftype=5Fquelconque()dans=20Loi=5Fcomp=5Fa?= =?UTF-8?q?bstraite=20dans?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- comportement/Hypo_elastique/Hypo_hooke2D_C.cc | 37 ++++++++++++++++++- comportement/Hypo_elastique/Hypo_hooke2D_C.h | 3 ++ comportement/Loi_comp_abstraite.h | 8 +++- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/comportement/Hypo_elastique/Hypo_hooke2D_C.cc b/comportement/Hypo_elastique/Hypo_hooke2D_C.cc index 7610e68..14b0f0c 100644 --- a/comportement/Hypo_elastique/Hypo_hooke2D_C.cc +++ b/comportement/Hypo_elastique/Hypo_hooke2D_C.cc @@ -542,6 +542,8 @@ void Hypo_hooke2D_C::LectureDonneesParticulieres (UtilLecture * entreePrinc,LesC // appel au niveau de la classe mère Loi_comp_abstraite::Lecture_type_deformation_et_niveau_commentaire (*entreePrinc,lesFonctionsnD); + // si fct nD on prépare l'accès éventuel à des grandeurs locales + Verif_et_preparation_acces_grandeurs_locale(); }; @@ -862,9 +864,11 @@ void Hypo_hooke2D_C::Lecture_base_info_loi(ifstream& ent,const int cas,LesRefere // indicateur pour les calculs partielles ent >> nom >> cas_calcul ; + // si fct nD on prépare l'accès éventuel à des grandeurs locales + Verif_et_preparation_acces_grandeurs_locale(); } - Loi_comp_abstraite::Lecture_don_base_info(ent,cas,lesRef,lesCourbes1D,lesFonctionsnD); - }; + Loi_comp_abstraite::Lecture_don_base_info(ent,cas,lesRef,lesCourbes1D,lesFonctionsnD); + }; // cas donne le niveau de sauvegarde // = 1 : on sauvegarde tout @@ -1238,7 +1242,36 @@ void Hypo_hooke2D_C::Activation_stockage_grandeurs_quelconques(list listEnuQuelc; // def de la liste des grandeurs quelconque + + // ---récup des grandeurs quelconques nécessaires pour les fonction nD + if (mu_nD != NULL) + {const Tableau & tab_enu_quelc = mu_nD->Tab_enu_quelconque(); + int tail = tab_enu_quelc.Taille(); + if (tail) + {for (int i = 1; i<= tail; i++) + listEnuQuelc.push_back(tab_enu_quelc(i)); + }; + }; + if (Kc_nD != NULL) + {const Tableau & tab_enu_quelc = mu_nD->Tab_enu_quelconque(); + int tail = tab_enu_quelc.Taille(); + if (tail) + {for (int i = 1; i<= tail; i++) + listEnuQuelc.push_back(tab_enu_quelc(i)); + }; + }; + listEnuQuelc.sort(); + listEnuQuelc.unique(); + + + // activation dans la loi de la demande des grandeurs quelconques + this->Activation_stockage_grandeurs_quelconques(listEnuQuelc); + }; // ========== codage des METHODES VIRTUELLES protegees:================ // calcul des contraintes a t+dt diff --git a/comportement/Hypo_elastique/Hypo_hooke2D_C.h b/comportement/Hypo_elastique/Hypo_hooke2D_C.h index f3e44b0..12d8baa 100644 --- a/comportement/Hypo_elastique/Hypo_hooke2D_C.h +++ b/comportement/Hypo_elastique/Hypo_hooke2D_C.h @@ -315,6 +315,9 @@ class Hypo_hooke2D_C : public Loi_comp_abstraite ,EnergieMeca & energ,const EnergieMeca & energ_t,double& module_compressibilite,double& module_cisaillement ,const Met_abstraite::Impli& ex); + + // vérification et préparation de l'acces aux grandeurs locales + void Verif_et_preparation_acces_grandeurs_locale(); }; diff --git a/comportement/Loi_comp_abstraite.h b/comportement/Loi_comp_abstraite.h index 9c4546c..24e390c 100644 --- a/comportement/Loi_comp_abstraite.h +++ b/comportement/Loi_comp_abstraite.h @@ -192,9 +192,15 @@ class Loi_comp_abstraite : public LoiAbstraiteGeneral // pour info, pour que la map soit fonctionnelle : il faut: (cf. exemple de Hysteresis_bulk) // - définir pour le stockage la méthode : Map_type_quelconque() - // - définir pour le stockage la méthode : Mise_a_jour_map_type_quelconque() et s'en servir dans le stockage local + // - définir pour le stockage la méthode : Mise_a_jour_map_type_quelconque() et s'en servir dans le stockage + // local (par ex: dans TdtversT() et TversTdt()) // - définir pour la loi la méthode: Insertion_conteneur_dans_save_result() // - définir pour la loi la méthode: Activation_stockage_grandeurs_quelconques() + + // si on veut se servir des grandeurs locales via une méthode générique de loi_comp_abstraite: ex: + // Loi_comp_abstraite::Loi_comp_Valeur_FnD_Evoluee pour l'accés à une fct nD (voir Hypo_hooke2D_C par ex) + // on peut définir: Verif_et_preparation_acces_grandeurs_locale() -> remplissage de la map local + // activation de Verif_et_preparation_acces_grandeurs_locale: dans la lecture: .info et base_info // ---- fin gestion d'une liste de grandeurs quelconques éventuelles ---