4.3.2.1 : Le header intrinsics_propagation.h



Écrivons le fichier intrinsics_propagation.h :



Comme d'habitude, il faut commencer par définir des macro qui éviterons les inclusions multiples de notre header :

1
2
#ifndef __INTRINSICS_PROPAGATION_H__
#define __INTRINSICS_PROPAGATION_H__


Un petit include des familles :

1
#include <iostream>


Le prototype de notre fonction :

1
2
3
void grayscott_propagation(float * outMatVecU, float * outMatVecV, const float * matVecVecU, const float * matVecVecV, long nbRow, long nbCol,
		       const float * matBroadcastDeltaSquare, long nbStencilRow, long nbStencilCol,
		       float diffusionRateU, float diffusionRateV, float feedRate, float killRate, float dt);


Où :
  • outMatVecU : est le résultat du calcul pour l'espèce U avec des voisins vecotriels
  • outMatVecV : est le résultat du calcul pour l'espèce V avec des voisins vecotriels
  • matVecVecU : est la concentration initiale de l'espèce U avec des voisins vecotriels
  • matVecVecV : est la concentration initiale de l'espèce V avec des voisins vecotriels
  • nbRow : est le nombre de lignes des matrices précédentes
  • nbCol : est le nombre de colonnes des matrices précédentes
  • matBroadcastDeltaSquare : est la matrice de poids que nous avons évoqués précédemment (section 4.1.1.1) mais en version vecotrielle
  • nbStencilRow : le nombre de lignes de cette matrice de poids (pour nous ce sera 3)
  • nbStencilCol : le nombre de colonnes de cette matrice de poids (pour nous ce sera 3)
  • diffudionRateU : le taux de diffusion de l'espèce U
  • diffusionRateV : le taux de diffusion de l'espèce V
  • feedRate : la vitesse du processus qui nourrit U et tue V et P
  • textbfkillRate : le taux de conversion de V en P
  • dt : l'intervalle de temps du calcul (plus il est petit plus le calcul sera précis noteBien sûr, si vous mettez un nombre dénormalisé comme pas de temps ça n'a aucun sens et vos résultats seront tout pourri, mais je me comprends.)


Et finalement la fin de la condition du préprocesseur :

1
#endif


Le fichier intrinsics_propagation.h complet :

1
2
3
4
5
6
7
8
9
10
11
12
13
/***************************************
	Auteur : Pierre Aubert
	Mail : pierre.aubert@lapp.in2p3.fr
	Licence : CeCILL-C
****************************************/
#ifndef __INTRINSICS_PROPAGATION_H__
#define __INTRINSICS_PROPAGATION_H__
#include <iostream>

void grayscott_propagation(float * outMatVecU, float * outMatVecV, const float * matVecVecU, const float * matVecVecV, long nbRow, long nbCol,
		       const float * matBroadcastDeltaSquare, long nbStencilRow, long nbStencilCol,
		       float diffusionRateU, float diffusionRateV, float feedRate, float killRate, float dt);
#endif


Vous pouvez le télécharger ici.