Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
NearRealTimeCTDAS
CTDAS
Commits
f4f719af
Commit
f4f719af
authored
Dec 07, 2018
by
brunner
Browse files
No commit message
No commit message
parent
32282c8a
Changes
3
Hide whitespace changes
Inline
Side-by-side
da/cosmo/observationoperator.py
View file @
f4f719af
...
...
@@ -76,8 +76,8 @@ class ObservationOperator(object):
savedict
=
io
.
std_savedict
.
copy
()
savedict
[
'name'
]
=
"flask"
savedict
[
'dtype'
]
=
"float"
savedict
[
'long_name'
]
=
"mole_fraction_of_trace_gas_in_air"
savedict
[
'units'
]
=
"
mol mol-1
"
savedict
[
'long_name'
]
=
"mole_fraction_of_trace_gas_in_
dry_
air"
savedict
[
'units'
]
=
"
ppm
"
savedict
[
'dims'
]
=
dimid
+
dimmember
savedict
[
'comment'
]
=
"Simulated model value created by COSMO"
f
.
add_data
(
savedict
,
nsets
=
0
)
...
...
@@ -125,20 +125,19 @@ class ObservationOperator(object):
# hour_time_stamp = ("0_168","168_336","336_504")
# UNCOMMENT FROM HERE
# for dt in rrule.rrule(rrule.HOURLY, dtstart=dacycle['time.start'], until=dacycle['time.start']+timedelta(hours=504)):
# for ens in range(0,self.forecast_nmembers):
# ens = str(ens).zfill(3)
# cdo.setunit("'kg m-2 s-1' -expr,GPP_"+ens+"_F=CO2_GPP_F*parametermap -merge "+os.path.join(dacycle['da.bio.input'], 'gpp_%s.nc' % dt.strftime('%Y%m%d%H')), input = os.path.join(dacycle['dir.da_run'],"input/parameters."+ens+".nc"), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H')))
# cdo.setunit("'kg m-2 s-1' -expr,RESP_"+ens+"_F=CO2_RESP_F*parametermap -merge "+os.path.join(dacycle['da.bio.input'], 'ra_%s.nc' % dt.strftime('%Y%m%d%H')), input = os.path.join(dacycle['dir.da_run'],"input/parameters."+ens+".nc"), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H')))
# cdo.merge(input = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_???_%s.nc" % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_%s.nc" % dt.strftime('%Y%m%d%H')))
# cdo.merge(input = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_???_%s.nc" % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_%s.nc" % dt.strftime('%Y%m%d%H')))
#os.chdir(dacycle['da.obsoperator.home'])
# os.system('python run_chain.py ctdas '+dacycle['time.start'].strftime('%Y-%m-%d')+' 0 504 -j meteo icbc emissions biofluxes int2lm post_int2lm cosmo')
# os.chdir(dacycle['dir.da_run'])
# for h,hts in enumerate(hour_time_stamp):
# self.extract_model_data(dacycle,0,167,self.forecast_nmembers)
# self.extract_model_data(dacycle,168,335,self.forecast_nmembers)
# self.extract_model_data(dacycle,336,503,self.forecast_nmembers)
# for dt in rrule.rrule(rrule.HOURLY, dtstart=dacycle['time.start'], until=dacycle['time.start']+timedelta(hours=504)):
# for ens in range(0,self.forecast_nmembers):
# ens = str(ens).zfill(3)
# cdo.setunit("'kg m-2 s-1' -expr,GPP_"+ens+"_F=CO2_GPP_F*parametermap -merge "+os.path.join(dacycle['da.bio.input'], 'gpp_%s.nc' % dt.strftime('%Y%m%d%H')), input = os.path.join(dacycle['dir.da_run'],"input/parameters."+ens+".nc"), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H')))
# cdo.setunit("'kg m-2 s-1' -expr,RESP_"+ens+"_F=CO2_RESP_F*parametermap -merge "+os.path.join(dacycle['da.bio.input'], 'ra_%s.nc' % dt.strftime('%Y%m%d%H')), input = os.path.join(dacycle['dir.da_run'],"input/parameters."+ens+".nc"), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_"+ens+"_%s.nc" % dt.strftime('%Y%m%d%H')))
# cdo.merge(input = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_???_%s.nc" % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "gpp_%s.nc" % dt.strftime('%Y%m%d%H')))
# cdo.merge(input = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_???_%s.nc" % dt.strftime('%Y%m%d%H')), output = os.path.join(dacycle['da.bio.input'], 'ensemble', "ra_%s.nc" % dt.strftime('%Y%m%d%H')))
os
.
chdir
(
dacycle
[
'da.obsoperator.home'
])
# cycle_start = dacycle['abs.time.start']-dacycle['time.start']
# print(cycle_start)
# sys.exit()
# os.system('python run_chain.py ctdas '+dacycle['abs.time.start'].strftime('%Y-%m-%d')+' 0 504 -j meteo icbc emissions biofluxes int2lm post_int2lm cosmo')
os
.
chdir
(
dacycle
[
'dir.da_run'
])
args
=
[
(
dacycle
,
hstart
,
hstop
,
self
.
forecast_nmembers
)
...
...
@@ -148,8 +147,8 @@ class ObservationOperator(object):
repeat
(
self
.
forecast_nmembers
))
]
#
with Pool(3) as pool:
#
pool.starmap(self.extract_model_data, args)
#
with Pool(3) as pool:
#
pool.starmap(self.extract_model_data, args)
for
i
in
range
(
0
,
self
.
forecast_nmembers
):
idx
=
str
(
i
).
zfill
(
3
)
...
...
da/cosmo/pipeline.py
View file @
f4f719af
...
...
@@ -266,6 +266,9 @@ def prepare_state(dacycle, statevector):
current_sv
=
os
.
path
.
join
(
dacycle
[
'dir.restart'
],
'savestate_%s.nc'
%
dacycle
[
'time.start'
].
strftime
(
'%Y%m%d'
))
statevector
.
write_to_file
(
current_sv
,
'prior'
)
# write prior info
nlag
=
int
(
dacycle
[
'time.nlag'
])
for
l
in
range
(
0
,
nlag
-
1
):
# pavle added from here
statevector
.
write_members_to_file
(
l
,
dacycle
[
'restartmap.dir'
])
def
sample_state
(
dacycle
,
samples
,
statevector
,
obsoperator
):
""" Sample the filter state for the inversion """
...
...
template.rc
View file @
f4f719af
...
...
@@ -31,10 +31,11 @@
time.start : 2013-04-01 00:00:00
time.finish : 2013-04-07 23:00:00
abs.time.start : 2013-04-01 00:00:00
! Whether to restart the CTDAS system from a previous cycle, or to start the sequence fresh. Valid entries are T/F/True/False/TRUE/FALSE
time.restart : F
!time.restart : T
da.restart.tstamp : 2013-04-01 00:00:00
! The length of a cycle is given in days, such that the integer 7 denotes the typically used weekly cycle. Valid entries are integers > 1
...
...
@@ -49,6 +50,7 @@ time.nlag : 2
! '/' will be replaced through the start_ctdas.sh script by a user-specified folder name. DO NOT REPLACE
dir.da_run : /scratch/snx3000/parsenov/projname
restartmap.dir : /scratch/snx3000/parsenov/projname/restart/maps
! The resources used to complete the data assimilation experiment. This depends on your computing platform.
! The number of cycles per job denotes how many cycles should be completed before starting a new process or job, this
...
...
@@ -98,7 +100,7 @@ da.obsoperator.home : /store/empa/em05/parsenov/cosmo_processing_chain
da.bio.input : /store/empa/em05/parsenov/cosmo_input/vprm/processed
da.obsoperator.rc : ${da.obsoperator.home}/tm5-ctdas-ei-zoom.rc
forward.savestate.exceptsam : TRUE
!
forward.savestate.exceptsam : TRUE
!
! The number of ensemble members used in the experiment. Valid entries are integers > 2
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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