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 12631 – NEMO

Changeset 12631


Ignore:
Timestamp:
2020-03-31T10:55:26+02:00 (4 years ago)
Author:
jchanut
Message:

Solve #2400 and replace at the same time useless area array by e1e2t

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/releases/r4.0/r4.0-HEAD/src/OCE/DIA/diaar5.F90

    r12276 r12631  
    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 
     
    5453      !!---------------------------------------------------------------------- 
    5554      ! 
    56       ALLOCATE( area(jpi,jpj), thick0(jpi,jpj) , sn0(jpi,jpj,jpk) , STAT=dia_ar5_alloc ) 
     55      ALLOCATE( thick0(jpi,jpj) , sn0(jpi,jpj,jpk) , STAT=dia_ar5_alloc ) 
    5756      ! 
    5857      CALL mpp_sum ( 'diaar5', dia_ar5_alloc ) 
     
    8988         ALLOCATE( zrhd(jpi,jpj,jpk) , zrhop(jpi,jpj,jpk) ) 
    9089         ALLOCATE( ztsn(jpi,jpj,jpk,jpts) ) 
    91          zarea_ssh(:,:) = area(:,:) * sshn(:,:) 
    92       ENDIF 
    93       ! 
    94       CALL iom_put( 'e2u'      , e2u (:,:) ) 
    95       CALL iom_put( 'e1v'      , e1v (:,:) ) 
    96       CALL iom_put( 'areacello', area(:,:) ) 
     90         zarea_ssh(:,:) = e1e2t(:,:) * sshn(:,:) 
     91      ENDIF 
     92      ! 
     93      CALL iom_put( 'e2u'      , e2u  (:,:) ) 
     94      CALL iom_put( 'e1v'      , e1v  (:,:) ) 
     95      CALL iom_put( 'areacello', e1e2t(:,:) ) 
    9796      ! 
    9897      IF( iom_use( 'volcello' ) .OR. iom_use( 'masscello' )  ) THEN   
    9998         zrhd(:,:,jpk) = 0._wp        ! ocean volume ; rhd is used as workspace 
    10099         DO jk = 1, jpkm1 
    101             zrhd(:,:,jk) = area(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk) 
     100            zrhd(:,:,jk) = e1e2t(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk) 
    102101         END DO 
    103102         CALL iom_put( 'volcello'  , zrhd(:,:,:)  )  ! WARNING not consistent with CMIP DR where volcello is at ca. 2000 
     
    152151         END IF 
    153152         !                                          
    154          zarho = glob_sum( 'diaar5', area(:,:) * zbotpres(:,:) )  
     153         zarho = glob_sum( 'diaar5', e1e2t(:,:) * zbotpres(:,:) )  
    155154         zssh_steric = - zarho / area_tot 
    156155         CALL iom_put( 'sshthster', zssh_steric ) 
     
    178177         END IF 
    179178         !     
    180          zarho = glob_sum( 'diaar5', area(:,:) * zbotpres(:,:) )  
     179         zarho = glob_sum( 'diaar5', e1e2t(:,:) * zbotpres(:,:) )  
    181180         zssh_steric = - zarho / area_tot 
    182181         CALL iom_put( 'sshsteric', zssh_steric ) 
     
    194193             DO jj = 1, jpj 
    195194                DO ji = 1, jpi 
    196                    zztmp = area(ji,jj) * e3t_n(ji,jj,jk) 
     195                   zztmp = e1e2t(ji,jj) * e3t_n(ji,jj,jk) 
    197196                   ztsn(ji,jj,1,jp_tem) = ztsn(ji,jj,1,jp_tem) + zztmp * tsn(ji,jj,jk,jp_tem) 
    198197                   ztsn(ji,jj,1,jp_sal) = ztsn(ji,jj,1,jp_sal) + zztmp * tsn(ji,jj,jk,jp_sal) 
     
    242241               z2d(:,:) = 0._wp 
    243242               DO jk = 1, jpkm1 
    244                  z2d(:,:) = z2d(:,:) + area(:,:) * e3t_n(:,:,jk) * ztpot(:,:,jk) 
     243                 z2d(:,:) = z2d(:,:) + e1e2t(:,:) * e3t_n(:,:,jk) * ztpot(:,:,jk) 
    245244               END DO 
    246245               ztemp = glob_sum( 'diaar5', z2d(:,:)  )  
     
    249248             ! 
    250249             IF( iom_use( 'ssttot' ) ) THEN   ! Output potential temperature in case we use TEOS-10 
    251                zsst = glob_sum( 'diaar5',  area(:,:) * ztpot(:,:,1)  )  
     250               zsst = glob_sum( 'diaar5',  e1e2t(:,:) * ztpot(:,:,1)  )  
    252251               CALL iom_put( 'ssttot', zsst / area_tot ) 
    253252             ENDIF 
     
    268267      ELSE        
    269268         IF( iom_use('ssttot') ) THEN   ! Output sst in case we use EOS-80 
    270             zsst  = glob_sum( 'diaar5', area(:,:) * tsn(:,:,1,jp_tem) ) 
     269            zsst  = glob_sum( 'diaar5', e1e2t(:,:) * tsn(:,:,1,jp_tem) ) 
    271270            CALL iom_put('ssttot', zsst / area_tot ) 
    272271         ENDIF 
     
    400399         IF( dia_ar5_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dia_ar5_init : unable to allocate arrays' ) 
    401400 
    402          area(:,:) = e1e2t(:,:) 
    403          area_tot  = glob_sum( 'diaar5', area(:,:) ) 
     401         area_tot  = glob_sum( 'diaar5', e1e2t(:,:) ) 
    404402 
    405403         ALLOCATE( zvol0(jpi,jpj) ) 
     
    410408               DO ji = 1, jpi 
    411409                  idep = tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 
    412                   zvol0 (ji,jj) = zvol0 (ji,jj) +  idep * area(ji,jj) 
     410                  zvol0 (ji,jj) = zvol0 (ji,jj) +  idep * e1e2t(ji,jj) 
    413411                  thick0(ji,jj) = thick0(ji,jj) +  idep     
    414412               END DO 
Note: See TracChangeset for help on using the changeset viewer.