Newer
Older
!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source$ $Revision$
! MASDEV4_7 chimie 2006/05/18 13:07:25
!-----------------------------------------------------------------
! ############################
MODULE MODI_CH_INIT_JVALUES
! ############################
!
INTERFACE
!
SUBROUTINE CH_INIT_JVALUES(KDAY, KMONTH, KYEAR, KLUOUT, PCH_TUV_DOBNEW)
!
INTEGER, INTENT(IN) :: KLUOUT
INTEGER, INTENT(IN) :: KYEAR ! Current Year
INTEGER, INTENT(IN) :: KMONTH ! Current Month
INTEGER, INTENT(IN) :: KDAY ! Current Day
REAL, INTENT(IN) :: PCH_TUV_DOBNEW ! Ozone column (dobson)
!
!
END SUBROUTINE CH_INIT_JVALUES
!
END INTERFACE
!
END MODULE MODI_CH_INIT_JVALUES
!
!
! ##################################
SUBROUTINE CH_INIT_JVALUES(KDAY, KMONTH, KYEAR, KLUOUT, PCH_TUV_DOBNEW)
! ###################################
!!
!!*** *CH_INIT_JVALUES*
!!
!! PURPOSE
!! -------
! calculate J-Values used by MesoNH-chemistry
!!
!!** METHOD
!! ------
!! The radiative transfer model TUV is called for a dicrete number
!! of solar zenith angle (latitude, longitude, time) and altitude.
!! TUV itself requires
!! a number of input files that will reside in directories
!! DATAX, DATA0 and DATA4 (to be created at runtime by tar xvf TUVDATA.tar).
!! Temporal interpolation is performed in CH_MONITOR.
!!
!!==============================================================================
!!
!! REFERENCES
!! ----------
!! MesoNH-chemistry book 3
!!
!! AUTHOR
!! ------
!! C. Mari
!!
!! MODIFICATIONS
!! -------------
!! Original 11/03/01
!! Modification
!! 12/03/01 (P. Tulet) Include variation of J with surface albedo
!! 01/02/04 (P. Tulet) externalisation , modification of the albedo UV
!! interpolation
!! 01/12/04 (P. Tulet) update for arome

ESCOBAR MUNOZ Juan
committed
!! 19/06/2014(J.Escobar & M.Leriche) write(kout,...) to OUTPUT_LISTING file
!! TUV version 5.3.1 (Fortran 77 code from S. Madronich)
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!! None
!
USE MODD_CH_INIT_JVALUES
!
!* 0. DECLARATIONS
! -----------------
!
IMPLICIT NONE
!
INTEGER, INTENT(IN) :: KLUOUT
INTEGER, INTENT(IN) :: KYEAR ! Current Year
INTEGER, INTENT(IN) :: KMONTH ! Current Month
INTEGER, INTENT(IN) :: KDAY ! Current Day
REAL, INTENT(IN) :: PCH_TUV_DOBNEW ! Ozone column (dobson)
!
! Calculation of J values
!
REAL, DIMENSION(NZZ_JVAL) :: ZLWC
REAL :: ZDZ
REAL :: ZDOBNEW
REAL :: ZSZALOOP, ZALBLOOP
REAL :: ZMAX = 30E3
! MAXIMUM HEIGHT FOR WHICH J-VALUES WILL BE COMPUTED
INTEGER :: IDATE
!
! J value storage
!
CHARACTER*40, DIMENSION(JPJVMAX) :: YLABELOUT
REAL, DIMENSION(NZZ_JVAL,JPJVMAX) :: ZJOUT
!
! Parameters for interpolation
!
INTEGER :: JALB, JKLEV, JSZA, JJVAL
!
!----------------------------------------------------------------------------
!
!
!* 1. INITIALISATION
! -------------------
!
! Nb of interpolation values for albedo; values = 10
NBALB=10
IF (.NOT.ALLOCATED(XJDATA)) ALLOCATE(XJDATA(NSZA_INCR,NZZ_JVAL,JPJVMAX,NBALB))
!
!* Albedo
! now denifed by radiation scheme
!
!* Solar Zenith Angle
!
IF (.NOT. ALLOCATED(XSZA_JVAL)) ALLOCATE(XSZA_JVAL(NSZA_INCR))
DO JSZA = 1, NSZA_INCR
XSZA_JVAL(JSZA) = FLOAT(JSZA-1)
ENDDO
!
!* Ozone Column
!
ZDOBNEW = PCH_TUV_DOBNEW
!
!* Date
!
IDATE= MOD(KYEAR,100) *10000 + KMONTH * 100 + KDAY
!
!* Vertical Levels
!
ZDZ = ZMAX / FLOAT(NZZ_JVAL - 1)
IF(.NOT.ALLOCATED(XZZ_JVAL)) ALLOCATE(XZZ_JVAL(NZZ_JVAL))
DO JKLEV = 1, NZZ_JVAL
XZZ_JVAL(JKLEV) = FLOAT(JKLEV-1) * ZDZ
ZLWC(JKLEV)= 0.0
ENDDO
!
!* CALL TUV 5.3.1
! --------------
!
DO JALB=1,NBALB
ZALBLOOP=0.02+0.20*FLOAT(JALB-1)/FLOAT(NBALB-1)
DO JSZA = 1, NSZA_INCR
ZSZALOOP = XSZA_JVAL(JSZA)
CALL TUVMAIN( ZSZALOOP, IDATE, &
ZALBLOOP, ZDOBNEW, &
NZZ_JVAL,XZZ_JVAL, ZLWC, &

ESCOBAR MUNOZ Juan
committed
JPJVMAX, ZJOUT, YLABELOUT, &
KLUOUT )
DO JKLEV = 1, NZZ_JVAL
DO JJVAL = 1, JPJVMAX
XJDATA(JSZA,JKLEV,JJVAL,JALB) = ZJOUT(JKLEV,JJVAL)
ENDDO
ENDDO
ENDDO
ENDDO
XJDATA(:,:,:,:)=MAX(0.,XJDATA(:,:,:,:))
!
WRITE(KLUOUT,*) "There are ", NZZ_JVAL, " vertical levels with a spacing of ",&
ZDZ, "m"
WRITE(KLUOUT,*) "The solar zenith angle varies from", XSZA_JVAL(1)," to ", &
XSZA_JVAL(NSZA_INCR)
WRITE(KLUOUT,*) "There are the following ", JPJVMAX, " photolysis reactions:"
DO JJVAL = 1, JPJVMAX
WRITE(KLUOUT,'(I4, A, A70)') JJVAL, ". ", YLABELOUT(JJVAL)
ENDDO
DO JJVAL = 1, JPJVMAX
WRITE(KLUOUT,'(A12,1X,I2,E12.4,1X,E12.4)')'J Values',JJVAL, &
MAXVAL(XJDATA(:,:,JJVAL,:)), MINVAL(XJDATA(:,:,JJVAL,:))
ENDDO
!
END SUBROUTINE CH_INIT_JVALUES