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 13337 for NEMO/branches/2020/dev_r13312_AGRIF-03-04_jchanut_vinterp_tstep/src/NST/agrif_user.F90 – NEMO

Ignore:
Timestamp:
2020-07-24T16:01:24+02:00 (4 years ago)
Author:
jchanut
Message:

#2222, start suppressing key_vertical (add ln_vremap namelist flag)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13312_AGRIF-03-04_jchanut_vinterp_tstep/src/NST/agrif_user.F90

    r13335 r13337  
    148148 
    149149 
    150    SUBROUTINE Agrif_Init_Domain( Kbb, Kmm, Kaa )  
     150   SUBROUTINE Agrif_Init_Domain 
    151151      !!---------------------------------------------------------------------- 
    152152      !!                 *** ROUTINE Agrif_Init_Domain *** 
     
    168168      IMPLICIT NONE 
    169169      ! 
    170       INTEGER, INTENT(in) ::  Kbb, Kmm, Kaa 
    171170      ! 
    172171      LOGICAL :: check_namelist 
     
    186185      mbkt_parent(:,:) = 0 
    187186      ! 
    188   !    CALL Agrif_Bc_variable(ht0_id ,calledweight=1.,procname=interpht0 ) 
    189   !    CALL Agrif_Bc_variable(mbkt_id,calledweight=1.,procname=interpmbkt) 
     187!     CALL Agrif_Bc_variable(ht0_id ,calledweight=1.,procname=interpht0 ) 
     188!     CALL Agrif_Bc_variable(mbkt_id,calledweight=1.,procname=interpmbkt) 
    190189      CALL Agrif_Init_Variable(ht0_id , procname=interpht0 ) 
    191190      CALL Agrif_Init_Variable(mbkt_id, procname=interpmbkt) 
     
    214213         zk(ji,jj) = REAL( mbku_parent(ji,jj), wp ) 
    215214      END_2D 
    216       CALL lbc_lnk( 'Agrif_InitValues_cont', zk, 'U', 1.0_wp ) 
     215      CALL lbc_lnk( 'Agrif_InitValues_Domain', zk, 'U', 1.0_wp ) 
    217216      mbku_parent(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
    218217      DO_2D( 0, 0, 0, 0 ) 
    219218         zk(ji,jj) = REAL( mbkv_parent(ji,jj), wp ) 
    220219      END_2D 
    221       CALL lbc_lnk( 'Agrif_InitValues_cont', zk, 'V', 1.0_wp ) 
     220      CALL lbc_lnk( 'Agrif_InitValues_Domain', zk, 'V', 1.0_wp ) 
    222221      mbkv_parent(:,:) = MAX( NINT( zk(:,:) ), 1 )    
    223222 
     
    231230         ! 
    232231         kindic_agr = 0 
    233          IF( .NOT. l_vremap ) THEN 
     232         IF( .NOT. ln_vremap ) THEN 
    234233            ! 
    235234            ! check if tmask and vertical scale factors agree with parent in sponge area: 
     
    239238            ! 
    240239            ! In case of vertical interpolation, check only that total depths agree between child and parent: 
    241             DO ji = 1, jpi 
    242                DO jj = 1, jpj 
    243                   IF ((mbkt_parent(ji,jj)/=0).AND.(ABS(ht0_parent(ji,jj)-ht_0(ji,jj))>1.e-3)) kindic_agr = kindic_agr + 1 
    244                   IF ((mbku_parent(ji,jj)/=0).AND.(ABS(hu0_parent(ji,jj)-hu_0(ji,jj))>1.e-3)) kindic_agr = kindic_agr + 1 
    245                   IF ((mbkv_parent(ji,jj)/=0).AND.(ABS(hv0_parent(ji,jj)-hv_0(ji,jj))>1.e-3)) kindic_agr = kindic_agr + 1 
    246                END DO 
    247             END DO 
    248  
    249             CALL mpp_sum( 'agrif_user', kindic_agr ) 
     240                   
     241            CALL Agrif_check_bat( kindic_agr )            
     242 
     243            CALL mpp_sum( 'agrif_InitValues_Domain', kindic_agr ) 
    250244            IF( kindic_agr /= 0 ) THEN 
    251245               CALL ctl_stop('==> Child Bathymetry is NOT correct near boundaries.') 
     
    257251      ENDIF 
    258252 
    259       IF( l_vremap ) THEN 
     253      IF( ln_vremap ) THEN 
    260254      ! Additional constrain that should be removed someday: 
    261255         IF ( Agrif_Parent(jpk).GT.jpk ) THEN 
    262             CALL ctl_stop( ' With l_vremap, child grids must have jpk greater or equal to the parent value' ) 
     256            CALL ctl_stop( ' With ln_vremap, child grids must have jpk greater or equal to the parent value' ) 
    263257         ENDIF 
    264258      ENDIF 
     
    291285      LOGICAL :: check_namelist 
    292286      CHARACTER(len=15) :: cl_check1, cl_check2, cl_check3, cl_check4  
    293       REAL(wp), DIMENSION(jpi,jpj) ::   zk   ! workspace 
    294       INTEGER :: ji, jj 
    295287 
    296288      ! 1. Declaration of the type of variable which have to be interpolated 
     
    302294      Agrif_SpecialValue    = 0._wp 
    303295      Agrif_UseSpecialValue = .TRUE. 
     296      l_vremap              = ln_vremap 
     297 
    304298      CALL Agrif_Bc_variable(       tsn_id,calledweight=1.,procname=interptsn) 
    305299      CALL Agrif_Sponge 
     
    342336      ENDIF 
    343337      Agrif_UseSpecialValue = .FALSE.  
     338      l_vremap              = .FALSE. 
    344339 
    345340      !----------------- 
     
    398393      ind2 = nn_hls + 2 + nbghostcells_x 
    399394      ind3 = nn_hls + 2 + nbghostcells_y_s 
    400 # if defined key_vertical 
    401       CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jpts+1/),tsn_id) 
    402       CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jpts+1/),tsn_sponge_id) 
     395 
     396      CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/)  ,(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jpts+1/),tsn_id) 
     397      CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/)  ,(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jpts+1/),tsn_sponge_id) 
    403398      CALL agrif_declare_variable((/1,2,0,0/),(/ind2-1,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,2/),un_interp_id) 
    404399      CALL agrif_declare_variable((/2,1,0,0/),(/ind2,ind3-1,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,2/),vn_interp_id) 
     
    407402      CALL agrif_declare_variable((/1,2,0,0/),(/ind2-1,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,2/),un_sponge_id) 
    408403      CALL agrif_declare_variable((/2,1,0,0/),(/ind2,ind3-1,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,2/),vn_sponge_id) 
    409 # else 
    410       CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jpts/),tsn_id) 
    411       CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jpts/),tsn_sponge_id) 
    412       CALL agrif_declare_variable((/1,2,0,0/),(/ind2-1,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,1/),un_interp_id) 
    413       CALL agrif_declare_variable((/2,1,0,0/),(/ind2,ind3-1,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,1/),vn_interp_id) 
    414       CALL agrif_declare_variable((/1,2,0,0/),(/ind2-1,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,1/),un_update_id) 
    415       CALL agrif_declare_variable((/2,1,0,0/),(/ind2,ind3-1,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,1/),vn_update_id) 
    416       CALL agrif_declare_variable((/1,2,0,0/),(/ind2-1,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,1/),un_sponge_id) 
    417       CALL agrif_declare_variable((/2,1,0,0/),(/ind2,ind3-1,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,1/),vn_sponge_id) 
    418 # endif 
     404 
    419405      CALL agrif_declare_variable((/1,2/),(/ind2-1,ind3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),unb_id) 
    420406      CALL agrif_declare_variable((/2,1/),(/ind2,ind3-1/),(/'x','y'/),(/1,1/),(/jpi,jpj/),vnb_id) 
     
    432418!         CALL agrif_declare_variable((/2,2,0/),(/ind3,ind3,0/),(/'x','y','N'/),(/1,1,1/),(/jpi,jpj,jpk/), en_id) 
    433419!         CALL agrif_declare_variable((/2,2,0/),(/ind3,ind3,0/),(/'x','y','N'/),(/1,1,1/),(/jpi,jpj,jpk/),avt_id) 
    434 # if defined key_vertical 
    435420         CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,2/),avm_id) 
    436 # else 
    437          CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,1/),avm_id) 
    438 # endif 
    439421      ENDIF 
    440422      
     
    608590      CALL Agrif_Set_bcinterp(tra_iceini_id, interp  = AGRIF_linear) 
    609591      CALL Agrif_Set_interp  (tra_iceini_id, interp  = AGRIF_linear) 
    610       CALL Agrif_Set_bcinterp(u_iceini_id  , interp  = AGRIF_linear  ) 
    611       CALL Agrif_Set_interp  (u_iceini_id  , interp  = AGRIF_linear   ) 
     592      CALL Agrif_Set_bcinterp(u_iceini_id  , interp  = AGRIF_linear) 
     593      CALL Agrif_Set_interp  (u_iceini_id  , interp  = AGRIF_linear) 
    612594      CALL Agrif_Set_bcinterp(v_iceini_id  , interp  = AGRIF_linear) 
    613595      CALL Agrif_Set_interp  (v_iceini_id  , interp  = AGRIF_linear) 
     
    731713      ind2 = nn_hls + 2 + nbghostcells_x 
    732714      ind3 = nn_hls + 2 + nbghostcells_y_s 
    733 # if defined key_vertical 
     715 
    734716      CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jptra+1/),trn_id) 
    735717      CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jptra+1/),trn_sponge_id) 
    736 # else 
    737       CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jptra/),trn_id) 
    738       CALL agrif_declare_variable((/2,2,0,0/),(/ind2,ind3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jptra/),trn_sponge_id) 
    739 # endif 
    740718 
    741719      ! 2. Type of interpolation 
     
    788766      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    789767      NAMELIST/namagrif/ ln_agrif_2way, ln_init_chfrpar, rn_sponge_tra, rn_sponge_dyn, rn_trelax_tra, rn_trelax_dyn, & 
    790                        & ln_spc_dyn, ln_chk_bathy 
     768                       & ln_spc_dyn, ln_vremap, ln_chk_bathy 
    791769      !!-------------------------------------------------------------------------------------- 
    792770      ! 
     
    809787         WRITE(numout,*) '      ad. time relaxation for dynamics  rn_trelax_dyn = ', rn_trelax_dyn 
    810788         WRITE(numout,*) '      use special values for dynamics   ln_spc_dyn    = ', ln_spc_dyn 
     789         WRITE(numout,*) '      vertical remapping                ln_vremap     = ', ln_vremap 
    811790         WRITE(numout,*) '      check bathymetry                  ln_chk_bathy  = ', ln_chk_bathy 
    812791      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.