1 | module remplimat_declar |
---|
2 | |
---|
3 | ! ce module sert à déclarer et à initialiser tous les tableaux |
---|
4 | ! de la matrice "equation elliptique". Ces tableaux sont locaux à remplidom |
---|
5 | ! et aux routines de conditions aux limites. |
---|
6 | |
---|
7 | ! dans cette version les tableaux Tuij, ... sont à 4 dimensions |
---|
8 | |
---|
9 | |
---|
10 | |
---|
11 | use module3d_phy |
---|
12 | |
---|
13 | implicit none |
---|
14 | |
---|
15 | integer,parameter :: nflmax=2*nx*ny ! nb. maxi de noeuds dans l'eq. elliptique. |
---|
16 | |
---|
17 | |
---|
18 | ! les tableaux declares ici sont sur nx,ny mais seul le domaine |
---|
19 | ! nx1,nx2,ny1,ny2 est vraiment utilise. |
---|
20 | |
---|
21 | |
---|
22 | ! Coefficients de l'équation elliptique pour le calcul de u (ux) |
---|
23 | !--------------------------------------------------------------------- |
---|
24 | ! l'equation pour U(i,j) s'ecrit |
---|
25 | |
---|
26 | ! somme (Tu(i,j,itu,jtu))+ somme(Tv(i,j,itv,jtv)) = opposx(i,j) |
---|
27 | ! avec itu et jtu : -1,0,1 |
---|
28 | ! itv : -1,0 et jtv : 0,1 |
---|
29 | ! on dimensionne cependant tous ces tableaux de -1 a 1 pour les coins de la grille |
---|
30 | |
---|
31 | |
---|
32 | integer :: il,jl ! indices pour les tableaux Tu,... Mu ... |
---|
33 | integer :: ilmin,ilmax ! bornes des boucles sur il et jl |
---|
34 | integer :: jlmin,jlmax |
---|
35 | |
---|
36 | |
---|
37 | real :: eps_col=1.e-5 ! pour les tests : ~0 |
---|
38 | |
---|
39 | ! Les tableaux Tu, Tv, Su, Sv donnent les coefficients pour l'equation en U et V |
---|
40 | ! Ce sont les lignes de la matrice L2 |
---|
41 | |
---|
42 | ! coefficients pour l'équation en U |
---|
43 | real,dimension(nx,ny,-1:1,-1:1) :: Tu ! coefficients des vitesses U |
---|
44 | real,dimension(nx,ny,-1:1,-1:1) :: Tv ! coefficients des vitesses V |
---|
45 | real,dimension(nx,ny) :: opposx ! pression latérale |
---|
46 | |
---|
47 | ! idem avec permutation i-j pour V(i,j) avec Su et Sv |
---|
48 | |
---|
49 | ! coefficients pour l'équation en V |
---|
50 | real,dimension(nx,ny,-1:1,-1:1) :: Su ! coefficients des vitesses U |
---|
51 | real,dimension(nx,ny,-1:1,-1:1) :: Sv ! coefficients des vitesses V |
---|
52 | real,dimension(nx,ny) :: opposy ! pression latérale |
---|
53 | |
---|
54 | |
---|
55 | ! Les tableaux Mu, Mv, Nu,Nv donnent des indications sur le remplissage des |
---|
56 | ! colonnes de la matrice L2, |
---|
57 | ! pour déterminer si un noeud est vraiment utilise par d'autres. |
---|
58 | |
---|
59 | real,dimension(nx,ny,-1:1,-1:1) :: Mu ! noeuds U utilisant la vitesse U |
---|
60 | real,dimension(nx,ny,-1:1,-1:1) :: Mv ! noeuds V utilisant la vitesse U |
---|
61 | real,dimension(nx,ny,-1:1,-1:1) :: Nu ! noeuds U utilisant la vitesse V |
---|
62 | real,dimension(nx,ny,-1:1,-1:1) :: Nv ! noeuds V utilisant la vitesse V |
---|
63 | |
---|
64 | real,dimension(nx,ny) :: diagU ! tableau de travail (diagonale de L2) |
---|
65 | real,dimension(nx,ny) :: diagV ! tableau detravail (diagonale de L2) |
---|
66 | |
---|
67 | ! pour compter les lignes |
---|
68 | |
---|
69 | integer :: count_line ! variable de travail pour compter les lignes |
---|
70 | integer, dimension(nx,ny) :: ligu_L2 ! numero de la ligne Uij dans la matrice complete |
---|
71 | integer, dimension(nx,ny) :: ligv_L2 ! numero de la ligne Vij dans la matrice complete |
---|
72 | integer,dimension(nflmax,2) :: pos_ligu ! position i,j d'un noeud U en position l dans la matrice L2 |
---|
73 | integer,dimension(nflmax,2) :: pos_ligv ! position i,j d'un noeud V en position l dans la matrice L2 |
---|
74 | |
---|
75 | |
---|
76 | logical,dimension(nx,ny) :: ok_umat ! vrai si participe a l'equation elliptique |
---|
77 | logical,dimension(nx,ny) :: ok_vmat ! vrai si participe a l'equation elliptique |
---|
78 | logical,dimension(nx,ny) :: ghost_x ! vrai si noeud fantome (H=1) |
---|
79 | logical,dimension(nx,ny) :: ghost_y ! vrai si noeud fantome (H=1) |
---|
80 | |
---|
81 | end module remplimat_declar |
---|
82 | |
---|