New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 12326 for NEMO/branches/UKMO/NEMO_4.0.1_MIRROR_WAD_ZENV/src/OCE/DOM/domain.F90 – NEMO

Ignore:
Timestamp:
2020-01-16T07:56:47+01:00 (4 years ago)
Author:
deazer
Message:

Adjusted to account for flux form advection
should now work with both types of advection and enveloping bathymetry
moved one off caluculations of depth scales to domain.F90

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.1_MIRROR_WAD_ZENV/src/OCE/DOM/domain.F90

    r11715 r12326  
    7979      INTEGER , DIMENSION(jpi,jpj) ::   ik_top , ik_bot       ! top and bottom ocean level 
    8080      REAL(wp), DIMENSION(jpi,jpj) ::   z1_hu_0, z1_hv_0 
     81!CEOD 
     82      REAL(wp), DIMENSION(jpi,jpj) ::  k_bot_i_min, k_bot_j_min 
     83      REAL(wp), DIMENSION(jpi,jpj) :: sum_e3t_0_min_ik 
     84      REAL(wp), DIMENSION(jpi,jpj) :: sum_e3t_0_min_jk 
     85      REAL(wp), DIMENSION(jpi,jpj) :: sum_e3t_0_min_ip1k 
     86      REAL(wp), DIMENSION(jpi,jpj) :: sum_e3t_0_min_jp1k 
    8187      !!---------------------------------------------------------------------- 
    8288      ! 
     
    155161         hv_0(:,:) = hv_0(:,:) + e3v_0(:,:,jk) * vmask(:,:,jk) 
    156162      END DO 
     163!CEOD Here we need to work out whihc is the the shallowest point in terms of k 
     164!levels at neighbouring points in i and je directions. 
     165! then we need to wkr out the proprtion of the water column down to ht_0 that 
     166! that level is for both i points. 
     167! e.g point i could say go down to level 10 but point i+1 only level 5 
     168! then work out depth of bottom of level 5 at point i over depth at point i to 
     169! level 10 
     170! This is needed later to work out where a u point depth should be when using 
     171! enveloping coordinates, as it wil be 1/2 depth at t point at level 5 for i,i+1 
     172! points Because level 5 at i can change in time, thus u bed can change in time! 
     173! What about under ice shelves? Need rto return to that later 
     174 
     175! 1) get the shallowest k level at nighbrougin i and j points store in ! k_bot_i_min 
     176 
     177         DO jj = 1, jpjm1 
     178            DO ji = 1, jpim1                ! SPG with the application of W/D gravity filters 
     179                 k_bot_i_min(ji,jj) = MIN( ik_bot(ji,jj), ik_bot(ji+1,jj  )) 
     180                 k_bot_j_min(ji,jj) = MIN( ik_bot(ji,jj), ik_bot(ji,  jj+1)) 
     181            ENDDO 
     182        ENDDO 
     183! 2) Work out the depth down to the shallowest k levle both at point i and i+1 
     184! (likewise for j)  
     185 
     186        sum_e3t_0_min_ik(:,:) = 0 
     187        sum_e3t_0_min_jk(:,:) = 0 
     188        sum_e3t_0_min_ip1k(:,:) = 0 
     189        sum_e3t_0_min_jp1k(:,:) = 0 
     190 
     191        !Get sum of e3t_0s down to local min 
     192        DO jj = 1, jpjm1 
     193           DO ji = 1, jpim1                
     194             DO jk = 1, k_bot_i_min(ji,jj) 
     195  
     196                sum_e3t_0_min_ik  (ji,jj) =  sum_e3t_0_min_ik  (ji,jj) + e3t_0(ji  ,jj,jk)*tmask(ji,jj,jk) 
     197                sum_e3t_0_min_ip1k(ji,jj) =  sum_e3t_0_min_ip1k(ji,jj) + e3t_0(ji+1,jj,jk)*tmask(ji+1,jj,jk) 
     198             ENDDO 
     199            
     200             DO jk = 1, k_bot_j_min(ji,jj) 
     201                sum_e3t_0_min_jk  (ji,jj) =  sum_e3t_0_min_jk  (ji,jj) + e3t_0(ji,jj  ,jk)*tmask(ji,jj,jk) 
     202                sum_e3t_0_min_jp1k(ji,jj) =  sum_e3t_0_min_jp1k(ji,jj) + e3t_0(ji,jj+1,jk)*tmask(ji,jj+1,jk) 
     203             ENDDO 
     204! 3)  Then work out what fraction of the at rest water column that is, we later 
     205! multiply the now water depth by this scale to work out the bottom of the kth 
     206! level at time now in dynspg_ts  
     207             scaled_e3t_0_ik  (ji,jj) = sum_e3t_0_min_ik  (ji,jj)/( ht_0(ji  ,jj  ) + 1._wp - ssmask(ji,jj)) 
     208             scaled_e3t_0_jk  (ji,jj) = sum_e3t_0_min_jk  (ji,jj)/( ht_0(ji  ,jj  ) + 1._wp - ssmask(ji,jj)) 
     209             scaled_e3t_0_ip1k(ji,jj) = sum_e3t_0_min_ip1k(ji,jj)/( ht_0(ji+1,jj  ) + 1._wp - ssmask(ji+1,jj)) 
     210             scaled_e3t_0_jp1k(ji,jj) = sum_e3t_0_min_jp1k(ji,jj)/( ht_0(ji  ,jj+1) + 1._wp - ssmask(ji,jj+1)) 
     211          ENDDO 
     212       ENDDO 
    157213      ! 
    158214      !           !==  time varying part of coordinate system  ==! 
Note: See TracChangeset for help on using the changeset viewer.