wknoben / marrmot Goto Github PK
View Code? Open in Web Editor NEWModular Assessment of Rainfall-Runoff Models Toolbox - Matlab code for 47 conceptual hydrologic models
License: GNU General Public License v3.0
Modular Assessment of Rainfall-Runoff Models Toolbox - Matlab code for 47 conceptual hydrologic models
License: GNU General Public License v3.0
In L107, to consistent with FluxNames in L38, it should be flux_qseg flux_c flux_qhsrf flux_qhgw flux_qt
https://github.com/wknoben/MARRMoT/blob/master/MARRMoT/Models/Model%20files/m_13_hillslope_7p_2s.m#L38
https://github.com/wknoben/MARRMoT/blob/master/MARRMoT/Models/Model%20files/m_13_hillslope_7p_2s.m#L107
get_input_var_names and get_value use different names. And var flux_out contiains 2 vars, should be split into 2 vars Q and Ea
Diagnosis:
x2
(water exchange parameter) is determined by relative fullness of store S2 (R
in original GR4J paper), which is controlled by x3
(maximum routing store depth)x2
; full S2, flow from x2
as x2
's valuex3
, import based on x2
never goes above x2
x3
, we can end up in situation where water import via x2
goes up (because S2 > x3
), which makes S2 go up further, etc.Qr
is equal to import via x2
Why would S2 go over x3
?
x2
> x3
Possible solutions:
recharge_2
to ensure that returned flow is at most equal to "flux"x2
cannot be greater than x3
please add BMI description to the main readme file.
In m_28_xinanjiang_12p_4s
:
flux_e = evap_21(lm,c,S1,Ep,delta_t);
flux_r = saturation_14(a,b,S1,wmax,flux_pi);
flux_rs = saturation_2(S2,smax,ex,flux_r);
flux_ri = saturation_2(S2,smax,ex,S2*ki);
flux_rg = saturation_2(S2,smax,ex,S2*kg);
flux_qs = flux_rb + flux_rs;
flux_qi = interflow_5(ci,S3);
flux_qg = baseflow_1(cg,S4);
% stores ODEs
dS1 = flux_pi - flux_e - flux_r;
dS2 = flux_r - flux_rs - flux_ri - flux_rg;
dS3 = flux_ri - flux_qi;
dS4 = flux_rg - flux_qg;
Hence, I think JacobPattern should be
obj.JacobPattern = [1,0,0,0;
1,1,0,0;
0,1,1,0;
0,1,0,1];
Other than
obj.JacobPattern = [1,0,0,0;
1,1,0,0;
0,1,1,0;
0,0,1,1];
% the last row error
start and end-time are date-vecs, but current time is scalar.
X4 is multiplied inside the uh_2_full
function:
But also in the model function:
Problem: we end up with a time base for the hydrograph of 22X4
Solution: remove the part in uh_2_full
. This keeps the implementation closest to the Perrin et al. (2003) paper.
Contributors: Nyree Campion, Keirnan Fowler
Numerical solutions don't always return physically realistic values.
Suggestion:
Big change, so probably should be saved for a large development push.
This will return Inf but should return 0.
on the python side, grids are not implemented
https://github.com/wknoben/MARRMoT/blob/master/MARRMoT/Models/Flux%20files/saturation_7.m#L24
The integral operation leads to m_14_topmodel_7p_2s
about 20 times slower than other models?
Any idea how to improve this?
The attachment is the consumed time for each model in my case.
Thanks and Regards,
Dongdong
In R, Xinanjiang model calibration only cost about 40s.
But in MARRMoT
, the calibration is quite low efficiency. With the same forings, half hour passed, still no output.
Just wondering which part delays the computing efficiency? ODE or optimization function? Any idea?
In order to test the BMI it will be good to have a config file using ERA5 data.
work in progress
Calling bmi methods via grcp4bmi and Docker is giving errors.
model.get_output_var_names()
returns error with
Cell(['Fluxes leaving the model > flux_out', 'Internal fluxes > flux_in',
'Storages (time = t) > S(t)', 'Water balance check > wb'],
dtype=object) has type <class 'oct2py.io.Cell'>, but expected one of: (<class 'bytes'>, <class 'str'>)
model.get_value('flux_out')
returns error with
Arrays with type {} cannot be transmitted through this GRPC channel
MARRMoT/MARRMoT/Models/Model files/m_08_us1_5p_2s.m
Lines 77 to 78 in 7f86958
Docs (Eq. 66, 67; https://gmd.copernicus.org/articles/12/2463/2019/gmd-12-2463-2019-supplement.pdf) say evap should be S2/Smax, not S2/(S1+S2).
Reported by: Scott Sheeder
Implement the ability to continue running the model using saved model outputs from the last run
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.