Service modélisation & calcul scientifique
Présentation
Le service modélisation et calcul scientifique a pour mission de développer des méthodes et des outils logiciels pour l’étude des interactions lumière-matière sur des dispositifs nano-structurés . Le service a pour vocation de répondre aux besoins des différents groupes de recherche du laboratoire en termes de modélisation électromagnétique dans l’optique de créer une plate-forme de calcul scientifique permettant la mutualisation des moyens et la valorisation du savoir-faire. Il est aussi associé à un certain nombre de projets ANR et à des contrats de collaboration industrielle (exemple : Saint-Gobain Recherche).
Les méthodes mises en œuvre se basent sur l’hybridation de la méthode des éléments finis (FEM) avec la méthode modale de Fourier (FMM) ce qui permet de tirer profit des avantages des deux méthodes : modéliser des géométries de forme complexe, meilleure convergence dans le cas des métaux, inspection locale du champ associée à une analyse modale.
Les travaux au sein du service sont en forte interaction avec le groupe Naphel et s’appuient entre autre sur les contributions de Jean Paul Hugonin, chercheur associé au laboratoire.
Synoptique de l'hybridation des modèles et exemple de distribution de champ électrique au voisinage d’une fente sur une interface air-argent.
Moyens de calcul
Le laboratoire, faisant partie de la fédération LUMAT, dispose d’une grappe de calcul massivement parallèle. Les chercheurs du laboratoire ont en particulier accès à 16 jetons de la boite à outils de calcul parallèle de Matlab (MDCE).
Exemple de script Matlab pour lancer un job sur les nœuds de calcul avec SGE (Sun Grid Engine)
clusterHost = 'master.cluster';
remoteDataLocation = '/home/mondher_besbes';
sched = findResource('scheduler', 'type', 'generic');
% Use a local directory as the DataLocation
set(sched, 'DataLocation', '/home/mondher_besbes'); % Pr�ciser le nom de votre r�pertoire de travail
set(sched, 'ClusterMatlabRoot', '/opt/applications-utilisateurs/matlab');
set(sched, 'HasSharedFilesystem', true);
set(sched, 'ClusterOsType', 'unix');
set(sched, 'GetJobStateFcn', @sgeGetJobState);
set(sched, 'DestroyJobFcn', @sgeDestroyJob);
% The SubmitFcn must be a cell array that includes the two additional inputs
set(sched, 'SubmitFcn', {@sgeNonSharedSimpleSubmitFcn, clusterHost, remoteDataLocation});
Job = createJob(sched);
X = rand(150)+1i*rand(150);
t = createTask(Job, 'eig', 2, {X});
% Submit the task and wait for completion
submit(Job);
% Récupérer les résultats sur le workspace
A = getAllOutputArguments(Job);
% Détruire le Job une fois le calcul est terminé
destroy(Job)