La bibliothèque de couplage CWIPI


Echanges directs via CWIPI entre le Code A (5 processus)
et le code B (3 processus)

La demande en études mutliphysiques est en plein essor, c’est la conséquence de la forte augmentation des moyens de calculs qui permettent maintenant d’étudier simultanément plusieurs phénomènes physiques. Lorsque les temps caractéristiques des physiques étudiées sont très différents, les physiques peuvent être étudiées consécutivement, on parle alors de chaînage. Par contre, lorsque les temps caractéristiques sont du même ordre, les physiques peuvent interagir entre elles et doivent être traitées simultanément, on parle alors de couplage. D’un  point de vue informatique, le chaînage consiste à lancer les codes propres à chaque physique consécutivement. A la fin de son exécution, le code amont doit préparer et envoyer au code aval les données nécessaires à son exécution. Concernant le couplage, les codes sont exécutés simultanément et doivent s’échanger périodiquement des données pour mener à bien la simulation.

Les données sont échangées à la frontière des différentes physiques. Par exemple, pour une étude fluide/structure, l’interface d’échange sera la paroi du matériau séparant le domaine fluide du domaine mécanique. Chaque physique utilise ses propres méthodes numériques ce qui entraîne des discrétisations spatiales différentes notamment au niveau de l’interface de couplage et a pour conséquence de devoir préalablement interpoler les données avant de les transmettre. 
L’ordonnancement et la fréquence des échanges sont pilotés par l’algorithme de couplage. Cet algorithme peut être géré par un superviseur qui est un logiciel qui contrôle l’ensemble des logiciels couplés. Une seconde approche consiste à distribuer la définition entre les différents logiciels couplés, le pilotage se fait alors par échanges de paramètres globaux.

 

La bibliothèque CWIPI (Coupling With Interpolation Parallel Interface) répond aux besoins nécessaires au chaînage et au couplage de codes. Elle assure les échanges de champs interpolés à travers une interface géométrique non conforme et permet le contrôle de l’algorithme de couplage à l’aide de paramètres de contrôle. CWIPI prend le parti de la distribution de la définition de  l’algorithme de couplage dans les différents codes. Cette solution est moins souple que l’utilisation d’un superviseur mais elle a à l’avantage de réaliser directement les échanges entre les codes sans passer par un code intermédiaire ce qui limite les copies mémoires et assure donc de meilleures performances surtout dans un contexte massivement parallèle. Si l’utilisateur souhaite utiliser les fonctionnalités d’échanges spatiaux de CWIPI tout en bénéficiant d’un superviseur, il pourra se tourner vers le logiciel OpenPALM  (CERFACS) ou bien construire son propre superviseur à l’aide d’un script Python qui ferait appel à l’interface Python de CWIPI.

 

CWIPI est notamment utilisé à l’ONERA dans les projets de recherche fédérateurs « foudre » et « plasma », dans le projet de recherche « synergie elsACEDRE », pour le postraitement du code CEDRE, et pour les couplages aéroacoustiques (couplage CEDRE/SPACE, chaînage elsA/SPACE). CWIPI est utilisé par le coupleur OpenPALM pour les échanges de champs interpolés dans le cadre du projet COSMOS+ ayant notamment pour partenaires SAFRAN, EADS IW, CERFACS.