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 11903 for NEMO/branches – NEMO

Changeset 11903 for NEMO/branches


Ignore:
Timestamp:
2019-11-14T11:34:15+01:00 (4 years ago)
Author:
davestorkey
Message:

UKMO/NEMO_4.0_momentum_trends : modification to bottom friction trend diagnostic.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0_momentum_trends/src/OCE/TRD/trddyn.F90

    r11613 r11903  
    4040   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE :: zutrd_hpg, zvtrd_hpg 
    4141   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE :: zutrd_pvo, zvtrd_pvo 
     42   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE :: zutrd_bfr, zvtrd_bfr 
    4243 
    4344   !! * Substitutions 
     
    6162      INTEGER                   , INTENT(in   ) ::   ktrd           ! trend index 
    6263      INTEGER                   , INTENT(in   ) ::   kt             ! time step 
     64      REAL(wp), ALLOCATABLE, DIMENSION(:,:)     ::   zue, zve       ! temporary 2D arrays 
     65      INTEGER                                   ::   jk 
    6366      !!---------------------------------------------------------------------- 
    6467      ! 
     
    9396            pvtrd(:,:,:) = pvtrd(:,:,:) + zvtrd_hpg(:,:,:)  
    9497            DEALLOCATE( zutrd_hpg, zvtrd_hpg ) 
     98         ENDIF 
     99 
     100         IF( ktrd == jpdyn_bfr ) THEN 
     101            ! 
     102            ! Add 3D part of BFR trend minus its depth-mean part to depth-mean trend already saved. 
     103            ALLOCATE( zue(jpi,jpj), zve(jpi,jpj) ) 
     104            zue(:,:) = e3u_a(:,:,1) * putrd(:,:,1) * umask(:,:,1) 
     105            zve(:,:) = e3v_a(:,:,1) * pvtrd(:,:,1) * vmask(:,:,1) 
     106            DO jk = 2, jpkm1 
     107               zue(:,:) = zue(:,:) + e3u_a(:,:,jk) * putrd(:,:,jk) * umask(:,:,jk) 
     108               zve(:,:) = zve(:,:) + e3v_a(:,:,jk) * pvtrd(:,:,jk) * vmask(:,:,jk) 
     109            END DO 
     110            DO jk = 1, jpkm1 
     111               putrd(:,:,jk) = zutrd_bfr(:,:,jk) + putrd(:,:,jk) - zue(:,:) * r1_hu_a(:,:) 
     112               pvtrd(:,:,jk) = zvtrd_bfr(:,:,jk) + pvtrd(:,:,jk) - zve(:,:) * r1_hv_a(:,:) 
     113            END DO 
     114            DEALLOCATE( zue, zve, zutrd_bfr, zvtrd_bfr ) 
    95115         ENDIF 
    96116 
     
    187207          CALL trd_dyn_3d( zutrd_pvo, zvtrd_pvo, jpdyn_pvo, kt ) 
    188208          DEALLOCATE( zutrd_pvo, zvtrd_pvo ) 
     209 
     210      CASE( jpdyn_bfr ) 
     211          ! 
     212          ! Create 3D BFR trend from 2D field and also output 2D field as diagnostic in own right. 
     213          ALLOCATE( zutrd_bfr(jpi,jpj,jpk), zvtrd_bfr(jpi,jpj,jpk) ) 
     214          zutrd_bfr(:,:,:) = 0.0 
     215          zvtrd_bfr(:,:,:) = 0.0 
     216          DO jk = 1, jpkm1 
     217             zutrd_bfr(:,:,jk) = putrd(:,:) 
     218             zvtrd_bfr(:,:,jk) = pvtrd(:,:) 
     219          ENDDO 
     220          CALL trd_dyn_iom_2d( putrd, pvtrd, jpdyn_bfr, kt )  
    189221 
    190222      CASE DEFAULT  
Note: See TracChangeset for help on using the changeset viewer.