| 125 | #if defined key_bdy |
| 126 | NAMELIST/nambdy/ nb_bdy, ln_coords_file, cn_coords_file, & |
| 127 | & ln_mask_file, cn_mask_file, cn_dyn2d, nn_dyn2d_dta, & |
| 128 | & cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta, & |
| 129 | & ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & |
| 130 | & cn_ice_lim, nn_ice_lim_dta, & |
| 131 | & rn_ice_tem, rn_ice_sal, rn_ice_age, & |
| 132 | & ln_vol, nn_volctl, nn_rimwidth, nb_jpk_bdy |
| 133 | #endif |
| 181 | #if defined key_bdy |
| 182 | NAMELIST/nambdy/ nb_bdy, ln_coords_file, cn_coords_file, & |
| 183 | & ln_mask_file, cn_mask_file, cn_dyn2d, nn_dyn2d_dta, & |
| 184 | & cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta, & |
| 185 | & ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & |
| 186 | & cn_ice_lim, nn_ice_lim_dta, & |
| 187 | & rn_ice_tem, rn_ice_sal, rn_ice_age, & |
| 188 | & ln_vol, nn_volctl, nn_rimwidth, nb_jpk_bdy |
| 189 | |
| 190 | REWIND( numnam_ref ) ! Namelist nambdy in reference namelist :Unstructured open boundaries |
| 191 | READ ( numnam_ref, nambdy, IOSTAT = ios, ERR = 901) |
| 192 | 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist', lwp ) |
| 193 | |
| 194 | REWIND( numnam_cfg ) ! Namelist nambdy in configuration namelist :Unstructured open boundaries |
| 195 | READ ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 902 ) |
| 196 | 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) |
| 197 | IF(lwm) WRITE ( numond, nambdy ) |
| 198 | |
| 199 | IF( ln_mask_file ) THEN ! correct for bdy mask |
| 200 | CALL iom_open( cn_mask_file, inum ) |
| 201 | CALL iom_get ( inum, jpdom_data, 'bdy_msk', bdytmask(:,:) ) |
| 202 | CALL iom_close( inum ) |
| 203 | |
| 204 | ! Derive mask on U and V grid from mask on T grid |
| 205 | bdyumask(:,:) = 0.e0 |
| 206 | bdyvmask(:,:) = 0.e0 |
| 207 | DO jj=1, jpjm1 |
| 208 | DO ji=1, jpim1 |
| 209 | bdyumask(ji,jj)=bdytmask(ji,jj)*bdytmask(ji+1, jj ) |
| 210 | bdyvmask(ji,jj)=bdytmask(ji,jj)*bdytmask(ji ,jj+1) |
| 211 | END DO |
| 212 | END DO |
| 213 | CALL lbc_lnk( bdyumask(:,:), 'U', 1. ) ; CALL lbc_lnk( bdyvmask(:,:), 'V', 1. ) ! Lateral boundary cond. |
| 214 | |
| 215 | |
| 216 | ! Mask corrections |
| 217 | ! ---------------- |
| 218 | DO jk = 1, jpkm1 |
| 219 | DO jj = 1, jpj |
| 220 | DO ji = 1, jpi |
| 221 | tmask(ji,jj,jk) = tmask(ji,jj,jk) * bdytmask(ji,jj) |
| 222 | END DO |
| 223 | END DO |
| 224 | END DO |
| 225 | ENDIF |
| 226 | #endif |