Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
flexpart
flexpart
Commits
e9e0f062
Commit
e9e0f062
authored
Dec 12, 2018
by
Sabine
Browse files
Removed kao and ass_spec and obsolete lines in get_wetscav.f90
parent
db91eb78
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/FLEXPART.f90
View file @
e9e0f062
...
...
@@ -450,16 +450,21 @@ program flexpart
call
timemanager
(
metdata_format
)
if
(
verbosity
.gt.
0
)
then
! NIK 16.02.2005
do
i
=
1
,
nspec
write
(
*
,
*
)
'**********************************************'
write
(
*
,
*
)
'Scavenging statistics for species '
,
species
(
i
),
':'
write
(
*
,
*
)
'Total number of occurences of below-cloud scavenging'
,
&
&
tot_blc_count
(
i
)
write
(
*
,
*
)
'Total number of occurences of in-cloud scavenging'
,
&
&
tot_inc_count
(
i
)
write
(
*
,
*
)
'**********************************************'
end
do
do
i
=
1
,
nspec
if
(
tot_inc_count
(
i
)
.gt.
0
)
then
write
(
*
,
*
)
'**********************************************'
write
(
*
,
*
)
'Scavenging statistics for species '
,
species
(
i
),
':'
write
(
*
,
*
)
'Total number of occurences of below-cloud scavenging'
,
&
&
tot_blc_count
(
i
)
write
(
*
,
*
)
'Total number of occurences of in-cloud scavenging'
,
&
&
tot_inc_count
(
i
)
write
(
*
,
*
)
'**********************************************'
endif
end
do
write
(
*
,
*
)
'timemanager> call wetdepo'
endif
write
(
*
,
*
)
'CONGRATULATIONS: YOU HAVE SUCCESSFULLY COMPLETED A FLE&
&XPART MODEL RUN!'
...
...
src/com_mod.f90
View file @
e9e0f062
...
...
@@ -173,10 +173,8 @@ module com_mod
real
::
vset
(
maxspec
,
ni
),
schmi
(
maxspec
,
ni
),
fract
(
maxspec
,
ni
)
real
::
ri
(
5
,
numclass
),
rac
(
5
,
numclass
),
rcl
(
maxspec
,
5
,
numclass
)
real
::
rgs
(
maxspec
,
5
,
numclass
),
rlu
(
maxspec
,
5
,
numclass
)
real
::
rm
(
maxspec
),
dryvel
(
maxspec
)
,
kao
(
maxspec
)
real
::
rm
(
maxspec
),
dryvel
(
maxspec
)
real
::
ohcconst
(
maxspec
),
ohdconst
(
maxspec
),
ohnconst
(
maxspec
)
! se it is possible to associate a species with a second one to make transfer from gas to aerosol
integer
::
spec_ass
(
maxspec
)
real
::
area_hour
(
maxspec
,
24
),
point_hour
(
maxspec
,
24
)
real
::
area_dow
(
maxspec
,
7
),
point_dow
(
maxspec
,
7
)
...
...
src/get_wetscav.f90
View file @
e9e0f062
...
...
@@ -150,12 +150,9 @@ subroutine get_wetscav(itime,ltsample,loutnext,jpart,ks,grfraction,inc_count,blc
do
il
=
2
,
nz
if
(
height
(
il
)
.gt.
ztra1
(
jpart
))
then
hz
=
il
-1
! goto 26
exit
endif
end
do
!26 continue
if
(
ngrid
.eq.
0
)
then
clouds_v
=
clouds
(
ix
,
jy
,
hz
,
n
)
...
...
@@ -202,26 +199,19 @@ subroutine get_wetscav(itime,ltsample,loutnext,jpart,ks,grfraction,inc_count,blc
endif
!ZHG oct 2014 : Calculated for 1) both 2) lsp 3) convp
!ZHG oct 2014 : Calculated for 1) both 2) lsp 3) convp
- 2 and 3 not used removed by SE
! Tentatively differentiate the grfraction for lsp and convp for treating differently the two forms
! for now they are treated the same
grfraction
(
1
)
=
max
(
0.05
,
cc
*
(
lsp
*
lfr
(
i
)
+
convp
*
cfr
(
j
))/(
lsp
+
convp
))
grfraction
(
2
)
=
max
(
0.05
,
cc
*
(
lfr
(
i
)))
grfraction
(
3
)
=
max
(
0.05
,
cc
*
(
cfr
(
j
)))
! 2) Computation of precipitation rate in sub-grid cell
!******************************************************
prec
(
1
)
=
(
lsp
+
convp
)/
grfraction
(
1
)
prec
(
2
)
=
(
lsp
)/
grfraction
(
2
)
prec
(
3
)
=
(
convp
)/
grfraction
(
3
)
! 3) Computation of scavenging coefficients for all species
! Computation of wet deposition
!**********************************************************
if
(
ngrid
.gt.
0
)
then
act_temp
=
ttn
(
ix
,
jy
,
hz
,
n
,
ngrid
)
else
...
...
@@ -236,7 +226,6 @@ subroutine get_wetscav(itime,ltsample,loutnext,jpart,ks,grfraction,inc_count,blc
! For gas: if positive below-cloud parameters (A or B), and dquer<=0
!******************************************************************
if
((
dquer
(
ks
)
.le.
0.
)
.and.
(
weta_gas
(
ks
)
.gt.
0.
.or.
wetb_gas
(
ks
)
.gt.
0.
))
then
! if (weta(ks).gt.0. .or. wetb(ks).gt.0.) then
blc_count
(
ks
)
=
blc_count
(
ks
)
+1
wetscav
=
weta_gas
(
ks
)
*
prec
(
1
)
**
wetb_gas
(
ks
)
...
...
@@ -270,8 +259,6 @@ subroutine get_wetscav(itime,ltsample,loutnext,jpart,ks,grfraction,inc_count,blc
endif
! write(*,*) 'bl-cloud, act_temp=',act_temp, ',prec=',prec(1),',wetscav=', wetscav, ', jpart=',jpart
endif
! gas or particle
! endif ! positive below-cloud scavenging parameters given in Species file
endif
!end BELOW
...
...
@@ -284,7 +271,6 @@ subroutine get_wetscav(itime,ltsample,loutnext,jpart,ks,grfraction,inc_count,blc
! given in species file, or if gas and positive Henry's constant
if
((
ccn_aero
(
ks
)
.gt.
0.
.or.
in_aero
(
ks
)
.gt.
0.
)
.or.
(
henry
(
ks
)
.gt.
0.
and
.
dquer
(
ks
)
.le.
0
))
then
inc_count
(
ks
)
=
inc_count
(
ks
)
+1
! write(*,*) 'Incloud: ',inc_count
! if negative coefficients (turned off) set to zero for use in equation
if
(
ccn_aero
(
ks
)
.lt.
0.
)
ccn_aero
(
ks
)
=
0.
if
(
in_aero
(
ks
)
.lt.
0.
)
in_aero
(
ks
)
=
0.
...
...
@@ -299,7 +285,7 @@ subroutine get_wetscav(itime,ltsample,loutnext,jpart,ks,grfraction,inc_count,blc
!ZHG updated parameterization of cloud water to better reproduce the values coming from ECMWF
! sec test
! cl=1E6*1E-7*prec(1)**0.3 !Sec GFS new
cl
=
1E6
*
2E-7
*
prec
(
1
)
**
0.36
!Sec ECMWF new
cl
=
1E6
*
2E-7
*
prec
(
1
)
**
0.36
!Sec ECMWF new
, is also suitable for GFS
! cl=2E-7*prec(1)**0.36 !Andreas
! cl=1.6E-6*prec(1)**0.36 !Henrik
endif
...
...
@@ -321,27 +307,16 @@ subroutine get_wetscav(itime,ltsample,loutnext,jpart,ks,grfraction,inc_count,blc
!********
if
(
dquer
(
ks
)
.gt.
0.
)
then
S_i
=
frac_act
/
cl
! write(*,*) 'Si: ',S_i
! GAS
!****
else
cle
=
(
1
-
cl
)/(
henry
(
ks
)
*
(
r_air
/
3500.
)
*
act_temp
)
+
cl
!REPLACE to switch old/ new scheme
! S_i=frac_act/cle
S_i
=
1
/
cle
endif
! gas or particle
! scavenging coefficient based on Hertel et al 1995 - using the S_i for either gas or aerosol
!OLD
if
((
readclouds
.and.
ngrid
.eq.
0
)
.or.
(
readclouds_this_nest
.and.
ngrid
.gt.
0
))
then
!SEC wetscav fix, the cloud height is no longer needed, it gives wrong results
wetscav
=
incloud_ratio
*
S_i
*
(
prec
(
1
)/
3.6E6
)
else
!SEC wetscav fix
wetscav
=
incloud_ratio
*
S_i
*
(
prec
(
1
)/
3.6E6
)
! wetscav=incloud_ratio*S_i*(prec(1)/3.6E6)/clouds_h
endif
endif
! positive in-cloud scavenging parameters given in Species file
endif
!incloud
...
...
src/netcdf_output_mod.f90
View file @
e9e0f062
...
...
@@ -66,8 +66,7 @@ module netcdf_output_mod
drydep
,
wetdep
,
decay
,
weta_gas
,
wetb_gas
,
numbnests
,
&
ccn_aero
,
in_aero
,
&
! wetc_in,wetd_in, &
reldiff
,
henry
,
f0
,
density
,
dquer
,
dsigma
,
dryvel
,&
! weightmolar,ohreact,spec_ass,kao,vsetaver,&
weightmolar
,
ohcconst
,
ohdconst
,
spec_ass
,
kao
,
vsetaver
,&
weightmolar
,
ohcconst
,
ohdconst
,
vsetaver
,&
! for concoutput_netcdf and concoutput_nest_netcdf
nxmin1
,
nymin1
,
nz
,
oro
,
oron
,
rho
,
rhon
,&
memind
,
xresoln
,
yresoln
,
xrn
,
xln
,
yrn
,
yln
,
nxn
,
nyn
,&
...
...
@@ -511,9 +510,7 @@ subroutine writeheader_netcdf(lnest)
! call nf90_err(nf90_put_att(ncid, sID, 'ohreact', ohreact(i)))
call
nf90_err
(
nf90_put_att
(
ncid
,
sID
,
'ohcconst'
,
ohcconst
(
i
)))
call
nf90_err
(
nf90_put_att
(
ncid
,
sID
,
'ohdconst'
,
ohdconst
(
i
)))
call
nf90_err
(
nf90_put_att
(
ncid
,
sID
,
'kao'
,
kao
(
i
)))
call
nf90_err
(
nf90_put_att
(
ncid
,
sID
,
'vsetaver'
,
vsetaver
(
i
)))
call
nf90_err
(
nf90_put_att
(
ncid
,
sID
,
'spec_ass'
,
spec_ass
(
i
)))
if
(
lnest
)
then
specIDn
(
i
)
=
sID
...
...
@@ -534,9 +531,7 @@ subroutine writeheader_netcdf(lnest)
! call nf90_err(nf90_put_att(ncid, sID, 'ohreact', ohreact(i)))
call
nf90_err
(
nf90_put_att
(
ncid
,
sID
,
'ohcconst'
,
ohcconst
(
i
)))
call
nf90_err
(
nf90_put_att
(
ncid
,
sID
,
'ohdconst'
,
ohdconst
(
i
)))
call
nf90_err
(
nf90_put_att
(
ncid
,
sID
,
'kao'
,
kao
(
i
)))
call
nf90_err
(
nf90_put_att
(
ncid
,
sID
,
'vsetaver'
,
vsetaver
(
i
)))
call
nf90_err
(
nf90_put_att
(
ncid
,
sID
,
'spec_ass'
,
spec_ass
(
i
)))
if
(
lnest
)
then
specIDnppt
(
i
)
=
sID
...
...
src/readspecies.f90
View file @
e9e0f062
...
...
@@ -66,16 +66,16 @@ subroutine readspecies(id_spec,pos_spec)
character
(
len
=
16
)
::
pspecies
real
::
pdecay
,
pweta_gas
,
pwetb_gas
,
preldiff
,
phenry
,
pf0
,
pdensity
,
pdquer
real
::
pdsigma
,
pdryvel
,
pweightmolar
,
pohcconst
,
pohdconst
,
pohnconst
,
pkao
real
::
pdsigma
,
pdryvel
,
pweightmolar
,
pohcconst
,
pohdconst
,
pohnconst
real
::
pcrain_aero
,
pcsnow_aero
,
pccn_aero
,
pin_aero
integer
::
readerror
,
pspec_ass
integer
::
readerror
! declare namelist
namelist
/
species_params
/
&
pspecies
,
pdecay
,
pweta_gas
,
pwetb_gas
,
&
pcrain_aero
,
pcsnow_aero
,
pccn_aero
,
pin_aero
,
&
preldiff
,
phenry
,
pf0
,
pdensity
,
pdquer
,
&
pdsigma
,
pdryvel
,
pweightmolar
,
pohcconst
,
pohdconst
,
pohnconst
,
pspec_ass
,
pkao
pdsigma
,
pdryvel
,
pweightmolar
,
pohcconst
,
pohdconst
,
pohnconst
pspecies
=
""
! read failure indicator value
pdecay
=
-999.9
...
...
@@ -95,8 +95,6 @@ subroutine readspecies(id_spec,pos_spec)
pohcconst
=
-9.99
pohdconst
=
-9.9E-09
pohnconst
=
2.0
pspec_ass
=
-9
pkao
=
-99.99
pweightmolar
=
-999.9
! Open the SPECIES file and read species names and properties
...
...
@@ -163,10 +161,6 @@ subroutine readspecies(id_spec,pos_spec)
! write(*,*) ohdconst(pos_spec)
read
(
unitspecies
,
'(f8.2)'
,
end
=
22
)
ohnconst
(
pos_spec
)
! write(*,*) ohnconst(pos_spec)
read
(
unitspecies
,
'(i18)'
,
end
=
22
)
spec_ass
(
pos_spec
)
! write(*,*) spec_ass(pos_spec)
read
(
unitspecies
,
'(f18.2)'
,
end
=
22
)
kao
(
pos_spec
)
! write(*,*) kao(pos_spec)
pspecies
=
species
(
pos_spec
)
pdecay
=
decay
(
pos_spec
)
...
...
@@ -187,8 +181,6 @@ subroutine readspecies(id_spec,pos_spec)
pohcconst
=
ohcconst
(
pos_spec
)
pohdconst
=
ohdconst
(
pos_spec
)
pohnconst
=
ohnconst
(
pos_spec
)
pspec_ass
=
spec_ass
(
pos_spec
)
pkao
=
kao
(
pos_spec
)
else
...
...
@@ -211,9 +203,6 @@ subroutine readspecies(id_spec,pos_spec)
ohcconst
(
pos_spec
)
=
pohcconst
ohdconst
(
pos_spec
)
=
pohdconst
ohnconst
(
pos_spec
)
=
pohnconst
spec_ass
(
pos_spec
)
=
pspec_ass
kao
(
pos_spec
)
=
pkao
endif
i
=
pos_spec
...
...
@@ -302,21 +291,6 @@ subroutine readspecies(id_spec,pos_spec)
end
if
end
if
if
(
spec_ass
(
pos_spec
)
.gt.
0
)
then
spec_found
=
.FALSE.
do
j
=
1
,
pos_spec
-1
if
(
spec_ass
(
pos_spec
)
.eq.
specnum
(
j
))
then
spec_ass
(
pos_spec
)
=
j
spec_found
=
.TRUE.
ASSSPEC
=
.TRUE.
endif
end
do
if
(
spec_found
.eqv.
.false.
)
then
goto
997
endif
endif
if
(
dsigma
(
i
)
.eq.
1.
)
dsigma
(
i
)
=
1.0001
! avoid floating exception
if
(
dsigma
(
i
)
.eq.
0.
)
dsigma
(
i
)
=
1.0001
! avoid floating exception
if
((
reldiff
(
i
)
.gt.
0.
)
.and.
(
density
(
i
)
.gt.
0.
))
then
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment