intFmmCore_getRadius(void*fmmCore,void*boxId,FReal*radius);/*Renvoie le rayon de la boîte*/
intFmmCore_getCentre(void*/*fmmCore*/,void*boxId,FReal**centre);/*Renvoie dans le FReal[3] centre les coordonnées du centre*/
intFmmCore_getLevel(void*/*fmmCore*/,void*boxId,int*level);/*Renvoie dans level le niveau de la boîte boxId dans son arbre*/
intFmmCore_getMultipoleArray(void*/*fmmCore*/,void*boxId,void**F);/*Renvoie dans F l'adresse où stocker l'expansion multipôle associée à la boîte boxId*/
intFmmCore_getLocalArray(void*/*fmmCore*/,void*boxId,void**F);/*Renvoie dans F l'adresse où stocker l'expansion locale associée à la boîte boxId*/
intFmmCore_getCoord(void*/*fmmCore*/,void*boxId,int*coord);/*Renvoie dans coord la position dans l'arbre*/
/* Données potentiel/champ */
intFmmCore_getSource(void*/*fmmCore*/,void*boxId,FReal**position,void**potential,int*number);/* Appelé par P2P et P2M pour obtenir le nombre, la position et le potentiel des sources.
Les différents tableaux sont (éventuellement) alloués par le FmmCore. */
intFmmCore_releaseSource(void*fmmCore,void*boxId,void*potential,FReal*position);/* si le core veut libérer ces tableaux potentiel et position.*/
intFmmCore_getTargetPoints(void*/*fmmCore*/,void*boxId,FReal**position,int*number);/* : Appelé par P2P et L2P pour obtenir le nombre et la position des points cibles.*/
intFmmCore_releaseTargetPoints(void*fmmCore,void*boxId,FReal*position);/* si le core veut libérer ce tableau "position".*/
intFmmCore_getTargetField(void*/*fmmCore*/,void*boxId,FReal*F);/* obtient dans un tableau F alloué/libéré par L2P/P2P les valeurs des champs aux points cible
(pour le cas où P2P et L2P doivent sommer leurs résultats).*/
intFmmCore_setTargetField(void*/*fmmCore*/,void*boxId,FReal*F);/* transmets au FmmCore dans F les valeurs des champs aux points cibles mis à jour.*/
/* Entrée/sortie principale */
intFmmCore_setKernelData(void*fmmCore,void*fmmKernel);/* stocke l'identifiant du FmmKernel dans le FmmCore. Cela permet par la suite aux
opérateurs FMM d'accéder au FmmKernel, et donc d'accéder aux données spécifiques au kernel
(p.ex. fréquence dans le cas Helmholtz, …)*/
intFmmCore_getKernelData(void*fmmCore,void**fmmKernel);/* récupère l'identifiant du FmmKernel. */
intFmmCore_setPositions(void*fmmCore,int*nb,FReal*position);/* transmet au FmmCore les potentiels associés aux points sources.
Le tableau potential est alloué et libéré par la routine appelant, le FmmCore doit donc en faire une copie.*/
intFmmCore_setPotentials(void*fmmCore,void*potentials);/* transmet au FmmCore les potentiels associés aux points sources.
Le tableau potential est alloué et libéré par la routine appelant, le FmmCore doit donc en faire une copie.*/
intFmmCore_doComputation(void*fmmCore);/* réalise le produit multipôle. */
/* !!! Warning use *filed and not **field */
intFmmCore_getField(void*fmmCore,void*fields);/* récupère après le produit multipôle la valeur des champs en chaque point.
Le tableau field doit être alloué et libéré par la routine appelante. */
intFmmKernel_getMultipoleArraySize(void*fmmCore,int*size);/* Renvoie dans size la taille (en octets) de l'expansion multipôle associée à la boîte boxId */
intFmmKernel_getLocalArraySize(void*fmmCore,int*size);/* Renvoie dans size la taille (en octets) de l'expansion locale associée à la boîte boxId*/