Changeset 1484


Ignore:
Timestamp:
Oct 15, 2015, 2:35:35 PM (9 years ago)
Author:
mturbet
Message:

Harmonization of surface tracer tendencies calculation

Location:
trunk/LMDZ.GENERIC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/README

    r1483 r1484  
    10941094== 14/10/2015 == MT
    10951095- Cleanup of callcorrk.F90
     1096
     1097== 15/10/2015 == MT
     1098- Harmonization of the calculation of the surface tracer tendencies in physiq.F90.
  • trunk/LMDZ.GENERIC/libf/phystd/condense_co2.F90

    r1482 r1484  
    22          pcapcal,pplay,pplev,ptsrf,pt,                  &
    33          pphi,pdt,pdu,pdv,pdtsrf,pu,pv,pq,pdq,          &
    4           piceco2,albedo,pemisurf,                       &
     4          piceco2,pdqsurfc,albedo,pemisurf,              &
    55          albedo_bareground,albedo_co2_ice_SPECTV,       &
    66          pdtc,pdtsrfc,pdpsrf,pduc,pdvc,                 &
     
    8989      REAL,INTENT(OUT) :: pdvc(ngrid,nlayer)
    9090      REAL,INTENT(OUT) :: pdqc(ngrid,nlayer,nq)
     91      REAL,INTENT(OUT) :: pdqsurfc(ngrid)
    9192
    9293!-----------------------------------------------------------------------
     
    102103      REAL ztnuc (ngrid,nlayer)
    103104      REAL ztcondsol(ngrid)
    104       REAL zdiceco2(ngrid)
    105105      REAL zcondicea(ngrid,nlayer), zcondices(ngrid)
    106106      REAL zfallice(ngrid), Mfallice(ngrid)
     
    225225         pdpsrf(ig) = 0.
    226226         condsub(ig) = .false.
    227          zdiceco2(ig) = 0.
     227         pdqsurfc(ig) = 0.
    228228      ENDDO
    229229
     
    435435!     Changing CO2 ice amount and pressure
    436436
    437             zdiceco2(ig) = zcondices(ig) + zfallice(ig)
    438             piceco2(ig)  = piceco2(ig) + zdiceco2(ig)*ptimestep
    439             pdpsrf(ig)   = -zdiceco2(ig)*g
     437            pdqsurfc(ig) = zcondices(ig) + zfallice(ig)
     438            piceco2(ig)  = piceco2(ig) + pdqsurfc(ig)*ptimestep
     439            pdpsrf(ig)   = -pdqsurfc(ig)*g
    440440
    441441            IF(ABS(pdpsrf(ig)*ptimestep).GT.pplev(ig,1)) THEN
     
    461461         if(.not.piceco2(ig).ge.0.) THEN
    462462            if(piceco2(ig).le.-1.e-8) print*,   &
    463                 'WARNING in condense_co2cloud: piceco2(',ig,')=', piceco2(ig)
     463              'WARNING : in condense_co2cloud: piceco2(',ig,')=', piceco2(ig)
    464464            piceco2(ig)=0.
    465465         endif
    466          if (piceco2(ig) .gt. 1.) then  ! CO2 Albedo condition changed to 1 mm coverage. Change by MT2015.
     466         if (piceco2(ig) .gt. 1.) then  ! CO2 Albedo condition changed to ~1 mm coverage. Change by MT2015.
    467467            DO nw=1,L_NSPECTV
    468468               albedo(ig,nw) = albedo_co2_ice_SPECTV(nw)
     
    476476            pemisurf(ig)  = emissiv
    477477         end if
     478         
     479         piceco2(ig)  = piceco2(ig) - pdqsurfc(ig)*ptimestep ! This line was added so that tendencies are added outside the routine. MT2015.
     480         if(.not.piceco2(ig).ge.0.) THEN
     481            if(piceco2(ig).le.-1.e-8) print*,   &
     482              'WARNING 2 : in condense_co2cloud: piceco2(',ig,')=', piceco2(ig)
     483            piceco2(ig)=0.
     484         endif
     485         
    478486      end do
    479487
  • trunk/LMDZ.GENERIC/libf/phystd/hydrol.F90

    r1482 r1484  
    393393
    394394
    395       do ig=1,ngrid
    396          dqs_hyd(ig,iliq)=(zqsurf(ig,iliq) - qsurf(ig,iliq))/ptimestep
    397          dqs_hyd(ig,iice)=(zqsurf(ig,iice) - qsurf(ig,iice))/ptimestep
     395      do ig=1,ngrid ! We calculate here the tracer tendencies. Don't forget that we have to retrieve the dqsurf tendencies we added at the beginning of the routine !
     396         dqs_hyd(ig,iliq)=(zqsurf(ig,iliq) - qsurf(ig,iliq))/ptimestep - dqsurf(ig,iliq)
     397         dqs_hyd(ig,iice)=(zqsurf(ig,iice) - qsurf(ig,iice))/ptimestep - dqsurf(ig,iice)
    398398      enddo
    399399
  • trunk/LMDZ.GENERIC/libf/phystd/physiq.F90

    r1482 r1484  
    279279      ! For Surface Tracers : (kg/m2/s)
    280280      real dqsurf(ngrid,nq)                 ! Cumulated tendencies.
    281       real zdqslscale(ngrid,nq)             ! Largescale routine.
     281      real zdqsurfc(ngrid)                  ! Condense_co2 routine.
    282282      real zdqsdif(ngrid,nq)                ! Turbdiff/vdifc routines.
    283283      real zdqssed(ngrid,nq)                ! Callsedim routine.
     
    12001200                           capcal,pplay,pplev,tsurf,pt,                  &
    12011201                           pphi,pdt,pdu,pdv,zdtsurf,pu,pv,pq,pdq,        &
    1202                            qsurf(1,igcm_co2_ice),albedo,emis,            &
     1202                           qsurf(1:ngrid,igcm_co2_ice),zdqsurfc,         &
     1203                           albedo,emis,                                  &
    12031204                           albedo_bareground,albedo_co2_ice_SPECTV,      &
    12041205                           zdtc,zdtsurfc,pdpsrf,zduc,zdvc,               &
    12051206                           zdqc)
    12061207
    1207          pdt(1:ngrid,1:nlayer)=pdt(1:ngrid,1:nlayer)+zdtc(1:ngrid,1:nlayer)
    1208          pdv(1:ngrid,1:nlayer)=pdv(1:ngrid,1:nlayer)+zdvc(1:ngrid,1:nlayer)
    1209          pdu(1:ngrid,1:nlayer)=pdu(1:ngrid,1:nlayer)+zduc(1:ngrid,1:nlayer)
    1210          zdtsurf(1:ngrid) = zdtsurf(1:ngrid) + zdtsurfc(1:ngrid)
    1211 
    1212          pdq(1:ngrid,1:nlayer,1:nq)=pdq(1:ngrid,1:nlayer,1:nq)+ zdqc(1:ngrid,1:nlayer,1:nq)
     1208         pdt(1:ngrid,1:nlayer) = pdt(1:ngrid,1:nlayer)+zdtc(1:ngrid,1:nlayer)
     1209         pdv(1:ngrid,1:nlayer) = pdv(1:ngrid,1:nlayer)+zdvc(1:ngrid,1:nlayer)
     1210         pdu(1:ngrid,1:nlayer) = pdu(1:ngrid,1:nlayer)+zduc(1:ngrid,1:nlayer)
     1211         zdtsurf(1:ngrid)      = zdtsurf(1:ngrid) + zdtsurfc(1:ngrid)
     1212
     1213         pdq(1:ngrid,1:nlayer,1:nq)   = pdq(1:ngrid,1:nlayer,1:nq)+ zdqc(1:ngrid,1:nlayer,1:nq)
     1214         dqsurf(1:ngrid,igcm_co2_ice) = dqsurf(1:ngrid,igcm_co2_ice) + zdqsurfc(1:ngrid)
    12131215
    12141216         ! test energy conservation
     
    15031505                        sea_ice)
    15041506
    1505             zdtsurf(1:ngrid)    = zdtsurf(1:ngrid) + zdtsurf_hyd(1:ngrid)
    1506             qsurf(1:ngrid,1:nq) = qsurf(1:ngrid,1:nq) + ptimestep*dqs_hyd(1:ngrid,1:nq)
     1507            zdtsurf(1:ngrid)     = zdtsurf(1:ngrid) + zdtsurf_hyd(1:ngrid)
     1508            dqsurf(1:ngrid,1:nq) = dqsurf(1:ngrid,1:nq) + dqs_hyd(1:ngrid,1:nq)
     1509           
     1510            qsurf(1:ngrid,1:nq) = qsurf(1:ngrid,1:nq) + ptimestep*dqsurf(1:ngrid,1:nq)
    15071511
    15081512            ! Test energy conservation
     
    15251529         else ! of if (hydrology)
    15261530
    1527             qsurf(1:ngrid,1:nq)=qsurf(1:ngrid,1:nq)+ptimestep*dqsurf(1:ngrid,1:nq)
     1531            qsurf(1:ngrid,1:nq) = qsurf(1:ngrid,1:nq) + ptimestep*dqsurf(1:ngrid,1:nq)
    15281532
    15291533         end if ! of if (hydrology)
Note: See TracChangeset for help on using the changeset viewer.