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 12724 for NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diaar5.F90 – NEMO

Ignore:
Timestamp:
2020-04-08T21:37:59+02:00 (4 years ago)
Author:
techene
Message:

branch KERNEL-06 : merge with trunk@12698 #2385 - in duplcated files : changes to comply to the new trunk variables and some loop bug fixes

Location:
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@HEAD         sette 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diaar5.F90

    r12680 r12724  
    3232   REAL(wp)                         ::   vol0         ! ocean volume (interior domain) 
    3333   REAL(wp)                         ::   area_tot     ! total ocean surface (interior domain) 
    34    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:  ) ::   area         ! cell surface (interior domain) 
    3534   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:  ) ::   thick0       ! ocean thickness (interior domain) 
    3635   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sn0          ! initial salinity 
     
    5554      !!---------------------------------------------------------------------- 
    5655      ! 
    57       ALLOCATE( area(jpi,jpj), thick0(jpi,jpj) , sn0(jpi,jpj,jpk) , STAT=dia_ar5_alloc ) 
     56      ALLOCATE( thick0(jpi,jpj) , sn0(jpi,jpj,jpk) , STAT=dia_ar5_alloc ) 
    5857      ! 
    5958      CALL mpp_sum ( 'diaar5', dia_ar5_alloc ) 
     
    9190         ALLOCATE( zrhd(jpi,jpj,jpk) , zrhop(jpi,jpj,jpk) ) 
    9291         ALLOCATE( ztsn(jpi,jpj,jpk,jpts) ) 
    93          zarea_ssh(:,:) = area(:,:) * ssh(:,:,Kmm) 
    94       ENDIF 
    95       ! 
    96       CALL iom_put( 'e2u'      , e2u (:,:) ) 
    97       CALL iom_put( 'e1v'      , e1v (:,:) ) 
    98       CALL iom_put( 'areacello', area(:,:) ) 
     92         zarea_ssh(:,:) = e1e2t(:,:) * ssh(:,:,Kmm) 
     93      ENDIF 
     94      ! 
     95      CALL iom_put( 'e2u'      , e2u  (:,:) ) 
     96      CALL iom_put( 'e1v'      , e1v  (:,:) ) 
     97      CALL iom_put( 'areacello', e1e2t(:,:) ) 
    9998      ! 
    10099      IF( iom_use( 'volcello' ) .OR. iom_use( 'masscello' )  ) THEN   
    101100         zrhd(:,:,jpk) = 0._wp        ! ocean volume ; rhd is used as workspace 
    102101         DO jk = 1, jpkm1 
    103             zrhd(:,:,jk) = area(:,:) * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 
     102            zrhd(:,:,jk) = e1e2t(:,:) * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 
    104103         END DO 
    105104         DO jk = 1, jpk 
    106             z3d(:,:,jk) =  rau0 * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 
     105            z3d(:,:,jk) =  rho0 * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 
    107106         END DO  
    108107         CALL iom_put( 'volcello'  , zrhd(:,:,:)  )  ! WARNING not consistent with CMIP DR where volcello is at ca. 2000 
     
    155154         END IF 
    156155         !                                          
    157          zarho = glob_sum( 'diaar5', area(:,:) * zbotpres(:,:) )  
     156         zarho = glob_sum( 'diaar5', e1e2t(:,:) * zbotpres(:,:) )  
    158157         zssh_steric = - zarho / area_tot 
    159158         CALL iom_put( 'sshthster', zssh_steric ) 
     
    181180         END IF 
    182181         !     
    183          zarho = glob_sum( 'diaar5', area(:,:) * zbotpres(:,:) )  
     182         zarho = glob_sum( 'diaar5', e1e2t(:,:) * zbotpres(:,:) )  
    184183         zssh_steric = - zarho / area_tot 
    185184         CALL iom_put( 'sshsteric', zssh_steric ) 
    186185         !                                         ! ocean bottom pressure 
    187          zztmp = rau0 * grav * 1.e-4_wp               ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa 
     186         zztmp = rho0 * grav * 1.e-4_wp               ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa 
    188187         zbotpres(:,:) = zztmp * ( zbotpres(:,:) + ssh(:,:,Kmm) + thick0(:,:) ) 
    189188         CALL iom_put( 'botpres', zbotpres ) 
     
    195194          ztsn(:,:,:,:) = 0._wp                    ! ztsn(:,:,1,jp_tem/sal) is used here as 2D Workspace for temperature & salinity 
    196195          DO_3D_11_11( 1, jpkm1 ) 
    197              zztmp = area(ji,jj) * e3t(ji,jj,jk,Kmm) 
     196             zztmp = e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) 
    198197             ztsn(ji,jj,1,jp_tem) = ztsn(ji,jj,1,jp_tem) + zztmp * ts(ji,jj,jk,jp_tem,Kmm) 
    199198             ztsn(ji,jj,1,jp_sal) = ztsn(ji,jj,1,jp_sal) + zztmp * ts(ji,jj,jk,jp_sal,Kmm) 
     
    217216         ztemp = glob_sum( 'diaar5', ztsn(:,:,1,jp_tem) ) 
    218217         zsal  = glob_sum( 'diaar5', ztsn(:,:,1,jp_sal) ) 
    219          zmass = rau0 * ( zarho + zvol )       
     218         zmass = rho0 * ( zarho + zvol )       
    220219         ! 
    221220         CALL iom_put( 'masstot', zmass ) 
     
    241240               z2d(:,:) = 0._wp 
    242241               DO jk = 1, jpkm1 
    243                  z2d(:,:) = z2d(:,:) + area(:,:) * e3t(:,:,jk,Kmm) * ztpot(:,:,jk) 
     242                 z2d(:,:) = z2d(:,:) + e1e2t(:,:) * e3t(:,:,jk,Kmm) * ztpot(:,:,jk) 
    244243               END DO 
    245244               ztemp = glob_sum( 'diaar5', z2d(:,:)  )  
     
    248247             ! 
    249248             IF( iom_use( 'ssttot' ) ) THEN   ! Output potential temperature in case we use TEOS-10 
    250                zsst = glob_sum( 'diaar5',  area(:,:) * ztpot(:,:,1)  )  
     249               zsst = glob_sum( 'diaar5',  e1e2t(:,:) * ztpot(:,:,1)  )  
    251250               CALL iom_put( 'ssttot', zsst / area_tot ) 
    252251             ENDIF 
     
    255254               z2d(:,:) = 0._wp 
    256255               DO_3D_11_11( 1, jpkm1 ) 
    257                   z2d(ji,jj) = z2d(ji,jj) + rau0 * e3t(ji,jj,jk,Kmm) *  ztpot(ji,jj,jk) 
     256                  z2d(ji,jj) = z2d(ji,jj) + rho0 * e3t(ji,jj,jk,Kmm) *  ztpot(ji,jj,jk) 
    258257               END_3D 
    259258               CALL iom_put( 'tosmint_pot', z2d )  
     
    263262      ELSE        
    264263         IF( iom_use('ssttot') ) THEN   ! Output sst in case we use EOS-80 
    265             zsst  = glob_sum( 'diaar5', area(:,:) * ts(:,:,1,jp_tem,Kmm) ) 
     264            zsst  = glob_sum( 'diaar5', e1e2t(:,:) * ts(:,:,1,jp_tem,Kmm) ) 
    266265            CALL iom_put('ssttot', zsst / area_tot ) 
    267266         ENDIF 
     
    289288          ELSE 
    290289            DO_3D_11_11( 1, jpk ) 
    291                zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * rau0 * e3w(ji,jj,jk,Kmm) 
     290               zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * rho0 * e3w(ji,jj,jk,Kmm) 
    292291            END_3D 
    293292         ENDIF 
     
    329328       CALL lbc_lnk( 'diaar5', z2d, 'U', -1. ) 
    330329       IF( cptr == 'adv' ) THEN 
    331           IF( ktra == jp_tem ) CALL iom_put( 'uadv_heattr' , rau0_rcp * z2d )  ! advective heat transport in i-direction 
    332           IF( ktra == jp_sal ) CALL iom_put( 'uadv_salttr' , rau0     * z2d )  ! advective salt transport in i-direction 
     330          IF( ktra == jp_tem ) CALL iom_put( 'uadv_heattr' , rho0_rcp * z2d )  ! advective heat transport in i-direction 
     331          IF( ktra == jp_sal ) CALL iom_put( 'uadv_salttr' , rho0     * z2d )  ! advective salt transport in i-direction 
    333332       ENDIF 
    334333       IF( cptr == 'ldf' ) THEN 
    335           IF( ktra == jp_tem ) CALL iom_put( 'udiff_heattr' , rau0_rcp * z2d ) ! diffusive heat transport in i-direction 
    336           IF( ktra == jp_sal ) CALL iom_put( 'udiff_salttr' , rau0     * z2d ) ! diffusive salt transport in i-direction 
     334          IF( ktra == jp_tem ) CALL iom_put( 'udiff_heattr' , rho0_rcp * z2d ) ! diffusive heat transport in i-direction 
     335          IF( ktra == jp_sal ) CALL iom_put( 'udiff_salttr' , rho0     * z2d ) ! diffusive salt transport in i-direction 
    337336       ENDIF 
    338337       ! 
     
    343342       CALL lbc_lnk( 'diaar5', z2d, 'V', -1. ) 
    344343       IF( cptr == 'adv' ) THEN 
    345           IF( ktra == jp_tem ) CALL iom_put( 'vadv_heattr' , rau0_rcp * z2d )  ! advective heat transport in j-direction 
    346           IF( ktra == jp_sal ) CALL iom_put( 'vadv_salttr' , rau0     * z2d )  ! advective salt transport in j-direction 
     344          IF( ktra == jp_tem ) CALL iom_put( 'vadv_heattr' , rho0_rcp * z2d )  ! advective heat transport in j-direction 
     345          IF( ktra == jp_sal ) CALL iom_put( 'vadv_salttr' , rho0     * z2d )  ! advective salt transport in j-direction 
    347346       ENDIF 
    348347       IF( cptr == 'ldf' ) THEN 
    349           IF( ktra == jp_tem ) CALL iom_put( 'vdiff_heattr' , rau0_rcp * z2d ) ! diffusive heat transport in j-direction 
    350           IF( ktra == jp_sal ) CALL iom_put( 'vdiff_salttr' , rau0     * z2d ) ! diffusive salt transport in j-direction 
     348          IF( ktra == jp_tem ) CALL iom_put( 'vdiff_heattr' , rho0_rcp * z2d ) ! diffusive heat transport in j-direction 
     349          IF( ktra == jp_sal ) CALL iom_put( 'vdiff_salttr' , rho0     * z2d ) ! diffusive salt transport in j-direction 
    351350       ENDIF 
    352351           
     
    379378         IF( dia_ar5_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dia_ar5_init : unable to allocate arrays' ) 
    380379 
    381          area(:,:) = e1e2t(:,:) 
    382          area_tot  = glob_sum( 'diaar5', area(:,:) ) 
     380         area_tot  = glob_sum( 'diaar5', e1e2t(:,:) ) 
    383381 
    384382         ALLOCATE( zvol0(jpi,jpj) ) 
     
    387385         DO_3D_11_11( 1, jpkm1 ) 
    388386            idep = tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 
    389             zvol0 (ji,jj) = zvol0 (ji,jj) +  idep * area(ji,jj) 
     387            zvol0 (ji,jj) = zvol0 (ji,jj) +  idep * e1e2t(ji,jj) 
    390388            thick0(ji,jj) = thick0(ji,jj) +  idep     
    391389         END_3D 
Note: See TracChangeset for help on using the changeset viewer.