19
Page 1 Interface CWIPI Thierry Morel Formation OpenPALM avril 2012

Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Embed Size (px)

Citation preview

Page 1: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 1

Interface CWIPI

Thierry Morel Formation OpenPALM avril 2012

Page 2: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 2

Fonctionnalités

• Échanges de champs interpolés entre un maillage source et un maillage cible• Maillages non coïncidents• Maillages partitionnés distribués sur différents processus (une partition

par processus)

•Types de communication :• Échanges unidirectionnels synchrones• Échanges croisés synchrones• Échanges asynchrones

• Parallélisme :• Transparent pour l’utilisateur

Page 3: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 3

Maillage

• Type de maillages – Linéique : arêtes– Surfacique : triangles, quadrangles, polygones– Volumique : tétraèdres, pyramides, prismes, hexaèdres, polyèdres

• Échanges– Types de maillages identiques entre source et cible :

• Échange à travers une interface

– Types de maillages distincts entre source et cible : • Surface plongée dans un volume• Maillage 2D axisymétrique plongé dans un volume• …

Page 4: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 4

Interpolation

• Points d’interpolation– Centres cellules du maillage cible– Sommets du maillage cible– Points définis par l’utilisateur

• Méthodes – Pour les champs définis aux centres cellules du maillage source :

• Valeur de la cellule contenant le point– Pour les champs définis aux sommets du maillage source :

• Matrice d’interpolation basée sur le résultat de localisation géométrique et de calcul de coordonnées barycentriques

– Interpolation utilisateur• Possibilité de définir ses propres méthodes à partir des résultats de localisation

géométrique

Page 5: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 5

Localisation géométrique

• Résultats : – Élément du maillage source contenant le point– A défaut : Élément le plus proche parmi les éléments candidats – Point défini comme non localisé

• Tolérance géométrique– Permet de jouer sur la distance de recherche autour du point pour

augmenter le nombre d’éléments candidats – Paramètre utilisateur– Valeur > 0 (par défaut : 0.001)– Plus la valeur est grande :

• Plus le nombre de points localisés augmente• Plus l’algorithme est lent

• Points non localisés :– Liste accessible à l’utilisateur – Attention : Le champ reçu n’est défini que sur les points localisés.– Contrôle et définition des valeurs sur ces points à faire par l’utilisateur

Page 6: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 6

Post-traitement

• Visualisation– Partition de l’interface– Points non localisés– Champs envoyés– Champs reçus

• Format– Ensight, CGNS, MED

Page 7: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 7

Primitives générales

• PCW_Init– Création des communicateurs MPI liant les

application

• PCW_Finalize – Destruction de communicateurs MPI

• PCW_set_output_listing– Redirection des affichages dans un fichier

donné

Page 8: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 8

Création d’un objet de couplage

• PCW_Create_coupling – Retourne un identificateur (id)– Principaux paramètres :

• Nature du maillage : linéique, surfacique, volumique• Tolérance géométrique• Maillage mobile ou statique• Définition de la nature des champs

– Valeurs aux centres cellules – Valeurs aux sommets

• Activation des sorties graphiques

• Plusieurs objets de couplages peuvent être créés simultanément

Page 9: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 9

Définition d’un maillage

• PCW_define_mesh :– Paramètres

• Id de l’objet de couplage

• Nombre de sommets et coordonnées

• Nombre d’éléments et connectivité

• Les tableaux en entrée sont mappés en mémoire– Possibilité de partager le même maillage entre

plusieurs objets de couplage

Page 10: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 10

Connectivité

• Les éléments doivent être triés– Surfacique : triangles, quadrangles, polygones– Volumique : tétraèdre, pyramides, prismes, hexaèdres

• Deux tableaux :– connecindex : tableau d’index permettant l’accès au tableau

connec– connec : concaténation de la connectivité cellule/sommets de

l’ensemble des éléments– Exemple pour un élément ielt :

• Nombre de sommets : – n_som = connecindex[ielt+1] – connecindex[ielt]

• Connectivité de l’élément :– connec[connecidx[ielt]] … connec[connecidx[ielt] + n_som]

Page 11: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 11

Numérotation interne des éléments

Page 12: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 12

Polyèdres

• PCW_Add_polyhedra :– Connectivité cellules/faces orientée

• Pour une face de numéro numfac– Mettre numfac si la normale de la face est sortante

– Mettre - numfac si la normale de la face est entrante

• L’orientation des faces est implicitement définie par l’ordre des sommets dans la connectivité faces/sommets

– Connectivité faces/sommets

Page 13: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 13

Communications synchrones

• Primitives– PCW_Sendrecv : Échanges croisés– PCW_Send : Envoi simple– PCW_Recv : Réception simple

• En C/C++ les échanges unidirectionnels se font par PCW_Sendrecv en positionnant à NULL les champs d’envoi ou réception.

• Localisation géométrique réalisée automatiquement au premier échange

Page 14: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 14

Communications asynchrones

• Primitives– PCW_Issend : Envoi– PCW_Wait_issend : Attente de fin d’envoi – PCW_Irecv : Réception– PCW_Wait_irecv : Attente de fin de réception

• En asynchrone :– La localisation est explicite :

• Appel de PCW_Locate obligatoire

Page 15: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 15

Points non localisés

• Nombre de points non localisés– Obtenu en retour des fonctions d’échange

• Liste des point non localisés:– PCW_get_not_located_points

Page 16: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 16

Post-traitement

• Répertoire de stockage– cwipi/<nom_couplage>_<nom appli1>_<nom_appli2>

• Nom des variables– Champ source : s_<nom_var>– Champ reçu : r_<nom_var>– Localisation (si présence de points non localisés) :

location– Partitionnement : partitioning

Page 17: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 17

Fonctions avancées

• PCW_set_points_to_locate– Définition des points d’interpolation

• PCW_Set_interpolation_function– Prise en compte d’une fonction d’interpolation

utilisateur C– Prototype imposé

• PCW_Set_interpolation_function_f– Prise en compte d’une fonction d’interpolation

utilisateur Fortran– Prototype imposé

Page 18: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 18

Prototype d’une interpolation utilisateur

static void _userInterpolation(const int entities_dim, const int n_local_vertex, const int n_local_element, const int n_local_polhyedra, const int n_distant_point, const double local_coordinates[], const int local_connectivity_index[], const int local_connectivity[], const int local_polyhedra_face_index[], const int local_polyhedra_cell_to_face_connectivity[], const int local_polyhedra_face_connectivity_index[], const int local_polyhedra_face_connectivity[], const double distant_points_coordinates[], const int distant_points_location[], const float distant_points_distance[], const int distant_points_barycentric_coordinates_index[], const double distant_points_barycentric_coordinates[], const int stride, const cwipi_solver_type_t solver_type, const void *local_field, void *distant_field)

Page 19: Page 1 Interface CWIPI Thierry MorelFormation OpenPALM avril 2012

Page 19

Différence d’utilisation entre CWIPI et son interface dans Open-Palm

• Fonctions interfacées– Même nom, seul le préfixe change

• CWIPI_ → PCW_

– Moins d’arguments• Prise en charge par PrePALM

• Contrôle des couplage– Pas d’utilisation des fonctions de contrôles CWIPI

– Gestion par PrePALM