Subject: NO cooling rates

From: [email-masked] (John Wise)
Date: Tue, 3 Sep 1996 18:00:48 -0400

Hi Ray (and Ben)
  I began to plot the NO cooling rates from the last TIME-GCM run and I
notice that the numbers run in the thousands (3000-5000).  Are these in deg
K/day?  That would seem to be awfully big.  Can you let me know the units?
I'm just looking for a sanity check...could I possibly have the wrong
files?
   Still on for next week as of today.

Regards
John

---

From: Ben Foster <foster>
Date: Wed, 4 Sep 1996 09:13:41 -0600 (MDT)

>    Still on for next week as of today.

John:

The cooling rates I gave you last month are not in deg/day. I can
rerun them in deg/day if you want. The conversion is 
cool = cool * 86400./f(i,ncpk), where f(i,ncpk) is specific
heat at the current grid point.

Below is an explanation of the NO cooling calculation and how
it is saved for the processor. (I think I sent you this last Feb).
Search on idpd, which was 0 in the runs I made for you last month.

Looking forward to your visit -- I will try to get modelproc up
on our new source control system before you arrive (9/9)?

--Ben

(see /vishnu/local/tgcm/tgcm20 for complete source of tgcm20. 
See ~foster/tgcmvis/modelproc/tgcm20/tgcm20_proc.mods and
 mod files in ~foster/tgcmvis/modelproc/tgcm20/cirris for modelproc mods)

------------------------------------------------------------------------
STEP 1 (in tgcm20 RADCOOL):

C
C     ****   NO COOL TO SPACE APPROXIMATION(SAME AS BEFORE)             
C     ****                                                              
      NMSK=NJ+NMS                                                       
      NCPK=NCP-1                                                        
      NTK=NJ+NT-1                                                       
      NPS1K=NJ+NPS-1                                                    
      NPS2K=NJ+NPS2-1                                                   
      NPO1K=NJ+NPO1-1                                                   
      NMSK=NJ+NMS-1                                                     
      NPCO2K=NJ+NPCO2-1                                                 
      NWTIK=NWTI-1                                                      
      NWTEK=NWTE-1                                                      
      NPNOK=NJ+NPNO-1                                                   
      DO 18 K=1,KMAX                                                    
        NCPK=NCPK+1                                                     
        NTK=NTK+1                                                       
        NPS1K=NPS1K+1                                                   
        NPS2K=NPS2K+1                                                   
        NPO1K=NPO1K+1                                                   
        NPCO2K=NPCO2K+1                                                 
        NMSK=NMSK+1                                                     
        NWTIK=NWTIK+1                                                   
        NWTEK=NWTEK+1                                                   
        NPNOK=NPNOK+1                                                   
        DO 18 I=1,LEN1                                                  
C         ****                                                          
C         ****     S10 = N(NO)/RHO                                      
C         ****                                                          
          S10(I,K)=C(85)*F(I,NPNOK)/RMNO                                
C         ****                                                          
C         ****     S11 = A(NO)                                          
C         ****                                                          
          S11(I,K)=.5*(F(I,NMSK)+F(I,NMSK+1))*C(85)*C(81)*EXPS(K)/      
     1      (C(57)*(F(I,NTK)+.5*(T0(K)+T0(K+1))))*(6.5E-11*F(I,NPO1K)/  
     2      RMASS(2)+2.4E-14*F(I,NPS1K)/RMASS(1))                       
C         ****                                                          
C         ****     FORM NO COOLING CONTRIBUTION IN S11                  
C         ****                                                          
          S11(I,K)=4.956E-12*S10(I,K)*(S11(I,K)/(S11(I,K)+13.3))*       
     1      EXP(-2700./F(I,NTK))                                        
C         ****                                                          
C         ****     FORM TOTAL COOLING TERMS IN NWTI AND NWTE            
C         ****                                                          
          F(I,NWTIK)=(2700.*S11(I,K)+960.*S12(I,K)+1500.*S13(I,K))/     
     1      (.5*(F(I,NCPK)+F(I,NCPK+1))*F(I,NTK)**2)                    
          F(I,NWTEK)=((1.-2700./F(I,NTK))*S11(I,K)+(1.-960./F(I,NTK))*  
     1      S12(I,K)+(1.-1500/F(I,NTK))*S13(I,K))*EXPS(K)               
   18 CONTINUE                                                          

------------------------------------------------------------------------
STEP 2: from ~/tgcmvis/modelproc/tgcm20/tgcm20_proc.mods:

*INSERT RADCOOL.195
c
c Save implicit and explicit cooling terms for modelproc:
c
         co2imp(i,k) = 960.*s12(i,k)/(.5*(f(i,ncpk)+f(i,ncpk+1))*
     +                 f(i,ntk)**2.)
         co2exp(i,k) = (1.-960./f(i,ntk))*s12(i,k)*exps(k)
         rnoimp(i,k) = 2700.*s11(i,k)/(.5*(f(i,ncpk)+f(i,ncpk+1))*
     +                 f(i,ntk)**2.)
         rnoexp(i,k) = (1.-2700./f(i,ntk))*s11(i,k)*exps(k)

------------------------------------------------------------------------
STEP 3: NO cooling is calculated and saved for modelproc at end of DT:

*INSERT DT.545
c
c Save cooling terms for concurrent model processors (in deg K per day 
c   if idpd > 0):
c (Use implicit and explicit no,co2, and o3p saved from NEWTO3P 
c  and RADCOOL (formerly NEWTON) in common /cool/)

[mods to save total radiative cooling and O3+ cooling are here]

c
c NO cooling:
c
          if (dctnry(n)(1:8).eq.'NOCOOL  '.and.
     +      (ipltf(n).gt.0.or.integ(n).gt.0)) then
            ncpk = ncp-1 
            ntnpk = njnp+nt-1
            do k=1,kmax
              ncpk = ncpk+1 
              ntnpk = ntnpk+1
              do i=1,imaxp4 
                s14(i,k) = rnoexp(i,k) / exps(k) + rnoimp(i,k) *
     +                     f(i,ncpk) * f(i,ntnpk)
              enddo
            enddo
            if (idpd.gt.0) then
              ncpk = ncp
              do i=1,len2
                s14(i,1) = s14(i,1) * 86400./f(i,ncpk)
              enddo  
            endif
            if (integ(n).gt.0) then
              s14(:,kmaxp1) = 0.
              nzk = nj+nz-1
              do k=1,kmax
                nzk = nzk+1
                do i=1,len1
                  s14(i,kmaxp1) = s14(i,kmaxp1) + rho(i,k) *
     +              (f(i,nzk+1)-f(i,nzk)) * s14(i,k)
                enddo
              enddo
              call savep(s14,ipoint(n),kmaxp1)
            else
              call savep(s14,ipoint(n),kmax)
            endif
          endif
        enddo