180 const IJK_Field_double& pression,
181 const IJK_Field_double& temperature,
186 Cerr <<
"Erreur dans Statistiques_dns_ijk::update_stat: non initialise" << finl;
189 const IJK_Field_double& vitesse_i = vitesse[0];
190 const IJK_Field_double& vitesse_j = vitesse[1];
191 const IJK_Field_double& vitesse_k = vitesse[2];
197 const int nktot = pression.get_domaine().get_nb_items_global(
Domaine_IJK::ELEM, DIRECTION_K);
200 const int kmax = pression.nk();
201 const int offset = pression.get_domaine().get_offset_local(DIRECTION_K);
203 DoubleTab tmp(nktot,
nval_);
204 const int imax = pression.ni();
205 const int jmax = pression.nj();
207 for (
int k = 0; k < kmax; k++)
209 const double dz =
tab_dz_[k+offset];
210 bool on_the_first_cell =
false;
211 bool on_the_last_cell =
false;
213 on_the_first_cell =
true;
214 if (k + offset == nktot)
215 on_the_last_cell =
true;
219 ArrOfDouble moy(
nval_);
220 for (
int i = 0; i <
nval_; i++)
224 for (
int j = 0; j < jmax; j++)
226 for (
int i = 0; i < imax; i++)
230 double u = (vitesse_i(i,j,k) + vitesse_i(i+1, j, k)) * 0.5;
231 double v = (vitesse_j(i,j,k) + vitesse_j(i, j+1, k)) * 0.5;
232 double w = (vitesse_k(i,j,k) + vitesse_k(i, j, k+1)) * 0.5;
233 double p = pression(i,j,k);
234 double T = temperature(i,j,k);
238 double duidx=0., dujdx=0., dukdx=0., duidy=0., dujdy=0., dukdy=0., duidz=0., dujdz=0., dukdz=0., dissip;
245 on_the_first_cell, on_the_last_cell,
248#define AJOUT(somme,val) moy[somme] += val
266 AJOUT(UUU_MOY,u*u*u);
267 AJOUT(VVV_MOY,v*v*v);
268 AJOUT(WWW_MOY,w*w*w);
269 AJOUT(UUV_MOY,u*u*v);
270 AJOUT(WWV_MOY,w*w*v);
272 AJOUT(U4_MOY,u*u*u*u);
273 AJOUT(V4_MOY,v*v*v*v);
274 AJOUT(W4_MOY,w*w*w*w);
276 AJOUT(dUdx_MOY, duidx);
277 AJOUT(dUdy_MOY, duidy);
278 AJOUT(dUdz_MOY, duidz);
279 AJOUT(dVdx_MOY, dujdx);
280 AJOUT(dVdy_MOY, dujdy);
281 AJOUT(dVdz_MOY, dujdz);
282 AJOUT(dWdx_MOY, dukdx);
283 AJOUT(dWdy_MOY, dukdy);
284 AJOUT(dWdz_MOY, dukdz);
285 AJOUT(EPS_MOY, dissip);
286 AJOUT(dUdx2_MOY, duidx*duidx);
287 AJOUT(dUdy2_MOY, duidy*duidy);
288 AJOUT(dUdz2_MOY, duidz*duidz);
289 AJOUT(dVdx2_MOY, dujdx*dujdx);
290 AJOUT(dVdy2_MOY, dujdy*dujdy);
291 AJOUT(dVdz2_MOY, dujdz*dujdz);
292 AJOUT(dWdx2_MOY, dukdx*dukdx);
293 AJOUT(dWdy2_MOY, dukdy*dukdy);
294 AJOUT(dWdz2_MOY, dukdz*dukdz);
305 const int ni_tot = pression.get_domaine().get_nb_elem_tot(DIRECTION_I);
306 const int nj_tot = pression.get_domaine().get_nb_elem_tot(DIRECTION_J);
308 double facteur = 1./(double)(ni_tot * nj_tot);
310 for (
int i = 0; i <
nval_; i++)
311 tmp(k + offset, i) = moy[i] * facteur;
319 for (
int i = 0; i <
nval_; i++)
321 for (
int k = 0; k < nktot; k++)
323 integrale_temporelle_[i][k] += tmp(k, i) * dt;
324 moyenne_spatiale_instantanee_[i][k] = tmp(k, i);
358 for (i = 0; i < n; i++)
359 elem_coord_[i] = (coord_z[i] + coord_z[i+1]) * 0.5;
363 moyenne_spatiale_instantanee_.dimensionner(
nval_);
364 for (i = 0; i <
nval_; i++)
366 moyenne_spatiale_instantanee_[i].resize_array(n);
372 if (integrale_temporelle_.size() == 0)
374 integrale_temporelle_.dimensionner(
nval_);
379 for (i = 0; i <
nval_; i++)
383 if (integrale_temporelle_[i].size_array() != n)
385 Cerr <<
"Erreur dans Statistiques_dns_ijk::initialize: reprise avec mauvais nombre de mailles en z" << finl;
391 integrale_temporelle_[i].resize_array(n);
399 vit_moy_.dimensionner(3);
400 for (i = 0; i < 3; i++)
401 vit_moy_[i].resize_array(n);
403 vit_moy_[0]=integrale_temporelle_[0];
404 vit_moy_[1]=integrale_temporelle_[1];
405 vit_moy_[2]=integrale_temporelle_[40];
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
double get_constant_delta(int direction) const
Returns the size of cells in a direction.
const ArrOfDouble & get_delta(int direction) const
Returns the array of mesh cell sizes in requested direction.
int get_nb_elem_tot(int direction) const
Returns the total (global) number of mesh cells in requested direction.
const ArrOfDouble & get_node_coordinates(int direction) const
Returns an array with the coordinates of all nodes in the mesh in requested direction.
double face_to_cell_gradient(const IJK_Field_double &vitesse_i, const IJK_Field_double &vitesse_j, const IJK_Field_double &vitesse_k, const int i, const int j, const int k, const double dz, double &duidx, double &dujdx, double &dukdx, double &duidy, double &dujdy, double &dukdy, double &duidz, double &dujdz, double &dukdz, const bool on_the_first_cell, const bool on_the_last_cell, const int bc_type) const