Changeset 3196 for trunk/LMDZ.PLUTO/libf


Ignore:
Timestamp:
Jan 31, 2024, 5:30:43 PM (11 months ago)
Author:
afalco
Message:

Pluto PCM:

Included N2 condensation from PLUTO.old & read haze aerosols.

AF

Location:
trunk/LMDZ.PLUTO/libf/phypluto
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.PLUTO/libf/phypluto/aeroptproperties.F90

    r3184 r3196  
    3838!     ==============================================================
    3939
    40 !     Local variables 
     40!     Local variables
    4141!     ---------------
    4242
     
    198198!      REAL :: omegaREFvis3d(ngrid,nlayer,naerkind)
    199199!      REAL :: omegaREFir3d(ngrid,nlayer,naerkind)
     200
     201      REAL :: minrad    ! minimal radius in table .dat radiustab (outside 0)
     202      REAL :: maxrad
    200203
    201204!     0. Allocate local saved arrays at firstcall
     
    246249        ALLOCATE(qsqrefIRb(L_NSPECTI,ngau,naerkind))
    247250        ALLOCATE(qrefIRb(ngau,naerkind))
    248        
     251
    249252        ALLOCATE(omegIRa(L_NSPECTI,ngau,naerkind))
    250253        ALLOCATE(omegrefIRa(ngau,naerkind))
     
    253256        ALLOCATE(gIRa(L_NSPECTI,ngau,naerkind))
    254257        ALLOCATE(gIRb(L_NSPECTI,ngau,naerkind))
    255        
     258
    256259        first_allocate=.false.
    257260      ENDIF ! of IF (first_allocate)
     
    317320           enddo
    318321        endif
     322
     323        ! check that radiustab (table.dat) cover the reffrad used for haze : iaer=1
     324        minrad=min(MINVAL(radiustab(1,1,1:nsize(1,1))),MINVAL(radiustab(1,2,1:nsize(1,2))))
     325        maxrad=min(MAXVAL(radiustab(1,1,1:nsize(1,1))),MAXVAL(radiustab(1,2,1:nsize(1,2))))
     326        IF ((MINVAL(reffrad).LE.minrad).OR.(MAXVAL(reffrad).GE.maxrad)) then
     327           WRITE(*,*) 'Warning: particle size in grid box #'
     328           WRITE(*,*) ig,' is too large to be used by the '
     329           WRITE(*,*) 'radiative transfer; please extend the '
     330           WRITE(*,*) 'interpolation grid to larger grain sizes.'
     331           WRITE(*,*) 'radiustab=',minrad,'-',maxrad
     332           WRITE(*,*) 'reffrad=',MINVAL(reffrad),'-',MAXVAL(reffrad)
     333           stop
     334        ENDIF
    319335
    320336        firstcall = .false.
     
    412428            qsqrefVISb(m,gausind,iaer)=                         &
    413429                    (1-kint)*QVISsQREF(m,iaer,radius_id) +      &
    414                     kint*QVISsQREF(m,iaer,radius_id+1)   
     430                    kint*QVISsQREF(m,iaer,radius_id+1)
    415431            omegVISb(m,gausind,iaer)=                           &
    416432                    (1-kint)*omegaVIS(m,iaer,radius_id) +       &
     
    500516                    EXP(-dista(j,1,iaer,idomain,gausind) *            &
    501517                    dista(j,1,iaer,idomain,gausind) *                 &
    502                     0.5e0/sizedistk2)/(radiusm-drad)                 
     518                    0.5e0/sizedistk2)/(radiusm-drad)
    503519                  dista(j,1,iaer,idomain,gausind) =                   &
    504520                    dista(j,1,iaer,idomain,gausind) /                 &
     
    540556!                     Convolution:
    541557                      qextVISgrid(j,1,m,iaer) =              &
    542                         qextVISgrid(j,1,m,iaer) +            & 
     558                        qextVISgrid(j,1,m,iaer) +            &
    543559                        weightgaus(gausind) *                &
    544560                        (                                    &
     
    609625                      (                                      &
    610626                      omegrefVISb(gausind,iaer) *            &
    611                       qrefVISb(gausind,iaer) *               & 
     627                      qrefVISb(gausind,iaer) *               &
    612628                      pi*radGAUSb(gausind,iaer,idomain) *    &
    613629                      radGAUSb(gausind,iaer,idomain) *       &
     
    622638
    623639                  qrefVISgrid(j,1,iaer)=qrefVISgrid(j,1,iaer) /          &
    624                                 normd(j,1,iaer,idomain)       
     640                                normd(j,1,iaer,idomain)
    625641                  qscatrefVISgrid(j,1,iaer)=qscatrefVISgrid(j,1,iaer) /  &
    626642                                normd(j,1,iaer,idomain)
     
    736752                      )
    737753                  ENDDO
    738  
     754
    739755                  qrefIRgrid(j,1,iaer)=qrefIRgrid(j,1,iaer) /          &
    740756                                normd(j,1,iaer,idomain)
     
    789805            omegaIR3d(ig,lg,m,iaer) =                              &
    790806                        k1*omegIRgrid(grid_i,1,m,iaer) +           &
    791                         k2*omegIRgrid(grid_i+1,1,m,iaer) 
    792             gIR3d(ig,lg,m,iaer) =                                  & 
     807                        k2*omegIRgrid(grid_i+1,1,m,iaer)
     808            gIR3d(ig,lg,m,iaer) =                                  &
    793809                        k1*gIRgrid(grid_i,1,m,iaer) +              &
    794810                        k2*gIRgrid(grid_i+1,1,m,iaer)
  • trunk/LMDZ.PLUTO/libf/phypluto/physiq_mod.F90

    r3195 r3196  
    14741474         enddo
    14751475
    1476          ! Generalised for arbitrary aerosols now. By LK
     1476         if (aerohaze) then
     1477            ! Generalised for arbitrary aerosols now. By LK
    14771478         reffcol(1:ngrid,1:naerkind)=0.0
    14781479            ! call n2_reffrad(ngrid,nlayer,nq,zq,reffrad(1,1,iaero_haze))
     
    14961497            ENDDO
    14971498         ENDDO
     1499         endif ! end of aerohaze
    14981500      endif ! end of 'tracer'
    14991501
Note: See TracChangeset for help on using the changeset viewer.