Changeset 13337 for NEMO/branches/2020/dev_r13312_AGRIF-03-04_jchanut_vinterp_tstep/src/NST/agrif_user.F90
- Timestamp:
- 2020-07-24T16:01:24+02:00 (4 years ago)
- 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 148 148 149 149 150 SUBROUTINE Agrif_Init_Domain ( Kbb, Kmm, Kaa )150 SUBROUTINE Agrif_Init_Domain 151 151 !!---------------------------------------------------------------------- 152 152 !! *** ROUTINE Agrif_Init_Domain *** … … 168 168 IMPLICIT NONE 169 169 ! 170 INTEGER, INTENT(in) :: Kbb, Kmm, Kaa171 170 ! 172 171 LOGICAL :: check_namelist … … 186 185 mbkt_parent(:,:) = 0 187 186 ! 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) 190 189 CALL Agrif_Init_Variable(ht0_id , procname=interpht0 ) 191 190 CALL Agrif_Init_Variable(mbkt_id, procname=interpmbkt) … … 214 213 zk(ji,jj) = REAL( mbku_parent(ji,jj), wp ) 215 214 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 ) 217 216 mbku_parent(:,:) = MAX( NINT( zk(:,:) ), 1 ) 218 217 DO_2D( 0, 0, 0, 0 ) 219 218 zk(ji,jj) = REAL( mbkv_parent(ji,jj), wp ) 220 219 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 ) 222 221 mbkv_parent(:,:) = MAX( NINT( zk(:,:) ), 1 ) 223 222 … … 231 230 ! 232 231 kindic_agr = 0 233 IF( .NOT. l _vremap ) THEN232 IF( .NOT. ln_vremap ) THEN 234 233 ! 235 234 ! check if tmask and vertical scale factors agree with parent in sponge area: … … 239 238 ! 240 239 ! 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 ) 250 244 IF( kindic_agr /= 0 ) THEN 251 245 CALL ctl_stop('==> Child Bathymetry is NOT correct near boundaries.') … … 257 251 ENDIF 258 252 259 IF( l _vremap ) THEN253 IF( ln_vremap ) THEN 260 254 ! Additional constrain that should be removed someday: 261 255 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' ) 263 257 ENDIF 264 258 ENDIF … … 291 285 LOGICAL :: check_namelist 292 286 CHARACTER(len=15) :: cl_check1, cl_check2, cl_check3, cl_check4 293 REAL(wp), DIMENSION(jpi,jpj) :: zk ! workspace294 INTEGER :: ji, jj295 287 296 288 ! 1. Declaration of the type of variable which have to be interpolated … … 302 294 Agrif_SpecialValue = 0._wp 303 295 Agrif_UseSpecialValue = .TRUE. 296 l_vremap = ln_vremap 297 304 298 CALL Agrif_Bc_variable( tsn_id,calledweight=1.,procname=interptsn) 305 299 CALL Agrif_Sponge … … 342 336 ENDIF 343 337 Agrif_UseSpecialValue = .FALSE. 338 l_vremap = .FALSE. 344 339 345 340 !----------------- … … 398 393 ind2 = nn_hls + 2 + nbghostcells_x 399 394 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) 403 398 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) 404 399 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) … … 407 402 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) 408 403 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 419 405 CALL agrif_declare_variable((/1,2/),(/ind2-1,ind3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),unb_id) 420 406 CALL agrif_declare_variable((/2,1/),(/ind2,ind3-1/),(/'x','y'/),(/1,1/),(/jpi,jpj/),vnb_id) … … 432 418 ! CALL agrif_declare_variable((/2,2,0/),(/ind3,ind3,0/),(/'x','y','N'/),(/1,1,1/),(/jpi,jpj,jpk/), en_id) 433 419 ! 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_vertical435 420 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 # else437 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 # endif439 421 ENDIF 440 422 … … 608 590 CALL Agrif_Set_bcinterp(tra_iceini_id, interp = AGRIF_linear) 609 591 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) 612 594 CALL Agrif_Set_bcinterp(v_iceini_id , interp = AGRIF_linear) 613 595 CALL Agrif_Set_interp (v_iceini_id , interp = AGRIF_linear) … … 731 713 ind2 = nn_hls + 2 + nbghostcells_x 732 714 ind3 = nn_hls + 2 + nbghostcells_y_s 733 # if defined key_vertical 715 734 716 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) 735 717 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 # else737 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 # endif740 718 741 719 ! 2. Type of interpolation … … 788 766 INTEGER :: ios ! Local integer output status for namelist read 789 767 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_bathy768 & ln_spc_dyn, ln_vremap, ln_chk_bathy 791 769 !!-------------------------------------------------------------------------------------- 792 770 ! … … 809 787 WRITE(numout,*) ' ad. time relaxation for dynamics rn_trelax_dyn = ', rn_trelax_dyn 810 788 WRITE(numout,*) ' use special values for dynamics ln_spc_dyn = ', ln_spc_dyn 789 WRITE(numout,*) ' vertical remapping ln_vremap = ', ln_vremap 811 790 WRITE(numout,*) ' check bathymetry ln_chk_bathy = ', ln_chk_bathy 812 791 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.