Ignore:
Timestamp:
Apr 9, 2020, 6:34:53 PM (5 years ago)
Author:
jvatant
Message:

Set the temperature boundaries and step for Planck function integration as input in callphys.def, for more flexibility.

+ User can now set them by tplanckmin, tplanckmax and dtplanck
+ Default values are a wide range 30-1500K
+ Add a sanity check in callcorrk instead of leaving out-of-bounds planckir indexes.

--JVO

File:
1 edited

Legend:

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

    r1397 r2283  
    2222!==================================================================
    2323
    24       use radinc_h,    only: L_NSPECTI,corrkdir,banddir,NTstar,NTstop,NTfac
     24      use radinc_h,    only: L_NSPECTI,corrkdir,banddir,NTstart,NTstop,NTfac
    2525      use radcommon_h, only: BWNI,BLAMI,WNOI,DWNI,WAVEI,planckir,sigma
    2626      use datafile_mod, only: datadir
     
    149149      print*,''
    150150      print*,'setspi: Current Planck integration range:'
    151       print*,'T = ',dble(NTstar)/NTfac, ' to ',dble(NTstop)/NTfac,' K.'
     151      print*,'T = ',dble(NTstart)/NTfac, ' to ',dble(NTstop)/NTfac,' K.'
     152
     153      IF(.NOT.ALLOCATED(planckir)) ALLOCATE(planckir(L_NSPECTI,NTstop-NTstart+1))
    152154
    153155      do NW=1,L_NSPECTI
     
    156158         bpa = (b+a)/2.0D0
    157159         bma = (b-a)/2.0D0
    158          do nt=NTstar,NTstop
     160         do nt=NTstart,NTstop
    159161            T   = dble(NT)/NTfac
    160162            ans = 0.0D0
     
    165167            end do
    166168
    167             planckir(NW,nt-NTstar+1) = ans*bma/(PI*DWNI(NW))
     169            planckir(NW,nt-NTstart+1) = ans*bma/(PI*DWNI(NW))
    168170         end do
    169171      end do
     
    172174      if(forceEC)then
    173175         print*,'setspi: Force F=sigma*eps*T^4 for all values of T!'
    174          do nt=NTstar,NTstop
     176         do nt=NTstart,NTstop
    175177            plancksum=0.0D0
    176178            T=dble(NT)/NTfac
     
    178180            do NW=1,L_NSPECTI
    179181               plancksum=plancksum+  &
    180                   planckir(NW,nt-NTstar+1)*DWNI(NW)*pi
     182                  planckir(NW,nt-NTstart+1)*DWNI(NW)*pi
    181183            end do
    182184
    183185            do NW=1,L_NSPECTI
    184                planckir(NW,nt-NTstar+1)=     &
    185                   planckir(NW,nt-NTstar+1)*  &
     186               planckir(NW,nt-NTstart+1)=     &
     187                  planckir(NW,nt-NTstart+1)*  &
    186188                          sigma*(dble(nt)/NTfac)**4/plancksum
    187189            end do
     
    192194         ! check energy conservation at lower temperature boundary
    193195         plancksum=0.0D0
    194          nt=NTstar
     196         nt=NTstart
    195197         do NW=1,L_NSPECTI
    196             plancksum=plancksum+planckir(NW,nt-NTstar+1)*DWNI(NW)*pi
     198            plancksum=plancksum+planckir(NW,nt-NTstart+1)*DWNI(NW)*pi
    197199         end do
    198200         print*,'setspi: At lower limit:'
     
    204206         nt=NTstop
    205207         do NW=1,L_NSPECTI
    206             plancksum=plancksum+planckir(NW,nt-NTstar+1)*DWNI(NW)*pi
     208            plancksum=plancksum+planckir(NW,nt-NTstart+1)*DWNI(NW)*pi
    207209         end do
    208210         print*,'setspi: At upper limit:'
Note: See TracChangeset for help on using the changeset viewer.