hydrodl2 1.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,501 @@
1
+ ---BEGIN PYE FILE---
2
+ UT+o!c1gk=Y+fU}0^D@+
3
+ By!m>RnPdPRdb-Sa?`<=
4
+ i1&B*P7FtgFp?(>M|n9l
5
+ c5C|bQ5Usf9XrX|wF1%6
6
+ +r<2W=|5n@nEkZcr$_s5
7
+ 6aSo9i5h!gR1H=Of)r6S
8
+ 9>SKYJ|Pe0;W#nMVFB7W
9
+ {C(MXZk#5vc&9S>bWFzH
10
+ c%PH!wvrMK=GnW(+8o7G
11
+ +#}#H|9lG7z+&NPT|k8E
12
+ |M=yO)E@wqv~9qHHv29a
13
+ {zg*rI}_mphr*$gT9-Le
14
+ #3=Y$BsB{uVs7pqk=DJD
15
+ bT_9cOx9?Fj1vz8*GXaN
16
+ BuB`~Z68LntV!t+J7FnH
17
+ m#YI@>g)vu$dvw7r7}L#
18
+ v}~P<@DnqaLOCUs*<M`!
19
+ `F149lWLVu4r7j@+shvf
20
+ i>C93ex$+2FY`{VJjn}+
21
+ E=>4oXTqdim$)jty)i-L
22
+ 1DgHH!o<PeYH!iYA7#wN
23
+ Jw!9ZWXB7l%xAUY$WpS$
24
+ vkU7cZ%K1z(Ez?2igbl;
25
+ QB$RiW^?RZbSGX1mjAHm
26
+ T`B%`E?(O!&AF?1`C}KO
27
+ XyeIW^rCSpfE9MxfA`C{
28
+ `EY2Qe8P*bV#~KwE!srE
29
+ 7EnYr(LHgBW}R|oWbxhz
30
+ |6~)>@vv%WG;;|l8;CMQ
31
+ DNnr`&@-p^b)&kEh76@w
32
+ aEoDGGfI1rUFCfDe#6AN
33
+ i9V}4D$k8IIbOd8PR$pn
34
+ i$S5@=t+VSqN{Qk;=6)6
35
+ Sb7fvL(CA}qoPETJH>oZ
36
+ 4G24beT0^EihBX>a}l+6
37
+ TEsNFbV(f^nl906(@i<b
38
+ ;^8?>?~RFun?ynA7>&Kq
39
+ y16U1gn6Np!LQ3@%~oWt
40
+ pe$()vteO-<`Eh2-Qy7=
41
+ p^qb4sa*!jOZSG-?ki+J
42
+ HuVM89C6#8D=Ei^s1hu^
43
+ (LJc39^s^~U$7Uqcx_!;
44
+ ZEBoNd2fJ2cYWqxn%*Es
45
+ 6AwS+sFxiWLQV`W?5&#N
46
+ %22Mm!*729e-tfR1`Pxm
47
+ Pe@2t7@%0e1_HEr7M{dL
48
+ ;%I`yTri!BUNQ=8-;sH{
49
+ 9f=}c83^|K-~w<G4K2;}
50
+ ?+()E)=x4*VMff_Zg{KC
51
+ Pe$2*k|#itpPuVQb!6}m
52
+ -7$)O#ri<DNp0>1wr!@t
53
+ 0}HCc;2y_zsmFw9m@D>`
54
+ rblMh3w|a0>)@O)DJ_Z~
55
+ ==lOoyCF_DNK~^k3Lu&;
56
+ -S7?oj)04)oFx|>hFrbx
57
+ $~MR(5M7K>-XdRCX;UBo
58
+ ymPkYk-0JAq&XO}rh+zg
59
+ ;uCz)V%oB5FU{a6LoKwK
60
+ Ht}P<TUx|T`rF%W$LL12
61
+ @lx{b;%g-t_gc(yxpgHv
62
+ _}~K2g#?W(<TM^SK2KZc
63
+ s@=T7|LE8Y6O>_oPoJCM
64
+ wbB>aL?(e|)yuqEPBI%y
65
+ J^VordzD)Z0n>y_xhjAG
66
+ Z~#1qp5AbRv9A$k*2+i$
67
+ P?vjmmt48D!h6&UND3h$
68
+ Lan(SXzmI&U?ViK_%#3^
69
+ ;G#o_Q}Q~b1SQ;=09jaU
70
+ OYWVx+~bK7>I3Z@QyEH3
71
+ +6M;81+9`Ww1XyW7U7^p
72
+ -{;zQcBifY-7n}B*^7)U
73
+ J@aOR-4}+vQ`5b276v_C
74
+ 2~a#@lJi5!sepX@LQM$s
75
+ *JY%~JLEUVhErAhx|LHF
76
+ >;!UpX|#;K5$_lJS#Klz
77
+ )T|l>Ajb?`cl7=}FY*oJ
78
+ ub6uBqECgc3D~FCfh)cO
79
+ +p#QwYc>SRK-;f>RQl0B
80
+ LRC?CLEf5}5Zj>&pxs#G
81
+ %@8>Rnz0)Hg$u^eDdI(t
82
+ ;S{=;8h1_VeFL~0wu7Tk
83
+ ;=)`auLthMz^1T>1AGeW
84
+ 7%ewtQp0nA#e=Q%J`hsI
85
+ jnGzzA+YXaM1(@B0ajTd
86
+ #d7g*LHc@#S!O0g_S_DD
87
+ %Wnuo#t7k5CU(qAO^J_!
88
+ Fn1unrgWfB5wMy3FLjur
89
+ `9IyMHmP;y2M$T-&KMVY
90
+ ^ZXg2$CIczerB?cq8Y3P
91
+ o=~1-Apej7au&0;i0cGr
92
+ O7$Y+uBjL1URY7)1972!
93
+ @8OU!O8MpHa3b|c0ujcj
94
+ uW!}K8tXSlY)rzmhLjk|
95
+ $ea3<s~K)Me^O*u_U?*-
96
+ 5Mf!9FLkuuyn3AeVCdFi
97
+ ixQU*W+uK1_aO|Z2)i~Z
98
+ VDQ4+lMsCPVMBI3d<QXa
99
+ -T7=5FIEE`u3GFGjR(!y
100
+ BV2Dr5a%6<4g~RIz!6qz
101
+ !R{8im3KxH7?A&<WO5C%
102
+ b166VSz}xr9M{WdSv3jR
103
+ $|7`YqiEisTOW~TVL*Ii
104
+ <@xd+;$*CnB{W(AKk}!E
105
+ BuUBIbv^lOj5>G0;$rTt
106
+ +ZX`W5Yh9Kbhzo{#JbkD
107
+ z01XeF>48(imDEgSXYb9
108
+ {9wCQaXn>kJA?z?K4fQ*
109
+ dPc;HO8AymQo}-z36$P=
110
+ 8+Cl-IenDFf?UE{2<t>n
111
+ qv+-qu&^+&J+?l>z7&5?
112
+ #m{3tfls9<2s`N7<3rr=
113
+ c6l}zJW;9xLOFt=O;Q+S
114
+ XIok;ACt+3lwRRUh)oTn
115
+ D*dxU$RRD?j&wBu-&U6F
116
+ ZiB05sa7ea%^CizZgvo@
117
+ p=Qyp{Zk@wOum?|N{LKo
118
+ {@rJVU3S|ih;#H(JFNK*
119
+ P1DzZP(9_>)jvM0eknQN
120
+ hVp@Ja|$#nV(cyL*UJ03
121
+ MnlQsn}T<3F9myu{<0(q
122
+ Z^Hm7O<5$Da^A~l)di|n
123
+ n6A*HU@pBT2C)NR)5*<*
124
+ 1;<$e(K2@}L|Sti6JK}@
125
+ KX)?mNJlj~`cDvR)K1g$
126
+ Y`2v-+5l=|M4<h4jF7gK
127
+ a$qp@1~#6L)2yE!8S0TR
128
+ rjxF8ZNsPz(*Q1M?Ukjp
129
+ 3MI(FN7`I9VeUneTmP&v
130
+ 9FpuIZNp*qIx_o)62lT2
131
+ 3bvxyP8;52$kwJAQL0v>
132
+ r9FK68=h&&^la_LO>Vm+
133
+ Uf{$x&y7NEv4XzRLNxDU
134
+ (YHt7*3s_y5<*F;PE9Z6
135
+ <lS3PtQk|_+L%qc8R;XE
136
+ $g%|Xy?XZ*G7_q9`dvN*
137
+ ^T%J10#_#%drF;8o^hTE
138
+ qGG5Sj~I9kSHB-)&Aw*y
139
+ r=Y2bXxfadRjy>u9v4v4
140
+ iE>?}3ayR%*Sy|6@r-l*
141
+ !aW|WXV4EePyEacwyS{O
142
+ SQ9jyTL(&z6aS$mMox@E
143
+ ZZ$yb^L)%bU_Fz9d@$VC
144
+ 62f1fr;D@#q<!<`%UtPv
145
+ DCAUa(BKV>XNHs(Uw4Bi
146
+ im6J!PYt_Sm-4~ft>}sg
147
+ =5aCHWt?ZcoX!Mi1iS@!
148
+ -2^w~JrpJNwmSP7y9Bu`
149
+ qDrX=aouy{B4rfAQ)gY!
150
+ PGC#$P!l>$$BvRt8HhJ4
151
+ L|aJ-kKH;!$u{F0kp`~r
152
+ D1rKRj@hG&V}}BDG+(S8
153
+ (l7B!Wm=MGq}gNz67`Wv
154
+ 1+b{@aIG}~$N?q;lCXz7
155
+ 6N4sD%Jg7(-5SOjMMHUx
156
+ J)>)%5H!XM_-8{YOc^zh
157
+ $cN^%<z$9X#s4*l89-WN
158
+ QdzR(d}SymrxDW80r59#
159
+ BioT2Hd+RZM8uBmi25tM
160
+ lHVyL;FV7H#=&!_@)e3t
161
+ VTI3*6BgFb<zmb1*`}(Q
162
+ fC)_uKSq8=Eu|y*>n$+<
163
+ )AGOc%(OM8rnIkVNPI$D
164
+ =<86uk$cZzs#sD-clf2q
165
+ AhVd_!7o>#tYChbXvppf
166
+ RUAdV0Gg-rq7nau55wZ5
167
+ ;@RJ;<w^K_nkL2^(z$kC
168
+ T^esP6cTVqb<}!lUc@kH
169
+ 6d*OwBw|!Hs2Fc)x4Kd?
170
+ TkCT1#o{cr=I{~g>5;Su
171
+ 59k48^H&@Hn@1edAM%=^
172
+ #CyLohLV2j$e`XFFbFH!
173
+ %ly2E;(O-1evI&b(W+$%
174
+ 0TO07k+7NW)O@G0c!Pip
175
+ #tnJXzB7_Ft`$omeM^FT
176
+ QF+2~sYuX5L<b6g&W2`~
177
+ 7NRey%!oKJ{YsuUSx|35
178
+ tLn+uRi(*GE2IMT5Ptyc
179
+ z8W%LI%%SdJ8vf7P5?-Y
180
+ f9B^~1@{%tS3;&Jz}2MP
181
+ x@Te_8YrOT=bN^+hAN6K
182
+ j;7>&u9oh4`l%>?)SME{
183
+ pfbCA5Xtc=bV@E>i4REc
184
+ y4C)?iRFkz9N3Q-bjpk|
185
+ ZZ3{k;*V5QmD}8Xs7rI7
186
+ {TlVZfD}tV8C+5>KNeGc
187
+ pia-ojA_)fydaeGK$_j{
188
+ abKuWg2^OMBySCK>QEx-
189
+ *q-vo{uL@UGO?xW&uCR|
190
+ 4RW}D0a<Ku*92=_-=ba1
191
+ 7Un`<&46A``Fu6KL*)1L
192
+ -PMR<R^xDaF6E9492v9v
193
+ f&BYaJjXs{4BvSQns4K7
194
+ !oML8717<{BWLI3l3Qyb
195
+ ?M?+^2@VRuFMbI$>@}vo
196
+ HPFdYjNEK1$>(35*GRRB
197
+ uyMGaIk`j>|KfEwKf}PD
198
+ sv9nyNxJyEn2`}nit2e;
199
+ p6L=3)yiU>J<+q$)Fe-4
200
+ u%VaYFZaq`1J>*^W9jz0
201
+ )W;mUj!2q)`sc9+GR1x4
202
+ h&*LExC`Bg$|lvWHFXtB
203
+ -b|;u9@@gr){AmRKc2x9
204
+ Bc<t9&mfs@a-<Dv*UZNz
205
+ pp!KL2UcF|^?VJ1jS|^B
206
+ 6*oA+qQNZ_$CCNKHcv{`
207
+ >R1WE(59?Lc~h`)h>}XL
208
+ pC4hJE+}2?O?R$Q?rW`*
209
+ 8ddr=f_cl*bal_hQIxVm
210
+ 3)_E_qDl1^99a|HfiJ-k
211
+ _;<o`)Y&B~3<hBaz-i?B
212
+ OFFU&iXEhrE$tu(r{On~
213
+ jyz<%wJFDy(4z@>&w*mJ
214
+ 8<$EE7HNJ*v{@zp)R?rS
215
+ y96ne{FgXB?FC3>hKTat
216
+ mS!ATU7ci05(j7n<}x<p
217
+ AFx^r#cY$@^;uep{4srg
218
+ ;NcXKQo)Cb6xtuc-6D>b
219
+ CyRFdPyuXi1B?z!5$&b2
220
+ $`Dwe@F8+!#wmwXn!EWH
221
+ mk8M>RA@QoZ^&%RC3XKn
222
+ ptvZb)t0{6=GL$SPcUxV
223
+ mka!I{yw_KFKNC(s#O?^
224
+ 5EyFo30vW=cpTfo&UmMQ
225
+ u$4r({e>3C6x22gi$g#@
226
+ ci`aILRjj?);u7giM%1;
227
+ Wn^9W02ACUG%2aN6?><_
228
+ BcjwF6%lnNky>(w=^2dD
229
+ qH+2+j{q+Zr)DF^u#H|k
230
+ YfW<+;An<@N??b&dwf^5
231
+ (|RRvxlM>%h2`{R=5c39
232
+ 5G)YqMZU#p?p=$<Nh&ho
233
+ sk659jjzQ4j;|`WPWghf
234
+ zQcZdk$}yj`9I>V=TTkF
235
+ f)_YO9t2)<Q>TRQFAsg)
236
+ jkE|u$(eZpl(xxibqK>v
237
+ (Y;v;n)LlLB8u8%AUPf2
238
+ (7$E~)x1mBm0w}q7tILE
239
+ B}#y2Gdn<HO#|}qDKDRK
240
+ 4B`Tn@9;ox!UL6Gfex2R
241
+ qm$kug1VeO`p9zeCX3Uh
242
+ qXugE9>rbsTmIFtY2>|g
243
+ 25cR>3Cmm=AN|H}uWq<3
244
+ 7W-t3wyw;0gw`YJ!BTlj
245
+ t(QDTa*?|+_bbdIcuD%y
246
+ r0+Crdg2!Czm(Equ0_gg
247
+ {=isc-t^C!bvP&|5jR!c
248
+ t?fJ|;=&_2ziiBHq??jz
249
+ |I9=v&O%>=&I{uB*VC`g
250
+ Bn8CMH@Hm#aoRbj2~g|Q
251
+ >5$PGcmSI`7u>$6v@9|!
252
+ cC9!8%$$)Tcb$afDdK28
253
+ p{Oq*{d-#cK;4>?c1hbI
254
+ 5igMPpUJ{ehCLcKq*f-R
255
+ (oZG$Ok)XT7w#c*OGTZ~
256
+ usFqqdDITT&X&D|22d^L
257
+ KqT0P>aQc(Ym3mM4*(ss
258
+ bfpkF$h;%c@n9;1RhJ)A
259
+ Y*p420c;}lnP`CWV2b`x
260
+ _7C&=hTm>^jnHVU$v236
261
+ _~<whah<pS9w`Z~ICi3l
262
+ 86_bwKlB$~89YgK5}{9f
263
+ UwDSILDz~h2@3ds?T~A?
264
+ >Go<@>bk;M7nBh|jynsU
265
+ PHBq5KjOYx1_OzMUJL26
266
+ lXUVF+X?;}N8RRDT<FN~
267
+ _{)N(snm^u>U#gTTf)rA
268
+ z9wu~unIxC^F)l3V$lL_
269
+ A!o?r%a+}V*_97C&7(;C
270
+ q`t{@g^rL4QDN^8*8)2^
271
+ =RN&DA8Y^7nRfiET*CYG
272
+ Jn5b!@Qz`IA@%DP%2c%;
273
+ Q^W9+Bc?X<R1FR7m51D~
274
+ _~4AP7H;M(934Z>s)9u9
275
+ r{OzBt4!XE)JZ~nLL-zs
276
+ 2ErLFL;I5Z#1etmq%Lb5
277
+ `k9%d#e1@_7F3=le%~0^
278
+ b2%2yZ8{O|t#4L{PmtLs
279
+ 3qGNB_%n;cwS!}g7c^(r
280
+ O^%L@E9F*y3oC54EI|(a
281
+ t=IRctTBcr@&IzV3Rr}N
282
+ _A)JEGk-l2=UL3TG~2NW
283
+ YjER}-;6mx*$;2INr2S=
284
+ o03yrH~k2!GaJ!MH^>YR
285
+ Ue0ZLbsK2x8xaPlc$MVs
286
+ sXdX;wCPPqE=Xv!=*#eK
287
+ +Is?+%$5%xV(Gnk8md@U
288
+ X+R#}q2y+~+AU})j=pKE
289
+ {rS_+Z!>W?Xd72x0UuV&
290
+ pJWc6SsNvo%x1=6fYsI^
291
+ {)b2^2q@dP$%l8MJG#nd
292
+ f}k3qN<Msc5=-pnf^^Pn
293
+ b;Hi%dg5OA@0q>jpb^MK
294
+ v@IPrP@u;^(~^79a?ut<
295
+ (`=1DYn-bmAOR$HBIIMM
296
+ `{~=y!2*)!^{FReQq7Ez
297
+ `c@6ZB;RXD=G6h{1{4;i
298
+ &bYw2p+n>yqC!gP=fezr
299
+ taUCw6dZPRUCvf82R|>e
300
+ OA{GX=3eblL%+M7u^7qH
301
+ X6(bZ$jYo?e+F$zAI~OO
302
+ Atn_nvDDqnDiY01mD^Lz
303
+ ?%saO55dCr0hHRrIUm(I
304
+ k=G6CVZ_0NlG53=(4H#g
305
+ Rja+s&XB8Pgp1((^C?yu
306
+ hdFzdkAW$(Ixf5Gl<aq2
307
+ t?2vPxi0VOI9drYcuK1g
308
+ KJOFQ)^oaeLi<<*5PY08
309
+ 1HHqTi}B!?M%-)7J)PXF
310
+ 9J!Ds;P6g8doq;P-9arT
311
+ N~oju7>|!)ARwx*Y$Yjv
312
+ e%M=*pDKynh;0IOy`@@s
313
+ H9-_+md<9{vDEtfg4#?1
314
+ J_FL9$J;xvDnpfXc~JP&
315
+ 5HqNOTNccO+8k`9wrjt8
316
+ )t)acC52!)$cLJ{?5Tf9
317
+ 6G*$~H-l;l7&?*KtF;QR
318
+ mIozHb7_l;3P_@z8WEjz
319
+ {nuwdur9uP@!oEEq{SI!
320
+ Wp)nL6LDMOGS>6+($N{`
321
+ y{AVRaLWu)%Jd;hM-X$H
322
+ M6P?Z%+GptOmI_6`A1(G
323
+ L|4mM{Q}7VGL~>`ZlV?(
324
+ R$4Hk*|S++@B3&KWet#F
325
+ r(fL1BI`NbQbr)uQ9Lj|
326
+ JCun4+5%ZD&Q}@_nHw=Q
327
+ sCQaa{ZVhY!k8n2C@!B%
328
+ ;LCOZ0Y699X7VvVdIjf-
329
+ ptyDq*cN@}lXLAzNo$IH
330
+ IlksU+1b=$Q#jDv<(72@
331
+ yK5fp67D!Orm44AH{0xq
332
+ v&r-mnSYscfwG)c|G4Vj
333
+ e)~x%<w*A)b)&)iF}m0)
334
+ j2U@;pq1F}ThYoM8%mU+
335
+ UzH9@kd%OL)%lv9-*-q|
336
+ Q@HJ|S`>|Vo{^tO$ui`}
337
+ m_Y$MTiAr(Te`@fpbv6N
338
+ KlkvtQ%tPst4Y>rtzLo{
339
+ TpndW>WguD;`+b^QHe1c
340
+ $<KCC>2%SkrKDI5ktP0#
341
+ XMoNA7L!Z=#i@QC0_KUu
342
+ kWua2mY&EDe=G2Z$kvZy
343
+ J4-adeyj-rS~D@pXbj*m
344
+ r0)Q2^{)K2$etFPp|EMK
345
+ {5(yB(GNq_@58gv2~tzN
346
+ 612~mm{fe@K5eAki9L-6
347
+ TZK(Kf30BjbGJHj8}qq|
348
+ yRrAw`rE$lT0kMsbkX%L
349
+ {m+qP@`#Xb88olG4`F$S
350
+ $1uKsepjD?!KqQ$(oJ(Q
351
+ Xn9Q15_&aYKXV49aei4(
352
+ <*u_o^FVffn6MPWYR6wr
353
+ EcMC!qooUv_cuhcxlQVF
354
+ J)E|GF2*+2X$4`pOKJ(!
355
+ M(AP$nh~~AiZrWqr+N)c
356
+ *`*y#i5KuI<)<PgAhBUK
357
+ +SkKMu#Vz<Ac1G0vi#u9
358
+ cpGW?sFu?{_f*P*Q79+F
359
+ uy<KBrI{AiD+C1v2pTWe
360
+ sQtA$1^v0Z)_5xOqwFT$
361
+ l0E<_nE+XM))pvTT$UDZ
362
+ 7c|{CIcp$rD7VmMZ=6cg
363
+ WfbTAj`Bk}one$tB%jS=
364
+ iUwQ78%m%0{O*{ZS|A+}
365
+ tLYV8IV~kWMtWp!lnb*Q
366
+ ak0asjW~mU$9nkQKUTDO
367
+ jia3%i{_Q9>%)vBjo;u#
368
+ *;0xSDy4DmkkYXaR+?AI
369
+ 4c$GuCq29L{vTriLtlot
370
+ 4hBVR4@s$6pGtH7<o%>r
371
+ bBMtG<$b`((5g<_877G`
372
+ TU}g5xp}Q_-4zV+r=CFU
373
+ tZwK3hiKW<;a)VThu)vQ
374
+ k~d6wZVL4vC{JP1#!Ecs
375
+ 1>!yafv6RDZNbh5f(On{
376
+ VTMpFPTVX>k5G2TkQTz>
377
+ M~u(KD9JJ&hnjD5VcCfi
378
+ 3*zZ=VHRZB6`z*v#O0qk
379
+ zPjbak4E5E&)pkx3+s7v
380
+ 1^rRz3qe{_<Xp)?8hH#s
381
+ xTm^gSW->Cis=fo=)UJQ
382
+ 4)JT?gserhN)qxNG6#A_
383
+ =XiuwmQ@X;gUQe?9k4o_
384
+ 9ZIyD9#`KKYo5oy;IW+0
385
+ -QCP!I|*njsGtJXwDuE-
386
+ 4GaN}ViGy~%2JK}MT~7M
387
+ CVuE{zkn_I$VoQkpby+x
388
+ HRBjk3d9iqF{(ZpTHO3x
389
+ vvc?O9puf4cf0519WU{k
390
+ cQWUn>`SS~uJ=3ld5@?2
391
+ ;kW<^?LpyOB2LG*cMaB$
392
+ Pr(Nn!T2VF4NB&S9GU6z
393
+ OIn{r&PNYl+1~<%O~A%x
394
+ e4=}L@rWGm6`wTS|7S;r
395
+ QvJ0&*obI7>85Ulo^Cc#
396
+ v6~*+jN9=sHelcDu*HMt
397
+ ?OirQ<ta3LL_mT$sz0tx
398
+ #sdVp9ALjonpls{;n*y;
399
+ &@OixmA3t*bG{(BB(q#_
400
+ Sho&3ZqK%R?wg9!qZ(V7
401
+ WuZcp7$Vnx5`E2q@v(3X
402
+ s_)wqI74s1yN)`+EqEA@
403
+ 4!`^A7lE+ByGgMP#RX=4
404
+ 6z$@cj7cFQv?&wf{0`YV
405
+ hullG75j!q=zTOS-t7|}
406
+ $En&nz4HG?8YMg1qR@%q
407
+ Ka3_TSQE-g`c$y3oeed@
408
+ ^DtIwh~u`1I}?%_YoQ46
409
+ JIu${vrTa>Nc|(;KlqP6
410
+ 6LOiwlD!gyfbC2lR8m^r
411
+ |E2@$G;zPiR7YiS1j-?t
412
+ eVk5YoeG|jR{M*)y7`oX
413
+ CMNV82X6<ZjE-~aY>uO_
414
+ Zo^6~tANgvlfcy!mV279
415
+ PuvAN$}9{ff$H?&$1kU=
416
+ 6=VhQQOBg1MXV;d8?r)C
417
+ vO4sr-jC6ui(#7Srulkl
418
+ Y~mf8C>RL_%E0|QX3_G)
419
+ 51K;71z0x4MySc2fC&`;
420
+ Y>Nmu0Q5HQgQ`C)lK<Y8
421
+ mf^niz-!~3(VozSO3_{=
422
+ X#9>@TLS_<?~>Shwk;im
423
+ Zi($N7{fR+yB6X*-SU4H
424
+ +{fOD#c3ZxfdnhO6DPP4
425
+ ULgXBav>FWBvp0~bb_kF
426
+ B93UL*Ka;9E0xL_G911`
427
+ 3$Y{-$ld2`^W}XXX6FF*
428
+ m<!rPNo74=>_EK{bb#!r
429
+ _<_Lbn;koC*K1rhal^`6
430
+ C82lPqlSnTIo1vs-|N$3
431
+ rbUuRE=2+s`f<VyM5XKU
432
+ f$&qI$ErQ!X)oqMt5se)
433
+ z`MjdTNkx5UQL|>)jI4T
434
+ I-+u*gb~ngp-`D0-hSKc
435
+ ZNI+r98l$|SFj!rBG6Fv
436
+ Gg}wTcRyEPM>P7s&*@{M
437
+ ?-Ox%9>35#DGi`^1aQY$
438
+ i8A)rSBBK+HX^%tm&JoQ
439
+ pB#nDCwu&RGtKQta0xtT
440
+ 0Sf{va5*mem%E-Q@Vk$R
441
+ cUMGXy5X%va3rg6Oa(;m
442
+ fa(^RIvAhzYV)6CK0s|o
443
+ &|*`2<=1M=86?=rE92!H
444
+ TGwJ@Il2dfp;1c==o6~P
445
+ c_q`dWH^3=Dnu%j5MpkQ
446
+ P}}xcO^sz{V(_*Z&wU+}
447
+ )c2l+DM-VD&~j2VLfNQf
448
+ m-bjUq9@pM!A|Po=eJsA
449
+ 9&BI{+~0)U%ARm}3ef$z
450
+ _eE*=im}}XY(zhL;)tYi
451
+ RX`pE1stMF6q%+wy`s0k
452
+ diJ&OJrPkDLTgjoxkOjh
453
+ 5u1aKW>c*?`QN25OAaTz
454
+ PUCi-v*La=%8=Hz&vmop
455
+ Ep2N+{xoP=eQl^WN;eS{
456
+ 27?~2Lj2~jHUXoZLRHif
457
+ ^{__*1)xV7x0e}_r`s#-
458
+ Heu0H2H&MIKSS%|B2ARE
459
+ (Oo>4UPu%qt9D7>r*+t%
460
+ kKs!XBkb}qv=hBEWp`io
461
+ Y0q8?0f#|Dz}HR|zJ@k`
462
+ v2nEbMu)?+{XSyp9*`aA
463
+ wUn;&Y3;IY#Ht8F?-x@)
464
+ ft_v2%}6kIKdaF450Rt=
465
+ 4<N7X>_rX(l11k>SD@0l
466
+ rgt^+RVIi~0@lbz)AJnL
467
+ 1`58}<V<;oBlBq<z{7g*
468
+ 8fQCuKm~Ltxaw7KF!yR#
469
+ <zO7uoQ!C+8dNxCX2Uk6
470
+ o;tweJcLW9OQ#`Vm7rMN
471
+ 2Qyh@w8r-tdZ)i?J--+f
472
+ OIYa93NFG2@stPgySwz?
473
+ 1ja*FX$2?aa>Vk*L70^&
474
+ +Q%Jv5URqUtDwhTM>)h*
475
+ Pv2Dk;UZ<HmoN{uja^|a
476
+ gDkKXZ`w{+Cvl}Bxp$iD
477
+ |By!YPhwrB*HLX(Fi9nS
478
+ nVYfQ-)LwvLK^A`wYoNu
479
+ {v=`)5|i*Hi%5T3k!bXw
480
+ iApMpO2$kdf&g4=M^QV#
481
+ 8bm(_*(e@N@$hRx=<Hgy
482
+ ??5r-2eIj#q<GG_s5_@#
483
+ U6%u3OY+v}D20TKUVy?q
484
+ kFtp$M;ttznpuuKF;j-4
485
+ APmn}qjIL_QpyMWG!!Rj
486
+ L%$3Kp+jh+7%vUx-<?s7
487
+ GtX9z4A8-z+{3{nQn7&l
488
+ Jfa^EHSKBxy!vt867R?@
489
+ $I^s2Psmlgq38-7Mq(h%
490
+ MG`^GOH&Gshp2|84Z6>l
491
+ UYo(V^?>9Ym|Goe_VpxT
492
+ e6B*Xfzm3ro&yhoQv+@e
493
+ +WReJx=lO}B$kHCurafG
494
+ {)67-af>RZzp*d|gFY8o
495
+ zbh<666~qP`|Y3qZrSpt
496
+ %Bdo%Es|q-pow%qRei^(
497
+ @gwkoQSB*wK|Kgb7aA)&
498
+ =)~NYUt<&SkTV78wLPR|
499
+ wn}XBpR0UzidJxx&nxaH
500
+ D*
501
+ ----END PYE FILE----
@@ -0,0 +1,92 @@
1
+ import torch
2
+
3
+
4
+ def finite_difference_jacobian(G, x, p, p2, t, epsilon, auxG, perturbed_p=0):
5
+ """Finite difference Jacobian."""
6
+ nb, nx = x.shape
7
+ if perturbed_p == 0:
8
+ ny = nx
9
+ elif perturbed_p == 1:
10
+ ny = p.shape[1]
11
+ elif perturbed_p == 2:
12
+ ny = p2.shape[1]
13
+ else:
14
+ print("perturbed_p is not set corretly")
15
+ xE = x.repeat_interleave(ny + 1, dim=0).double()
16
+ pE = p.repeat_interleave(ny + 1, dim=0).double()
17
+ p2E = p2.repeat_interleave(ny + 1, dim=0).double()
18
+
19
+ perturbation = torch.eye(ny).unsqueeze(0).expand(nb, -1, -1) * epsilon
20
+ perturbation = torch.cat([torch.zeros(nb, 1, ny), perturbation], dim=1).to(x)
21
+
22
+ expand_num = ny + 1
23
+ # Expand x and add perturbations
24
+ if perturbed_p == 0:
25
+ xE = xE + perturbation.reshape(nb * (ny + 1), ny)
26
+ elif perturbed_p == 1:
27
+ pE = pE + perturbation.reshape(nb * (ny + 1), ny)
28
+ elif perturbed_p == 2:
29
+ p2E = p2E + perturbation.reshape(nb * (ny + 1), ny)
30
+ else:
31
+ print("perturbed_p is not set corretly")
32
+
33
+ # Compute gg for all perturbed inputs in one run
34
+ ggE = G(xE, pE, p2E, t, [expand_num], auxG).view(nb, ny + 1, nx)
35
+
36
+ # Extract the original and perturbed gg
37
+ gg_original = ggE[:, 0, :]
38
+ gg_perturbed = ggE[:, 1:, :]
39
+
40
+ # Compute finite differences
41
+ dGdx = ((gg_perturbed - gg_original.unsqueeze(1)) / epsilon).permute(0, 2, 1)
42
+
43
+ return dGdx, gg_original
44
+
45
+
46
+ def finite_difference_jacobian_p(G, x, p, p2, t, epsilon, auxG):
47
+ """Finite difference Jacobian."""
48
+ nb, np = p.shape
49
+ _, np2 = p2.shape
50
+ _, nx = x.shape
51
+
52
+ xE = torch.cat(
53
+ [x.repeat_interleave(np + 1, dim=0), x.repeat_interleave(np2, dim=0)], dim=0
54
+ ).double()
55
+ pE = torch.cat(
56
+ [p.repeat_interleave(np + 1, dim=0), p.repeat_interleave(np2, dim=0)], dim=0
57
+ ).double()
58
+ p2E = torch.cat(
59
+ [p2.repeat_interleave(np + 1, dim=0), p2.repeat_interleave(np2, dim=0)], dim=0
60
+ ).double()
61
+
62
+ perturbation_p = torch.eye(np).unsqueeze(0).expand(nb, -1, -1) * epsilon
63
+ perturbation_p2 = torch.eye(np2).unsqueeze(0).expand(nb, -1, -1) * epsilon
64
+
65
+ perturbation_p = torch.cat([torch.zeros(nb, 1, np), perturbation_p], dim=1).to(x)
66
+
67
+ perturbation_p2 = perturbation_p2.to(x)
68
+
69
+ pE[: nb * (np + 1), :] = pE[: nb * (np + 1), :] + perturbation_p.reshape(
70
+ nb * (np + 1), np
71
+ )
72
+ p2E[nb * (np + 1) :, :] = p2E[nb * (np + 1) :, :] + perturbation_p2.reshape(
73
+ nb * (np2), np2
74
+ )
75
+ # Expand x and add perturbations
76
+ # xE = x.unsqueeze(1).expand(-1, np + 1, -1).reshape(nb * (np + 1), np) + perturbation.reshape(nb * (np + 1), np)
77
+
78
+ # Compute gg for all perturbed inputs in one run
79
+ ggE = G(xE, pE, p2E, t, [np + 1, np2], auxG)
80
+ ggE_p = ggE[: nb * (np + 1), :].view(nb, np + 1, nx)
81
+ ggE_p2 = ggE[nb * (np + 1) :, :].view(nb, np2, nx)
82
+
83
+ # Extract the original and perturbed gg
84
+ gg_original_p = ggE_p[:, 0, :]
85
+ gg_perturbed_p = ggE_p[:, 1:, :]
86
+
87
+ gg_perturbed_p2 = ggE_p2
88
+
89
+ # Compute finite differences
90
+ dGdp = ((gg_perturbed_p - gg_original_p.unsqueeze(1)) / epsilon).permute(0, 2, 1)
91
+ dGdp2 = ((gg_perturbed_p2 - gg_original_p.unsqueeze(1)) / epsilon).permute(0, 2, 1)
92
+ return dGdp, dGdp2
@@ -0,0 +1,105 @@
1
+ import torch
2
+ import torch.nn.functional as F
3
+
4
+
5
+ def uh_gamma(a, b, lenF=10):
6
+ """Unit hydrograph [time (same all time steps), batch, var]."""
7
+ m = a.shape
8
+ lenF = min(a.shape[0], lenF)
9
+ w = torch.zeros([lenF, m[1], m[2]])
10
+ aa = (
11
+ F.relu(a[0:lenF, :, :]).view([lenF, m[1], m[2]]) + 0.1
12
+ ) # minimum 0.1. First dimension of a is repeat
13
+ theta = F.relu(b[0:lenF, :, :]).view([lenF, m[1], m[2]]) + 0.5 # minimum 0.5
14
+ t = torch.arange(0.5, lenF * 1.0).view([lenF, 1, 1]).repeat([1, m[1], m[2]])
15
+ t = t.to(aa.device)
16
+ denom = (aa.lgamma().exp()) * (theta**aa)
17
+ mid = t ** (aa - 1)
18
+ right = torch.exp(-t / theta)
19
+ w = 1 / denom * mid * right
20
+ w = w / w.sum(0) # scale to 1 for each UH
21
+
22
+ return w
23
+
24
+
25
+ def uh_conv(x, UH, viewmode=1):
26
+ r"""Unit hydrograph convolution.
27
+
28
+ UH is a vector indicating the unit hydrograph the convolved dimension will
29
+ be the last dimension UH convolution is.
30
+ Q(t)= integral(x(\tao)*UH(t-\tao))d\tao
31
+ conv1d does
32
+ integral(w(\tao)*x(t+\tao))d\tao
33
+ hence we flip the UH
34
+ https://programmer.group/pytorch-learning-conv1d-conv2d-and-conv3d.html
35
+ view.
36
+
37
+ x: [batch, var, time]
38
+ UH:[batch, var, uhLen]
39
+ batch needs to be accommodated by channels and we make use of groups
40
+ https://pytorch.org/docs/stable/generated/torch.nn.Conv1d.html
41
+ https://pytorch.org/docs/stable/nn.functional.html
42
+ """
43
+ mm = x.shape
44
+ nb = mm[0]
45
+ m = UH.shape[-1]
46
+ padd = m - 1
47
+ if viewmode == 1:
48
+ xx = x.view([1, nb, mm[-1]])
49
+ w = UH.view([nb, 1, m])
50
+ groups = nb
51
+
52
+ y = F.conv1d(
53
+ xx, torch.flip(w, [2]), groups=groups, padding=padd, stride=1, bias=None
54
+ )
55
+ if padd != 0:
56
+ y = y[:, :, 0:-padd]
57
+ return y.view(mm)
58
+
59
+
60
+ def source_flow_calculation(config, flow_out, c_NN, after_routing=True):
61
+ """Source flow calculation."""
62
+ varC_NN = config['var_c_nn']
63
+ if 'DRAIN_SQKM' in varC_NN:
64
+ area_name = 'DRAIN_SQKM'
65
+ elif 'area_gages2' in varC_NN:
66
+ area_name = 'area_gages2'
67
+ else:
68
+ print("area of basins are not available among attributes dataset")
69
+ area = (
70
+ c_NN[:, varC_NN.index(area_name)]
71
+ .unsqueeze(0)
72
+ .unsqueeze(-1)
73
+ .repeat(flow_out['flow_sim'].shape[0], 1, 1)
74
+ )
75
+ # flow calculation. converting mm/day to m3/sec
76
+ if after_routing:
77
+ srflow = (
78
+ (1000 / 86400) * area * (flow_out['srflow']).repeat(1, 1, config['nmul'])
79
+ ) # Q_t - gw - ss
80
+ ssflow = (
81
+ (1000 / 86400) * area * (flow_out['ssflow']).repeat(1, 1, config['nmul'])
82
+ ) # ras
83
+ gwflow = (
84
+ (1000 / 86400) * area * (flow_out['gwflow']).repeat(1, 1, config['nmul'])
85
+ )
86
+ else:
87
+ srflow = (
88
+ (1000 / 86400)
89
+ * area
90
+ * (flow_out['srflow_no_rout']).repeat(1, 1, config['nmul'])
91
+ ) # Q_t - gw - ss
92
+ ssflow = (
93
+ (1000 / 86400)
94
+ * area
95
+ * (flow_out['ssflow_no_rout']).repeat(1, 1, config['nmul'])
96
+ ) # ras
97
+ gwflow = (
98
+ (1000 / 86400)
99
+ * area
100
+ * (flow_out['gwflow_no_rout']).repeat(1, 1, config['nmul'])
101
+ )
102
+ # srflow = torch.clamp(srflow, min=0.0) # to remove the small negative values
103
+ # ssflow = torch.clamp(ssflow, min=0.0)
104
+ # gwflow = torch.clamp(gwflow, min=0.0)
105
+ return srflow, ssflow, gwflow