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

Changeset 11495


Ignore:
Timestamp:
2019-09-03T17:45:00+02:00 (5 years ago)
Author:
mathiot
Message:

ENHANCE-02_ISF: fix issue in the computation of utbl and vtbl + cosmetic change (ticket #2142)

Location:
NEMO/branches/2019/ENHANCE-02_ISF_nemo
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/cfgs/WED025/EXPREF/file_def_nemo-oce.xml

    r11487 r11495  
    4242 
    4343          <!-- ice shelf exchange coef  --> 
    44           <field field_ref="isfgammat"    name="sogammat"  /> 
    45           <field field_ref="isfgammas"    name="sogammas"  /> 
     44          <field field_ref="isfgammat"    name="sogammat_cav"  /> 
     45          <field field_ref="isfgammas"    name="sogammas_cav"  /> 
    4646 
    47           <!-- ice shelf debug  --> 
    48           <field field_ref="isfthermald_cav" name="thermald"  /> 
    49           <field field_ref="ttbl_cav"      name="ttbl"  /> 
     47          <!-- ice shelf tbl properties  --> 
     48          <field field_ref="isfthermald_cav" name="thermald_cav"  /> 
     49          <field field_ref="ttbl_cav"      name="ttbl_cav"  /> 
     50          <field field_ref="stbl"          name="stbl_cav"  /> 
     51          <field field_ref="utbl"          name="utbl_cav"  /> 
     52          <field field_ref="vtbl"          name="vtbl_cav"  /> 
    5053 
    5154          <!-- ice shelf fluxes  --> 
    52           <field field_ref="fwfisf_cav"   name="sowflisf" /> 
     55          <field field_ref="fwfisf_cav"    name="sowflisf_cav" /> 
    5356          <field field_ref="qoceisf_cav"   name="qoceisf_cav"  /> 
    5457          <field field_ref="qlatisf_cav"   name="qlatisf_cav"  /> 
    55           <field field_ref="qhcisf_cav"    name="qhcisf_cav"  /> 
     58          <field field_ref="qhcisf_cav"    name="qhcisf_cav"   /> 
     59           
     60          <field field_ref="fwfisf_par"    name="sowflisf_par" /> 
     61          <field field_ref="qoceisf_par"   name="qoceisf_par"  /> 
     62          <field field_ref="qlatisf_par"   name="qlatisf_par"  /> 
     63          <field field_ref="qhcisf_par"    name="qhcisf_par"   /> 
    5664 
    5765   </file> 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcav.F90

    r11423 r11495  
    7070      ! 
    7171      ! compute misfkb_par, rhisf_tbl 
    72       rhisf_tbl_cav(:,:) = rn_htbl 
     72      rhisf_tbl_cav(:,:) = rn_htbl * mskisf_cav(:,:) 
    7373      CALL isf_tbl_lvl( ht_n, e3t_n, misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav ) 
    7474      ! 
    7575      ! compute T/S/U/V for the top boundary layer 
    76       CALL isf_tbl(tsn(:,:,:,jp_tem),zttbl(:,:),'T', misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav ) 
    77       CALL isf_tbl(tsn(:,:,:,jp_sal),zstbl(:,:),'T', misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav ) 
     76      CALL isf_tbl(tsn(:,:,:,jp_tem), zttbl(:,:),'T', misfkt_cav, rhisf_tbl_cav, misfkb_cav, rfrac_tbl_cav ) 
     77      CALL isf_tbl(tsn(:,:,:,jp_sal), zstbl(:,:),'T', misfkt_cav, rhisf_tbl_cav, misfkb_cav, rfrac_tbl_cav ) 
    7878      !  
    7979      ! output T/S/U/V for the top boundary layer 
     
    157157      ! 
    158158      ! cav 
    159       misfkt_cav(:,:)     = mikt(:,:) ; misfkb_cav(:,:)       = 1 
    160       rhisf_tbl_cav(:,:)  = 0.0_wp    ; rfrac_tbl_cav(:,:)    = 0.0_wp 
     159      misfkt_cav(:,:)    = mikt(:,:) ; misfkb_cav(:,:)    = 1 
     160      rhisf_tbl_cav(:,:) = 0.0_wp    ; rfrac_tbl_cav(:,:) = 0.0_wp 
    161161      ! 
    162162      SELECT CASE ( TRIM(cn_isfcav_mlt) ) 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcavgam.F90

    r11488 r11495  
    5959         ! nothing to do 
    6060      CASE ('ad15', 'hj99') 
    61          CALL isf_tbl(un(:,:,:) ,zutbl(:,:),'U') 
    62          CALL isf_tbl(vn(:,:,:) ,zvtbl(:,:),'V') 
     61         ! compute velocity in tbl 
     62         CALL isf_tbl(un(:,:,:) ,zutbl(:,:),'U', miku, rhisf_tbl_cav) 
     63         CALL isf_tbl(vn(:,:,:) ,zvtbl(:,:),'V', mikv, rhisf_tbl_cav) 
     64         ! 
     65         ! mask velocity in tbl with ice shelf mask 
     66         !zutbl(:,:) = zutbl(:,:) * mskisf_cav(:,:) 
     67         !zvtbl(:,:) = zvtbl(:,:) * mskisf_cav(:,:) 
     68         ! 
     69         ! output 
    6370         CALL iom_put('utbl',zutbl(:,:)) 
    6471         CALL iom_put('vtbl',zvtbl(:,:)) 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcavmlt.F90

    r11494 r11495  
    1313   USE oce            ! ocean dynamics and tracers 
    1414   USE isf            ! ice shelf public variables 
     15   USE isfutils 
    1516   USE dom_oce        ! ocean space and time domain 
    1617   USE phycst         ! physical constants 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfparmlt.F90

    r11494 r11495  
    9898         CALL eos_fzp(tsn(:,:,jk,jp_sal), ztfrz3d(:,:,jk), gdept_n(:,:,jk)) 
    9999      END DO 
    100       CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par ) 
     100      CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
    101101      ! 
    102102      pqfwf(:,:) = - sf_isfpar_fwf(1)%fnow(:,:,1)      ! fresh water flux from the isf (fwfisf <0 mean melting)  
     
    136136         CALL eos_fzp(tsn(:,:,jk,jp_sal), ztfrz3d(:,:,jk), gdept_n(:,:,jk)) 
    137137      END DO 
    138       CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par ) 
     138      CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
    139139      ! 
    140140      ! 1. ------------Mean temperature 
    141       CALL isf_tbl(tsn(:,:,jk,jp_tem), ztavg, 'T', misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par ) 
     141      CALL isf_tbl(tsn(:,:,jk,jp_tem), ztavg, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
    142142      ! 
    143143      ! 2. ------------Net heat flux and fresh water flux due to the ice shelf 
     
    187187         CALL eos_fzp(tsn(:,:,jk,jp_sal), ztfrz3d(:,:,jk), gdept_n(:,:,jk)) 
    188188      END DO 
    189       CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par ) 
     189      CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par ) 
    190190      ! 
    191191      ! ice shelf 2d map 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isftbl.F90

    r11494 r11495  
    2525CONTAINS 
    2626 
    27    SUBROUTINE isf_tbl( pvarin, pvarout, cd_ptin, ktop, kbot, phtbl, pfrac ) 
     27   SUBROUTINE isf_tbl( pvarin, pvarout, cd_ptin, ktop, phtbl, kbot, pfrac ) 
    2828      !!-------------------------------------------------------------------- 
    2929      !!                  ***  SUBROUTINE isf_tbl  *** 
     
    3737      CHARACTER(len=1)                      , INTENT(in   ) :: cd_ptin       ! point of variable in/out 
    3838      REAL(wp), DIMENSION(jpi,jpj,jpk)      , INTENT(in   ) :: pvarin        ! 3d variable to average over the tbl 
     39      INTEGER,  DIMENSION(jpi,jpj)          , INTENT(in   ) :: ktop          ! top level 
     40      REAL(wp), DIMENSION(jpi,jpj)          , INTENT(in   ) :: phtbl         ! tbl thickness 
    3941      !!-------------------------- IN OPTIONAL ----------------------------- 
    40       INTEGER,  DIMENSION(jpi,jpj), OPTIONAL, INTENT(in   ) :: ktop , kbot   ! top and bottom level 
    41       REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in   ) :: phtbl, pfrac  ! tbl thickness and fraction of bottom cell affected 
     42      INTEGER,  DIMENSION(jpi,jpj), OPTIONAL, INTENT(in   ) :: kbot          ! bottom level 
     43      REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in   ) :: pfrac         ! fraction of bottom cell affected by tbl 
    4244      !!-------------------------------------------------------------------- 
    4345      INTEGER ::   ji, jj                   ! loop index 
    44       INTEGER , DIMENSION(jpi,jpj) :: iktbl ! bottom level of the tbl 
     46      INTEGER , DIMENSION(jpi,jpj) :: ikbot ! bottom level of the tbl 
    4547      REAL(wp), DIMENSION(jpi,jpj) :: zhtbl ! thickness of the tbl 
    4648      REAL(wp), DIMENSION(jpi,jpj) :: zfrac ! thickness of the tbl 
     
    5052      CASE ( 'U' ) 
    5153         ! 
    52          ! compute tbl lvl/h 
    53          CALL isf_tbl_lvl( hu_n, e3u_n, miku, iktbl, zhtbl, zfrac ) 
     54         ! copy phtbl (phtbl is INTENT in as we don't want to change it) 
     55         zhtbl = phtbl 
     56         ! 
     57         ! compute tbl lvl and thickness 
     58         CALL isf_tbl_lvl( hu_n, e3u_n, ktop, ikbot, zhtbl, zfrac ) 
    5459         ! 
    5560         ! compute tbl property at U point 
    56          CALL isf_tbl_avg( miku, iktbl, zhtbl, zfrac, e3u_n, pvarin, pvarout ) 
     61         CALL isf_tbl_avg( miku, ikbot, zhtbl, zfrac, e3u_n, pvarin, pvarout ) 
    5762         ! 
    5863         ! compute tbl property at T point 
     
    6873      CASE ( 'V' ) 
    6974         ! 
    70          ! compute tbl lvl/h 
    71          CALL isf_tbl_lvl( hv_n, e3v_n, mikv, iktbl, zhtbl, zfrac ) 
     75         ! copy phtbl (phtbl is INTENT in as we don't want to change it) 
     76         zhtbl = phtbl 
     77         ! 
     78         ! compute tbl lvl and thickness 
     79         CALL isf_tbl_lvl( hv_n, e3v_n, ktop, ikbot, zhtbl, zfrac ) 
    7280         ! 
    7381         ! compute tbl property at V point 
    74          CALL isf_tbl_avg( mikv, iktbl, zhtbl, zfrac, e3v_n, pvarin, pvarout ) 
     82         CALL isf_tbl_avg( mikv, ikbot, zhtbl, zfrac, e3v_n, pvarin, pvarout ) 
    7583         ! 
    7684         ! pvarout is an averaging of wet point 
     
    143151      !!              - thickness of the top boundary layer 
    144152      !! 
    145       !!-------------------------------------------------------------------- 
    146       !!-------------------------- OUT ------------------------------------- 
     153      !!--------------------------------------------------------------------- 
     154      !!-------------------------- OUT -------------------------------------- 
    147155      INTEGER,  DIMENSION(jpi,jpj)    , INTENT(  out) :: kbot   ! bottom level of the top boundary layer 
    148       REAL(wp), DIMENSION(jpi,jpj)    , INTENT(  out) :: phtbl  ! top boundary layer thickness 
    149       REAL(wp), DIMENSION(jpi,jpj)    , INTENT(  out) :: pfrac  ! top boundary layer thickness 
    150       !!-------------------------- IN  ------------------------------------- 
     156      REAL(wp), DIMENSION(jpi,jpj)    , INTENT(  out) :: pfrac  ! fraction of bottom level in the tbl 
     157      !!-------------------------- IN  -------------------------------------- 
    151158      INTEGER,  DIMENSION(jpi,jpj)    , INTENT(in   ) :: ktop   ! top level of the top boundary layer 
    152159      REAL(wp), DIMENSION(jpi,jpj)    , INTENT(in   ) :: phw    ! water column thickness 
    153160      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) :: pe3    ! vertical scale factor 
     161      !!-------------------------- INOUT ------------------------------------ 
     162      REAL(wp), DIMENSION(jpi,jpj)    , INTENT(inout) :: phtbl  ! top boundary layer thickness 
    154163      !!--------------------------------------------------------------------- 
    155164      INTEGER :: ji,jj,jk 
Note: See TracChangeset for help on using the changeset viewer.