source: branches/iLoveclim/SOURCES/New-remplimat/graphique_L2.f90 @ 254

Last change on this file since 254 was 4, checked in by dumas, 10 years ago

initial import GRISLI trunk

File size: 5.2 KB
Line 
1subroutine graphique_L2(kl,ku,nx1,nx2,ny1,ny2,imx,imy)
2
3use  remplimat_declar 
4 
5! fait une sortie graphique des matrices
6!      imx(n1,n2) masque pour imposer les vitesses ou leur dérivee   
7!      imy(n1,n2) masque pour imposer les vitesses ou leur dérivée     
8
9implicit none
10integer,intent(in) :: nx1,nx2        ! bornes du domaine traite
11integer,intent(in) :: ny1,ny2        ! bornes du domaine traite
12integer, dimension(nx1:nx2,ny1:ny2),intent(in)  :: imx    ! masque en entree routine
13integer, dimension(nx1:nx2,ny1:ny2),intent(in)  :: imy    ! masque en entree routine
14
15integer :: kl             ! largeur de bande sous diagonale
16integer :: ku             ! largeur de bande sur diagonale
17integer :: lbande         ! largeur de bande  lbande= kl+ku+1
18integer :: ligne          ! dans L2
19integer :: colonne        ! dans L2
20
21character (len=8) :: klku
22
23!write(6,*) 'dans graphique, kl, ku', kl,ku
24write(klku,'("-",i0,"-",i0)') kl,ku
25
26!write(6,*) 'graphique',klku
27lbande = kl+ku+1
28
29!write(6,*)'eps_col=',eps_col
30
31! matrice L2 : attention, graphiquement ligne est le y et colonne est le x
32
33open(122,file='graph-L2'//trim(klku)) ! fait une sortie graphique de L2 dans un fichier
34
35
36open(123,file='graph-Mat'//trim(klku)) ! fait une sortie graphique de mat dans un fichier
37
38999 format(i0,1x,i0,1x,es12.2,1x,5(i0,1x),es12.2,1x,a2)
39998 format(4(i0,1x),es12.5,1x,4(i0,1x),a2)
40
41
42! write(6,*)'dans graphique'
43do j=ny1,ny2
44   do i=nx1,nx2
45
46uokmat:        if (ok_umat(i,j)) then
47
48!              ilmin et jlmin boucle U
49               ilmin=max(-1,nx1+1-i)  ! pour avoir i+il entre nx1+1 et nx2
50               ilmax=min(1,nx2-i)
51
52               jlmin=max(-1,ny1-j)    ! pour avoir j+jl entre ny1 et ny2
53               jlmax=min(1,ny2-j)
54
55
56
57               do jl = jlmin , jlmax      ! balaye tous les coefficients d'un noeud U de -1 a 1
58                  do il = ilmin , ilmax   !                                           de -1 a 1
59
60! ecriture des Tu
61                     colonne = ligu_L2(i+il,j+jl)
62                     ligne   = ligu_L2(i,j)
63!               write(6,*) i,j,il,jl,ligu_L2(i,j),Tu(i,j,il,jl),'Tu'
64
65                     if (abs(Tu(i,j,il,jl)).gt.eps_col) then
66
67
68
69                        if (colonne.eq.-9999) then
70                           write(6,*) 'dans graph  colonne non affectee'
71                           write(6,*) i,j,il,jl,Tu(i,j,il,jl),ok_umat(i+il,j+jl),ligu_L2(i,j),ligu_L2(i+il,j+jl)
72                        endif
73
74
75                        write(122,998) i,j,ligne,colonne,Tu(i,j,il,jl), & 
76                                       pos_ligu(colonne,1), pos_ligu(colonne,2),il,jl,'Tu'           
77                   
78
79                        write(123,999) lbande+ligne-colonne,colonne,Tu(i,j,il,jl),i,j,il,jl, &
80                                        imx(i,j),Mu(i+il,j+jl,-il,-jl),'Tu'    ! ecriture des Tu
81
82                     endif
83
84! ecriture des Tv
85!               write(6,*) i,j,il,jl,ligu_L2(i,j),Tv(i,j,il,jl),'Tv'
86
87                     if (abs(Tv(i,j,il,jl)).gt.eps_col) then
88                        colonne = ligv_L2(i+il,j+jl)
89                   
90
91                       write(122,998) i,j,ligne,colonne,Tv(i,j,il,jl), & 
92                                       pos_ligv(colonne,1), pos_ligv(colonne,2),il,jl,'Tv'       
93
94                        write(123,999) lbande+ligne-colonne,colonne,Tv(i,j,il,jl), i,j,il,jl, &
95                                       imx(i,j),Mv(i+il,j+jl,-il,-jl),'Tv'              ! ecriture des Tv
96                     end if
97                     
98                  end do
99               end do
100            end if uokmat
101
102vokmat:     if (ok_vmat(i,j)) then
103
104
105
106               !     ilmin et jlmin boucle V
107               ilmin=max(-1,nx1-i)  ! pour avoir i+il entre nx1 et nx2
108               ilmax=min(1,nx2-i)
109
110               jlmin=max(-1,ny1+1-j)    ! pour avoir j+jl entre ny1+1 et ny2
111               jlmax=min(1,ny2-j)
112
113               do jl = jlmin , jlmax      ! balaye tous les coefficients d'un noeud U de -1 a 1
114                  do il = ilmin , ilmax   !                                           de -1 a 1
115
116
117! ecriture des Su   
118            ligne   = ligv_L2(i,j)
119            colonne = ligu_L2(i+il,j+jl)
120
121!               write(6,*) i,j,il,jl,ligv_L2(i,j),Su(i,j,il,jl),'Su'
122
123
124            if (abs(Su(i,j,il,jl)).gt.eps_col) then
125
126
127               write(122,998) i,j,ligne,colonne,Su(i,j,il,jl), &
128                               pos_ligu(colonne,1), pos_ligu(colonne,2),il,jl,'Su'           
129
130               write(123,999) lbande+ligne-colonne,colonne,Su(i,j,il,jl),i,j,il,jl, & 
131                               imy(i,j),Nu(i+il,j+jl,-il,-jl),'Su'              ! ecriture des Su
132
133            end if
134
135! ecriture des Sv
136
137!               write(6,*) i,j,il,jl,ligv_L2(i,j),Sv(i,j,il,jl),'Sv'
138
139               colonne = ligv_L2(i+il,j+jl)
140           
141            if (abs(Sv(i,j,il,jl)).gt.eps_col) then
142
143               write(122,998) i,j,ligne,colonne,Sv(i,j,il,jl), & 
144                              pos_ligv(colonne,1), pos_ligv(colonne,2),il,jl,'Sv'   
145
146               write(123,999) lbande+ligne-colonne,colonne,Sv(i,j,il,jl),i,j,il,jl, & 
147                             imy(i,j),Nv(i+il,j+jl,-il,-jl),'Sv'              ! ecriture des Sv
148
149            end if
150
151         end do
152      end do
153   end if vokmat
154end do
155end do
156
157close(122) 
158close(123)       
159
160
161return
162end subroutine graphique_L2
Note: See TracBrowser for help on using the repository browser.