Changeset 9209 for branches/2017
- Timestamp:
- 2018-01-10T17:34:05+01:00 (7 years ago)
- Location:
- branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/closea.F90
r9169 r9209 101 101 IF(lwp) WRITE(numout,*)'~~~~~~~' 102 102 ! 103 ! read the closed seas masks (if they exist) from domain_cfg file 104 ! --------------------------------------------------------------- 105 ! 106 CALL iom_open( cn_domcfg, inum ) 107 108 id = iom_varid(inum, 'closea_mask', ldstop = .false.) 109 IF( id > 0 ) THEN 110 l_sbc_clo = .true. 111 ALLOCATE( closea_mask(jpi,jpj) , STAT=ierr ) 112 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'dom_clo: failed to allocate closea_mask array') 113 zdata_in(:,:) = 0.0 114 CALL iom_get ( inum, jpdom_data, 'closea_mask', zdata_in ) 115 closea_mask(:,:) = NINT(zdata_in(:,:)) * tmask(:,:,1) 116 ! number of closed seas = global maximum value in closea_mask field 117 jncs = maxval(closea_mask(:,:)) 118 IF( lk_mpp ) CALL mpp_max(jncs) 119 IF( jncs > 0 ) THEN 120 IF( lwp ) WRITE(numout,*) 'Number of closed seas : ',jncs 121 ELSE 122 CALL ctl_stop( 'Problem with closea_mask field in domain_cfg file. Has no values > 0 so no closed seas defined.') 123 ENDIF 124 ELSE 125 IF( lwp ) WRITE(numout,*) 126 IF( lwp ) WRITE(numout,*) ' ==>>> closea_mask field not found in domain_cfg file.' 127 IF( lwp ) WRITE(numout,*) ' No closed seas defined.' 128 IF( lwp ) WRITE(numout,*) 129 l_sbc_clo = .false. 130 jncs = 0 131 ENDIF 132 133 l_clo_rnf = .false. 134 135 IF( l_sbc_clo ) THEN ! No point reading in closea_mask_rnf or closea_mask_empmr fields if no closed seas defined. 136 137 id = iom_varid(inum, 'closea_mask_rnf', ldstop = .false.) 103 ! read the closed seas masks (if they exist) from domain_cfg file (if it exists) 104 ! ------------------------------------------------------------------------------ 105 ! 106 IF( ln_read_cfg) THEN 107 ! 108 CALL iom_open( cn_domcfg, inum ) 109 ! 110 id = iom_varid(inum, 'closea_mask', ldstop = .false.) 138 111 IF( id > 0 ) THEN 139 l_clo_rnf = .true. 140 ALLOCATE( closea_mask_rnf(jpi,jpj) , STAT=ierr ) 141 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'dom_clo: failed to allocate closea_mask_rnf array') 142 CALL iom_get ( inum, jpdom_data, 'closea_mask_rnf', zdata_in ) 143 closea_mask_rnf(:,:) = NINT(zdata_in(:,:)) * tmask(:,:,1) 144 ! number of closed seas rnf mappings = global maximum in closea_mask_rnf field 145 jncsr = maxval(closea_mask_rnf(:,:)) 146 IF( lk_mpp ) CALL mpp_max(jncsr) 147 IF( jncsr > 0 ) THEN 148 IF( lwp ) WRITE(numout,*) 'Number of closed seas rnf mappings : ',jncsr 112 l_sbc_clo = .true. 113 ALLOCATE( closea_mask(jpi,jpj) , STAT=ierr ) 114 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'dom_clo: failed to allocate closea_mask array') 115 zdata_in(:,:) = 0.0 116 CALL iom_get ( inum, jpdom_data, 'closea_mask', zdata_in ) 117 closea_mask(:,:) = NINT(zdata_in(:,:)) * tmask(:,:,1) 118 ! number of closed seas = global maximum value in closea_mask field 119 jncs = maxval(closea_mask(:,:)) 120 IF( lk_mpp ) CALL mpp_max(jncs) 121 IF( jncs > 0 ) THEN 122 IF( lwp ) WRITE(numout,*) 'Number of closed seas : ',jncs 149 123 ELSE 150 CALL ctl_stop( 'Problem with closea_mask _rnf field in domain_cfg file. Has no values > 0 so no closed seas rnf mappings defined.')124 CALL ctl_stop( 'Problem with closea_mask field in domain_cfg file. Has no values > 0 so no closed seas defined.') 151 125 ENDIF 152 126 ELSE 153 IF( lwp ) WRITE(numout,*) 'closea_mask_rnf field not found in domain_cfg file. No closed seas rnf mappings defined.' 154 jncsr = 0 155 ENDIF 127 IF( lwp ) WRITE(numout,*) 128 IF( lwp ) WRITE(numout,*) ' ==>>> closea_mask field not found in domain_cfg file.' 129 IF( lwp ) WRITE(numout,*) ' No closed seas defined.' 130 IF( lwp ) WRITE(numout,*) 131 l_sbc_clo = .false. 132 jncs = 0 133 ENDIF 134 135 l_clo_rnf = .false. 136 137 IF( l_sbc_clo ) THEN ! No point reading in closea_mask_rnf or closea_mask_empmr fields if no closed seas defined. 138 139 id = iom_varid(inum, 'closea_mask_rnf', ldstop = .false.) 140 IF( id > 0 ) THEN 141 l_clo_rnf = .true. 142 ALLOCATE( closea_mask_rnf(jpi,jpj) , STAT=ierr ) 143 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'dom_clo: failed to allocate closea_mask_rnf array') 144 CALL iom_get ( inum, jpdom_data, 'closea_mask_rnf', zdata_in ) 145 closea_mask_rnf(:,:) = NINT(zdata_in(:,:)) * tmask(:,:,1) 146 ! number of closed seas rnf mappings = global maximum in closea_mask_rnf field 147 jncsr = maxval(closea_mask_rnf(:,:)) 148 IF( lk_mpp ) CALL mpp_max(jncsr) 149 IF( jncsr > 0 ) THEN 150 IF( lwp ) WRITE(numout,*) 'Number of closed seas rnf mappings : ',jncsr 151 ELSE 152 CALL ctl_stop( 'Problem with closea_mask_rnf field in domain_cfg file. Has no values > 0 so no closed seas rnf mappings defined.') 153 ENDIF 154 ELSE 155 IF( lwp ) WRITE(numout,*) 'closea_mask_rnf field not found in domain_cfg file. No closed seas rnf mappings defined.' 156 jncsr = 0 157 ENDIF 156 158 157 id = iom_varid(inum, 'closea_mask_empmr', ldstop = .false.) 158 IF( id > 0 ) THEN 159 l_clo_rnf = .true. 160 ALLOCATE( closea_mask_empmr(jpi,jpj) , STAT=ierr ) 161 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'dom_clo: failed to allocate closea_mask_empmr array') 162 CALL iom_get ( inum, jpdom_data, 'closea_mask_empmr', zdata_in ) 163 closea_mask_empmr(:,:) = NINT(zdata_in(:,:)) * tmask(:,:,1) 164 ! number of closed seas empmr mappings = global maximum value in closea_mask_empmr field 165 jncse = maxval(closea_mask_empmr(:,:)) 166 IF( lk_mpp ) CALL mpp_max(jncse) 167 IF( jncse > 0 ) THEN 168 IF( lwp ) WRITE(numout,*) 'Number of closed seas empmr mappings : ',jncse 169 ELSE 170 CALL ctl_stop( 'Problem with closea_mask_empmr field in domain_cfg file. Has no values > 0 so no closed seas empmr mappings defined.') 159 id = iom_varid(inum, 'closea_mask_empmr', ldstop = .false.) 160 IF( id > 0 ) THEN 161 l_clo_rnf = .true. 162 ALLOCATE( closea_mask_empmr(jpi,jpj) , STAT=ierr ) 163 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'dom_clo: failed to allocate closea_mask_empmr array') 164 CALL iom_get ( inum, jpdom_data, 'closea_mask_empmr', zdata_in ) 165 closea_mask_empmr(:,:) = NINT(zdata_in(:,:)) * tmask(:,:,1) 166 ! number of closed seas empmr mappings = global maximum value in closea_mask_empmr field 167 jncse = maxval(closea_mask_empmr(:,:)) 168 IF( lk_mpp ) CALL mpp_max(jncse) 169 IF( jncse > 0 ) THEN 170 IF( lwp ) WRITE(numout,*) 'Number of closed seas empmr mappings : ',jncse 171 ELSE 172 CALL ctl_stop( 'Problem with closea_mask_empmr field in domain_cfg file. Has no values > 0 so no closed seas empmr mappings defined.') 173 ENDIF 174 ELSE 175 IF( lwp ) WRITE(numout,*) 'closea_mask_empmr field not found in domain_cfg file. No closed seas empmr mappings defined.' 176 jncse = 0 171 177 ENDIF 172 ELSE 173 IF( lwp ) WRITE(numout,*) 'closea_mask_empmr field not found in domain_cfg file. No closed seas empmr mappings defined.' 174 jncse = 0 175 ENDIF 176 177 ENDIF ! l_sbc_clo 178 ! 179 CALL iom_close( inum ) 178 179 ENDIF ! l_sbc_clo 180 ! 181 CALL iom_close( inum ) 182 ! 183 ELSE ! ln_read_cfg = .false. so no domain_cfg file 184 IF( lwp ) WRITE(numout,*) 'No domain_cfg file so no closed seas defined.' 185 l_sbc_clo = .false. 186 l_clo_rnf = .false. 187 ENDIF 180 188 ! 181 189 END SUBROUTINE dom_clo … … 447 455 ENDIF 448 456 ! 449 CALL iom_open( cn_domcfg, inum ) 450 ! 451 id = iom_varid(inum, 'closea_mask', ldstop = .false.) 452 IF( id > 0 ) THEN 453 IF( lwp ) WRITE(numout,*) 'Suppressing closed seas in bathymetry based on closea_mask field,' 454 CALL iom_get ( inum, jpdom_data, 'closea_mask', zdata_in ) 455 closea_mask(:,:) = NINT(zdata_in(:,:)) 456 WHERE( closea_mask(:,:) > 0 ) 457 k_top(:,:) = 0 458 k_bot(:,:) = 0 459 ENDWHERE 457 IF( ln_read_cfg ) THEN 458 ! 459 CALL iom_open( cn_domcfg, inum ) 460 ! 461 id = iom_varid(inum, 'closea_mask', ldstop = .false.) 462 IF( id > 0 ) THEN 463 IF( lwp ) WRITE(numout,*) 'Suppressing closed seas in bathymetry based on closea_mask field,' 464 CALL iom_get ( inum, jpdom_data, 'closea_mask', zdata_in ) 465 closea_mask(:,:) = NINT(zdata_in(:,:)) 466 WHERE( closea_mask(:,:) > 0 ) 467 k_top(:,:) = 0 468 k_bot(:,:) = 0 469 ENDWHERE 470 ELSE 471 IF( lwp ) WRITE(numout,*) 'No closea_mask field found in domain_cfg file. No suppression of closed seas.' 472 ENDIF 473 ! 474 CALL iom_close(inum) 475 ! 460 476 ELSE 461 IF( lwp ) WRITE(numout,*) 'No closea_mask field found in domain_cfg file. No suppression of closed seas.'477 IF( lwp ) WRITE(numout,*) 'No domain_cfg file => no suppression of closed seas.' 462 478 ENDIF 463 479 ! … … 466 482 l_clo_rnf = .false. 467 483 ! 468 CALL iom_close(inum)469 !470 484 END SUBROUTINE clo_bat 471 485 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r9201 r9209 120 120 CALL dom_zgr( ik_top, ik_bot ) ! Vertical mesh and bathymetry 121 121 CALL dom_msk( ik_top, ik_bot ) ! Masks 122 IF( ln_closea .AND. ln_read_cfg) CALL dom_clo ! ln_closea=T : closed seas included in the simulation122 IF( ln_closea ) CALL dom_clo ! ln_closea=T : closed seas included in the simulation 123 123 ! Read in masks to define closed seas and lakes 124 124 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r9198 r9209 96 96 & k_top , k_bot ) ! 1st & last ocean level 97 97 ! 98 ! Any closed seas (defined by closea_mask > 0 in domain_cfg file) to be filled99 ! in at runtime if ln_closea=.false.100 IF( .NOT.ln_closea ) CALL clo_bat( k_top, k_bot )101 !102 98 ELSE !== User defined configuration ==! 103 99 IF(lwp) WRITE(numout,*) … … 119 115 gde3w_0(:,:,jk) = gde3w_0(:,:,jk-1) + e3w_0(:,:,jk) 120 116 END DO 117 ! 118 ! Any closed seas (defined by closea_mask > 0 in domain_cfg file) to be filled 119 ! in at runtime if ln_closea=.false. 120 IF( .NOT.ln_closea ) CALL clo_bat( k_top, k_bot ) 121 121 ! 122 122 IF(lwp) THEN ! Control print -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfdrg.F90
r9190 r9209 249 249 cl_namcfg = 'namdrg_bot in configuration namelist' 250 250 cl_file = 'bfr_coef.nc' 251 cl_varname = ' tfr_coef'251 cl_varname = 'bfr_coef' 252 252 CASE DEFAULT 253 253 CALL ctl_stop( 'drg_init: bad value for cd_topbot ' )
Note: See TracChangeset
for help on using the changeset viewer.