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 15001 for NEMO/branches/2021/ticket2690_consign_isf/src/OCE/ISF – NEMO

Ignore:
Timestamp:
2021-06-16T11:30:56+02:00 (3 years ago)
Author:
mathiot
Message:

ticket #2690: change sign convention of isf fluxes, long name of output and code comments. No changes in WED025 and ISOMIP+ results (output changed because of convention changed, trunk + branch output = 0.0)

Location:
NEMO/branches/2021/ticket2690_consign_isf/src/OCE/ISF
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/ticket2690_consign_isf/src/OCE/ISF/isfcav.F90

    r14995 r15001  
    6060      !!                   - output 
    6161      !!  
    62       !! ** Convention : all fluxes are from oce to isf ( > 0 out of the ocean ) 
     62      !! ** Convention : all fluxes are from isf to oce 
    6363      !! 
    6464      !!--------------------------------------------------------------------- 
    6565      !!-------------------------- OUT -------------------------------------- 
    66       REAL(wp), DIMENSION(jpi,jpj)     , INTENT(inout) :: pqfwf  ! ice shelf melt (>0 out) 
     66      REAL(wp), DIMENSION(jpi,jpj)     , INTENT(inout) :: pqfwf  ! ice shelf fwf 
    6767      REAL(wp), DIMENSION(jpi,jpj,jpts), INTENT(inout) :: ptsc   ! T & S ice shelf cavity contents 
    6868      !!-------------------------- IN  -------------------------------------- 
     
    127127      END DO 
    128128      ! 
    129       ! compute heat and water flux ( > 0 out ) 
     129      ! compute heat and water flux ( > 0 from isf to oce) 
    130130      pqfwf(:,:) = pqfwf(:,:) * mskisf_cav(:,:) 
    131131      zqoce(:,:) = zqoce(:,:) * mskisf_cav(:,:) 
    132132      zqhc (:,:) = zqhc(:,:)  * mskisf_cav(:,:) 
    133133      ! 
    134       ! compute heat content flux ( > 0 out ) 
     134      ! compute heat content flux ( > 0 from isf to oce) 
    135135      zqlat(:,:) = - pqfwf(:,:) * rLfusisf    ! 2d latent heat flux (W/m2) 
    136136      ! 
    137       ! total heat flux ( > 0 out ) 
     137      ! total heat flux ( > 0 from isf to oce) 
    138138      zqh(:,:) = ( zqhc (:,:) + zqoce(:,:) ) 
    139139      ! 
     
    145145      ! 
    146146      ! set temperature content 
    147       ptsc(:,:,jp_tem) = - zqh(:,:) * r1_rho0_rcp 
     147      ptsc(:,:,jp_tem) = zqh(:,:) * r1_rho0_rcp 
    148148      ! 
    149149      ! write restart variables (qoceisf, qhcisf, fwfisf for now and before) 
  • NEMO/branches/2021/ticket2690_consign_isf/src/OCE/ISF/isfcavmlt.F90

    r14995 r15001  
    99 
    1010   !!---------------------------------------------------------------------- 
    11    !!   isfcav_mlt    : compute or read ice shelf fwf/heat fluxes in the ice shelf cavity 
     11   !!   isfcav_mlt    : compute or read ice shelf fwf/heat fluxes from isf  
     12   !!                   to oce 
    1213   !!---------------------------------------------------------------------- 
    1314 
     
    114115      CALL eos_fzp( pstbl(:,:), ztfrz(:,:), risfdep(:,:) ) 
    115116      ! 
    116       ! read input file 
     117      ! read input file of fwf (from isf to oce; ie melt) 
    117118      CALL fld_read ( kt, 1, sf_isfcav_fwf ) 
    118119      ! 
    119120      ! define fwf and qoce 
    120121      ! ocean heat flux is assume to be equal to the latent heat 
    121       pqfwf(:,:) = - sf_isfcav_fwf(1)%fnow(:,:,1)      ! fwf                ( >0 out) 
    122       pqoce(:,:) = - pqfwf(:,:) * rLfusisf             ! ocean heat flux    ( >0 out) 
    123       pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp     ! heat content flux  ( >0 out) 
     122      pqfwf(:,:) =   sf_isfcav_fwf(1)%fnow(:,:,1)      ! fwf                ( > 0 from isf to oce) 
     123      pqoce(:,:) = - pqfwf(:,:) * rLfusisf             ! ocean heat flux    ( > 0 from isf to oce) 
     124      pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp     ! heat content flux  ( > 0 from isf to oce) 
    124125      ! 
    125126      ! output freezing point at the interface 
     
    163164      ! 
    164165      ! compute ocean-ice heat flux and then derive fwf assuming that ocean heat flux equal latent heat 
    165       pqfwf(:,:) = - pgt(:,:) * rho0_rcp * zthd(:,:) / rLfusisf    ! fresh water flux  ( > 0 out ) 
    166       pqoce(:,:) = - pqfwf(:,:) * rLfusisf                         ! ocea-ice flux     ( > 0 out ) 
    167       pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp                 ! heat content flux ( > 0 out ) 
     166      pqfwf(:,:) =   pgt(:,:) * rho0_rcp * zthd(:,:) / rLfusisf    ! fresh water flux  ( > 0 from isf to oce) 
     167      pqoce(:,:) = - pqfwf(:,:) * rLfusisf                         ! ocea-ice flux     ( > 0 from isf to oce) 
     168      pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp                 ! heat content flux ( > 0 from isf to oce) 
    168169      ! 
    169170      ! output thermal driving and freezinpoint at the ice shelf interface 
     
    240241         ! 
    241242         ! compute the upward water and heat flux (eq. 24 and eq. 26) 
    242          pqfwf(ji,jj) = rho0     * pgs(ji,jj) * ( zsfrz - pstbl(ji,jj) ) / MAX(zsfrz,zeps) ! fresh water flux    (> 0 out) 
    243          pqoce(ji,jj) = rho0_rcp * pgt(ji,jj) * zthd (ji,jj)                               ! ocean-ice heat flux (> 0 out) 
    244          pqhc (ji,jj) = rcp      * pqfwf(ji,jj) * ztfrz(ji,jj)                             ! heat content   flux (> 0 out) 
     243         pqfwf(ji,jj) = - rho0     * pgs(ji,jj) * ( zsfrz - pstbl(ji,jj) ) / MAX(zsfrz,zeps) ! fresh water flux    ( > 0 from isf to oce) 
     244         pqoce(ji,jj) = - rho0_rcp * pgt(ji,jj) * zthd (ji,jj)                               ! ocean-ice heat flux ( > 0 from isf to oce) 
     245         pqhc (ji,jj) =   rcp      * pqfwf(ji,jj) * ztfrz(ji,jj)                             ! heat content   flux ( > 0 from isf to oce) 
    245246         ! 
    246247         zqcon(ji,jj) = zeps3 * ( ztfrz(ji,jj) - rtsurf ) 
     
    283284      CALL eos_fzp( pstbl(:,:), ztfrz(:,:), risfdep(:,:) ) 
    284285      ! 
    285       ! read input file 
     286      ! read input file of fwf from isf to oce 
    286287      CALL fld_read ( kt, 1, sf_isfcav_fwf ) 
    287288      ! 
    288289      ! ice shelf 2d map 
    289       zfwf(:,:) = - sf_isfcav_fwf(1)%fnow(:,:,1) 
     290      zfwf(:,:) = sf_isfcav_fwf(1)%fnow(:,:,1) 
    290291      ! 
    291292      ! compute glob sum from input file 
     
    302303      ! define fwf and qoce 
    303304      ! ocean heat flux is assume to be equal to the latent heat 
    304       pqfwf(:,:) =   zfwf(:,:)                         ! fwf                ( >0 out) 
    305       pqoce(:,:) = - pqfwf(:,:) * rLfusisf             ! ocean heat flux    ( >0 out) 
    306       pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp     ! heat content flux  ( >0 out) 
     305      pqfwf(:,:) =   zfwf(:,:)                         ! fwf                ( > 0 from isf to oce) 
     306      pqoce(:,:) = - pqfwf(:,:) * rLfusisf             ! ocean heat flux    ( > 0 from isf to oce) 
     307      pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp     ! heat content flux  ( > 0 from isf to oce) 
    307308      ! 
    308309      CALL iom_put('isftfrz_cav', ztfrz * mskisf_cav(:,:) ) 
  • NEMO/branches/2021/ticket2690_consign_isf/src/OCE/ISF/isfcpl.F90

    r14433 r15001  
    685685      !============================================================================== 
    686686      ! 
    687       ! mask (>0 out) 
     687      ! mask 
    688688      risfcpl_cons_vol(:,:,:       ) = risfcpl_cons_vol(:,:,:       ) * tmask(:,:,:) 
    689689      risfcpl_cons_tsc(:,:,:,jp_sal) = risfcpl_cons_tsc(:,:,:,jp_sal) * tmask(:,:,:) 
  • NEMO/branches/2021/ticket2690_consign_isf/src/OCE/ISF/isfdiags.F90

    r13295 r15001  
    4040      !! 
    4141      !! ** Purpose : manage the 2d and 3d flux outputs of the ice shelf module 
    42       !!              fwf, latent heat flux, heat content flux, oce->ice heat flux 
     42      !!              from isf to oce fwf, latent heat, heat content fluxes 
    4343      !! 
    4444      !!---------------------------------------------------------------------- 
     
    6262      ! 
    6363      ! output 2d melt rate, latent heat and heat content flux from the injected water 
    64       CALL iom_put( TRIM(cvarqfwf), pqfwf(:,:) )   ! mass         flux ( >0 out ) 
    65       CALL iom_put( TRIM(cvarqoce), pqoce(:,:) )   ! oce to ice   flux ( >0 out ) 
    66       CALL iom_put( TRIM(cvarqlat), pqlat(:,:) )   ! latent heat  flux ( >0 out ) 
    67       CALL iom_put( TRIM(cvarqhc) , pqhc (:,:) )   ! heat content flux ( >0 out ) 
     64      CALL iom_put( TRIM(cvarqfwf), pqfwf(:,:) )   ! mass         flux ( > 0 from isf to oce) 
     65      CALL iom_put( TRIM(cvarqoce), pqoce(:,:) )   ! oce to ice   flux ( > 0 from isf to oce) 
     66      CALL iom_put( TRIM(cvarqlat), pqlat(:,:) )   ! latent heat  flux ( > 0 from isf to oce) 
     67      CALL iom_put( TRIM(cvarqhc) , pqhc (:,:) )   ! heat content flux ( > 0 from isf to oce) 
    6868      ! 
    6969      ! output 3d Diagnostics 
  • NEMO/branches/2021/ticket2690_consign_isf/src/OCE/ISF/isfdynatf.F90

    r14053 r15001  
    8383      ! add the increment 
    8484      DO jk = 1, jpkm1 
    85          pe3t_f(:,:,jk) = pe3t_f(:,:,jk) - tmask(:,:,jk) * zfwfinc(:,:)   & 
     85         pe3t_f(:,:,jk) = pe3t_f(:,:,jk) + tmask(:,:,jk) * zfwfinc(:,:)   & 
    8686            &                              * e3t(:,:,jk,Kmm) 
    8787      END DO 
  • NEMO/branches/2021/ticket2690_consign_isf/src/OCE/ISF/isfhdiv.F90

    r14834 r15001  
    107107         ! level fully include in the ice shelf boundary layer 
    108108         DO jk = ikt, ikb - 1 
    109             phdiv(ji,jj,jk) = phdiv(ji,jj,jk) + zhdiv(ji,jj) 
     109            phdiv(ji,jj,jk) = phdiv(ji,jj,jk) - zhdiv(ji,jj) 
    110110         END DO 
    111111         ! level partially include in ice shelf boundary layer  
    112          phdiv(ji,jj,ikb) = phdiv(ji,jj,ikb) + zhdiv(ji,jj) * pfrac(ji,jj) 
     112         phdiv(ji,jj,ikb) = phdiv(ji,jj,ikb) - zhdiv(ji,jj) * pfrac(ji,jj) 
    113113      END_2D 
    114114      ! 
  • NEMO/branches/2021/ticket2690_consign_isf/src/OCE/ISF/isfpar.F90

    r14995 r15001  
    5757      !!              the name tbl was kept. 
    5858      !! 
    59       !! ** Convention : all fluxes are from oce to isf ( > 0 out of the ocean ) 
     59      !! ** Convention : all fluxes are from isf to oce 
    6060      !! 
    6161      !!--------------------------------------------------------------------- 
     
    7373      CALL isfpar_mlt( kt, Kmm, zqhc, zqoce, pqfwf  ) 
    7474      ! 
    75       ! compute heat and water flux ( > 0 out ) 
     75      ! compute heat and water flux (from isf to oce) 
    7676      pqfwf(:,:) = pqfwf(:,:) * mskisf_par(:,:) 
    7777      zqoce(:,:) = zqoce(:,:) * mskisf_par(:,:) 
    7878      zqhc (:,:) = zqhc(:,:)  * mskisf_par(:,:) 
    7979      ! 
    80       ! compute latent heat flux ( > 0 out ) 
     80      ! compute latent heat flux (from isf to oce) 
    8181      zqlat(:,:) = - pqfwf(:,:) * rLfusisf    ! 2d latent heat flux (W/m2) 
    8282      ! 
    83       ! total heat flux ( > 0 out ) 
     83      ! total heat flux (from isf to oce) 
    8484      zqh(:,:) = ( zqhc (:,:) + zqoce(:,:) ) 
    8585      ! 
     
    9191      ! 
    9292      ! set temperature content 
    93       ptsc(:,:,jp_tem) = - zqh(:,:) * r1_rho0_rcp 
     93      ptsc(:,:,jp_tem) = zqh(:,:) * r1_rho0_rcp 
    9494      ! 
    9595      ! write restart variables (qoceisf, qhcisf, fwfisf for now and before) 
  • NEMO/branches/2021/ticket2690_consign_isf/src/OCE/ISF/isfparmlt.F90

    r14995 r15001  
    102102      !!-------------------------------------------------------------------- 
    103103      ! 
    104       ! 0. ------------Read specified runoff 
     104      ! 0. ------------Read specified fwf from isf to oce 
    105105      CALL fld_read ( kt, 1, sf_isfpar_fwf   ) 
    106106      ! 
     
    112112      CALL isf_tbl(Kmm, ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
    113113      ! 
    114       pqfwf(:,:) = - sf_isfpar_fwf(1)%fnow(:,:,1)      ! fresh water flux from the isf (fwfisf <0 mean melting)       ( > 0 out ) 
    115       pqoce(:,:) = - pqfwf(:,:) * rLfusisf             ! ocean/ice shelf flux assume to be equal to latent heat flux  ( > 0 out ) 
    116       pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp     ! heat content flux                                            ( > 0 out ) 
     114      pqfwf(:,:) =   sf_isfpar_fwf(1)%fnow(:,:,1)      ! fresh water flux from the isf (fwfisf <0 mean melting)       ( > 0 from isf to oce) 
     115      pqoce(:,:) = - pqfwf(:,:) * rLfusisf             ! ocean/ice shelf flux assume to be equal to latent heat flux  ( > 0 from isf to oce) 
     116      pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp     ! heat content flux                                            ( > 0 from isf to oce) 
    117117      ! 
    118118      CALL iom_put('isftfrz_par', ztfrz(:,:) * mskisf_par(:,:) ) 
     
    157157      ! 
    158158      ! 2. ------------Net heat flux and fresh water flux due to the ice shelf 
    159       pqfwf(:,:) = - rho0 * rcp * rn_isfpar_bg03_gt0 * risfLeff(:,:) * e1t(:,:) * (ztavg(:,:) - ztfrz(:,:) ) * r1_e1e2t(:,:) / rLfusisf  ! ( > 0 out ) 
    160       pqoce(:,:) = - pqfwf(:,:) * rLfusisf             ! ocean/ice shelf flux assume to be equal to latent heat flux  ( > 0 out ) 
    161       pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp     ! heat content flux                                            ( > 0 out ) 
     159      pqfwf(:,:) =   rho0 * rcp * rn_isfpar_bg03_gt0 * risfLeff(:,:) * e1t(:,:) * (ztavg(:,:) - ztfrz(:,:) ) * r1_e1e2t(:,:) / rLfusisf  ! ( > 0 from isf to oce) 
     160      pqoce(:,:) = - pqfwf(:,:) * rLfusisf             ! ocean/ice shelf flux assume to be equal to latent heat flux  ( > 0 from isf to oce) 
     161      pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp     ! heat content flux                                            ( > 0 from isf to oce) 
    162162      ! 
    163163      ! 3. ------------BG03 output 
     
    207207      ! 
    208208      ! 2. ------------Scale isf melt pattern with total amount from oasis 
    209       ! ice shelf 2d map 
    210       zfwf(:,:) = - sf_isfpar_fwf(1)%fnow(:,:,1) 
     209      ! ice shelf 2d map of fwf from isf to oce 
     210      zfwf(:,:) = sf_isfpar_fwf(1)%fnow(:,:,1) 
    211211      ! 
    212212      ! compute glob sum from input file 
     
    223223      ! 3. -----------Define fwf and qoce 
    224224      ! ocean heat flux is assume to be equal to the latent heat 
    225       pqfwf(:,:) =   zfwf(:,:)                         ! fwf                ( >0 out ) 
    226       pqoce(:,:) = - pqfwf(:,:) * rLfusisf             ! ocean heat flux    ( >0 out ) (assumed to be the latent heat flux) 
    227       pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp     ! heat content flux  ( >0 out ) 
     225      pqfwf(:,:) =   zfwf(:,:)                         ! fwf                ( > 0 from isf to oce) 
     226      pqoce(:,:) = - pqfwf(:,:) * rLfusisf             ! ocean heat flux    ( > 0 from isf to oce) (assumed to be the latent heat flux) 
     227      pqhc (:,:) =   pqfwf(:,:) * ztfrz(:,:) * rcp     ! heat content flux  ( > 0 from isf to oce) 
    228228      ! 
    229229      CALL iom_put('isftfrz_par', ztfrz ) 
Note: See TracChangeset for help on using the changeset viewer.