// *********************************************************************** // --- Logiciel MEF++ // --- // --- Copyright 1996-2006 GIREF, Université Laval // --- TOUS DROITS RÉSERVÉS // --- ALL RIGHTS RESERVED // --- // --- Ce logiciel est couvert par la Loi sur le droit d'auteur. // --- L'utilisation, ou la modification de ce logiciel sous toutes ses // --- formes, que ce soit code source ou code compilé, à des fins // --- personnelles et non commerciales sont autorisées sans frais pour // --- autant que la présente notice de copyright ainsi que cette // --- permission apparaissent dans toutes les copies ainsi que dans la // --- documentation. // --- Le GIREF et l'Université Laval ne prétendent en aucune façon que // --- ce code convient à un emploi quelconque. Celui-ci est distribué // --- sans aucune garantie implicite ou explicite. // *********************************************************************** #ifndef GeorgesVisco_ChampContraintesHPPMateriauVieillissant_DEJA_INCLUS #define GeorgesVisco_ChampContraintesHPPMateriauVieillissant_DEJA_INCLUS // ******************************************************************* // Nom du fichier: GeorgesVisco_ChampContraintesHPPMateriauVieillissant.h // // Nom de la classe: ChampContraintesHPPMateriauVeillissant // // Sommaire: Classe calculant les contraintes pour un matériau dont les propriétés // varient avec le temps. On suppose que l'on applique les hypothèses // de petites perturbations avec la possibilité de distinguer deux états // du solide et d'employer deux lois de comportement: loi de Hooke ou // loi de Bazant. // // Description: Ce champ calcul un tenseur O2 (en général les contraintes d'un matériau) à partir // des déplacements (la classe calcule les déformations), d'un tenseur O4 // (en général associé à l'élasticité), d'un tenseur O2 (en général associé // au contraintes précédentes) et d'un indicateur d'état permettant de choisir // la loi de comportement: loi de Hooke (sigma = E epsilon) ou de Bazant // (dsigma/dt = E depsilon/dt). //

//!{! u !}! le champ des déplacements,

//!{! u^p !}! le champ des déplacements au temps précédent,

//!{! S_{ijkh} !}! le champ du tenseur O4,

//!{! R^p !}! un tenseur O2 ,

//!{! \chi \le 0\text{ si loi de Hooke : }\sigma_{ij}(t,x) = E_{ijkl}(t,x)\epsilon_{kl}(u(t,x))!}!

//!{! \chi > 0\text{ si loi de Bazant : }\frac{ \partial \sigma_{ij}(t,x)}{\partial t} = E_{ijkl}(t,x)\frac{\partial \epsilon_{kl}(u(t,x))}{\partial t}!}! //

// !{! R_{ij} = S_{ijkh} \epsilon_{kh}(u) + (\chi > 0)(R^p - S_{ijkh} \epsilon_{kh}(u^p))!}! //

// // Attributs: // ChampVect3DContinu *aChampDeplacements; // ChampVect3DContinu *aChampDeplacementsPrecedents; // ChampTensorielO4Sym *aChampElasticite; // ChampTensorielO2Sym *aChampSigmaPrecedent; // ChampScalaire *aChampIndicateurEtat; // // ******************************************************************* #include "MEFPPUtil.h" #include "ChampAnalytiqueBaseDiscParElement.h" #include "ChampScalaireComposanteDiscontinu.h" #include "ChampTensO2SymDiscParElement.h" #include "TenseurO2Sym.h" class ChampVect3DContinu; class ChampTensorielO4Sym; class GeorgesVisco_ChampContraintesHPPMateriauVieillissant : public ChampAnalytiqueBaseDiscParElement { public: GeorgesVisco_ChampContraintesHPPMateriauVieillissant (const std::string& pNom = "Defaut"); GeorgesVisco_ChampContraintesHPPMateriauVieillissant (const GeorgesVisco_ChampContraintesHPPMateriauVieillissant& pGeorgesVisco_ChampContraintesHPPMateriauVieillissant); ~GeorgesVisco_ChampContraintesHPPMateriauVieillissant(); GeorgesVisco_ChampContraintesHPPMateriauVieillissant& operator= (const GeorgesVisco_ChampContraintesHPPMateriauVieillissant& pGeorgesVisco_ChampContraintesHPPMateriauVieillissant); virtual void ajouteEvaluationsAFaire(Entier pChoixEvaluations, const SchemaIntg& pSchemaIntg); virtual void ajouteSchemaIntegration(const SchemaIntg& pSchemaIntg); virtual void enleveToutSchemaIntegrations(); virtual void remetAZeroEvaluationsAFaire(const SchemaIntg& pSchemaIntg); void asgnChamps (ChampVect3DContinu &pChampDeplacements, ChampVect3DContinu &pChampDeplacementsPrecedents, ChampTensorielO4Sym &pChampElasticite, ChampTensorielO2Sym &pChampContraintesPrecedentes, ChampScalaire &pChampIndicateurEtat); template const VectDyn >& transfertChampSurGenerique(const PTTypeObjet& pObjet, const SchemaIntg& pSchemaIntg, const VectDyn& pVectInfoLocalesTransformation) const; virtual const VectDyn >& transfertChampSur(const Maillage::TypeElement& pElem, const SchemaIntg& pSchemaIntg, const VectDyn& pVectInfoLocalesTransformation) const; virtual void asgnTemps (const DReel& pTemps); virtual void evalue(const Vecteur3D& pCoor, const DReel& pTemps, TenseurO2Sym& pValeur) const; virtual ERMsg importeVersion0 (std::istream& pEntree); virtual ERMsg exporteVersion0 (std::ostream& pSortie) const; virtual void ecrisVirtuel (PRStreamEcriture& pPREcriture) const; virtual void lisVirtuel (PRStreamLecture& pPRLecture); virtual GeorgesVisco_ChampContraintesHPPMateriauVieillissant* newChamp() const; virtual GeorgesVisco_ChampContraintesHPPMateriauVieillissant* newChampCopie() const ; virtual ChampScalaire& reqComposante (const Entier pIndice) ; virtual const ChampScalaire& reqComposante (const Entier pIndice) const ; private: ChampVect3DContinu *aChampDeplacements; ChampVect3DContinu *aChampDeplacementsPrecedents; ChampTensorielO4Sym *aChampElasticite; ChampTensorielO2Sym *aChampContraintesPrecedentes; ChampScalaire *aChampIndicateurEtat; VectFixe, 6> aComposantes; bool aAppelRecursifComposante; _GIREF_DECLARE_INVARIANTS; }; #endif // #ifndef GeorgesVisco_ChampContraintesHPPMateriauVieillissant_DEJA_INCLUS