2. Opérandes#

2.1. Opérandes PROJECTION et MATR_PROJECTION#

L’opérateur peut être utilisé de trois manières différentes selon les usages des mots-clés PROJECTION et MATR_PROJECTION. Ces trois modes d’utilisation sont décrits ci-après.

2.1.1. Calcul « tout d’un coup »#

C’est le mode par défaut. On calcule dans un premier temps une correspondance géométrique (appelée matrice de projection), puis on utilise cette matrice pour projeter les champs à projeter (PROJECTION=”OUI”).

La matrice de projection est perdue en fin d’opérateur.

2.1.2. Calcul de la matrice de projection#

On calcule la correspondance géométrique et on s’arrête (PROJECTION=”NON”). La matrice de projection est le concept résultat de la commande.

Remarque :

Ce type de calcul n’est actuellement possible qu’avec les méthodes ’COLLOCATION’ ou ’COUPLAGE’.

2.1.3. Utilisation d’une matrice de projection#

On utilise la matrice calculée précédemment pour projeter les champs (mot-clé MATR_PROJECTION).

Remarque :

Si l’on veut projeter des champs par élément, il faut utiliser le mot clé MODELE_2.

2.1.4. Exemples#

  • Pour faire un calcul «tout d’un coup», on écrit par exemple :

    TEMP2=PROJ_CHAMP(
        RESULTAT=TEMP1,
        METHODE=’COLLOCATION’,
        MAILLAGE_1=MA1,
        MAILLAGE_2=MA2,
        NOM_CHAM=’TEMP’)
    
  • Pour faire un calcul en deux temps, on écrit :

    MATPROJ=PROJ_CHAMP(
        METHODE=’COLLOCATION’,
        PROJECTION=’NON’,
        MAILLAGE_1=MA1,
        MAILLAGE_2=MA2,)
    
    TEMP2=PROJ_CHAMP(
        RESULTAT=TEMP1,
        MATR_PROJECTION=MATPROJ,
        NOM_CHAM=’TEMP’)
    

2.2. Opérande METHODE#

Il existe cinq méthodes de projection. Les méthodes ’COLLOCATION’ et ’NUAGE_DEG_0/1’ sont adaptées à la projection des champs aux nœuds . La méthode ’COLLOCATION’ est à utiliser en priorité: c’est la plus robuste et elle n’extrapole pas les valeurs du champ initial. Les deux méthodes ’NUAGE_DEG_0/1’ peuvent être utilisées si on ne peut pas faire autrement. Par exemple, quand le maillage initial ne contient pas de mailles, mais seulement des nœuds (un maillage contenant les positions de capteurs de mesures).

Remarque sur la méthode collocation :

Pour la projection de champs ’NOEU’ ou ’ELNO’, il existe une alternative à PROJ_CHAMP pour certaines configurations particulières de projection, rencontrées notamment en THM pour le post-traitement de la pression. Si l’utilisateur souhaite projeter un résultat d’un maillage quadratique sur le même maillage linéarisé, il peut utiliser :

MACR_ADAP_MAIL(
    ADAPTATION=’MODIFICATION’,
    DEGRE=’OUI’,
    MAJ_CHAM=_F(...),)

qui peut s’avérer parfois plus rapide sur les grosses études.

La méthode ’ECLA_PG’ est adaptée aux champs aux points de Gauss (ELGA).

Une autre méthode, nommée ’COUPLAGE’ a été introduite pour les calculs d’interaction fluide-structure lorsque Code_Aster est couplé au code de mécanique des fluides Code_Saturne . Cette méthode est assimilable à la collocation.

Une méthode nommée ’SOUS_POINT’, est utilisée pour construire des champs (variables de commandes du type TEMP, HYDR, NEUT ou de contraintes de type SIEF_R), sur des modèles mécaniques à sous-points à partir d’un champ ou d’un résultat issu d’un calcul sur un modèle 3D.

La méthode “AUTO” permet de choisir la méthode la plus recommandée en fonction du type du champ: “ECLA_PG” pour un champ “ELGA”, et “COLLOCATION” pour les autres champs.

Remarque sur la méthode “AUTO” :

Dans le cas où METHODE=”AUTO” avec une structure de type RESULTAT, les champs “ELGA” sont ignorés. De plus, la structure de type RESULTAT doit contenir au moins un champ non-“ELGA”.

2.2.1. Méthode= ’COLLOCATION’#

La première méthode (COLLOCATION) est classique: pour calculer la valeur sur un nœud (\(\mathit{N2}\)) du maillage \(\mathit{ma2}\), on cherche dans quel élément du MAILLAGE_1 se trouve ce nœud, puis on interpole la valeur à l’aide des fonctions de forme de cet élément.

Lorsque le nœud n’est pas géométriquement à l’intérieur d’un des éléments de \(\mathit{ma1}\) (c’est-à-dire, en dehors du domaine géométrique modélisé), la méthode met en relation le nœud et le point de l’élément le plus proche et interpole la valeur à l’aide des fonctions de forme de cet élément. Il y a donc (par défaut) un « prolongement » du champ à l’extérieur du maillage initial. L’opérande DISTANCE_MAX permet de modifier ce comportement.

Problème posé par les champs « mixtes » :

Si les composantes portées par les différents nœuds de élément de \(\mathit{ma1}\) ne sont pas toutes les mêmes, par exemple, si les nœuds sommets ne portent pas les mêmes composantes que les nœuds milieux, on ne peut utiliser “bêtement” l’interpolation par les fonctions de forme de l’élément.

