Ignore:
Timestamp:
12/18/18 18:25:28 (6 years ago)
Author:
dumas
Message:

format of the parameter file created by the code, possibility to use it in reading

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SOURCES/Hemin15_files/lect-hemin15_mod.f90

    r14 r224  
    22 
    33  use module3D_phy 
     4  use interface_input 
     5  use io_netcdf_grisli 
     6 
     7  implicit none 
    48   
    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 
    916 
    10 contains 
     17contains   
    1118  
    1219subroutine input_topo 
    1320 
    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 
    2822 
    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) 
    3426 
    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,*) 
    4140 
    42        
    43 ! lecture adaptee aux fichiers intercomparaison EISMINT 
    44        nxx=nx 
    45        nyy=ny 
     41  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) 
    4645 
    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 
    6150 
    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 
    7656 
    7757! 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 
    8261 
    8362! lecture des coordonnées geographiques 
    84  
    85     filin=TRIM(DIRNAMEINP)//'coord_grisli_HN_15km.dat' 
    86  
    8763! les coordonnees sont calculees en °dec avec GMT, 
    8864! les longitudes sont comprises entre -180 et +180 (negative a l'Ouest de 
    8965! 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) 
    9671               
    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) 
    10478 
    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(:,:) 
    10681 
    107     do k=1,nx*ny 
    108        read(88,*) i,j,ghf(i,j) 
    109 !        print*, i,j,ghf(i,j) 
    110     end do 
    111     close(88) 
    112 ! pour passer les flux des mW/m2 au J/m2/an       
    113     ghf(:,:)=-SECYEAR/1000.*ghf(:,:) 
    114 !     write(42,*) 'flux geothermique fixe : 55 mW/m2'  
    115 !     ghf(:,:)=-SECYEAR/1000.*55. !B6norcg2 
    116  
    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) 
    12082!    Initialisation du Masque 
    12183!------------------------------------------------ 
    12284! pour l'Hemisphere Nord mko vrai partout (version 2006) 
    123     MK0(:,:)=1 
     85  MK0(:,:)=1 
    12486 
    125 !------------------------------------------------      
     87!------------------------------------------------ 
    12688end subroutine input_topo 
    12789 
Note: See TracChangeset for help on using the changeset viewer.