Changeset 600 for trunk


Ignore:
Timestamp:
Mar 27, 2012, 5:02:10 PM (13 years ago)
Author:
jleconte
Message:
  • Corrects the computation of planck function at the surface in sfluxi

so that its integral is equal to sigma Tsurf4.

  • This ensure that no flux is lost due to:

-truncation of the planck function at high/low wavenumber
-numerical error during first spectral computation of the planck function
-discrepancy between Tsurf and NTS/NTfac in sfluxi

  • OLR now equal to LW net heating/cooling at equilibrium!
  • As much as possible, only the value of the stephan boltzmann constant defined in racommon_h (and the

corresponding variable, sigma) should be used. Now done in physics, vdifc and turbdiff.

Location:
trunk/LMDZ.GENERIC
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/README

    r597 r600  
    640640- Added .def files for a typical 1d earth case in deftank (dry case for the moment)
    641641- Corrects a bug on potential temperature calculation in physic
     642
     643== 27/03/2012 == JL
     644- Corrects the computation of planck function at the surface in sfluxi
     645     so that its integral is equal to sigma Tsurf^4.
     646- This ensure that no flux is lost due to:
     647     -truncation of the planck function at high/low wavenumber
     648     -numerical error during first spectral computation of the planck function
     649     -discrepancy between Tsurf and NTS/NTfac in sfluxi
     650- OLR now equal to LW net heating/cooling at equilibrium!
     651- As much as possible, only the value of the stephan boltzmann constant defined in racommon_h (and the
     652corresponding variable, sigma) should be used. Now done in physics, vdifc and turbdiff.
     653 
  • trunk/LMDZ.GENERIC/libf/phystd/callcorrk.F90

    r596 r600  
    702702      END DO
    703703     
    704       plevrad(1) = 0
     704      plevrad(1) = 0.
    705705      plevrad(2) = max(pgasmin,0.0001*plevrad(3))
    706706
     
    816816         fluxsurf_sw(ig) = real(fluxdnv(L_NLAYRAD))
    817817
    818 
    819818         if(fluxtop_dn(ig).lt.0.0)then
    820819            print*,'Achtung! fluxtop_dn has lost the plot!'
  • trunk/LMDZ.GENERIC/libf/phystd/comcstfi.h

    r253 r600  
    44      common/comcstfi/pi,rad,g,r,cpp,rcp,dtphys,daysec,mugaz,omeg
    55      common/comcstfi/avocado!,molrad,visc
    6 
     6     
    77      real pi,rad,g,r,cpp,rcp,dtphys,daysec,mugaz,omeg
    88      real avocado!,molrad,visc
  • trunk/LMDZ.GENERIC/libf/phystd/physiq.F90

    r597 r600  
    1010      use watercommon_h, only : mx_eau_sol, To, RLVTT, mH2O
    1111      use gases_h
     12      use radcommon_h, only: sigma
    1213      implicit none
    1314
     
    180181      save capcal,fluxgrd,dtrad,fluxrad,fluxrad_sky,qsurf
    181182
    182       real, parameter :: stephan = 5.67e-08 ! Stephan Boltzman constant (should really be elsewhere)
    183 
    184183! Local variables :
    185184! -----------------
     
    551550
    552551            if(ngrid.eq.1)then
    553                qzero1D               = 10000.0
     552               qzero1D               = 0.0
    554553               qsurf(1,igcm_h2o_vap) = qzero1D
    555554               do l=1, nlayer
     
    784783                 fluxsurf_sw(ig) = fluxtop_dn(ig)
    785784                 fluxrad_sky(ig) = fluxtop_dn(ig)*(1.-albedo(ig))
    786                  fluxtop_lw(ig)  = emis(ig)*stephan*tsurf(ig)**4
     785                 fluxtop_lw(ig)  = emis(ig)*sigma*tsurf(ig)**4
    787786              enddo ! radiation skips the atmosphere entirely
    788787
     
    803802        do ig=1,ngrid
    804803           zplanck(ig)=tsurf(ig)*tsurf(ig)
    805            zplanck(ig)=emis(ig)*stephan*zplanck(ig)*zplanck(ig)
     804           zplanck(ig)=emis(ig)*sigma*zplanck(ig)*zplanck(ig)
    806805           fluxrad(ig)=fluxrad_sky(ig)-zplanck(ig)
    807806        enddo
  • trunk/LMDZ.GENERIC/libf/phystd/sfluxi.F

    r543 r600  
    55
    66      use radinc_h
    7       use radcommon_h, only: planckir, tlimit
     7      use radcommon_h, only: planckir, tlimit,sigma
    88
    99      implicit none
     
    3333
    3434      real*8 fup_tmp(L_NSPECTI),fdn_tmp(L_NSPECTI)
     35      real*8 PLANCKSUM,PLANCKREF
    3536
    3637
     
    7273!      NTT   = TTOP *10.0D0-499
    7374
     75!JL12 corrects the surface planck function so that its integral is equal to sigma Tsurf^4
     76!JL12   this ensure that no flux is lost due to:
     77!JL12          -truncation of the planck function at high/low wavenumber
     78!JL12          -numerical error during first spectral integration
     79!JL12          -discrepancy between Tsurf and NTS/NTfac
     80      PLANCKSUM=0.d0
     81      PLANCKREF=TSURF*TSURF
     82      PLANCKREF=sigma*PLANCKREF*PLANCKREF
     83      DO NW=1,L_NSPECTI
     84         PLANCKSUM=PLANCKSUM+PLANCKIR(NW,NTS)*DWNI(NW)
     85      ENDDO
     86      PLANCKSUM=PLANCKREF/(PLANCKSUM*Pi)
     87!JL12
     88
    7489      DO 501 NW=1,L_NSPECTI
    7590
    7691C       SURFACE EMISSIONS - INDEPENDENT OF GAUSS POINTS
    77         BSURF = (1.-RSFI)*PLANCKIR(NW,NTS) ! interpolate for accuracy??
     92        BSURF = (1.-RSFI)*PLANCKIR(NW,NTS)*PLANCKSUM !JL12 plancksum see above
    7893        PLTOP = PLANCKIR(NW,NTT)
    7994
  • trunk/LMDZ.GENERIC/libf/phystd/turbdiff.F90

    r594 r600  
    88
    99      use watercommon_h, only : RLVTT, To, RCPD, mx_eau_sol
     10      use radcommon_h, only : sigma
    1011
    1112      implicit none
     
    123124      save ivap, iliq, iliq_surf,iice_surf
    124125
    125       real, parameter :: sigma=5.67e-8
    126126      real, parameter :: karman=0.4
    127127      real cd0, roughratio
  • trunk/LMDZ.GENERIC/libf/phystd/vdifc.F

    r594 r600  
    88
    99      use watercommon_h, only : RLVTT, To, RCPD, mx_eau_sol
     10      use radcommon_h, only : sigma
    1011
    1112      implicit none
     
    134135      save ivap, iice
    135136
    136       real, parameter :: sigma=5.67e-8
    137137      real, parameter :: karman=0.4
    138138      real cd0, roughratio
Note: See TracChangeset for help on using the changeset viewer.