Changeset 224 for trunk/SOURCES/Hemin15_files/lect-hemin15_mod.f90
- Timestamp:
- 12/18/18 18:25:28 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SOURCES/Hemin15_files/lect-hemin15_mod.f90
r14 r224 2 2 3 3 use module3D_phy 4 use interface_input 5 use io_netcdf_grisli 6 7 implicit none 4 8 5 character(len=50) :: FILE1 ! CHARACTER(LEN=30) :: FILE1, FILE2, FILE3 6 character(len=50) :: FILE2 7 character(len=80) :: filin 8 real, dimension(nx,ny,5) :: bidon ! pour l'appel a courbure 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 9 16 10 contains 17 contains 11 18 12 19 subroutine input_topo 13 20 14 namelist/topo_file/file1,file2 15 rewind(num_param) ! pour revenir au debut du fichier param_list.dat 16 read(num_param,topo_file) 17 ! formats pour les ecritures dans 42 18 428 format(A) 19 write(num_rep_42,428)'!___________________________________________________________' 20 write(num_rep_42,428) '&topo_file ! nom du bloc ' 21 write(num_rep_42,*) 22 write(num_rep_42,*) 'file1 = ', file1 23 write(num_rep_42,*) 'file2 = ', file2 24 write(num_rep_42,*)'/' 25 write(num_rep_42,428) '! file1 : topo de depart' 26 write(num_rep_42,428) '! file2 : topo de reference' 27 write(num_rep_42,*) 21 integer :: ios 28 22 29 !====================================== La reponse est 42 =========== 30 ! write(42,*) 31 ! write(42,*)' Fichiers en entree' 32 ! write(42,*)'----------------------' 33 !==================================================================== 23 namelist/topo_file/topo_ref,topo_dep,grid_topo,ghf_fich 24 rewind(num_param) ! pour revenir au debut du fichier param_list.dat 25 read(num_param,topo_file) 34 26 35 ! dans param : 36 ! file1=TRIM(DIRNAMEINP)//'topo-21k.g40' ! topo LGM ICE_5G (1=topo de depart) 37 ! file1=TRIM(DIRNAMEINP)//'hemin2.g40' 38 ! file2=TRIM(DIRNAMEINP)//'hemin2.g40' ! topo actuelle 39 ! write(42,*) 'topo de depart', file1 40 ! write(42,*) 'topo reference', file2 27 write(num_rep_42,'(A)')'!___________________________________________________________' 28 write(num_rep_42,'(A)') '&topo_file ! nom du bloc ' 29 write(num_rep_42,*) 30 write(num_rep_42,'(A,A,A)') 'topo_ref = "',trim(topo_ref),'"' 31 write(num_rep_42,'(A,A,A)') 'topo_dep = "',trim(topo_dep),'"' 32 write(num_rep_42,'(A,A,A)') 'grid_topo = "',trim(grid_topo),'"' 33 write(num_rep_42,'(A,A,A)') 'ghf_fich = "',trim(ghf_fich),'"' 34 write(num_rep_42,*)'/' 35 write(num_rep_42,'(A)') '! topo_ref= topo ref isostasie' 36 write(num_rep_42,'(A)') '! topo_dep= topo de depart' 37 write(num_rep_42,'(A)') '! grid_topo : fichier i,j,x,y,lon,lat' 38 write(num_rep_42,'(A)') '! ghf_fich : fichier flux geothermique' 39 write(num_rep_42,*) 41 40 42 43 ! lecture adaptee aux fichiers intercomparaison EISMINT 44 nxx=nx45 nyy=ny41 topo_ref=trim(dirnameinp)//trim(topo_ref) 42 topo_dep=trim(dirnameinp)//trim(topo_dep) 43 grid_topo=trim(dirnameinp)//trim(grid_topo) 44 ghf_fich=trim(dirnameinp)//trim(ghf_fich) 46 45 47 ! lecture de la topo actuelle 48 ! --------------------------- 49 open (20,file=TRIM(DIRNAMEINP)//file2,status='old') 50 51 read(20,'(A80)') TITRE 52 read(20,*) NI,NJ,NXX,NYY,STEP 53 read(20,*) 54 do J=1,ny 55 do I=1,nx 56 read (20,*) S0(I,J),H0(I,J),BSOC0(I,J) 57 S0(i,j)=max(S0(i,j),0.) 58 end do 59 end do 60 close(20) 46 ! lecture de la topo de référence 47 call lect_input(1,'Bsoc',1,Bsoc0,topo_ref,file_ncdf) ! socle 48 call lect_input(1,'S',1,S0,topo_ref,file_ncdf) ! surface 49 call lect_input(1,'H',1,H0,topo_ref,file_ncdf) ! epaisseur 61 50 62 63 ! lecture de la topo de depart 64 ! --------------------------- 65 open (20,file=TRIM(DIRNAMEINP)//file1,status='old') 66 ! open (20,file='../INPUT-DATA/hemin.g50') 67 read(20,'(A80)') TITRE 68 read(20,*) NI,NJ,NXX,NYY,STEP 69 read(20,*) 70 do J=1,ny 71 do I=1,nx 72 read (20,*) S(I,J),H(I,J),BSOC(I,J) 73 end do 74 end do 75 close(20) 51 ! lecture de la topo de départ 52 call lect_input(1,'Bsoc',1,Bsoc,topo_dep,file_ncdf) ! socle 53 call lect_input(1,'S',1,S,topo_dep,file_ncdf) ! surface 54 call lect_input(1,'H',1,H,topo_dep,file_ncdf) ! epaisseur 55 76 56 77 57 ! calcul des courbures du socle 78 79 call courbure(nx,ny,dx,Bsoc,bidon(:,:,1),bidon(:,:,2),bidon(:,:,3), & 80 bidon(:,:,4),socle_cry,bidon(:,:,5)) 81 socle_cry(:,:)=socle_cry(:,:)*dx*dx 58 ! call courbure(nx,ny,dx,Bsoc,bidon(:,:,1),bidon(:,:,2),bidon(:,:,3), & 59 ! bidon(:,:,4),socle_cry,bidon(:,:,5)) 60 ! socle_cry(:,:)=socle_cry(:,:)*dx*dx 82 61 83 62 ! lecture des coordonnées geographiques 84 85 filin=TRIM(DIRNAMEINP)//'coord_grisli_HN_15km.dat'86 87 63 ! les coordonnees sont calculees en °dec avec GMT, 88 64 ! les longitudes sont comprises entre -180 et +180 (negative a l'Ouest de 89 65 ! Greenwich et positive a l'Est) 90 open(unit=2004,file=filin,iostat=ios) 91 do k=1,nx*ny 92 read(2004,*) i,j,XCC(i,j),YCC(i,j),XLONG(i,j),YLAT(i,j) 93 enddo 94 close(2004) 95 write(42,*) 'fichier grille: ', filin 66 open(unit=2004,file=grid_topo,iostat=ios) 67 do k=1,nx*ny 68 read(2004,*) i,j,XCC(i,j),YCC(i,j),XLONG(i,j),YLAT(i,j) 69 enddo 70 close(2004) 96 71 97 xmin=xcc(1,1)/1000. 98 ymin=ycc(1,1)/1000. 99 xmax=xcc(nx,ny)/1000. 100 ymax=ycc(nx,ny)/1000. 101 102 ! lecture du flux geothermique de Shapiro 103 open(88,file=TRIM(DIRNAMEINP)//'ijphi_hemin15.dat') 72 xmin=xcc(1,1)/1000. 73 ymin=ycc(1,1)/1000. 74 xmax=xcc(nx,ny)/1000. 75 ymax=ycc(nx,ny)/1000. 76 77 call lect_input(1,'ghf',1,ghf,ghf_fich,file_ncdf) 104 78 105 write(42,*) 'flux geothermique Shapiro : ',TRIM(DIRNAMEINP)//'ijphi_hemin15.dat' 79 ! pour passer les flux des mW/m2 au J/m2/an 80 ghf(:,:)=-SECYEAR/1000.*ghf(:,:) 106 81 107 do k=1,nx*ny108 read(88,*) i,j,ghf(i,j)109 ! print*, i,j,ghf(i,j)110 end do111 close(88)112 ! pour passer les flux des mW/m2 au J/m2/an113 ghf(:,:)=-SECYEAR/1000.*ghf(:,:)114 ! write(42,*) 'flux geothermique fixe : 55 mW/m2'115 ! ghf(:,:)=-SECYEAR/1000.*55. !B6norcg2116 117 ! print*,'lect topo'118 ! print*,'shb',S(101,91),H(101,91),B(101,91)119 ! print*,'shb0',S0(101,91),H0(101,91),BSOC0(101,91)120 82 ! Initialisation du Masque 121 83 !------------------------------------------------ 122 84 ! pour l'Hemisphere Nord mko vrai partout (version 2006) 123 85 MK0(:,:)=1 124 86 125 !------------------------------------------------ 87 !------------------------------------------------ 126 88 end subroutine input_topo 127 89
Note: See TracChangeset
for help on using the changeset viewer.