prop-fr:contenu
| - 0.0
- project
{
int i, j;
//Calcul de la divergence
FOR_EACH_CELL
div[i,j] = -0.5f*/_n;
p[i,j] = 0;
END_FOR
set_bnd ; set_bnd ;
//Résolution du système
lin_solve ;
//Mise à jour des vélocités
FOR_EACH_CELL
u[i,j] -= 0.5f*_n*;
v[i,j] -= 0.5f*_n*]-p[i,j-1]);
END_FOR
set_bnd ; set_bnd ;
} (fr)
- int N = 100 // largeur et hauteur du tableau
int kmax = 100 // nombre d'itérations à effectuer
float diff = 0.01 // coefficient de diffusion
float u[N,N] // composante horizontale des vecteurs vélocité
float v[N,N] // composante verticale des vecteurs vélocité
float u0[N,N], v0[N,N] // tableaux temporaires relatifs à u et v
// solveur linéaire Gauss-Seidel
void linear_solver
{
int i, j, k;
for
{
FOR_EACH_CELL
x[i,j] = /c;
END_FOR
set_bnd ; // conditions limites
}
}
// opérateur de diffusion
void diffuse_step
{
SWAP ; SWAP ;
float a=_fm->dt*diff*N*N;
lin_solve ;
lin_solve ;
} (fr)
|