New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 10025 for utils/tools/NESTING/src/agrif_types.f90 – NEMO

Ignore:
Timestamp:
2018-08-02T15:25:27+02:00 (6 years ago)
Author:
clem
Message:

nesting tools are partly rewritten (mostly for create_coordinates and bathy) to get better functionality. Now you can use the nesting to either define an agrif zoom or a regional domain (for bdy purposes). Also, the nesting tools output a domain_cfg.nc that can be directly used in NEMO4 without the need of DOMAINcfg tool. The option of median average for bathymetry interpolation still does not work properly but it's not new

File:
1 edited

Legend:

Unmodified
Added
Removed
  • utils/tools/NESTING/src/agrif_types.f90

    r9768 r10025  
    1515  TYPE Coordinates 
    1616     ! 
    17      REAL*8, DIMENSION(:,:), POINTER :: nav_lon,nav_lat => NULL() 
    18      REAL*8, DIMENSION(:,:), POINTER :: glamv, glamu, glamt, glamf => NULL() 
    19      REAL*8, DIMENSION(:,:), POINTER :: gphit, gphiu, gphiv, gphif => NULL() 
    20      REAL*8, DIMENSION(:,:), POINTER :: e1t, e1u, e1v, e1f => NULL() 
    21      REAL*8, DIMENSION(:,:), POINTER :: e2t, e2u, e2v, e2f => NULL() 
    22      REAL*8, DIMENSION(:,:), POINTER :: bathy_level => NULL() 
    23      REAL*8, DIMENSION(:,:), POINTER :: bathy_meter => NULL() 
    24      REAL*8, DIMENSION(:,:), POINTER :: wgt => NULL() 
    25      REAL*8, DIMENSION(:,:,:),POINTER :: fmask,umask,vmask,tmask => NULL() 
    26      REAL*8, DIMENSION(:,:,:),POINTER :: e3t_ps,e3w_ps,gdept_ps,gdepwps => NULL() 
    27      REAL*8, DIMENSION(:,:),POINTER :: gdepw_ps => NULL() 
    28      REAL*8, DIMENSION(:), POINTER :: gdeptht => NULL() 
    29      INTEGER, DIMENSION(:) , POINTER :: time_steps => NULL() 
     17     REAL*8,  DIMENSION(:,:),  POINTER :: nav_lon, nav_lat => NULL() 
     18     REAL*8,  DIMENSION(:,:), POINTER :: glamv, glamu, glamt, glamf => NULL() 
     19     REAL*8,  DIMENSION(:,:), POINTER :: gphit, gphiu, gphiv, gphif => NULL() 
     20     REAL*8,  DIMENSION(:,:), POINTER :: e1t, e1u, e1v, e1f => NULL() 
     21     REAL*8,  DIMENSION(:,:), POINTER :: e2t, e2u, e2v, e2f => NULL() 
     22     REAL*8,  DIMENSION(:,:), POINTER :: bathy_level => NULL() 
     23     REAL*8,  DIMENSION(:,:), POINTER :: bathy_meter => NULL() 
     24     REAL*8,  DIMENSION(:,:), POINTER :: wgt => NULL() 
     25     REAL*8,  DIMENSION(:,:,:),POINTER :: fmask, umask, vmask, tmask => NULL() 
     26     REAL*8,  DIMENSION(:,:,:),POINTER :: e3t_ps, e3w_ps, gdept_ps, gdepwps => NULL() 
     27     REAL*8,  DIMENSION(:,:),  POINTER :: gdepw_ps => NULL() 
     28     REAL*8,  DIMENSION(:),    POINTER :: gdeptht => NULL() 
     29     INTEGER, DIMENSION(:) ,   POINTER :: time_steps => NULL() 
    3030     !      
    3131  END TYPE Coordinates 
     
    3333  ! 
    3434  ! 
    35   CHARACTER*8,DIMENSION(10) :: flxtab = (/'socliot1','socliot2','socliopl',& 
     35  CHARACTER*8,DIMENSION(10) :: flxtab = (/'socliot1','socliot2','socliopl', & 
    3636       'socliocl','socliohu','socliowi','soshfldo','sohefldo','sowaflup','sofbt   '/) 
    3737  ! 
     
    4141  !************************************************************** 
    4242  ! 
    43   INTEGER irafx,irafy 
    44   INTEGER nxfin,nyfin 
    45   INTEGER, PARAMETER :: nbghostcellsfine = 3  
    46   INTEGER, PARAMETER :: nbghostcellscoarse = 1 
    47   !       
    48   INTEGER imin,jmin,imax,jmax,rho,rhot 
    49   INTEGER shlat 
    50   INTEGER N,type_bathy_interp 
     43  INTEGER ::   irafx, irafy 
     44  INTEGER ::   nxfin, nyfin 
     45  !       
     46  INTEGER ::   nbghostcellsfine, imin, jmin, imax, jmax, rho, rhot 
     47  INTEGER ::   shlat 
     48  INTEGER ::   N, type_bathy_interp 
    5149  !  
    52   INTEGER jpizoom,jpjzoom,npt_connect,npt_copy 
    53   !       
    54   REAL*8 rn_hmin 
    55   REAL*8 ppkth2, ppacr2, ppkth,ppacr,ppdzmin,pphmax,smoothing_factor,e3zps_min,e3zps_rat 
    56   REAL*8 psur,pa0,pa1,pa2,adatrj 
     50  INTEGER ::   jpizoom, jpjzoom, npt_connect, npt_copy 
     51  !       
     52  REAL*8 ::   rn_hmin 
     53  REAL*8 ::   ppkth2, ppacr2, ppkth, ppacr, ppdzmin, pphmax, smoothing_factor, e3zps_min, e3zps_rat 
     54  REAL*8 ::   psur, pa0, pa1, pa2, adatrj 
    5755  !        
    58   LOGICAL ldbletanh,ln_e3_dep 
    59   LOGICAL partial_steps,smoothing,bathy_update 
    60   LOGICAL new_topo,removeclosedseas,dimg,iom_activated 
     56  LOGICAL ::   ldbletanh, ln_e3_dep 
     57  LOGICAL ::   partial_steps, smoothing, bathy_update 
     58  LOGICAL ::   new_topo, removeclosedseas, dimg, iom_activated 
     59  LOGICAL ::   ln_agrif_domain 
    6160  !        
    62   CHARACTER*100 parent_meshmask_file,elevation_database,parent_bathy_meter 
    63   CHARACTER*100 elevation_name,parent_batmet_name 
    64   CHARACTER*100 parent_coordinate_file,restart_file,updated_parent_file,restart_trc_file 
    65   CHARACTER*100 dimg_output_file,interp_type 
    66   !       
    67   CHARACTER(len=80),DIMENSION(20) :: flx_Files, u_files, v_files 
    68   CHARACTER(len=255),DIMENSION(20) :: VAR_INTERP 
     61  CHARACTER*100 ::   parent_meshmask_file, elevation_database, parent_bathy_meter, parent_domcfg_output 
     62  CHARACTER*100 ::   elevation_name, parent_batmet_name 
     63  CHARACTER*100 ::   parent_coordinate_file, restart_file, updated_parent_file, updated_parent_domcfg, restart_trc_file 
     64  CHARACTER*100 ::   dimg_output_file, interp_type 
     65  !       
     66  CHARACTER(len=80) , DIMENSION(20) :: flx_Files, u_files, v_files 
     67  CHARACTER(len=255), DIMENSION(20) :: VAR_INTERP 
    6968  ! 
    7069  NAMELIST /input_output/iom_activated 
    7170  ! 
    72   NAMELIST /coarse_grid_files/parent_coordinate_file,parent_meshmask_file 
    73   !       
    74   NAMELIST /bathymetry/new_topo,elevation_database,elevation_name,smoothing,smoothing_factor, & 
    75        npt_connect,npt_copy,removeclosedseas,type_bathy_interp,rn_hmin       
    76   !       
    77   NAMELIST /nesting/imin,imax,jmin,jmax,rho,rhot,bathy_update,updated_parent_file       
    78   ! 
    79   NAMELIST /vertical_grid/ppkth,ppacr,ppdzmin,pphmax,psur,pa0,pa1,N,ldbletanh,ln_e3_dep,pa2,ppkth2,ppacr2 
     71  NAMELIST /coarse_grid_files/parent_coordinate_file, parent_meshmask_file, parent_domcfg_output 
     72  !       
     73  NAMELIST /bathymetry/new_topo, elevation_database, elevation_name, smoothing, smoothing_factor, & 
     74                       ln_agrif_domain, npt_connect, npt_copy, removeclosedseas, type_bathy_interp, rn_hmin       
     75  !       
     76  NAMELIST /nesting/nbghostcellsfine, imin, imax, jmin, jmax, rho, rhot, bathy_update, updated_parent_file, updated_parent_domcfg       
     77  ! 
     78  NAMELIST /vertical_grid/ppkth, ppacr, ppdzmin, pphmax, psur, pa0, pa1, N, ldbletanh, ln_e3_dep, pa2, ppkth2, ppacr2 
    8079  !  
    81   NAMELIST /partial_cells/partial_steps,parent_bathy_meter,parent_batmet_name,e3zps_min,e3zps_rat       
    82   ! 
    83   NAMELIST /nemo_coarse_grid/ jpizoom,jpjzoom  
     80  NAMELIST /partial_cells/partial_steps, parent_bathy_meter, parent_batmet_name, e3zps_min, e3zps_rat       
     81  ! 
     82  NAMELIST /nemo_coarse_grid/ jpizoom, jpjzoom  
    8483  !           
    85   NAMELIST /forcing_files/ flx_files, u_files, v_files  
     84  NAMELIST /forcing_files/ flx_files,  u_files, v_files  
    8685  !            
    8786  NAMELIST /interp/ VAR_INTERP 
    8887  !       
    89   NAMELIST /restart/ restart_file,shlat,dimg,dimg_output_file,adatrj,interp_type  
    90  
    91   NAMELIST /restart_trc/ restart_trc_file,interp_type  
     88  NAMELIST /restart/ restart_file, shlat, dimg, dimg_output_file, adatrj, interp_type  
     89 
     90  NAMELIST /restart_trc/ restart_trc_file, interp_type  
    9291  ! 
    9392CONTAINS 
     
    102101  !******************************************************** 
    103102  !        
    104   SUBROUTINE agrif_grid_allocate(Grid,nx,ny) 
     103  SUBROUTINE agrif_grid_allocate(Grid, nx, ny) 
    105104    ! 
    106105    TYPE(Coordinates) :: Grid 
    107     INTEGER :: nx,ny 
     106    INTEGER :: nx, ny 
    108107    ! 
    109108    ALLOCATE(Grid%nav_lon(nx,ny),Grid%nav_lat(nx,ny)) 
     
    175174       jmax = jmax + jpjzoom - 1 
    176175       ! 
    177        nxfin = (imax-imin)*irafx+2*nbghostcellsfine+2 
    178        nyfin = (jmax-jmin)*irafy+2*nbghostcellsfine+2 
     176       IF( ln_agrif_domain ) THEN 
     177          nxfin = (imax-imin)*irafx+2*nbghostcellsfine+2 
     178          nyfin = (jmax-jmin)*irafy+2*nbghostcellsfine+2 
     179       ELSE 
     180          nbghostcellsfine = 0 
     181          nxfin = (imax-imin+1)*irafx 
     182          nyfin = (jmax-jmin+1)*irafy 
     183       ENDIF 
    179184       ! 
    180185    ELSE 
    181186       ! 
    182187       PRINT *,'namelist file ''',TRIM(namelistname),''' not found' 
    183        STOP   
     188       STOP  
    184189       ! 
    185190    END IF 
Note: See TracChangeset for help on using the changeset viewer.