176 const _TYPE_ delta_i = (_TYPE_)local_delta_xyz_[0][0];
177 const _TYPE_ i_delta_i = (_TYPE_)(1. / local_delta_xyz_[0][0]);
178#define DELTA_i delta_i
179#define invDELTA_i i_delta_i
181 const _TYPE_ delta_j = (_TYPE_)local_delta_xyz_[1][0];
182 const _TYPE_ i_delta_j = (_TYPE_)(1. / local_delta_xyz_[1][0]);
183#define DELTA_j delta_j
184#define invDELTA_j i_delta_j
186 const _TYPE_ delta_k = (_TYPE_)local_delta_xyz_[2][0];
187 const _TYPE_ i_delta_k = (_TYPE_)(1. / local_delta_xyz_[2][0]);
188#define DELTA_k delta_k
189#define invDELTA_k i_delta_k
193 const int nb_ghost_layers_rho =
ijk_rho_.ghost();
194 const int ghost = nb_ghost_layers_rho - 1;
195 const int imin = - ghost;
196 const int imax =
ijk_rho_.ni() + ghost;
197 const int jmin = - ghost;
198 const int jmax =
ijk_rho_.nj() + ghost;
199 const int kmin = - ghost;
200 const int kmax =
ijk_rho_.nk() + ghost;
202 for (
int k = kmin; k < kmax + 1; k++)
205 const bool compute_k_direction_only = (k == kmax);
206 if (!compute_k_direction_only)
210 const _TYPE_ *src_rho =
ijk_rho_.k_layer(k);
213 for (
int j = jmin; j < jmax; j++)
215 for (
int i = imin; i < imax+1; i++)
217 const _TYPE_ rho = (_TYPE_)(2. / (layout(src_rho, i-1, j) + layout(src_rho, i, j)));
218 const _TYPE_ f = invDELTA_i * DELTA_j * DELTA_k;
219 layout(coeff, i, j) = rho * f;
226 for (
int j = jmin; j < jmax+1; j++)
228 for (
int i = imin; i < imax; i++)
230 const _TYPE_ rho = _TYPE_(2. / (layout(src_rho, i, j-1) + layout(src_rho, i, j)));
231 const _TYPE_ f = DELTA_i * invDELTA_j * DELTA_k;
232 layout(coeff, i, j) = rho * f;
241 const int global_k_pos = k +
domaine_ijk_.get_offset_local(DIRECTION_K);
243 const int global_k_size =
domaine_ijk_.get_nb_elem_tot(DIRECTION_K);
245 if (!
perio_k_ && (global_k_pos <= 0 || global_k_pos >= global_k_size))
248 for (
int i = imin; i < imax; i++)
249 for (
int j = jmin; j < jmax; j++)
250 layout(coeff, i, j) = 0.;
254 const _TYPE_ *src_rho_left =
ijk_rho_.k_layer(k-1);
255 const _TYPE_ *src_rho_right =
ijk_rho_.k_layer(k);
256 for (
int j = jmin; j < jmax; j++)
258 for (
int i = imin; i < imax; i++)
260 const _TYPE_ rho = (_TYPE_)(2. / (layout(src_rho_left, i, j) + layout(src_rho_right, i, j)));
261 const _TYPE_ f = DELTA_i * DELTA_j * invDELTA_k;
262 layout(coeff, i, j) = rho * f;
276 for (
int i = imin; i < imax; i++)
277 for (
int j = jmin; j < jmax; j++)
280 layout(coeff_i, i, j) + layout(coeff_i, i+1, j)
281 + layout(coeff_j, i, j) + layout(coeff_j, i, j+1)
282 + layout(coeff_k, i, j) + layout(coeff_kplus, i, j);
287 layout(coeff_sum, i, j) = s;
303 const _TYPE_ delta_i = (_TYPE_)local_delta_xyz_[0][0];
304 const _TYPE_ i_delta_i = (_TYPE_)(1. / local_delta_xyz_[0][0]);
305#define DELTA_i delta_i
306#define invDELTA_i i_delta_i
308 const _TYPE_ delta_j = (_TYPE_)local_delta_xyz_[1][0];
309 const _TYPE_ i_delta_j = (_TYPE_)(1. / local_delta_xyz_[1][0]);
310#define DELTA_j delta_j
311#define invDELTA_j i_delta_j
313 const _TYPE_ delta_k = (_TYPE_)local_delta_xyz_[2][0];
314 const _TYPE_ i_delta_k = (_TYPE_)(1. / local_delta_xyz_[2][0]);
315#define DELTA_k delta_k
316#define invDELTA_k i_delta_k
320 const int nb_ghost_layers_rho =
ijk_rho_.ghost();
321 const int ghost = nb_ghost_layers_rho - 1;
322 const int imin = - ghost;
323 const int imax =
ijk_rho_.ni() + ghost;
324 const int jmin = - ghost;
325 const int jmax =
ijk_rho_.nj() + ghost;
326 const int kmin = - ghost;
327 const int kmax =
ijk_rho_.nk() + ghost;
329 for (
int k = kmin; k < kmax + 1; k++)
332 const bool compute_k_direction_only = (k == kmax);
333 if (!compute_k_direction_only)
337 const _TYPE_ *src_rho =
ijk_rho_.k_layer(k);
340 for (
int j = jmin; j < jmax; j++)
342 for (
int i = imin; i < imax+1; i++)
344 const _TYPE_ rho = (_TYPE_)(0.5 * (layout(src_rho, i-1, j) + layout(src_rho, i, j)));
345 const _TYPE_ f = invDELTA_i * DELTA_j * DELTA_k;
346 layout(coeff, i, j) = rho * f;
353 for (
int j = jmin; j < jmax+1; j++)
355 for (
int i = imin; i < imax; i++)
357 const _TYPE_ rho = (_TYPE_)(0.5 * (layout(src_rho, i, j-1) + layout(src_rho, i, j)));
358 const _TYPE_ f = DELTA_i * invDELTA_j * DELTA_k;
359 layout(coeff, i, j) = rho * f;
368 const int global_k_pos = k +
domaine_ijk_.get_offset_local(DIRECTION_K);
370 const int global_k_size =
domaine_ijk_.get_nb_elem_tot(DIRECTION_K);
372 if (!
perio_k_ && (global_k_pos <= 0 || global_k_pos >= global_k_size))
375 for (
int i = imin; i < imax; i++)
376 for (
int j = jmin; j < jmax; j++)
377 layout(coeff, i, j) = 0.;
381 const _TYPE_ *src_rho_left =
ijk_rho_.k_layer(k-1);
382 const _TYPE_ *src_rho_right =
ijk_rho_.k_layer(k);
383 for (
int j = jmin; j < jmax; j++)
385 for (
int i = imin; i < imax; i++)
387 const _TYPE_ rho = (_TYPE_)(0.5 * (layout(src_rho_left, i, j) + layout(src_rho_right, i, j)));
388 const _TYPE_ f = DELTA_i * DELTA_j * invDELTA_k;
389 layout(coeff, i, j) = rho * f;
403 for (
int i = imin; i < imax; i++)
404 for (
int j = jmin; j < jmax; j++)
407 layout(coeff_i, i, j) + layout(coeff_i, i+1, j)
408 + layout(coeff_j, i, j) + layout(coeff_j, i, j+1)
409 + layout(coeff_k, i, j) + layout(coeff_kplus, i, j);
414 layout(coeff_sum, i, j) = s;
430 const _TYPE_ delta_i = (_TYPE_)local_delta_xyz_[0][0];
431 const _TYPE_ i_delta_i = (_TYPE_)(1. / local_delta_xyz_[0][0]);
432#define DELTA_i delta_i
433#define invDELTA_i i_delta_i
435 const _TYPE_ delta_j = (_TYPE_)local_delta_xyz_[1][0];
436 const _TYPE_ i_delta_j = (_TYPE_)(1. / local_delta_xyz_[1][0]);
437#define DELTA_j delta_j
438#define invDELTA_j i_delta_j
447 delta_k_array.
resize(n, ghost);
448 i_delta_k_array.
resize(n, ghost);
449 const int imin = -ghost + 1;
450 const int imax = n + ghost;
451 delta_k_array[-ghost] = (_TYPE_)local_delta_xyz_[2][-ghost];
452 for (
int i = imin; i < imax; i++)
454 delta_k_array[i] = (_TYPE_)local_delta_xyz_[2][i];
455 _TYPE_ x = delta_k_array[i-1];
456 _TYPE_ y = delta_k_array[i];
457 i_delta_k_array[i] = (_TYPE_)(2. / (x+y));
460#define DELTA_k delta_k_array[k]
461#define invDELTA_k i_delta_k_array[k]
465 const int nb_ghost_layers_rho =
ijk_rho_.ghost();
466 const int ghost = nb_ghost_layers_rho - 1;
467 const int imin = - ghost;
468 const int imax =
ijk_rho_.ni() + ghost;
469 const int jmin = - ghost;
470 const int jmax =
ijk_rho_.nj() + ghost;
471 const int kmin = - ghost;
472 const int kmax =
ijk_rho_.nk() + ghost;
474 for (
int k = kmin; k < kmax + 1; k++)
477 const bool compute_k_direction_only = (k == kmax);
478 if (!compute_k_direction_only)
482 const _TYPE_ *src_rho =
ijk_rho_.k_layer(k);
485 for (
int j = jmin; j < jmax; j++)
487 for (
int i = imin; i < imax+1; i++)
489 const _TYPE_ rho = (_TYPE_)(2. / (layout(src_rho, i-1, j) + layout(src_rho, i, j)));
490 const _TYPE_ f = invDELTA_i * DELTA_j * DELTA_k;
491 layout(coeff, i, j) = rho * f;
498 for (
int j = jmin; j < jmax+1; j++)
500 for (
int i = imin; i < imax; i++)
502 const _TYPE_ rho = _TYPE_(2. / (layout(src_rho, i, j-1) + layout(src_rho, i, j)));
503 const _TYPE_ f = DELTA_i * invDELTA_j * DELTA_k;
504 layout(coeff, i, j) = rho * f;
513 const int global_k_pos = k +
domaine_ijk_.get_offset_local(DIRECTION_K);
515 const int global_k_size =
domaine_ijk_.get_nb_elem_tot(DIRECTION_K);
517 if (!
perio_k_ && (global_k_pos <= 0 || global_k_pos >= global_k_size))
520 for (
int i = imin; i < imax; i++)
521 for (
int j = jmin; j < jmax; j++)
522 layout(coeff, i, j) = 0.;
526 const _TYPE_ *src_rho_left =
ijk_rho_.k_layer(k-1);
527 const _TYPE_ *src_rho_right =
ijk_rho_.k_layer(k);
528 for (
int j = jmin; j < jmax; j++)
530 for (
int i = imin; i < imax; i++)
532 const _TYPE_ rho = (_TYPE_)(2. / (layout(src_rho_left, i, j) + layout(src_rho_right, i, j)));
533 const _TYPE_ f = DELTA_i * DELTA_j * invDELTA_k;
534 layout(coeff, i, j) = rho * f;
548 for (
int i = imin; i < imax; i++)
549 for (
int j = jmin; j < jmax; j++)
552 layout(coeff_i, i, j) + layout(coeff_i, i+1, j)
553 + layout(coeff_j, i, j) + layout(coeff_j, i, j+1)
554 + layout(coeff_k, i, j) + layout(coeff_kplus, i, j);
559 layout(coeff_sum, i, j) = s;
575 const _TYPE_ delta_i = (_TYPE_)local_delta_xyz_[0][0];
576 const _TYPE_ i_delta_i = (_TYPE_)(1. / local_delta_xyz_[0][0]);
577#define DELTA_i delta_i
578#define invDELTA_i i_delta_i
580 const _TYPE_ delta_j = (_TYPE_)local_delta_xyz_[1][0];
581 const _TYPE_ i_delta_j = (_TYPE_)(1. / local_delta_xyz_[1][0]);
582#define DELTA_j delta_j
583#define invDELTA_j i_delta_j
592 delta_k_array.
resize(n, ghost);
593 i_delta_k_array.
resize(n, ghost);
594 const int imin = -ghost + 1;
595 const int imax = n + ghost;
596 delta_k_array[-ghost] = (_TYPE_)local_delta_xyz_[2][-ghost];
597 for (
int i = imin; i < imax; i++)
599 delta_k_array[i] = (_TYPE_)local_delta_xyz_[2][i];
600 _TYPE_ x = delta_k_array[i-1];
601 _TYPE_ y = delta_k_array[i];
602 i_delta_k_array[i] = (_TYPE_)(2. / (x+y));
605#define DELTA_k delta_k_array[k]
606#define invDELTA_k i_delta_k_array[k]
610 const int nb_ghost_layers_rho =
ijk_rho_.ghost();
611 const int ghost = nb_ghost_layers_rho - 1;
612 const int imin = - ghost;
613 const int imax =
ijk_rho_.ni() + ghost;
614 const int jmin = - ghost;
615 const int jmax =
ijk_rho_.nj() + ghost;
616 const int kmin = - ghost;
617 const int kmax =
ijk_rho_.nk() + ghost;
619 for (
int k = kmin; k < kmax + 1; k++)
622 const bool compute_k_direction_only = (k == kmax);
623 if (!compute_k_direction_only)
627 const _TYPE_ *src_rho =
ijk_rho_.k_layer(k);
630 for (
int j = jmin; j < jmax; j++)
632 for (
int i = imin; i < imax+1; i++)
634 const _TYPE_ rho = (_TYPE_)(0.5 * (layout(src_rho, i-1, j) + layout(src_rho, i, j)));
635 const _TYPE_ f = invDELTA_i * DELTA_j * DELTA_k;
636 layout(coeff, i, j) = rho * f;
643 for (
int j = jmin; j < jmax+1; j++)
645 for (
int i = imin; i < imax; i++)
647 const _TYPE_ rho = (_TYPE_)(0.5 * (layout(src_rho, i, j-1) + layout(src_rho, i, j)));
648 const _TYPE_ f = DELTA_i * invDELTA_j * DELTA_k;
649 layout(coeff, i, j) = rho * f;
658 const int global_k_pos = k +
domaine_ijk_.get_offset_local(DIRECTION_K);
660 const int global_k_size =
domaine_ijk_.get_nb_elem_tot(DIRECTION_K);
662 if (!
perio_k_ && (global_k_pos <= 0 || global_k_pos >= global_k_size))
665 for (
int i = imin; i < imax; i++)
666 for (
int j = jmin; j < jmax; j++)
667 layout(coeff, i, j) = 0.;
671 const _TYPE_ *src_rho_left =
ijk_rho_.k_layer(k-1);
672 const _TYPE_ *src_rho_right =
ijk_rho_.k_layer(k);
673 for (
int j = jmin; j < jmax; j++)
675 for (
int i = imin; i < imax; i++)
677 const _TYPE_ rho = (_TYPE_)(0.5 * (layout(src_rho_left, i, j) + layout(src_rho_right, i, j)));
678 const _TYPE_ f = DELTA_i * DELTA_j * invDELTA_k;
679 layout(coeff, i, j) = rho * f;
693 for (
int i = imin; i < imax; i++)
694 for (
int j = jmin; j < jmax; j++)
697 layout(coeff_i, i, j) + layout(coeff_i, i+1, j)
698 + layout(coeff_j, i, j) + layout(coeff_j, i, j+1)
699 + layout(coeff_k, i, j) + layout(coeff_kplus, i, j);
704 layout(coeff_sum, i, j) = s;
725 const int nb_ghost_layers_rho =
ijk_rho_.ghost();
726 const int ghost = nb_ghost_layers_rho;
728 const int imin = - ghost + 1;
729 const int jmin = - ghost + 1;
731 const int kmin = - ghost + 1;
732 const int kmax =
ijk_rho_.nk() + ghost;
733 for (
int k = kmin; k < kmax; k++)
734 for (
int compo = 0; compo < 4; compo++)
736 int imax = ni + ghost - 1;
737 int jmax = nj + ghost - 1;
738 if (k == (kmax-1) && compo != 2 )
747 for (
int j = jmin; j < jmax; j++)
748 for (
int i = imin; i < imax; i++)
This class encapsulates all the information related to the eulerian mesh for TrioIJK.
bool get_periodic_flag(int direction) const
Method returns true if periodic in this direction.
void allocate(const Domaine_IJK &d, Domaine_IJK::Localisation l, int ghost_size, int additional_k_layers=0, int nb_compo=1, const Nom &name=Nom(), bool external_storage=false, int monofluide=0, double rov=0., double rol=0., int use_inv_rho_in_pressure_solver=0)