mise à jour de Hypo_hooke2D_C: ajout méthode d'initialisation de grandeurs quelconques locales: Hypo_hooke2D_C::Verif_et_preparation_acces_grandeurs_locale() et son utilisation

mise à jour info de l'utilisation de l'utilisation de Map_type_quelconque()dans Loi_comp_abstraite dans
This commit is contained in:
Gérard Rio 2024-05-05 10:44:44 +02:00
parent 3811288322
commit 3935825158
3 changed files with 45 additions and 3 deletions

View file

@ -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 <EnumTypeQue
listlocale.unique(); // suppression des doublons
};
// vérification et préparation de l'acces aux grandeurs locales
void Hypo_hooke2D_C::Verif_et_preparation_acces_grandeurs_locale()
{list <EnumTypeQuelconque > 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 <EnumTypeQuelconque>& 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 <EnumTypeQuelconque>& 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

View file

@ -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();
};

View file

@ -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 ---