// ************************************************************************ // --- 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 TFSigmaUEpsilonV3DIncrementalVieillissant_INCLUS #define TFSigmaUEpsilonV3DIncrementalVieillissant_INCLUS // *********************************************************************************************** // Nom du fichier: TFSigmaUEpsilonV3DIncrementalVieillissant.h // // Nom de la classe: TFSigmaUEpsilonV3DIncrementalVieillissant // // Sommaire: Terme de formulation d'un problème d'élasticité linéaire 3D 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 et que // l'on traite un probleme quasi-statique avec une formulation incrémentale la loi de comportement // s'écrivant:
// sigma(U,t) = E(t) (epsilon(U) - Beta(t)(M-M_0)) t_0 < t < t_F
// où on tient compte d'un couplage avec une fonction scalaire connue (generalement thermique/hydrique) //
// Description: Terme de formulation intégrant numériquement les entrées de la matrice élémentaire et du residu // issues d'un problème d'élasticité linéaire 3D (la rigidité) pour un matériau dont les propriétés // varient avec le temps. Construit à partir d'une formulation incrémentale (quasi statique) en petites // déformations menant à l'équation:
// - div(E(t+dt):epsilon(dU)) = div(dE:(epsilon(U) - Beta(t)(M(t)-M_0)) - div(E(t+dt):Beta(M(t+dt)-M(t)) - div(E(t+dt):dBeta(M(t)-M_0)))Construit à partir:
// On doit fournir: // 0) l'inconnue variationnelle: l'incrément des déplacements U // 1) les déplacements U au pas de temps courant (la classe calcule les déformations),
// 2) la rigidite E courante et précédentes,
// 3) le champ scalaire M de couplage (thermique/hydrique) au pas de temps courant, precedent et initial
// 4) le tenseur beta (dilatations) au pas de temps courant et precedent (si beta est vieillissant lui aussi)
//
// Matrice = !{!\int E_{ijkh}\epsilon_{kh}(\delta u):\epsilon_{ij}(v) dx.!}! //
// Résidu = !{!-\int E_{ijkh}\epsilon_{kh}(u):\epsilon_{ij}(v) \Delta E_{ijkh} (\epsilon_{kh}(U) - \beta_{kh}(M^p-M^0)) - // E_{ijkh}\Delta\beta_{kh}(M^p-M^0) -E_{ijkh}\beta_{kh}(M-M^p)) :\epsilon_{ij}(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)
// //!{!u = \delta u + u_p!}! le champ vectoriel3d de l'increment des déplacements
//!{!v!}! le champ vectoriel3d des fonctions test
//!{!U!}! le champ vectoriel3d des déplacements
//!{!E_{ijkh} !}! le champ du tenseur O4 de rigidite,
//!{!\Delta E_{ijkh} = E_{ijkh}-E_{ijkh}^p!}! le champ de la variation en temps du tenseur de rigidite,
//!{!\beta_{ij} !}! les dilatations dues à M,
//!{!M,M^p, M^0 !}! la valeur courante, au pas precedent et initiale du champ M ,
//!{!\Delta \beta^M_{ij} !}! la variation en temps du tenseur des dilatations hydriques,
//
//
// Attributs:
//
// ***********************************************************************************************
#include "MEFPPUtil.h"
#include "TenseurO2Sym.h"
#include "TenseurO4Sym.h"
#include "TFGenerique.h"
class BlocVElem;
class BlocMElem;
class ChampGeometrique;
class ChampScalaire;
class ChampVectoriel3D;
class ChampTensorielO2Sym;
class ChampTensorielO4Sym;
class InfoLocalesTransformation;
class InfoLocalesInterpolation;
template