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 3905 for trunk – NEMO

Changeset 3905 for trunk


Ignore:
Timestamp:
2013-05-24T15:40:39+02:00 (11 years ago)
Author:
cetlod
Message:

bugfix : store the flux due to freezing/melting, needed at least for PISCES, see ticket #1100

Location:
trunk/NEMOGCM
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/iodef.xml

    r3771 r3905  
    5858     <field field_ref="qsr"          name="soshfldo"  /> 
    5959          <field field_ref="saltflx"      name="sosfldow"  /> 
     60          <field field_ref="fmmflx"       name="sofmflup"  /> 
    6061     <field field_ref="qt"           name="sohefldo"  /> 
    6162     <field field_ref="mldr10_1"     name="somxl010"  /> 
  • trunk/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist

    r3795 r3905  
    665665   sn_mld  = 'dyna_grid_T' ,    120            , 'somixhgt' ,  .true.    , .true. ,   'yearly'  , ''       , '' 
    666666   sn_emp  = 'dyna_grid_T' ,    120            , 'sowaflup' ,  .true.    , .true. ,   'yearly'  , ''       , '' 
    667    sn_sfx  = 'dyna_grid_T' ,    120            , 'sowaflcd' ,  .true.    , .true. ,   'yearly'  , ''       , '' 
     667   sn_fmf  = 'dyna_grid_T' ,    120            , 'iowaflup' ,  .true.    , .true. ,   'yearly'  , ''       , '' 
    668668   sn_ice  = 'dyna_grid_T' ,    120            , 'soicecov' ,  .true.    , .true. ,   'yearly'  , ''       , '' 
    669669   sn_qsr  = 'dyna_grid_T' ,    120            , 'soshfldo' ,  .true.    , .true. ,   'yearly'  , ''       , '' 
  • trunk/NEMOGCM/CONFIG/SHARED/field_def.xml

    r3824 r3905  
    5353 
    5454         <field id="empmr"        long_name="Net Upward Water Flux"                                        unit="kg/m2/s"  /> 
    55          <field id="saltflx"      long_name="Downward salt flux"                                          unit="PSU/m2/s"  /> 
     55         <field id="saltflx"      long_name="Downward salt flux"                                           unit="PSU/m2/s"  /> 
     56         <field id="fmmflx"       long_name="Water flux due to freezing/melting"                           unit="kg/m2/s"  /> 
    5657         <field id="snowpre"      long_name="Snow precipitation"                                           unit="kg/m2/s"  /> 
    5758         <field id="runoffs"      long_name="River Runoffs"                                                unit="Kg/m2/s"  /> 
  • trunk/NEMOGCM/CONFIG/cfg.txt

    r3769 r3905  
    44GYRE_PISCES OPA_SRC TOP_SRC 
    55ORCA2_LIM3 OPA_SRC LIM_SRC_3 
    6 ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
    7 ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 
    86ORCA2_SAS_LIM OPA_SRC SAS_SRC LIM_SRC_2 NST_SRC 
    97ORCA2_LIM_CFC_C14b OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
    108ORCA2_LIM OPA_SRC LIM_SRC_2 NST_SRC 
     9ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 
     10ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
  • trunk/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r3625 r3905  
    217217            zemp_snw = rdm_snw(ji,jj) * r1_rdtice                    ! snow melting = pure water that enters the ocean 
    218218            zfmm     = rdm_ice(ji,jj) * r1_rdtice                    ! Freezing minus Melting (F-M) 
     219 
     220            fmmflx(ji,jj) = zfmm                                     ! F/M mass flux save at least for biogeochemical model 
    219221 
    220222            ! salt flux at the ice/ocean interface (sea ice fraction) [PSU*kg/m2/s] 
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r3625 r3905  
    226226            zemp_snw = rdm_snw(ji,jj) * r1_rdtice                         ! snow melting = pure water that enters the ocean 
    227227            zfmm     = rdm_ice(ji,jj) * r1_rdtice                         ! Freezing minus mesting   
     228 
     229            fmmflx(ji,jj) = zfmm                                     ! F/M mass flux save at least for biogeochemical model 
    228230 
    229231            emp(ji,jj) = zemp + zemp_snw + zfmm  ! mass flux + F/M mass flux (always ice/ocean mass exchange) 
  • trunk/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90

    r3827 r3905  
    7272   INTEGER  , SAVE      ::   jf_eiv         ! index of v-eiv 
    7373   INTEGER  , SAVE      ::   jf_eiw         ! index of w-eiv 
    74    INTEGER  , SAVE      ::   jf_sfx         ! index of downward salt flux 
     74   INTEGER  , SAVE      ::   jf_fmf         ! index of downward salt flux 
    7575 
    7676   TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_dyn  ! structure of input fields (file informations, fields read) 
     
    254254      wndm(:,:)        = sf_dyn(jf_wnd)%fnow(:,:,1) * tmask(:,:,1)    ! wind speed - needed for gas exchange 
    255255      emp (:,:)        = sf_dyn(jf_emp)%fnow(:,:,1) * tmask(:,:,1)    ! E-P 
    256       sfx (:,:)        = 0.0_wp      ! enable testing with old inputs ! downward salt flux  
    257 !     sfx (:,:)        = sf_dyn(jf_sfx)%fnow(:,:,1) * tmask(:,:,1)    ! downward salt flux (v3.5+) 
     256      fmmflx(:,:)      = sf_dyn(jf_fmf)%fnow(:,:,1) * tmask(:,:,1)    ! downward salt flux (v3.5+) 
    258257      fr_i(:,:)        = sf_dyn(jf_ice)%fnow(:,:,1) * tmask(:,:,1)    ! Sea-ice fraction 
    259258      qsr (:,:)        = sf_dyn(jf_qsr)%fnow(:,:,1) * tmask(:,:,1)    ! solar radiation 
     
    302301         CALL prt_ctl(tab2d_1=fr_i             , clinfo1=' fr_i    - : ', mask1=tmask, ovlap=1 ) 
    303302         CALL prt_ctl(tab2d_1=hmld             , clinfo1=' hmld    - : ', mask1=tmask, ovlap=1 ) 
    304          CALL prt_ctl(tab2d_1=sfx              , clinfo1=' sfx     - : ', mask1=tmask, ovlap=1 ) 
     303         CALL prt_ctl(tab2d_1=fmmflx           , clinfo1=' fmmflx  - : ', mask1=tmask, ovlap=1 ) 
    305304         CALL prt_ctl(tab2d_1=emp              , clinfo1=' emp     - : ', mask1=tmask, ovlap=1 ) 
    306305         CALL prt_ctl(tab2d_1=wndm             , clinfo1=' wspd    - : ', mask1=tmask, ovlap=1 ) 
     
    331330      TYPE(FLD_N) :: sn_tem, sn_sal, sn_mld, sn_emp, sn_ice, sn_qsr, sn_wnd  ! informations about the fields to be read 
    332331      TYPE(FLD_N) :: sn_uwd, sn_vwd, sn_wwd, sn_avt, sn_ubl, sn_vbl          !   "                                 " 
    333       TYPE(FLD_N) :: sn_ahu, sn_ahv, sn_ahw, sn_eiu, sn_eiv, sn_eiw, sn_sfx  !   "                                 " 
     332      TYPE(FLD_N) :: sn_ahu, sn_ahv, sn_ahw, sn_eiu, sn_eiv, sn_eiw, sn_fmf  !   "                                 " 
    334333      ! 
    335334      NAMELIST/namdta_dyn/cn_dir, ln_dynwzv, ln_dynbbl, ln_degrad,    & 
    336335         &                sn_tem, sn_sal, sn_mld, sn_emp, sn_ice, sn_qsr, sn_wnd,  & 
    337336         &                sn_uwd, sn_vwd, sn_wwd, sn_avt, sn_ubl, sn_vbl,          & 
    338          &                sn_ahu, sn_ahv, sn_ahw, sn_eiu, sn_eiv, sn_eiw, sn_sfx 
     337         &                sn_ahu, sn_ahv, sn_ahw, sn_eiu, sn_eiv, sn_eiw, sn_fmf 
    339338 
    340339      !!---------------------------------------------------------------------- 
     
    349348      sn_mld  = FLD_N( 'dyna_grid_T' ,    120    , 'somixght' ,  .true.    , .true. ,   'yearly'  , ''       , ''         ) 
    350349      sn_emp  = FLD_N( 'dyna_grid_T' ,    120    , 'sowaflup' ,  .true.    , .true. ,   'yearly'  , ''       , ''         ) 
    351       sn_sfx  = FLD_N( 'dyna_grid_T' ,    120    , 'sowaflcd' ,  .true.    , .true. ,   'yearly'  , ''       , ''         ) 
    352 !!    sn_sfx  = FLD_N( 'dyna_grid_T' ,    120    , 'sosfldow' ,  .true.    , .true. ,   'yearly'  , ''       , ''         ) ! v3.5+ 
     350      sn_fmf  = FLD_N( 'dyna_grid_T' ,    120    , 'sofmflup' ,  .true.    , .true. ,   'yearly'  , ''       , ''         ) 
    353351      sn_ice  = FLD_N( 'dyna_grid_T' ,    120    , 'soicecov' ,  .true.    , .true. ,   'yearly'  , ''       , ''         ) 
    354352      sn_qsr  = FLD_N( 'dyna_grid_T' ,    120    , 'soshfldo' ,  .true.    , .true. ,   'yearly'  , ''       , ''         ) 
     
    391389      ENDIF 
    392390 
    393       jf_tem = 1   ;   jf_sal = 2   ;  jf_mld = 3   ;  jf_emp = 4   ;   jf_sfx  = 5   ;  jf_ice = 6   ;   jf_qsr = 7 
     391      jf_tem = 1   ;   jf_sal = 2   ;  jf_mld = 3   ;  jf_emp = 4   ;   jf_fmf  = 5   ;  jf_ice = 6   ;   jf_qsr = 7 
    394392      jf_wnd = 8   ;   jf_uwd = 9   ;  jf_vwd = 10  ;  jf_wwd = 11  ;   jf_avt  = 12  ;  jfld  = 12 
    395393      ! 
    396394      slf_d(jf_tem) = sn_tem   ;   slf_d(jf_sal)  = sn_sal   ;   slf_d(jf_mld) = sn_mld 
    397       slf_d(jf_emp) = sn_emp   ;   slf_d(jf_sfx ) = sn_sfx   ;   slf_d(jf_ice) = sn_ice  
     395      slf_d(jf_emp) = sn_emp   ;   slf_d(jf_fmf ) = sn_fmf   ;   slf_d(jf_ice) = sn_ice  
    398396      slf_d(jf_qsr) = sn_qsr   ;   slf_d(jf_wnd)  = sn_wnd   ;   slf_d(jf_avt) = sn_avt  
    399397      slf_d(jf_uwd) = sn_uwd   ;   slf_d(jf_vwd)  = sn_vwd   ;   slf_d(jf_wwd) = sn_wwd 
     
    429427        ENDIF 
    430428      ENDIF 
    431       ! Salt flux and concntration/dilution terms (new from v3.5) !! disabled to allow testing with old input files 
    432 !!    jf_sfx = jfld + 1    ;    jfld = jfld + 1 
    433 !!    slf_d(jf_sfx) = sn_sfx 
    434429   
    435430      ALLOCATE( sf_dyn(jfld), STAT=ierr )         ! set sf structure 
  • trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r3680 r3905  
    7070   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx    , sfx_b    !: salt flux                                    [PSU/m2/s] 
    7171   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   emp_tot           !: total E-P over ocean and ice                 [Kg/m2/s] 
     72   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fmmflx            !: freshwater budget: freezing/melting          [Kg/m2/s] 
    7273   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   rnf    , rnf_b    !: river runoff   [Kg/m2/s]   
    7374   !! 
     
    115116         &      qsr_tot(jpi,jpj) , qsr  (jpi,jpj) ,                        & 
    116117         &      emp    (jpi,jpj) , emp_b(jpi,jpj) ,                        & 
    117          &      sfx    (jpi,jpj) , sfx_b(jpi,jpj) , emp_tot(jpi,jpj) , STAT=ierr(2) ) 
     118         &      sfx    (jpi,jpj) , sfx_b(jpi,jpj) , emp_tot(jpi,jpj), fmmflx(jpi,jpj), STAT=ierr(2) ) 
    118119         ! 
    119120      ALLOCATE( rnf  (jpi,jpj) , sbc_tsc  (jpi,jpj,jpts) , qsr_hc  (jpi,jpj,jpk) ,     & 
  • trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r3764 r3905  
    146146      sfx(:,:) = 0.0_wp                            ! the salt flux due to freezing/melting will be computed (i.e. will be non-zero)  
    147147                                                   ! only if sea-ice is present 
     148  
     149      fmmflx(:,:) = 0.0_wp                        ! freezing-melting array initialisation 
    148150 
    149151      !                                            ! restartability    
     
    362364                                                                ! (includes virtual salt flux beneath ice  
    363365                                                                ! in linear free surface case) 
     366         CALL iom_put( "fmmflx", fmmflx  )                      ! Freezing-melting water flux 
    364367         CALL iom_put( "qt"    , qns  + qsr )                   ! total heat flux  
    365368         CALL iom_put( "qns"   , qns        )                   ! solar heat flux 
  • trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r3904 r3905  
    105105            DO ji = 1, jpi 
    106106               zdep    = rfact2 / fse3t(ji,jj,1) 
    107     !           zwflux  = ( emps(ji,jj) - emp(ji,jj) ) & 
    108     !           &        * tsn(ji,jj,1,jp_sal) / ( tsn(ji,jj,1,jp_sal) - 6.0 ) / 1000. 
    109                zwflux = 0. 
    110                zfminus = MIN( 0., -zwflux ) * trn(ji,jj,1,jpfer) * zdep 
    111                zfplus  = MAX( 0., -zwflux ) * 10E-9 * zdep 
     107               zwflux  = fmmflx(ji,jj) / 1000._wp 
     108               zfminus = MIN( 0._wp, -zwflux ) * trn(ji,jj,1,jpfer) * zdep 
     109               zfplus  = MAX( 0._wp, -zwflux ) * icefeinput * zdep 
    112110               zironice(ji,jj) =  zfplus + zfminus 
    113111            END DO 
  • trunk/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90

    r3680 r3905  
    9999   USE sbc_oce , ONLY :   emp        =>    emp        !: freshwater budget: volume flux               [Kg/m2/s] 
    100100   USE sbc_oce , ONLY :   emp_b      =>    emp_b      !: freshwater budget: volume flux               [Kg/m2/s] 
    101    USE sbc_oce , ONLY :   sfx        =>    sfx        !: downward salt flux                          [PSU/m2/s] 
     101   USE sbc_oce , ONLY :   fmmflx     =>    fmmflx     !: freshwater budget: volume flux               [Kg/m2/s] 
    102102   USE sbc_oce , ONLY :   rnf        =>    rnf        !: river runoff   [Kg/m2/s] 
    103103   USE sbc_oce , ONLY :   ln_dm2dc   =>    ln_dm2dc   !: Daily mean to Diurnal Cycle short wave (qsr)  
  • trunk/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r3882 r3905  
    141141   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  fr_i_tm    !: average ice fraction     [m/s] 
    142142   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  emp_tm     !: freshwater budget: volume flux [Kg/m2/s] 
    143    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sfx_tm     !: downward salt flux [PSU/m2/s] 
     143   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  fmmflx_tm  !: freshwater budget: freezing/melting [Kg/m2/s] 
    144144   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  emp_b_hold !: hold emp from the beginning of each sub-stepping[m]   
    145145   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  qsr_tm     !: solar radiation average [m] 
     
    181181   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  hdivb_temp, rotb_temp 
    182182   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  hmld_temp, qsr_temp, fr_i_temp,wndm_temp 
    183    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  emp_temp, sfx_temp, emp_b_temp 
     183   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  emp_temp, fmmflx_temp, emp_b_temp 
    184184   ! 
    185185#if defined key_trabbl 
  • trunk/NEMOGCM/NEMO/TOP_SRC/trcsub.F90

    r3680 r3905  
    124124          fr_i_tm  (:,:)         = fr_i_tm  (:,:)         + fr_i  (:,:) 
    125125          emp_tm   (:,:)         = emp_tm   (:,:)         + emp   (:,:)  
    126           sfx_tm   (:,:)         = sfx_tm   (:,:)         + sfx   (:,:) 
     126          fmmflx_tm(:,:)         = fmmflx_tm(:,:)         + fmmflx(:,:) 
    127127          qsr_tm   (:,:)         = qsr_tm   (:,:)         + qsr   (:,:) 
    128128          wndm_tm  (:,:)         = wndm_tm  (:,:)         + wndm  (:,:) 
     
    212212         emp_temp   (:,:)        = emp   (:,:) 
    213213         emp_b_temp (:,:)        = emp_b (:,:) 
    214          sfx_temp   (:,:)        = sfx   (:,:) 
     214         fmmflx_temp(:,:)        = fmmflx(:,:) 
    215215         qsr_temp   (:,:)        = qsr   (:,:) 
    216216         wndm_temp  (:,:)        = wndm  (:,:) 
     
    316316         fr_i_tm  (:,:)          = fr_i_tm    (:,:)       + fr_i  (:,:) 
    317317         emp_tm   (:,:)          = emp_tm     (:,:)       + emp   (:,:)  
    318          sfx_tm   (:,:)          = sfx_tm     (:,:)       + sfx   (:,:) 
     318         fmmflx_tm(:,:)          = fmmflx_tm  (:,:)       + fmmflx(:,:) 
    319319         qsr_tm   (:,:)          = qsr_tm     (:,:)       + qsr   (:,:) 
    320320         wndm_tm  (:,:)          = wndm_tm    (:,:)       + wndm  (:,:) 
     
    335335            qsr   (:,:)          = qsr_tm     (:,:) * r1_ndttrc  
    336336            emp   (:,:)          = emp_tm     (:,:) * r1_ndttrc  
    337             sfx   (:,:)          = sfx_tm     (:,:) * r1_ndttrc  
     337            fmmflx(:,:)          = fmmflx_tm  (:,:) * r1_ndttrc  
    338338            fr_i  (:,:)          = fr_i_tm    (:,:) * r1_ndttrc 
    339339# if defined key_trabbl 
     
    351351            qsr   (:,:)          = qsr_tm     (:,:) * r1_ndttrcp1  
    352352            emp   (:,:)          = emp_tm     (:,:) * r1_ndttrcp1  
    353             sfx   (:,:)          = sfx_tm     (:,:) * r1_ndttrcp1  
     353            fmmflx(:,:)          = fmmflx_tm  (:,:) * r1_ndttrcp1  
    354354            fr_i  (:,:)          = fr_i_tm    (:,:) * r1_ndttrcp1  
    355355# if defined key_trabbl 
     
    501501         CALL lbc_lnk( emp   (:,:)         , 'T', 1. )  
    502502         CALL lbc_lnk( emp_b (:,:)         , 'T', 1. )  
    503          CALL lbc_lnk( sfx   (:,:)         , 'T', 1. )  
     503         CALL lbc_lnk( fmmflx(:,:)         , 'T', 1. )  
    504504         CALL lbc_lnk( qsr   (:,:)         , 'T', 1. )  
    505505         CALL lbc_lnk( wndm  (:,:)         , 'T', 1. )  
     
    601601      fr_i_tm(:,:) = 0._wp 
    602602      emp_tm (:,:) = 0._wp 
    603       sfx_tm(:,:)  = 0._wp 
     603      fmmflx_tm(:,:)  = 0._wp 
    604604      qsr_tm (:,:) = 0._wp 
    605605      wndm_tm(:,:) = 0._wp 
     
    708708      fr_i  (:,:)     =  fr_i_temp  (:,:) 
    709709      emp   (:,:)     =  emp_temp   (:,:) 
    710       sfx   (:,:)     =  sfx_temp   (:,:) 
     710      fmmflx(:,:)     =  fmmflx_temp(:,:) 
    711711      emp_b (:,:)     =  emp_b_temp (:,:) 
    712712      qsr   (:,:)     =  qsr_temp   (:,:) 
     
    827827      fr_i_tm    (:,:) = fr_i  (:,:) 
    828828      emp_tm     (:,:) = emp   (:,:) 
    829       sfx_tm     (:,:) = sfx   (:,:) 
     829      fmmflx_tm  (:,:) = fmmflx(:,:) 
    830830      qsr_tm     (:,:) = qsr   (:,:) 
    831831      wndm_tm    (:,:) = wndm  (:,:) 
     
    10561056         &      rnf_temp(jpi,jpj)           ,  h_rnf_temp(jpi,jpj) ,     & 
    10571057         &      tsn_temp(jpi,jpj,jpk,2)     ,  emp_b_temp(jpi,jpj),      & 
    1058          &      emp_temp(jpi,jpj)           ,  sfx_temp(jpi,jpj)  ,      & 
     1058         &      emp_temp(jpi,jpj)           ,  fmmflx_temp(jpi,jpj),     & 
    10591059         &      hmld_temp(jpi,jpj)          ,  qsr_temp(jpi,jpj) ,       & 
    10601060         &      fr_i_temp(jpi,jpj)          ,  fr_i_tm(jpi,jpj) ,        & 
     
    11041104         &      sshv_n_tm(jpi,jpj)          ,  sshv_b_hold(jpi,jpj),     & 
    11051105         &      tsn_tm(jpi,jpj,jpk,2)       ,                            & 
    1106          &      emp_tm(jpi,jpj)             ,  sfx_tm(jpi,jpj)  ,        & 
     1106         &      emp_tm(jpi,jpj)             ,  fmmflx_tm(jpi,jpj)  ,     & 
    11071107         &      emp_b_hold(jpi,jpj)         ,                            & 
    11081108         &      hmld_tm(jpi,jpj)            ,  qsr_tm(jpi,jpj) ,         & 
Note: See TracChangeset for help on using the changeset viewer.