1 / 19

Interface CWIPI

Interface CWIPI. Thierry Morel. Formation OpenPALM avril 2012. 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)

cheri
Download Presentation

Interface CWIPI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Interface CWIPI Thierry Morel Formation OpenPALM avril 2012

  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

  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 • …

  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

  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

  6. Post-traitement • Visualisation • Partition de l’interface • Points non localisés • Champs envoyés • Champs reçus • Format • Ensight, CGNS, MED

  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é

  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

  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

  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]

  11. Numérotation interne des éléments

  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

  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

  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

  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

  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

  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é

  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)

  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

More Related