// ************************************************************************ // --- 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_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin_INCLUS #define GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin_INCLUS // *********************************************************************************************** // Nom du fichier: GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin.h // // Nom de la classe: GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin // // Sommaire: Terme de formulation pour une cellule visco élastique dans un modèle visco-élastique de Maxwell // avec élasticité linéaire 3D et l'hypothèse de linéarité en temps du tenseur des déformations !{!\epsilon!}!. // // Description: Terme de formulation calculant la contribution à la matrice et au résidu pour une cellule // visco élastique dans un modèle visco-élastique de Maxwell avec élasticité linéaire 3D. // L'hypothèse de linéarité en temps du tenseur des déformations !{!\epsilon!}! permet d'avoir // la forme suivante pour les contributions au résidu et à la matrice: //

// Matrice = !{!\int \boldsymbol{S}_{n+1}\epsilon(\delta u):\epsilon(v) dx.!}! //

// Résidu = !{! - \int \boldsymbol{S}_{n+1}\epsilon(u):\epsilon(v) - \boldsymbol{T}_{n+1}\epsilon(u_{p}):\epsilon(v) + \boldsymbol{I}_{n+1} * \sigma^4_{n}:\epsilon(v) dx.!}!

//

// où

//!{!\epsilon_{ij}(v) = \frac{1}{2}(\frac{\partial v_i}{\partial x_j} + \frac{\partial v_j}{\partial x_i})!}! // le tenseur des déformations (ordre 2)

// //!{!\boldsymbol{S}_{n+1}!}! le champ tensoriel O4 symétrique provenant l'integration du produit (termes à termes) du tenseur // d'élasticité et du tenseur du temps de relaxation

//!{!\boldsymbol{T}_{n+1}!}! le champ tensoriel O4 symétrique provenant l'integration du produit (termes à termes) du tenseur // d'élasticité et du tenseur du temps de relaxation

//!{!\boldsymbol{I}_{n+1}!}! le champ tensoriel O4 symétrique du temps de relaxation (exponentiel de l'intégrale en temps du // rapport de la viscosite et d'élasticité)

//!{!\boldsymbol\sigma^4_{n}!}! le champ des pseudo contraintes, un tenseur O4 avec symetries mineures seulement qui tient compte // de l'historique des contraintes dans la cellule. //!{!u = \delta u + u_p!}! le champ vectoriel3d des déplacements

//!{!v!}! le champ vectoriel3d des fonctions test

// // Attributs: // *aChampU Le champ de calcul // *aChampV Le champ associé aux fonctions test // *aChampUPrecedent: Le champ contenant les deplacements au pas precedent // *aChampPseudoSigmaO4Precedent: Le champ contenant le tenseur des pseudo contraintes au pas precedent // *aChampI: Le champ contenant le tenseur du temps de relaxation

// *aChampS: Le champ contenant le tenseur provenant l'integration du produit du tenseur d'élasticité // et du tenseur du temps de relaxation // *aVectInfoTransformation: Le * au vecteur d'information de transformation de l'élément de // référence sur l'élément réel. // *aVectInfoInterpolationNU: Le * au vecteur d'information d'interpolation du champ U. // *aVectInfoInterpolationNV: Le * au vecteur d'information d'interpolation du champ V. // *aVectInfoChampS Le * au vecteur d'information des valeurs du champ S. // *aVectInfoChampI: Le * au vecteur d'information des valeurs du champ I. // *aVectInfoChampPseudoSigmaPrecedent: Le * au vecteur d'information des valeurs du champ PseudoSigma. // // *********************************************************************************************** #include "MEFPPUtil.h" #include "TenseurO2Sym.h" #include "TenseurO4Sym.h" #include "TFGenerique.h" class BlocVElem; class BlocMElem; class ChampGeometrique; class ChampVectoriel3D; class ChampTensorielO2Sym; class ChampTensorielO4Sym; class ChampTensorielO4SymMin; class InfoLocalesTransformation; class InfoLocalesInterpolation; template class InfoLocalesChamp; template class InfoLocales; template class VectDyn; class GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin: public TFGenerique { public: GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin(); virtual ~GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin(); virtual void ajouteEvaluationsAFaire (bool pAssembleMatrice, bool pAssembleResidu); ERMsg asgnChamps (ChampGeometrique& pChampGeo, ChampVectoriel3D& pChampU, ChampVectoriel3D& pChampV, ChampVectoriel3D& pChampUPrecedent, ChampTensorielO4SymMin& pChampPseudoSigmaO4Precedent, ChampTensorielO4Sym& pChampS, ChampTensorielO4Sym& pChampT, ChampTensorielO4Sym& pChampI, const SchemaIntg& pSchemaIntg); virtual void evalueIntegrale (BlocMElem& pBlocMElem, BlocVElem& pBlocVElem); private: GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin(const GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin&); GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin& operator= (const GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin&); ChampVectoriel3D *aChampU; ChampVectoriel3D *aChampV; ChampVectoriel3D *aChampUPrecedent; ChampTensorielO4SymMin *aChampPseudoSigmaO4Precedent; ChampTensorielO4Sym *aChampS; ChampTensorielO4Sym *aChampT; ChampTensorielO4Sym *aChampI; const VectDyn *aVectInfoTransformation; const VectDyn *aVectInfoInterpolationNU; const VectDyn *aVectInfoInterpolationNV; const VectDyn > *aVectInfoChampU; const VectDyn > *aVectInfoChampUPrecedent; const VectDyn > *aVectInfoChampPseudoSigmaPrecedent; const VectDyn > *aVectInfoChampS; const VectDyn > *aVectInfoChampT; const VectDyn > *aVectInfoChampI; TenseurO2Sym aGamma_phi_i_0; TenseurO2Sym aGamma_phi_i_1; TenseurO2Sym aGamma_phi_i_2; _GIREF_DECLARE_INVARIANTS; }; #endif // #ifndef GeorgesVisco_TFCelluleViscoElastiqueMaxwellHPPEpsilonLin_INCLUS