Changeset 13109
- Timestamp:
- 2020-06-16T12:07:28+02:00 (3 years ago)
- Location:
- utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/namelist_ref
r13056 r13109 24 24 &namdom ! space and time domain (bathymetry, mesh, timestep) 25 25 !----------------------------------------------------------------------- 26 ln_read_cfg = .false. ! Read from a domain_cfg file 26 27 nn_bathy = 1 ! compute analyticaly (=0) or read (=1) the bathymetry file 27 28 ! or compute (2) from external bathymetry 28 29 nn_interp = 1 ! type of interpolation (nn_bathy =2) 30 cn_domcfg = ' ' ! Name of the domain_cfg input file 29 31 cn_topo = 'bathymetry_ORCA12_V3.3.nc' ! external topo file (nn_bathy =2) 30 32 cn_bath = 'Bathymetry' ! topo name in file (nn_bathy =2) -
utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/agrif_connect.F90
r13104 r13109 29 29 ALLOCATE(e3t_interp(jpi,jpj,jpk)) 30 30 e3t_interp = -10. 31 Agrif_UseSpecialValue = . TRUE.31 Agrif_UseSpecialValue = .FALSE. 32 32 Agrif_SpecialValue = 0. 33 33 CALL Agrif_Bc_variable(e3t_connect_id, procname = connect_e3t_connect) … … 90 90 !!---------------------------------------------------------------------- 91 91 INTEGER :: ji, jj, jk 92 REAL(wp), DIMENSION(i1:i2,j1:j2) :: bathy_local 92 REAL(wp), DIMENSION(i1:i2,j1:j2) :: bathy_local, bathy_interp 93 REAL(wp) :: zdepth, zmax 93 94 ! 94 95 IF( before) THEN … … 114 115 DO ji=i1,i2 115 116 bathy_local (ji,jj) = SUM ( e3t_0(ji,jj, 1:mbkt(ji,jj) ) ) * ssmask(ji,jj) 116 END DO 117 END DO 117 bathy_interp (ji,jj) = ptab(ji,jj,jpk+1) 118 119 ! Connected bathymetry 120 bathy_local(ji,jj)=(1.-ztabramp(ji,jj))*bathy_local(ji,jj)+ztabramp(ji,jj)*bathy_interp(ji,jj) 121 END DO 122 END DO 123 124 ! Update mbkt and ssmask 125 zmax = gdepw_1d(jpk) + e3t_1d(jpk) 126 bathy_local(:,:) = MAX(MIN(zmax,bathy_local(:,:)),0._wp) 127 WHERE( bathy_local(i1:i2,j1:j2) == 0._wp); mbathy(i1:i2,j1:j2) = 0 128 ELSE WHERE ; mbathy(i1:i2,j1:j2) = jpkm1 129 END WHERE 130 131 DO jk=jpkm1,1,-1 132 zdepth = gdepw_1d(jk)+MIN(e3zps_min,e3t_1d(jk)*e3zps_rat) 133 WHERE( 0._wp < bathy_local(:,:) .AND. bathy_local(:,:) <= zdepth ) mbathy(i1:i2,j1:j2) = jk-1 134 ENDDO 135 136 WHERE (mbathy(i1:i2,j1:j2) == 0); ssmask(i1:i2,j1:j2) = 0 137 ELSE WHERE ; ssmask(i1:i2,j1:j2) = 1. 138 END WHERE 139 140 mbkt(i1:i2,j1:j2) = MAX( mbathy(i1:i2,j1:j2), 1 ) 141 118 142 ! 119 143 DO jk=1,jpk … … 125 149 e3t_0(ji,jj,jk) = ( 1. - ztabramp(ji,jj) )*e3t_0(ji,jj,jk) + ztabramp(ji,jj)*e3t_interp(ji,jj,jk) 126 150 ENDIF 151 IF( jk > mbkt(ji,jj)) THEN 152 e3t_0(ji,jj,jk) = e3t_1d(jk) 153 ENDIF 127 154 END DO 128 155 END DO -
utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/agrif_dom_update.F90
r13056 r13109 22 22 IF( Agrif_Root() ) return 23 23 24 CALL agrif_update_variable(bottom_level_id, locupdate=(/npt_copy,0/),procname = update_bottom_level)24 CALL agrif_update_variable(bottom_level_id,procname = update_bottom_level) 25 25 ! 26 26 Agrif_UseSpecialValueInUpdate = .TRUE. … … 41 41 ! 42 42 !!---------------------------------------------------------------------- 43 REAL(WP),DIMENSION(jpi,jpj) :: zk 43 44 ! 44 45 IF( before) THEN … … 49 50 WHERE ( mbkt(i1:i2,j1:j2) .EQ. 0 ) 50 51 ssmask(i1:i2,j1:j2) = 0. 52 mbkt(i1:i2,j1:j2) = 1 51 53 ELSEWHERE 52 54 ssmask(i1:i2,j1:j2) = 1. 53 END WHERE 55 END WHERE 56 zk(:,:) = REAL(mbkt(:,:),wp); CALL lbc_lnk('update_bottom',zk,'T',1.); mbkt(:,:) = MAX(NINT(zk(:,:)),1) 57 CALL lbc_lnk('update_bottom',ssmask,'T',1.) 54 58 ENDIF 55 59 ! … … 71 75 DO jj=j1,j2 72 76 DO ji=i1,i2 73 IF( mbkt(ji,jj) . LE. jk ) THEN77 IF( mbkt(ji,jj) .GE. jk ) THEN 74 78 tabres(ji,jj,jk) = e3t_0(ji,jj,jk) 75 79 ELSE … … 83 87 DO jj=j1,j2 84 88 DO ji=i1,i2 85 IF( mbkt(ji,jj) . LE.jk ) THEN89 IF( mbkt(ji,jj) .GE. jk ) THEN 86 90 e3t_0(ji,jj,jk) = MAX(tabres(ji,jj,jk),MIN(e3zps_min,e3t_1d(jk)*e3zps_rat)) 87 91 ELSE … … 91 95 END DO 92 96 END DO 97 98 CALL lbc_lnk('update_e3t',e3t_0,'T',1.) 93 99 ! 94 100 ENDIF -
utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/domain.F90
r13056 r13109 108 108 & ln_cfmeta, ln_iscpl 109 109 110 NAMELIST/namdom/ nn_bathy, cn_topo, cn_bath, cn_lon, cn_lat, rn_scale, nn_interp, &110 NAMELIST/namdom/ ln_read_cfg, nn_bathy, cn_domcfg, cn_topo, cn_bath, cn_lon, cn_lat, rn_scale, nn_interp, & 111 111 & rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin, & 112 112 & rn_atfp , rn_rdt , ln_crs , jphgr_msh , & … … 405 405 CALL iom_rstput( 0, 0, inum, 'top_level' , REAL( mikt, wp )*ssmask , ktype = jp_i4 ) ! nb of ocean T-points (ISF) 406 406 CALL iom_rstput( 0, 0, inum, 'isf_draft' , risfdep , ktype = jp_r8 ) 407 CALL iom_rstput( 0, 0, inum, 'bathy_metry' , bathy , ktype = jp_r8 ) 407 DO jj = 1,jpj 408 DO ji = 1,jpi 409 z2d (ji,jj) = SUM ( e3t_0(ji,jj, 1:mbkt(ji,jj) ) ) * ssmask(ji,jj) 410 END DO 411 END DO 412 CALL iom_rstput( 0, 0, inum, 'bathy_metry' , z2d , ktype = jp_r8 ) 408 413 ! 409 414 ! !== closed sea ==! -
utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/domzgr.F90
r13056 r13109 204 204 CALL zgr_top_level ! shallowest ocean level for T-, U-, V- points 205 205 k_top = mikt 206 206 WHERE( bathy(:,:) <= 0._wp ) k_top(:,:) = 0 ! set k_top to zero over land 207 207 ENDIF 208 208 ! -
utils/tools_dev_r12970_AGRIF_CMEMS/DOMAINcfg/src/mppini.F90
r13056 r13109 278 278 #if defined key_agrif 279 279 IF( .NOT. Agrif_Root() ) THEN ! AGRIF children: specific setting (cf. agrif_user.F90) 280 IF( jpiglo /= nbcellsx + 2 + 2*nbghostcells ) THEN 280 CALL agrif_nemo_init 281 IF( jpiglo /= nbcellsx + 2 + 2*nbghostcells_x ) THEN 281 282 IF(lwp) THEN 282 283 WRITE(numout,*) 283 WRITE(numout,*) 'jpiglo should be: ', nbcellsx + 2 + 2*nbghostcells 284 WRITE(numout,*) 'jpiglo should be: ', nbcellsx + 2 + 2*nbghostcells_x 284 285 ENDIF 285 286 CALL ctl_stop( 'STOP', 'mpp_init: Agrif children requires jpiglo == nbcellsx + 2 + 2*nbghostcells' ) 286 287 ENDIF 287 IF( jpjglo /= nbcellsy + 2 + 2*nbghostcells) THEN288 IF( jpjglo /= nbcellsy + 2 + nbghostcells_y_s + nbghostcells_y_n ) THEN 288 289 IF(lwp) THEN 289 290 WRITE(numout,*) 290 WRITE(numout,*) 'jpjglo shoud be: ', nbcellsy + 2 + 2*nbghostcells291 WRITE(numout,*) 'jpjglo shoud be: ', nbcellsy + 2 + nbghostcells_y_s + nbghostcells_y_n 291 292 ENDIF 292 CALL ctl_stop( 'STOP', 'mpp_init: Agrif children requires jpjglo == nbcellsy + 2 + 2*nbghostcells' ) 293 CALL ctl_stop( 'STOP', & 294 'mpp_init: Agrif children requires jpjglo == nbcellsy + 2 + nbghostcells_y_s + nbghostcells_y_n' ) 293 295 ENDIF 294 296 IF( ln_use_jattr ) CALL ctl_stop( 'STOP', 'mpp_init:Agrif children requires ln_use_jattr = .false. ' )
Note: See TracChangeset
for help on using the changeset viewer.