Le calcul de la valeur d’une composante sur le nœud \(\mathit{N2}\) est fait de la façon suivante :

  • Étape géométrique (faite indépendamment des champs à projeter) :

    On détermine l’élément \(\mathit{ima1}\) associée à \(\mathit{N2}\), puis on calcule, avec les fonctions de forme de cet élément, les coefficients de pondération pour tous les nœuds de \(\mathit{ima1}\). La somme de ces coefficients vaut 1.

  • Étape de projection d’une composante d’un champ :

    • Si tous les nœuds de \(\mathit{ima1}\) portent cette composante, il n’y a pas de problèmes, on applique la formule de pondération retenue.

    • Si la composante n’est pas portée par tous les nœuds de \(\mathit{ima1}\).

  • Si certains nœuds porteurs de la composante ont un “poids” \(>0\), on se sert de ceux-ci en modifiant la formule de pondération pour que la somme des coefficients retenus fasse 1.

  • Si aucun des nœuds porteurs de la composante n’a un poids \(>0\), on se contente de faire une moyenne arithmétique des composantes présentes sur \(\mathit{ima1}\).

2.2.2. Méthode= ’NUAGE_DEG_1/0’#

La deuxième famille de méthodes (NUAGE_DEG_1/0) (fortement déconseillée) utilise la notion de nuages de points, en oubliant les éléments finis présents dans les modèles. Elle est plus générale que la méthode ’COLLOCATION’ car elle permet de projeter un champ aux nœuds sans que ces nœuds soient portés par des éléments finis (par exemple un ensemble de capteurs). En revanche, cette méthode trouble souvent les utilisateurs familiers de la méthode des éléments finis, car elle est purement géométrique et ne voit pas les frontières matérielles ni les trous: la valeur calculée sur un nœud du nouveau maillage dépend de tous les nœuds qui lui sont proches. Dans les zones de fort gradient, les valeurs peuvent être obtenues avec une forte extrapolation, ce qui est rarement “physique”.

L’idée de ces méthodes est de faire passer «au mieux» un hyperplan de degré 1 ou 0 (NUAGE_DEG_1/0) parmi les points du MAILLAGE_1. Le poids des points est très fortement dépendant de leur distance au nœud \(\mathit{N2}\) : le poids décroit comme une exponentielle décroissante de la distance. Une fois les coefficients de l’hyperplan calculé (pour un nœud N2), on évalue cet hyperplan avec les coordonnées du nœud \(\mathit{N2}\).

2.2.3. Méthode= ’ECLA_PG’#

La troisième méthode (ECLA_PG) permet de projeter des champs connus aux points de Gauss du maillage (appelés aussi points d’intégration). Par exemple, il est possible de projeter des champs de contraintes, de déformations ou de variables internes.

Cette méthode utilise la programmation de la commande MACR_ECLA_PG et de la méthode de ’COLLOCATION’ décrite précédemment. Chaque maille du maillage initial est éclatée en autant de sous-mailles que de points de Gauss contenus dans la maille, de la même manière que l’éclatement actuel de MACR_ECLA_PG. Dans un deuxième temps, on utilise la matrice de projection de la méthode ’COLLOCATION’ entre les points de Gauss du deuxième maillage et les mailles précédemment éclatées.

Cette méthode est interdite avec le mot-clé VIS_A_VIS.

2.2.4. Méthode= ’COUPLAGE’#

La quatrième méthode (COUPLAGE) est une variante très proche de la collocation et introduite spécifiquement pour le couplage avec le code de mécanique des fluides Saturne (en volumes finis). Elle est employée dans la macro-commande CALC_IFS_DNL qui permet ce couplage IFS.

Elle n’est disponible que pour générer la structure de données CORRESP_2_MAILLA (cas PROJECTION=’NON’). Elle permet de projeter des champs aux nœuds entre un maillage aux éléments finis (structure) et des maillages venant du code aux volumes finis Code_Saturne. Ces maillages, importés dans Code_Aster, sont composés d’éléments ponctuels, car il n’y a pas de fonctions de formes associés.

2.2.5. Méthode= ’SOUS_POINT’#

Cette méthode se base sur la méthode de ’COLLOCATION’ et est semblable à la méthode ECLA_PG en supprimant l’étape d’éclatement du maillage. Les champs d’entrée sont des CHAM_NO ou des CHAM_ELEM/ELNO sous forme de champ isolé ou contenus dans un résultat de type evol_ther. La première étape consiste à construire un maillage à partir des coordonnées des sous-points du MODELE_2 (modèle mécanique) pour tous les points des familles de la liste MATER (pour des champs de type TEMP, HYDR, NEUT) et pour tous les points de la famille RIGI (pour les champs de type SIEF_R).

Les champs d’entrée sont ensuite projetés sur ce maillage par une méthode de ’COLLOCATION’(en forçant le type des champs créés à CHAM_NO).Enfin les valeurs obtenues pour chaque point sont recopiées dans un CHAM_ELEM/ELGA, sur les points et sous-points correspondants (voir V1.01.318, V1.01.365).

Cette méthode est interdite avec le mot-clé VIS_A_VIS et avec PROJECTION = ’NON.

Remarque :

