Ignore:
Timestamp:
2012-03-14T10:19:21+01:00 (9 years ago)
Author:
gm
Message:

Ediag branche: #927 add Potential Energy trend diagnostics (trdpen.F90)

Location:
branches/2012/dev_r3309_LOCEAN12_Ediag/NEMOGCM/NEMO/OPA_SRC/TRD
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3309_LOCEAN12_Ediag/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90

    r3325 r3326  
    8888      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zke                 ! 3D workspace  
    8989      !!---------------------------------------------------------------------- 
     90      ! 
     91      CALL wrk_alloc( jpi, jpj     , z2dx, z2dy, zke2d ) 
     92      CALL wrk_alloc( jpi, jpj, jpk, zke ) 
    9093      ! 
    9194      CALL lbc_lnk( putrd, 'U', -1. )   ;   CALL lbc_lnk( pvtrd, 'V', -1. )      ! lateral boundary conditions 
  • branches/2012/dev_r3309_LOCEAN12_Ediag/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90

    r3318 r3326  
    122122            END SELECT 
    123123         ELSE                            ! other trends: mask and send T & S trends to trd_tra_mng 
    124             ztrds(:,:,:) = ptrd(:,:,:) * tmask(:,:,:) 
    125             CALL trd_tra_mng( trdt, ztrds, ktrd, kt )   
    126          ENDIF 
    127          ! 
    128          IF( ktrd == jptra_zdfp ) THEN     ! diagnose the "PURE" Kz trend (here: just before the swap) 
    129124            ! 
    130             IF( ln_traldf_iso ) THEN      ! iso-neutral diffusion only otherwise jptra_zdf is "PURE" 
     125            IF( ktrd == jptra_zdfp ) THEN     ! diagnose the "PURE" Kz trend (here: just before the swap) 
    131126               ! 
    132                CALL wrk_alloc( jpi, jpj, jpk, zwt, zws, ztrdt ) 
     127               IF( ln_traldf_iso ) THEN       ! iso-neutral diffusion only otherwise jptra_zdf is "PURE" 
     128                  ! 
     129                  CALL wrk_alloc( jpi, jpj, jpk, zwt, zws, ztrdt ) 
     130                  ! 
     131                  zwt(:,:, 1 ) = 0._wp   ;   zws(:,:, 1 ) = 0._wp            ! vertical diffusive fluxes 
     132                  zwt(:,:,jpk) = 0._wp   ;   zws(:,:,jpk) = 0._wp 
     133                  DO jk = 2, jpk 
     134                     zwt(:,:,jk) =   avt(:,:,jk) * ( tsa(:,:,jk-1,jp_tem) - tsa(:,:,jk,jp_tem) ) / fse3w(:,:,jk) * tmask(:,:,jk) 
     135                     zws(:,:,jk) = fsavs(:,:,jk) * ( tsa(:,:,jk-1,jp_sal) - tsa(:,:,jk,jp_sal) ) / fse3w(:,:,jk) * tmask(:,:,jk) 
     136                  END DO 
     137                  ! 
     138                  ztrdt(:,:,jpk) = 0._wp   ;   ztrds(:,:,jpk) = 0._wp 
     139                  DO jk = 1, jpkm1 
     140                     ztrdt(:,:,jk) = ( zwt(:,:,jk) - zwt(:,:,jk+1) ) / fse3t(:,:,jk) 
     141                     ztrds(:,:,jk) = ( zws(:,:,jk) - zws(:,:,jk+1) ) / fse3t(:,:,jk)  
     142                  END DO 
     143                  CALL trd_tra_mng( ztrdt, ztrds, jptra_zdfp, kt )   
     144                  ! 
     145                  CALL wrk_dealloc( jpi, jpj, jpk, zwt, zws, ztrdt ) 
     146                  ! 
     147               ENDIF 
    133148               ! 
    134                zwt(:,:, 1 ) = 0._wp   ;   zws(:,:, 1 ) = 0._wp            ! vertical diffusive fluxes 
    135                zwt(:,:,jpk) = 0._wp   ;   zws(:,:,jpk) = 0._wp 
    136                DO jk = 2, jpk 
    137                   zwt(:,:,jk) =   avt(:,:,jk) * ( tsa(:,:,jk-1,jp_tem) - tsa(:,:,jk,jp_tem) ) / fse3w(:,:,jk) * tmask(:,:,jk) 
    138                   zws(:,:,jk) = fsavs(:,:,jk) * ( tsa(:,:,jk-1,jp_sal) - tsa(:,:,jk,jp_sal) ) / fse3w(:,:,jk) * tmask(:,:,jk) 
    139                END DO 
    140                ! 
    141                ztrdt(:,:,jpk) = 0._wp   ;   ztrds(:,:,jpk) = 0._wp 
    142                DO jk = 1, jpkm1 
    143                   ztrdt(:,:,jk) = ( zwt(:,:,jk) - zwt(:,:,jk+1) ) / fse3t(:,:,jk) 
    144                   ztrds(:,:,jk) = ( zws(:,:,jk) - zws(:,:,jk+1) ) / fse3t(:,:,jk)  
    145                END DO 
    146                CALL trd_tra_mng( ztrdt, ztrds, jptra_zdfp, kt )   
    147                ! 
    148                CALL wrk_dealloc( jpi, jpj, jpk, zwt, zws, ztrdt ) 
    149                ! 
     149            ELSE                              !  
     150               ztrds(:,:,:) = ptrd(:,:,:) * tmask(:,:,:) 
     151               CALL trd_tra_mng( trdt, ztrds, ktrd, kt )   
    150152            ENDIF 
    151             ! 
    152          ENDIF 
    153153      ENDIF 
    154154 
     
    305305      SELECT CASE( ktrd ) 
    306306      CASE( jptra_xad  )   ;   CALL iom_put( "ttrd_xad" , ptrdx )        ! x- horizontal advection 
    307                                    CALL iom_put( "strd_xad" , ptrdy ) 
     307                               CALL iom_put( "strd_xad" , ptrdy ) 
    308308      CASE( jptra_yad  )   ;   CALL iom_put( "ttrd_yad" , ptrdx )        ! y- horizontal advection 
    309                                    CALL iom_put( "strd_yad" , ptrdy ) 
     309                               CALL iom_put( "strd_yad" , ptrdy ) 
    310310      CASE( jptra_zad  )   ;   CALL iom_put( "ttrd_zad" , ptrdx )        ! z- vertical   advection 
    311311                               CALL iom_put( "strd_zad" , ptrdy ) 
Note: See TracChangeset for help on using the changeset viewer.