12#ifndef ARCANE_FILES_SPLITSDMESHPARTITIONER_H
13#define ARCANE_FILES_SPLITSDMESHPARTITIONER_H
19#include "arcane/std/MeshPartitionerBase.h"
21#include "arcane/std/SplitSDMeshPartitioner_axl.h"
23#define MPICH_SKIP_MPICXX
24#define OMPI_SKIP_MPICXX
34#define TAG_MAILLAGEMAITRE 1
36#define CHECK_MPI_PACK_ERR(ier) \
37 if (ier != MPI_SUCCESS) { \
39 case MPI_ERR_COMM:InfoProc->m_service->pfatal()<<"erreur sur MPI_Pack de type MPI_ERR_COMM"; break; \
40 case MPI_ERR_TYPE: InfoProc->m_service->pfatal()<<"erreur sur MPI_Pack de type MPI_ERR_TYPE"; break; \
41 case MPI_ERR_COUNT: InfoProc->m_service->pfatal()<<"erreur sur MPI_Pack de type MPI_ERR_COUNT"; break; \
42 case MPI_ERR_ARG: InfoProc->m_service->pfatal()<<"erreur sur MPI_Pack de type MPI_ERR_ARG"; break; \
43 default: InfoProc->m_service->pfatal()<<"erreur sur MPI_Pack de type inconnu !"; \
47#ifndef CHECK_IF_NOT_NULL
61#define CHECK_IF_NOT_NULL(Ptr) \
63 InfoProc->m_service->pfatal()<<"Pointeur vaut nil, (On manque peut-etre de place memoire !!! )"; \
68#define MAX(a,b) ((a)<(b)?(b):(a))
71#define MIN(a,b) ((a)>(b)?(b):(a))
78typedef struct T_InfoProc
110typedef struct T_INTERFACE
124typedef struct T_BLOC_ETENDU
150typedef struct T_ListeVoisMail
168typedef struct T_ListeDomMail
192typedef struct T_Maillage
247 void initPoids(
bool initial_partition);
264 void MAJDelta(
double don,
int iDOmTmpPrec,
int iDomTmp,
StrucListeDomMail* ListeDomaines);
267 double CalculDeltaMin(
StrucMaillage* Maillage,
double deltaMin,
int iterEquilibrage,
int NbMaxIterEquil);
273 void Equil2Dom(
int* MasqueDesNoeuds,
int* MasqueDesElements,
int marqueVu,
int marqueNonVu,
275 int indDomCharge,
int indDomVois,
double Delta);
278 void SelectElements(
int* MasqueDesNoeuds,
int* MasqueDesElements,
int marqueVu,
int marqueNonVu,
283 int ParcoursFrontalDelta (
int* MasqueDesNoeuds,
int* MasqueDesElements,
284 int marqueVu,
int marqueNonVu,
286 int *pNbFronts,
int NbFrontsMax,
294 void LissageDuFront (
int* MasqueDesNoeuds,
int* MasqueDesElements,
295 int marqueVu,
int marqueNonVu,
321 void* RecoitMessage (
StrucInfoProc* InfoProc,
int FromProc,
int Tag,
int *pTailleTMP);
322 void EnvoieMessage (
StrucInfoProc* InfoProc,
int ToProc,
int Tag,
void* TabTMP,
int TailleTMP);
324 void* DiffuseMessage(
StrucInfoProc* InfoProc,
int FromProc,
void* TabTMP,
int TailleTMP);
331 void UnpackDom(
void* TabTMP,
int TailleTMP, MPI_Comm comm,
StrucListeDomMail* DomMail);
336 void PackEquil(
StrucInfoProc* InfoProc,
int indDomCharge,
int indDomVois,
double Delta,
void* TabTMP,
int TailleTMP, MPI_Comm comm);
338 void UnpackEquil(
void* TabTMP,
int TailleTMP, MPI_Comm comm,
int* indDomCharge,
int* indDomVois,
double* Delta);
342 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