La projection des champs de type SIEF_R, ne modifie pas leur repère initial. La méthode SOUS_POINT appliquée à ce type de champ permet de projeter un champ de contrainte issu d’un calcul sur des éléments finis 3D sur des éléments de coque à sous-points ou multicouches. Un champ de contraintes de type SIEF_R sur des éléments de coques doit être exprimé dans le repère local des éléments. Il ne faut donc pas utiliser ce champ projeté sans lui changer de repère. La commande MODI_REPERE permet de faire cette opération.

Pour les champs de type TEMP, HYDR et NEUT qui sont des champs scalaires indépendant du repère, la remarque ne s’applique pas.

2.3. Mot clé VIS_A_VIS#

Ce mot clé facteur facultatif permet de projeter le champ “par morceaux”. Par défaut, c’est l’ensemble du champ qui est projeté.

Ce mot clé permet de projeter des champs discontinus ou de résoudre le problème de la projection de modèles complexes (voir VIS_A_VIS complexe) ou d’améliorer les performances CPU des projections de modèle hétérogènes (voir VIS_A_VIS hétérogènes).

S’il est utilisé ce mot clé permet à l’utilisateur de projeter un champ (aux nœuds) a priori discontinu (sur une ligne ou une surface) et de conserver cette discontinuité pour le champ projeté:

_images/StructureFissuree.svg

Fig. 2.1 Structure fissurée.#

Par exemple, pour la structure fissurée Fig. 2.1. Le champ de déplacement est discontinu sur la fissure. La lèvre supérieure et la lèvre inférieure bien que géométriquement confondues possèdent chacune leur propre champ de déplacement.

