int SpxGetDonneeAbstraite(const int dimbloc,const int dimxy, const int dimz,const int dimc,const int dimmai, const int dimvol,REEL_S x[],REEL_S y[],REEL_S z[],REEL_S c[], int* nbloc,int nx[],int ny[],int nz[], SpxTypeDon type[],SpxTypeC typec[],SpxTypeMailles typemailles[], int nmailles[],int dimmailles[],int mailles[], int nvolumes[],int dimvolumes[],int volumes[], SPXFILE* spx_file)
Cette routine permet à l'aplication utilisant la nouvelle librairie Narcisse de récupérer les données numériques constituant l'état courant du Narcisse sur lequel on est connecté.
dimbloc est la deuxième dimension des tableaux X, Y, Z, C, MAILLES, VOLUMES et la première dimension des tableaux NX, NY, NZ, TYPE, TYPEC, TYPEMAILLES, NMAILLES, DIMMAILLES, NVOLUMES, DIMVOLUMES telle qu'elle est déclarée dans le programme appelant. C'est le nombre de bloc ou de courbes maximum que l'on s'attend à trouver dans Narcisse. Si le nombre de blocs réels est supérieur à ce paramêtre, le code retour de la fonction l'indiquera, mais l'application utilisant cet appel ne s'arrêtera pas en erreur. Aucun dépassement de tableau n'est possible.
dimxy est la première dimension des tableaux X et Y déclarée dans le programme appelant. Elle correspond au nombre maximum de points attendu pour X et Y pour un bloc donné. Attention, le nombre de points en question est nx × ny ( × nz) pour les blocs 3D surfacique structurés ou 3D volumiques structurés.
dimz est la première dimension du tableau Z déclarée dans le programme appelant.
dimc est la première dimension du tableau C déclarée dans le programme appelant.
dimmai est la première dimension du tableau MAILLES déclarée dans le programme appelant.
dimvol est la première dimension du tableau VOLUMES déclarée dans le programme appelant.
X est le tableau des abscisses renvoyé par la fonction. Il est déclaré de dimension X[dimxy*dimbloc] ou X[dimbloc][dimxy].
Y est le tableau des ordonnées renvoyé par la fonction. Il est déclaré de dimension Y[dimxy*dimbloc] ou Y[dimbloc][dimxy].
Z est le tableau de la troisième composante renvoyé par la fonction. Il est déclaré de dimension Z[dimz*dimbloc] ou Z[dimbloc][dimz]. Si les blocs sont des courbes, ce tableau n'est pas rempli et dimz peut être mis à zéro.
C est le tableau de la quatrième composante renvoyé par la fonction. Il est déclaré de dimension C[dimc*dimbloc] ou C[dimbloc][dimc]. Si les blocs sont des courbes, ce tableau n'est pas rempli et dimc peut être mis à zéro.
NBLOC est le nombre réel de blocs effectivement lus.
NX est déclaré de dimension NX[dimbloc] dans le programme appelant. Il permet de récupérer la taille en X réelle pour chaque bloc.
NY est déclaré de dimension NY[dimbloc] dans le programme appelant. Il permet de récupérer la taille en Y réelle pour chaque bloc.
NZ est déclaré de dimension NZ[dimbloc] dans le programme appelant. Il permet de récupérer la taille en Z réelle pour chaque bloc (1 en général sauf pour le 3D volumique structuré).
TYPE est déclaré de dimension TYPE[dimbloc] dans le programme appelant. Il permet de récupérer le type des données reçues. Les types possibles sont donnés par l'enum SpxTypeDon que l'on peut trouver dans le fichier d'include SpxGenDonAbs.h :
typedef enum { SPXPHYSIQUE_4D_NS_BRAS = -14, SPXRECT_3D_MAILLE = -13, SPXRECT_4D_MAILLE = -12, SPXPHYSIQUE_3D_MAILLE = -11, SPXPHYSIQUE_4D_MAILLE = -10, SPXPARRECT_4D = -8, SPXRECT_3D = -7, SPXRECT_4D = -6, SPXPHYSIQUE_4D_NS_MAILLE = -3, SPXPHYSIQUE_4D_NS = -2, SPXLOGIQUE_3D = 0, SPXPHYSIQUE_2D = 1, SPXPHYSIQUE_3D = 2, SPXPHYSIQUE_4D = 3 } SpxTypeDon;
TYPEC est déclaré de dimension TYPEC[dimbloc] dans le programme appelant. Il permet de savoir si les données C reçues sont de type valeurs aux noeuds ou aux mailles. Les types possibles sont donnés par l'enum SpxTypeC que l'on peut trouver dans le fichier d'include SpxGenDonAbs.h :
typedef enum { SPXDONNEE_NOEUD = 0, SPXDONNEE_MAILLE = 1 } SpxTypeC;
TYPEMAILLES est déclaré de dimension TYPEMAILLES[dimbloc] dans le programme appelant. Il permet de savoir si les données reçues sont de type rectangulaires ou tetragonales. Les types possibles sont donnés par l'enum SpxTypeMailles que l'on peut trouver dans le fichier d'include SpxGenDonAbs.h :
typedef enum { SPXCARRE = 0, SPXRECT = 1, SPXTETRA = 2 } SpxTypeMailles;
NMAILLES est déclaré de dimension NMAILLES[dimbloc] dans le programme appelant. Il permet d'obtenir le nombre de mailles de chaque bloc si celui-ci est du type non structuré. Pour les blocs structurés, la valeur renvoyée dans ce tableau est zéro.
DIMMAILLES est déclaré de dimension DIMMAILLES[dimbloc] dans le programme appelant. Il permet d'obtenir la dimension du tableau définissant les mailles de chaque bloc si celui-ci est du type non structuré. Pour les blocs structurés, la valeur renvoyée dans ce tableau est zéro.
NVOLUMES est déclaré de dimension NVOLUMES[dimbloc] dans le programme appelant. Il permet d'obtenir le nombre de volumes de chaque bloc si celui-ci est du type 3D/4D volumique non structuré. Pour les blocs structurés ou non structurés de type 3D/4D surfaciques, la valeur renvoyée dans ce tableau est zéro.
DIMVOLUMES est déclaré de dimension DIVOLUMES[dimbloc] dans le programme appelant. Il permet d'obtenir la dimension du tableau définissant les volumes de chaque bloc si celui-ci est du type 3D/4D volumique non structuré. Pour les blocs structurés ou non structurés de type 3D/4D surfaciques, la valeur renvoyée dans ce tableau est zéro.
MAILLES est le tableau des mailles renvoyé par la fonction. Il est déclaré de dimension MAILLES[dimmai*dimbloc] ou MAILLES[dimbloc][dimmai]. Il permet d'obtenir le tableau définissant les mailles de chaque bloc si celui-ci est du type non structuré. Le format de ce tableau est donné dans la partie décrivant la fonction SpxNonStruc4d.
VOLUMES est le tableau des volumes renvoyé par la fonction. Il est déclaré de dimension VOLUMES[dimmai*dimbloc] ou VOLUMES[dimbloc][dimmai]. Il permet d'obtenir le tableau définissant les volumes de chaque bloc si celui-ci est du type 3D/4D volumique non structuré. Le format de ce tableau est le même que pour les mailles sauf qu'on donne des listes de mailles au lieu de noeuds.
spx_file est le pointeur sur une connexion renvoyé par SpcOpen qui doit avoir été préalablement appelé.
Cette routine renvoit 0 en retour si tout s'est bien passé, -1 si spx_file est un pointeur nul et 1 si l'une dimensions fournies en entrée est trop petite pour contenir les données lues.