14#ifndef ARCANE_FILES_SPLITSDMESHPARTITIONER_H
15#define ARCANE_FILES_SPLITSDMESHPARTITIONER_H
21#include "arcane/std/MeshPartitionerBase.h"
23#include "arcane/cea/SplitSDMeshPartitioner_axl.h"
26#define MPICH_SKIP_MPICXX
27#define OMPI_SKIP_MPICXX
37#define TAG_MAILLAGEMAITRE 1
39#define CHECK_MPI_PACK_ERR(ier) \
40 if (ier != MPI_SUCCESS) { \
42 case MPI_ERR_COMM:InfoProc->m_service->pfatal()<<"erreur sur MPI_Pack de type MPI_ERR_COMM"; break; \
43 case MPI_ERR_TYPE: InfoProc->m_service->pfatal()<<"erreur sur MPI_Pack de type MPI_ERR_TYPE"; break; \
44 case MPI_ERR_COUNT: InfoProc->m_service->pfatal()<<"erreur sur MPI_Pack de type MPI_ERR_COUNT"; break; \
45 case MPI_ERR_ARG: InfoProc->m_service->pfatal()<<"erreur sur MPI_Pack de type MPI_ERR_ARG"; break; \
46 default: InfoProc->m_service->pfatal()<<"erreur sur MPI_Pack de type inconnu !"; \
50#ifndef CHECK_IF_NOT_NULL
64#define CHECK_IF_NOT_NULL(Ptr) \
66 InfoProc->m_service->pfatal()<<"Pointeur vaut nil, (On manque peut-etre de place memoire !!! )"; \
71#define MAX(a,b) ((a)<(b)?(b):(a))
74#define MIN(a,b) ((a)>(b)?(b):(a))
81typedef struct T_InfoProc
113typedef struct T_INTERFACE
127typedef struct T_BLOC_ETENDU
153typedef struct T_ListeVoisMail
171typedef struct T_ListeDomMail
195typedef struct T_Maillage
250 void initPoids(
bool initial_partition);
267 void MAJDelta(
double don,
int iDOmTmpPrec,
int iDomTmp,
StrucListeDomMail* ListeDomaines);
270 double CalculDeltaMin(
StrucMaillage* Maillage,
double deltaMin,
int iterEquilibrage,
int NbMaxIterEquil);
276 void Equil2Dom(
int* MasqueDesNoeuds,
int* MasqueDesElements,
int marqueVu,
int marqueNonVu,
278 int indDomCharge,
int indDomVois,
double Delta);
281 void SelectElements(
int* MasqueDesNoeuds,
int* MasqueDesElements,
int marqueVu,
int marqueNonVu,
286 int ParcoursFrontalDelta (
int* MasqueDesNoeuds,
int* MasqueDesElements,
287 int marqueVu,
int marqueNonVu,
289 int *pNbFronts,
int NbFrontsMax,
297 void LissageDuFront (
int* MasqueDesNoeuds,
int* MasqueDesElements,
298 int marqueVu,
int marqueNonVu,
324 void* RecoitMessage (
StrucInfoProc* InfoProc,
int FromProc,
int Tag,
int *pTailleTMP);
325 void EnvoieMessage (
StrucInfoProc* InfoProc,
int ToProc,
int Tag,
void* TabTMP,
int TailleTMP);
327 void* DiffuseMessage(
StrucInfoProc* InfoProc,
int FromProc,
void* TabTMP,
int TailleTMP);
334 void UnpackDom(
void* TabTMP,
int TailleTMP, MPI_Comm comm,
StrucListeDomMail* DomMail);
339 void PackEquil(
StrucInfoProc* InfoProc,
int indDomCharge,
int indDomVois,
double Delta,
void* TabTMP,
int TailleTMP, MPI_Comm comm);
341 void UnpackEquil(
void* TabTMP,
int TailleTMP, MPI_Comm comm,
int* indDomCharge,
int* indDomVois,
double* Delta);
345 VariableCellReal m_poids_aux_mailles;
Classe de base d'un service.
Generation de la classe de base du Service.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Structure contenant les informations pour créer un service.
Partitioneur de maillage inspiré de la bibliothèque SplitSD, développé initialement à l'ONERA pour Da...
virtual void build()
Construction de niveau build du service.
Exception lorsqu'une fonction n'est pas implémentée.
Arcane::AbstractService * m_service
Pour la gestion des traces (messages, erreurs, fatal ...)
StrucListeVoisMail * ListeVoisins
StrucListeDomMail * ListeDomaines
StructureInterface * Intf
Arcane::UniqueArray< Arcane::Node > ListeNoeuds