source: branches/GRISLIv3/SOURCES/Hemin40_files/lect-hemin40_mod.f90 @ 446

Last change on this file since 446 was 446, checked in by aquiquet, 8 months ago

Cleaning branch: use only statement in module3D

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