43 USE modi_ch_open_inputb
53 USE yomhook
,ONLY : lhook, dr_hook
54 USE parkind1
,ONLY : jprb
60 INTEGER,
INTENT(IN) :: kch
61 INTEGER,
INTENT(IN) :: kluout
62 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: hsv
66 CHARACTER(LEN=40) :: yformat
68 CHARACTER(LEN=40) :: youtformat =
'(A32,2E15.5)'
72 CHARACTER(LEN=40),
DIMENSION(:),
ALLOCATABLE :: ymassmolname
73 REAL ,
DIMENSION(:),
ALLOCATABLE :: zmassmolval
77 CHARACTER(LEN=40),
DIMENSION(:),
ALLOCATABLE :: yreactname
78 REAL ,
DIMENSION(:),
ALLOCATABLE :: zreactval
82 CHARACTER(LEN=40),
DIMENSION(:),
ALLOCATABLE :: yhenryname
83 character(len=50) :: yname
84 REAL ,
DIMENSION(:,:),
ALLOCATABLE :: zhenryval
87 INTEGER :: ji, jn, jnreal
90 REAL(KIND=JPRB) :: zhook_handle
97 IF (lhook) CALL dr_hook(
'CH_INIT_DEPCONST',0,zhook_handle)
99 IF(.NOT.
ALLOCATED(xsrealmassmolval))
ALLOCATE( xsrealmassmolval(
SIZE(hsv,1)) )
100 IF(.NOT.
ALLOCATED(xsrealreactval) )
ALLOCATE( xsrealreactval(
SIZE(hsv,1)) )
101 IF(.NOT.
ALLOCATED(xsrealhenryval) )
ALLOCATE( xsrealhenryval(
SIZE(hsv,1),2) )
108 "CH_INIT_CONST: reading molar mass"
109 CALL ch_open_inputb(
"MASS_MOL", kch, kluout)
113 WRITE(kluout,*)
"number of molecular diffusivity: ", imass
116 READ(kch,
"(A)") yformat
117 WRITE(kluout,*)
"input format is: ", yformat
121 ALLOCATE(ymassmolname(imass))
122 ALLOCATE(zmassmolval(imass))
124 inquire(kch,name=yname,opened=lopened)
128 READ(kch,yformat) ymassmolname(ji), zmassmolval(ji)
129 WRITE(kluout,yformat) ymassmolname(ji), zmassmolval(ji)
133 WRITE(kluout,
'(A)')
'----------------------------------------------------'
134 WRITE(kluout,
'(A)')
'MASS_MOL'
135 WRITE(kluout,
'(A)')
'molecular mass (in g/mol) for molecular diffusion'
136 WRITE(kluout,
'(I4)')
SIZE(hsv,1)
137 WRITE(kluout,
'(A)') youtformat
140 xsrealmassmolval(:) = 50.
141 DO jnreal = 1,
SIZE(hsv,1)
143 search_loop3 :
DO jn = 1, imass
144 IF (hsv(jnreal) .EQ. ymassmolname(jn))
THEN
149 IF (inact .NE. 0) xsrealmassmolval(jnreal) = zmassmolval(inact)
150 WRITE(kluout,youtformat) hsv(jnreal), xsrealmassmolval(jnreal)
161 "CH_INIT_CONST: reading reactivity factor "
162 CALL ch_open_inputb(
"REA_FACT", kch, kluout)
166 WRITE(kluout,*)
"number of reactivity factor : ", ireact
169 READ(kch,
"(A)") yformat
170 WRITE(kluout,*)
"input format is: ", yformat
174 ALLOCATE(yreactname(ireact))
175 ALLOCATE(zreactval(ireact))
179 READ(kch,yformat) yreactname(ji), zreactval(ji)
180 WRITE(kluout,yformat) yreactname(ji), zreactval(ji)
183 WRITE(kluout,
'(A)')
'----------------------------------------------------'
184 WRITE(kluout,
'(A)')
'REA_FACT'
185 WRITE(kluout,
'(A)')
'reactivity factor'
186 WRITE(kluout,
'(I4)')
SIZE(hsv,1)
187 WRITE(kluout,
'(A)') youtformat
190 xsrealreactval(:) = 0.0
191 DO jnreal = 1,
SIZE(hsv,1)
193 search_loop4 :
DO jn = 1, ireact
194 IF (hsv(jnreal) .EQ. yreactname(jn))
THEN
199 IF (inact .NE. 0) xsrealreactval(jnreal) = zreactval(inact)
200 WRITE(kluout,youtformat) hsv(jnreal), xsrealreactval(jnreal)
210 "CH_INIT_CONST: reading effective Henry constant", &
211 " and its temperature correction "
213 CALL ch_open_inputb(
"HENRY_SP", kch, kluout)
217 WRITE(kluout,*)
"number of reactivity factor : ", ihenry
220 READ(kch,
"(A)") yformat
221 WRITE(kluout,*)
"input format is: ", yformat
225 ALLOCATE(yhenryname(ihenry))
226 ALLOCATE(zhenryval(ihenry,2))
230 DO jnreal = 1, ihenry
231 READ(kch,yformat) yhenryname(jnreal), zhenryval(jnreal,1),&
233 WRITE(kluout,yformat) yhenryname(jnreal), zhenryval(jnreal,1),&
237 WRITE(kluout,
'(A)')
'----------------------------------------------------'
238 WRITE(kluout,
'(A)')
'HENRY_SP'
239 WRITE(kluout,
'(A)')
'Henrys law constants factor / exponent'
240 WRITE(kluout,
'(I4)')
SIZE(hsv,1)
241 WRITE(kluout,
'(A)') youtformat
244 xsrealhenryval(:,1) = 1e-8
245 xsrealhenryval(:,2) = 0.
246 DO jnreal = 1,
SIZE(hsv,1)
248 search_loop5 :
DO jn = 1, ihenry
249 IF (hsv(jnreal) .EQ. yhenryname(jn))
THEN
254 IF (inact .NE. 0) xsrealhenryval(jnreal,1) = zhenryval(inact,1)
255 IF (inact .NE. 0) xsrealhenryval(jnreal,2) = zhenryval(inact,2)
256 WRITE(kluout,youtformat) hsv(jnreal), &
257 xsrealhenryval(jnreal,1),&
258 xsrealhenryval(jnreal,2)
260 IF (lhook) CALL dr_hook(
'CH_INIT_DEPCONST',1,zhook_handle)
subroutine ch_init_depconst(KCH, KLUOUT, HSV)