// ************************************************************************ // --- 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 ChampQijklCelluleViscoMaxwellHPP_DEJA_INCLUS #define ChampQijklCelluleViscoMaxwellHPP_DEJA_INCLUS // ******************************************************************** // Nom du fichier: ChampQijklCelluleViscoMaxwellHPP // // Nom de la classe: ChampQijklCelluleViscoMaxwellHPP // // Sommaire: Classe calculant, pour une cellule visco-élastique de Maxwell avec // l'hypothèse des petites perturbations (élasticité linéaire), // et une resolution par thetaschema un TO4. En cas // de viellissement on a 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 O4 à partir du tenseur d'élasticité E et du // tenseur de viscosité N de la cellule visco-elastique linéaire. Il sert à produire // la contribution aux contraintes cellule visco-élastique de Maxwell. // On se place dans le cas des petites perturbations // (élasticité linéaire) et en cas de vieillissement on peut distinguer deux états exigeant // un traitement différent. Généralelement il s'agit de distinguer le durcissement ou // l'assouplissementle via signe de la dérivée de l'élasticité p/r au temps. Pour ces deux // états on peut utiliser une des deux lois de comportement: loi de Hooke (sigma = E epsilon) // ou de Bazant (dsigma/dt = E depsilon/dt) via un indicateur d'état. On suppose dans cette classe // que ces tenseurs peuvent dépendre du temps de la façon suivante: //
//!{! E_{ijkh}(t,x) = b(t,x)E_{ijkl}^{ref}(x) !}! le champ du tenseur d'élasticité:,
//!{! N_{ijkh}(t,x) = a(t,x)N_{ijkl}^{ref}(x) !}! le champ du tenseur de viscosite:,
//!{! l(x,t) =\frac{b}{a}(x,t)!} le champ multiplicatif de \Lambda^{ref}_{ijkl}(x)= \frac{E_{ijkl}^{ref}(x)}{N_{ijkl}^{ref}(x)} //!{! \chi(t,x) \le 0\text{ si loi de Hooke} !}! //!{! \chi(t,x) > 0 \text{ si loi de Bazant} !}! // NOTE: le non-vieillissement correspond au cas b(t,x)=b(x) !
//
// Ce champ est utilisé pour calculer:
//!{!E^{3,p}_{ijkl} = -E_{ijkl}^{ref}(x)[\frac{1-(1-\theta) \Delta{t}\gamma^{p, n}_{ijkl}} // {1+\theta \Delta{t}\alpha^{p, n+1}_{ijkl}} !}! //
//!{!\alpha^{p, n+1}_{ijkl} l^{n+1}(x)\Lambda^{ref}_{ijkl} -p\frac{db^{n+1}\dt(x)}{b^{n+1}(x)} !}! //
// !{!\Gamma^{p, n+1}_{ijkl} (db\dt)(t,x) +b^{n+1}(x)\alpha^{p, n+1}_{ijkl} !}! //
//
// ChampTensorielO4Sym *aChampElasticiteRef: l'élasticité de référence
// ChampTensorielO4Sym *aChampViscositeRef: la viscosite de référence
// ChampScalaire *aChampMultiplicateur_b;
// ChampScalaire *aChampMultiplicateur_bPrecedent;
// ChampScalaire *aChampDeriveeMultiplicateur_b;
// ChampScalaire *aChampDeriveeMultiplicateur_bPrecedent;
// ChampScalaire *aChampFonctionVieillisementLambda: \frac{b(t_{n+1},x)}{a(t_{n+1},x)}
// ChampScalaire *aChampFonctionVieillisementLambdaPrecedent: \frac{b(t_n,x)}{a(t_n,x)}
// ChampScalaire *aChampIndicateurEtat;
// DReel *aPasDeTemps;
// DReel aThetaSchema;
// ********************************************************************
#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 ChampQijklCelluleViscoMaxwellHPP : public ChampAnalytiqueBaseDiscParElement