@DSL DefaultFiniteStrainDSL; @Behaviour SaintVenantKirchhoffElasticity; @Author T. Helfer; @Date 19/10/2013; @Description{ "La loi de SaintVenantKirchhoffElasticity est une extension " "de la loi de Hooke au cas des grandes rotations. " "Elle ne peut être utilisée que pour des petites déformations." } @MaterialProperty stress young; young.setGlossaryName("YoungModulus"); @MaterialProperty real nu; nu.setGlossaryName("PoissonRatio"); @LocalVariable stress lambda; //{ static_cast(smt); // suppression d'un warning : la matrice de // prédiction est toujours l'élastique Dt = lambda*Stensor4::IxI()+2*mu*Stensor4::Id(); } /*! * Nous décrivons ici l'intégration de la loi. */ @Integrator{ /*! * Nous calculons ensuite le tenseur de Green-Lagrange */ e = computeGreenLagrangeTensor(F1); // second Piola–Kirchhoff stress s = lambda*trace(e)*StrainStensor::Id()+2*mu*e; // conversion to Cauchy stress tensor sig = convertSecondPiolaKirchhoffStressToCauchyStress(s,F1); } /*! * Nous fournissons l'opérateur tangent le plus naturel pour cette * loi. */ @TangentOperator{ static_cast(smt); // suppression d'un warning : la matrice // tangente est toujours l'élastique Dt = lambda*Stensor4::IxI()+2*mu*Stensor4::Id(); } /*! * Nous fournissons un autre l'opérateur tangent, proche de celui * utilisé par le Code-Aster. Cet opérateur aurait pu être calculé * automatiquement par MFront, mais cela impliquait de recalculer le * second tenseur des contraintes de Piola-Kirchhoff à partir des * contraintes de Cauchy. Nous utilisons ici le fait que le second * tenseur de Piola-Kirchhoff est connu à la fin de l'intégration. */ @TangentOperator{ static_cast(smt); // suppression d'un warning : la matrice // tangente est toujours l'élastique StiffnessTensor De = lambda*Stensor4::IxI()+2*mu*Stensor4::Id(); t2tost2 dS = 0.5*De*t2tost2::dCdF(F1); t2tost2 dtau; computePushForwardDerivative(dtau,dS,s,F1); Dt = dtau; } @InternalEnergy{ const auto tr = trace(e); Psi_s = lambda*tr*tr/2+mu*(e|e); }