// ************************************************************************ // --- 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 ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas_DEJA_INCLUS #define ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas_DEJA_INCLUS // ******************************************************************** // Nom du fichier: ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas.h // // Nom de la classe: ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas // // Sommaire: Classe calculant un champ de pseudo-relaxation (tenseur d'ordre 4 à symétries mineures). // Partant du model viscoelastique generalise de Maxwell, on introduit une nouvelle // variable d'etat afin de transformer l'equation constitutive sous forme integrale en une forme differentielle (ODE). // // Description: Ce champ calcul le tenseur des pseudo-relaxation à partir du champ des deformations // au temps précédent et courant, de la pseudo-relaxation précédente et des tenseur d'ordre 4 // d'elasticite/viscosite, et des fonctions de viellissements. // //

// !{!(1+\theta\Delta{t}\alpha^{p}_{ijkl})y^{p}_{ijkl} = \theta\Delta{t}\gamma^{p}_{ijkl}\epsilon_{kl}(U) // +(1-\theta)\Delta{t}\gamma^{p,Prec}_{ijkl}\epsilon{kl}(UPrec) // +[1-((1-\theta)\Delta{t}\alpha^{p,Prec}_{ijkl})]y^{p,Prec}_{ijkl}!}! //

// Sommaire : Classe calculant // Attributs: // ChampTensorielO4Sym *aChampsElasticite: // ChampTensorielO4Sym *aChampsViscosite: // ChampTensorielO4SymMin *aChampYijklPrecedentes; // ChampTensorielO2Sym *aChampDeplacements: // ChampTensorielO2Sym *aChampDeplacementsPrecedents: // ChampScalaire *aChampFonctionVieillisementRessort; // ChampScalaire *aChampFonctionVieilRessortPrecedent; // ChampScalaire *aChampFonctionVieillisementLambda; // ChampScalaire *aChampFonctionVieilLambdaPrecedent; // ChampScalaire *aChampChampDeriveeFonctionVieilRessortPrecedent; // ChampScalaire *aChampDeriveeFonctionVieillisementRessort; // ChampScalaire *aChampIndicateurEtat; // DReel *aPasDeTemps : Le pas de temps // const aThetaSchema: Le parametre de theta schema // // // // ******************************************************************** #include "MEFPPUtil.h" #include "ChampAnalytiqueBaseDiscParElement.h" #include "ChampScalaireComposanteDiscontinu.h" #include "ChampTensO4SymDiscParElement.h" #include "ChampTensO4SymMinDiscParElement.h" #include "TenseurO4Sym.h" #include "TenseurO4SymMin.h" class ChampVect3DContinu; class ChampTensorielO4Sym; class ChampTensorielO4SymMin; class ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas : public ChampAnalytiqueBaseDiscParElement { public: ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas (const std::string& pNom = "Defaut"); ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas (const ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas& pChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas); ~ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas(); ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas& operator= (const ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas& pChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas); virtual void ajouteEvaluationsAFaire(Entier pChoixEvaluations, const SchemaIntg& pSchemaIntg); virtual void ajouteSchemaIntegration(const SchemaIntg& pSchemaIntg); virtual void enleveToutSchemaIntegrations(); virtual void remetAZeroEvaluationsAFaire(const SchemaIntg& pSchemaIntg); void asgnChampsSansVieillissement(ChampVect3DContinu &pChampDeplacements, ChampVect3DContinu &pChampDeplacementsPrecedents, ChampTensorielO4Sym &pChampFonctionElasticiteViscosite, ChampTensorielO4SymMin &pChampYijklPrecedentes, DReel &pPasDeTemps, const DReel &pThetaSchema); void asgnChampsAvecVieillissement(ChampVect3DContinu &pChampDeplacements, ChampVect3DContinu &pChampDeplacementsPrecedents, ChampTensorielO4Sym &pChampFonctionElasticiteViscosite, ChampTensorielO4SymMin &pChampYijklPrecedentes, ChampScalaire &pChampFonctionVieillisementRessort, ChampScalaire &pChampDeriveeFonctionVieillisementRessort, ChampScalaire &pChampFonctionVieillisementLambda, ChampScalaire &pChampFonctionVieilLambdaPrecedent, ChampScalaire &pChampFonctionVieilRessortPrecedent, ChampScalaire &pChampDeriveeFonctionVieilRessortPrecedent, ChampScalaire &pChampIndicateurEtat, DReel &pPasDeTemps, const DReel &pThetaSchema); 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, TenseurO4SymMin& 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 ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas* newChamp() const; virtual ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas* newChampCopie() const ; virtual ChampScalaire& reqComposante (const Entier pIndice) ; virtual const ChampScalaire& reqComposante (const Entier pIndice) const ; private: ChampVect3DContinu *aChampDeplacements; ChampVect3DContinu *aChampDeplacementsPrecedents; ChampTensorielO4Sym *aChampFonctionElasticiteViscosite; ChampTensorielO4SymMin *aChampYijklPrecedentes; ChampScalaire *aChampFonctionVieillisementRessort; ChampScalaire *aChampDeriveeFonctionVieillisementRessort; ChampScalaire *aChampFonctionVieillisementLambda; ChampScalaire *aChampFonctionVieilLambdaPrecedent; ChampScalaire *aChampFonctionVieilRessortPrecedent; ChampScalaire *aChampDeriveeFonctionVieilRessortPrecedent; ChampScalaire *aChampIndicateurEtat; DReel *aPasDeTemps; DReel aThetaSchema; VectFixe, 36> aComposantes; bool aAppelRecursifComposante; _GIREF_DECLARE_INVARIANTS; }; #endif // #ifndef ChampPseudoRelaxationMateriauVieillisantFormulationThetaSchemas_DEJA_INCLUS