Changeset 5544


Ignore:
Timestamp:
Feb 17, 2025, 1:29:29 PM (3 days ago)
Author:
jyg
Message:

Bug fix in cv3_routines.f90 (in cv3_unsat and cv3_yield) concerning water conservation.
And small improvement in the coding of ice fraction in convective precipitation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/cv3_routines.f90

    r5502 r5544  
    29072907    DO il = 1, ncum
    29082908      IF (i<=inb(il) .AND. lwork(il)) THEN
    2909         wdtrain(il) = grav*ep(il, i)*m(il, i)*clw(il, i)
    2910         wdtrainS(il, i) = wdtrain(il)/grav                                            !   Ps   jyg
    2911 !!        wdtrainA(il, i) = wdtrain(il)/grav                                          !   Ps   RomP
     2909        wdtrainS(il, i) = ep(il, i)*m(il, i)*clw(il, i)                               ! jyg
     2910!!jyg        wdtrain(il) = grav*ep(il, i)*m(il, i)*clw(il, i)
     2911!!jyg        wdtrainS(il, i) = wdtrain(il)/grav                                            !   Ps   jyg
     2912!!jyg        wdtrainA(il, i) = wdtrain(il)/grav                                          !   Ps   RomP
    29122913      END IF
    29132914    END DO
     
    29192920            awat = elij(il, j, i) - (1.-ep(il,i))*clw(il, i)
    29202921            awat = max(awat, 0.0)
    2921             wdtrain(il) = wdtrain(il) + grav*awat*ment(il, j, i)
    2922             wdtrainM(il, i) = wdtrain(il)/grav - wdtrainS(il, i)    !   Pm  jyg
    2923 !!            wdtrainM(il, i) = wdtrain(il)/grav - wdtrainA(il, i)  !   Pm  RomP
     2922            wdtrainM(il, i) = wdtrainM(il, i) + awat*ment(il, j, i)                   ! jyg
     2923!!jyg            wdtrain(il) = wdtrain(il) + grav*awat*ment(il, j, i)
     2924!!jyg            wdtrainM(il, i) = wdtrain(il)/grav - wdtrainS(il, i)    !   Pm  jyg
     2925!!jyg            wdtrainM(il, i) = wdtrain(il)/grav - wdtrainA(il, i)  !   Pm  RomP
    29242926          END IF
    29252927        END DO
     
    29382940              IF (i<=inb(il) .AND. lwork(il)) THEN
    29392941                wdtrainA(il,i) = ma(il, i+1)*(qta(il, i-1)-qta(il,i))/(1. - qta(il, i-1))    !   Pa   jygprl
    2940                 wdtrain(il) = wdtrain(il) + grav*wdtrainA(il,i)
     2942!!jyg                wdtrain(il) = wdtrain(il) + grav*wdtrainA(il,i)
    29412943              END IF
    29422944            END DO
     
    29492951              IF (i<=inb(il) .AND. lwork(il)) THEN
    29502952                wdtrainA(il,i) = ma(il, i+1)*(qta(il, i-1)-qta(il,i))                        !   Pa   jygprl
    2951                 wdtrain(il) = wdtrain(il) + grav*wdtrainA(il,i)
     2953!!jyg                wdtrain(il) = wdtrain(il) + grav*wdtrainA(il,i)
    29522954              END IF
    29532955            END DO
     
    29582960    ENDIF  ! (cvflag_prec_eject)
    29592961
     2962    IF ( i > 1) THEN
     2963      DO il = 1, ncum
     2964        IF (i<=inb(il) .AND. lwork(il)) THEN
     2965          wdtrain(il) = grav*(wdtrainS(il,i) + wdtrainM(il,i) + wdtrainA(il,i))
     2966        END IF
     2967      END DO
     2968    ENDIF  ! ( i > 1)
    29602969
    29612970! ***    find rain water and evaporation using provisional   ***
     
    31393148          ice(il, i) = ice(il, i) - fondue(il, i)
    31403149
    3141           IF (water(il,i)+ice(il,i)<1.E-30) THEN
    3142             faci(il, i) = 0.
    3143           ELSE
    3144             faci(il, i) = ice(il, i)/(water(il,i)+ice(il,i))
    3145           END IF
     3150!!          IF (water(il,i)+ice(il,i)<1.E-30) THEN
     3151!!            faci(il, i) = 0.
     3152!!          ELSE
     3153!!            faci(il, i) = ice(il, i)/(water(il,i)+ice(il,i))
     3154!!          END IF
     3155
     3156            faci(il,i) = ice(il, i)/max((water(il,i)+ice(il,i)), smallestreal)
    31463157
    31473158!           water(il,i)=water(il,i+1)+(1.-fraci(il,i))*e6+(1.-faci(il,i))*f6
     
    34233434! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    34243435
    3425 
    34263436  RETURN
    34273437
     
    35313541      REAL, DIMENSION (nloc, nd)                         :: sigment, qtment             ! cld
    35323542      REAL, DIMENSION (nloc, nd, nd)                     :: qdet
    3533       REAL sumdq !jyg
     3543!!      REAL sumdq !jyg
    35343544!
    35353545! -------------------------------------------------------------
     
    40074017! ***                      through each level                          ***
    40084018
    4009 
    40104019!jyg<
    40114020!!  DO i = 2, nl + 1 ! newvecto: mettre nl au lieu nl+1?
     
    40264035DO il = 1, ncum
    40274036   amp1(il) = upwd(il,i+1)
    4028    ad(il) = dnwd(il,i)
     4037!!jyg20250215   ad(il) = dnwd(il,i)
     4038   ad(il) = -dnwd(il,i)
    40294039ENDDO
    40304040!-----------------------------------------------------------
     
    43604370500 END DO
    43614371
    4362 !JYG<
    4363 !Conservation de l'eau
    4364 !   sumdq = 0.
    4365 !   DO k = 1, nl
    4366 !     sumdq = sumdq + fr(1, k)*100.*(ph(1,k)-ph(1,k+1))/grav
    4367 !   END DO
    4368 !   PRINT *, 'cv3_yield, apres 500, sum(dq), precip, somme ', sumdq, Vprecip(1, 1), sumdq + vprecip(1, 1)
    4369 !JYG>
     4372!!!JYG<
     4373!!!Conservation de l'eau
     4374!!   sumdq = 0.
     4375!!   DO k = 1, nl
     4376!!     sumdq = sumdq + fr(1, k)*100.*(ph(1,k)-ph(1,k+1))/grav
     4377!!   END DO
     4378!!   PRINT *, 'cv3_yield, apres 500, sum(dq), precip, somme ', sumdq, Vprecip(1, 1), sumdq + vprecip(1, 1)
     4379!!!JYG>
    43704380! ***   move the detrainment at level inb down to level inb-1   ***
    43714381! ***        in such a way as to preserve the vertically        ***
     
    44024412  END DO
    44034413
    4404 !JYG<
    4405 !Conservation de l'eau
    4406 !   sumdq = 0.
    4407 !   DO k = 1, nl
    4408 !     sumdq = sumdq + fr(1, k)*100.*(ph(1,k)-ph(1,k+1))/grav
    4409 !   END DO
    4410 !   PRINT *, 'cv3_yield, apres 503, sum(dq), precip, somme ', sumdq, Vprecip(1, 1), sumdq + vprecip(1, 1)
    4411 !JYG>
     4414!!!JYG<
     4415!!!Conservation de l'eau
     4416!!   sumdq = 0.
     4417!!   DO k = 1, nl
     4418!!     sumdq = sumdq + fr(1, k)*100.*(ph(1,k)-ph(1,k+1))/grav
     4419!!   END DO
     4420!!   PRINT *, 'cv3_yield, apres 503, sum(dq), precip, somme ', sumdq, Vprecip(1, 1), sumdq + vprecip(1, 1)
     4421!!!JYG>
    44124422
    44134423!AC!      do j=1,ntra
Note: See TracChangeset for help on using the changeset viewer.