Ignore:
Timestamp:
Dec 21, 2011, 10:09:07 AM (13 years ago)
Author:
rwordsworth
Message:

Variable ice timestep added for ice evolution algorithm.
Sedimentation improved to allow consistent dust (L. Kerber).
Bug linked to allocatable matrices removed from rcm1d.F.
Treatment of initial aerosol radii in callcorrk.F90 improved.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/libf/phystd/callcorrk.F90

    r471 r486  
    211211!     Effective radius and variance of the aerosols
    212212
    213 !     CO2 ice:
    214          DO l=1,nlayer
    215             DO ig=1,ngrid
    216                reffrad(ig,l,1)  = 1.e-4
    217                nueffrad(ig,l,1) = 0.1
     213         do iaer=1,naerkind
    218214!     these values will change once the microphysics gets to work
    219215!     UNLESS tracer=.false., in which case we should be working with
    220216!     a fixed aerosol layer, and be able to define reffrad in a
    221217!     .def file. To be improved!
    222             ENDDO
    223          ENDDO
    224 
    225 !     H2O ice:
    226          if(naerkind.eq.2)then
    227             DO l=1,nlayer
    228                DO ig=1,ngrid
    229                   reffrad(ig,l,naerkind)  = 1.e-5
    230                   nueffrad(ig,l,naerkind) = 0.1
    231                ENDDO 
    232             ENDDO
    233          endif
     218
     219            if(iaer.eq.1)then ! CO2 ice
     220               do l=1,nlayer
     221                  do ig=1,ngrid
     222                     reffrad(ig,l,iaer)  = 1.e-4
     223                     nueffrad(ig,l,iaer) = 0.1
     224                  enddo
     225               enddo
     226            endif
     227
     228            if(iaer.eq.2)then ! H2O ice
     229               do l=1,nlayer
     230                  do ig=1,ngrid
     231                     reffrad(ig,l,iaer)  = 1.e-5
     232                     nueffrad(ig,l,iaer) = 0.1
     233                  enddo
     234               enddo
     235            endif
     236
     237            if(iaer.eq.3)then ! dust
     238               do l=1,nlayer
     239                  do ig=1,ngrid
     240                     reffrad(ig,l,iaer)  = 1.e-5
     241                     nueffrad(ig,l,iaer) = 0.1
     242                  enddo
     243               enddo
     244            endif
     245 
     246            if(iaer.gt.3)then
     247               print*,'Error in callcorrk, naerkind is too high.'
     248               print*,'The code still needs generalisation to arbitrary'
     249               print*,'aerosol kinds and number.'
     250               call abort
     251            endif
     252
     253         enddo
    234254
    235255         print*, "callcorrk: Correlated-k data base folder:",trim(datadir)
     
    248268         Cmk= 0.01 * 1.0 / (g * mugaz * 1.672621e-27) ! q_main=1.0 assumed
    249269
    250 
    251270         if((igcm_h2o_vap.eq.0) .and. varactive)then
    252271            print*,'varactive in callcorrk but no h2o_vap tracer.'
     
    268287         enddo
    269288      enddo
    270 
    271289
    272290      if(kastprof)then
     
    426444               end do
    427445
    428 
    429446!     longwave
    430447               DO nw=1,L_NSPECTI
     
    465482               end do
    466483            end do
    467 
    468484
    469485            ! test / correct for freaky s. s. albedo values
     
    515531            !tauaero(L_LEVELS+1,iaer) = 0.
    516532         end do
    517          !print*,'Note changed tauaero BCs in callcorrk!'
    518533
    519534!     Albedo and emissivity
     
    533548         acosz=mu0(ig)          ! cosine of sun incident angle
    534549      endif
    535 
    536550
    537551!-----------------------------------------------------------------------
     
    591605      end do
    592606
    593 
    594 
    595607!-----------------------------------------------------------------------
    596608!     kcm mode only
    597609      if(kastprof)then
    598610
     611         ! initial values equivalent to mugaz
    599612         DO l=1,nlayer
    600613            muvarrad(2*l)   = mugaz
     
    602615         END DO
    603616
    604          do k=1,L_LEVELS
    605             qvar(k) = 0.0
    606          end do
    607          print*,'ASSUMING qH2O=0 EVERYWHERE IN CALLCORRK!'
     617         !do k=1,L_LEVELS
     618         !   qvar(k) = 0.0
     619         !end do
     620         !print*,'ASSUMING qH2O=0 EVERYWHERE IN CALLCORRK!'
    608621      endif
    609622
     
    633646         qvar(2*nlayermx+1)=qsurf(ig,i_var)*muvar(ig,1)/mH2O
    634647
    635 
    636       endif
    637 
     648      endif
    638649
    639650      ! Keep values inside limits for which we have radiative transfer coefficients
     
    678689      tmid(L_LEVELS) = tlevrad(L_LEVELS)
    679690
    680 
    681691      ! test for out-of-bounds pressure
    682692      if(plevrad(3).lt.pgasmin)then
     
    695705            print*,'Minimum temperature is outside the radiative'
    696706            print*,'transfer kmatrix bounds, exiting.'
    697             print*,'WARNING, OVERRIDING FOR TEST'
    698             !call abort
     707            !print*,'WARNING, OVERRIDING FOR TEST'
     708            call abort
    699709         elseif(tlevrad(k).gt.tgasmax)then
    700710            print*,'Maximum temperature is outside the radiative'
    701711            print*,'transfer kmatrix bounds, exiting.'
    702             print*,'WARNING, OVERRIDING FOR TEST'
    703             !print*, 'T=',pt
    704             !call abort
     712            !print*,'WARNING, OVERRIDING FOR TEST'
     713            call abort
    705714         endif
    706715      enddo
     
    735744                 tmid,pmid,taugsurf,qvar,muvarrad)
    736745
    737 
    738746            call sfluxv(dtauv,tauv,taucumv,albv,dwnv,wbarv,cosbv,  &
    739747                 acosz,stel_fract,gweight,                         &
    740748                 nfluxtopv,nfluxoutv_nu,nfluxgndv_nu,              &
    741                  !acosz,stel_fract,gweight,nfluxtopv,nfluxgndv_nu,  &
    742749                 fmnetv,fluxupv,fluxdnv,fzerov,taugsurf)
    743750
     
    753760         end if
    754761
    755 
    756 
    757 
    758762!-----------------------------------------------------------------------
    759763!     Longwave
     
    846850      if(specOLR)then
    847851        if(ngrid.ne.1)then
    848           !call writediagspecIR(ngrid,"OLR3D","OLR(lon,lat,band)","W m^-2",3,OLR_nu)
    849           !call writediagspecVI(ngrid,"OSR3D","OSR(lon,lat,band)","W m^-2",3,OSR_nu)
     852          call writediagspecIR(ngrid,"OLR3D","OLR(lon,lat,band)","W m^-2",3,OLR_nu)
     853          call writediagspecVI(ngrid,"OSR3D","OSR(lon,lat,band)","W m^-2",3,OSR_nu)
    850854        endif
    851855      endif
     
    892896      endif
    893897
    894       !!! see physiq.F for explanations about CLFvarying. This is temporary.
     898      ! see physiq.F for explanations about CLFvarying. This is temporary.
    895899      if (lastcall .and. .not.CLFvarying) then
    896900        IF( ALLOCATED( gasi ) ) DEALLOCATE( gasi )
Note: See TracChangeset for help on using the changeset viewer.