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 9922 for NEMO – NEMO

Changeset 9922 for NEMO


Ignore:
Timestamp:
2018-07-10T19:15:48+02:00 (6 years ago)
Author:
clem
Message:

cosmetics (quinquies)

Location:
NEMO/trunk/src/ICE
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/ICE/ice.F90

    r9916 r9922  
    256256   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_err_dif !: heat flux remaining due to change in non-solar flux [W.m-2] 
    257257   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_err_rem !: heat flux error after heat remapping                [W.m-2] 
    258    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qt_atm_oi      !: heat flux available for thermo transformations      [W.m-2] 
     258   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qt_atm_oi   !: heat flux available for thermo transformations      [W.m-2] 
    259259   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qt_oce_ai   !: heat flux remaining at the end of thermo transformations  [W.m-2] 
    260260   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_err_sub !: mass flux error after sublimation                   [kg.m-2.s-1] 
  • NEMO/trunk/src/ICE/icestp.F90

    r9916 r9922  
    189189         IF( ln_icethd )                CALL ice_thd( kt )            ! -- Ice thermodynamics       
    190190         ! 
    191          ! 
    192191         IF( ln_icethd )                CALL ice_cor( kt , 2 )        ! -- Corrections 
    193192         ! 
     
    431430 
    432431      tau_icebfr(:,:)   = 0._wp   ! landfast ice param only (clem: important to keep the init here) 
    433       cnd_ice   (:,:,:) = 0._wp   ! initialisation of the effective conductivity at the top of ice/snow (Jules coupling) 
     432      cnd_ice   (:,:,:) = 0._wp   ! initialisation: effective conductivity at the top of ice/snow (Jules coupling) 
     433      qtr_ice_bot(:,:,:) = 0._wp  ! initialization: part of solar radiation transmitted through the ice needed at least for outputs 
    434434      ! 
    435435      ! for control checks (ln_icediachk) 
  • NEMO/trunk/src/ICE/icethd.F90

    r9916 r9922  
    128128      CALL lbc_lnk( zfric, 'T',  1. ) 
    129129      ! 
    130       qtr_ice_bot(:,:,:) = 0._wp  ! initialization (part of solar radiation transmitted through the ice) 
    131  
    132130      !--------------------------------------------------------------------! 
    133131      ! Partial computation of forcing for the thermodynamic sea ice model 
     
    143141            !           !  temperature and turbulent mixing (McPhee, 1992) 
    144142            ! 
    145             ! --- Energy received in the lead, zqld is defined everywhere (J.m-2) --- ! 
     143            ! --- Energy received in the lead from atm-oce exchanges, zqld is defined everywhere (J.m-2) --- ! 
    146144            zqld =  tmask(ji,jj,1) * rdt_ice *  & 
    147145               &    ( ( 1._wp - at_i_b(ji,jj) ) * qsr_oce(ji,jj) * frq_m(ji,jj) +  & 
    148146               &      ( 1._wp - at_i_b(ji,jj) ) * qns_oce(ji,jj) + qemp_oce(ji,jj) ) 
    149147 
    150             ! --- Energy needed to bring ocean surface layer until its freezing (<0, J.m-2) --- ! 
    151             ! includes supercooling potential energy (>0) or "above-freezing" energy (<0) 
    152             zqfr = tmask(ji,jj,1) * rau0 * rcp * e3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ) 
    153  
    154             ! --- Above-freezing sensible heat content (J/m2 grid) 
    155             zqfr_neg = tmask(ji,jj,1) * rau0 * rcp * e3t_m(ji,jj) * MIN( ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ), 0._wp ) 
    156  
    157             ! --- Sensible ocean-to-ice heat flux (W/m2) 
    158             zfric_u      = MAX( SQRT( zfric(ji,jj) ), zfric_umin )  
     148            ! --- Energy needed to bring ocean surface layer until its freezing (mostly<0 but >0 if supercooling, J.m-2) --- ! 
     149            zqfr     = rau0 * rcp * e3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ) * tmask(ji,jj,1)  ! both < 0 (t_bo < sst) and > 0 (t_bo > sst) 
     150            zqfr_neg = MIN( zqfr , 0._wp )                                                                    ! only < 0 
     151 
     152            ! --- Sensible ocean-to-ice heat flux (mostly>0 but <0 if supercooling, W/m2) 
     153            zfric_u            = MAX( SQRT( zfric(ji,jj) ), zfric_umin )  
    159154            qsb_ice_bot(ji,jj) = rswitch * rau0 * rcp * zch  * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ! W.m-2 
    160155 
     
    380375         CALL tab_2d_1d( npti, nptidx(1:npti), qsr_ice_1d    (1:npti), qsr_ice (:,:,kl)     ) 
    381376         CALL tab_2d_1d( npti, nptidx(1:npti), qns_ice_1d    (1:npti), qns_ice (:,:,kl)     ) 
    382          CALL tab_2d_1d( npti, nptidx(1:npti), qtr_ice_bot_1d(1:npti), qtr_ice_bot (:,:,kl) ) 
    383377         CALL tab_2d_1d( npti, nptidx(1:npti), evap_ice_1d   (1:npti), evap_ice(:,:,kl)     ) 
    384378         CALL tab_2d_1d( npti, nptidx(1:npti), dqns_ice_1d   (1:npti), dqns_ice(:,:,kl)     ) 
  • NEMO/trunk/src/ICE/icethd_dh.F90

    r9916 r9922  
    8585 
    8686      REAL(wp), DIMENSION(jpij) ::   zqprec      ! energy of fallen snow                       (J.m-3) 
    87       REAL(wp), DIMENSION(jpij) ::   zq_su       ! heat for surface ablation                   (J.m-2) 
    88       REAL(wp), DIMENSION(jpij) ::   zq_bo       ! heat for bottom ablation                    (J.m-2) 
     87      REAL(wp), DIMENSION(jpij) ::   zq_top      ! heat for surface ablation                   (J.m-2) 
     88      REAL(wp), DIMENSION(jpij) ::   zq_bot      ! heat for bottom ablation                    (J.m-2) 
    8989      REAL(wp), DIMENSION(jpij) ::   zq_rema     ! remaining heat at the end of the routine    (J.m-2) 
    9090      REAL(wp), DIMENSION(jpij) ::   zf_tt       ! Heat budget to determine melting or freezing(W.m-2) 
     
    131131         ! 
    132132         DO ji = 1, npti 
    133             zq_su(ji)      = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) 
     133            zq_top(ji)     = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) 
    134134         END DO 
    135135         ! 
    136       CASE( np_jules_EMULE ) 
     136      CASE( np_jules_OFF , np_jules_EMULE ) 
    137137         ! 
    138138         DO ji = 1, npti 
    139139            zdum           = qns_ice_1d(ji) + qsr_ice_1d(ji) - qtr_ice_top_1d(ji) - qcn_ice_top_1d(ji) 
    140140            qml_ice_1d(ji) = zdum * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - rt0 ) ) 
    141             zq_su(ji)      = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) 
    142          END DO 
    143          ! 
    144       CASE( np_jules_OFF )  
    145          ! 
    146          DO ji = 1, npti 
    147             zdum           = qns_ice_1d(ji) + qsr_ice_1d(ji) - qtr_ice_top_1d(ji) - qcn_ice_top_1d(ji)  
    148             qml_ice_1d(ji) = zdum * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - rt0 ) ) 
    149             zq_su(ji)      = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) 
     141            zq_top(ji)     = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) 
    150142         END DO 
    151143         ! 
     
    154146      DO ji = 1, npti 
    155147         zf_tt(ji)         = qcn_ice_bot_1d(ji) + qsb_ice_bot_1d(ji) + fhld_1d(ji)  
    156          zq_bo(ji)         = MAX( 0._wp, zf_tt(ji) * rdt_ice ) 
     148         zq_bot(ji)        = MAX( 0._wp, zf_tt(ji) * rdt_ice ) 
    157149      END DO 
    158150 
     
    210202            ! --- melt of falling snow --- 
    211203            rswitch              = MAX( 0._wp , SIGN( 1._wp , zqprec(ji) - epsi20 ) ) 
    212             zdeltah       (ji,1) = - rswitch * zq_su(ji) / MAX( zqprec(ji) , epsi20 )   ! thickness change 
    213             zdeltah       (ji,1) = MAX( - zdh_s_pre(ji), zdeltah(ji,1) )                ! bound melting  
     204            zdeltah       (ji,1) = - rswitch * zq_top(ji) / MAX( zqprec(ji) , epsi20 )   ! thickness change 
     205            zdeltah       (ji,1) = MAX( - zdh_s_pre(ji), zdeltah(ji,1) )                 ! bound melting  
    214206            hfx_snw_1d    (ji)   = hfx_snw_1d    (ji) - zdeltah(ji,1) * a_i_1d(ji) * zqprec(ji)    * r1_rdtice   ! heat used to melt snow (W.m-2, >0) 
    215207            wfx_snw_sum_1d(ji)   = wfx_snw_sum_1d(ji) - rhosn         * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice   ! snow melting only = water into the ocean (then without snow precip), >0 
     
    217209            ! updates available heat + precipitations after melting 
    218210            dh_s_mlt (ji) = dh_s_mlt(ji) + zdeltah(ji,1) 
    219             zq_su    (ji) = MAX( 0._wp , zq_su (ji) + zdeltah(ji,1) * zqprec(ji) )       
     211            zq_top   (ji) = MAX( 0._wp , zq_top (ji) + zdeltah(ji,1) * zqprec(ji) )       
    220212            zdh_s_pre(ji) = zdh_s_pre(ji) + zdeltah(ji,1) 
    221213             
     
    240232      ! Snow melting 
    241233      ! ------------ 
    242       ! If heat still available (zq_su > 0), then melt more snow 
     234      ! If heat still available (zq_top > 0), then melt more snow 
    243235      zdeltah(1:npti,:) = 0._wp 
    244236      zdh_s_mel(1:npti) = 0._wp 
    245237      DO jk = 1, nlay_s 
    246238         DO ji = 1, npti 
    247             IF( zh_s(ji,jk) > 0._wp .AND. zq_su(ji) > 0._wp ) THEN 
     239            IF( zh_s(ji,jk) > 0._wp .AND. zq_top(ji) > 0._wp ) THEN 
    248240               ! 
    249241               rswitch          = MAX( 0._wp, SIGN( 1._wp, e_s_1d(ji,jk) - epsi20 ) ) 
    250                zdeltah  (ji,jk) = - rswitch * zq_su(ji) / MAX( e_s_1d(ji,jk), epsi20 )   ! thickness change 
    251                zdeltah  (ji,jk) = MAX( zdeltah(ji,jk) , - zh_s(ji,jk) )                  ! bound melting 
     242               zdeltah  (ji,jk) = - rswitch * zq_top(ji) / MAX( e_s_1d(ji,jk), epsi20 )   ! thickness change 
     243               zdeltah  (ji,jk) = MAX( zdeltah(ji,jk) , - zh_s(ji,jk) )                   ! bound melting 
    252244               zdh_s_mel(ji)    = zdh_s_mel(ji) + zdeltah(ji,jk) 
    253245                
     
    257249               ! updates available heat + thickness 
    258250               dh_s_mlt(ji)    = dh_s_mlt(ji) + zdeltah(ji,jk) 
    259                zq_su   (ji)    = MAX( 0._wp , zq_su (ji) + zdeltah(ji,jk) * e_s_1d(ji,jk) ) 
     251               zq_top  (ji)    = MAX( 0._wp , zq_top(ji) + zdeltah(ji,jk) * e_s_1d(ji,jk) ) 
    260252               h_s_1d  (ji)    = MAX( 0._wp , h_s_1d(ji) + zdeltah(ji,jk) ) 
    261253               zh_s    (ji,jk) = MAX( 0._wp , zh_s(ji,jk) + zdeltah(ji,jk) ) 
     
    349341               zdE            =    zEi - zEw                          ! Specific enthalpy difference < 0 
    350342                
    351                zfmdt          = - zq_su(ji) / zdE                     ! Mass flux to the ocean [kg/m2, >0] 
     343               zfmdt          = - zq_top(ji) / zdE                    ! Mass flux to the ocean [kg/m2, >0] 
    352344                
    353345               zdeltah(ji,jk) = - zfmdt * r1_rhoic                    ! Melt of layer jk [m, <0] 
     
    355347               zdeltah(ji,jk) = MIN( 0._wp , MAX( zdeltah(ji,jk) , - zh_i(ji,jk) ) )    ! Melt of layer jk cannot exceed the layer thickness [m, <0] 
    356348                
    357                zq_su(ji)      = MAX( 0._wp , zq_su(ji) - zdeltah(ji,jk) * rhoic * zdE ) ! update available heat 
     349               zq_top(ji)      = MAX( 0._wp , zq_top(ji) - zdeltah(ji,jk) * rhoic * zdE ) ! update available heat 
    358350                
    359351               dh_i_sum(ji)   = dh_i_sum(ji) + zdeltah(ji,jk)         ! Cumulate surface melt 
     
    515507                  zdE             = zEi - zEw                                                 ! Specific enthalpy difference   (J/kg, <0) 
    516508 
    517                   zfmdt           = - zq_bo(ji) / zdE                                         ! Mass flux x time step (kg/m2, >0) 
     509                  zfmdt           = - zq_bot(ji) / zdE                                        ! Mass flux x time step (kg/m2, >0) 
    518510 
    519511                  zdeltah(ji,jk)  = - zfmdt * r1_rhoic                                        ! Gross thickness change 
     
    521513                  zdeltah(ji,jk)  = MIN( 0._wp , MAX( zdeltah(ji,jk), - zh_i(ji,jk) ) )       ! bound thickness change 
    522514                   
    523                   zq_bo(ji)       = MAX( 0._wp , zq_bo(ji) - zdeltah(ji,jk) * rhoic * zdE )   ! update available heat. MAX is necessary for roundup errors 
    524  
    525                   dh_i_bom(ji)    = dh_i_bom(ji) + zdeltah(ji,jk)                            ! Update basal melt 
     515                  zq_bot(ji)      = MAX( 0._wp , zq_bot(ji) - zdeltah(ji,jk) * rhoic * zdE )  ! update available heat. MAX is necessary for roundup errors 
     516 
     517                  dh_i_bom(ji)    = dh_i_bom(ji) + zdeltah(ji,jk)                             ! Update basal melt 
    526518 
    527519                  zfmdt           = - zdeltah(ji,jk) * rhoic                                  ! Mass flux x time step > 0 
     
    556548      zdeltah(1:npti,:) = 0._wp ! important 
    557549      DO ji = 1, npti 
    558          zq_rema (ji)   = zq_su(ji) + zq_bo(ji)  
     550         zq_rema (ji)   = zq_top(ji) + zq_bot(ji)  
    559551         rswitch        = 1._wp - MAX( 0._wp, SIGN( 1._wp, - h_s_1d(ji) ) )   ! =1 if snow 
    560552         rswitch        = rswitch * MAX( 0._wp, SIGN( 1._wp, e_s_1d(ji,1) - epsi20 ) ) 
  • NEMO/trunk/src/ICE/iceupdate.F90

    r9916 r9922  
    109109         qt_atm_oi  (:,:)   = ( 1._wp - at_i_b(:,:) ) * ( qns_oce(:,:) + qsr_oce(:,:) ) + qemp_oce(:,:) 
    110110         qt_oce_ai  (:,:)   = ( 1._wp - at_i_b(:,:) ) *   qns_oce(:,:)                  + qemp_oce(:,:) 
    111          qtr_ice_bot(:,:,:) = 0._wp 
    112111         emp_ice    (:,:)   = 0._wp 
    113112         qemp_ice   (:,:)   = 0._wp 
Note: See TracChangeset for help on using the changeset viewer.