Changeset 4046
- Timestamp:
- 2013-09-27T18:18:21+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdylib.F90
r4033 r4046 59 59 INTEGER :: flagu, flagv ! short cuts 60 60 REAL(wp) :: zmask_x, zmask_y1, zmask_y2 61 REAL(wp) :: zex , zey, zey1, zey261 REAL(wp) :: zex1, zex2, zey, zey1, zey2 62 62 REAL(wp) :: zdt, zdx, zdy, znor2, zrx, zry ! intermediate calculations 63 63 REAL(wp) :: zout, zwgt, zdy_centred … … 123 123 ! 124 124 ! Calculate scale factors for calculation of spatial derivatives. 125 zex = ( abs(iibm1-iibm2) * pe_xdif(iibm2+ii_offset,ijbm2 ) & 126 & + abs(ijbm1-ijbm2) * pe_ydif(iibm2 ,ijbm2+ij_offset) ) 125 zex1 = ( abs(iibm1-iibm2) * pe_xdif(iibm1+ii_offset,ijbm1 ) & 126 & + abs(ijbm1-ijbm2) * pe_ydif(iibm1 ,ijbm1+ij_offset) ) 127 zex2 = ( abs(iibm1-iibm2) * pe_xdif(iibm2+ii_offset,ijbm2 ) & 128 & + abs(ijbm1-ijbm2) * pe_ydif(iibm2 ,ijbm2+ij_offset) ) 127 129 zey1 = ( (iibm1-iibm1jm1) * pe_xdif(iibm1jm1+ii_offset,ijbm1jm1 ) & 128 130 & + (ijbm1-ijbm1jm1) * pe_ydif(iibm1jm1 ,ijbm1jm1+ij_offset) ) … … 132 134 if( zey1 .lt. rsmall ) zey1 = zey2 133 135 if( zey2 .lt. rsmall ) zey2 = zey1 134 zex = max(zex,rsmall); zey1 = max(zey1,rsmall); zey2 = max(zey2,rsmall); 136 zex1 = max(zex1,rsmall); zex2 = max(zex2,rsmall) 137 zey1 = max(zey1,rsmall); zey2 = max(zey2,rsmall); 135 138 ! 136 139 ! Calculate masks for calculation of spatial derivatives. … … 149 152 ! zrx and zry. 150 153 zdt = phia(iibm1,ijbm1) - phib(iibm1,ijbm1) 151 zdx = ( ( phia(iibm1,ijbm1) - phia(iibm2,ijbm2) ) / zex ) * zmask_x154 zdx = ( ( phia(iibm1,ijbm1) - phia(iibm2,ijbm2) ) / zex2 ) * zmask_x 152 155 zdy_1 = ( ( phib(iibm1 ,ijbm1 ) - phib(iibm1jm1,ijbm1jm1) ) / zey1 ) * zmask_y1 153 156 zdy_2 = ( ( phib(iibm1jp1,ijbm1jp1) - phib(iibm1 ,ijbm1) ) / zey2 ) * zmask_y2 … … 161 164 znor2 = max(znor2,zepsilon) 162 165 ! 163 zrx = zdt * zdx / ( zex * znor2 )164 zrx = min(zrx,2.0_wp)166 zrx = zdt * zdx / ( zex1 * znor2 ) 167 !!$ zrx = min(zrx,2.0_wp) 165 168 zout = sign( 1., zrx ) 166 169 zout = 0.5*( zout + abs(zout) ) … … 215 218 INTEGER :: flagu, flagv ! short cuts 216 219 REAL(wp) :: zmask_x, zmask_y1, zmask_y2 217 REAL(wp) :: zex , zey, zey1, zey2220 REAL(wp) :: zex1, zex2, zey, zey1, zey2 218 221 REAL(wp) :: zdt, zdx, zdy, znor2, zrx, zry ! intermediate calculations 219 222 REAL(wp) :: zout, zwgt, zdy_centred … … 281 284 ! 282 285 ! Calculate scale factors for calculation of spatial derivatives. 283 zex = ( abs(iibm1-iibm2) * pe_xdif(iibm2+ii_offset,ijbm2 ) & 284 & + abs(ijbm1-ijbm2) * pe_ydif(iibm2 ,ijbm2+ij_offset) ) 286 zex1 = ( abs(iibm1-iibm2) * pe_xdif(iibm1+ii_offset,ijbm1 ) & 287 & + abs(ijbm1-ijbm2) * pe_ydif(iibm1 ,ijbm1+ij_offset) ) 288 zex2 = ( abs(iibm1-iibm2) * pe_xdif(iibm2+ii_offset,ijbm2 ) & 289 & + abs(ijbm1-ijbm2) * pe_ydif(iibm2 ,ijbm2+ij_offset) ) 285 290 zey1 = ( (iibm1-iibm1jm1) * pe_xdif(iibm1jm1+ii_offset,ijbm1jm1 ) & 286 291 & + (ijbm1-ijbm1jm1) * pe_ydif(iibm1jm1 ,ijbm1jm1+ij_offset) ) … … 290 295 if( zey1 .lt. rsmall ) zey1 = zey2 291 296 if( zey2 .lt. rsmall ) zey2 = zey1 292 zex = max(zex,rsmall); zey1 = max(zey1,rsmall); zey2 = max(zey2,rsmall); 297 zex1 = max(zex1,rsmall); zex2 = max(zex2,rsmall); 298 zey1 = max(zey1,rsmall); zey2 = max(zey2,rsmall); 293 299 ! 294 300 ! Calculate masks for calculation of spatial derivatives. … … 305 311 ! this reason. 306 312 zdt = phia(iibm1,ijbm1,jk) - phib(iibm1,ijbm1,jk) 307 zdx = ( ( phia(iibm1,ijbm1,jk) - phia(iibm2,ijbm2,jk) ) / zex ) * zmask_x313 zdx = ( ( phia(iibm1,ijbm1,jk) - phia(iibm2,ijbm2,jk) ) / zex2 ) * zmask_x 308 314 zdy_1 = ( ( phib(iibm1 ,ijbm1 ,jk) - phib(iibm1jm1,ijbm1jm1,jk) ) / zey1 ) * zmask_y1 309 315 zdy_2 = ( ( phib(iibm1jp1,ijbm1jp1,jk) - phib(iibm1 ,ijbm1 ,jk) ) / zey2 ) * zmask_y2 … … 318 324 ! 319 325 ! update boundary value: 320 zrx = zdt * zdx / ( zex * znor2 )321 zrx = min(zrx,2.0_wp)326 zrx = zdt * zdx / ( zex1 * znor2 ) 327 !!$ zrx = min(zrx,2.0_wp) 322 328 zout = sign( 1., zrx ) 323 329 zout = 0.5*( zout + abs(zout) )
Note: See TracChangeset
for help on using the changeset viewer.