Changeset 10787
- Timestamp:
- 2019-03-21T09:14:33+01:00 (5 years ago)
- Location:
- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DOM/dom_oce.F90
r10743 r10787 134 134 LOGICAL, PUBLIC :: ln_sco !: s-coordinate or hybrid z-s coordinate 135 135 LOGICAL, PUBLIC :: ln_isfcav !: presence of ISF 136 ! ! ref .scale factors136 ! ! reference scale factors 137 137 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3t_0 !: t- vert. scale factor [m] 138 138 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3u_0 !: u- vert. scale factor [m] … … 146 146 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:,:) :: e3f !: F-point vert. scale factor [m] 147 147 148 ! ! ref. ! before ! now ! 149 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gdept_0 , gdept_b , gdept_n !: t- depth [m] 150 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gdepw_0 , gdepw_b , gdepw_n !: w- depth [m] 151 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gde3w_0 , gde3w_n !: w- depth (sum of e3w) [m] 148 ! ! reference depths of cells 149 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gdept_0 !: t- depth [m] 150 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gdepw_0 !: w- depth [m] 151 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: gde3w_0 !: w- depth (sum of e3w) [m] 152 ! ! time-dependent depths of cells 153 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:,:,:) :: gdept, gdepw 154 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:,:) :: gde3w 152 155 153 ! ! ref. ! before ! now ! after ! 154 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ht_0 , ht_n !: t-depth [m] 155 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hu_0 , hu_b , hu_n , hu_a !: u-depth [m] 156 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hv_0 , hv_b , hv_n , hv_a !: v-depth [m] 157 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: r1_hu_b , r1_hu_n , r1_hu_a !: inverse of u-depth [1/m] 158 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: r1_hv_b , r1_hv_n , r1_hv_a !: inverse of v-depth [1/m] 156 ! ! reference depths of water column 157 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ht_0 !: t-depth [m] 158 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hu_0 !: u-depth [m] 159 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hv_0 !: v-depth [m] 160 ! ! time-dependent depths of water column 161 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:,:) :: hu, hv, r1_hu, r1_hv 162 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, TARGET, DIMENSION(:,:) :: ht 159 163 160 164 !! TEMPORARY POINTERS FOR DEVELOPMENT ONLY … … 166 170 REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:,:) :: e3uw_b , e3uw_n !: uw-vert. scale factor [m] 167 171 REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:,:) :: e3vw_b , e3vw_n !: vw-vert. scale factor [m] 172 REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:,:) :: gdept_b , gdept_n !: t- depth [m] 173 REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:,:) :: gdepw_b , gdepw_n !: w- depth [m] 174 REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:,:) :: gde3w_n !: w- depth (sum of e3w) [m] 175 REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:) :: ht_n !: t-depth [m] 176 REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:) :: hu_b , hu_n , hu_a !: u-depth [m] 177 REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:) :: hv_b , hv_n , hv_a !: v-depth [m] 178 REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:) :: r1_hu_b , r1_hu_n , r1_hu_a !: inverse of u-depth [1/m] 179 REAL(wp), PUBLIC, POINTER, SAVE, DIMENSION(:,:) :: r1_hv_b , r1_hv_n , r1_hv_a !: inverse of v-depth [1/m] 168 180 !! TEMPORARY POINTERS FOR DEVELOPMENT ONLY 169 181 … … 274 286 & ff_f (jpi,jpj) , ff_t (jpi,jpj) , STAT=ierr(3) ) 275 287 ! 276 ALLOCATE( gdept_0(jpi,jpj,jpk) , gdepw_0(jpi,jpj,jpk) , gde3w_0(jpi,jpj,jpk) , & 277 & gdept_b(jpi,jpj,jpk) , gdepw_b(jpi,jpj,jpk) , & 278 & gdept_n(jpi,jpj,jpk) , gdepw_n(jpi,jpj,jpk) , gde3w_n(jpi,jpj,jpk) , STAT=ierr(4) ) 288 ALLOCATE( gdept_0(jpi,jpj,jpk) , gdepw_0(jpi,jpj,jpk) , gde3w_0(jpi,jpj,jpk) , & 289 & gdept (jpi,jpj,jpk,jpt-1) , gdepw (jpi,jpj,jpk,jpt-1) , gde3w (jpi,jpj,jpk) , STAT=ierr(4) ) 279 290 ! 280 291 ALLOCATE( e3t_0(jpi,jpj,jpk) , e3u_0(jpi,jpj,jpk) , e3v_0(jpi,jpj,jpk) , e3f_0(jpi,jpj,jpk) , & … … 284 295 & e3f (jpi,jpj,jpk), STAT=ierr(5) ) 285 296 ! 286 ALLOCATE( ht_0(jpi,jpj) , hu_0(jpi,jpj) , hv_0(jpi,jpj) , & 287 & hu_b(jpi,jpj) , hv_b(jpi,jpj) , r1_hu_b(jpi,jpj) , r1_hv_b(jpi,jpj) , & 288 & ht_n(jpi,jpj) , hu_n(jpi,jpj) , hv_n(jpi,jpj) , r1_hu_n(jpi,jpj) , r1_hv_n(jpi,jpj) , & 289 & hu_a(jpi,jpj) , hv_a(jpi,jpj) , r1_hu_a(jpi,jpj) , r1_hv_a(jpi,jpj) , STAT=ierr(6) ) 297 ALLOCATE( ht_0(jpi,jpj) , hu_0(jpi,jpj) , hv_0(jpi,jpj) , & 298 & ht (jpi,jpj) , hu (jpi,jpj,jpt) , hv (jpi,jpj,jpt) , & 299 & r1_hu (jpi,jpj,jpt) , r1_hv (jpi,jpj,jpt) , STAT=ierr(6) ) 290 300 ! 291 301 ! -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DOM/domvvl.F90
r10767 r10787 616 616 tilde_e3t_n(:,:,:) = tilde_e3t_a(:,:,:) 617 617 ENDIF 618 gdept_b(:,:,:) = gdept_n(:,:,:)619 gdepw_b(:,:,:) = gdepw_n(:,:,:)620 618 621 619 !! TO BE DELETED 620 !!$ gdept_b(:,:,:) = gdept_n(:,:,:) 621 !!$ gdepw_b(:,:,:) = gdepw_n(:,:,:) 622 622 623 !!$ e3t_n(:,:,:) = e3t_a(:,:,:) 623 624 !!$ e3u_n(:,:,:) = e3u_a(:,:,:) … … 643 644 644 645 ! t- and w- points depth (set the isf depth as it is in the initial step) 645 gdept _n(:,:,1) = 0.5_wp * e3w(:,:,1,kNnn_2lev)646 gdepw _n(:,:,1) = 0.0_wp647 gde3w _n(:,:,1) = gdept_n(:,:,1) - sshn(:,:)646 gdept(:,:,1,kNnn_2lev) = 0.5_wp * e3w(:,:,1,kNnn_2lev) 647 gdepw(:,:,1,kNnn_2lev) = 0.0_wp 648 gde3w(:,:,1) = gdept(:,:,1,kNnn_2lev) - sshn(:,:) 648 649 DO jk = 2, jpk 649 650 DO jj = 1,jpj … … 652 653 ! 1 for jk = mikt 653 654 zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) 654 gdepw _n(ji,jj,jk) = gdepw_n(ji,jj,jk-1) + e3t(ji,jj,jk-1,kNnn)655 gdept _n(ji,jj,jk) = zcoef * ( gdepw_n(ji,jj,jk) + 0.5 * e3w(ji,jj,jk,kNnn_2lev) ) &656 & + (1-zcoef) * ( gdept _n(ji,jj,jk-1) + e3w(ji,jj,jk,kNnn_2lev) )657 gde3w _n(ji,jj,jk) = gdept_n(ji,jj,jk) - sshn(ji,jj)655 gdepw(ji,jj,jk,kNnn_2lev) = gdepw(ji,jj,jk-1,kNnn_2lev) + e3t(ji,jj,jk-1,kNnn) 656 gdept(ji,jj,jk,kNnn_2lev) = zcoef * ( gdepw(ji,jj,jk,kNnn_2lev ) + 0.5 * e3w(ji,jj,jk,kNnn_2lev) ) & 657 & + (1-zcoef) * ( gdept(ji,jj,jk-1,kNnn_2lev) + e3w(ji,jj,jk,kNnn_2lev) ) 658 gde3w(ji,jj,jk) = gdept(ji,jj,jk,kNnn_2lev) - sshn(ji,jj) 658 659 END DO 659 660 END DO … … 662 663 ! Local depth and Inverse of the local depth of the water 663 664 ! ------------------------------------------------------- 664 hu_n(:,:) = hu_a(:,:) ; r1_hu_n(:,:) = r1_hu_a(:,:) 665 hv_n(:,:) = hv_a(:,:) ; r1_hv_n(:,:) = r1_hv_a(:,:) 666 ! 667 ht_n(:,:) = e3t(:,:,1,kNnn) * tmask(:,:,1) 665 !! TO BE DELETED 666 !!$ hu_n(:,:) = hu_a(:,:) ; r1_hu_n(:,:) = r1_hu_a(:,:) 667 !!$ hv_n(:,:) = hv_a(:,:) ; r1_hv_n(:,:) = r1_hv_a(:,:) 668 !! TO BE DELETED 669 ! 670 ht(:,:) = e3t(:,:,1,kNnn) * tmask(:,:,1) 668 671 DO jk = 2, jpkm1 669 ht _n(:,:) = ht_n(:,:) + e3t(:,:,jk,kNnn) * tmask(:,:,jk)672 ht(:,:) = ht(:,:) + e3t(:,:,jk,kNnn) * tmask(:,:,jk) 670 673 END DO 671 674 -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynnxt.F90
r10768 r10787 358 358 ! 359 359 IF(.NOT.ln_linssh ) THEN 360 hu _b(:,:) = e3u(:,:,1,ikt ) * umask(:,:,1)361 hv _b(:,:) = e3v(:,:,1,ikt ) * vmask(:,:,1)360 hu(:,:,ikt) = e3u(:,:,1,ikt ) * umask(:,:,1) 361 hv(:,:,ikt) = e3v(:,:,1,ikt ) * vmask(:,:,1) 362 362 DO jk = 2, jpkm1 363 hu _b(:,:) = hu_b(:,:) + e3u(:,:,jk,ikt ) * umask(:,:,jk)364 hv _b(:,:) = hv_b(:,:) + e3v(:,:,jk,ikt ) * vmask(:,:,jk)363 hu(:,:,ikt) = hu(:,:,ikt) + e3u(:,:,jk,ikt ) * umask(:,:,jk) 364 hv(:,:,ikt) = hv(:,:,ikt) + e3v(:,:,jk,ikt ) * vmask(:,:,jk) 365 365 END DO 366 r1_hu _b(:,:) = ssumask(:,:) / ( hu_b(:,:) + 1._wp - ssumask(:,:) )367 r1_hv _b(:,:) = ssvmask(:,:) / ( hv_b(:,:) + 1._wp - ssvmask(:,:) )366 r1_hu(:,:,ikt) = ssumask(:,:) / ( hu(:,:,ikt) + 1._wp - ssumask(:,:) ) 367 r1_hv(:,:,ikt) = ssvmask(:,:) / ( hv(:,:,ikt) + 1._wp - ssvmask(:,:) ) 368 368 ENDIF 369 369 ! … … 378 378 vb_b(:,:) = vb_b(:,:) + e3v(:,:,jk,ikt ) * vv(:,:,jk,ikt ) * vmask(:,:,jk) 379 379 END DO 380 un_b(:,:) = un_b(:,:) * r1_hu _a(:,:)381 vn_b(:,:) = vn_b(:,:) * r1_hv _a(:,:)382 ub_b(:,:) = ub_b(:,:) * r1_hu _b(:,:)383 vb_b(:,:) = vb_b(:,:) * r1_hv _b(:,:)380 un_b(:,:) = un_b(:,:) * r1_hu(:,:,kNp1) 381 vn_b(:,:) = vn_b(:,:) * r1_hv(:,:,kNp1) 382 ub_b(:,:) = ub_b(:,:) * r1_hu(:,:,ikt) 383 vb_b(:,:) = vb_b(:,:) * r1_hv(:,:,ikt) 384 384 ! 385 385 IF( .NOT.ln_dynspg_ts ) THEN ! output the barotropic currents -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/step.F90
r10768 r10787 366 366 e3vw_b => e3vw(:,:,:,Nm1_2lev); e3vw_n => e3vw(:,:,:,Nnn_2lev) 367 367 368 gdept_b => gdept(:,:,:,Nm1_2lev); gdept_n => gdept(:,:,:,Nnn_2lev) 369 gdepw_b => gdepw(:,:,:,Nm1_2lev); gdepw_n => gdepw(:,:,:,Nnn_2lev) 370 gde3w_n => gde3w(:,:,:) 371 372 ht_n => ht(:,:) 373 hu_b => hu(:,:,Nm1); hu_n => hu(:,:,Nnn); hu_a => hu(:,:,Np1) 374 hv_b => hv(:,:,Nm1); hv_n => hv(:,:,Nnn); hv_a => hv(:,:,Np1) 375 r1_hu_b => r1_hu(:,:,Nm1); r1_hu_n => r1_hu(:,:,Nnn); r1_hu_a => r1_hu(:,:,Np1) 376 r1_hv_b => r1_hv(:,:,Nm1); r1_hv_n => r1_hv(:,:,Nnn); r1_hv_a => r1_hv(:,:,Np1) 377 368 378 END SUBROUTINE update_pointers 369 379
Note: See TracChangeset
for help on using the changeset viewer.