- Timestamp:
- 2015-11-20T09:39:06+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r5620 r5901 29 29 USE daymod ! calendar 30 30 USE eosbn2 ! eq. of state, Brunt Vaisala frequency (eos routine) 31 USE ldftra _oce ! ocean active tracers: lateral physics31 USE ldftra ! lateral physics: ocean active tracers 32 32 USE zdf_oce ! ocean vertical physics 33 33 USE phycst ! physical constants 34 34 USE dtatsd ! data temperature and salinity (dta_tsd routine) 35 35 USE dtauvd ! data: U & V current (dta_uvd routine) 36 USE zpshde ! partial step: hor. derivative (zps_hde routine)37 USE eosbn2 ! equation of state (eos bn2 routine)38 36 USE domvvl ! varying vertical mesh 39 37 USE dynspg_oce ! pressure gradient schemes … … 76 74 ! 77 75 78 IF(lwp) WRITE(numout,*) ' '76 IF(lwp) WRITE(numout,*) 79 77 IF(lwp) WRITE(numout,*) 'istate_ini : Initialization of the dynamics and tracers' 80 78 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 81 79 82 CALL dta_tsd_init! Initialisation of T & S input data83 IF( lk_c1d ) CALL dta_uvd_init! Initialization of U & V input data80 CALL dta_tsd_init ! Initialisation of T & S input data 81 IF( lk_c1d ) CALL dta_uvd_init ! Initialization of U & V input data 84 82 85 83 rhd (:,:,: ) = 0._wp ; rhop (:,:,: ) = 0._wp ! set one for all to 0 at level jpk … … 103 101 ub (:,:,:) = 0._wp ; un (:,:,:) = 0._wp 104 102 vb (:,:,:) = 0._wp ; vn (:,:,:) = 0._wp 105 rotb (:,:,:) = 0._wp ; rotn (:,:,:) = 0._wp 106 hdivb(:,:,:) = 0._wp ; hdivn(:,:,:) = 0._wp 103 hdivn(:,:,:) = 0._wp 107 104 ! 108 105 IF( cp_cfg == 'eel' ) THEN … … 119 116 ENDIF 120 117 IF ( ln_uvd_init .AND. lk_c1d ) THEN ! read 3D U and V data at nit000 121 CALL wrk_alloc( jpi, jpj, jpk, 2,zuvd )118 CALL wrk_alloc( jpi,jpj,jpk,2, zuvd ) 122 119 CALL dta_uvd( nit000, zuvd ) 123 120 ub(:,:,:) = zuvd(:,:,:,1) ; un(:,:,:) = ub(:,:,:) 124 121 vb(:,:,:) = zuvd(:,:,:,2) ; vn(:,:,:) = vb(:,:,:) 125 CALL wrk_dealloc( jpi, jpj, jpk, 2,zuvd )122 CALL wrk_dealloc( jpi,jpj,jpk,2, zuvd ) 126 123 ENDIF 127 124 ENDIF 128 !129 CALL eos( tsb, rhd, rhop, gdept_0(:,:,:) ) ! before potential and in situ densities130 #if ! defined key_c1d131 IF( ln_zps .AND. .NOT. ln_isfcav) &132 & CALL zps_hde ( nit000, jpts, tsb, gtsu, gtsv, & ! Partial steps: before horizontal gradient133 & rhd, gru , grv ) ! of t, s, rd at the last ocean level134 IF( ln_zps .AND. ln_isfcav) &135 & CALL zps_hde_isf( nit000, jpts, tsb, gtsu, gtsv, & ! Partial steps for top cell (ISF)136 & rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv , &137 & gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi ) ! of t, s, rd at the last ocean level138 #endif139 125 ! 140 126 ! - ML - sshn could be modified by istate_eel, so that initialization of fse3t_b is done here … … 142 128 DO jk = 1, jpk 143 129 fse3t_b(:,:,jk) = fse3t_n(:,:,jk) 144 END DO130 END DO 145 131 ENDIF 146 132 ! … … 163 149 ! 164 150 ! 165 un_b(:,:) = 0._wp ;vn_b(:,:) = 0._wp166 ub_b(:,:) = 0._wp ;vb_b(:,:) = 0._wp151 un_b(:,:) = 0._wp ; vn_b(:,:) = 0._wp 152 ub_b(:,:) = 0._wp ; vb_b(:,:) = 0._wp 167 153 ! 168 154 DO jk = 1, jpkm1 … … 202 188 !! References : Philander ??? 203 189 !!---------------------------------------------------------------------- 204 INTEGER :: ji, jj, jk205 REAL(wp) :: zsal = 35.50 190 INTEGER :: ji, jj, jk 191 REAL(wp) :: zsal = 35.50_wp 206 192 !!---------------------------------------------------------------------- 207 193 ! … … 210 196 IF(lwp) WRITE(numout,*) '~~~~~~~~~~ and constant salinity (',zsal,' psu)' 211 197 ! 198 #if ! defined key_istate_fixed 212 199 DO jk = 1, jpk 213 200 tsn(:,:,jk,jp_tem) = ( ( ( 7.5 - 0. * ABS( gphit(:,:) )/30. ) * ( 1.-TANH((fsdept(:,:,jk)-80.)/30.) ) & … … 215 202 tsb(:,:,jk,jp_tem) = tsn(:,:,jk,jp_tem) 216 203 END DO 204 #else 205 tsn(:,:,:,jp_tem) = ztem * tmask(:,:,:) 206 tsb(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) 207 #endif 217 208 tsn(:,:,:,jp_sal) = zsal * tmask(:,:,:) 218 209 tsb(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) 210 219 211 ! 220 212 END SUBROUTINE istate_t_s … … 233 225 !! and relative vorticity fields 234 226 !!---------------------------------------------------------------------- 235 USE div cur ! hor. divergence & rel. vorticity (div_cur routine)227 USE divhor ! hor. divergence (div_hor routine) 236 228 USE iom 237 229 ! … … 282 274 tsb(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) 283 275 ! 284 ! set the dynamics: U,V, hdiv , rot(and ssh if necessary)276 ! set the dynamics: U,V, hdiv (and ssh if necessary) 285 277 ! ---------------- 286 278 ! Start EEL5 configuration with barotropic geostrophic velocities … … 318 310 ENDIF 319 311 ! 320 CALL div_cur( nit000 ) ! horizontal divergence and relative vorticity (curl) 312 !!gm Check here call to div_hor should not be necessary 313 !!gm div_hor call runoffs not sure they are defined at that level 314 CALL div_hor( nit000 ) ! horizontal divergence and relative vorticity (curl) 321 315 ! N.B. the vertical velocity will be computed from the horizontal divergence field 322 316 ! in istate by a call to wzv routine … … 371 365 !! 372 366 !! ** Method : - set temprature field 373 !! - set salinity field367 !! - set salinity field 374 368 !!---------------------------------------------------------------------- 375 369 INTEGER :: ji, jj, jk ! dummy loop indices … … 458 452 !!---------------------------------------------------------------------- 459 453 USE dynspg ! surface pressure gradient (dyn_spg routine) 460 USE div cur ! hor. divergence & rel. vorticity (div_cur routine)454 USE divhor ! hor. divergence (div_hor routine) 461 455 USE lbclnk ! ocean lateral boundary condition (or mpp link) 462 456 ! … … 467 461 !!---------------------------------------------------------------------- 468 462 ! 469 CALL wrk_alloc( jpi, jpj, jpk,zprn)463 CALL wrk_alloc( jpi,jpj,jpk, zprn) 470 464 ! 471 465 IF(lwp) WRITE(numout,*) … … 544 538 indic = 0 545 539 CALL dyn_spg( nit000, indic ) ! surface pressure gradient 546 540 ! 547 541 ! the new velocity is ua*rdt 548 542 ! 549 543 CALL lbc_lnk( ua, 'U', -1. ) 550 544 CALL lbc_lnk( va, 'V', -1. ) … … 556 550 un(:,:,:) = ub(:,:,:) 557 551 vn(:,:,:) = vb(:,:,:) 558 559 ! Compute the divergence and curl 560 561 CALL div_cur( nit000 ) ! now horizontal divergence and curl 562 563 hdivb(:,:,:) = hdivn(:,:,:) ! set the before to the now value 564 rotb (:,:,:) = rotn (:,:,:) ! set the before to the now value 565 ! 566 CALL wrk_dealloc( jpi, jpj, jpk, zprn) 552 ! 553 !!gm Check here call to div_hor should not be necessary 554 !!gm div_hor call runoffs not sure they are defined at that level 555 CALL div_hor( nit000 ) ! now horizontal divergence 556 ! 557 CALL wrk_dealloc( jpi,jpj,jpk, zprn) 567 558 ! 568 559 END SUBROUTINE istate_uvg
Note: See TracChangeset
for help on using the changeset viewer.