Changeset 6140 for trunk/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
- Timestamp:
- 2015-12-21T12:35:23+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r5930 r6140 35 35 USE dtauvd ! data: U & V current (dta_uvd routine) 36 36 USE domvvl ! varying vertical mesh 37 USE iscplrst ! ice sheet coupling 37 38 ! 38 39 USE in_out_manager ! I/O manager … … 49 50 50 51 !! * Substitutions 51 # include "domzgr_substitute.h90"52 52 # include "vectopt_loop_substitute.h90" 53 53 !!---------------------------------------------------------------------- … … 85 85 IF( ln_rstart ) THEN ! Restart from a file 86 86 ! ! ------------------- 87 CALL rst_read ! Read the restart file 88 CALL day_init ! model calendar (using both namelist and restart infos) 87 CALL rst_read ! Read the restart file 88 IF (ln_iscpl) CALL iscpl_stp ! extraloate restart to wet and dry 89 CALL day_init ! model calendar (using both namelist and restart infos) 89 90 ELSE 90 91 ! ! Start from rest … … 120 121 ENDIF 121 122 ENDIF 122 ! 123 ! - ML - sshn could be modified by istate_eel, so that initialization of fse3t_b is done here 124 IF( lk_vvl ) THEN 123 ! 124 !!gm This is to be changed !!!! 125 ! - ML - sshn could be modified by istate_eel, so that initialization of e3t_b is done here 126 IF( .NOT.ln_linssh ) THEN 125 127 DO jk = 1, jpk 126 fse3t_b(:,:,jk) = fse3t_n(:,:,jk)128 e3t_b(:,:,jk) = e3t_n(:,:,jk) 127 129 END DO 128 130 ENDIF 131 !!gm 129 132 ! 130 133 ENDIF 131 !132 134 ! 133 135 ! Initialize "now" and "before" barotropic velocities: 134 ! Do it whatever the free surface method, these arrays 135 ! being eventually used 136 ! 136 ! Do it whatever the free surface method, these arrays being eventually used 137 137 ! 138 138 un_b(:,:) = 0._wp ; vn_b(:,:) = 0._wp 139 139 ub_b(:,:) = 0._wp ; vb_b(:,:) = 0._wp 140 140 ! 141 !!gm the use of umsak & vmask is not necessary belox as un, vn, ub, vb are always masked 141 142 DO jk = 1, jpkm1 142 143 DO jj = 1, jpj 143 144 DO ji = 1, jpi 144 un_b(ji,jj) = un_b(ji,jj) + fse3u_n(ji,jj,jk) * un(ji,jj,jk) * umask(ji,jj,jk)145 vn_b(ji,jj) = vn_b(ji,jj) + fse3v_n(ji,jj,jk) * vn(ji,jj,jk) * vmask(ji,jj,jk)145 un_b(ji,jj) = un_b(ji,jj) + e3u_n(ji,jj,jk) * un(ji,jj,jk) * umask(ji,jj,jk) 146 vn_b(ji,jj) = vn_b(ji,jj) + e3v_n(ji,jj,jk) * vn(ji,jj,jk) * vmask(ji,jj,jk) 146 147 ! 147 ub_b(ji,jj) = ub_b(ji,jj) + fse3u_b(ji,jj,jk) * ub(ji,jj,jk) * umask(ji,jj,jk)148 vb_b(ji,jj) = vb_b(ji,jj) + fse3v_b(ji,jj,jk) * vb(ji,jj,jk) * vmask(ji,jj,jk)148 ub_b(ji,jj) = ub_b(ji,jj) + e3u_b(ji,jj,jk) * ub(ji,jj,jk) * umask(ji,jj,jk) 149 vb_b(ji,jj) = vb_b(ji,jj) + e3v_b(ji,jj,jk) * vb(ji,jj,jk) * vmask(ji,jj,jk) 149 150 END DO 150 151 END DO 151 152 END DO 152 153 ! 153 un_b(:,:) = un_b(:,:) * hur (:,:) 154 vn_b(:,:) = vn_b(:,:) * hvr (:,:) 155 ! 156 ub_b(:,:) = ub_b(:,:) * hur_b(:,:) 157 vb_b(:,:) = vb_b(:,:) * hvr_b(:,:) 158 ! 154 un_b(:,:) = un_b(:,:) * r1_hu_n(:,:) 155 vn_b(:,:) = vn_b(:,:) * r1_hv_n(:,:) 156 ! 157 ub_b(:,:) = ub_b(:,:) * r1_hu_b(:,:) 158 vb_b(:,:) = vb_b(:,:) * r1_hv_b(:,:) 159 159 ! 160 160 IF( nn_timing == 1 ) CALL timing_stop('istate_init') … … 184 184 ! 185 185 DO jk = 1, jpk 186 tsn(:,:,jk,jp_tem) = ( ( ( 7.5 - 0. * ABS( gphit(:,:) )/30. ) * ( 1.-TANH(( fsdept(:,:,jk)-80.)/30.) ) &187 & + 10. * ( 5000. - fsdept(:,:,jk) ) /5000.) ) * tmask(:,:,jk)186 tsn(:,:,jk,jp_tem) = ( ( ( 7.5 - 0. * ABS( gphit(:,:) )/30. ) * ( 1.-TANH((gdept_n(:,:,jk)-80.)/30.) ) & 187 & + 10. * ( 5000. - gdept_n(:,:,jk) ) /5000.) ) * tmask(:,:,jk) 188 188 tsb(:,:,jk,jp_tem) = tsn(:,:,jk,jp_tem) 189 189 END DO … … 238 238 ! 239 239 DO jk = 1, jpk 240 tsn(:,:,jk,jp_tem) = ( zt2 + zt1 * exp( - fsdept(:,:,jk) / 1000 ) ) * tmask(:,:,jk)240 tsn(:,:,jk,jp_tem) = ( zt2 + zt1 * exp( - gdept_n(:,:,jk) / 1000 ) ) * tmask(:,:,jk) 241 241 tsb(:,:,jk,jp_tem) = tsn(:,:,jk,jp_tem) 242 242 END DO 243 !244 IF(lwp) CALL prizre( tsn(:,:,:,jp_tem), jpi , jpj , jpk , jpj/2 , &245 & 1 , jpi , 5 , 1 , jpk , &246 & 1 , 1. , numout )247 243 ! 248 244 ! set salinity field to a constant value … … 314 310 tsn(:,:,:,jp_tem) = tsb(:,:,:,jp_tem) ! set nox temperature to tb 315 311 ! 316 IF(lwp) CALL prizre( tsn(:,:,:,jp_tem), jpi , jpj , jpk , jpj/2 , &317 & 1 , jpi , 5 , 1 , jpk , &318 & 1 , 1. , numout )319 !320 312 ! set salinity field to a constant value 321 313 ! -------------------------------------- … … 363 355 DO jj = 1, jpj 364 356 DO ji = 1, jpi 365 tsn(ji,jj,jk,jp_tem) = ( 16. - 12. * TANH( ( fsdept(ji,jj,jk) - 400) / 700 ) ) &366 & * (-TANH( (500- fsdept(ji,jj,jk)) / 150 ) + 1) / 2 &367 & + ( 15. * ( 1. - TANH( ( fsdept(ji,jj,jk)-50.) / 1500.) ) &368 & - 1.4 * TANH(( fsdept(ji,jj,jk)-100.) / 100.) &369 & + 7. * (1500. - fsdept(ji,jj,jk)) / 1500. ) &370 & * (-TANH( ( fsdept(ji,jj,jk) - 500) / 150) + 1) / 2357 tsn(ji,jj,jk,jp_tem) = ( 16. - 12. * TANH( (gdept_n(ji,jj,jk) - 400) / 700 ) ) & 358 & * (-TANH( (500-gdept_n(ji,jj,jk)) / 150 ) + 1) / 2 & 359 & + ( 15. * ( 1. - TANH( (gdept_n(ji,jj,jk)-50.) / 1500.) ) & 360 & - 1.4 * TANH((gdept_n(ji,jj,jk)-100.) / 100.) & 361 & + 7. * (1500. - gdept_n(ji,jj,jk)) / 1500. ) & 362 & * (-TANH( (gdept_n(ji,jj,jk) - 500) / 150) + 1) / 2 371 363 tsn(ji,jj,jk,jp_tem) = tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 372 364 tsb(ji,jj,jk,jp_tem) = tsn(ji,jj,jk,jp_tem) 373 365 374 tsn(ji,jj,jk,jp_sal) = ( 36.25 - 1.13 * TANH( ( fsdept(ji,jj,jk) - 305) / 460 ) ) &375 & * (-TANH((500 - fsdept(ji,jj,jk)) / 150) + 1) / 2 &376 & + ( 35.55 + 1.25 * (5000. - fsdept(ji,jj,jk)) / 5000. &377 & - 1.62 * TANH( ( fsdept(ji,jj,jk) - 60. ) / 650. ) &378 & + 0.2 * TANH( ( fsdept(ji,jj,jk) - 35. ) / 100. ) &379 & + 0.2 * TANH( ( fsdept(ji,jj,jk) - 1000.) / 5000.) ) &380 & * (-TANH(( fsdept(ji,jj,jk) - 500) / 150) + 1) / 2366 tsn(ji,jj,jk,jp_sal) = ( 36.25 - 1.13 * TANH( (gdept_n(ji,jj,jk) - 305) / 460 ) ) & 367 & * (-TANH((500 - gdept_n(ji,jj,jk)) / 150) + 1) / 2 & 368 & + ( 35.55 + 1.25 * (5000. - gdept_n(ji,jj,jk)) / 5000. & 369 & - 1.62 * TANH( (gdept_n(ji,jj,jk) - 60. ) / 650. ) & 370 & + 0.2 * TANH( (gdept_n(ji,jj,jk) - 35. ) / 100. ) & 371 & + 0.2 * TANH( (gdept_n(ji,jj,jk) - 1000.) / 5000.) ) & 372 & * (-TANH((gdept_n(ji,jj,jk) - 500) / 150) + 1) / 2 381 373 tsn(ji,jj,jk,jp_sal) = tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 382 374 tsb(ji,jj,jk,jp_sal) = tsn(ji,jj,jk,jp_sal) … … 451 443 zalfg = 0.5 * grav * rau0 452 444 453 zprn(:,:,1) = zalfg * fse3w(:,:,1) * ( 1 + rhd(:,:,1) ) ! Surface value445 zprn(:,:,1) = zalfg * e3w_n(:,:,1) * ( 1 + rhd(:,:,1) ) ! Surface value 454 446 455 447 DO jk = 2, jpkm1 ! Vertical integration from the surface 456 448 zprn(:,:,jk) = zprn(:,:,jk-1) & 457 & + zalfg * fse3w(:,:,jk) * ( 2. + rhd(:,:,jk) + rhd(:,:,jk-1) )449 & + zalfg * e3w_n(:,:,jk) * ( 2. + rhd(:,:,jk) + rhd(:,:,jk-1) ) 458 450 END DO 459 451
Note: See TracChangeset
for help on using the changeset viewer.