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

Last change on this file since 3885 was 3835, checked in by ikovalenko, 5 months ago
File size: 4.1 KB
RevLine 
[1310]1c**********************************************************************
2
[2464]3      subroutine hrtherm(ig,euvmod,rm,nespeuv,tx,iz,zenit,jtot)
[1310]4
5
6c     feb 2002        fgg           first version
7c     nov 2002        fgg           second version
8
9c**********************************************************************
10      use dimphy
[2464]11      use param_v4_h, only: ninter,nabs,jfotsout,fluxtop,freccen
[3835]12      use clesphys_mod
[2464]13
[1310]14      implicit none
15
16c     common variables and constants
17
18
[3835]19c#include "clesphys.h"
[1310]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
[2836]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
[1310]50
[2836]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
[1310]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
[2836]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
[1310]99         !Only if O3, N or ion chemistry requested
[2836]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
[1310]104         !Only if N or ion chemistry requested
[2836]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
[1310]112      end do
113
114      !Calculation of photoabsortion coefficient
[2464]115      call jthermcalc_e107(ig,klev,euvmod,rm,nespeuv,tx,iz,zenit)
[1310]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 
[1442]127
[1310]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.