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 7153 for branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/grid_hgr.f90 – NEMO

Ignore:
Timestamp:
2016-10-28T11:13:57+02:00 (8 years ago)
Author:
jpaul
Message:

see ticket #1781

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/grid_hgr.f90

    r7025 r7153  
    8585!> @date September, 2015  
    8686!> - J, Paul : rewrite to SIREN format from $Id: domhgr.F90 5506 2015-06-29 15:19:38Z clevy $ 
    87 !> @date October, 2015 
     87!> @date October, 2016 
    8888!> - J, Paul : update from trunk (revision 6961): add wetting and drying, ice sheet coupling.. 
     89!> - J, Paul : compute coriolis factor at f-point and at t-point  
     90!> - J, Paul : do not use anymore special case for ORCA grid 
    8991!> 
    9092!> @note Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    146148   PUBLIC :: tg_e2f 
    147149    
    148    PUBLIC :: tg_ff 
     150   PUBLIC :: tg_ff_t 
     151   PUBLIC :: tg_ff_f 
    149152 
    150153   PUBLIC :: tg_gcost 
     
    186189!      REAL(dp)          :: d_ppe2_m      
    187190 
    188       INTEGER(i4)       :: i_cla      
     191!      INTEGER(i4)       :: i_cla      
    189192                 
    190       CHARACTER(LEN=lc) :: c_cfg      
     193!      CHARACTER(LEN=lc) :: c_cfg      
    191194      INTEGER(i4)       :: i_cfg      
    192       INTEGER(i4)       :: i_bench    
     195      LOGICAL           :: l_bench    
    193196                 
    194197   END TYPE 
     
    227230   TYPE(TVAR), SAVE :: tg_e2f 
    228231 
    229    TYPE(TVAR), SAVE :: tg_ff 
     232   TYPE(TVAR), SAVE :: tg_ff_t 
     233   TYPE(TVAR), SAVE :: tg_ff_f 
    230234 
    231235   TYPE(TVAR), SAVE :: tg_gcost 
     
    249253   !> @param[in] jpj 
    250254   !------------------------------------------------------------------- 
    251    SUBROUTINE grid_hgr_init(jpi,jpj,jpk)  
     255   SUBROUTINE grid_hgr_init(jpi,jpj,jpk,ld_domcfg)  
    252256      IMPLICIT NONE 
    253257      ! Argument       
     
    255259      INTEGER(i4), INTENT(IN) :: jpj 
    256260      INTEGER(i4), INTENT(IN) :: jpk 
     261      LOGICAL    , INTENT(IN) :: ld_domcfg 
    257262 
    258263      REAL(dp), DIMENSION(jpi,jpj)     :: dl_tmp2D 
     
    292297      tg_e2f      = var_init('e2f'  ,dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
    293298 
    294       tg_ff       = var_init('ff'   ,dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
    295  
    296       tg_gcost     =var_init('gcost',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
    297       tg_gcosu     =var_init('gcosu',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
    298       tg_gcosv     =var_init('gcosv',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
    299       tg_gcosf     =var_init('gcosf',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
    300  
    301       tg_gsint     =var_init('gsint',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
    302       tg_gsinu     =var_init('gsinu',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
    303       tg_gsinv     =var_init('gsinv',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
    304       tg_gsinf     =var_init('gsinf',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     299      tg_ff_t     = var_init('ff_t' ,dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     300      tg_ff_f     = var_init('ff_f' ,dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     301 
     302      IF( .NOT. ld_domcfg )THEN 
     303         tg_gcost     =var_init('gcost',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     304         tg_gcosu     =var_init('gcosu',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     305         tg_gcosv     =var_init('gcosv',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     306         tg_gcosf     =var_init('gcosf',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     307 
     308         tg_gsint     =var_init('gsint',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     309         tg_gsinu     =var_init('gsinu',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     310         tg_gsinv     =var_init('gsinv',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     311         tg_gsinf     =var_init('gsinf',dl_tmp2D(:,:)   , dd_fill=dp_fill, id_type=NF90_DOUBLE) 
     312      ENDIF 
    305313 
    306314      ! variable 3D 
     
    308316 
    309317      tg_tmask   = var_init('tmask'  ,dl_tmp3D(:,:,:), dd_fill=dp_fill_i1, id_type=NF90_BYTE) 
    310       tg_umask   = var_init('umask'  ,dl_tmp3D(:,:,:), dd_fill=dp_fill_i1, id_type=NF90_BYTE) 
    311       tg_vmask   = var_init('vmask'  ,dl_tmp3D(:,:,:), dd_fill=dp_fill_i1, id_type=NF90_BYTE) 
    312       tg_fmask   = var_init('fmask'  ,dl_tmp3D(:,:,:), dd_fill=dp_fill_i1, id_type=NF90_BYTE) 
     318      IF( .NOT. ld_domcfg )THEN 
     319         tg_umask   = var_init('umask'  ,dl_tmp3D(:,:,:), dd_fill=dp_fill_i1, id_type=NF90_BYTE) 
     320         tg_vmask   = var_init('vmask'  ,dl_tmp3D(:,:,:), dd_fill=dp_fill_i1, id_type=NF90_BYTE) 
     321         tg_fmask   = var_init('fmask'  ,dl_tmp3D(:,:,:), dd_fill=dp_fill_i1, id_type=NF90_BYTE) 
     322      ENDIF 
    313323       
    314324!      tg_wmask   = var_init('wmask'  ,dl_tmp3D(:,:,:), dd_fill=dp_fill_i1, id_type=NF90_BYTE) 
     
    324334   !> 
    325335   !------------------------------------------------------------------- 
    326    SUBROUTINE grid_hgr_clean()  
     336   SUBROUTINE grid_hgr_clean(ld_domcfg)  
    327337      IMPLICIT NONE 
    328338      ! Argument       
     339      LOGICAL    , INTENT(IN) :: ld_domcfg 
    329340 
    330341      ! local variable 
     
    332343      !---------------------------------------------------------------- 
    333344      CALL var_clean(tg_ssmask  ) 
    334       CALL var_clean(tg_tmask   ) 
    335       CALL var_clean(tg_umask   ) 
    336       CALL var_clean(tg_vmask   ) 
    337       CALL var_clean(tg_fmask   ) 
    338345 
    339346      CALL var_clean(tg_glamt) 
     
    357364      CALL var_clean(tg_e2f  ) 
    358365 
    359       CALL var_clean(tg_ff   ) 
    360  
    361       CALL var_clean(tg_gcost ) 
    362       CALL var_clean(tg_gcosu ) 
    363       CALL var_clean(tg_gcosv ) 
    364       CALL var_clean(tg_gcosf ) 
    365  
    366       CALL var_clean(tg_gsint ) 
    367       CALL var_clean(tg_gsinu ) 
    368       CALL var_clean(tg_gsinv ) 
    369       CALL var_clean(tg_gsinf ) 
    370  
     366      CALL var_clean(tg_ff_t ) 
     367      CALL var_clean(tg_ff_f ) 
     368 
     369      IF( .NOT. ld_domcfg )THEN 
     370         CALL var_clean(tg_gcost ) 
     371         CALL var_clean(tg_gcosu ) 
     372         CALL var_clean(tg_gcosv ) 
     373         CALL var_clean(tg_gcosf ) 
     374 
     375         CALL var_clean(tg_gsint ) 
     376         CALL var_clean(tg_gsinu ) 
     377         CALL var_clean(tg_gsinv ) 
     378         CALL var_clean(tg_gsinf ) 
     379      ENDIF 
     380 
     381      CALL var_clean(tg_tmask   ) 
     382      IF( .NOT. ld_domcfg )THEN 
     383         CALL var_clean(tg_umask   ) 
     384         CALL var_clean(tg_vmask   ) 
     385         CALL var_clean(tg_fmask   ) 
     386      ENDIF 
    371387   END SUBROUTINE grid_hgr_clean 
    372388   !------------------------------------------------------------------- 
     
    409425!      REAL(dp)          :: dn_ppe2_m   = NF90_FILL_DOUBLE 
    410426 
    411       ! namcla 
    412       INTEGER(i4)       :: in_cla      = 0 
     427!      ! namcla 
     428!      INTEGER(i4)       :: in_cla      = 0 
    413429 
    414430      ! namgrd 
    415       CHARACTER(LEN=lc) :: cn_cfg      = '' 
     431!      CHARACTER(LEN=lc) :: cn_cfg      = '' 
    416432      INTEGER(i4)       :: in_cfg      = 0 
    417       INTEGER(i4)       :: in_bench    = 0 
     433      LOGICAL           :: ln_bench    = .FALSE. 
    418434 
    419435      !---------------------------------------------------------------- 
     
    433449!      &  dn_ppe2_m         !< meridional grid-spacing (degrees) 
    434450 
    435       NAMELIST /namcla/ & 
    436       &  in_cla            !< =1 cross land advection for exchanges through some straits (ORCA2) 
     451!      NAMELIST /namcla/ & 
     452!      &  in_cla            !< =1 cross land advection for exchanges through some straits (ORCA2) 
    437453 
    438454      NAMELIST/namgrd/  &  !< orca grid namelist 
    439       &  cn_cfg,        &  !< name of the configuration (orca) 
     455!      &  cn_cfg,        &  !< name of the configuration (orca) 
    440456      &  in_cfg,        &  !< resolution of the configuration (2,1,025..) 
    441       &  in_bench          !< benchmark parameter (in_mshhgr = 5 ).  
     457      &  ln_bench          !< benchmark parameter (in_mshhgr = 5 ).  
    442458 
    443459      !---------------------------------------------------------------- 
     
    461477 
    462478         READ( il_fileid, NML = namhgr  ) 
    463          READ( il_fileid, NML = namcla  ) 
    464          READ( il_fileid, NML = namgrd  ) 
     479!         READ( il_fileid, NML = namcla  ) 
     480!         READ( il_fileid, NML = namgrd  ) 
    465481 
    466482         CLOSE( il_fileid, IOSTAT=il_status ) 
     
    482498!         grid_hgr_nam%d_ppe2_m  = dn_ppe2_m 
    483499 
    484          grid_hgr_nam%i_cla     = in_cla 
    485  
    486          grid_hgr_nam%c_cfg     = TRIM(cn_cfg) 
     500!         grid_hgr_nam%i_cla     = in_cla 
     501 
     502!         grid_hgr_nam%c_cfg     = TRIM(cn_cfg) 
    487503         grid_hgr_nam%i_cfg     = in_cfg 
    488          grid_hgr_nam%i_bench   = in_bench 
     504         grid_hgr_nam%l_bench   = ln_bench 
    489505 
    490506      ELSE 
     
    505521   !> @param[in] jpj 
    506522   !------------------------------------------------------------------- 
    507    SUBROUTINE grid_hgr_fill(td_nam,jpi,jpj)  
     523   SUBROUTINE grid_hgr_fill(td_nam,jpi,jpj,ld_domcfg)  
    508524      IMPLICIT NONE 
    509525      ! Argument       
     
    511527      INTEGER(i4), INTENT(IN) :: jpi 
    512528      INTEGER(i4), INTENT(IN) :: jpj 
     529      LOGICAL    , INTENT(IN) :: ld_domcfg 
    513530 
    514531      ! local variable 
     
    516533      ! loop indices 
    517534      !---------------------------------------------------------------- 
    518       CALL logger_info('GRIG HGR FILL : define the horizontal mesh from ithe'//& 
     535      CALL logger_info('GRID HGR FILL : define the horizontal mesh from ithe'//& 
    519536      &  ' type of horizontal mesh mshhgr = '//TRIM(fct_str(td_nam%i_mshhgr))) 
    520537      IF( td_nam%i_mshhgr == 1 )THEN 
     
    538555         CASE(0)   !  curvilinear coordinate on the sphere read in coordinate.nc file 
    539556 
    540             CALL grid_hgr__fill_curv(td_nam,jpi,jpj) 
     557            CALL grid_hgr__fill_curv(td_nam)!,jpi,jpj) 
    541558 
    542559         CASE(1)   ! geographical mesh on the sphere with regular grid-spacing 
     
    558575         CASE DEFAULT 
    559576 
    560             CALL logger_fatal('GRIG HGR FILL : bad flag value for mshhgr = '//& 
     577            CALL logger_fatal('GRID HGR FILL : bad flag value for mshhgr = '//& 
    561578               &  TRIM(fct_str(td_nam%i_mshhgr))) 
    562579 
     
    567584 
    568585      ! create coriolis factor 
    569       CALL grid_hgr__fill_coriolis(td_nam,jpi,jpj) 
     586      CALL grid_hgr__fill_coriolis(td_nam,jpi)!,jpj) 
    570587      
    571588      ! Control of domain for symetrical condition 
     
    582599      ! compute angles between model grid lines and the North direction 
    583600      ! --------------------------------------------------------------- 
    584       CALL grid_hgr__angle(td_nam,jpi,jpj)  
     601      IF( .NOT. ld_domcfg )THEN 
     602         CALL grid_hgr__angle(td_nam,jpi,jpj)  
     603      ENDIF 
    585604 
    586605   END SUBROUTINE grid_hgr_fill 
     
    591610   !> @author J.Paul 
    592611   !> @date September, 2015 - Initial version 
     612   !> @date October, 2016 
     613   !> - do not use anymore special case for ORCA grid 
    593614   !> 
    594615   !> @param[in] td_nam 
    595    !> @param[in] jpi 
    596    !> @param[in] jpj    
    597    !------------------------------------------------------------------- 
    598    SUBROUTINE grid_hgr__fill_curv( td_nam,jpi,jpj )  
     616   ! @param[in] jpi 
     617   ! @param[in] jpj    
     618   !------------------------------------------------------------------- 
     619   SUBROUTINE grid_hgr__fill_curv( td_nam )!,jpi,jpj )  
    599620      IMPLICIT NONE 
    600621      ! Argument       
    601622      TYPE(TNAMH), INTENT(IN) :: td_nam 
    602       INTEGER(i4), INTENT(IN) :: jpi 
    603       INTEGER(i4), INTENT(IN) :: jpj 
     623!      INTEGER(i4), INTENT(IN) :: jpi 
     624!      INTEGER(i4), INTENT(IN) :: jpj 
    604625 
    605626      ! local variable 
    606       INTEGER(i4) :: ii0, ii1, ij0, ij1   ! temporary integers 
    607       INTEGER(i4) :: isrow                ! index for ORCA1 starting row 
     627!      INTEGER(i4) :: ii0, ii1, ij0, ij1   ! temporary integers 
     628!      INTEGER(i4) :: isrow                ! index for ORCA1 starting row 
    608629 
    609630      TYPE(TMPP)  :: tl_coord 
     
    662683      !! WARNING extended grid have to be correctly fill 
    663684 
    664       !! special case for ORCA grid 
    665       ! ORCA R2 configuration 
    666       IF( TRIM(td_nam%c_cfg) == "orca" .AND. td_nam%i_cfg == 2 ) THEN 
    667             IF( td_nam%i_cla == 0 ) THEN 
    668                ! 
    669                ! Gibraltar Strait (e2u = 20 km) 
    670                ii0 = 139   ;   ii1 = 140 
    671                ij0 = 102   ;   ij1 = 102    
    672                ! e2u = 20 km 
    673                tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  20.e3 
    674                CALL logger_info('orca_r2: Gibraltar    : e2u reduced to 20 km') 
    675                ! 
    676                ! Bab el Mandeb (e2u = 18 km) 
    677                ii0 = 160   ;   ii1 = 160  
    678                ij0 =  88   ;   ij1 =  88    
    679                ! e1v = 18 km 
    680                tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) =  18.e3 
    681                ! e2u = 30 km 
    682                tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  30.e3 
    683  
    684                CALL logger_info('orca_r2: Bab el Mandeb: e2u reduced to 30 km') 
    685                CALL logger_info('e1v reduced to 18 km') 
    686             ENDIF 
    687             ! Danish Straits 
    688             ii0 = 145   ;   ii1 = 146 
    689             ij0 = 116   ;   ij1 = 116    
    690             ! e2u = 10 km 
    691             tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  10.e3 
    692             CALL logger_info('orca_r2: Danish Straits : e2u reduced to 10 km') 
    693       ENDIF 
    694  
    695       ! ORCA R1 configuration 
    696       IF( TRIM(td_nam%c_cfg) == "orca" .AND. td_nam%i_cfg == 1 ) THEN 
    697          ! This dirty section will be suppressed by simplification process: all this will come back in input files 
    698          ! Currently these hard-wired indices relate to configuration with 
    699          ! extend grid (jpjglo=332) 
    700          ! which had a grid-size of 362x292. 
    701  
    702          isrow = 332 - jpj 
    703  
    704          ! Gibraltar Strait (e2u = 20 km) 
    705          ii0 = 282           ;   ii1 = 283 
    706          ij0 = 201 + isrow   ;   ij1 = 241 - isrow  
    707          ! e2u = 20 km 
    708          tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  20.e3 
    709          CALL logger_info('orca_r1: Gibraltar : e2u reduced to 20 km') 
    710  
    711          ! Bhosporus Strait (e2u = 10 km) 
    712          ii0 = 314           ;   ii1 = 315        ! Bhosporus Strait (e2u = 10 km) 
    713          ij0 = 208 + isrow   ;   ij1 = 248 - isrow 
    714          ! Bhosporus Strait (e2u = 10 km) 
    715          tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  10.e3 
    716          CALL logger_info('orca_r1: Bhosporus : e2u reduced to 10 km') 
    717  
    718          ! Lombok Strait (e1v = 13 km) 
    719          ii0 =  44           ;   ii1 =  44        ! Lombok Strait (e1v = 13 km) 
    720          ij0 = 124 + isrow   ;   ij1 = 165 - isrow 
    721          ! Lombok Strait (e1v = 13 km) 
    722          tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) =  13.e3 
    723          CALL logger_info('orca_r1: Lombok : e1v reduced to 10 km') 
    724  
    725          ! Sumba Strait (e1v = 8 km) [closed from bathy_11 on] 
    726          ii0 =  48           ;   ii1 =  48        ! Sumba Strait (e1v = 8 km) [closed from bathy_11 on] 
    727          ij0 = 124 + isrow   ;   ij1 = 165 - isrow 
    728          ! Sumba Strait (e1v = 8 km) [closed from bathy_11 on] 
    729          tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) =  8.e3 
    730          CALL logger_info('orca_r1: Sumba : e1v reduced to 8 km') 
    731  
    732          ! Ombai Strait (e1v = 13 km) 
    733          ii0 =  53           ;   ii1 =  53        ! Ombai Strait (e1v = 13 km) 
    734          ij0 = 124 + isrow   ;   ij1 = 165 - isrow 
    735          ! Ombai Strait (e1v = 13 km) 
    736          tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) = 13.e3 
    737          CALL logger_info('orca_r1: Ombai : e1v reduced to 13 km') 
    738  
    739          ! Timor Passage (e1v = 20 km) 
    740          ii0 =  56           ;   ii1 =  56        ! Timor Passage (e1v = 20 km) 
    741          ij0 = 124 + isrow   ;   ij1 = 145 - isrow 
    742          ! Timor Passage (e1v = 20 km) 
    743          tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) = 20.e3 
    744          CALL logger_info('orca_r1: Timor Passage : e1v reduced to 20 km') 
    745  
    746           ! West Halmahera Strait (e1v = 30 km) 
    747          ii0 =  55           ;   ii1 =  55        ! West Halmahera Strait (e1v = 30 km) 
    748          ij0 = 141 + isrow   ;   ij1 = 182 - isrow 
    749          ! West Halmahera Strait (e1v = 30 km) 
    750          tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) = 30.e3 
    751          CALL logger_info('orca_r1: W Halmahera : e1v reduced to 30 km') 
    752  
    753          ! East Halmahera Strait (e1v = 50 km) 
    754          ii0 =  58           ;   ii1 =  58        ! East Halmahera Strait (e1v = 50 km) 
    755          ij0 = 141 + isrow   ;   ij1 = 182 - isrow 
    756          ! East Halmahera Strait (e1v = 50 km) 
    757          tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) = 50.e3 
    758          CALL logger_info('orca_r1: E Halmahera : e1v reduced to 50 km') 
    759  
    760       ENDIF 
    761  
    762       ! ORCA R05 configuration 
    763       IF( TRIM(td_nam%c_cfg) == "orca" .AND. td_nam%i_cfg == 05 ) THEN 
    764  
    765          ! Gibraltar Strait (e2u = 20 km) 
    766          ii0 = 563   ;   ii1 = 564        ! Gibraltar Strait (e2u = 20 km) 
    767          ij0 = 327   ;   ij1 = 327 
    768          ! Gibraltar Strait (e2u = 20 km) 
    769          tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  20.e3 
    770          CALL logger_info('orca_r05: Reduced e2u at the Gibraltar Strait') 
    771          ! 
    772          ! Bosphore Strait (e2u = 10 km) 
    773          ii0 = 627   ;   ii1 = 628        ! Bosphore Strait (e2u = 10 km) 
    774          ij0 = 343   ;   ij1 = 343 
    775          ! Bosphore Strait (e2u = 10 km) 
    776          tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  10.e3 
    777          CALL logger_info('orca_r05: Reduced e2u at the Bosphore Strait') 
    778          ! 
    779          ! Sumba Strait (e2u = 40 km) 
    780          ii0 =  93   ;   ii1 =  94        ! Sumba Strait (e2u = 40 km) 
    781          ij0 = 232   ;   ij1 = 232 
    782          ! Sumba Strait (e2u = 40 km) 
    783          tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  40.e3 
    784          CALL logger_info('orca_r05: Reduced e2u at the Sumba Strait') 
    785          ! 
    786          ! Ombai Strait (e2u = 15 km) 
    787          ii0 = 103   ;   ii1 = 103        ! Ombai Strait (e2u = 15 km) 
    788          ij0 = 232   ;   ij1 = 232 
    789          ! Ombai Strait (e2u = 15 km) 
    790          tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  15.e3 
    791          CALL logger_info('orca_r05: Reduced e2u at the Ombai Strait') 
    792          ! 
    793          ! Palk Strait (e2u = 10 km) 
    794          ii0 =  15   ;   ii1 =  15        ! Palk Strait (e2u = 10 km) 
    795          ij0 = 270   ;   ij1 = 270 
    796          ! Palk Strait (e2u = 10 km) 
    797          tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  10.e3 
    798          CALL logger_info('orca_r05: Reduced e2u at the Palk Strait') 
    799          ! 
    800          ! Lombok Strait (e1v = 10 km) 
    801          ii0 =  87   ;   ii1 =  87        ! Lombok Strait (e1v = 10 km) 
    802          ij0 = 232   ;   ij1 = 233 
    803          ! Lombok Strait (e1v = 10 km) 
    804          tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) =  10.e3 
    805          CALL logger_info('orca_r05: Reduced e1v at the Lombok Strait') 
    806          ! 
    807          ! 
    808          ! Bab el Mandeb (e1v = 25 km) 
    809          ii0 = 662   ;   ii1 = 662        ! Bab el Mandeb (e1v = 25 km) 
    810          ij0 = 276   ;   ij1 = 276 
    811          ! Bab el Mandeb (e1v = 25 km) 
    812          tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) =  25.e3 
    813          CALL logger_info('orca_r05: Reduced e1v at the Bab el Mandeb') 
    814  
    815       ENDIF 
     685!      !! special case for ORCA grid 
     686!      ! ORCA R2 configuration 
     687!      IF( TRIM(td_nam%c_cfg) == "orca" .AND. td_nam%i_cfg == 2 ) THEN 
     688!            IF( td_nam%i_cla == 0 ) THEN 
     689!               ! 
     690!               ! Gibraltar Strait (e2u = 20 km) 
     691!               ii0 = 139   ;   ii1 = 140 
     692!               ij0 = 102   ;   ij1 = 102    
     693!               ! e2u = 20 km 
     694!               tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  20.e3 
     695!               CALL logger_info('orca_r2: Gibraltar    : e2u reduced to 20 km') 
     696!               ! 
     697!               ! Bab el Mandeb (e2u = 18 km) 
     698!               ii0 = 160   ;   ii1 = 160  
     699!               ij0 =  88   ;   ij1 =  88    
     700!               ! e1v = 18 km 
     701!               tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) =  18.e3 
     702!               ! e2u = 30 km 
     703!               tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  30.e3 
     704! 
     705!               CALL logger_info('orca_r2: Bab el Mandeb: e2u reduced to 30 km') 
     706!               CALL logger_info('e1v reduced to 18 km') 
     707!            ENDIF 
     708!            ! Danish Straits 
     709!            ii0 = 145   ;   ii1 = 146 
     710!            ij0 = 116   ;   ij1 = 116    
     711!            ! e2u = 10 km 
     712!            tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  10.e3 
     713!            CALL logger_info('orca_r2: Danish Straits : e2u reduced to 10 km') 
     714!      ENDIF 
     715! 
     716!      ! ORCA R1 configuration 
     717!      IF( TRIM(td_nam%c_cfg) == "orca" .AND. td_nam%i_cfg == 1 ) THEN 
     718!         ! This dirty section will be suppressed by simplification process: all this will come back in input files 
     719!         ! Currently these hard-wired indices relate to configuration with 
     720!         ! extend grid (jpjglo=332) 
     721!         ! which had a grid-size of 362x292. 
     722! 
     723!         isrow = 332 - jpj 
     724! 
     725!         ! Gibraltar Strait (e2u = 20 km) 
     726!         ii0 = 282           ;   ii1 = 283 
     727!         ij0 = 201 + isrow   ;   ij1 = 241 - isrow  
     728!         ! e2u = 20 km 
     729!         tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  20.e3 
     730!         CALL logger_info('orca_r1: Gibraltar : e2u reduced to 20 km') 
     731! 
     732!         ! Bhosporus Strait (e2u = 10 km) 
     733!         ii0 = 314           ;   ii1 = 315        ! Bhosporus Strait (e2u = 10 km) 
     734!         ij0 = 208 + isrow   ;   ij1 = 248 - isrow 
     735!         ! Bhosporus Strait (e2u = 10 km) 
     736!         tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  10.e3 
     737!         CALL logger_info('orca_r1: Bhosporus : e2u reduced to 10 km') 
     738! 
     739!         ! Lombok Strait (e1v = 13 km) 
     740!         ii0 =  44           ;   ii1 =  44        ! Lombok Strait (e1v = 13 km) 
     741!         ij0 = 124 + isrow   ;   ij1 = 165 - isrow 
     742!         ! Lombok Strait (e1v = 13 km) 
     743!         tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) =  13.e3 
     744!         CALL logger_info('orca_r1: Lombok : e1v reduced to 10 km') 
     745! 
     746!         ! Sumba Strait (e1v = 8 km) [closed from bathy_11 on] 
     747!         ii0 =  48           ;   ii1 =  48        ! Sumba Strait (e1v = 8 km) [closed from bathy_11 on] 
     748!         ij0 = 124 + isrow   ;   ij1 = 165 - isrow 
     749!         ! Sumba Strait (e1v = 8 km) [closed from bathy_11 on] 
     750!         tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) =  8.e3 
     751!         CALL logger_info('orca_r1: Sumba : e1v reduced to 8 km') 
     752! 
     753!         ! Ombai Strait (e1v = 13 km) 
     754!         ii0 =  53           ;   ii1 =  53        ! Ombai Strait (e1v = 13 km) 
     755!         ij0 = 124 + isrow   ;   ij1 = 165 - isrow 
     756!         ! Ombai Strait (e1v = 13 km) 
     757!         tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) = 13.e3 
     758!         CALL logger_info('orca_r1: Ombai : e1v reduced to 13 km') 
     759! 
     760!         ! Timor Passage (e1v = 20 km) 
     761!         ii0 =  56           ;   ii1 =  56        ! Timor Passage (e1v = 20 km) 
     762!         ij0 = 124 + isrow   ;   ij1 = 145 - isrow 
     763!         ! Timor Passage (e1v = 20 km) 
     764!         tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) = 20.e3 
     765!         CALL logger_info('orca_r1: Timor Passage : e1v reduced to 20 km') 
     766! 
     767!          ! West Halmahera Strait (e1v = 30 km) 
     768!         ii0 =  55           ;   ii1 =  55        ! West Halmahera Strait (e1v = 30 km) 
     769!         ij0 = 141 + isrow   ;   ij1 = 182 - isrow 
     770!         ! West Halmahera Strait (e1v = 30 km) 
     771!         tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) = 30.e3 
     772!         CALL logger_info('orca_r1: W Halmahera : e1v reduced to 30 km') 
     773! 
     774!         ! East Halmahera Strait (e1v = 50 km) 
     775!         ii0 =  58           ;   ii1 =  58        ! East Halmahera Strait (e1v = 50 km) 
     776!         ij0 = 141 + isrow   ;   ij1 = 182 - isrow 
     777!         ! East Halmahera Strait (e1v = 50 km) 
     778!         tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) = 50.e3 
     779!         CALL logger_info('orca_r1: E Halmahera : e1v reduced to 50 km') 
     780! 
     781!      ENDIF 
     782! 
     783!      ! ORCA R05 configuration 
     784!      IF( TRIM(td_nam%c_cfg) == "orca" .AND. td_nam%i_cfg == 05 ) THEN 
     785! 
     786!         ! Gibraltar Strait (e2u = 20 km) 
     787!         ii0 = 563   ;   ii1 = 564        ! Gibraltar Strait (e2u = 20 km) 
     788!         ij0 = 327   ;   ij1 = 327 
     789!         ! Gibraltar Strait (e2u = 20 km) 
     790!         tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  20.e3 
     791!         CALL logger_info('orca_r05: Reduced e2u at the Gibraltar Strait') 
     792!         ! 
     793!         ! Bosphore Strait (e2u = 10 km) 
     794!         ii0 = 627   ;   ii1 = 628        ! Bosphore Strait (e2u = 10 km) 
     795!         ij0 = 343   ;   ij1 = 343 
     796!         ! Bosphore Strait (e2u = 10 km) 
     797!         tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  10.e3 
     798!         CALL logger_info('orca_r05: Reduced e2u at the Bosphore Strait') 
     799!         ! 
     800!         ! Sumba Strait (e2u = 40 km) 
     801!         ii0 =  93   ;   ii1 =  94        ! Sumba Strait (e2u = 40 km) 
     802!         ij0 = 232   ;   ij1 = 232 
     803!         ! Sumba Strait (e2u = 40 km) 
     804!         tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  40.e3 
     805!         CALL logger_info('orca_r05: Reduced e2u at the Sumba Strait') 
     806!         ! 
     807!         ! Ombai Strait (e2u = 15 km) 
     808!         ii0 = 103   ;   ii1 = 103        ! Ombai Strait (e2u = 15 km) 
     809!         ij0 = 232   ;   ij1 = 232 
     810!         ! Ombai Strait (e2u = 15 km) 
     811!         tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  15.e3 
     812!         CALL logger_info('orca_r05: Reduced e2u at the Ombai Strait') 
     813!         ! 
     814!         ! Palk Strait (e2u = 10 km) 
     815!         ii0 =  15   ;   ii1 =  15        ! Palk Strait (e2u = 10 km) 
     816!         ij0 = 270   ;   ij1 = 270 
     817!         ! Palk Strait (e2u = 10 km) 
     818!         tg_e2u%d_value(ii0:ii1,ij0:ij1,1,1) =  10.e3 
     819!         CALL logger_info('orca_r05: Reduced e2u at the Palk Strait') 
     820!         ! 
     821!         ! Lombok Strait (e1v = 10 km) 
     822!         ii0 =  87   ;   ii1 =  87        ! Lombok Strait (e1v = 10 km) 
     823!         ij0 = 232   ;   ij1 = 233 
     824!         ! Lombok Strait (e1v = 10 km) 
     825!         tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) =  10.e3 
     826!         CALL logger_info('orca_r05: Reduced e1v at the Lombok Strait') 
     827!         ! 
     828!         ! 
     829!         ! Bab el Mandeb (e1v = 25 km) 
     830!         ii0 = 662   ;   ii1 = 662        ! Bab el Mandeb (e1v = 25 km) 
     831!         ij0 = 276   ;   ij1 = 276 
     832!         ! Bab el Mandeb (e1v = 25 km) 
     833!         tg_e1v%d_value(ii0:ii1,ij0:ij1,1,1) =  25.e3 
     834!         CALL logger_info('orca_r05: Reduced e1v at the Bab el Mandeb') 
     835! 
     836!      ENDIF 
    816837 
    817838   END SUBROUTINE grid_hgr__fill_curv 
     
    10711092      ze1 = 106000. / FLOAT(td_nam%i_cfg)             
    10721093      ! benchmark: forced the resolution to be about 100 km 
    1073       IF( td_nam%i_bench /= 0 )   ze1 = 106000.e0      
     1094      IF( td_nam%l_bench )   ze1 = 106000.e0      
    10741095      zsin_alpha = - SQRT( 2. ) / 2. 
    10751096      zcos_alpha =   SQRT( 2. ) / 2. 
    10761097      ze1deg = ze1 / (dp_rearth * dp_deg2rad) 
    1077       ! benchmark: keep the lat/+lon at the right in_cfg resolution 
    1078       IF( td_nam%i_bench /= 0 )   ze1deg = ze1deg / FLOAT(td_nam%i_cfg) 
    10791098      dl_glam0 = zlam1 + zcos_alpha * ze1deg * FLOAT( jpj-2 ) 
    10801099      dl_gphi0 = zphi1 + zsin_alpha * ze1deg * FLOAT( jpj-2 ) 
     
    11341153   !> @author J.Paul 
    11351154   !> @date September, 2015 - Initial version 
     1155   !> @date October, 2016 
     1156   !> - compute coriolis factor at f-point and at t-point 
    11361157   !> 
    11371158   !> @param[in] td_nam 
    11381159   !> @param[in] jpi 
    1139    !> @param[in] jpj 
    1140    !------------------------------------------------------------------- 
    1141    SUBROUTINE grid_hgr__fill_coriolis(td_nam,jpi,jpj)  
     1160   ! @param[in] jpj 
     1161   !------------------------------------------------------------------- 
     1162   SUBROUTINE grid_hgr__fill_coriolis(td_nam,jpi)!,jpj)  
    11421163      IMPLICIT NONE 
    11431164      ! Argument       
    11441165      TYPE(TNAMH), INTENT(IN) :: td_nam 
    11451166      INTEGER(i4), INTENT(IN) :: jpi 
    1146       INTEGER(i4), INTENT(IN) :: jpj 
     1167!      INTEGER(i4), INTENT(IN) :: jpj 
    11471168 
    11481169      ! local variable 
     
    11591180         CASE ( 0, 1, 4 ) ! mesh on the sphere 
    11601181 
    1161             tg_ff%d_value(:,:,1,1) = 2. * dp_omega * SIN(dp_deg2rad * tg_gphif%d_value(:,:,1,1)) 
     1182            tg_ff_f%d_value(:,:,1,1) = 2. * dp_omega * SIN(dp_deg2rad * tg_gphif%d_value(:,:,1,1)) 
     1183            tg_ff_t%d_value(:,:,1,1) = 2. * dp_omega * SIN(dp_deg2rad * tg_gphit%d_value(:,:,1,1)) ! at t-point 
    11621184 
    11631185         CASE ( 2 )  ! f-plane at ppgphi0  
    11641186 
    1165             tg_ff%d_value(:,:,1,1) = 2. * dp_omega * SIN( dp_deg2rad * td_nam%d_ppgphi0 ) 
     1187            tg_ff_f%d_value(:,:,1,1) = 2. * dp_omega * SIN( dp_deg2rad * td_nam%d_ppgphi0 ) 
     1188            tg_ff_t%d_value(:,:,1,1) = 2. * dp_omega * SIN( dp_deg2rad * td_nam%d_ppgphi0 ) 
    11661189            CALL logger_info('f-plane: Coriolis parameter = constant = '//& 
    1167                &  TRIM(fct_str(tg_ff%d_value(1,1,1,1))) ) 
     1190               &  TRIM(fct_str(tg_ff_f%d_value(1,1,1,1))) ) 
    11681191 
    11691192         CASE ( 3 )  ! beta-plane 
     
    11781201            zf0 = 2. * dp_omega * SIN( dp_deg2rad * zphi0 ) 
    11791202            ! f = f0 +beta* y ( y=0 at south) 
    1180             tg_ff%d_value(:,:,1,1) = zf0 + zbeta * tg_gphif%d_value(:,:,1,1) * 1.e3 
     1203            tg_ff_f%d_value(:,:,1,1) = zf0 + zbeta * tg_gphif%d_value(:,:,1,1) * 1.e3 
     1204            tg_ff_t%d_value(:,:,1,1) = zf0 + zbeta * tg_gphit%d_value(:,:,1,1) * 1.e3 
    11811205 
    11821206         CASE ( 5 )  ! beta-plane and rotated domain (gyre configuration) 
     
    11901214 
    11911215            ! f = f0 +beta* y ( y=0 at south) 
    1192             tg_ff%d_value(:,:,1,1) = ( zf0 + zbeta * ABS( tg_gphif%d_value(:,:,1,1) - zphi0 ) * dp_deg2rad * dp_rearth ) 
     1216            tg_ff_f%d_value(:,:,1,1) = ( zf0 + zbeta * ABS( tg_gphif%d_value(:,:,1,1) - zphi0 ) & 
     1217                                     & * dp_deg2rad * dp_rearth ) 
     1218            tg_ff_t%d_value(:,:,1,1) = ( zf0 + zbeta * ABS( tg_gphit%d_value(:,:,1,1) - zphi0 ) & 
     1219                                     & * dp_deg2rad * dp_rearth ) 
    11931220 
    11941221      END SELECT 
Note: See TracChangeset for help on using the changeset viewer.