source: trunk/LMDZ.VENUS/libf/phyvenus/hrtherm.F @ 3835

Last change on this file since 3835 was 3835, checked in by ikovalenko, 3 weeks ago
File size: 4.1 KB
Line 
1c**********************************************************************
2
3      subroutine hrtherm(ig,euvmod,rm,nespeuv,tx,iz,zenit,jtot)
4
5
6c     feb 2002        fgg           first version
7c     nov 2002        fgg           second version
8
9c**********************************************************************
10      use dimphy
11      use param_v4_h, only: ninter,nabs,jfotsout,fluxtop,freccen
12      use clesphys_mod
13
14      implicit none
15
16c     common variables and constants
17
18
19c#include "clesphys.h"
20
21
22c    local parameters and variables
23
24      real       xabsi(nabs,klev)                       !densities (cm^-3)
25      real       jergs(ninter,nabs,klev)
26     
27      integer    i,j,k,indexint          !indexes
28      character  dn
29
30
31c     input and output variables
32
33      integer    ig  ,euvmod
34      integer    nespeuv
35      real       rm(klev,nespeuv)              !density matrix (cm^-3)
36      real       jtot(klev)                    !output: heating rate(erg/s cm3)
37      real       tx(klev)                      !temperature
38      real       zenit
39      real       iz(klev)
40
41      ! tracer indexes for the EUV heating:
42!!! ATTENTION. These values have to be identical to those in euvheat.F90
43!!! If the values are changed there, the same has to be done here  !!!
44
45!      integer,parameter :: i_co2=1
46!      integer,parameter :: i_n2=13
47!      integer,parameter :: i_n=14
48!      integer,parameter :: i_o=3
49!      integer,parameter :: i_co=4
50
51      integer,parameter :: ix_co2  =  1
52      integer,parameter :: ix_co   =  2
53      integer,parameter :: ix_o    =  3
54      integer,parameter :: ix_o1d  =  4
55      integer,parameter :: ix_o2   =  5
56      integer,parameter :: ix_o3   =  6
57      integer,parameter :: ix_h    =  7
58      integer,parameter :: ix_h2   =  8
59      integer,parameter :: ix_oh   =  9
60      integer,parameter :: ix_ho2  = 10
61      integer,parameter :: ix_h2o2 = 11
62      integer,parameter :: ix_h2o  = 12
63      integer,parameter :: ix_n    = 13
64      integer,parameter :: ix_n2d  = 14
65      integer,parameter :: ix_no   = 15
66      integer,parameter :: ix_no2  = 16
67      integer,parameter :: ix_n2   = 17
68
69c*************************PROGRAM STARTS*******************************
70
71      !If nighttime, photoabsorption coefficient set to 0
72      if(zenit.gt.90.) then  !140 in the martian routine
73         dn='n'
74         else
75         dn='d'
76      end if
77      if(dn.eq.'n') then
78        do i=1,klev                                   
79              jtot(i)=0.
80        enddo       
81        return
82      endif
83
84      !initializations
85      jergs(:,:,:)=0.
86      xabsi(:,:)=0.
87      jtot(:)=0.
88      !All number densities to a single array, xabsi(species,layer)
89      ! WARNING xabs(nabs,nlev), j=1,nabs --> the values of j should
90      !         be the same for xabs than for jfotsout(indexint,j,i)
91      !
92      do i=1,klev
93         xabsi(1,i)  = rm(i,ix_co2)    ! CO2
94         xabsi(2,i)  = rm(i,ix_o2)     ! O2
95         xabsi(3,i)  = rm(i,ix_o)      ! O(3P)
96         xabsi(4,i)  = rm(i,ix_h2o)    ! H2O
97         xabsi(5,i)  = rm(i,ix_h2)     ! H2
98         xabsi(6,i)  = rm(i,ix_h2o2)   ! H2O2
99         !Only if O3, N or ion chemistry requested
100         if(euvmod.ge.1) then
101            xabsi(7,i)  = rm(i,ix_o3)  ! O3
102         endif
103         xabsi(8,i)  = rm(i,ix_n2)     ! N2
104         !Only if N or ion chemistry requested
105         if(euvmod.ge.2) then
106            xabsi(9,i)  = rm(i,ix_n)   ! N
107            xabsi(10,i) = rm(i,ix_no)  ! NO
108            xabsi(13,i) = rm(i,ix_no2) ! NO2
109         endif
110         xabsi(11,i) = rm(i,ix_co)     ! CO
111         xabsi(12,i) = rm(i,ix_h)      ! H
112      end do
113
114      !Calculation of photoabsortion coefficient
115      call jthermcalc_e107(ig,klev,euvmod,rm,nespeuv,tx,iz,zenit)
116
117      !Total photoabsorption coefficient    !  erg/(s*cm3)
118      do i=1,klev
119         jtot(i)=0.
120        do j=1,nabs
121          do indexint=1,ninter
122            jergs(indexint,j,i) = jfotsout(indexint,j,i)
123     $              * xabsi (j,i) * fluxtop(indexint) 
124     $              / (0.5e9 * freccen(indexint))
125            jtot(i)=jtot(i)+jergs(indexint,j,i)   
126 
127
128          end do
129        end do
130      end do
131
132      return
133
134      end
135
Note: See TracBrowser for help on using the repository browser.