Changeset 689 for trunk/NEMO/OPA_SRC
- Timestamp:
- 2007-06-29T19:29:57+02:00 (17 years ago)
- Location:
- trunk/NEMO/OPA_SRC
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DIA/diafwb.F90
r648 r689 44 44 !!---------------------------------------------------------------------- 45 45 !! OPA 9.0 , LOCEAN-IPSL (2005) 46 !! $Header $46 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/DIA/diafwb.F90,v 1.11 2007/06/29 17:01:51 opalod Exp $ 47 47 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 48 48 !!---------------------------------------------------------------------- … … 391 391 clname = 'STRAIT.dat' 392 392 CALL ctlopn( inum, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', & 393 & 1, numout, .TRUE., 1 )393 & 1, numout, lwp, 1 ) 394 394 WRITE(inum,*) 395 395 WRITE(inum,*) 'Net freshwater budget ' -
trunk/NEMO/OPA_SRC/FLO/flodom.F90
r623 r689 29 29 !!---------------------------------------------------------------------- 30 30 !! OPA 9.0 , LOCEAN-IPSL (2005) 31 !! $Header $31 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/FLO/flodom.F90,v 1.7 2007/06/29 17:01:51 opalod Exp $ 32 32 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 33 33 !!---------------------------------------------------------------------- … … 70 70 clname='restart_float' 71 71 CALL ctlopn( inum, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', & 72 & 1, numout, .TRUE., 1 )72 & 1, numout, lwp, 1 ) 73 73 REWIND inum 74 74 -
trunk/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90
r623 r689 8 8 !!---------------------------------------------------------------------- 9 9 !! OPA 9.0 , LOCEAN-IPSL (2005) 10 !! $Header $10 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90,v 1.6 2007/06/29 17:01:51 opalod Exp $ 11 11 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 12 12 !!---------------------------------------------------------------------- … … 166 166 167 167 CALL ctlopn( inum, 'ahmcoef', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', & 168 & 1, numout, .TRUE., 1 )168 & 1, numout, lwp, 1 ) 169 169 REWIND inum 170 170 READ(inum,9101) clexp, iim, ijm -
trunk/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90
r623 r689 1 1 !!---------------------------------------------------------------------- 2 !! *** ldfdyn_c3d.h90 *** 3 !!---------------------------------------------------------------------- 4 5 !!---------------------------------------------------------------------- 6 !! OPA 9.0 , LOCEAN-IPSL (2005) 7 !! $Header$ 2 !! *** ldfdyn_c2d.h90 *** 3 !!---------------------------------------------------------------------- 4 !! ldf_dyn_c2d : set the lateral viscosity coefficients 5 !! ldf_dyn_c2d_orca : specific case for orca r2 and r4 6 !!---------------------------------------------------------------------- 7 8 !!---------------------------------------------------------------------- 9 !! OPA 9.0 , LOCEAN-IPSL (2005) 10 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90,v 1.9 2007/06/29 17:01:51 opalod Exp $ 8 11 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 9 12 !!---------------------------------------------------------------------- 10 13 11 !!---------------------------------------------------------------------- 12 !! 'key_dynldf_c3d' 3D lateral eddy viscosity coefficients 13 !!---------------------------------------------------------------------- 14 15 SUBROUTINE ldf_dyn_c3d( ld_print ) 16 !!---------------------------------------------------------------------- 17 !! *** ROUTINE ldf_dyn_c3d *** 18 !! 14 SUBROUTINE ldf_dyn_c2d( ld_print ) 15 !!---------------------------------------------------------------------- 16 !! *** ROUTINE ldf_dyn_c2d *** 17 !! 19 18 !! ** Purpose : initializations of the horizontal ocean physics 20 19 !! 21 !! ** Method : 3D eddy viscosity coef. ( longitude, latitude, depth ) 22 !! laplacian operator : ahm1, ahm2 defined at T- and F-points 23 !! ahm2, ahm4 never used 24 !! bilaplacian operator : ahm1, ahm2 never used 25 !! : ahm3, ahm4 defined at U- and V-points 26 !! ??? explanation of the default is missing 27 !!---------------------------------------------------------------------- 28 !! * Modules used 29 USE ldftra_oce, ONLY : aht0 30 20 !! ** Method : 21 !! 2D eddy viscosity coefficients ( longitude, latitude ) 22 !! 23 !! harmonic operator : ahm1 is defined at t-point 24 !! ahm2 is defined at f-point 25 !! + isopycnal : ahm3 is defined at u-point 26 !! or geopotential ahm4 is defined at v-point 27 !! iso-model level : ahm3, ahm4 not used 28 !! 29 !! biharmonic operator : ahm1 is defined at u-point 30 !! ahm2 is defined at v-point 31 !! : ahm3, ahm4 not used 32 !! 33 !!---------------------------------------------------------------------- 31 34 !! * Arguments 32 35 LOGICAL, INTENT (in) :: ld_print ! If true, output arrays on numout 33 36 34 !! * local variables 35 INTEGER :: ji, jj, jk ! dummy loop indices 36 REAL(wp) :: & 37 zr = 0.2 , & ! maximum of the reduction factor at the bottom ocean 38 ! ! ( 0 < zr < 1 ) 39 zh = 500., & ! depth of at which start the reduction ( > dept(1) ) 40 zdx_max , & ! maximum grid spacing over the global domain 41 za00, zc, zd ! temporary scalars 42 REAL(wp), DIMENSION(jpk) :: zcoef ! temporary workspace 43 !!---------------------------------------------------------------------- 44 45 IF(lwp) WRITE(numout,*) 46 IF(lwp) WRITE(numout,*) 'ldf_dyn_c3d : 3D lateral eddy viscosity coefficient' 37 !! * Local variables 38 REAL(wp) :: za00, zdx_max 39 !!---------------------------------------------------------------------- 40 41 IF(lwp) WRITE(numout,*) 42 IF(lwp) WRITE(numout,*) 'ldf_dyn_c2d : 2d lateral eddy viscosity coefficient' 47 43 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 48 49 50 ! Set ahm1 and ahm2( T- and F- points) (used for laplacian operators51 ! ================= whatever its orientation is)44 IF(lwp) WRITE(numout,*) 45 46 ! harmonic operator (ahm1, ahm2) : ( T- and F- points) (used for laplacian operators 47 ! =============================== whatever its orientation is) 52 48 IF( ln_dynldf_lap ) THEN 53 49 ! define ahm1 and ahm2 at the right grid point position … … 61 57 IF(lwp) WRITE(numout,*) ' maximum grid-spacing = ', zdx_max, ' maximum value for ahm = ', ahm0 62 58 63 64 59 za00 = ahm0 / zdx_max 60 ahm1(:,:) = za00 * e1t(:,:) 61 ahm2(:,:) = za00 * e1f(:,:) 65 62 66 63 IF( ln_dynldf_iso ) THEN … … 71 68 ENDIF 72 69 73 CALL ldf_zpf( .TRUE. , 1000., 500., 0.25, fsdept(:,:,:), ahm1 ) ! vertical profile74 CALL ldf_zpf( .TRUE. , 1000., 500., 0.25, fsdept(:,:,:), ahm2 ) ! vertical profile75 DO jk = 1,jpk76 ahm1(:,:,jk) = za00 * e1t(:,:) * ahm1(:,:,jk)77 ahm2(:,:,jk) = za00 * e1f(:,:) * ahm2(:,:,jk)78 END DO79 80 81 70 ! Special case for ORCA R2 and R4 configurations (overwrite the value of ahm1 ahm2) 82 71 ! ============================================== 83 IF( cp_cfg == "orca" .AND. ( jp_cfg == 2 .OR. jp_cfg == 4 ) ) THEN 84 IF(lwp) WRITE(numout,*) 85 IF(lwp) WRITE(numout,*) ' ORCA R2 or R4: overwrite the previous definition of ahm' 86 IF(lwp) WRITE(numout,*) ' =============' 87 CALL ldf_dyn_c3d_orca( ld_print ) 72 IF( cp_cfg == "orca" .AND. ( jp_cfg == 2 .OR. jp_cfg == 4 ) ) CALL ldf_dyn_c2d_orca( ld_print ) 73 74 ! Control print 75 IF( lwp .AND. ld_print ) THEN 76 WRITE(numout,*) 77 WRITE(numout,*) 'inildf: 2D ahm1 array' 78 CALL prihre(ahm1,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 79 WRITE(numout,*) 80 WRITE(numout,*) 'inildf: 2D ahm2 array' 81 CALL prihre(ahm2,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 88 82 ENDIF 89 90 83 ENDIF 91 92 ! Control print 93 IF(lwp .AND. ld_print ) THEN 94 WRITE(numout,*) 95 WRITE(numout,*) ' 3D ahm1 array (k=1)' 96 CALL prihre( ahm1(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1.e-3, numout ) 97 WRITE(numout,*) 98 WRITE(numout,*) ' 3D ahm2 array (k=1)' 99 CALL prihre( ahm2(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1.e-3, numout ) 100 ENDIF 101 102 103 ! ahm3 and ahm4 at U- and V-points (used for bilaplacian operator 104 ! ================================ whatever its orientation is) 105 ! (USER: modify ahm3 and ahm4 following your desiderata) 106 ! Here: ahm is proportional to the cube of the maximum of the gridspacing 107 ! in the to horizontal direction 108 84 85 ! biharmonic operator (ahm3, ahm4) : at U- and V-points (used for bilaplacian operator 86 ! ================================= whatever its orientation is) 109 87 IF( ln_dynldf_bilap ) THEN 88 ! (USER: modify ahm3 and ahm4 following your desiderata) 89 ! Here: ahm is proportional to the cube of the maximum of the gridspacing 90 ! in the to horizontal direction 110 91 111 92 zdx_max = MAXVAL( e1u(:,:) ) … … 117 98 118 99 za00 = ahm0 / ( zdx_max * zdx_max * zdx_max ) 119 ahm3(:,:,1) = za00 * e1u(:,:) * e1u(:,:) * e1u(:,:) 120 ahm4(:,:,1) = za00 * e1v(:,:) * e1v(:,:) * e1v(:,:) 121 122 zh = MAX( zh, fsdept(1,1,1) ) ! at least the first reach ahm0 123 IF( ln_zco ) THEN ! z-coordinate, same profile everywhere 124 IF(lwp) WRITE(numout,'(36x," ahm ", 7x)') 125 DO jk = 1, jpk 126 IF( fsdept(1,1,jk) <= zh ) THEN 127 zcoef(jk) = 1.e0 128 ELSE 129 zcoef(jk) = 1.e0 + ( zr - 1.e0 ) & 130 & * ( 1. - EXP( ( fsdept(1,1,jk ) - zh ) / zh ) ) & 131 & / ( 1. - EXP( ( fsdept(1,1,jpkm1) - zh ) / zh ) ) 132 ENDIF 133 ahm3(:,:,jk) = ahm3(:,:,1) * zcoef(jk) 134 ahm4(:,:,jk) = ahm4(:,:,1) * zcoef(jk) 135 IF(lwp) WRITE(numout,'(34x,E7.2,8x,i3)') zcoef(jk) * ahm0, jk 136 END DO 137 ELSE ! partial steps or s-ccordinate 138 # if defined key_zco 139 zc = gdept_0(jpkm1) 140 # else 141 zc = MAXVAL( fsdept(:,:,jpkm1) ) 142 # endif 143 IF( lk_mpp ) CALL mpp_max( zc ) ! max over the global domain 144 145 zc = 1. / ( 1. - EXP( ( zc - zh ) / zh ) ) 146 DO jk = 2, jpkm1 147 DO jj = 1, jpj 148 DO ji = 1, jpi 149 IF( fsdept(ji,jj,jk) <= zh ) THEN 150 ahm3(ji,jj,jk) = ahm3(ji,jj,1) 151 ahm4(ji,jj,jk) = ahm4(ji,jj,1) 152 ELSE 153 zd = 1.e0 + ( zr - 1.e0 ) * ( 1. - EXP( ( fsdept(ji,jj,jk) - zh ) / zh ) ) * zc 154 ahm3(ji,jj,jk) = ahm3(ji,jj,1) * zd 155 ahm4(ji,jj,jk) = ahm4(ji,jj,1) * zd 156 ENDIF 157 END DO 158 END DO 159 END DO 160 ahm3(:,:,jpk) = ahm3(:,:,jpkm1) 161 ahm4(:,:,jpk) = ahm4(:,:,jpkm1) 162 IF(lwp) WRITE(numout,'(36x," ahm ", 7x)') 163 DO jk = 1, jpk 164 IF(lwp) WRITE(numout,'(30x,E10.2,8x,i3)') ahm3(1,1,jk), jk 165 END DO 166 ENDIF 100 ahm3(:,:) = za00 * e1u(:,:) * e1u(:,:) * e1u(:,:) 101 ahm4(:,:) = za00 * e1v(:,:) * e1v(:,:) * e1v(:,:) 167 102 168 103 ! Control print 169 104 IF( lwp .AND. ld_print ) THEN 170 105 WRITE(numout,*) 171 WRITE(numout,*) 'inildf: ahm3 array at level 1'172 CALL prihre(ahm3 (:,:,1 ),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)173 WRITE(numout,*) 174 WRITE(numout,*) 'inildf: ahm4 array at level 1'175 CALL prihre(ahm4 (:,:,jpk),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)106 WRITE(numout,*) 'inildf: ahm3 array' 107 CALL prihre(ahm3,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 108 WRITE(numout,*) 109 WRITE(numout,*) 'inildf: ahm4 array' 110 CALL prihre(ahm4,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 176 111 ENDIF 177 112 ENDIF 178 113 179 END SUBROUTINE ldf_dyn_c3d 180 181 182 SUBROUTINE ldf_dyn_c3d_orca( ld_print ) 183 !!---------------------------------------------------------------------- 184 !! *** ROUTINE ldf_dyn_c3d *** 185 !! 186 !! ** Purpose : ORCA R2 an R4 only 187 !! 188 !! ** Method : blah blah blah .... 114 115 END SUBROUTINE ldf_dyn_c2d 116 117 118 SUBROUTINE ldf_dyn_c2d_orca( ld_print ) 119 !!---------------------------------------------------------------------- 120 !! *** ROUTINE ldf_dyn_c2d *** 121 !! 122 !! **** W A R N I N G **** 123 !! 124 !! ORCA R2 and R4 configurations 125 !! 126 !! **** W A R N I N G **** 127 !! 128 !! ** Purpose : initializations of the lateral viscosity for orca R2 129 !! 130 !! ** Method : blah blah blah... 131 !! 189 132 !!---------------------------------------------------------------------- 190 133 !! * Modules used … … 192 135 193 136 !! * Arguments 194 LOGICAL, INTENT (in) :: ld_print ! If true, output arrays on numout 195 196 !! * local variables 197 INTEGER :: ji, jj, jk, jn ! dummy loop indices 198 INTEGER :: ii0, ii1, ij0, ij1 ! temporary integers 199 INTEGER :: inum ! temporary logical unit 137 LOGICAL, INTENT (in) :: ld_print ! If true, output arrays on numout 138 139 !! * Local variables 140 INTEGER :: ji, jj, jn ! dummy loop indices 141 INTEGER :: inum ! temporary logical unit 200 142 INTEGER :: iim, ijm 201 143 INTEGER :: ifreq, il1, il2, ij, ii 202 INTEGER, DIMENSION(jpidta, jpjdta) :: idata 203 INTEGER, DIMENSION(jpi , jpj ) :: icof 204 205 REAL(wp) :: & 206 zahmeq, zcoff, zcoft, zmsk, & ! ??? 207 zemax, zemin, zeref, zahmm 208 REAL(wp), DIMENSION(jpi,jpj) :: zahm0 209 REAL(wp), DIMENSION(jpk) :: zcoef 144 INTEGER, DIMENSION(jpidta,jpidta) :: idata 145 INTEGER, DIMENSION(jpi ,jpj ) :: icof 146 147 REAL(wp) :: zahmeq, zcoft, zcoff, zmsk 210 148 211 149 CHARACTER (len=15) :: clexp … … 213 151 214 152 IF(lwp) WRITE(numout,*) 215 IF(lwp) WRITE(numout,*) 'ldfdyn_c3d_orca : 3D eddy viscosity coefficient' 216 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~' 217 IF(lwp) WRITE(numout,*) 218 IF(lwp) WRITE(numout,*) ' orca R2 or R4 ocean model' 219 IF(lwp) WRITE(numout,*) ' reduced in the surface Eq. strip ' 220 IF(lwp) WRITE(numout,*) 221 153 IF(lwp) WRITE(numout,*) 'inildf: 2d eddy viscosity coefficient' 154 IF(lwp) WRITE(numout,*) '~~~~~~ --' 155 IF(lwp) WRITE(numout,*) 156 IF(lwp) WRITE(numout,*) ' orca ocean model' 157 IF(lwp) WRITE(numout,*) 158 159 #if defined key_antarctic 160 # include "ldfdyn_antarctic.h90" 161 #elif defined key_arctic 162 # include "ldfdyn_arctic.h90" 163 #else 222 164 ! Read 2d integer array to specify western boundary increase in the 223 165 ! ===================== equatorial strip (20N-20S) defined at t-points 224 166 225 167 CALL ctlopn( inum, 'ahmcoef', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', & 226 & 1, numout, .TRUE., 1 )168 & 1, numout, lwp, 1 ) 227 169 REWIND inum 228 170 READ(inum,9101) clexp, iim, ijm … … 256 198 END DO 257 199 END DO 258 259 9101 FORMAT(1x,a15,2i8) 260 9201 FORMAT(3x,13(i3,12x)) 261 9202 FORMAT(i3,41i3) 262 263 ! Set ahm1 and ahm2 200 201 9101 FORMAT(1x,a15,2i8) 202 9201 FORMAT(3x,13(i3,12x)) 203 9202 FORMAT(i3,41i3) 204 205 206 ! Set ahm1 and ahm2 ( T- and F- points) (used for laplacian operator) 264 207 ! ================= 265 266 208 ! define ahm1 and ahm2 at the right grid point position 267 209 ! (USER: modify ahm1 and ahm2 following your desiderata) 268 ! biharmonic : ahm1 (ahm2) defined at u- (v-) point 269 ! harmonic : ahm1 (ahm2) defined at t- (f-) point 270 271 ! first level : as for 2D coefficients 210 272 211 273 212 ! Decrease ahm to zahmeq m2/s in the tropics … … 276 215 ! from 2.5 to 0 degre: ahm = constant 277 216 ! symmetric in the south hemisphere) 278 279 IF( jp_cfg == 4 ) THEN 280 zahmeq = 5.0 * aht0 281 zahmm = min( 160000.0, ahm0) 282 zemax = MAXVAL ( e1t(:,:) * e2t(:,:), tmask(:,:,1) .GE. 0.5 ) 283 zemin = MINVAL ( e1t(:,:) * e2t(:,:), tmask(:,:,1) .GE. 0.5 ) 284 zeref = MAXVAL ( e1t(:,:) * e2t(:,:), & 285 & tmask(:,:,1) .GE. 0.5 .AND. ABS(gphit(:,:)) .GT. 50. ) 286 287 DO jj = 1, jpj 288 DO ji = 1, jpi 289 zmsk = e1t(ji,jj) * e2t(ji,jj) 290 IF( abs(gphit(ji,jj)) .LE. 15 ) THEN 291 zahm0(ji,jj) = ahm0 292 ELSE 293 IF( zmsk .GE. zeref ) THEN 294 zahm0(ji,jj) = ahm0 295 ELSE 296 zahm0(ji,jj) = zahmm + (ahm0-zahmm)*(1.0 - & 297 & cos((rpi*0.5*(zmsk-zemin)/(zeref-zemin)))) 298 ENDIF 299 ENDIF 300 END DO 301 END DO 302 ENDIF 303 304 IF( jp_cfg == 2 ) THEN 305 zahmeq = aht0 306 zahmm = ahm0 307 zahm0(:,:) = ahm0 308 ENDIF 309 217 218 zahmeq = aht0 219 310 220 DO jj = 1, jpj 311 221 DO ji = 1, jpi 312 IF( ABS( gphif(ji,jj)) >= 20.) THEN313 ahm2(ji,jj ,1) = zahm0(ji,jj)314 ELSEIF( ABS( gphif(ji,jj)) <= 2.5) THEN315 ahm2(ji,jj ,1) = zahmeq222 IF( ABS( gphif(ji,jj) ) >= 20. ) THEN 223 ahm2(ji,jj) = ahm0 224 ELSEIF( ABS( gphif(ji,jj) ) <= 2.5 ) THEN 225 ahm2(ji,jj) = zahmeq 316 226 ELSE 317 ahm2(ji,jj ,1) = zahmeq + (zahm0(ji,jj)-zahmeq)/2. &318 & *(1.-COS( rad*(ABS(gphif(ji,jj))-2.5)*180./17.5 ) )227 ahm2(ji,jj) = zahmeq + (ahm0-zahmeq)/2. & 228 * ( 1. - COS( rad * ( ABS(gphif(ji,jj))-2.5 ) * 180. / 17.5 ) ) 319 229 ENDIF 320 IF( ABS( gphit(ji,jj)) >= 20.) THEN321 ahm1(ji,jj ,1) = zahm0(ji,jj)322 ELSEIF( ABS( gphit(ji,jj)) <= 2.5) THEN323 ahm1(ji,jj ,1) = zahmeq230 IF( ABS( gphit(ji,jj) ) >= 20. ) THEN 231 ahm1(ji,jj) = ahm0 232 ELSEIF( ABS( gphit(ji,jj) ) <= 2.5 ) THEN 233 ahm1(ji,jj) = zahmeq 324 234 ELSE 325 ahm1(ji,jj ,1) = zahmeq + (zahm0(ji,jj)-zahmeq)/2. &326 & *(1.-COS( rad*(ABS(gphit(ji,jj))-2.5)*180./17.5 ) )235 ahm1(ji,jj) = zahmeq + (ahm0-zahmeq)/2. & 236 * ( 1. - COS( rad * ( ABS(gphit(ji,jj))-2.5 ) * 180. / 17.5 ) ) 327 237 ENDIF 328 238 END DO 329 239 END DO 330 240 331 241 ! increase along western boundaries of equatorial strip 332 242 ! t-point 333 243 DO jj = 1, jpjm1 334 244 DO ji = 1, jpim1 335 zcoft = float( icof(ji,jj) ) / 100.336 ahm1(ji,jj ,1) = zcoft * zahm0(ji,jj) + (1.-zcoft) * ahm1(ji,jj,1)245 zcoft = FLOAT( icof(ji,jj) ) / 100. 246 ahm1(ji,jj) = zcoft * ahm0 + (1.-zcoft) * ahm1(ji,jj) 337 247 END DO 338 248 END DO … … 348 258 / (zmsk * 100.) 349 259 ENDIF 350 ahm2(ji,jj,1) = zcoff * zahm0(ji,jj) + (1.-zcoff) * ahm2(ji,jj,1) 351 END DO 352 END DO 353 354 ! other level: re-increase the coef in the deep ocean 355 356 #if defined key_orca_lev10 357 DO jk = 1, 210 358 zcoef(jk) = 1. 359 END DO 360 DO jk= 211, 230 361 zcoef(jk) = 1. + 0.1 * FLOAT(jk-210) 362 END DO 363 DO jk= 231, 260 364 zcoef(jk) = 3. + 0.2 * FLOAT(jk-230) 365 END DO 366 DO jk= 261, 270 367 zcoef(jk) = 9. + 0.1 * FLOAT(jk-260) 368 END DO 369 DO jk= 271, jpk 370 zcoef(jk) = 10. 371 END DO 372 DO jk= 1, jpk 373 IF(lwp) WRITE(numout,*) 'k= ',jk, 'cof ', zcoef(jk) 374 END DO 375 #else 376 DO jk = 1, 21 377 zcoef(jk) = 1. 378 END DO 379 zcoef(22) = 2. 380 zcoef(23) = 3. 381 zcoef(24) = 5. 382 zcoef(25) = 7. 383 zcoef(26) = 9. 384 DO jk = 27, jpk 385 zcoef(jk) = 10. 260 ahm2(ji,jj) = zcoff * ahm0 + (1.-zcoff) * ahm2(ji,jj) 261 END DO 386 262 END DO 387 263 #endif 388 389 DO jk = 2, jpk390 ahm1(:,:,jk) = MIN( zahm0(:,:), zcoef(jk) * ahm1(:,:,1) )391 ahm2(:,:,jk) = MIN( zahm0(:,:), zcoef(jk) * ahm2(:,:,1) )392 END DO393 394 IF( jp_cfg == 4 ) THEN395 ! Limit AHM in Gibraltar strait396 ij0 = 50 ; ij1 = 53397 ii0 = 69 ; ii1 = 71398 DO jk = 1, jpk399 ahm1(mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) = min( zahmm, ahm1 (mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) )400 ahm2(mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) = min( zahmm, ahm2 (mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , jk) )401 END DO402 ENDIF403 264 404 265 ! Lateral boundary conditions on ( ahm1, ahm2 ) … … 408 269 409 270 ! Control print 410 411 IF(lwp) THEN412 WRITE(numout,*)413 WRITE(numout,*) ' 3D ahm1 array (k=1)'414 CALL prihre( ahm1(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1.e-3, numout )415 WRITE(numout,*)416 WRITE(numout,*) ' 3D ahm2 array (k=1)'417 CALL prihre( ahm2(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1.e-3, numout )418 WRITE(numout,*)419 WRITE(numout,*) ' 3D ahm2 array (k=jpk)'420 CALL prihre( ahm2(:,:,jpk), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1.e-3, numout )421 ENDIF422 423 424 ! Set ahm3 and ahm4425 ! =================426 427 ! define ahm3 and ahm4 at the right grid point position428 ! initialization to a constant value429 ! (USER: modify ahm3 and ahm4 following your desiderata)430 ! harmonic isopycnal or geopotential:431 ! ahm3 (ahm4) defined at u- (v-) point432 DO jk = 1, jpk433 DO jj = 2, jpj434 DO ji = 2, jpi435 ahm3(ji,jj,jk) = 0.5 * ( ahm2(ji,jj,jk) + ahm2(ji ,jj-1,jk) )436 ahm4(ji,jj,jk) = 0.5 * ( ahm2(ji,jj,jk) + ahm2(ji-1,jj ,jk) )437 END DO438 END DO439 END DO440 ahm3 ( :, 1, :) = ahm3 ( :, 2, :)441 ahm4 ( :, 1, :) = ahm4 ( :, 2, :)442 443 ! Lateral boundary conditions on ( ahm3, ahm4 )444 ! ==============445 CALL lbc_lnk( ahm3, 'U', 1. ) ! U-point, unchanged sign446 CALL lbc_lnk( ahm4, 'V', 1. ) ! V-point, unchanged sign447 448 ! Control print449 450 271 IF( lwp .AND. ld_print ) THEN 451 272 WRITE(numout,*) 452 WRITE(numout,*) ' ahm3 array level 1'453 CALL prihre(ahm 3(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)273 WRITE(numout,*) 'inildf: 2D ahm1 array' 274 CALL prihre(ahm1,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 454 275 WRITE(numout,*) 455 WRITE(numout,*) ' ahm4 array level 1'456 CALL prihre(ahm 4(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)276 WRITE(numout,*) 'inildf: 2D ahm2 array' 277 CALL prihre(ahm2,jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 457 278 ENDIF 458 279 459 END SUBROUTINE ldf_dyn_c 3d_orca280 END SUBROUTINE ldf_dyn_c2d_orca -
trunk/NEMO/OPA_SRC/OBC/obcdta.F90
r623 r689 52 52 !!--------------------------------------------------------------------------------- 53 53 !! OPA 9.0 , LODYC-IPSL (2003) 54 !! $Header $54 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/OBC/obcdta.F90,v 1.14 2007/06/29 17:01:51 opalod Exp $ 55 55 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 56 56 !!--------------------------------------------------------------------------------- … … 674 674 IF( kt == nit000 .OR. kt <= kbsfstart ) THEN 675 675 CALL ctlopn( inum, 'obceastbsf.dta', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', & 676 & 1, numout, .TRUE., 1 )676 & 1, numout, lwp, 1 ) 677 677 READ(inum,*) 678 678 READ(inum,*) … … 693 693 IF( kt == nit000 .OR. kt <= kbsfstart ) then 694 694 CALL ctlopn( inum, 'obcwestbsf.dta', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', & 695 & 1, numout, .TRUE., 1 )695 & 1, numout, lwp, 1 ) 696 696 READ(inum,*) 697 697 READ(inum,*) … … 712 712 IF( kt == nit000 .OR. kt <= kbsfstart ) THEN 713 713 CALL ctlopn( inum, 'obcsouthbsf.dta', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', & 714 & 1, numout, .TRUE., 1 )714 & 1, numout, lwp, 1 ) 715 715 READ(inum,*) 716 716 READ(inum,*) … … 730 730 IF( kt == nit000 .OR. kt <= kbsfstart ) THEN 731 731 CALL ctlopn( inum, 'obcnorthbsf.dta', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', & 732 & 1, numout, .TRUE., 1 )732 & 1, numout, lwp, 1 ) 733 733 READ(inum,*) 734 734 READ(inum,*) -
trunk/NEMO/OPA_SRC/OBC/obcrst.F90
r623 r689 26 26 !!--------------------------------------------------------------------------------- 27 27 !! OPA 9.0 , LOCEAN-IPSL (2005) 28 !! $Header $28 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/OBC/obcrst.F90,v 1.8 2007/06/29 17:01:51 opalod Exp $ 29 29 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 30 30 !!--------------------------------------------------------------------------------- … … 98 98 99 99 CALL ctlopn( inum, 'restart.obc.output', 'UNKNOWN', 'UNFORMATTED', 'DIRECT', & 100 & nreclo, numout, .TRUE., 1 )100 & nreclo, numout, lwp, 1 ) 101 101 102 102 ! 1.2 Write header … … 349 349 ! --------------- 350 350 CALL ctlopn( inum, 'restart.obc.output', 'UNKNOWN', 'UNFORMATTED', 'DIRECT', & 351 & nreclo, numout, .TRUE., 1 )351 & nreclo, numout, lwp, 1 ) 352 352 353 353 ! 1. Read -
trunk/NEMO/OPA_SRC/mppini_2.h90
r680 r689 75 75 !!---------------------------------------------------------------------- 76 76 !! OPA 9.0 , LOCEAN-IPSL (2005) 77 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/mppini_2.h90,v 1.1 6 2007/06/05 10:27:49opalod Exp $77 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/mppini_2.h90,v 1.17 2007/06/29 17:00:01 opalod Exp $ 78 78 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 79 79 !!---------------------------------------------------------------------- … … 323 323 il2 = MIN(jpni,il1+ifreq-1) 324 324 WRITE(numout,*) 325 WRITE(numout,9401) (ji,ji=il1,il2)326 325 WRITE(numout,9400) ('***',ji=il1,il2-1) 327 DO jj = 1, jpnj 328 ! WRITE(numout,9400) 326 DO jj = jpnj, 1, -1 329 327 WRITE(numout,9403) (' ',ji=il1,il2-1) 330 328 WRITE(numout,9402) jj, (ilci(ji,jj),ilcj(ji,jj),ji=il1,il2) … … 332 330 WRITE(numout,9403) (' ',ji=il1,il2-1) 333 331 WRITE(numout,9400) ('***',ji=il1,il2-1) 334 ! WRITE(numout,9400)335 332 END DO 333 WRITE(numout,9401) (ji,ji=il1,il2) 336 334 il1 = il1+ifreq 337 335 END DO
Note: See TracChangeset
for help on using the changeset viewer.