- Timestamp:
- 2013-09-24T12:25:20+02:00 (11 years ago)
- Location:
- branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdylib.F90
r4008 r4033 58 58 INTEGER :: ii_offset, ij_offset ! offsets for mask indices 59 59 INTEGER :: flagu, flagv ! short cuts 60 REAL(wp) :: zdt, zdx, zdy, znor2, zcx, zcy ! intermediate calculations 60 REAL(wp) :: zmask_x, zmask_y1, zmask_y2 61 REAL(wp) :: zex, zey, zey1, zey2 62 REAL(wp) :: zdt, zdx, zdy, znor2, zrx, zry ! intermediate calculations 61 63 REAL(wp) :: zout, zwgt, zdy_centred 62 REAL(wp) :: zdy_left, zdy_right, zsign_ups 64 REAL(wp) :: zdy_1, zdy_2, zsign_ups 65 REAL(wp), PARAMETER :: zepsilon = 1.e-30 ! local small value 63 66 REAL(wp), POINTER, DIMENSION(:,:) :: pmask ! land/sea mask for field 64 REAL(wp), POINTER, DIMENSION(:,:) :: pmask_xdiv ! land/sea mask for x-derivatives 65 REAL(wp), POINTER, DIMENSION(:,:) :: pmask_ydiv ! land/sea mask for y-derivatives 67 REAL(wp), POINTER, DIMENSION(:,:) :: pmask_xdif ! land/sea mask for x-derivatives 68 REAL(wp), POINTER, DIMENSION(:,:) :: pmask_ydif ! land/sea mask for y-derivatives 69 REAL(wp), POINTER, DIMENSION(:,:) :: pe_xdif ! scale factors for x-derivatives 70 REAL(wp), POINTER, DIMENSION(:,:) :: pe_ydif ! scale factors for y-derivatives 66 71 !!---------------------------------------------------------------------- 67 72 … … 75 80 CASE(1) 76 81 pmask => tmask(:,:,1) 77 pmask_xdiv => umask(:,:,1) 82 pmask_xdif => umask(:,:,1) 83 pmask_ydif => vmask(:,:,1) 84 pe_xdif => e1u(:,:) 85 pe_ydif => e2v(:,:) 78 86 ii_offset = 0 79 pmask_ydiv => vmask(:,:,1)80 87 ij_offset = 0 81 88 CASE(2) 82 89 pmask => umask(:,:,1) 83 pmask_xdiv => tmask(:,:,1) 90 pmask_xdif => tmask(:,:,1) 91 pmask_ydif => fmask(:,:,1) 92 pe_xdif => e1t(:,:) 93 pe_ydif => e2f(:,:) 84 94 ii_offset = 1 85 pmask_ydiv => fmask(:,:,1)86 95 ij_offset = 0 87 96 CASE(3) 88 97 pmask => vmask(:,:,1) 89 pmask_xdiv => fmask(:,:,1) 98 pmask_xdif => fmask(:,:,1) 99 pmask_ydif => tmask(:,:,1) 100 pe_xdif => e1f(:,:) 101 pe_ydif => e2t(:,:) 90 102 ii_offset = 0 91 pmask_ydiv => tmask(:,:,1)92 103 ij_offset = 1 93 104 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for igrd in bdy_orlanksi_2d' ) … … 100 111 flagv = int( idx%flagv(jb,igrd) ) 101 112 ! 102 ! calculate positions of b-1 and b-2 points for this rim point113 ! Calculate positions of b-1 and b-2 points for this rim point 103 114 ! also (b-1,j-1) and (b-1,j+1) points 104 115 iibm1 = ii + flagu ; iibm2 = ii + 2*flagu 105 116 ijbm1 = ij + flagv ; ijbm2 = ij + 2*flagv 106 !117 ! 107 118 iijm1 = ii - abs(flagv) ; iijp1 = ii + abs(flagv) 108 119 ijjm1 = ij - abs(flagu) ; ijjp1 = ij + abs(flagu) … … 111 122 ijbm1jm1 = ij + flagv - abs(flagu) ; ijbm1jp1 = ij + flagv + abs(flagu) 112 123 ! 113 ! Calculate normal (zcx) and tangential (zcy) components of radiation velocities. 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) ) 127 zey1 = ( (iibm1-iibm1jm1) * pe_xdif(iibm1jm1+ii_offset,ijbm1jm1 ) & 128 & + (ijbm1-ijbm1jm1) * pe_ydif(iibm1jm1 ,ijbm1jm1+ij_offset) ) 129 zey2 = ( (iibm1jp1-iibm1) * pe_xdif(iibm1+ii_offset,ijbm1) & 130 & + (ijbm1jp1-ijbm1) * pe_ydif(iibm1 ,ijbm1+ij_offset) ) 131 ! make sure scale factors are nonzero 132 if( zey1 .lt. rsmall ) zey1 = zey2 133 if( zey2 .lt. rsmall ) zey2 = zey1 134 zex = max(zex,rsmall); zey1 = max(zey1,rsmall); zey2 = max(zey2,rsmall); 135 ! 136 ! Calculate masks for calculation of spatial derivatives. 137 zmask_x = ( abs(iibm1-iibm2) * pmask_xdif(iibm2+ii_offset,ijbm2 ) & 138 & + abs(ijbm1-ijbm2) * pmask_ydif(iibm2 ,ijbm2+ij_offset) ) 139 zmask_y1 = ( (iibm1-iibm1jm1) * pmask_xdif(iibm1jm1+ii_offset,ijbm1jm1 ) & 140 & + (ijbm1-ijbm1jm1) * pmask_ydif(iibm1jm1 ,ijbm1jm1+ij_offset) ) 141 zmask_y2 = ( (iibm1jp1-iibm1) * pmask_xdif(iibm1+ii_offset,ijbm1) & 142 & + (ijbm1jp1-ijbm1) * pmask_ydif(iibm1 ,ijbm1+ij_offset) ) 143 144 ! Calculation of terms required for both versions of the scheme. 114 145 ! Mask derivatives to ensure correct land boundary conditions for each variable. 115 146 ! Centred derivative is calculated as average of "left" and "right" derivatives for 116 147 ! this reason. 148 ! Note no rdt factor in expression for zdt because it cancels in the expressions for 149 ! zrx and zry. 117 150 zdt = phia(iibm1,ijbm1) - phib(iibm1,ijbm1) 118 zdx = ( phia(iibm1,ijbm1) - phia(iibm2,ijbm2) ) & 119 & * ( abs(iibm1-iibm2) * pmask_xdiv(iibm2+ii_offset,ijbm2 ) & 120 & + abs(ijbm1-ijbm2) * pmask_ydiv(iibm2 ,ijbm2+ij_offset) ) 121 zdy_left = phib(iibm1 ,ijbm1 ) - phib(iibm1jm1,ijbm1jm1) & 122 & * ( (iibm1-iibm1jm1) * pmask_xdiv(iibm1jm1+ii_offset,ijbm1jm1 ) & 123 & + (ijbm1-ijbm1jm1) * pmask_ydiv(iibm1jm1 ,ijbm1jm1+ij_offset) ) 124 zdy_right = phib(iibm1jp1,ijbm1jp1) - phib(iibm1 ,ijbm1) & 125 & * ( (iibm1jp1-iibm1) * pmask_xdiv(iibm1+ii_offset,ijbm1) & 126 & + (ijbm1jp1-ijbm1) * pmask_ydiv(iibm1 ,ijbm1+ij_offset) ) 127 zdy_centred = 0.5 * ( zdy_left + zdy_right ) 151 zdx = ( ( phia(iibm1,ijbm1) - phia(iibm2,ijbm2) ) / zex ) * zmask_x 152 zdy_1 = ( ( phib(iibm1 ,ijbm1 ) - phib(iibm1jm1,ijbm1jm1) ) / zey1 ) * zmask_y1 153 zdy_2 = ( ( phib(iibm1jp1,ijbm1jp1) - phib(iibm1 ,ijbm1) ) / zey2 ) * zmask_y2 154 zdy_centred = 0.5 * ( zdy_1 + zdy_2 ) 128 155 !!$ zdy_centred = phib(iibm1jp1,ijbm1jp1) - phib(iibm1jm1,ijbm1jm1) 129 156 ! upstream differencing for tangential derivatives 130 157 zsign_ups = sign( 1., zdt * zdy_centred ) 131 158 zsign_ups = 0.5*( zsign_ups + abs(zsign_ups) ) 132 zdy = zsign_ups * zdy_ left + (1. - zsign_ups) * zdy_right159 zdy = zsign_ups * zdy_1 + (1. - zsign_ups) * zdy_2 133 160 znor2 = zdx * zdx + zdy * zdy 134 znor2 = max(znor2,rsmall) 135 zcx = zdt * zdx / znor2 136 zcy = zdt * zdy / znor2 137 ! 138 ! update boundary value: 139 zout = sign( 1., zcx ) 161 znor2 = max(znor2,zepsilon) 162 ! 163 zrx = zdt * zdx / ( zex * znor2 ) 164 zrx = min(zrx,2.0_wp) 165 zout = sign( 1., zrx ) 140 166 zout = 0.5*( zout + abs(zout) ) 141 zwgt = (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd)167 zwgt = 2.*rdt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 142 168 ! only apply radiation on outflow points 143 169 if( ll_npo ) then !! NPO version !! 144 phia(ii,ij) = (1.-zout) * phib(ii,ij) & 145 & + zout * ( phib(ii,ij) + zcx*phia(iibm1,ijbm1) ) / ( 1. + zcx ) 170 phia(ii,ij) = (1.-zout) * ( phib(ii,ij) + zwgt * ( phi_ext(jb) - phib(ii,ij) ) ) & 171 & + zout * ( phib(ii,ij) + zrx*phia(iibm1,ijbm1) & 172 & + zwgt * ( phi_ext(jb) - phib(ii,ij) ) ) / ( 1. + zrx ) 146 173 else !! full oblique radiation !! 147 zsign_ups = sign( 1., z cy )174 zsign_ups = sign( 1., zdt * zdy ) 148 175 zsign_ups = 0.5*( zsign_ups + abs(zsign_ups) ) 149 phia(ii,ij) = (1.-zout) * phib(ii,ij) & 150 & + zout * ( phib(ii,ij) + zcx*phia(iibm1,ijbm1) & 151 & - zsign_ups * zcy * ( phib(ii ,ij ) - phib(iijm1,ijjm1 ) ) & 152 & - (1.-zsign_ups) * zcy * ( phib(iijp1,ijjp1) - phib(ii ,ij ) ) ) / ( 1. + zcx ) 176 zey = zsign_ups * zey1 + (1.-zsign_ups) * zey2 177 zry = zdt * zdy / ( zey * znor2 ) 178 phia(ii,ij) = (1.-zout) * ( phib(ii,ij) + zwgt * ( phi_ext(jb) - phib(ii,ij) ) ) & 179 & + zout * ( phib(ii,ij) + zrx*phia(iibm1,ijbm1) & 180 & - zsign_ups * zry * ( phib(ii ,ij ) - phib(iijm1,ijjm1 ) ) & 181 & - (1.-zsign_ups) * zry * ( phib(iijp1,ijjp1) - phib(ii ,ij ) ) & 182 & + zwgt * ( phi_ext(jb) - phib(ii,ij) ) ) / ( 1. + zrx ) 153 183 end if 154 phia(ii,ij) = phia(ii,ij) + zwgt * ( phi_ext(jb) - phib(ii,ij) )155 184 phia(ii,ij) = phia(ii,ij) * pmask(ii,ij) 156 185 END DO … … 185 214 INTEGER :: ii_offset, ij_offset ! offsets for mask indices 186 215 INTEGER :: flagu, flagv ! short cuts 187 REAL(wp) :: zdt, zdx, zdy, znor2, zcx, zcy ! intermediate calculations 216 REAL(wp) :: zmask_x, zmask_y1, zmask_y2 217 REAL(wp) :: zex, zey, zey1, zey2 218 REAL(wp) :: zdt, zdx, zdy, znor2, zrx, zry ! intermediate calculations 188 219 REAL(wp) :: zout, zwgt, zdy_centred 189 REAL(wp) :: zdy_left, zdy_right, zsign_ups 220 REAL(wp) :: zdy_1, zdy_2, zsign_ups 221 REAL(wp), PARAMETER :: zepsilon = 1.e-30 ! local small value 190 222 REAL(wp), POINTER, DIMENSION(:,:,:) :: pmask ! land/sea mask for field 191 REAL(wp), POINTER, DIMENSION(:,:,:) :: pmask_xdiv ! land/sea mask for x-derivatives 192 REAL(wp), POINTER, DIMENSION(:,:,:) :: pmask_ydiv ! land/sea mask for y-derivatives 223 REAL(wp), POINTER, DIMENSION(:,:,:) :: pmask_xdif ! land/sea mask for x-derivatives 224 REAL(wp), POINTER, DIMENSION(:,:,:) :: pmask_ydif ! land/sea mask for y-derivatives 225 REAL(wp), POINTER, DIMENSION(:,:) :: pe_xdif ! scale factors for x-derivatives 226 REAL(wp), POINTER, DIMENSION(:,:) :: pe_ydif ! scale factors for y-derivatives 193 227 !!---------------------------------------------------------------------- 194 228 … … 202 236 CASE(1) 203 237 pmask => tmask(:,:,:) 204 pmask_xdiv => umask(:,:,:) 238 pmask_xdif => umask(:,:,:) 239 pmask_ydif => vmask(:,:,:) 240 pe_xdif => e1u(:,:) 241 pe_ydif => e2v(:,:) 205 242 ii_offset = 0 206 pmask_ydiv => vmask(:,:,:)207 243 ij_offset = 0 208 244 CASE(2) 209 245 pmask => umask(:,:,:) 210 pmask_xdiv => tmask(:,:,:) 246 pmask_xdif => tmask(:,:,:) 247 pmask_ydif => fmask(:,:,:) 248 pe_xdif => e1t(:,:) 249 pe_ydif => e2f(:,:) 211 250 ii_offset = 1 212 pmask_ydiv => fmask(:,:,:)213 251 ij_offset = 0 214 252 CASE(3) 215 253 pmask => vmask(:,:,:) 216 pmask_xdiv => fmask(:,:,:) 254 pmask_xdif => fmask(:,:,:) 255 pmask_ydif => tmask(:,:,:) 256 pe_xdif => e1f(:,:) 257 pe_ydif => e2t(:,:) 217 258 ii_offset = 0 218 pmask_ydiv => tmask(:,:,:)219 259 ij_offset = 1 220 260 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for igrd in bdy_orlanksi_2d' ) … … 240 280 ijbm1jm1 = ij + flagv - abs(flagu) ; ijbm1jp1 = ij + flagv + abs(flagu) 241 281 ! 242 ! Calculate normal (zcx) and tangential (zcy) components of radiation velocities. 282 ! 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) ) 285 zey1 = ( (iibm1-iibm1jm1) * pe_xdif(iibm1jm1+ii_offset,ijbm1jm1 ) & 286 & + (ijbm1-ijbm1jm1) * pe_ydif(iibm1jm1 ,ijbm1jm1+ij_offset) ) 287 zey2 = ( (iibm1jp1-iibm1) * pe_xdif(iibm1+ii_offset,ijbm1) & 288 & + (ijbm1jp1-ijbm1) * pe_ydif(iibm1 ,ijbm1+ij_offset) ) 289 ! make sure scale factors are nonzero 290 if( zey1 .lt. rsmall ) zey1 = zey2 291 if( zey2 .lt. rsmall ) zey2 = zey1 292 zex = max(zex,rsmall); zey1 = max(zey1,rsmall); zey2 = max(zey2,rsmall); 293 ! 294 ! Calculate masks for calculation of spatial derivatives. 295 zmask_x = ( abs(iibm1-iibm2) * pmask_xdif(iibm2+ii_offset,ijbm2 ,jk) & 296 & + abs(ijbm1-ijbm2) * pmask_ydif(iibm2 ,ijbm2+ij_offset,jk) ) 297 zmask_y1 = ( (iibm1-iibm1jm1) * pmask_xdif(iibm1jm1+ii_offset,ijbm1jm1 ,jk) & 298 & + (ijbm1-ijbm1jm1) * pmask_ydif(iibm1jm1 ,ijbm1jm1+ij_offset,jk) ) 299 zmask_y2 = ( (iibm1jp1-iibm1) * pmask_xdif(iibm1+ii_offset,ijbm1 ,jk) & 300 & + (ijbm1jp1-ijbm1) * pmask_ydif(iibm1 ,ijbm1+ij_offset,jk) ) 301 ! 302 ! Calculate normal (zrx) and tangential (zry) components of radiation velocities. 243 303 ! Mask derivatives to ensure correct land boundary conditions for each variable. 244 304 ! Centred derivative is calculated as average of "left" and "right" derivatives for 245 305 ! this reason. 246 306 zdt = phia(iibm1,ijbm1,jk) - phib(iibm1,ijbm1,jk) 247 zdx = phia(iibm1,ijbm1,jk) - phia(iibm2,ijbm2,jk) & 248 & * ( (iibm1-iibm2) * pmask_xdiv(iibm2+ii_offset,ijbm2 ,jk) & 249 & + (ijbm1-ijbm2) * pmask_ydiv(iibm2 ,ijbm2+ij_offset,jk) ) 250 zdy_left = phib(iibm1 ,ijbm1 ,jk) - phib(iibm1jm1,ijbm1jm1,jk) & 251 & * ( (iibm1-iibm1jm1) * pmask_xdiv(iibm1jm1+ii_offset,ijbm1jm1 ,jk) & 252 & + (ijbm1-ijbm1jm1) * pmask_ydiv(iibm1jm1 ,ijbm1jm1+ij_offset,jk) ) 253 zdy_right = phib(iibm1jp1,ijbm1jp1,jk) - phib(iibm1 ,ijbm1 ,jk) & 254 & * ( (iibm1jp1-iibm1) * pmask_xdiv(iibm1+ii_offset,ijbm1 ,jk) & 255 & + (ijbm1jp1-ijbm1) * pmask_ydiv(iibm1 ,ijbm1+ij_offset,jk) ) 256 zdy_centred = 0.5 * ( zdy_left + zdy_right ) 257 zdy_centred = phib(iibm1jp1,ijbm1jp1,jk) - phib(iibm1jm1,ijbm1jm1,jk) 307 zdx = ( ( phia(iibm1,ijbm1,jk) - phia(iibm2,ijbm2,jk) ) / zex ) * zmask_x 308 zdy_1 = ( ( phib(iibm1 ,ijbm1 ,jk) - phib(iibm1jm1,ijbm1jm1,jk) ) / zey1 ) * zmask_y1 309 zdy_2 = ( ( phib(iibm1jp1,ijbm1jp1,jk) - phib(iibm1 ,ijbm1 ,jk) ) / zey2 ) * zmask_y2 310 zdy_centred = 0.5 * ( zdy_1 + zdy_2 ) 311 !!$ zdy_centred = phib(iibm1jp1,ijbm1jp1,jk) - phib(iibm1jm1,ijbm1jm1,jk) 258 312 ! upstream differencing for tangential derivatives 259 313 zsign_ups = sign( 1., zdt * zdy_centred ) 260 314 zsign_ups = 0.5*( zsign_ups + abs(zsign_ups) ) 261 zdy = zsign_ups * zdy_ left + (1. - zsign_ups) * zdy_right315 zdy = zsign_ups * zdy_1 + (1. - zsign_ups) * zdy_2 262 316 znor2 = zdx * zdx + zdy * zdy 263 znor2 = max(znor2,rsmall) 264 zcx = zdt * zdx / znor2 265 zcy = zdt * zdy / znor2 317 znor2 = max(znor2,zepsilon) 266 318 ! 267 319 ! update boundary value: 268 zout = sign( 1., zcx ) 320 zrx = zdt * zdx / ( zex * znor2 ) 321 zrx = min(zrx,2.0_wp) 322 zout = sign( 1., zrx ) 269 323 zout = 0.5*( zout + abs(zout) ) 270 zwgt = (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd)324 zwgt = 2.*rdt*( (1.-zout) * idx%nbd(jb,igrd) + zout * idx%nbdout(jb,igrd) ) 271 325 ! only apply radiation on outflow points 272 326 if( ll_npo ) then !! NPO version !! 273 phia(ii,ij,jk) = (1.-zout) * phib(ii,ij,jk) & 274 & + zout * ( phib(ii,ij,jk) + zcx*phia(iibm1,ijbm1,jk) ) / ( 1. + zcx ) 327 phia(ii,ij,jk) = (1.-zout) * ( phib(ii,ij,jk) + zwgt * ( phi_ext(jb,jk) - phib(ii,ij,jk) ) ) & 328 & + zout * ( phib(ii,ij,jk) + zrx*phia(iibm1,ijbm1,jk) & 329 & + zwgt * ( phi_ext(jb,jk) - phib(ii,ij,jk) ) ) / ( 1. + zrx ) 275 330 else !! full oblique radiation !! 276 zsign_ups = sign( 1., z cy )331 zsign_ups = sign( 1., zdt * zdy ) 277 332 zsign_ups = 0.5*( zsign_ups + abs(zsign_ups) ) 278 phia(ii,ij,jk) = (1.-zout) * phib(ii,ij,jk) & 279 & + zout * ( phib(ii,ij,jk) + zcx*phia(iibm1,ijbm1,jk) & 280 & - zsign_ups * zcy * ( phib(ii ,ij ,jk) - phib(iijm1,ijjm1,jk ) ) & 281 & - (1.-zsign_ups) * zcy * ( phib(iijp1,ijjp1,jk) - phib(ii ,ij ,jk ) ) ) / ( 1. + zcx ) 333 zey = zsign_ups * zey1 + (1.-zsign_ups) * zey2 334 zry = zdt * zdy / ( zey * znor2 ) 335 phia(ii,ij,jk) = (1.-zout) * ( phib(ii,ij,jk) + zwgt * ( phi_ext(jb,jk) - phib(ii,ij,jk) ) ) & 336 & + zout * ( phib(ii,ij,jk) + zrx*phia(iibm1,ijbm1,jk) & 337 & - zsign_ups * zry * ( phib(ii ,ij ,jk) - phib(iijm1,ijjm1,jk) ) & 338 & - (1.-zsign_ups) * zry * ( phib(iijp1,ijjp1,jk) - phib(ii ,ij ,jk) ) & 339 & + zwgt * ( phi_ext(jb,jk) - phib(ii,ij,jk) ) ) / ( 1. + zrx ) 282 340 end if 283 !!$ phia(ii,ij,jk) = phia(ii,ij,jk) + zwgt * ( phi_ext(jb,jk) - phib(ii,ij,jk) )284 341 phia(ii,ij,jk) = phia(ii,ij,jk) * pmask(ii,ij,jk) 285 342 END DO -
branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90
r3994 r4033 117 117 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: gphit, gphiu !: latitude of t-, u-, v- and f-points (degre) 118 118 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: gphiv, gphif !: 119 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e1t, e2t !: horizontal scale factors at t-point (m)120 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e1u, e2u !: horizontal scale factors at u-point (m)121 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e1v, e2v !: horizontal scale factors at v-point (m)122 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e1f, e2f !: horizontal scale factors at f-point (m)119 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) :: e1t, e2t !: horizontal scale factors at t-point (m) 120 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) :: e1u, e2u !: horizontal scale factors at u-point (m) 121 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) :: e1v, e2v !: horizontal scale factors at v-point (m) 122 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) :: e1f, e2f !: horizontal scale factors at f-point (m) 123 123 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e1e2t !: surface at t-point (m2) 124 124 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ff !: coriolis factor (2.*omega*sin(yphi) ) (s-1)
Note: See TracChangeset
for help on using the changeset viewer.