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 13151 for NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/SWE/diawri.F90 – NEMO

Ignore:
Timestamp:
2020-06-24T14:38:26+02:00 (4 years ago)
Author:
gm
Message:

result from merge with qco r12983

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/SWE/diawri.F90

    r12667 r13151  
    8585   !! * Substitutions 
    8686#  include "do_loop_substitute.h90" 
     87!!st12 
     88#  include "domzgr_substitute.h90" 
    8789   !!---------------------------------------------------------------------- 
    8890   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    137139      CALL iom_put("e3v_0", e3v_0(:,:,:) ) 
    138140      ! 
    139       CALL iom_put( "e3t" , e3t(:,:,:,Kmm) ) 
    140       CALL iom_put( "e3u" , e3u(:,:,:,Kmm) ) 
    141       CALL iom_put( "e3v" , e3v(:,:,:,Kmm) ) 
    142       CALL iom_put( "e3w" , e3w(:,:,:,Kmm) ) 
    143       IF( iom_use("e3tdef") )   & 
    144          CALL iom_put( "e3tdef"  , ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 
    145  
     141!!st13 
     142#if ! defined key_qco 
     143      IF ( iom_use("e3t") .OR. iom_use("e3tdef") ) THEN  ! time-varying e3t 
     144         DO jk = 1, jpk 
     145            z3d(:,:,jk) =  e3t(:,:,jk,Kmm) 
     146         END DO 
     147         CALL iom_put( "e3t"     ,     z3d(:,:,:) ) 
     148         CALL iom_put( "e3tdef"  , ( ( z3d(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 )  
     149      ENDIF  
     150      IF ( iom_use("e3u") ) THEN                         ! time-varying e3u 
     151         DO jk = 1, jpk 
     152            z3d(:,:,jk) =  e3u(:,:,jk,Kmm) 
     153         END DO  
     154         CALL iom_put( "e3u" , z3d(:,:,:) ) 
     155      ENDIF 
     156      IF ( iom_use("e3v") ) THEN                         ! time-varying e3v 
     157         DO jk = 1, jpk 
     158            z3d(:,:,jk) =  e3v(:,:,jk,Kmm) 
     159         END DO  
     160         CALL iom_put( "e3v" , z3d(:,:,:) ) 
     161      ENDIF 
     162      IF ( iom_use("e3w") ) THEN                         ! time-varying e3w 
     163         DO jk = 1, jpk 
     164            z3d(:,:,jk) =  e3w(:,:,jk,Kmm) 
     165         END DO  
     166         CALL iom_put( "e3w" , z3d(:,:,:) ) 
     167      ENDIF 
     168#endif  
     169!!st13 
    146170      IF( ll_wd ) THEN 
    147171         CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*tmask(:,:,1) )   ! sea surface height (brought back to the reference used for wetting and drying) 
     
    351375      ! 
    352376      REAL(wp), DIMENSION(jpi,jpj)   :: zw2d       ! 2D workspace 
    353       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d       ! 3D workspace 
     377!!st14 
     378      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d, ze3t, zgdept       ! 3D workspace 
    354379      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zw3d_abl   ! ABL 3D workspace 
    355380      !!---------------------------------------------------------------------- 
     
    391416      it = kt 
    392417      itmod = kt - nit000 + 1 
    393  
     418!!st15 
     419      ! store e3t for subsitute 
     420      DO jk = 1, jpk 
     421         ze3t  (:,:,jk) =  e3t  (:,:,jk,Kmm) 
     422         zgdept(:,:,jk) =  gdept(:,:,jk,Kmm) 
     423      END DO 
     424!!st15 
    394425 
    395426      ! 1. Define NETCDF files and fields at beginning of first time step 
     
    514545            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    515546         IF(  .NOT.ln_linssh  ) THEN 
    516             CALL histdef( nid_T, "vovvle3t", "Level thickness"                    , "m"      ,&  ! e3t(:,:,:,Kmm) 
     547            CALL histdef( nid_T, "vovvle3t", "Level thickness"                    , "m"      ,&  ! ze3t(:,:,:,Kmm) 
    517548            &             jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    518             CALL histdef( nid_T, "vovvldep", "T point depth"                      , "m"      ,&  ! e3t(:,:,:,Kmm) 
     549            CALL histdef( nid_T, "vovvldep", "T point depth"                      , "m"      ,&  ! ze3t(:,:,:,Kmm) 
    519550            &             jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    520             CALL histdef( nid_T, "vovvldef", "Squared level deformation"          , "%^2"    ,&  ! e3t(:,:,:,Kmm) 
     551            CALL histdef( nid_T, "vovvldef", "Squared level deformation"          , "%^2"    ,&  ! ze3t(:,:,:,Kmm) 
    521552            &             jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    522553         ENDIF 
     
    700731         WRITE(numout,*) '~~~~~~ ' 
    701732      ENDIF 
    702  
     733!!st16 
    703734      IF( .NOT.ln_linssh ) THEN 
    704          CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T  )   ! heat content 
    705          CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T  )   ! salt content 
    706          CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT )   ! sea surface heat content 
    707          CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT )   ! sea surface salinity content 
     735         CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * ze3t(:,:,:) , ndim_T , ndex_T  )   ! heat content 
     736         CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * ze3t(:,:,:) , ndim_T , ndex_T  )   ! salt content 
     737         CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) * ze3t(:,:,1) , ndim_hT, ndex_hT )   ! sea surface heat content 
     738         CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) * ze3t(:,:,1) , ndim_hT, ndex_hT )   ! sea surface salinity content 
     739!!st16 
    708740      ELSE 
    709741         CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) , ndim_T , ndex_T  )   ! temperature 
     
    713745      ENDIF 
    714746      IF( .NOT.ln_linssh ) THEN 
    715          zw3d(:,:,:) = ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
    716          CALL histwrite( nid_T, "vovvle3t", it, e3t (:,:,:,Kmm) , ndim_T , ndex_T  )   ! level thickness 
    717          CALL histwrite( nid_T, "vovvldep", it, gdept(:,:,:,Kmm) , ndim_T , ndex_T  )   ! t-point depth 
     747!!st17 if ! defined key_qco  
     748         zw3d(:,:,:) = ( ( ze3t(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
     749         CALL histwrite( nid_T, "vovvle3t", it, ze3t (:,:,:)     , ndim_T , ndex_T  )   ! level thickness 
     750         CALL histwrite( nid_T, "vovvldep", it, zgdept , ndim_T , ndex_T  )   ! t-point depth  
     751!!st17 
    718752         CALL histwrite( nid_T, "vovvldef", it, zw3d             , ndim_T , ndex_T  )   ! level thickness deformation 
    719753      ENDIF 
     
    854888      !! 
    855889      INTEGER :: inum, jk 
     890!!st18  TBR 
     891      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, zgdept      ! 3D workspace !!st patch to use substitution 
    856892      !!---------------------------------------------------------------------- 
    857893      !  
     
    860896      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~   and forcing fields file created ' 
    861897      IF(lwp) WRITE(numout,*) '                and named :', cdfile_name, '...nc' 
    862  
     898!!st19 TBR 
     899      DO jk = 1, jpk 
     900         ze3t(:,:,jk) =  e3t(:,:,jk,Kmm) 
     901         zgdept(:,:,jk) =  gdept(:,:,jk,Kmm) 
     902      END DO 
     903!!st19 
    863904#if defined key_si3 
    864905     CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE., kdlev = jpl ) 
     
    878919      ENDIF 
    879920      CALL iom_rstput( 0, 0, inum, 'risfdep', risfdep            )    ! now k-velocity 
    880       CALL iom_rstput( 0, 0, inum, 'ht'     , ht                 )    ! now water column height 
     921      CALL iom_rstput( 0, 0, inum, 'ht'     , ht(:,:)            )    ! now water column height 
    881922 
    882923      IF ( ln_isf ) THEN 
     
    885926            CALL iom_rstput( 0, 0, inum, 'rhisf_cav_tbl', rhisf_tbl_cav    )    ! now k-velocity 
    886927            CALL iom_rstput( 0, 0, inum, 'rfrac_cav_tbl', rfrac_tbl_cav    )    ! now k-velocity 
    887             CALL iom_rstput( 0, 0, inum, 'misfkb_cav', REAL(misfkb_cav,8)    )    ! now k-velocity 
    888             CALL iom_rstput( 0, 0, inum, 'misfkt_cav', REAL(misfkt_cav,8)    )    ! now k-velocity 
    889             CALL iom_rstput( 0, 0, inum, 'mskisf_cav', REAL(mskisf_cav,8), ktype = jp_i1 ) 
     928            CALL iom_rstput( 0, 0, inum, 'misfkb_cav', REAL(misfkb_cav,wp) )    ! now k-velocity 
     929            CALL iom_rstput( 0, 0, inum, 'misfkt_cav', REAL(misfkt_cav,wp) )    ! now k-velocity 
     930            CALL iom_rstput( 0, 0, inum, 'mskisf_cav', REAL(mskisf_cav,wp), ktype = jp_i1 ) 
    890931         END IF 
    891932         IF (ln_isfpar_mlt) THEN 
    892             CALL iom_rstput( 0, 0, inum, 'isfmsk_par', REAL(mskisf_par,8) )    ! now k-velocity 
     933            CALL iom_rstput( 0, 0, inum, 'isfmsk_par', REAL(mskisf_par,wp) )    ! now k-velocity 
    893934            CALL iom_rstput( 0, 0, inum, 'fwfisf_par', fwfisf_par          )    ! now k-velocity 
    894935            CALL iom_rstput( 0, 0, inum, 'rhisf_par_tbl', rhisf_tbl_par    )    ! now k-velocity 
    895936            CALL iom_rstput( 0, 0, inum, 'rfrac_par_tbl', rfrac_tbl_par    )    ! now k-velocity 
    896             CALL iom_rstput( 0, 0, inum, 'misfkb_par', REAL(misfkb_par,8)    )    ! now k-velocity 
    897             CALL iom_rstput( 0, 0, inum, 'misfkt_par', REAL(misfkt_par,8)    )    ! now k-velocity 
    898             CALL iom_rstput( 0, 0, inum, 'mskisf_par', REAL(mskisf_par,8), ktype = jp_i1 ) 
     937            CALL iom_rstput( 0, 0, inum, 'misfkb_par', REAL(misfkb_par,wp) )    ! now k-velocity 
     938            CALL iom_rstput( 0, 0, inum, 'misfkt_par', REAL(misfkt_par,wp) )    ! now k-velocity 
     939            CALL iom_rstput( 0, 0, inum, 'mskisf_par', REAL(mskisf_par,wp), ktype = jp_i1 ) 
    899940         END IF 
    900941      END IF 
    901  
     942      ! 
    902943      IF( ALLOCATED(ahtu) ) THEN 
    903944         CALL iom_rstput( 0, 0, inum,  'ahtu', ahtu              )    ! aht at u-point 
     
    914955      CALL iom_rstput( 0, 0, inum, 'sozotaux', utau              )    ! i-wind stress 
    915956      CALL iom_rstput( 0, 0, inum, 'sometauy', vtau              )    ! j-wind stress 
    916       IF(  .NOT.ln_linssh  ) THEN              
    917          CALL iom_rstput( 0, 0, inum, 'vovvldep', gdept(:,:,:,Kmm)        )    !  T-cell depth  
    918          CALL iom_rstput( 0, 0, inum, 'vovvle3t', e3t(:,:,:,Kmm)          )    !  T-cell thickness   
     957!!st20 TBR 
     958      IF(  .NOT.ln_linssh  ) THEN 
     959         CALL iom_rstput( 0, 0, inum, 'vovvldep', zgdept        )    !  T-cell depth  
     960         CALL iom_rstput( 0, 0, inum, 'vovvle3t', ze3t          )    !  T-cell thickness   
    919961      END IF 
    920962      IF( ln_wave .AND. ln_sdw ) THEN 
Note: See TracChangeset for help on using the changeset viewer.