Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
rose_fvcom_setup
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PML-modelling
rose_fvcom_setup
Commits
fe0f1966
Commit
fe0f1966
authored
Nov 12, 2018
by
Mike Bedington
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Tidy up river update function
parent
41bd0387
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
51 deletions
+52
-51
app/update_river_model/file/update_river_data.py
app/update_river_model/file/update_river_data.py
+52
-51
No files found.
app/update_river_model/file/update_river_data.py
View file @
fe0f1966
...
@@ -14,62 +14,63 @@ no_miss_loops = 4
...
@@ -14,62 +14,63 @@ no_miss_loops = 4
# Load the river model
# Load the river model
with
open
(
'river_model.pk1'
,
'rb'
)
as
f
:
with
open
(
'river_model.pk1'
,
'rb'
)
as
f
:
river_dict
=
pk
.
load
(
f
)
river_dict
=
pk
.
load
(
f
)
start_date
=
end_date
start_date
=
end_date
for
this_river
in
river_dict
.
values
():
for
this_river
in
river_dict
.
values
():
if
hasattr
(
this_river
,
'catchment_precipitation'
):
if
hasattr
(
this_river
,
'catchment_precipitation'
):
this_river_update
=
np
.
max
(
this_river
.
catchment_precipitation
[
0
])
this_river_update
=
np
.
max
(
this_river
.
catchment_precipitation
[
0
])
if
this_river_update
<
start_date
:
if
this_river_update
<
start_date
:
start_date
=
this_river_update
start_date
=
this_river_update
if
start_date
==
end_date
:
if
start_date
==
end_date
:
print
(
'Already up to date'
)
print
(
'Already up to date'
)
else
:
else
:
missing_dates
=
np
.
asarray
([
start_date
+
dt
.
timedelta
(
days
=
int
(
this_ind
))
for
this_ind
in
np
.
arange
(
0
,
(
end_date
-
start_date
).
days
+
1
)])
missing_dates
=
np
.
asarray
([
start_date
+
dt
.
timedelta
(
days
=
int
(
this_ind
))
for
this_ind
in
np
.
arange
(
0
,
(
end_date
-
start_date
).
days
+
1
)])
for
this_missing_loop
in
np
.
arange
(
0
,
no_miss_loops
):
for
this_missing_loop
in
np
.
arange
(
0
,
no_miss_loops
):
new_missing_dates
=
[]
new_missing_dates
=
[]
for
this_date
in
missing_dates
:
for
this_date
in
missing_dates
:
if
this_missing_loop
>
0
:
if
this_missing_loop
>
0
:
print
(
'Trying again to fill for {}'
.
format
(
this_date
))
print
(
'Trying again to fill for {}'
.
format
(
this_date
))
else
:
else
:
print
(
this_date
)
print
(
this_date
)
this_date_m1
=
this_date
-
dt
.
timedelta
(
days
=
int
(
this_missing_loop
))
this_date_m1
=
this_date
-
dt
.
timedelta
(
days
=
int
(
this_missing_loop
))
this_date_str
=
this_date_m1
.
strftime
(
'%Y%m%d'
)
this_date_str
=
this_date_m1
.
strftime
(
'%Y%m%d'
)
potential_files
=
gb
.
glob
(
'{}/{}*_forecast/wrfout_d03*'
.
format
(
wrf_forecast_out_dir
,
this_date_str
))
potential_files
=
gb
.
glob
(
'{}/{}*_forecast/wrfout_d03*'
.
format
(
wrf_forecast_out_dir
,
this_date_str
))
try
:
try
:
this_wrf_nc
=
nc
.
Dataset
(
potential_files
[
-
1
],
'r'
)
this_wrf_nc
=
nc
.
Dataset
(
potential_files
[
-
1
],
'r'
)
wrf_date_str_raw
=
this_wrf_nc
.
variables
[
'Times'
][:]
wrf_date_str_raw
=
this_wrf_nc
.
variables
[
'Times'
][:]
wrf_date_str
=
np
.
asarray
([
b''
.
join
(
this_str
)
for
this_str
in
wrf_date_str_raw
])
wrf_date_str
=
np
.
asarray
([
b''
.
join
(
this_str
)
for
this_str
in
wrf_date_str_raw
])
wrf_dt
=
np
.
asarray
([
dt
.
datetime
.
strptime
(
this_str
.
decode
(
'utf-8'
),
'%Y-%m-%d_%H:%M:%S'
)
for
this_str
in
wrf_date_str
])
wrf_dt
=
np
.
asarray
([
dt
.
datetime
.
strptime
(
this_str
.
decode
(
'utf-8'
),
'%Y-%m-%d_%H:%M:%S'
)
for
this_str
in
wrf_date_str
])
wrf_dt_date
=
np
.
asarray
([
this_dt
.
date
()
for
this_dt
in
wrf_dt
])
wrf_dt_date
=
np
.
asarray
([
this_dt
.
date
()
for
this_dt
in
wrf_dt
])
date_match
=
wrf_dt_date
==
this_date
.
date
()
date_match
=
wrf_dt_date
==
this_date
.
date
()
forecast_data
=
{
'times'
:
wrf_dt
[
date_match
],
'RAINNC'
:
this_wrf_nc
.
variables
[
'RAINNC'
][
date_match
,:,:],
forecast_data
=
{
'times'
:
wrf_dt
[
date_match
],
'RAINNC'
:
this_wrf_nc
.
variables
[
'RAINNC'
][
date_match
,:,:],
'T2'
:
this_wrf_nc
.
variables
[
'T2'
][
date_match
,:,:]}
'T2'
:
this_wrf_nc
.
variables
[
'T2'
][
date_match
,:,:]}
this_wrf_nc
.
close
()
this_wrf_nc
.
close
()
for
this_river_name
,
this_river
in
river_dict
.
items
():
for
this_river_name
,
this_river
in
river_dict
.
items
():
if
hasattr
(
this_river
,
'addToSeries'
):
if
hasattr
(
this_river
,
'addToSeries'
):
this_rain
=
np
.
sum
(
np
.
sum
(
forecast_data
[
'RAINNC'
]
*
this_river
.
wrf_catchment_factors
,
axis
=
2
),
axis
=
1
)
this_rain
=
np
.
sum
(
np
.
sum
(
forecast_data
[
'RAINNC'
]
*
this_river
.
wrf_catchment_factors
,
axis
=
2
),
axis
=
1
)
this_river
.
addToSeries
(
'catchment_precipitation'
,
this_rain
,
forecast_data
[
'times'
],
override
=
True
)
this_river
.
addToSeries
(
'catchment_precipitation'
,
this_rain
,
forecast_data
[
'times'
],
override
=
True
)
this_temp
=
np
.
zeros
(
len
(
forecast_data
[
'times'
]))
this_temp
=
np
.
zeros
(
len
(
forecast_data
[
'times'
]))
for
i
in
range
(
0
,
len
(
forecast_data
[
'times'
])):
for
i
in
range
(
0
,
len
(
forecast_data
[
'times'
])):
this_temp
[
i
]
=
np
.
average
(
forecast_data
[
'T2'
][
i
,:,:],
weights
=
this_river
.
wrf_catchment_factors
)
this_temp
[
i
]
=
np
.
average
(
forecast_data
[
'T2'
][
i
,:,:],
weights
=
this_river
.
wrf_catchment_factors
)
this_river
.
addToSeries
(
'catchment_temp'
,
this_temp
,
forecast_data
[
'times'
],
override
=
True
)
this_river
.
addToSeries
(
'catchment_temp'
,
this_temp
,
forecast_data
[
'times'
],
override
=
True
)
if
hasattr
(
this_river
,
'river_obj'
):
except
:
this_river
.
catchment_precipitation
=
this_river
.
river_obj
.
catchment_precipitation
new_missing_dates
.
append
(
this_date
)
except
:
missing_dates
=
new_missing_dates
[:]
new_missing_dates
.
append
(
this_date
)
missing_dates
=
new_missing_dates
[:]
with
open
(
'river_model.pk1'
,
'wb'
)
as
f
:
pk
.
dump
(
river_dict
,
f
,
pk
.
HIGHEST_PROTOCOL
)
with
open
(
'river_model.pk1'
,
'wb'
)
as
f
:
pk
.
dump
(
river_dict
,
f
,
pk
.
HIGHEST_PROTOCOL
)
Write
Preview
Markdown
is supported
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