13. Calcul d’un champ utilisateur#

Le mot-clé facteur CHAM_UTIL permet de calculer des champs quelconques, dits «utilisateur» en raison du nom qui leur sera affecté dans le concept résultat.

Il peut y avoir plusieurs occurrences de CHAM_UTIL afin d’enchaîner le calcul de plusieurs champs.

Le traitement étant effectué à la fin de la commande CALC_CHAMP, les champs calculés par les mots-clés précédents (CONTRAINTE, DEFORMATION…) sont disponibles ici.

Soit on demande le calcul d’un critère prédéfini, soit on applique une ou plusieurs formules pour calculer un autre champ.

13.1. Opérande NOM_CHAM#

Il s’agit du champ à partir duquel on fait les calculs. Le champ produit aura le même type: ELGA, ELNO ou NOEU.

13.2. Opérande CRITERE#

Demande le calcul d’un critère prédéfini. Les critères sont (le paragraphe 2.6.5 fournit les expressions de chaque critère):

  • VMIS (pour les champs de contraintes),

  • INVA_2 (pour les champs de déformations),

  • TRACE (pour les champs de contraintes ou de déformations).

Chacun de ces critères produit une composante (nommée X1).

Un des intérêts est de pouvoir calculer INVA_2 de n’importe quel champ de déformations.

13.3. Opérande FORMULE#

Ceci permet de calculer n’importe quelle expression fonction des composantes du champ fourni pour NOM_CHAM.

Le champ produit contiendra autant de composantes que de formules fournies: à la première formule correspondra la composante X1, à la deuxième X2, etc. Jusqu’à 30 composantes peuvent être ainsi créées.

Le champ en sortie est systématiquement prolongé à zéro sur les autres composantes et là où le champ en entrée n’est pas défini.

Des exemples de formules permettant de retrouver les critères VMIS et INVA_2 peuvent être trouvés dans la deuxième partie du test sslv104a.

13.4. Opérande NORME#

Demande le calcul d’une norme prédéfinie. Les normes sont :

  • L2:norme \({L}_{2}\) d’un tenseur

  • FROBENIUS: norme de Frobenius d’un tenseur

La norme calculée est une quantité intégrée (au sens faible) sur un élément \({\Omega}_{e}\) . Pour un tenseur \(A\) , la norme \({L}_{2}\) vaut:

(13.1)#\[{N}_{{L}_{2}}={\int}_{{\Omega}_{e}}\sqrt{(A:A)}.d{\Omega}_{e}\]

La norme de Frobenius sur les composantes \({A}_{ij}\) d’un tenseur \(A\) :

(13.2)#\[{N}_{F}={\int}_{{\Omega}_{e}}{\sum}_{i,j}∣{A}_{ij}∣.∣{A}_{ij}∣.d{\Omega}_{e}\]

Chacune de ces normes produit une composante (nommée X1) sur un élément. Il s’agit donc d’un champ ELEM. Il est à noter que la différence entre les deux normes vient des termes croisées (hors diagonale).

13.5. Opérande NUME_CHAM_RESU#

Le champ produit doit être rangé, de manière unique, dans le concept résultat. Les champs «utilisateur» sont donc numérotés en utilisant NUME_CHAM_RESU et le type du champ.

Le nom du champ sera donc du type UT01_ELGA, UT22_NOEU, etc.

13.6. Exemple de calcul d’un champ utilisateur#

Produit le champ UT02_ELGA à deux composantes. X1 est la trace de SIGM_ELGA (comparable à la composante TRSIG de SIEQ_ELGA) et X2 est la contrainte équivalente de Von Mises (composante VMIS de SIEQ_ELGA).

fTrace = FORMULE(NOM_PARA=("SIXX", "SIYY", "SIZZ"), VALE="""SIXX+SIYY+SIZZ""")

fVonMis = FORMULE(
    NOM_PARA=("SIXX", "SIYY", "SIZZ", "SIXY", "SIXZ", "SIYZ"),
    VALE="""sqrt(3./2. * (SIXX**2 + SIYY**2 + SIZZ**2
            + 2*SIXY**2 + 2*SIXZ**2 + 2*SIYZ**2 )
            - 1./2. * fTrace(SIXX, SIYY, SIZZ)**2)""",
)

RES = CALC_CHAMP(
    reuse=RES,
    RESULTAT=RES,
    CHAM_UTIL=_F(NOM_CHAM="SIGM_ELGA", FORMULE=(fTrace, fVonMis), NUME_CHAM_RESU=2),
)