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 921 for trunk/NEMO/LIM_SRC_3/limthd_ent.F90 – NEMO

Ignore:
Timestamp:
2008-05-13T10:28:52+02:00 (16 years ago)
Author:
rblod
Message:

Correct indentation and print for debug in LIM3, see ticket #134, step I

File:
1 edited

Legend:

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

    r869 r921  
    4646CONTAINS 
    4747 
    48       SUBROUTINE lim_thd_ent(kideb,kiut,jl) 
     48   SUBROUTINE lim_thd_ent(kideb,kiut,jl) 
    4949      !!------------------------------------------------------------------- 
    5050      !!               ***   ROUTINE lim_thd_ent  *** 
     
    135135      REAL(wp), DIMENSION(jpij,0:jkmax+3) :: & 
    136136         zhl0                  ! old and new layer thicknesses 
    137   
     137 
    138138      REAL(wp), DIMENSION(0:jkmax+3,0:jkmax+3) :: & 
    139139         zrl01 
     
    144144         zqti_fin, zqts_fin 
    145145 
    146 !------------------------------------------------------------------------------| 
     146      !------------------------------------------------------------------------------| 
    147147 
    148148      zeps   = 1.0d-20 
     
    156156      z_s(:,:)     = 0.0 
    157157 
    158 ! 
    159 !------------------------------------------------------------------------------| 
    160 !  1) Grid                                                                     | 
    161 !------------------------------------------------------------------------------| 
    162 ! 
     158      ! 
     159      !------------------------------------------------------------------------------| 
     160      !  1) Grid                                                                     | 
     161      !------------------------------------------------------------------------------| 
     162      ! 
    163163      nlays0        = nlay_s 
    164164      nlayi0        = nlay_i 
     
    169169      ENDDO 
    170170 
    171 ! 
    172 !------------------------------------------------------------------------------| 
    173 !  2) Switches                                                                 | 
    174 !------------------------------------------------------------------------------| 
    175 ! 
     171      ! 
     172      !------------------------------------------------------------------------------| 
     173      !  2) Switches                                                                 | 
     174      !------------------------------------------------------------------------------| 
     175      ! 
    176176      ! 2.1 snind(ji), snswi(ji) 
    177177      ! snow surface behaviour : computation of snind(ji)-snswi(ji) 
     
    181181      !   2 if 2nd layer is melting ... 
    182182      DO ji = kideb, kiut 
    183         snind(ji)     = 0 
    184         zdeltah(ji)   = 0.0 
     183         snind(ji)     = 0 
     184         zdeltah(ji)   = 0.0 
    185185      ENDDO !ji 
    186186 
    187187      DO jk = 1, nlays0 
    188         DO ji = kideb, kiut 
    189            snind(ji)  = jk        *      INT(MAX(0.0,SIGN(1.0,-dh_s_tot(ji)-zdeltah(ji)-zeps))) & 
    190                       + snind(ji) * (1 - INT(MAX(0.0,SIGN(1.0,-dh_s_tot(ji)-zdeltah(ji)-zeps)))) 
    191            zdeltah(ji)= zdeltah(ji) + zh_s(ji) 
    192         END DO ! ji 
     188         DO ji = kideb, kiut 
     189            snind(ji)  = jk        *      INT(MAX(0.0,SIGN(1.0,-dh_s_tot(ji)-zdeltah(ji)-zeps))) & 
     190               + snind(ji) * (1 - INT(MAX(0.0,SIGN(1.0,-dh_s_tot(ji)-zdeltah(ji)-zeps)))) 
     191            zdeltah(ji)= zdeltah(ji) + zh_s(ji) 
     192         END DO ! ji 
    193193      ENDDO ! jk 
    194194 
     
    198198         snswi(ji)     = MAX(0,INT(-dh_s_tot(ji)/MAX(zeps,ABS(dh_s_tot(ji))))) 
    199199      ENDDO ! ji 
    200          
     200 
    201201      ! 2.2 icsuind(ji), icsuswi(ji) 
    202202      ! ice surface behaviour : computation of icsuind(ji)-icsuswi(ji) 
     
    206206      !     2 if 2nd layer is reached by melt ... 
    207207      DO ji = kideb, kiut 
    208         icsuind(ji)   = 0 
    209         zdeltah(ji)   = 0.0 
     208         icsuind(ji)   = 0 
     209         zdeltah(ji)   = 0.0 
    210210      ENDDO !ji 
    211211      DO jk = 1, nlayi0 
    212         DO ji = kideb, kiut 
    213           icsuind(ji) = jk          *      INT(MAX(0.0,SIGN(1.0,-dh_i_surf(ji)-zdeltah(ji)-zeps))) & 
    214                       + icsuind(ji) * (1 - INT(MAX(0.0,SIGN(1.0,-dh_i_surf(ji)-zdeltah(ji)-zeps)))) 
    215           zdeltah(ji) = zdeltah(ji) + zh_i(ji) 
    216         END DO ! ji 
     212         DO ji = kideb, kiut 
     213            icsuind(ji) = jk          *      INT(MAX(0.0,SIGN(1.0,-dh_i_surf(ji)-zdeltah(ji)-zeps))) & 
     214               + icsuind(ji) * (1 - INT(MAX(0.0,SIGN(1.0,-dh_i_surf(ji)-zdeltah(ji)-zeps)))) 
     215            zdeltah(ji) = zdeltah(ji) + zh_i(ji) 
     216         END DO ! ji 
    217217      ENDDO !jk 
    218218 
     
    232232      !            N+1 if all layers melt and that snow transforms into ice 
    233233      DO ji = kideb, kiut  
    234         icboind(ji)   = 0 
    235         zdeltah(ji)   = 0.0 
     234         icboind(ji)   = 0 
     235         zdeltah(ji)   = 0.0 
    236236      ENDDO 
    237237      DO jk = nlayi0, 1, -1 
    238         DO ji = kideb, kiut 
    239           icboind(ji) = (nlayi0+1-jk) & 
    240                       *      INT(MAX(0.0,SIGN(1.0,-dh_i_bott(ji)-zdeltah(ji)-zeps))) & 
    241                       + icboind(ji) & 
    242                       * (1 - INT(MAX(0.0,SIGN(1.0,-dh_i_bott(ji)-zdeltah(ji)-zeps))))  
    243           zdeltah(ji) = zdeltah(ji) + zh_i(ji) 
    244         END DO 
     238         DO ji = kideb, kiut 
     239            icboind(ji) = (nlayi0+1-jk) & 
     240               *      INT(MAX(0.0,SIGN(1.0,-dh_i_bott(ji)-zdeltah(ji)-zeps))) & 
     241               + icboind(ji) & 
     242               * (1 - INT(MAX(0.0,SIGN(1.0,-dh_i_bott(ji)-zdeltah(ji)-zeps))))  
     243            zdeltah(ji) = zdeltah(ji) + zh_i(ji) 
     244         END DO 
    245245      ENDDO 
    246246 
     
    248248         ! case of total ablation with remaining snow 
    249249         IF ( ( ht_i_b(ji) .GT. zeps ) .AND. & 
    250               ( ht_i_b(ji) - dh_snowice(ji) .LT. zeps ) ) icboind(ji) = nlay_i + 1 
     250            ( ht_i_b(ji) - dh_snowice(ji) .LT. zeps ) ) icboind(ji) = nlay_i + 1 
    251251      END DO 
    252252 
     
    265265      !     2 if penultiem layer ... 
    266266      DO ji = kideb, kiut 
    267         snicind(ji)   = 0 
    268         zdeltah(ji)   = 0.0 
     267         snicind(ji)   = 0 
     268         zdeltah(ji)   = 0.0 
    269269      ENDDO 
    270270      DO jk = nlays0, 1, -1 
    271         DO ji = kideb, kiut 
    272           snicind(ji) = (nlays0+1-jk) & 
    273                       *      INT(MAX(0.0,SIGN(1.0,dh_snowice(ji)-zdeltah(ji)-zeps))) & 
    274                       + snicind(ji) & 
    275                       * (1 - INT(MAX(0.0,SIGN(1.0,dh_snowice(ji)-zdeltah(ji)-zeps)))) 
    276           zdeltah(ji) = zdeltah(ji) + zh_s(ji) 
    277         END DO 
     271         DO ji = kideb, kiut 
     272            snicind(ji) = (nlays0+1-jk) & 
     273               *      INT(MAX(0.0,SIGN(1.0,dh_snowice(ji)-zdeltah(ji)-zeps))) & 
     274               + snicind(ji) & 
     275               * (1 - INT(MAX(0.0,SIGN(1.0,dh_snowice(ji)-zdeltah(ji)-zeps)))) 
     276            zdeltah(ji) = zdeltah(ji) + zh_s(ji) 
     277         END DO 
    278278      ENDDO 
    279279 
     
    282282      !     0 if not 
    283283      DO ji = kideb, kiut 
    284         snicswi(ji)   = MAX(0,INT(dh_snowice(ji)/MAX(zeps,ABS(dh_snowice(ji))))) 
    285       ENDDO 
    286  
    287 ! 
    288 !------------------------------------------------------------------------------| 
    289 !  3) Snow redistribution                                                      | 
    290 !------------------------------------------------------------------------------| 
    291 ! 
     284         snicswi(ji)   = MAX(0,INT(dh_snowice(ji)/MAX(zeps,ABS(dh_snowice(ji))))) 
     285      ENDDO 
     286 
     287      ! 
     288      !------------------------------------------------------------------------------| 
     289      !  3) Snow redistribution                                                      | 
     290      !------------------------------------------------------------------------------| 
     291      ! 
    292292      !------------- 
    293293      ! Old profile 
     
    303303 
    304304      DO ji = kideb, kiut 
    305         nbot0(ji)          =  nlays0  + 1 - snind(ji) + ( 1. - snicind(ji) ) * & 
    306                               snicswi(ji) 
    307         ! cotes of the top of the layers 
    308         zm0(ji,0)          =  0.0 
    309         maxnbot0           =  MAX ( maxnbot0 , nbot0(ji) ) 
    310       ENDDO  
     305         nbot0(ji)          =  nlays0  + 1 - snind(ji) + ( 1. - snicind(ji) ) * & 
     306            snicswi(ji) 
     307         ! cotes of the top of the layers 
     308         zm0(ji,0)          =  0.0 
     309         maxnbot0           =  MAX ( maxnbot0 , nbot0(ji) ) 
     310      ENDDO 
    311311      IF( lk_mpp ) CALL mpp_max( maxnbot0, kcom=ncomm_ice ) 
    312312 
    313313      DO jk = 1, maxnbot0 
    314         DO ji = kideb, kiut 
    315         !change 
    316            limsum      = ( 1 - snswi(ji) ) * ( jk - 1 ) +                      & 
    317                                snswi(ji) * ( jk + snind(ji) - 1 ) 
    318            limsum      = MIN( limsum , nlay_s ) 
    319            zm0(ji,jk)  =  dh_s_tot(ji) + zh_s(ji) * limsum 
    320         END DO 
     314         DO ji = kideb, kiut 
     315            !change 
     316            limsum      = ( 1 - snswi(ji) ) * ( jk - 1 ) +                      & 
     317               snswi(ji) * ( jk + snind(ji) - 1 ) 
     318            limsum      = MIN( limsum , nlay_s ) 
     319            zm0(ji,jk)  =  dh_s_tot(ji) + zh_s(ji) * limsum 
     320         END DO 
    321321      ENDDO 
    322322 
    323323      DO ji = kideb, kiut 
    324324         zm0(ji,nbot0(ji)) =  dh_s_tot(ji) - snicswi(ji) * dh_snowice(ji) + & 
    325                               zh_s(ji) * nlays0 
     325            zh_s(ji) * nlays0 
    326326         zm0(ji,1)         =  dh_s_tot(ji) * (1 -snswi(ji) ) +              & 
    327                               snswi(ji) * zm0(ji,1) 
     327            snswi(ji) * zm0(ji,1) 
    328328      ENDDO 
    329329 
    330330      DO jk = ntop0, maxnbot0 
    331         DO ji = kideb, kiut 
    332         ! layer thickness 
    333            zthick0(ji,jk)  =  zm0(ji,jk) - zm0(ji,jk-1) 
    334         END DO 
     331         DO ji = kideb, kiut 
     332            ! layer thickness 
     333            zthick0(ji,jk)  =  zm0(ji,jk) - zm0(ji,jk-1) 
     334         END DO 
    335335      ENDDO 
    336336 
    337337      zqts_in(:) = 0.0 
    338        
    339       DO ji = kideb, kiut 
    340         ! layer heat content 
    341         qm0(ji,1)   =  rhosn * ( cpic * ( rtt - ( 1. - snswi(ji) ) * ( tatm_ice_1d(ji) ) & 
    342                                             - snswi(ji) * t_s_b(ji,1) )         & 
    343                                + lfus ) * zthick0(ji,1) 
    344         zqts_in(ji) =  zqts_in(ji) + qm0(ji,1)  
     338 
     339      DO ji = kideb, kiut 
     340         ! layer heat content 
     341         qm0(ji,1)   =  rhosn * ( cpic * ( rtt - ( 1. - snswi(ji) ) * ( tatm_ice_1d(ji) ) & 
     342            - snswi(ji) * t_s_b(ji,1) )         & 
     343            + lfus ) * zthick0(ji,1) 
     344         zqts_in(ji) =  zqts_in(ji) + qm0(ji,1)  
    345345      ENDDO 
    346346 
    347347      DO jk = 2, maxnbot0 
    348         DO ji = kideb, kiut 
    349           limsum      = ( 1 - snswi(ji) ) * ( jk - 1 ) +                      & 
    350                                 snswi(ji) * ( jk + snind(ji) - 1 ) 
    351           limsum      = MIN( limsum , nlay_s ) 
    352           qm0(ji,jk)  = rhosn * ( cpic * ( rtt - t_s_b(ji,limsum) ) + lfus )  & 
    353                       * zthick0(ji,jk) 
    354           zswitch = 1.0 - MAX (0.0, SIGN ( 1.0, zeps - ht_s_b(ji) ) ) 
    355           zqts_in(ji) = zqts_in(ji) + ( 1. - snswi(ji) ) * qm0(ji,jk) * zswitch 
    356         END DO ! jk 
     348         DO ji = kideb, kiut 
     349            limsum      = ( 1 - snswi(ji) ) * ( jk - 1 ) +                      & 
     350               snswi(ji) * ( jk + snind(ji) - 1 ) 
     351            limsum      = MIN( limsum , nlay_s ) 
     352            qm0(ji,jk)  = rhosn * ( cpic * ( rtt - t_s_b(ji,limsum) ) + lfus )  & 
     353               * zthick0(ji,jk) 
     354            zswitch = 1.0 - MAX (0.0, SIGN ( 1.0, zeps - ht_s_b(ji) ) ) 
     355            zqts_in(ji) = zqts_in(ji) + ( 1. - snswi(ji) ) * qm0(ji,jk) * zswitch 
     356         END DO ! jk 
    357357      ENDDO ! ji 
    358358 
     
    362362      ! zqsnow, enthalpy of the flooded snow 
    363363      DO ji = kideb, kiut 
    364         zqsnow(ji)     =  rhosn*lfus 
    365         zdeltah(ji)    =  0.0 
     364         zqsnow(ji)     =  rhosn*lfus 
     365         zdeltah(ji)    =  0.0 
    366366      ENDDO 
    367367 
    368368      DO jk =  nlays0, 1, -1 
    369         DO ji = kideb, kiut 
    370            zhsnow      =  MAX(0.0,dh_snowice(ji)-zdeltah(ji)) 
    371            zqsnow(ji)  =  zqsnow(ji) + & 
    372                           rhosn*cpic*(rtt-t_s_b(ji,jk)) 
    373            zdeltah(ji) =  zdeltah(ji) + zh_s(ji) 
    374         END DO 
     369         DO ji = kideb, kiut 
     370            zhsnow      =  MAX(0.0,dh_snowice(ji)-zdeltah(ji)) 
     371            zqsnow(ji)  =  zqsnow(ji) + & 
     372               rhosn*cpic*(rtt-t_s_b(ji,jk)) 
     373            zdeltah(ji) =  zdeltah(ji) + zh_s(ji) 
     374         END DO 
    375375      ENDDO 
    376376 
     
    398398 
    399399      DO jk = 1, nlay_s 
    400         DO ji = kideb, kiut 
    401            z_s(ji,jk) =  zh_s(ji) * jk 
    402         END DO 
     400         DO ji = kideb, kiut 
     401            z_s(ji,jk) =  zh_s(ji) * jk 
     402         END DO 
    403403      ENDDO 
    404404 
     
    407407      !----------------- 
    408408      DO layer0 = ntop0, maxnbot0 
    409         DO ji = kideb, kiut 
    410            zhl0(ji,layer0) = zm0(ji,layer0) - zm0(ji,layer0-1) 
    411         END DO 
     409         DO ji = kideb, kiut 
     410            zhl0(ji,layer0) = zm0(ji,layer0) - zm0(ji,layer0-1) 
     411         END DO 
    412412      ENDDO 
    413413 
    414414      DO layer1 = ntop1, nbot1 
    415         DO ji = kideb, kiut 
    416            q_s_b(ji,layer1)= 0.0 
    417         END DO 
     415         DO ji = kideb, kiut 
     416            q_s_b(ji,layer1)= 0.0 
     417         END DO 
    418418      ENDDO 
    419419 
     
    422422      !---------------- 
    423423      DO layer0 = ntop0, maxnbot0 
    424         DO layer1 = ntop1, nbot1 
    425            DO ji = kideb, kiut 
    426               zrl01(layer1,layer0) = MAX(0.0,( MIN(zm0(ji,layer0),z_s(ji,layer1)) & 
    427               - MAX(zm0(ji,layer0-1), z_s(ji,layer1-1)))/MAX(zhl0(ji,layer0),epsi10))  
    428               q_s_b(ji,layer1) = q_s_b(ji,layer1) + zrl01(layer1,layer0)*qm0(ji,layer0) & 
    429                                    * MAX(0.0,SIGN(1.0,nbot0(ji)-layer0+zeps)) 
    430            END DO 
    431         END DO 
     424         DO layer1 = ntop1, nbot1 
     425            DO ji = kideb, kiut 
     426               zrl01(layer1,layer0) = MAX(0.0,( MIN(zm0(ji,layer0),z_s(ji,layer1)) & 
     427                  - MAX(zm0(ji,layer0-1), z_s(ji,layer1-1)))/MAX(zhl0(ji,layer0),epsi10))  
     428               q_s_b(ji,layer1) = q_s_b(ji,layer1) + zrl01(layer1,layer0)*qm0(ji,layer0) & 
     429                  * MAX(0.0,SIGN(1.0,nbot0(ji)-layer0+zeps)) 
     430            END DO 
     431         END DO 
    432432      ENDDO 
    433433 
     
    441441 
    442442      IF ( con_i ) THEN 
    443       DO ji = kideb, kiut 
    444          IF ( ABS ( zqts_in(ji) - zqts_fin(ji) ) / rdt_ice .GT. 1.0e-6 ) THEN 
    445             zji                 = MOD( npb(ji) - 1, jpi ) + 1 
    446             zjj                 = ( npb(ji) - 1 ) / jpi + 1 
    447             WRITE(numout,*) ' violation of heat conservation : ',             & 
    448                             ABS ( zqts_in(ji) - zqts_fin(ji) ) / rdt_ice 
    449             WRITE(numout,*) ' ji, jj   : ', zji, zjj 
    450             WRITE(numout,*) ' ht_s_b   : ', ht_s_b(ji) 
    451             WRITE(numout,*) ' zqts_in  : ', zqts_in(ji) / rdt_ice 
    452             WRITE(numout,*) ' zqts_fin : ', zqts_fin(ji) / rdt_ice 
    453             WRITE(numout,*) ' dh_snowice : ', dh_snowice(ji) 
    454             WRITE(numout,*) ' dh_s_tot : ', dh_s_tot(ji) 
    455             WRITE(numout,*) ' snswi    : ', snswi(ji) 
    456          ENDIF 
    457       END DO 
     443         DO ji = kideb, kiut 
     444            IF ( ABS ( zqts_in(ji) - zqts_fin(ji) ) / rdt_ice .GT. 1.0e-6 ) THEN 
     445               zji                 = MOD( npb(ji) - 1, jpi ) + 1 
     446               zjj                 = ( npb(ji) - 1 ) / jpi + 1 
     447               WRITE(numout,*) ' violation of heat conservation : ',             & 
     448                  ABS ( zqts_in(ji) - zqts_fin(ji) ) / rdt_ice 
     449               WRITE(numout,*) ' ji, jj   : ', zji, zjj 
     450               WRITE(numout,*) ' ht_s_b   : ', ht_s_b(ji) 
     451               WRITE(numout,*) ' zqts_in  : ', zqts_in(ji) / rdt_ice 
     452               WRITE(numout,*) ' zqts_fin : ', zqts_fin(ji) / rdt_ice 
     453               WRITE(numout,*) ' dh_snowice : ', dh_snowice(ji) 
     454               WRITE(numout,*) ' dh_s_tot : ', dh_s_tot(ji) 
     455               WRITE(numout,*) ' snswi    : ', snswi(ji) 
     456            ENDIF 
     457         END DO 
    458458      ENDIF 
    459459 
     
    473473      zfac2 = lfus / cpic   
    474474      DO jk = 1, nlay_s 
    475         DO ji = kideb, kiut 
    476            zswitch = MAX ( 0.0 , SIGN ( 1.0, zeps - ht_s_b(ji) ) ) 
    477            t_s_b(ji,jk) = rtt                                                  & 
    478                         + ( 1.0 - zswitch ) *                                  & 
    479                           ( - zfac1 * q_s_b(ji,jk) + zfac2 ) 
    480         END DO 
    481       ENDDO 
    482 ! 
    483 !------------------------------------------------------------------------------| 
    484 !  4) Ice redistribution                                                       | 
    485 !------------------------------------------------------------------------------| 
    486 ! 
     475         DO ji = kideb, kiut 
     476            zswitch = MAX ( 0.0 , SIGN ( 1.0, zeps - ht_s_b(ji) ) ) 
     477            t_s_b(ji,jk) = rtt                                                  & 
     478               + ( 1.0 - zswitch ) *                                  & 
     479               ( - zfac1 * q_s_b(ji,jk) + zfac2 ) 
     480         END DO 
     481      ENDDO 
     482      ! 
     483      !------------------------------------------------------------------------------| 
     484      !  4) Ice redistribution                                                       | 
     485      !------------------------------------------------------------------------------| 
     486      ! 
    487487      !------------- 
    488488      ! OLD PROFILE  
     
    496496 
    497497      DO ji = kideb, kiut 
    498         ! reference number of the bottommost layer 
     498         ! reference number of the bottommost layer 
    499499         nbot0(ji)    =  MAX( 1 ,  MIN( nlayi0 + ( 1 - icboind(ji) ) +        & 
    500                          ( 1 - icsuind(ji) ) * icsuswi(ji) + snicswi(ji) ,    & 
    501                          nlay_i + 2 ) ) 
     500            ( 1 - icsuind(ji) ) * icsuswi(ji) + snicswi(ji) ,    & 
     501            nlay_i + 2 ) ) 
    502502         ! maximum reference number of the bottommost layer over all domain 
    503503         maxnbot0     =  MAX( maxnbot0 , nbot0(ji) ) 
     
    508508      !------------------------- 
    509509      zm0(:,0)    =  0.0 
    510        
     510 
    511511      DO jk = 1, maxnbot0 
    512512         DO ji = kideb, kiut 
     
    515515            ! limsum is the real ice layer number corresponding to present jk 
    516516            limsum    =  ( (icsuswi(ji)*(icsuind(ji)+jk-1) + &  
    517                            (1-icsuswi(ji))*jk))*(1-snicswi(ji)) + (jk-1)*snicswi(ji) 
     517               (1-icsuswi(ji))*jk))*(1-snicswi(ji)) + (jk-1)*snicswi(ji) 
    518518            zm0(ji,jk)=  icsuswi(ji)*dh_i_surf(ji) + snicswi(ji)*dh_snowice(ji) & 
    519                       +  limsum * zh_i(ji) 
     519               +  limsum * zh_i(ji) 
    520520         END DO 
    521521      ENDDO 
     
    523523      DO ji = kideb, kiut 
    524524         zm0(ji,nbot0(ji)) =  icsuswi(ji)*dh_i_surf(ji) + snicswi(ji)*dh_snowice(ji) + dh_i_bott(ji) & 
    525                            +  zh_i(ji) * nlayi0 
     525            +  zh_i(ji) * nlayi0 
    526526         zm0(ji,1)         =  snicswi(ji)*dh_snowice(ji) + (1-snicswi(ji))*zm0(ji,1) 
    527527      ENDDO 
     
    531531      !----------------------------- 
    532532      DO jk = ntop0, maxnbot0 
    533         DO ji = kideb, kiut 
    534            zthick0(ji,jk) =  zm0(ji,jk) - zm0(ji,jk-1) 
    535         END DO 
     533         DO ji = kideb, kiut 
     534            zthick0(ji,jk) =  zm0(ji,jk) - zm0(ji,jk-1) 
     535         END DO 
    536536      ENDDO 
    537537 
     
    545545         DO ji = kideb, kiut 
    546546            limsum =  MAX(1,MIN(snicswi(ji)*(jk-1) + icsuswi(ji)*(jk-1+icsuind(ji)) + & 
    547                                 (1-icsuswi(ji))*(1-snicswi(ji))*jk,nlay_i)) 
     547               (1-icsuswi(ji))*(1-snicswi(ji))*jk,nlay_i)) 
    548548            ztmelts = -tmut * s_i_b(ji,limsum) + rtt 
    549549            qm0(ji,jk) = rhoic * ( cpic * (ztmelts-t_i_b(ji,limsum)) + lfus * ( 1.0-(ztmelts-rtt)/ & 
    550                       MIN((t_i_b(ji,limsum)-rtt),-zeps) ) - rcp*(ztmelts-rtt) ) & 
    551                       * zthick0(ji,jk) 
     550               MIN((t_i_b(ji,limsum)-rtt),-zeps) ) - rcp*(ztmelts-rtt) ) & 
     551               * zthick0(ji,jk) 
    552552         END DO 
    553553      ENDDO 
     
    557557      !---------------------------- 
    558558      DO ji = kideb, kiut         
    559         ztmelts    = ( 1.0 - icboswi(ji) ) * (-tmut * s_i_b(ji,nlayi0)) &   ! case of melting ice 
    560                    +      icboswi(ji)      * (-tmut * s_i_new(ji))      &   ! case of forming ice 
    561                    + rtt                        ! this temperature is in Celsius 
    562  
    563         ! bottom formation temperature 
    564         ztform = t_i_b(ji,nlay_i) 
    565         IF ( ( num_sal .EQ. 2 ) .OR. ( num_sal .EQ. 4 ) ) ztform = t_bo_b(ji) 
    566         qm0(ji,nbot0(ji)) = ( 1.0 - icboswi(ji) )*qm0(ji,nbot0(ji)) &   ! case of melting ice 
    567                    + icboswi(ji) *                                  &   ! case of forming ice 
    568                      rhoic*( cpic*(ztmelts-ztform)                  & 
    569                            + lfus *( 1.0-(ztmelts-rtt)/             & 
    570                              MIN ( (ztform-rtt) , - epsi10 ) )      &  
    571                            - rcp*(ztmelts-rtt) )                    & 
    572                     *zthick0(ji,nbot0(ji)) 
     559         ztmelts    = ( 1.0 - icboswi(ji) ) * (-tmut * s_i_b(ji,nlayi0)) &   ! case of melting ice 
     560            +      icboswi(ji)      * (-tmut * s_i_new(ji))      &   ! case of forming ice 
     561            + rtt                        ! this temperature is in Celsius 
     562 
     563         ! bottom formation temperature 
     564         ztform = t_i_b(ji,nlay_i) 
     565         IF ( ( num_sal .EQ. 2 ) .OR. ( num_sal .EQ. 4 ) ) ztform = t_bo_b(ji) 
     566         qm0(ji,nbot0(ji)) = ( 1.0 - icboswi(ji) )*qm0(ji,nbot0(ji)) &   ! case of melting ice 
     567            + icboswi(ji) *                                  &   ! case of forming ice 
     568            rhoic*( cpic*(ztmelts-ztform)                  & 
     569            + lfus *( 1.0-(ztmelts-rtt)/             & 
     570            MIN ( (ztform-rtt) , - epsi10 ) )      &  
     571            - rcp*(ztmelts-rtt) )                    & 
     572            *zthick0(ji,nbot0(ji)) 
    573573      ENDDO 
    574574 
     
    579579         ! energy of the flooding seawater 
    580580         zqsnic = rau0 * rcp * ( rtt - t_bo_b(ji) ) * dh_snowice(ji) * & 
    581                   (rhoic - rhosn) / rhoic * snicswi(ji) ! generally positive 
     581            (rhoic - rhosn) / rhoic * snicswi(ji) ! generally positive 
    582582         ! Heat conservation diagnostic 
    583583         qt_i_in(ji,jl) = qt_i_in(ji,jl) + zqsnic  
     
    593593 
    594594      DO jk = ntop0, maxnbot0 
    595         DO ji = kideb, kiut 
    596            ! Heat conservation 
    597            zqti_in(ji) = zqti_in(ji) + qm0(ji,jk) & 
    598                        * MAX( 0.0 , SIGN(1.0,ht_i_b(ji)-zeps6+zeps) ) & 
    599                        * MAX( 0.0 , SIGN( 1. , nbot0(ji) - jk + zeps ) ) 
    600         END DO 
     595         DO ji = kideb, kiut 
     596            ! Heat conservation 
     597            zqti_in(ji) = zqti_in(ji) + qm0(ji,jk) & 
     598               * MAX( 0.0 , SIGN(1.0,ht_i_b(ji)-zeps6+zeps) ) & 
     599               * MAX( 0.0 , SIGN( 1. , nbot0(ji) - jk + zeps ) ) 
     600         END DO 
    601601      ENDDO 
    602602 
     
    616616      !------------------ 
    617617      DO ji = kideb, kiut 
    618         zh_i(ji)      = ht_i_b(ji) / nlay_i 
     618         zh_i(ji)      = ht_i_b(ji) / nlay_i 
    619619      ENDDO 
    620620 
     
    624624      z_i(:,0) =  0.0 
    625625      DO jk = 1, nlay_i 
    626         DO ji = kideb, kiut 
    627            z_i(ji,jk) =  zh_i(ji) * jk 
    628         END DO 
     626         DO ji = kideb, kiut 
     627            z_i(ji,jk) =  zh_i(ji) * jk 
     628         END DO 
    629629      ENDDO 
    630630 
    631631      !--thicknesses of the layers 
    632632      DO layer0 = ntop0, maxnbot0 
    633         DO ji = kideb, kiut 
    634            zhl0(ji,layer0)   =  zm0(ji,layer0) - zm0(ji,layer0-1) !thicknesses of the layers 
    635         END DO 
     633         DO ji = kideb, kiut 
     634            zhl0(ji,layer0)   =  zm0(ji,layer0) - zm0(ji,layer0-1) !thicknesses of the layers 
     635         END DO 
    636636      ENDDO 
    637637 
     
    642642      q_i_b(:,:) = 0.0 
    643643      DO layer0 = ntop0, maxnbot0 
    644         DO layer1 = ntop1, nbot1 
    645            DO ji = kideb, kiut 
    646               zrl01(layer1,layer0) = MAX(0.0,( MIN(zm0(ji,layer0),z_i(ji,layer1)) & 
    647               - MAX(zm0(ji,layer0-1), z_i(ji,layer1-1)))/MAX(zhl0(ji,layer0),epsi10)) 
    648               q_i_b(ji,layer1) = q_i_b(ji,layer1) &  
    649                                + zrl01(layer1,layer0)*qm0(ji,layer0) & 
    650                                * MAX(0.0,SIGN(1.0,ht_i_b(ji)-zeps6+zeps)) & 
    651                                * MAX(0.0,SIGN(1.0,nbot0(ji)-layer0+zeps)) 
    652            END DO 
    653         END DO 
     644         DO layer1 = ntop1, nbot1 
     645            DO ji = kideb, kiut 
     646               zrl01(layer1,layer0) = MAX(0.0,( MIN(zm0(ji,layer0),z_i(ji,layer1)) & 
     647                  - MAX(zm0(ji,layer0-1), z_i(ji,layer1-1)))/MAX(zhl0(ji,layer0),epsi10)) 
     648               q_i_b(ji,layer1) = q_i_b(ji,layer1) &  
     649                  + zrl01(layer1,layer0)*qm0(ji,layer0) & 
     650                  * MAX(0.0,SIGN(1.0,ht_i_b(ji)-zeps6+zeps)) & 
     651                  * MAX(0.0,SIGN(1.0,nbot0(ji)-layer0+zeps)) 
     652            END DO 
     653         END DO 
    654654      ENDDO 
    655655 
     
    663663         END DO 
    664664      END DO 
    665 ! 
     665      ! 
    666666      DO ji = kideb, kiut 
    667667         IF ( ABS ( zqti_in(ji) - zqti_fin(ji) ) / rdt_ice .GT. 1.0e-6 ) THEN 
     
    669669            zjj                 = ( npb(ji) - 1 ) / jpi + 1 
    670670            WRITE(numout,*) ' violation of heat conservation : ',             & 
    671                             ABS ( zqti_in(ji) - zqti_fin(ji) ) / rdt_ice 
     671               ABS ( zqti_in(ji) - zqti_fin(ji) ) / rdt_ice 
    672672            WRITE(numout,*) ' ji, jj   : ', zji, zjj 
    673673            WRITE(numout,*) ' ht_i_b   : ', ht_i_b(ji) 
     
    700700      END DO 
    701701 
    702 ! 
    703 !------------------------------------------------------------------------------| 
    704 !  5) Update salinity and recover temperature                                  | 
    705 !------------------------------------------------------------------------------| 
    706 ! 
     702      ! 
     703      !------------------------------------------------------------------------------| 
     704      !  5) Update salinity and recover temperature                                  | 
     705      !------------------------------------------------------------------------------| 
     706      ! 
    707707      ! Update salinity (basal entrapment, snow ice formation) 
    708708      DO ji = kideb, kiut 
    709709         sm_i_b(ji) = sm_i_b(ji)                                & 
    710                     + dsm_i_se_1d(ji) + dsm_i_si_1d(ji) 
     710            + dsm_i_se_1d(ji) + dsm_i_si_1d(ji) 
    711711      END DO !ji 
    712712 
     
    720720            zaaa         =  cpic 
    721721            zbbb         =  ( rcp - cpic ) * ( ztmelts - rtt ) + & 
    722                             q_i_b(ji,jk) / rhoic - lfus 
     722               q_i_b(ji,jk) / rhoic - lfus 
    723723            zccc         =  lfus * ( ztmelts - rtt ) 
    724724            zdiscrim     =  SQRT( MAX(zbbb*zbbb - 4.0*zaaa*zccc,0.0) ) 
    725725            t_i_b(ji,jk) =  rtt - ( zbbb + zdiscrim ) / &  
    726                                   ( 2.0 *zaaa ) 
     726               ( 2.0 *zaaa ) 
    727727         END DO !ji 
    728728 
    729729      END DO !jk 
    730730 
    731       END SUBROUTINE lim_thd_ent 
     731   END SUBROUTINE lim_thd_ent 
    732732 
    733733#else 
     
    740740   END SUBROUTINE lim_thd_ent 
    741741#endif 
    742  END MODULE limthd_ent 
     742END MODULE limthd_ent 
Note: See TracChangeset for help on using the changeset viewer.