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

Changeset 1571


Ignore:
Timestamp:
2009-08-03T16:24:31+02:00 (15 years ago)
Author:
ctlod
Message:

Correct 3 bugs in LIM-3, see ticket: #505

Location:
trunk/NEMO/LIM_SRC_3
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/LIM_SRC_3/limitd_me.F90

    r1465 r1571  
    11691169         zdummy     , &    ! dummy argument 
    11701170         zdummy0    , &    ! dummy argument 
    1171          ztmelts    , &    ! ice melting point 
    1172          sm_newridge       ! new ridged ice salinity 
     1171         ztmelts           ! ice melting point 
     1172 
     1173      REAL(wp) ::   zsrdg2 
    11731174 
    11741175      CHARACTER (len=80) :: & 
     
    13641365            ! Salinity 
    13651366            !------------- 
    1366             smsw(ji,jj)       = sss_m(ji,jj) * vsw(ji,jj) * ridge_por  
    1367  
    1368             ! salinity of new ridge 
    1369             sm_newridge       = ( srdg1(ji,jj) + smsw(ji,jj) ) / vrdg2(ji,jj) 
    1370             zdummy            = sm_newridge * vrdg2(ji,jj) 
    1371             ! has to be smaller than s_i_max 
    1372             sm_newridge       = MIN( s_i_max, sm_newridge ) 
    1373  
    1374             ! salt flux due to ridge creation 
    1375             fsalt_rpo(ji,jj)  = fsalt_rpo(ji,jj) + &  
    1376                MAX ( zdummy - srdg2(ji,jj) , 0.0 )    & 
    1377                * rhoic / rdt_ice 
    1378  
    1379             ! sal times volume for new ridges 
    1380             srdg2(ji,jj)      = sm_newridge * vrdg2(ji,jj)  
    1381  
     1367            smsw(ji,jj)  = sss_m(ji,jj) * vsw(ji,jj) * rhoic / rau0       ! salt content of water frozen in voids 
     1368   
     1369            zsrdg2       = srdg1(ji,jj) + smsw(ji,jj)                     ! salt content of new ridge 
     1370   
     1371            srdg2(ji,jj) = MIN( s_i_max * vrdg2(ji,jj) , zsrdg2 )         ! impose a maximum salinity 
     1372                     
     1373            !                                                             ! excess of salt is flushed into the ocean 
     1374            fsalt_rpo(ji,jj) = fsalt_rpo(ji,jj) + ( zsrdg2 - srdg2(ji,jj) ) * rhoic / rdt_ice  
     1375   
    13821376            !------------------------------------             
    13831377            ! 3.6 Increment ridging diagnostics 
  • trunk/NEMO/LIM_SRC_3/limthd.F90

    r1565 r1571  
    105105         zareamin 
    106106 
    107       REAL(wp), DIMENSION(jpi,jpj) :: & 
    108          zhicifp            ,  &   ! ice thickness for outputs 
    109          zqlbsbq                   ! link with lead energy budget qldif 
     107      REAL(wp), DIMENSION(jpi,jpj) ::   zqlbsbq   ! link with lead energy budget qldif 
    110108 
    111109      !!------------------------------------------------------------------- 
     
    247245            !  calculate oceanic heat flux (limthd_dh) 
    248246            fbif   (ji,jj) = zindb * (  fsbbq(ji,jj) / MAX( at_i(ji,jj) , epsi20 ) + fdtcn(ji,jj) ) 
    249  
    250             ! computation of the daily thermodynamic ice production (only needed for output) 
    251             zhicifp(ji,jj) = ht_i(ji,jj,1) * at_i(ji,jj)  
    252             zhicifp(ji,jj) = ht_i(ji,jj,1) * at_i(ji,jj) 
     247            ! 
    253248         END DO 
    254249      END DO 
     
    326321            CALL tab_2d_1d( nbpb, qldif_1d   (1:nbpb)     , qldif      , jpi, jpj, npb(1:nbpb) ) 
    327322            CALL tab_2d_1d( nbpb, rdmicif_1d (1:nbpb)     , rdmicif    , jpi, jpj, npb(1:nbpb) ) 
     323            CALL tab_2d_1d( nbpb, rdmsnif_1d (1:nbpb)     , rdmsnif    , jpi, jpj, npb(1:nbpb) ) 
    328324            CALL tab_2d_1d( nbpb, dmgwi_1d   (1:nbpb)     , dmgwi      , jpi, jpj, npb(1:nbpb) ) 
    329325            CALL tab_2d_1d( nbpb, qlbbq_1d   (1:nbpb)     , zqlbsbq    , jpi, jpj, npb(1:nbpb) ) 
     
    397393            CALL tab_1d_2d( nbpb, qfvbq      , npb, qfvbq_1d  (1:nbpb)     , jpi, jpj ) 
    398394            CALL tab_1d_2d( nbpb, rdmicif    , npb, rdmicif_1d(1:nbpb)     , jpi, jpj ) 
     395            CALL tab_1d_2d( nbpb, rdmsnif    , npb, rdmsnif_1d(1:nbpb)     , jpi, jpj ) 
    399396            CALL tab_1d_2d( nbpb, dmgwi      , npb, dmgwi_1d  (1:nbpb)     , jpi, jpj ) 
    400             CALL tab_1d_2d( nbpb, rdmsnif    , npb, rdmsnif_1d(1:nbpb)     , jpi, jpj ) 
    401397            CALL tab_1d_2d( nbpb, rdvosif    , npb, dvsbq_1d  (1:nbpb)     , jpi, jpj ) 
    402398            CALL tab_1d_2d( nbpb, rdvobif    , npb, dvbbq_1d  (1:nbpb)     , jpi, jpj ) 
  • trunk/NEMO/LIM_SRC_3/limthd_dh.F90

    r1465 r1571  
    104104 
    105105      REAL(wp) ::            & 
     106         zzfmass_i ,         & 
     107         zzfmass_s ,         & 
    106108         zhsnew    ,         &  !: new snow thickness 
    107109         zihgnew   ,         &  !: switch for total ablation 
     
    141143      REAL(wp) , DIMENSION(jpij) :: & 
    142144         z_f_surf,           &  ! surface heat for ablation 
    143          zhgnew                 ! new ice thickness 
     145         zhgnew  ,           &  ! new ice thickness 
     146         zfmass_i 
    144147 
    145148      REAL(wp), DIMENSION(jpij) :: & 
     
    302305            - zdh_s_mel(ji) ) 
    303306         dvsbq_1d(ji)   =  MIN( zzero, dvsbq_1d(ji) ) 
    304          rdmsnif_1d(ji) =  rhosn*dvsbq_1d(ji) 
     307         rdmsnif_1d(ji) =  rdmsnif_1d(ji) + rhosn * dvsbq_1d(ji) 
    305308      END DO ! ji 
    306309 
     
    669672         ! Mass variations of ice and snow 
    670673         !--------------------------------- 
    671          rdmicif_1d(ji) =  rdmicif_1d(ji) + a_i_b(ji) *                        & 
    672             (zhgnew(ji)-ht_i_b(ji))*rhoic ! good 
    673  
    674          rdmsnif_1d(ji) =  rdmsnif_1d(ji) + a_i_b(ji) * & 
    675             (ht_s_b(ji)-zhni)*rhosn ! good too 
     674         ! 
     675         zzfmass_s = - a_i_b(ji) * ( zhni       - ht_s_b(ji) ) * rhosn   ! snow 
     676         zzfmass_i =   a_i_b(ji) * ( zhgnew(ji) - ht_i_b(ji) ) * rhoic   ! ice   
     677         ! 
     678         zfmass_i(ji) = zzfmass_i                       ! ice variation saved to compute salt flux (see below) 
     679         ! 
     680         !                                              ! mass variation cumulated over category 
     681         rdmsnif_1d(ji) = rdmsnif_1d(ji) + zzfmass_s                     ! snow  
     682         rdmicif_1d(ji) = rdmicif_1d(ji) + zzfmass_i                     ! ice  
    676683 
    677684         ! Remaining heat to the ocean  
     
    695702         IF ( num_sal .NE. 4 ) & 
    696703            fseqv_1d(ji)  = fseqv_1d(ji) + zihgnew * zfsalt_melt(ji) +           & 
    697             (1.0 - zihgnew) * rdmicif_1d(ji) *                  & 
     704            (1.0 - zihgnew) * zfmass_i(ji) *                  & 
    698705            ( sss_m(zji,zjj) - sm_i_b(ji) ) / rdt_ice 
    699706         ! new lines 
    700707         IF ( num_sal .EQ. 4 ) & 
    701708            fseqv_1d(ji)  = fseqv_1d(ji) + zihgnew * zfsalt_melt(ji) +           & 
    702             (1.0 - zihgnew) * rdmicif_1d(ji) *                  & 
     709            (1.0 - zihgnew) * zfmass_i(ji) *                  & 
    703710            ( sss_m(zji,zjj) - bulk_sal ) / rdt_ice 
    704711         ! Heat flux 
Note: See TracChangeset for help on using the changeset viewer.