source: trunk/SOURCES/Greeneem_files/lect-greeneem_mod.f90 @ 13

Last change on this file since 13 was 13, checked in by dumas, 9 years ago

Region Greeneem15 validee. Correction de bug sur les sorties NetCDF. output_hemin40_mod-0.4.f90 devient output_hemin40_mod.f90

File size: 5.3 KB
Line 
1module lect_topo_greeneem
2
3use module3D_phy
4use param_phy_mod 
5
6character(len=100) :: topo_dep       ! Topo de départ
7character(len=100) :: topo_ref       ! Topo de référence
8character(len=100) :: grid_topo      ! fichier grille
9character(len=100) :: ghf_fich       ! fichier grille
10character(len=100) :: filin
11real, dimension(nx,ny,5) :: bidon        ! pour l'appel a courbure
12!real :: ghf0                             ! flux geothermique constant en mW/m2
13
14integer :: n1,n2,ndx
15
16contains
17 
18subroutine input_topo
19
20namelist/toponeem/topo_ref,topo_dep,grid_topo,ghf_fich
21
22428 format(A)
23
24rewind(num_param)        ! pour revenir au debut du fichier param_list.dat
25
26read(num_param,toponeem)
27
28write(num_rep_42,428)'!___________________________________________________________' 
29write(num_rep_42,428) '&toponeen                     ! module lect_topo_greeneem'
30write(num_rep_42,'(A,A)')   'topo_ref  =', topo_ref
31write(num_rep_42,'(A,A)')   'topo_dep  =', topo_dep
32write(num_rep_42,'(A,A)')   'grid_topo =', grid_topo
33write(num_rep_42,*)         'ghf_fich  =', ghf_fich
34write(num_rep_42,*)'/'                     
35write(num_rep_42,428) '! topo_ref= topo actuelle'
36write(num_rep_42,428) '! ghf0 flux geothermique en mW/m2'
37write(num_rep_42,428) '! grid_topo : fichier i,j,x,y,lon,lat'
38write(num_rep_42,428) '! ghf_fich  : fichier flux geothermique'
39write(num_rep_42,*)
40
41
42topo_ref=trim(dirnameinp)//trim(topo_ref) 
43topo_dep=trim(dirnameinp)//trim(topo_dep) 
44grid_topo=trim(dirnameinp)//trim(grid_topo)
45ghf_fich=trim(dirnameinp)//trim(ghf_fich)!trim(ghf0)
46
47sealevel0=0.  ! voir a passer dans le fichier parametre
48
49!     lecture de la topo de référence
50!     -------------------------------
51! Cette topo sert a calculer le socle de reference pour l'isostasie
52! voir init_iso et a avoir une surface de reference pour les temperatures
53
54     open (20,file=topo_ref)
55
56     read(20,*) 
57     read(20,*) 
58     read(20,*) n1,n2,ndx
59     read(20,*) 
60
61     if ((n1.eq.nx).and.(n2.eq.ny).and.(ndx.eq.nint(dx/1000.))) then
62                               ! le fichier correspond bien a
63                               ! la grille definie dans paradim
64         do J=1,ny 
65          do I=1,nx
66              read (20,*) S0(I,J),H0(I,J),BSOC0(I,J)
67              S0(i,j)=max(S0(i,j),sealevel0)   ! pour etre au niveau des mers : ATTENTION si SEALEV <0
68          end do
69        end do
70 
71     else
72        write(6,*) 'le fichier ne correspond pas a la grille definie'
73        STOP
74     end if
75     close(20)
76
77     mk0(:,:) = 1                   ! mk0=0 pour les zones interdites
78     
79!     lecture de la topo de depart
80!     ---------------------------
81     open (20,file=topo_dep)
82
83     read(20,*) 
84     read(20,*) 
85     read(20,*) n1,n2,ndx
86     read(20,*) 
87
88
89     if ((n1.eq.nx).and.(n2.eq.ny).and.(ndx.eq.nint(dx/1000.))) then
90                               ! le fichier correspond bien a
91                               ! la grille definie dans paradim
92 
93         do J=1,ny 
94          do I=1,nx
95              read (20,*) S(I,J),H(I,J),BSOC(I,J)
96              S(i,j)=max(S(i,j),0.)   ! pour etre au niveau des mers : ATTENTION si SEALEV <0
97              H(i,j)=max(H(i,j),1.)   ! pour avoir au moins 1 m
98          end do
99        end do
100 
101     else
102        write(6,*) 'le fichier ne correspond pas a la grille definie'
103        STOP
104     end if
105     close(20)
106
107! calcul de flottaison
108do j=1,ny
109   do i=1,nx
110
111      archim = Bsoc(i,j)+H(i,j)*ro/row -sealevel
112
113      if ((ARCHIM.LT.0.).and.(H(I,J).gt.1.E-3)) then    ! le point flotte
114         flot(i,j)=.true.
115      else
116         flot(i,j)=.false.
117      end if
118   
119   end do
120end do
121
122! lecture des coordonnées geographiques
123
124
125! les fichiers EISMINT etaient ranges i,j,lat,lon
126! je n'arrive pas a retrouver la projection exacte.
127! le x est donc calcule en partant de 0, 0
128
129open(unit=20,file=grid_topo,iostat=ios)
130read(20,*) 
131read(20,*) 
132read(20,*) n1,n2,ndx
133read(20,*) 
134
135if ((n1.eq.nx).and.(n2.eq.ny).and.(ndx.eq.nint(dx/1000.))) then
136   ! le fichier correspond bien a
137   ! la grille definie dans paradim
138   
139   do k=1,nx*ny
140      read(20,*) i,j,xcc(i,j),ycc(i,j),xlong(i,j),ylat(i,j)
141   enddo
142   ! pour assurer la continuite des temperatures parametrees :
143   where(xlong(:,:).lt.100.)   
144      xlong(:,:)=xlong(:,:)+360.
145   end where
146   
147else
148   write(6,*) 'le fichier ne correspond pas a la grille definie'
149   STOP
150end if
151close(20)
152
153! xcc est en m
154xmin=xcc(1,1)
155ymin=ycc(1,1)
156do j=1,ny
157   do i=1,nx
158      xcc(i,j)=xcc(i,j)*1000.
159      ycc(i,j)=ycc(i,j)*1000.
160   end do
161end do
162xmax=xcc(nx,ny)/1000
163ymax=ycc(nx,ny)/1000
164
165! lecture de la carte de flux geothermique
166open (20,file=ghf_fich)
167read(20,*) n1,n2,ndx
168if ((n1.eq.nx).and.(n2.eq.ny).and.(ndx.eq.nint(dx/1000.))) then
169                               ! le fichier correspond bien a
170                               ! la grille definie dans paradim
171   do j=1,ny
172      do i=1,nx
173         read(20,*) ghf(i,j)
174      end do
175   end do
176   close(20)
177else
178   write(6,*) 'le fichier ne correspond pas a la grille definie'
179   STOP
180end if
181
182
183!  flux geothermique  : pour passer les flux des mW/m2 aux J/m2/an     
184ghf(:,:)=-secyear*ghf(:,:)
185!ghf(:,:)=-secyear*50.0/1000.   !ghf0 ! pour flux constant
186
187
188
189! calcul des courbures du socle
190call courbure(nx,ny,dx,Bsoc,bidon(:,:,1),bidon(:,:,2),bidon(:,:,3), &
191     bidon(:,:,4),socle_cry,bidon(:,:,5))
192socle_cry(:,:)=socle_cry(:,:)*dx*dx
193   
194!------------------------------------------------     
195end subroutine input_topo
196
197
198end module lect_topo_greeneem
Note: See TracBrowser for help on using the repository browser.