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

Changeset 15004


Ignore:
Timestamp:
2021-06-16T12:33:18+02:00 (3 years ago)
Author:
mathiot
Message:

ticket #2960: commit fix to the trunk (WARNING: output convention of isf fluxes changed from oce->isf to isf->oce), no impact on the input file needed for some options

Location:
NEMO/trunk
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/cfgs/SHARED/field_def_nemo-oce.xml

    r14995 r15004  
    248248 
    249249    <!-- * fwf * --> 
    250     <field id="fwfisf_cav"      long_name="Ice shelf fresh water flux ( from oce to isf )"                    unit="kg/m2/s"  /> 
    251     <field id="fwfisf_par"      long_name="Ice shelf fresh water flux ( from oce to isf )"                    unit="kg/m2/s"  /> 
    252     <field id="fwfisf3d_cav"    long_name="3d Ice shelf fresh water flux ( from oce to isf )"                 unit="kg/m2/s"  grid_ref="grid_T_3D" /> 
    253     <field id="fwfisf3d_par"    long_name="3d Ice shelf fresh water flux ( from oce to isf )"                 unit="kg/m2/s"  grid_ref="grid_T_3D" /> 
     250    <field id="fwfisf_cav"      long_name="Ice shelf fresh water flux ( from isf to oce )"                    unit="kg/m2/s"  /> 
     251    <field id="fwfisf_par"      long_name="Ice shelf fresh water flux ( from isf to oce )"                    unit="kg/m2/s"  /> 
     252    <field id="fwfisf3d_cav"    long_name="3d Ice shelf fresh water flux ( from isf to oce )"                 unit="kg/m2/s"  grid_ref="grid_T_3D" /> 
     253    <field id="fwfisf3d_par"    long_name="3d Ice shelf fresh water flux ( from isf to oce )"                 unit="kg/m2/s"  grid_ref="grid_T_3D" /> 
    254254 
    255255    <!-- * heat fluxes * --> 
    256     <field id="qoceisf_cav"     long_name="Ice shelf ocean  heat flux ( from oce to isf )"                    unit="W/m2"     /> 
    257     <field id="qoceisf_par"     long_name="Ice shelf ocean  heat flux ( from oce to isf )"                    unit="W/m2"     /> 
    258     <field id="qlatisf_cav"     long_name="Ice shelf latent heat flux ( from oce to isf )"                    unit="W/m2"     /> 
    259     <field id="qlatisf_par"     long_name="Ice shelf latent heat flux ( from oce to isf )"                    unit="W/m2"     /> 
    260     <field id="qhcisf_cav"      long_name="Ice shelf heat content flux of injected water ( from oce to isf )" unit="W/m2"     /> 
    261     <field id="qhcisf_par"      long_name="Ice shelf heat content flux of injected water ( from oce to isf )" unit="W/m2"     /> 
    262     <field id="qoceisf3d_cav"   long_name="Ice shelf ocean  heat flux ( from oce to isf )"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
    263     <field id="qoceisf3d_par"   long_name="Ice shelf ocean  heat flux ( from oce to isf )"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
    264     <field id="qlatisf3d_cav"   long_name="Ice shelf latent heat flux ( from oce to isf )"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
    265     <field id="qlatisf3d_par"   long_name="Ice shelf latent heat flux ( from oce to isf )"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
    266     <field id="qhcisf3d_cav"    long_name="Ice shelf heat content flux of injected water ( from oce to isf )" unit="W/m2"     grid_ref="grid_T_3D" /> 
    267     <field id="qhcisf3d_par"    long_name="Ice shelf heat content flux of injected water ( from oce to isf )" unit="W/m2"     grid_ref="grid_T_3D" /> 
    268     <field id="qconisf"         long_name="Conductive heat flux through the ice shelf ( from oce to isf )"    unit="W/m2"     /> 
     256    <field id="qoceisf_cav"     long_name="Ice shelf ocean  heat flux ( from isf to oce )"                    unit="W/m2"     /> 
     257    <field id="qoceisf_par"     long_name="Ice shelf ocean  heat flux ( from isf to oce )"                    unit="W/m2"     /> 
     258    <field id="qlatisf_cav"     long_name="Ice shelf latent heat flux ( from isf to oce )"                    unit="W/m2"     /> 
     259    <field id="qlatisf_par"     long_name="Ice shelf latent heat flux ( from isf to oce )"                    unit="W/m2"     /> 
     260    <field id="qhcisf_cav"      long_name="Ice shelf heat content flux of injected water ( from isf to oce )" unit="W/m2"     /> 
     261    <field id="qhcisf_par"      long_name="Ice shelf heat content flux of injected water ( from isf to oce )" unit="W/m2"     /> 
     262    <field id="qoceisf3d_cav"   long_name="Ice shelf ocean  heat flux ( from isf to oce )"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
     263    <field id="qoceisf3d_par"   long_name="Ice shelf ocean  heat flux ( from isf to oce )"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
     264    <field id="qlatisf3d_cav"   long_name="Ice shelf latent heat flux ( from isf to oce )"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
     265    <field id="qlatisf3d_par"   long_name="Ice shelf latent heat flux ( from isf to oce )"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
     266    <field id="qhcisf3d_cav"    long_name="Ice shelf heat content flux of injected water ( from isf to oce )" unit="W/m2"     grid_ref="grid_T_3D" /> 
     267    <field id="qhcisf3d_par"    long_name="Ice shelf heat content flux of injected water ( from isf to oce )" unit="W/m2"     grid_ref="grid_T_3D" /> 
     268    <field id="qconisf"         long_name="Conductive heat flux through the ice shelf ( from isf to oce )"    unit="W/m2"     /> 
    269269 
    270270    <!-- top boundary layer properties --> 
  • NEMO/trunk/src/OCE/BDY/bdyvol.F90

    r12489 r15004  
    7777      ! Calculate the cumulate surface Flux z_cflxemp (m3/s) over all the domain 
    7878      ! ----------------------------------------------------------------------- 
    79       IF ( kc == 1 ) z_cflxemp = glob_sum( 'bdyvol', ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * bdytmask(:,:) * e1e2t(:,:)  ) / rho0 
     79      IF ( kc == 1 ) z_cflxemp = glob_sum( 'bdyvol', ( emp(:,:) - rnf(:,:) - fwfisf_cav(:,:) - fwfisf_par(:,:) ) * bdytmask(:,:) * e1e2t(:,:)  ) / rho0 
    8080 
    8181      ! Compute bdy surface each cycle if non linear free surface 
  • NEMO/trunk/src/OCE/DIA/diahsb.F90

    r14072 r15004  
    9393      ! 1 - Trends due to forcing ! 
    9494      ! ------------------------- ! 
    95       z_frc_trd_v = r1_rho0 * glob_sum( 'diahsb', - ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * surf(:,:) )   ! volume fluxes 
     95      z_frc_trd_v = r1_rho0 * glob_sum( 'diahsb', - ( emp(:,:) - rnf(:,:) - fwfisf_cav(:,:) - fwfisf_par(:,:) ) * surf(:,:) )   ! volume fluxes 
    9696      z_frc_trd_t =           glob_sum( 'diahsb', sbc_tsc(:,:,jp_tem) * surf(:,:) )                       ! heat fluxes 
    9797      z_frc_trd_s =           glob_sum( 'diahsb', sbc_tsc(:,:,jp_sal) * surf(:,:) )                       ! salt fluxes 
  • NEMO/trunk/src/OCE/DYN/dynspg_ts.F90

    r14834 r15004  
    320320      !                                   ! ---------------------------------------------------  ! 
    321321      IF (ln_bt_fw) THEN                          ! FORWARD integration: use kt+1/2 fluxes (NOW+1/2) 
    322          zssh_frc(:,:) = r1_rho0 * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) 
     322         zssh_frc(:,:) = r1_rho0 * ( emp(:,:) - rnf(:,:) - fwfisf_cav(:,:) - fwfisf_par(:,:) ) 
    323323      ELSE                                        ! CENTRED integration: use kt-1/2 + kt+1/2 fluxes (NOW) 
    324324         zztmp = r1_rho0 * r1_2 
    325325         zssh_frc(:,:) = zztmp * (   emp(:,:)        + emp_b(:,:)          & 
    326326            &                      - rnf(:,:)        - rnf_b(:,:)          & 
    327             &                      + fwfisf_cav(:,:) + fwfisf_cav_b(:,:)   & 
    328             &                      + fwfisf_par(:,:) + fwfisf_par_b(:,:)   ) 
     327            &                      - fwfisf_cav(:,:) - fwfisf_cav_b(:,:)   & 
     328            &                      - fwfisf_par(:,:) - fwfisf_par_b(:,:)   ) 
    329329      ENDIF 
    330330      !                                   !=  Add Stokes drift divergence  =!   (if exist) 
  • NEMO/trunk/src/OCE/DYN/sshwzv.F90

    r14834 r15004  
    305305               &                          - zcoef   * (         emp_b(:,:) -        emp(:,:)   & 
    306306               &                                              - rnf_b(:,:) +        rnf(:,:)   & 
    307                &                                       + fwfisf_cav_b(:,:) - fwfisf_cav(:,:)   & 
    308                &                                       + fwfisf_par_b(:,:) - fwfisf_par(:,:)   ) * ssmask(:,:) 
     307               &                                       - fwfisf_cav_b(:,:) + fwfisf_cav(:,:)   & 
     308               &                                       - fwfisf_par_b(:,:) + fwfisf_par(:,:)   ) * ssmask(:,:) 
    309309 
    310310            ! ice sheet coupling 
  • NEMO/trunk/src/OCE/ISF/isfcav.F90

    r14995 r15004  
    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/trunk/src/OCE/ISF/isfcavmlt.F90

    r14995 r15004  
    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/trunk/src/OCE/ISF/isfcpl.F90

    r14433 r15004  
    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/trunk/src/OCE/ISF/isfdiags.F90

    r13295 r15004  
    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/trunk/src/OCE/ISF/isfdynatf.F90

    r14053 r15004  
    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/trunk/src/OCE/ISF/isfhdiv.F90

    r14834 r15004  
    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/trunk/src/OCE/ISF/isfpar.F90

    r14995 r15004  
    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/trunk/src/OCE/ISF/isfparmlt.F90

    r14995 r15004  
    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 ) 
  • NEMO/trunk/src/OCE/SBC/sbccpl.F90

    r14995 r15004  
    15211521         ! ice shelf fwf 
    15221522         IF( srcv(jpr_isf)%laction )  THEN 
    1523             fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1)  ! fresh water flux from the isf (fwfisf <0 mean melting) 
     1523            fwfisf_oasis(:,:) = frcv(jpr_isf)%z3(:,:,1)  ! fresh water flux from the isf to the ocean ( > 0 = melting ) 
    15241524         END IF 
    15251525 
     
    18621862         rnf(:,:)    = rnf(:,:) + fwficb(:,:) 
    18631863      ENDIF 
    1864       IF( srcv(jpr_isf)%laction ) THEN   ! iceshelf (fwfisf <0 mean melting) 
    1865         fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) 
     1864      IF( srcv(jpr_isf)%laction ) THEN   ! iceshelf (fwfisf > 0 mean melting) 
     1865        fwfisf_oasis(:,:) = frcv(jpr_isf)%z3(:,:,1) 
    18661866      ENDIF 
    18671867 
     
    19011901!!$         rnf(:,:)    = rnf(:,:) + fwficb(:,:) 
    19021902!!$      ENDIF 
    1903 !!$      IF( srcv(jpr_isf)%laction ) THEN   ! iceshelf (fwfisf <0 mean melting) 
    1904 !!$        fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) 
     1903!!$      IF( srcv(jpr_isf)%laction ) THEN   ! iceshelf (fwfisf >0 mean melting) 
     1904!!$        fwfisf_oasis(:,:) = frcv(jpr_isf)%z3(:,:,1) 
    19051905!!$      ENDIF 
    19061906!!$      ! 
     
    19311931      ! note: runoff output is done in sbcrnf (which includes icebergs too) and iceshelf output is done in sbcisf 
    19321932!!      IF( srcv(jpr_rnf)%laction )   CALL iom_put( 'runoffs' , rnf(:,:) * tmask(:,:,1)                                 )  ! runoff 
    1933 !!      IF( srcv(jpr_isf)%laction )   CALL iom_put( 'iceshelf_cea', -fwfisf(:,:) * tmask(:,:,1)                         )  ! iceshelf 
     1933!!      IF( srcv(jpr_isf)%laction )   CALL iom_put( 'iceshelf_cea', fwfisf(:,:) * tmask(:,:,1)                         )  ! iceshelf 
    19341934      ! 
    19351935      !                                                      ! ========================= ! 
  • NEMO/trunk/src/OCE/SBC/sbcfwb.F90

    r14718 r15004  
    117117         ! 
    118118         IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN 
    119             y_fwfnow(1) = local_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) 
     119            y_fwfnow(1) = local_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) - fwfisf_cav(:,:) - fwfisf_par(:,:) - snwice_fmass(:,:) ) ) 
    120120            CALL mpp_delay_sum( 'sbcfwb', 'fwb', y_fwfnow(:), z_fwfprv(:), kt == nitend - nn_fsbc + 1 ) 
    121121            z_fwfprv(1) = z_fwfprv(1) / area 
     
    180180            ztmsk_neg(:,:) = tmask_i(:,:) - ztmsk_pos(:,:) 
    181181            !                                                  ! fwf global mean (excluding ocean to ice/snow exchanges)  
    182             z_fwf     = glob_sum( 'sbcfwb', e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) / area 
     182            z_fwf     = glob_sum( 'sbcfwb', e1e2t(:,:) * ( emp(:,:) - rnf(:,:) - fwfisf_cav(:,:) - fwfisf_par(:,:) - snwice_fmass(:,:) ) ) / area 
    183183            !             
    184184            IF( z_fwf < 0._wp ) THEN         ! spread out over >0 erp area to increase evaporation 
  • NEMO/trunk/src/OCE/TRA/traatf.F90

    r14433 r15004  
    293293            IF ( ll_rnf ) ze3t_f = ze3t_f + zfact2 * zscale * (    rnf_b(ji,jj) -    rnf(ji,jj) ) 
    294294            IF ( ll_isf ) THEN 
    295                IF ( ln_isfcav_mlt ) ze3t_f = ze3t_f - zfact2 * zscale * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) ) 
    296                IF ( ln_isfpar_mlt ) ze3t_f = ze3t_f - zfact2 * zscale * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) ) 
     295               IF ( ln_isfcav_mlt ) ze3t_f = ze3t_f + zfact2 * zscale * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) ) 
     296               IF ( ln_isfpar_mlt ) ze3t_f = ze3t_f + zfact2 * zscale * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) ) 
    297297            ENDIF 
    298298            ! 
  • NEMO/trunk/src/TOP/trcais.F90

    r14118 r15004  
    184184                  DO_2D( 1, 1, 1, 1 ) 
    185185                     IF( ln_isfpar_mlt ) THEN 
    186                         zcalv = - fwfisf_par(ji,jj) * r1_rho0 / rhisf_tbl_par(ji,jj) 
     186                        zcalv = fwfisf_par(ji,jj) * r1_rho0 / rhisf_tbl_par(ji,jj) 
    187187                        ikt = misfkt_par(ji,jj) 
    188188                        ikb = misfkb_par(ji,jj) 
     
    190190                     END IF    
    191191                     IF( ln_isfcav_mlt ) THEN 
    192                         zcalv = - fwfisf_cav(ji,jj) * r1_rho0 / rhisf_tbl_cav(ji,jj) 
     192                        zcalv = fwfisf_cav(ji,jj) * r1_rho0 / rhisf_tbl_cav(ji,jj) 
    193193                        ikt = misfkt_cav(ji,jj) 
    194194                        ikb = misfkb_cav(ji,jj) 
  • NEMO/trunk/tests/ISOMIP+/MY_SRC/sbcfwb.F90

    r14995 r15004  
    118118         ! 
    119119         IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN 
    120             y_fwfnow(1) = local_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) 
     120            y_fwfnow(1) = local_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) - fwfisf_cav(:,:) - fwfisf_par(:,:) - snwice_fmass(:,:) ) ) 
    121121            CALL mpp_delay_sum( 'sbcfwb', 'fwb', y_fwfnow(:), z_fwfprv(:), kt == nitend - nn_fsbc + 1 ) 
    122122            z_fwfprv(1) = z_fwfprv(1) / area 
     
    132132         ! 
    133133         IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN 
    134             z_fwf = glob_sum( 'sbcfwb',  e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) 
     134            z_fwf = glob_sum( 'sbcfwb',  e1e2t(:,:) * ( emp(:,:) - rnf(:,:) - fwfisf_cav(:,:) - fwfisf_par(:,:) - snwice_fmass(:,:) ) ) 
    135135            ! 
    136136            ! correction for ice sheet coupling testing (ie remove the excess through the surface) 
     
    201201            ztmsk_neg(:,:) = tmask_i(:,:) - ztmsk_pos(:,:) 
    202202            !                                                  ! fwf global mean (excluding ocean to ice/snow exchanges)  
    203             z_fwf     = glob_sum( 'sbcfwb', e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) / area 
     203            z_fwf     = glob_sum( 'sbcfwb', e1e2t(:,:) * ( emp(:,:) - rnf(:,:) - fwfisf_cav(:,:) - fwfisf_par(:,:) - snwice_fmass(:,:) ) ) / area 
    204204            !             
    205205            IF( z_fwf < 0._wp ) THEN         ! spread out over >0 erp area to increase evaporation 
Note: See TracChangeset for help on using the changeset viewer.