Supposons que l’on dispose de 2 maillages (\(M\) et \(M'\)) différents de cette structure et que pour chacun de ces maillages, les zones \(\mathit{Z1}\) et \(\mathit{Z2}\) soient représentées par deux GROUP_MA nommés \(\mathit{Z1}\) et \(\mathit{Z2}\).

On pourra écrire :

VIS_A_VIS=(
    _F(GROUP_MA_1 = ’Z1’,GROUP_MA_2 = ’Z1’),
    _F(GROUP_MA_1 = ’Z2’,GROUP_MA_2 = ’Z2’),
),

Les valeurs du champ projeté sur la lèvre supérieure (appartenant à \(\mathit{Z1}\) ) ne tiendront compte que des valeurs du champ initial sur \(\mathit{Z1}\). De même les valeurs obtenues sur la lèvre inférieure ne dépendent que du champ initial sur \(\mathit{Z2}\).

Remarque sur l’utilisation de VIS_A_VIS + champ ELNO :

On pourrait croire que l’utilisation du mot clé VIS_A_VIS permet de projeter un champ ELNO en conservant une discontinuité sur l’interface entre deux zones. Il n’en est rien comme on l’explique au § Projection champ ELNO.

2.3.1. Opérandes TOUT_1 / GROUP_MA_1 / GROUP_NO_1#

Ces opérandes servent à définir l’ensemble des mailles (’COLLOCATION’, ’ECLA_PG’,) ou des nœuds (’NUAGE_DEG_1/0’) à prendre en compte dans le maillage initial.

Il est possible de filtrer les mailles en fonction de leur topologie en utilisant CAS_FIGURE. Cela permet, par exemple, de projeter un résultat d’un calcul PLAN, vers des mailles 3D. Par défaut, le MODELE_1 est analysé pour rechercher la topologie des mailles. Mais si le GROUP_MA_1 s’appuie par exemple sur un modèle DKT et que MODELE_1 contient également des maille 3D, le résultat de l’analyse va donner 3D. Dans cet exemple, il peut-être judicieux de filtrer les mailles par rapport à leur topologie. (voir CAS_FIGURE)

2.3.2. Opérandes TOUT_2 / GROUP_MA_2 / GROUP_NO_2#

Ces opérandes servent à définir l’ensemble des nœuds ou des éléments où l’on évalue le(s) champ(s).

L’utilisation de TOUT_2 ou de GROUP_MA_2 active une vérification d’homogénéité des mailles avant la construction de la liste des nœuds correspondants. Par exemple, s’il existe au moins une maille \(3D\) parmi les mailles renseignées alors les mailles \(2D\), \(1D\) et \(0D\) seront ignorées et les nœuds sous-jacents ne feront pas partie de la liste des nœuds s’ils n’appartenaient pas en même temps à une maille \(3D\). La même chose se produit dès qu’il y a une maille \(2D\) (et en l’absence de maille \(3D\)) avec les mailles \(1D\) et \(0D\). Par contre les mailles \(0D\) ne sont pas ignorées quand une ou plusieurs mailles \(1D\) sont présentes (et en l’absence de mailles \(2D\) et \(3D\)).

2.3.3. Opérandes TRANSF_GEOM_1 et TRANSF_GEOM_2#

Voir Opérandes TRANSF_GEOM.

Remarque :

Les mots clefs TRANSF_GEOM_1 et TRANSF_GEOM_2 peuvent être utilisés pour réaliser la transformation des MAILLAGE_1, MAILLAGE_2 soit globalement, soit sous le mot clef VIS_A_VIS. Si le mot clef VIS_A_VIS est utilisé, les TRANSF_GEOM_* doivent être sous le mot clef VIS_A_VIS, et peuvent être différents pour chacune des occurrences. Dans le cas d’une utilisation des TRANSF_GEOM_* au niveau global et dans le mot clef VIS_A_VIS une erreur est émise.

2.3.4. Opérandes TRANSF_GEOM_1 et TRANSF_GEOM_2#

Voir Opérandes TRANSF_GEOM.

Remarque :

Les mots clefs TRANSF_GEOM_1 et TRANSF_GEOM_2 peuvent être utilisés pour réaliser la transformation des MAILLAGE_1, MAILLAGE_2 soit globalement, soit sous le mot clef VIS_A_VIS. Si le mot clef VIS_A_VIS est utilisé, les TRANSF_GEOM_* doivent être sous le mot clef VIS_A_VIS, et peuvent être différents pour chacune des occurrences. Dans le cas d’une utilisation des TRANSF_GEOM_* au niveau global et dans le mot clef VIS_A_VIS une erreur est émise.

2.3.5. Précisions sur le recouvrement#

Lorsqu’un nœud à projeter est présent dans plusieurs occurrences de VIS_A_VIS, c’est la projection de ce nœud déterminée dans la dernière occurrence qui est conservée.

La seule exception à cela se produit quand la projection est jugée distante. Dans ce cas, si le nœud concerné a déjà été traité par une précédente occurrence, on conserve la projection précédemment calculée.

2.3.6. Utilisation du mot clé VIS_A_VIS pour projeter les modèles complexes#

Le mot clé VIS_A_VIS permet par exemple de résoudre le problème de la projection d’un champ de température calculé sur un modèle contenant des éléments 3D et des éléments de coque (un solide dont la peau interne serait recouverte d’un « liner » maillé en éléments de coque).

Le problème est le suivant : les éléments 3D portent sur leurs nœuds le seul degré de liberté TEMP, alors que les éléments de coque (thermiques) portent les 3 degré de liberté: TEMP_MIL, TEMP_INF et TEMP_SUP. Si on ne prend pas de précautions et que l’on projette tout le modèle d’un seul coup, les degrés de liberté TEMP_MIL, TEMP_INF et TEMP_SUP seront « perdus » lors de la projection. En effet, comme le maillage initial contient des éléments volumiques, c’est la procédure « 3D » qui est appliquée : pour chaque nœud du MAILLAGE_2, on cherche une maille volumique qui contienne ce nœud (ou qui en est proche). Une fois cette maille trouvée, on interpole les degrés de liberté portés par tous les nœuds de cette maille. Pratiquement, aucune maille 3D ne peut porter sur tous ses nœuds les degrés de liberté TEMP_MIL, TEMP_INF et TEMP_SUP, ceux-ci sont donc perdus.

Pour résoudre ce problème il faut faire quelque chose comme :

evo2= PROJ_CHAMP(
    RESULTAT=evo1,
    VIS_A_VIS=(
        _F(GROUP_MA_1: ’VOLU’ , GROUP_MA_2=’VOLU’,),
        _F(GROUP_MA_1: ’LINER’ , GROUP_MA_2=’LINER’,),
    )

De cette manière, les mailles de ’LINER’ du MAILLAGE_2 seront affectées par les valeurs portées par les mailles de ’LINER’ du MAILLAGE_1 et elles porteront les mêmes degrés de liberté.

2.3.7. Utilisation de VIS_A_VIS pour les maillages hétérogènes#

La projection de maillages hétérogènes (présence de petites mailles et de grosses mailles) peut dégrader largement les performances CPU de l’opérateur.

Pour des raisons de performance, les éléments du maillage sont mis dans des « boîtes » de même taille (une grille cartésienne régulière). Lors de la projection, on ne teste alors que les éléments de la boîte qui contient le point à projeter. Si le maillage est très hétérogène, certaines boîtes sont vides et d’autres contiennent beaucoup d’éléments, ce qui cause une dégradation des performances.

Dans ce cas, l’utilisation de VIS_A_VIS peut améliorer considérablement les performances. Pour cela, il suffit de créer un groupe contentant les mailles fines et un autre les mailles grossières.

2.3.8. Mot-clé CAS_FIGURE et DISTANCE_OD#

Diffère du mot-clé CAS_FIGURE extérieur à VIS_A_VIS par la présence de la valeur ‘0D’. Ce cas de figure permet de projeter des éléments 0D d’un maillage à un autre. Cette projection fonctionne uniquement si chaque maille ponctuelle ou nœud du MAILLAGE_2 fourni se trouve à une distance inférieure à DISTANCE_0D d’une maille ponctuelle POI1 du MAILLAGE_1 fournie (arrêt en erreur sinon). Si GROUP_MA_2 est présent, on ne conserve que les nœuds supportés par une maille ponctuelle.

DISTANCE_0D n’a pas de valeur par défaut et doit donc obligatoirement être renseigné.

2.4. Opérande DISTRIBUTION#

Le mot-clé DISTRIBUTION est obligatoire quand on réalise une projection qui fait intervenir un maillage découpé en plusieurs sous-domaines dans un contexte de parallèlisme distribué (voir la commande LIRE_MAILLAGE [U4.21.01]). La figure u4.72.05-ConnectionMesh illustre l’utilisation de DISTRIBUTION dans ce contexte.

On souhaite par exemple calculer la matrice de projection entre les groupes inf et sup. Supposons que le calcul soit exécuté sur 2 processus. Le maillage initial a donc été découpé en 2 sous-domaines, ce qui est présenté dans l’image du milieu. Comme la projection parallèle n’est pas supportée dans tous les cas, l’utilisateur peut renseigner la valeur “OUI” à DISTRIBUTION et un maillage intermédiaire, dit maillage de connexion ou ConnectionMesh dans la terminologie des sources du code, est crée et communiqué au 2 processus de résolution. La projection est alors réalisée sur le maillage de connexion et le résultat est alors à la disposition de chacun des 2 processus. Si l’utilisateur renseigne la valeur “NON” à DISTRIBUTION et que le calcul est exécuté sur plusieurs processus, alors la projection parallèle est réalisée localement sur chaque sous-domaine sans créer de maillage de connexion. Cela peut être plus rapide, mais n’est pas supporté dans tous les cas. Si une erreur survient, il est conseillé de passer DISTRIBUTION à “OUI” pour activer l’utilisation du maillage de connexion.

_images/ConnectionMesh.svg

Fig. 2.2 Illustration de l’utilisation de DISTRIBUTION.#

2.5. Opérandes MODELE_1, MAILLAGE_1#

/ MODELE_1      = mo1,
/ MAILLAGE_1    = ma1,

Ces deux mots clés permettent de préciser le maillage initial (ou squelette dans le cas de la sous-structuration). La projection va du MAILLAGE_1 vers le MAILLAGE_2.

Ce maillage est celui qui est associé aux champs à projeter (evol1 ou champ1).

Remarque :

Il est préférable d’utiliser le mot clé MODELE_1, car cela permet de limiter les mailles candidates à la projection (si le modèle est plus restreint que le maillage).

2.6. Opérandes MODELE_2, MAILLAGE_2#

/ MODELE_2      = mo2,
/ MAILLAGE_2    = ma2,

Ces deux mots clés permettent de préciser le maillage final. C’est le maillage sur lequel seront créés les champs projetés.

Remarque importante :

Là encore, il est préférable d’utiliser le mot clé MODELE_2, même si les éléments finis de MODELE_2 ne sont pas utilisés. On ne se sert que des coordonnées des nœuds du maillage (\(\mathit{ma2}\)) associé à \(\mathit{mo2}\). Le fait d’utiliser le nom du modèle (\(\mathit{mo2}\)) plutôt que le nom du maillage (\(\mathit{ma2}\)) permet d’éviter certains nœuds de construction (situés très loin) qui détériorent parfois fortement les performances (CPU) de la projection.

2.7. Opérande RESULTAT#

RESULTAT = evo1,

Nom du concept résultat que l’on veut projeter.

Remarque :

Pour un evol_noli, le concept résultat ne contiendra (par défaut) que les champs de déplacements. Pour calculer les champs de contraintes et de variables internes correspondants, il est préférable d’utiliser la commande STAT_NON_LINE en utilisant le mot clé PREDICTION:’DEPL_CALCULE’.

2.8. Opérande CHAM_GD#

Ce mot clé est utilisé pour désigner le champ à projeter (quand on ne projette pas une sd_resultat).

  • Pour les méthodes ’NUAGE_DEG_1/2’ le champ doit être un cham_no.

  • Pour la méthode ’ECLA_PG’, le champ doit être un cham_elem/ELGA

2.9. Opérande CHAM_NO_REFE#

Pour les méthodes ’NUAGE_DEG_1/2’ le champ fourni derrière CHAM_NO_REFE est un cham_no «modèle» pour les champs aux nœuds à créer lors de la projection. Ce mot clé est obligatoire. Quand on projette un champ «isolé» (par exemple de TEMP_R), il faut fournir un cham_no de la même grandeur (TEMP_R). Quand on projette les champs d’une sd_resultat, puisque le mot clé CHAM_NO_REFE n’a qu’une valeur, on voit qu’on ne pourra pas (en général) projeter plusieurs NOM_CHAM différents

2.10. Opérande CAS_FIGURE#

Ce mot clé (facultatif) sert à orienter la méthode ’COLLOCATION’ vers l’un des 4 cas suivants:

  • « 3D » Les seuls éléments du MAILLAGE1_1 qui serviront à la projection sont les éléments volumiques : hexaèdres, pentaèdres, tétraèdres et pyramides. Les nœuds ont 3 coordonnées \((X,Y,Z)\).

  • « 2D » Les seuls éléments du MAILLAGE_1 qui serviront à la projection sont les éléments surfaciques : quadrangles et triangles. Le maillage est supposé plan. Les nœuds ont 2 coordonnées \((X,Y)\).

  • « 2.5D » Les seuls éléments du MAILLAGE_1 qui serviront à la projection sont les éléments surfaciques : quadrangles et triangles. Le maillage est 3D. Les nœuds ont 3 coordonnées \((X,Y,Z)\). C’est le cas des « coques » plongées dans du 3D.

  • « 1.5D » Les seuls éléments du MAILLAGE_1 qui serviront à la projection sont les éléments linéiques : segments. Le maillage peut être 2D ou 3D. Les nœuds ont 2 ou 3 coordonnées \((X,Y,(Z))\).

Ce mot clé peut aussi être utilisé sous le mot clé VIS_A_VIS. Il peut changer de valeur selon les occurrences. Dans ce cas, la valeur 0D est également disponible pour la projection de mailles ponctuelles vers des mailles ponctuelles (voir CAS_FIGURE 0D).

Si l’utilisateur ne renseigne pas ce mot clé, le programme parcourt la liste des mailles du MODELE_1, candidates à être projetées (cette liste peut être filtrée grâce au mot clé VIS_A_VIS).

  • s’il existe au moins 1 maille 3D dans cette liste ==> CAS_FIGURE=’3D’

  • sinon :
    • s’il existe au moins 1 maille 2D dans cette liste

      • si la géométrie est ’2D’ ==> CAS_FIGURE=’2D’

      • si la géométrie est ’3D’ ==> CAS_FIGURE=’2.5D’

    • sinon s’il existe au moins 1 maille 1D dans cette liste => CAS_FIGURE=’1.5D’

2.11. Opérandes TRANSF_GEOM_1 et TRANSF_GEOM_2#

Les 2 mots clés TRANSF_GEOM_1/2 = (fx,fy,[fz]) permettent d’effectuer une (ou deux) transformations géométriques sur les cordonnées des nœuds des MAILLAGE_1 et MAILLAGE_2 avant de faire la projection. Cette transformation géométrique est temporaire (le temps de la phase d’appariement), les maillages ne sont pas modifiés. Lorsque la topologie des mailles du MAILLAGE_1 est 2D les deux fonctions (Fx, Fy) suffisent pour faire la transformation géométrique TRANSF_GEOM_1, les coordonnées Z restent nulles. Dans tous les autres cas de dimensions [0D, 1.5D, 2.5D, 3D] il est nécessaire de donner Fz.

En 2D par exemple, les 2 fonctions (ou formules) \(\mathit{fx},\mathit{fy}\) sont des fonctions de \((X,Y)\) qui seront appliquées pour calculer les 2 nouvelles coordonnées des nœuds: \(\mathit{fx}\) pour calculer le nouveau \(X\) et \(\mathit{fy}\) pour calculer le nouveau \(Y\).

Les applications visées par ces mots clés sont par exemple:

  • Projection d’un maillage (donné en mm) sur un autre maillage (donné en m). La transformation géométrique (TRANSF_GEOM_2) est une homothétie de rapport 1000.

  • Projection d’un calcul thermique fait sur un modèle 2D axisymétrique sur un modèle 3D (mais axisymétrique !). La transformation géométrique (TRANSF_GEOM_2) est alors celle qui « écrase » le solide 3D dans un demi-plan méridien:

Supposons que le maillage 3D soit un solide d’axe \(\mathit{Oz}\), les fonctions \(\mathit{fx},\mathit{fy},\mathit{fz}\) à fournir sont :

\(\mathit{fx}=\sqrt{({x}^{2}+{y}^{2})}\) \(\mathit{fy}=z\) \(\mathit{fz}=0.\)

Un exemple d’utilisation du mot clé TRANSF_GEOM_2 est donné dans le cas test zzzz110a

En général, TRANSF_GEOM_2 est suffisant, mais il peut être commode de combiner les deux transformations pour passer par une géométrie intermédiaire plus simple. Si par exemple, on veut projeter un résultat calculé sur un aéro-réfrigérant de géométrie (\(A\)) vers une autre géométrie légèrement différente (\(B\)), il peut être plus simple de décomposer la transformation géométrique en passant par un cylindre intermédiaire.

Remarque :

Dans la phase de vérification, il est peut être utile de vérifier la bonne concordance des maillages. Pour cela, il est possible lors de la phase de projection d’obtenir les maillages après transformation géométrique. La vérification de la bonne concordance peut alors être réalisée dans le module PARAVIS ou SMESH de Salome_Meca en superposant les maillages.

Ces maillages sont sauvegardés au format MED dans le répertoire “repe_out”, il faut donc indiquer ce répertoire dans le profil d’étude et utiliser le mot clef INFO=2.

Remarque :

Les mots clefs TRANSF_GEOM_1 et TRANSF_GEOM_2 peuvent être utilisés pour réaliser la transformation des MAILLAGE_1, MAILLAGE_2 soit globalement, soit sous le mot clef VIS_A_VIS. Si le mot clef VIS_A_VIS est utilisé, les TRANSF_GEOM_* doivent être sous le mot clef VIS_A_VIS, et peuvent être différents pour chacune des occurrences. Dans le cas d’une utilisation des TRANSF_GEOM_* au niveau global et dans le mot clef VIS_A_VIS une erreur est émise.

2.12. Opérande CARA_ELEM#

Cet opérande est obligatoire pour la méthode SOUS_POINT et interdite pour les autres. Elle permet de renseigner l’objet cara_elem lié au MODELE_2 afin de prendre en compte toutes les informations liées aux sous-points et nécessaires à la projection.

2.13. Sélection des noms des champs#

Les mots clés TOUT_CHAMP = ’OUI’ ou NOM_CHAM = l_noch permettent de choisir quels sont les champs de la SD RESULTAT que l’on veut projeter (par défaut tous les champs aux nœuds). On peut aussi projeter les champs par éléments « ELNO » et « ELEM », pour cela il faut explicitement donner leurs noms via le mot clé NOM_CHAM.

2.14. Remarques sur la projection des champs par éléments pour la méthode ’COLLOCATION’#

Cette possibilité a été introduite initialement pour permettre de projeter les champs de pression calculés par le Code Saturne (constants par éléments) sur la peau d’un maillage mécanique Aster. Ce développement étant général, il est disponible pour tous les champs « ELEM » et « ELNO » mais le résultat de la projection est parfois un peu déroutant.

Comme pour les champs aux nœuds, les champs par éléments projetés du concept “evo1” dans le concept “resu” porteront les mêmes noms (par exemple: ’SIGM_ELNO’).

Les champs projetés “resu” seront par défaut de même “nature” que les champs “origine” (evo1) : « ELEM » ou « ELNO ».

On peut toutefois modifier ce comportement par défaut en utilisant le mot clé TYPE_CHAM=’NOEU’ pour forcer les champs projetés à être des champs aux nœuds.

Que fait-on numériquement ?

  • Champs de type ELNO : pour chaque maille du MAILLAGE_2, on parcourt les nœuds de cette maille et on calcule la valeur de chaque nœud comme on le ferait pour un champ aux nœuds. Le résultat de cette projection est donc (par construction), un champ ELNO qui est continu entre les éléments alors que le champ initial ne l’est pas.

  • Si de plus, les MAILLAGE_1 et MAILLAGE_2 ont des nœuds communs (par exemple, la projection d’un maillage quadratique sur un maillage linéaire), alors la valeur projetée sur un nœud (\(\mathit{N2}\)) du MAILLAGE_2 a un côté imprévisible : la valeur portée par le nœud \(\mathit{N2}\) sera celle portée par le nœud équivalent du MAILLAGE_1 dans l’une des mailles partageant ce nœud. Mais le choix de cette maille est arbitraire. Pour les champs de type ELEM (constant par maille) : la valeur portée par une maille du MAILLAGE_2 est obtenue par moyenne arithmétique des valeurs portées par ses nœuds (calculées comme pour un champ ELNO).

Lorsqu’on n’utilise pas TYPE_CHAM=’NOEU’, la projection de champs par éléments n’a de sens que si les éléments projetés les uns sur les autres sont de même « type » (coque, poutre, iso-paramétriques). En effet, si on projetait par exemple un champ 3D de ’SIGM_ELNO’ sur un modèle linéique formé d’éléments de barre, on ne saurait pas stocker les valeurs de contraintes SIXX, … sur ces éléments (qui ne connaissent que les efforts généralisés: \(N,\mathit{MX},\mathrm{...}\))

2.14.1. Opérande TYPE_CHAM = ‘NOEU’#

Ce mot clé sert à forcer les champs projetés à être des champs «aux nœuds». Ce mot clé est utilisé systématiquement par la commande MACR_LIGN_COUPE, car on ne sait pas créer des champs par éléments sur le modèle «fictif» de poutre créé par cette macro-commande de visualisation.

2.14.2. Comment projeter un champ ELNO discontinu sur une frontière ?#

Problème :

Soit une structure formée de deux zones \(A\) et \(B\) ayant une frontière commune.

Cette structure est modélisée deux fois \(\mathit{MO1}\) et \(\mathit{MO2}\). Ces 2 modèles correspondent à 2 maillages différents \(\mathit{MA1}\) et \(\mathit{MA2}\).

Supposons également que les maillages respectent la frontière entre les zones \(A\) et \(B\), c’est à dire qu’il existe dans chaque maillage deux GROUP_MA(\(A\) et \(B\)) correspondants aux zones \(A\) et \(B\).

Soit un champ par éléments « ELNO » (par exemple ’HYDR_ELNO’) connu sur \(\mathit{MO1}\). On veut le projeter sur \(\mathit{MO2}\).

Comment faire en sorte que les valeurs du champ sur \(A\) (respectivement \(B\)) soit projetées sur \(A\) (respectivement \(B\)) ?

On veut éviter que les valeurs de \(A\) ne « polluent » la zone \(B\) et réciproquement.

Cette situation peut se produire dès qu’il existe une discontinuité importante du champ sur la frontière entre \(A\) et \(B\).

Réponse :

On ne peut pas résoudre ce problème avec un seul appel à PROJ_CHAMP.

En effet, la seule méthode pour projeter un champ ELNO est la méthode ’COLLOCATION’. Cette méthode est basée sur la localisation des nœuds du MAILLAGE_2 dans les mailles du MAILLAGE_1.

La phase d’appariement géométrique de la méthode ’COLLOCATION’ conduit à la construction d’une structure de données permettant de répondre à la question :

  • Pour un nœud \(\mathit{N2}\) de MA2, dans quelle maille \(\mathit{IMA1}\) de MA1 se trouve ce nœud et quelle est sa position dans cette maille ?

Pour les nœuds de la frontière entre \(A\) et \(B\), il n’y a qu’une seule réponse possible : soit le nœud est associé à une maille de \(A\) soit il est associé à une maille de \(B\).

En général, l’association est imprévisible par l’utilisateur.

Il peut imposer que tous les nœuds de la frontière soient associés à \(A\) (ou à \(B\)) en utilisant le mode clé VIS_A_VIS, mais cela ne résoudra pas le problème initial. En effet, s’il impose par exemple, que les nœuds soient associés à la zone \(A\), les valeurs de \(A\) “pollueront” les mailles de \(B\) sur les éléments qui touchent la frontière.

En utilisant VIS_A_VIS, il ne peut que choisir “Qui pollue qui ?”

En résumé, la méthode ’COLLOCATION’ est faite pour projeter des champs continus et elle sera toujours incapable de projeter facilement et correctement un champ fortement discontinu.

Solution de contournement :

Pour résoudre le problème posé, il est nécessaire d’utiliser 2 fois PROJ_CHAMP pour projeter indépendamment les zones \(A\) et \(B\). On obtient 2 champs \(\mathit{CHA}\) et \(\mathit{CHB}\) qu’il faut ensuite assembler avec la commande CREA_CHAMP / OPERATION = ’ASSE’. Cette “solution” est illustrée dans le test zzzz304a.

2.15. Remarques sur la projection des champs ELGA d’un modèle X-FEM#

Un élément X-FEM peut être re-découpé en un nombre variable de sous-éléments. Le nombre de points de Gauss d’un tel élément est donc variable.

Dans Code_Aster, on ne sait pas prendre en compte ce nombre variable de points : on sur-dimensionne donc le champ. Par convention, les points inutilisés sont positionnés géométriquement au point (0,0,0).

Sur ces points, les valeurs du champ sont arbitraires.

Quand on projette un champ ELGA sur un modèle X-FEM, ces points fictifs, s’ils se retrouvent géométriquement en dehors du modèle d’origine, provoqueront une alarme CALCULEL5_48 indiquant que certains points ont été projetés sur des mailles lointaines. Si les coordonnées des points «lointains» sont (0,0,0), il ne faut pas s’en inquiéter.

2.16. Opérande DISTANCE_MAX#

Pour projeter le MAILLAGE_1 sur le MAILLAGE_2, la méthode (COLLOCATION) cherche dans quel élément du MAILLAGE_1 se trouve chaque nœud de \(\mathit{MA2}\), puis interpole la valeur à l’aide des fonctions de forme de l’élément. Lorsque qu’un nœud de \(\mathit{MA2}\) n’est dans aucun élément du maillage \(\mathit{MA1}\), la méthode met en relation le nœud et le point du bord de l’élément le plus proche. Il interpole la valeur à l’aide des fonctions de forme de l’élément et cela même si le nœud est “loin” de cet élément.

Si l’on souhaite qu’un nœud qui n’est dans aucun des éléments du maillage \(\mathit{MA1}\), ne soit pas concerné par la projection, on utilise l’opérande DISTANCE_MAX. Cet opérande permet de donner la distance maximale que l’on autorise entre le nœud et l’élément le plus proche.

Si le nœud ne répond pas au critère de proximité le champ ne sera pas projeté sur ce nœud (i.e. le nœud ne portera aucune composante).

Il n’y a pas de valeur par défaut pour DISTANCE_MAX. Ce qui veut dire que par défaut, le champ sera prolongé en dehors de la matière aussi loin qu’il le faudra.

2.17. Opérande ALARME = ’OUI’ / ’NON’#

Lorsqu’un nœud du MAILLAGE_2 se retrouve «loin» des éléments du MAILLAGE_1, le code émet un message d’alarme (CALCULEL5_48). On peut éviter ces alarmes en utilisant ALARME=’NON’.

2.18. Opérande DISTANCE_ALARME = d_ala#

Un nœud du MAILLAGE_2 est considéré comme «loin» du MAILLAGE_1 si :

  • La distance du nœud à la maille la plus proche du MAILLAGE_1 est supérieure à 10% de la taille de cette maille.

    C’est ce critère relatif qui est utilisé si DISTANCE_ALARME n’est pas fourni.

  • La distance du nœud à la maille la plus proche du MAILLAGE_1 est supérieure à d_ala si le mot clé DISTANCE_ALARME est utilisé (critère absolu).

2.19. Opérande PROL_VALE = valeur#

Pour les champs aux nœuds :

  • Si un nœud n’est pas concerné par la projection (DISTANCE_MAX non défini ou au-delà de cette distance), aucune valeur n’est affectée à ce nœud, les composantes du noeud sont initialisées avec des “NaN”. L’utilisateur peut choisir PROL_VALE = valeur afin d’affecter “valeur” sur ce nœud.

  • Lorsque l’utilisateur veut imposer une numérotation aux champs de la SD_RESULTAT, il doit utiliser le mot clé NUME_DDL. Si cette numérotation impose qu’un nœud donné porte des composantes et que le nœud se retrouve dans le cas précédent sans valeur à projeter, un message d’erreur est émis. Pour l’éviter, l’utilisateur peut choisir PROL_VALE = valeur afin d’affecter “valeur” sur ce nœud.

Pour les champs aux éléments :

  • Le mot clé PROL_VALE peut également être utilisé lors de la projection des champs par éléments. Là où la projection n’a pas pu être faite, on affecte la valeur, si PROL_VALE n’est pas donné le champ est prolongé avec des “NaN”.

Remarque :

PROL_VALE est facultatif, s’il n’est pas renseigné les composantes des nœuds non concernés par la projection sont initialisées avec des “NaN”.

2.20. Opérande PROL_ZERO = “OUI/NON”#

Cet opérande va être supprimé dans les versions à venir.

  • PROL_VALE = 0.0 est équivalent à PROL_ZERO=”OUI”.

  • Ne pas donner PROL_VALE est équivalent à PROL_ZERO=”NON”.

2.21. Opérande NUME_DDL = nu#

Ce mot clé permet de “numéroter” les champs projetés (pour une structure de données de type «mode») selon la numérotation (nu). Il est nécessaire si l’on souhaite utiliser le résultat de la commande dans des calculs ultérieurs (commandes REST_GENE_PHYS, PROJ_BASE, …).

2.22. Sélection des numéros d’ordre#

cf. U4.71.00.

2.23. Opérande NOM_PARA#

NOM_PARA = lpara,

Ce mot-clé est suivi d’une liste de noms de paramètres de la SD_RESULTAT “evo1”. Les paramètres de “evo1” correspondant à ces noms seront recopiés dans la structure de données produite par la commande “resu”.

Exemple : lors de la projection de modes propres, on peut indiquer :

NOM_PARA=(’AMOR_REDUIT’,’MASS_GENE’)

2.24. Opérande TITRE#

TITRE = titr,

Titre que l’on veut donner au concept résultat.

2.25. Opérande INFO#

INFO =    /    1,    [DEFAUT]
          /    2,

Niveau d’impression.