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 13710 for NEMO/branches/2020/dev_r12702_ASINTER-02_emanuelaclementi_Waves/src/OCE/DIA/diawri.F90 – NEMO

Ignore:
Timestamp:
2020-11-02T10:56:42+01:00 (4 years ago)
Author:
emanuelaclementi
Message:

branches/2020/dev_r12702_ASINTER-02_emanuelaclementi_Waves: merge with trunk@13708, see #2155 and #2339

Location:
NEMO/branches/2020/dev_r12702_ASINTER-02_emanuelaclementi_Waves
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12702_ASINTER-02_emanuelaclementi_Waves

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
        88 
        99# SETTE 
        10 ^/utils/CI/sette@HEAD         sette 
         10^/utils/CI/sette@13559        sette 
  • NEMO/branches/2020/dev_r12702_ASINTER-02_emanuelaclementi_Waves/src/OCE/DIA/diawri.F90

    r12649 r13710  
    8585   !! * Substitutions 
    8686#  include "do_loop_substitute.h90" 
     87#  include "domzgr_substitute.h90" 
    8788   !!---------------------------------------------------------------------- 
    8889   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    117118      INTEGER ::   ji, jj, jk       ! dummy loop indices 
    118119      INTEGER ::   ikbot            ! local integer 
     120      REAL(wp)::   ze3 
    119121      REAL(wp)::   zztmp , zztmpx   ! local scalar 
    120122      REAL(wp)::   zztmp2, zztmpy   !   -      - 
     
    136138      CALL iom_put("e3v_0", e3v_0(:,:,:) ) 
    137139      ! 
    138       CALL iom_put( "e3t" , e3t(:,:,:,Kmm) ) 
    139       CALL iom_put( "e3u" , e3u(:,:,:,Kmm) ) 
    140       CALL iom_put( "e3v" , e3v(:,:,:,Kmm) ) 
    141       CALL iom_put( "e3w" , e3w(:,:,:,Kmm) ) 
    142       IF( iom_use("e3tdef") )   & 
    143          CALL iom_put( "e3tdef"  , ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 
    144  
    145       IF( ll_wd ) THEN 
    146          CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*tmask(:,:,1) )   ! sea surface height (brought back to the reference used for wetting and drying) 
     140      IF ( iom_use("e3t") .OR. iom_use("e3tdef") ) THEN  ! time-varying e3t 
     141         DO jk = 1, jpk 
     142            z3d(:,:,jk) =  e3t(:,:,jk,Kmm) 
     143         END DO 
     144         CALL iom_put( "e3t"     ,     z3d(:,:,:) ) 
     145         CALL iom_put( "e3tdef"  , ( ( z3d(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 )  
     146      ENDIF  
     147      IF ( iom_use("e3u") ) THEN                         ! time-varying e3u 
     148         DO jk = 1, jpk 
     149            z3d(:,:,jk) =  e3u(:,:,jk,Kmm) 
     150         END DO  
     151         CALL iom_put( "e3u" , z3d(:,:,:) ) 
     152      ENDIF 
     153      IF ( iom_use("e3v") ) THEN                         ! time-varying e3v 
     154         DO jk = 1, jpk 
     155            z3d(:,:,jk) =  e3v(:,:,jk,Kmm) 
     156         END DO  
     157         CALL iom_put( "e3v" , z3d(:,:,:) ) 
     158      ENDIF 
     159      IF ( iom_use("e3w") ) THEN                         ! time-varying e3w 
     160         DO jk = 1, jpk 
     161            z3d(:,:,jk) =  e3w(:,:,jk,Kmm) 
     162         END DO  
     163         CALL iom_put( "e3w" , z3d(:,:,:) ) 
     164      ENDIF 
     165 
     166      IF( ll_wd ) THEN                                   ! sea surface height (brought back to the reference used for wetting and drying) 
     167         CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*tmask(:,:,1) ) 
    147168      ELSE 
    148169         CALL iom_put( "ssh" , ssh(:,:,Kmm) )              ! sea surface height 
     
    155176      CALL iom_put(  "sst", ts(:,:,1,jp_tem,Kmm) )    ! surface temperature 
    156177      IF ( iom_use("sbt") ) THEN 
    157          DO_2D_11_11 
     178         DO_2D( 0, 0, 0, 0 ) 
    158179            ikbot = mbkt(ji,jj) 
    159180            z2d(ji,jj) = ts(ji,jj,ikbot,jp_tem,Kmm) 
     
    165186      CALL iom_put(  "sss", ts(:,:,1,jp_sal,Kmm) )    ! surface salinity 
    166187      IF ( iom_use("sbs") ) THEN 
    167          DO_2D_11_11 
     188         DO_2D( 0, 0, 0, 0 ) 
    168189            ikbot = mbkt(ji,jj) 
    169190            z2d(ji,jj) = ts(ji,jj,ikbot,jp_sal,Kmm) 
     
    172193      ENDIF 
    173194 
     195#if ! defined key_qco 
     196      CALL iom_put( "rhop", rhop(:,:,:) )          ! 3D potential density (sigma0) 
     197#endif 
     198 
    174199      IF ( iom_use("taubot") ) THEN                ! bottom stress 
    175200         zztmp = rho0 * 0.25 
    176201         z2d(:,:) = 0._wp 
    177          DO_2D_00_00 
     202         DO_2D( 0, 0, 0, 0 ) 
    178203            zztmp2 = (  ( rCdU_bot(ji+1,jj)+rCdU_bot(ji  ,jj) ) * uu(ji  ,jj,mbku(ji  ,jj),Kmm)  )**2   & 
    179204               &   + (  ( rCdU_bot(ji  ,jj)+rCdU_bot(ji-1,jj) ) * uu(ji-1,jj,mbku(ji-1,jj),Kmm)  )**2   & 
     
    183208            ! 
    184209         END_2D 
    185          CALL lbc_lnk( 'diawri', z2d, 'T', 1. ) 
    186210         CALL iom_put( "taubot", z2d )            
    187211      ENDIF 
     
    190214      CALL iom_put(  "ssu", uu(:,:,1,Kmm) )            ! surface i-current 
    191215      IF ( iom_use("sbu") ) THEN 
    192          DO_2D_11_11 
     216         DO_2D( 0, 0, 0, 0 ) 
    193217            ikbot = mbku(ji,jj) 
    194218            z2d(ji,jj) = uu(ji,jj,ikbot,Kmm) 
     
    200224      CALL iom_put(  "ssv", vv(:,:,1,Kmm) )            ! surface j-current 
    201225      IF ( iom_use("sbv") ) THEN 
    202          DO_2D_11_11 
     226         DO_2D( 0, 0, 0, 0 ) 
    203227            ikbot = mbkv(ji,jj) 
    204228            z2d(ji,jj) = vv(ji,jj,ikbot,Kmm) 
     
    208232 
    209233      IF( ln_zad_Aimp ) ww = ww + wi               ! Recombine explicit and implicit parts of vertical velocity for diagnostic output 
    210       ! 
    211234      CALL iom_put( "woce", ww )                   ! vertical velocity 
     235 
    212236      IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN   ! vertical mass transport & its square value 
    213237         ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 
     
    229253      IF( iom_use('logavs') )   CALL iom_put( "logavs", LOG( MAX( 1.e-20_wp, avs(:,:,:) ) ) ) 
    230254 
     255      IF ( iom_use("socegrad") .OR. iom_use("socegrad2") ) THEN 
     256         z3d(:,:,jpk) = 0. 
     257         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     258            zztmp  = ts(ji,jj,jk,jp_sal,Kmm) 
     259            zztmpx = (ts(ji+1,jj,jk,jp_sal,Kmm) - zztmp) * r1_e1u(ji,jj) + (zztmp - ts(ji-1,jj  ,jk,jp_sal,Kmm)) * r1_e1u(ji-1,jj) 
     260            zztmpy = (ts(ji,jj+1,jk,jp_sal,Kmm) - zztmp) * r1_e2v(ji,jj) + (zztmp - ts(ji  ,jj-1,jk,jp_sal,Kmm)) * r1_e2v(ji,jj-1) 
     261            z3d(ji,jj,jk) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy )   & 
     262               &                 * umask(ji,jj,jk) * umask(ji-1,jj,jk) * vmask(ji,jj,jk) * umask(ji,jj-1,jk) 
     263         END_3D 
     264         CALL iom_put( "socegrad2",  z3d )          ! square of module of sal gradient 
     265         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     266            z3d(ji,jj,jk) = SQRT( z3d(ji,jj,jk) ) 
     267         END_3D 
     268         CALL iom_put( "socegrad" ,  z3d )          ! module of sal gradient 
     269      ENDIF 
     270          
    231271      IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN 
    232          DO_2D_00_00 
     272         DO_2D( 0, 0, 0, 0 )                                 ! sst gradient 
    233273            zztmp  = ts(ji,jj,1,jp_tem,Kmm) 
    234274            zztmpx = ( ts(ji+1,jj,1,jp_tem,Kmm) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - ts(ji-1,jj  ,1,jp_tem,Kmm) ) * r1_e1u(ji-1,jj) 
     
    237277               &              * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) 
    238278         END_2D 
    239          CALL lbc_lnk( 'diawri', z2d, 'T', 1. ) 
    240279         CALL iom_put( "sstgrad2",  z2d )          ! square of module of sst gradient 
    241          z2d(:,:) = SQRT( z2d(:,:) ) 
     280         DO_2D( 0, 0, 0, 0 ) 
     281            z2d(ji,jj) = SQRT( z2d(ji,jj) ) 
     282         END_2D 
    242283         CALL iom_put( "sstgrad" ,  z2d )          ! module of sst gradient 
    243284      ENDIF 
     
    246287      IF( iom_use("heatc") ) THEN 
    247288         z2d(:,:)  = 0._wp  
    248          DO_3D_11_11( 1, jpkm1 ) 
     289         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    249290            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 
    250291         END_3D 
     
    254295      IF( iom_use("saltc") ) THEN 
    255296         z2d(:,:)  = 0._wp  
    256          DO_3D_11_11( 1, jpkm1 ) 
     297         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    257298            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 
    258299         END_3D 
     
    260301      ENDIF 
    261302      ! 
    262       IF ( iom_use("eken") ) THEN 
     303      IF( iom_use("salt2c") ) THEN 
     304         z2d(:,:)  = 0._wp  
     305         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     306            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 
     307         END_3D 
     308         CALL iom_put( "salt2c", rho0 * z2d )          ! vertically integrated salt content (PSU*kg/m2) 
     309      ENDIF 
     310      ! 
     311      IF ( iom_use("ke") .OR. iom_use("ke_int") ) THEN 
    263312         z3d(:,:,jpk) = 0._wp  
    264          DO_3D_00_00( 1, jpkm1 ) 
    265             zztmp  = 0.25_wp * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    266             z3d(ji,jj,jk) = zztmp * (  uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm)   & 
    267                &                     + uu(ji  ,jj,jk,Kmm)**2 * e2u(ji  ,jj) * e3u(ji  ,jj,jk,Kmm)   & 
    268                &                     + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm)   & 
    269                &                     + vv(ji,jj  ,jk,Kmm)**2 * e1v(ji,jj  ) * e3v(ji,jj  ,jk,Kmm)   ) 
    270          END_3D 
    271          CALL lbc_lnk( 'diawri', z3d, 'T', 1. ) 
    272          CALL iom_put( "eken", z3d )                 ! kinetic energy 
     313         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     314            zztmpx = 0.5 * ( uu(ji-1,jj  ,jk,Kmm) + uu(ji,jj,jk,Kmm) ) 
     315            zztmpy = 0.5 * ( vv(ji  ,jj-1,jk,Kmm) + vv(ji,jj,jk,Kmm) ) 
     316            z3d(ji,jj,jk) = 0.5 * ( zztmpx*zztmpx + zztmpy*zztmpy ) 
     317         END_3D 
     318         CALL iom_put( "ke", z3d )                 ! kinetic energy 
     319 
     320         z2d(:,:)  = 0._wp  
     321         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     322            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * z3d(ji,jj,jk) * e1e2t(ji,jj) * tmask(ji,jj,jk) 
     323         END_3D 
     324         CALL iom_put( "ke_int", z2d )   ! vertically integrated kinetic energy 
    273325      ENDIF 
    274326      ! 
    275327      CALL iom_put( "hdiv", hdiv )                  ! Horizontal divergence 
     328 
     329      IF ( iom_use("relvor") .OR. iom_use("absvor") .OR. iom_use("potvor") ) THEN 
     330          
     331         z3d(:,:,jpk) = 0._wp  
     332         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     333            z3d(ji,jj,jk) = (   e2v(ji+1,jj  ) * vv(ji+1,jj  ,jk,Kmm) - e2v(ji,jj) * vv(ji,jj,jk,Kmm)    & 
     334               &              - e1u(ji  ,jj+1) * uu(ji  ,jj+1,jk,Kmm) + e1u(ji,jj) * uu(ji,jj,jk,Kmm)  ) * r1_e1e2f(ji,jj) 
     335         END_3D 
     336         CALL iom_put( "relvor", z3d )                  ! relative vorticity 
     337 
     338         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     339            z3d(ji,jj,jk) = ff_f(ji,jj) + z3d(ji,jj,jk)  
     340         END_3D 
     341         CALL iom_put( "absvor", z3d )                  ! absolute vorticity 
     342 
     343         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     344            ze3  = (  e3t(ji,jj+1,jk,Kmm)*tmask(ji,jj+1,jk) + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk)   & 
     345               &    + e3t(ji,jj  ,jk,Kmm)*tmask(ji,jj  ,jk) + e3t(ji+1,jj  ,jk,Kmm)*tmask(ji+1,jj  ,jk)  ) 
     346            IF( ze3 /= 0._wp ) THEN   ;   ze3 = 4._wp / ze3 
     347            ELSE                      ;   ze3 = 0._wp 
     348            ENDIF 
     349            z3d(ji,jj,jk) = ze3 * z3d(ji,jj,jk)  
     350         END_3D 
     351         CALL iom_put( "potvor", z3d )                  ! potential vorticity 
     352 
     353      ENDIF 
    276354      ! 
    277355      IF( iom_use("u_masstr") .OR. iom_use("u_masstr_vint") .OR. iom_use("u_heattr") .OR. iom_use("u_salttr") ) THEN 
     
    288366      IF( iom_use("u_heattr") ) THEN 
    289367         z2d(:,:) = 0._wp  
    290          DO_3D_00_00( 1, jpkm1 ) 
     368         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    291369            z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 
    292370         END_3D 
    293          CALL lbc_lnk( 'diawri', z2d, 'U', -1. ) 
    294371         CALL iom_put( "u_heattr", 0.5*rcp * z2d )    ! heat transport in i-direction 
    295372      ENDIF 
     
    297374      IF( iom_use("u_salttr") ) THEN 
    298375         z2d(:,:) = 0.e0  
    299          DO_3D_00_00( 1, jpkm1 ) 
     376         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    300377            z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 
    301378         END_3D 
    302          CALL lbc_lnk( 'diawri', z2d, 'U', -1. ) 
    303379         CALL iom_put( "u_salttr", 0.5 * z2d )        ! heat transport in i-direction 
    304380      ENDIF 
     
    315391      IF( iom_use("v_heattr") ) THEN 
    316392         z2d(:,:) = 0.e0  
    317          DO_3D_00_00( 1, jpkm1 ) 
     393         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    318394            z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 
    319395         END_3D 
    320          CALL lbc_lnk( 'diawri', z2d, 'V', -1. ) 
    321396         CALL iom_put( "v_heattr", 0.5*rcp * z2d )    !  heat transport in j-direction 
    322397      ENDIF 
     
    324399      IF( iom_use("v_salttr") ) THEN 
    325400         z2d(:,:) = 0._wp  
    326          DO_3D_00_00( 1, jpkm1 ) 
     401         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    327402            z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 
    328403         END_3D 
    329          CALL lbc_lnk( 'diawri', z2d, 'V', -1. ) 
    330404         CALL iom_put( "v_salttr", 0.5 * z2d )        !  heat transport in j-direction 
    331405      ENDIF 
     
    333407      IF( iom_use("tosmint") ) THEN 
    334408         z2d(:,:) = 0._wp 
    335          DO_3D_00_00( 1, jpkm1 ) 
     409         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    336410            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) *  ts(ji,jj,jk,jp_tem,Kmm) 
    337411         END_3D 
    338          CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 
    339412         CALL iom_put( "tosmint", rho0 * z2d )        ! Vertical integral of temperature 
    340413      ENDIF 
    341414      IF( iom_use("somint") ) THEN 
    342415         z2d(:,:)=0._wp 
    343          DO_3D_00_00( 1, jpkm1 ) 
     416         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    344417            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 
    345418         END_3D 
    346          CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 
    347419         CALL iom_put( "somint", rho0 * z2d )         ! Vertical integral of salinity 
    348420      ENDIF 
     
    415487      ! 
    416488      REAL(wp), DIMENSION(jpi,jpj)   :: zw2d       ! 2D workspace 
    417       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d       ! 3D workspace 
     489      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d, ze3t, zgdept       ! 3D workspace 
    418490      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zw3d_abl   ! ABL 3D workspace 
    419491      !!---------------------------------------------------------------------- 
     
    447519 
    448520      ! Define indices of the horizontal output zoom and vertical limit storage 
    449       iimi = 1      ;      iima = jpi 
    450       ijmi = 1      ;      ijma = jpj 
     521      iimi = Nis0   ;   iima = Nie0 
     522      ijmi = Njs0   ;   ijma = Nje0 
    451523      ipk = jpk 
    452524      IF(ln_abl) ipka = jpkam1 
     
    455527      it = kt 
    456528      itmod = kt - nit000 + 1 
     529 
     530      ! store e3t for subsitute 
     531      DO jk = 1, jpk 
     532         ze3t  (:,:,jk) =  e3t  (:,:,jk,Kmm) 
     533         zgdept(:,:,jk) =  gdept(:,:,jk,Kmm) 
     534      END DO 
    457535 
    458536 
     
    569647         DEALLOCATE(zw3d_abl) 
    570648         ENDIF 
     649         ! 
    571650 
    572651         ! Declare all the output fields as NETCDF variables 
     
    578657            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    579658         IF(  .NOT.ln_linssh  ) THEN 
    580             CALL histdef( nid_T, "vovvle3t", "Level thickness"                    , "m"      ,&  ! e3t(:,:,:,Kmm) 
     659            CALL histdef( nid_T, "vovvle3t", "Level thickness"                    , "m"      ,&  ! e3t n 
    581660            &             jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    582             CALL histdef( nid_T, "vovvldep", "T point depth"                      , "m"      ,&  ! e3t(:,:,:,Kmm) 
     661            CALL histdef( nid_T, "vovvldep", "T point depth"                      , "m"      ,&  ! e3t n 
    583662            &             jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    584             CALL histdef( nid_T, "vovvldef", "Squared level deformation"          , "%^2"    ,&  ! e3t(:,:,:,Kmm) 
     663            CALL histdef( nid_T, "vovvldef", "Squared level deformation"          , "%^2"    ,&  ! e3t n 
    585664            &             jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    586665         ENDIF 
     
    766845 
    767846      IF( .NOT.ln_linssh ) THEN 
    768          CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T  )   ! heat content 
    769          CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T  )   ! salt content 
    770          CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT )   ! sea surface heat content 
    771          CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT )   ! sea surface salinity content 
     847         CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * ze3t(:,:,:) , ndim_T , ndex_T  )   ! heat content 
     848         CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * ze3t(:,:,:) , ndim_T , ndex_T  )   ! salt content 
     849         CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) * ze3t(:,:,1) , ndim_hT, ndex_hT )   ! sea surface heat content 
     850         CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) * ze3t(:,:,1) , ndim_hT, ndex_hT )   ! sea surface salinity content 
    772851      ELSE 
    773852         CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) , ndim_T , ndex_T  )   ! temperature 
     
    777856      ENDIF 
    778857      IF( .NOT.ln_linssh ) THEN 
    779          zw3d(:,:,:) = ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
    780          CALL histwrite( nid_T, "vovvle3t", it, e3t (:,:,:,Kmm) , ndim_T , ndex_T  )   ! level thickness 
    781          CALL histwrite( nid_T, "vovvldep", it, gdept(:,:,:,Kmm) , ndim_T , ndex_T  )   ! t-point depth 
     858         zw3d(:,:,:) = ( ( ze3t(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
     859         CALL histwrite( nid_T, "vovvle3t", it, ze3t (:,:,:)    , ndim_T , ndex_T  )   ! level thickness 
     860         CALL histwrite( nid_T, "vovvldep", it, zgdept , ndim_T , ndex_T  )   ! t-point depth  
    782861         CALL histwrite( nid_T, "vovvldef", it, zw3d             , ndim_T , ndex_T  )   ! level thickness deformation 
    783862      ENDIF 
     
    918997      !! 
    919998      INTEGER :: inum, jk 
     999      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, zgdept      ! 3D workspace !!st patch to use substitution 
    9201000      !!---------------------------------------------------------------------- 
    9211001      !  
    922       IF(lwp) WRITE(numout,*) 
    923       IF(lwp) WRITE(numout,*) 'dia_wri_state : single instantaneous ocean state' 
    924       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~   and forcing fields file created ' 
    925       IF(lwp) WRITE(numout,*) '                and named :', cdfile_name, '...nc' 
     1002      IF(lwp) THEN 
     1003         WRITE(numout,*) 
     1004         WRITE(numout,*) 'dia_wri_state : single instantaneous ocean state' 
     1005         WRITE(numout,*) '~~~~~~~~~~~~~   and forcing fields file created ' 
     1006         WRITE(numout,*) '                and named :', cdfile_name, '...nc' 
     1007      ENDIF  
     1008      ! 
     1009      DO jk = 1, jpk 
     1010         ze3t(:,:,jk) =  e3t(:,:,jk,Kmm) 
     1011         zgdept(:,:,jk) =  gdept(:,:,jk,Kmm) 
     1012      END DO 
    9261013      ! 
    9271014      CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE. ) 
     
    9381025      ENDIF 
    9391026      CALL iom_rstput( 0, 0, inum, 'risfdep', risfdep            )    ! now k-velocity 
    940       CALL iom_rstput( 0, 0, inum, 'ht'     , ht                 )    ! now water column height 
     1027      CALL iom_rstput( 0, 0, inum, 'ht'     , ht(:,:)            )    ! now water column height 
    9411028      ! 
    9421029      IF ( ln_isf ) THEN 
     
    9751062      CALL iom_rstput( 0, 0, inum, 'sometauy', vtau              )    ! j-wind stress 
    9761063      IF(  .NOT.ln_linssh  ) THEN              
    977          CALL iom_rstput( 0, 0, inum, 'vovvldep', gdept(:,:,:,Kmm)        )    !  T-cell depth  
    978          CALL iom_rstput( 0, 0, inum, 'vovvle3t', e3t(:,:,:,Kmm)          )    !  T-cell thickness   
     1064         CALL iom_rstput( 0, 0, inum, 'vovvldep', zgdept        )    !  T-cell depth  
     1065         CALL iom_rstput( 0, 0, inum, 'vovvle3t', ze3t          )    !  T-cell thickness   
    9791066      END IF 
    9801067      IF( ln_wave .AND. ln_sdw ) THEN 
     
    9981085         CALL iom_close( inum ) 
    9991086      ENDIF 
     1087      ! 
    10001088#endif 
    1001  
    10021089   END SUBROUTINE dia_wri_state 
    10031090 
Note: See TracChangeset for help on using the changeset viewer.