source: branches/GRISLIv3/SOURCES/Laure16_files/lect-laurentide_mod.f90 @ 465

Last change on this file since 465 was 465, checked in by aquiquet, 4 months ago

Cleaning branch: start cleaning module3D

File size: 5.7 KB
Line 
1module lect_topo_laurentide
2
3  use module3D_phy
4  use interface_input
5  use io_netcdf_grisli
6
7  implicit none
8 
9  character(len=100) :: topo_dep       ! Topo de départ
10  character(len=100) :: topo_ref       ! Topo de référence
11  character(len=100) :: grid_topo      ! fichier grille
12  character(len=100) :: ghf_fich       ! fichier grille
13  character(len=80) :: filin
14  real, dimension(nx,ny,5) :: bidon          ! pour l'appel a courbure
15  character(len=100) :: file_ncdf      !< fichier netcdf issue des fichiers .dat
16
17contains
18 
19subroutine input_topo
20
21  use geography, only: dirnameinp
22  use runparam, only: xmin,xmax,ymin,ymax
23
24  integer :: i,j,k,ios
25  real, dimension(nx,ny) :: varloc
26 
27  namelist/topo_file/topo_ref,topo_dep,grid_topo,ghf_fich
28  rewind(num_param)        ! pour revenir au debut du fichier param_list.dat
29  read(num_param,topo_file)
30
31  write(num_rep_42,'(A)')'!___________________________________________________________' 
32  write(num_rep_42,'(A)') '&topo_file                                  ! nom du bloc '
33  write(num_rep_42,*)
34  write(num_rep_42,'(A,A,A)') 'topo_ref = "',trim(topo_ref),'"'
35  write(num_rep_42,'(A,A,A)') 'topo_dep = "',trim(topo_dep),'"'
36  write(num_rep_42,'(A,A,A)') 'grid_topo = "',trim(grid_topo),'"'
37  write(num_rep_42,'(A,A,A)') 'ghf_fich = "',trim(ghf_fich),'"'
38  write(num_rep_42,*)'/'                     
39  write(num_rep_42,'(A)') '! topo_ref= topo ref isostasie'
40  write(num_rep_42,'(A)') '! topo_dep= topo de depart'
41  write(num_rep_42,'(A)') '! grid_topo : fichier i,j,x,y,lon,lat'
42  write(num_rep_42,'(A)') '! ghf_fich  : fichier flux geothermique' 
43  write(num_rep_42,*)
44
45  topo_ref=trim(dirnameinp)//trim(topo_ref) 
46  topo_dep=trim(dirnameinp)//trim(topo_dep) 
47  grid_topo=trim(dirnameinp)//trim(grid_topo)
48  ghf_fich=trim(dirnameinp)//trim(ghf_fich)
49
50!write(num_rep_42,*) 'file1 = ', file1
51!write(num_rep_42,*) 'file2 = ', file2
52!write(num_rep_42,*)'/'
53!write(num_rep_42,428) '! file1 : topo de depart'
54!write(num_rep_42,428) '! file2 : topo de reference'             
55!write(num_rep_42,*)
56
57!====================================== La reponse est 42 ===========
58! write(42,*)
59! write(42,*)' Fichiers en entree'
60! write(42,*)'----------------------'
61!====================================================================
62
63! dans param :
64!      file1=TRIM(DIRNAMEINP)//'topo-21k.g40'     ! topo LGM ICE_5G (1=topo de depart)
65!      file1=TRIM(DIRNAMEINP)//'hemin2.g40'
66!      file2=TRIM(DIRNAMEINP)//'hemin2.g40'       ! topo actuelle
67!      write(42,*) 'topo de depart', file1
68!      write(42,*) 'topo reference', file2
69
70     
71!!$! lecture adaptee aux fichiers intercomparaison EISMINT
72!!$       nxx=nx
73!!$       nyy=ny
74
75!!$!     lecture de la topo actuelle
76!!$!     ---------------------------
77!!$     open (20,file=TRIM(DIRNAMEINP)//file2,status='old')
78!!$       
79!!$     read(20,'(A80)') TITRE
80!!$     read(20,*) NI,NJ,NXX,NYY,STEP
81!!$     read(20,*)
82!!$         do J=1,ny
83!!$          do I=1,nx
84!!$             read (20,*)  S0(I,J),H0(I,J),BSOC0(I,J)
85!!$             S0(i,j)=max(S0(i,j),0.)
86!!$          end do
87!!$        end do
88!!$     close(20)
89!!$
90!!$     
91!!$!     lecture de la topo de depart
92!!$!     ---------------------------
93!!$     open (20,file=TRIM(DIRNAMEINP)//file1,status='old')
94!!$!         open (20,file='../INPUT-DATA/hemin.g50')
95!!$     read(20,'(A80)') TITRE
96!!$     read(20,*) NI,NJ,NXX,NYY,STEP
97!!$     read(20,*)
98!!$         do J=1,ny
99!!$          do I=1,nx
100!!$             read (20,*) S(I,J),H(I,J),BSOC(I,J)
101!!$          end do
102!!$        end do
103!!$     close(20)
104
105
106!     lecture de la topo de référence
107  call lect_input(1,'Bsoc',1,varloc,topo_ref,file_ncdf)    ! socle
108  Bsoc0(:,:)=varloc(:,:)
109  call lect_input(1,'S',1,varloc,topo_ref,file_ncdf)          ! surface
110  S0(:,:)=varloc(:,:)
111  call lect_input(1,'H',1,varloc,topo_ref,file_ncdf)          ! epaisseur
112  H0(:,:)=varloc(:,:)
113 
114!     lecture de la topo de départ
115  call lect_input(1,'Bsoc',1,varloc,topo_dep,file_ncdf)    ! socle
116  Bsoc(:,:)=varloc(:,:)
117  call lect_input(1,'S',1,varloc,topo_dep,file_ncdf)          ! surface
118  S(:,:)=varloc(:,:)
119  call lect_input(1,'H',1,varloc,topo_dep,file_ncdf)          ! epaisseur
120  H(:,:)=varloc(:,:)
121
122
123! calcul des courbures du socle
124!     call courbure(nx,ny,dx,Bsoc,bidon(:,:,1),bidon(:,:,2),bidon(:,:,3), &
125!          bidon(:,:,4),socle_cry,bidon(:,:,5))
126!     socle_cry(:,:)=socle_cry(:,:)*dx*dx
127
128! lecture des coordonnées geographiques
129
130!    filin=TRIM(DIRNAMEINP)//grid_topo
131
132! les coordonnees sont calculees en °dec avec GMT,
133! les longitudes sont comprises entre -180 et +180 (negative a l'Ouest de
134! Greenwich et positive a l'Est)
135  open(unit=2004,file=grid_topo,iostat=ios)
136  do k=1,nx*ny
137     read(2004,*) i,j,XCC(i,j),YCC(i,j),XLONG(i,j),YLAT(i,j)
138  enddo
139  close(2004)
140
141  where(xlong(:,:).lt.0.) xlong(:,:)=xlong(:,:)+360
142
143  xmin=xcc(1,1)/1000.
144  ymin=ycc(1,1)/1000.
145  xmax=xcc(nx,ny)/1000.
146  ymax=ycc(nx,ny)/1000.
147                         
148! lecture du flux geothermique de Shapiro
149!    open(88,file=TRIM(DIRNAMEINP)//'ijphi_hemin40.dat')
150!    open(88,file=ghf_fich)
151
152!!$    write(42,*) 'flux geothermique Shapiro : ',TRIM(DIRNAMEINP)//'ijphi_hemin40.dat'
153!!$    do k=1,nx*ny
154!!$       read(88,*) i,j,ghf(i,j)
155!!$    end do
156!!$    close(88)
157
158  call lect_input(1,'ghf',1,ghf,ghf_fich,file_ncdf)
159
160! pour passer les flux des mW/m2 au J/m2/an     
161  ghf(:,:)=-SECYEAR/1000.*ghf(:,:)
162!     write(42,*) 'flux geothermique fixe : 55 mW/m2'
163!     ghf(:,:)=-SECYEAR/1000.*55. !B6norcg2
164
165! print*,'lect topo'
166! print*,'shb',S(101,91),H(101,91),B(101,91)
167! print*,'shb0',S0(101,91),H0(101,91),BSOC0(101,91)
168!    Initialisation du Masque
169!------------------------------------------------
170! pour l'Hemisphere Nord mko vrai partout (version 2006)
171  MK0(:,:)=1
172
173!------------------------------------------------     
174end subroutine input_topo
175
176end module lect_topo_laurentide
Note: See TracBrowser for help on using the repository browser.