Communications et parallélisme
L’ensemble des communications est assuré par le protocole MPI qui est actuellement la norme pour le calcul massivement parallèle. Les applications couplées doivent être lancées dans un même environnement MPI. Si les codes sont eux mêmes parallèles, il faut que l'ensemble des codes soit compilé avec la même implémentation MPI. CWIPI détermine dans une phase d’initialisation un intra communicateur pour chaque code pris en charge. Lors de la création d’un couplage, CWIPI crée l’inter-communicateur liant l’ensemble des processus des deux codes et construit le graphe de communications utilisé pour les échanges à travers l’interface géométrique. Ce graphe est un ensemble de communications de type point à point généré par l’algorithme de géométrie sur lequel se base l’interpolation. La gestion du graphe est complètement transparente pour l’utilisateur.
Contrôle des échanges
L'utilisateur peut définir des algorithmes de couplage par l'utilisation de paramètres de contrôle se présentant sous la forme de variables globales entières, réelles et de chaînes de caractères synchronisables entre les applications.
Géométrie et interpolation
Les interfaces géométriques prises en comptes sont d’une grande diversité :
- Maillages linéiques
- Maillages surfaciques formés de triangles, quadrangles et polygones quelconques
- Maillages volumiques formés de tétraèdres, prismes, hexaèdres, pyramides et polyèdres quelconques.
Pour les codes parallèles, les interfaces sont partitionnées.
L’interpolation est produite à partir de la localisation de points cibles dans un maillage source.
Cette localisation se fait en trois temps :
- Détermination des processus candidat
- Détermination des cellules candidates
- Choix de la cellule la plus proche
- Localisation interne à la cellule par calcul de coordonnées barycentriques
Les valeurs interpolées aux points cibles sont ensuite obtenues par :
- Interpolation linéaire à partir des valeurs aux sommets de la cellule source pour les champs définis aux sommets,
- Imposition de la valeur de la cellule pour les champs définis aux centres des cellules.
Ceci est le mode d’interpolation par défaut, l’utilisateur est encouragé à développer une méthode optimale à partir des données de localisation fournies pas CWIPI et des bases fonctionnelles liées aux méthodes numériques du code. Cette nouvelle fonction est prise en compte par un système de callback.