Ignore:
Timestamp:
Feb 3, 2014, 9:39:45 AM (11 years ago)
Author:
sglmd
Message:

Calculation of the insolation for a flattened planet. New keyword flatten =(a-b)/a (default value =0.).

Location:
trunk/LMDZ.GENERIC/libf/phystd
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/libf/phystd/callkeys.h

    r1161 r1174  
    1212     &   , meanOLR, specOLR                                             &
    1313     &   , kastprof, Tstrat                                             &
    14      &   , nosurf, intheat                                              &     
     14     &   , nosurf, intheat, flatten                                     &     
    1515     &   , newtonian, tau_relax, testradtimes                           &
    1616     &   , check_cpp_match, force_cpp                                   &
     
    3030     &   , tracer, mass_redistrib, varactive, varfixed, satval          &
    3131     &   , sedimentation,water,watercond,waterrain                      &
    32      &   , aeroco2,aeroh2o,aeroh2so4,aeroback2lay                         &
     32     &   , aeroco2,aeroh2o,aeroh2so4,aeroback2lay, aeronh3              &
    3333     &   , aerofixco2,aerofixh2o                                        &
    3434     &   , hydrology, sourceevol, icetstep, albedosnow                  &
     
    4343      logical callrad,corrk,calldifv,UseTurbDiff                        &
    4444     &   , calladj,co2cond,callsoil                                     &
    45      &   , season,diurnal,tlocked,rings_shadow,lwrite                                &
     45     &   , season,diurnal,tlocked,rings_shadow,lwrite                   &
    4646     &   , callstats,calleofdump                                        &
    4747     &   , callgasvis,continuum,H2Ocont_simple,graybody                 &
     
    6969      logical water,watercond,waterrain
    7070      logical aeroco2,aeroh2o,aeroh2so4,aeroback2lay
    71       logical aerofixco2,aerofixh2o
     71      logical aerofixco2,aerofixh2o, aeronh3
    7272      logical hydrology
    7373      logical sourceevol
     
    107107      real icetstep
    108108      real intheat
     109      real flatten
  • trunk/LMDZ.GENERIC/libf/phystd/inifis.F

    r1155 r1174  
    158158         write(*,*) "rings_shadow = ", rings_shadow
    159159         
     160         write(*,*) "Flattening of the planet (a-b)/a ?"
     161         flatten = 0.0
     162         call getin("flatten", flatten)
     163         write(*,*) "flatten = ", flatten
     164         
    160165! Test of incompatibility:
    161166! if tlocked, then diurnal should be false
     
    448453         call getin("aeroback2lay",aeroback2lay)
    449454         write(*,*)" aeroback2lay = ",aeroback2lay
     455
     456         write(*,*)"Radiatively active ammonia cloud?"
     457         aeronh3=.false.     ! default value
     458         call getin("aeronh3",aeronh3)
     459         write(*,*)" aeronh3 = ",aeronh3
    450460
    451461         write(*,*)"TWOLAY AEROSOL: total optical depth ",
     
    665675         coslon(ig)=cos(plon(ig))
    666676      ENDDO
    667 
     677         
    668678      pi=2.*asin(1.) ! NB: pi is a common in comcstfi.h
    669679
  • trunk/LMDZ.GENERIC/libf/phystd/mucorr.F

    r1152 r1174  
    1       SUBROUTINE mucorr(npts,pdeclin, plat, pmu, pfract,phaut,prad)
     1      SUBROUTINE mucorr(npts,pdeclin, plat, pmu,pfract,phaut,prad,pflat)
    22      IMPLICIT NONE
    33
     
    3434      INTEGER npts
    3535      REAL plat(npts),pmu(npts), pfract(npts)
    36       REAL phaut,prad,pdeclin
     36      REAL phaut,prad,pdeclin, pflat
    3737c
    3838c     Local variables :
     
    4141      REAL pi
    4242      REAL z,cz,sz,tz,phi,cphi,sphi,tphi
    43       REAL ap,a,t,b, tp
     43      REAL ap,a,t,b, tp, rap
    4444      REAL alph
    4545
    4646c-----------------------------------------------------------------------
     47
     48c----- SG: geometry adapted to a flattened planet (Feb2014)
    4749
    4850      pi = 4. * atan(1.0)
     
    5052      cz = cos (z)
    5153      sz = sin (z)
     54      rap = 1./((1.-pflat)**2)
    5255
    5356      DO 20 j = 1, npts
     
    5962         tphi = sphi / cphi
    6063         b = cphi * cz
    61          t = -tphi * sz / cz
     64         t = -rap*tphi * sz / cz
    6265         a = 1.0 - t*t
    6366         ap = a
     
    7679         t = tp
    7780   
    78          pmu(j) = (sphi*sz*t) / pi + b*sin(t)/pi
     81         pmu(j) = (sphi*sz*t*rap) / pi + b*sin(t)/pi
    7982         pfract(j) = t / pi
    8083         IF (ap .lt.0.) then
    81             pmu(j) = sphi * sz
     84            pmu(j) = sphi * sz*rap
    8285            pfract(j) = 1.0
    8386         ENDIF
     
    8588         pmu(j) = pmu(j) / pfract(j)
    8689         IF (pmu(j).eq.0.) pfract(j) = 0.
     90
     91         pmu(j)=pmu(j)/SQRT(cphi**2 + (rap**2) * (sphi**2))
    8792
    8893   20 CONTINUE
  • trunk/LMDZ.GENERIC/libf/phystd/physiq.F90

    r1162 r1174  
    697697
    698698              call stelang(ngrid,sinlon,coslon,sinlat,coslat,    &
    699                ztim1,ztim2,ztim3,mu0,fract)
     699               ztim1,ztim2,ztim3,mu0,fract, flatten)
    700700
    701701           elseif (diurnal) then
     
    705705
    706706               call stelang(ngrid,sinlon,coslon,sinlat,coslat,    &
    707                ztim1,ztim2,ztim3,mu0,fract)
     707               ztim1,ztim2,ztim3,mu0,fract, flatten)
    708708           else if(diurnal .eq. .false.) then
    709709
    710                call mucorr(ngrid,declin,lati,mu0,fract,10000.,rad)
     710               call mucorr(ngrid,declin,lati,mu0,fract,10000.,rad,flatten)
    711711               ! WARNING: this function appears not to work in 1D
    712712
     
    736736                 
    737737                        call stelang(ngrid,sinlon,coslon,sinlat,coslat,    &
    738                                  ztim1,ztim2,ztim3,tmp_mu0,tmp_fract)
     738                                 ztim1,ztim2,ztim3,tmp_mu0,tmp_fract, flatten)
    739739                 
    740                         call rings(ngrid, declin, ptime_day, rad, 0., eclipse)
     740                        call rings(ngrid, declin, ptime_day, rad, flatten, eclipse)
    741741                 
    742742                        fract(:) = fract(:) + (1.-eclipse(:))*tmp_fract(:) !! fract prend en compte l'ombre des anneaux et l'alternance jour/nuit
     
    17671767           call writediagfi(ngrid,"GND","heat flux from ground","W m-2",2,fluxgrd)
    17681768           call writediagfi(ngrid,"DYN","dynamical heat input","W m-2",2,fluxdyn)
    1769         endif
     1769        endif
    17701770       
    17711771        if(enertest) then
  • trunk/LMDZ.GENERIC/libf/phystd/stelang.F

    r253 r1174  
    11      subroutine stelang(kgrid,psilon,pcolon,psilat,pcolat,
    2      &                    ptim1,ptim2,ptim3,pmu0,pfract )
     2     &                ptim1,ptim2,ptim3,pmu0,pfract, pflat)
    33      IMPLICIT NONE
    44
     
    6666C
    6767      INTEGER kgrid
    68       REAL ptim1,ptim2,ptim3
     68      REAL ptim1,ptim2,ptim3, pflat
    6969      REAL psilon(kgrid),pcolon(kgrid),pmu0(kgrid),pfract(kgrid)
    7070      REAL psilat(kgrid), pcolat(kgrid)
    7171C
    7272      INTEGER jl
    73       REAL ztim1,ztim2,ztim3
     73      REAL ztim1,ztim2,ztim3, rap
    7474C------------------------------------------------------------------------
    7575C------------------------------------------------------------------------
     
    8181C             --------------
    8282C
     83c----- SG: geometry adapted to a flattened planet (Feb2014)
     84
     85      rap = 1./((1.-pflat)**2)
     86
    8387 100  CONTINUE
    8488C
     
    9296C
    9397      DO jl=1,kgrid
    94         ztim1=psilat(jl)*ptim1
     98        ztim1=psilat(jl)*ptim1*rap
    9599        ztim2=pcolat(jl)*ptim2
    96100        ztim3=pcolat(jl)*ptim3
    97101        pmu0(jl)=ztim1+ztim2*pcolon(jl)+ztim3*psilon(jl)
     102        pmu0(jl)=pmu0(jl)/SQRT(pcolat(jl)**2 + (rap**2) * (psilat(jl)**2))
     103
    98104      ENDDO
    99105C
Note: See TracChangeset for help on using the changeset viewer.