Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
89c6e8bb29 | ||
|
|
d4c596a6fe | ||
|
|
d15fa684b7 | ||
|
|
9879094661 | ||
|
|
5ce5478bf4 | ||
|
|
0dbea26a2e | ||
|
|
b0e0dc75f1 | ||
|
|
318f6a4668 | ||
|
|
fdb5cd23e7 | ||
|
|
e064c1aee5 | ||
|
|
e0bc481ae2 | ||
|
|
081e6e7322 | ||
|
|
a0d8b9ea43 | ||
|
|
d97620ad56 | ||
|
|
6d4dc3a22b | ||
|
|
74d23386a7 | ||
|
|
9f46bcd853 | ||
|
|
bcc9dd1a0d | ||
|
|
fc40552d68 | ||
|
|
f41050fe5c | ||
|
|
97f487c0af | ||
|
|
499e16975f | ||
|
|
75f3c07cd9 | ||
|
|
0a0c00d877 | ||
|
|
8d2c18b6af | ||
|
|
2d2f83436c | ||
|
|
beece68498 | ||
|
|
d8e9d786d9 | ||
|
|
7ef305e724 | ||
|
|
5da607865c | ||
|
|
1f5ce72fb2 | ||
|
|
b6be245764 | ||
|
|
46d0f52b3e | ||
|
|
80f0b181d1 | ||
|
|
9161c54e18 | ||
|
|
64d9e456b7 | ||
|
|
846aaeadf0 | ||
|
|
eaf8d7364a | ||
|
|
54bfff9623 | ||
|
|
237364a4e2 | ||
|
|
c3288b44bb | ||
|
|
70128bbdd1 | ||
|
|
a88a164ead | ||
|
|
d6aeb5df21 | ||
|
|
32db5795da | ||
|
|
a81a641d41 | ||
|
|
53da35d959 | ||
|
|
0f1d1b0797 | ||
|
|
6586a7b191 | ||
|
|
b7aab9f263 | ||
|
|
ef34fecc31 | ||
|
|
e9aa980c88 | ||
|
|
ab495efc65 | ||
|
|
14e13d6624 | ||
|
|
8db099c5c7 | ||
|
|
b503e54210 | ||
|
|
68e4dfb598 | ||
|
|
63dfab6654 | ||
|
|
707577521f | ||
|
|
3458a5df9f | ||
|
|
e19eeedcc3 | ||
|
|
c95de5e606 | ||
|
|
53f7f380ae | ||
|
|
2028d84554 | ||
|
|
da28bae6c5 | ||
|
|
944f99f14b | ||
|
|
8978cc3482 | ||
|
|
f08d4b1a37 | ||
|
|
824fbe506e | ||
|
|
deb84ca331 | ||
|
|
5b778af745 | ||
|
|
776d9ab610 | ||
|
|
587e5412d5 | ||
|
|
ef5430ae2c | ||
|
|
059d7203a9 | ||
|
|
82b6cbfd72 | ||
|
|
c170dbc46c | ||
|
|
890dbd9d32 | ||
|
|
f17b395c4c | ||
|
|
a44dddb51b | ||
|
|
0fdb362313 | ||
|
|
50fa4f7bd8 | ||
|
|
9309aa9d2d | ||
|
|
dd31ffc5a2 | ||
|
|
3d467c9620 | ||
|
|
f95c646ef3 | ||
|
|
c0000bb332 | ||
|
|
cdbcb2b539 | ||
|
|
252ac257fe | ||
|
|
afe0217655 | ||
|
|
516efb64e8 | ||
|
|
4cad251e57 | ||
|
|
48e9c14525 | ||
|
|
db62af6f71 | ||
|
|
b468a1eb70 | ||
|
|
b9ab202e3f | ||
|
|
129dde1c57 | ||
|
|
ff2d3926b1 | ||
|
|
fefc6ebc4f | ||
|
|
0076faf03a | ||
|
|
bbdd18e8ef | ||
|
|
87d31c134e | ||
|
|
ce04f5fd1e | ||
|
|
435ccd1f2d | ||
|
|
74c28d40a6 | ||
|
|
7b2c276643 | ||
|
|
0e1264ca4f | ||
|
|
defcb3af84 | ||
|
|
5cf0a0ec76 | ||
|
|
1c44590def | ||
|
|
53732744f4 | ||
|
|
5e95c286a9 | ||
|
|
6175e8a03e | ||
|
|
8e3d784e92 | ||
|
|
698e300690 | ||
|
|
e3fbe59585 | ||
|
|
0c7fecb123 | ||
|
|
78eed7af13 | ||
|
|
6f5743a030 | ||
|
|
d027946fb2 | ||
|
|
37ea83d42a | ||
|
|
ae39f33131 | ||
|
|
291f80e904 | ||
|
|
61baaeeffb | ||
|
|
68aabb343d | ||
|
|
f2d6e07931 | ||
|
|
123259c2ef | ||
|
|
816d7663b5 | ||
|
|
9b9202c739 | ||
|
|
57f82415bd | ||
|
|
36c93a0c93 | ||
|
|
3cd1dbab49 | ||
|
|
4e3da95b1d | ||
|
|
0d0c4f913e | ||
|
|
600f86aeb4 | ||
|
|
c9bb222bff | ||
|
|
456559ffe2 | ||
|
|
6d58c09104 | ||
|
|
bc87d6add1 | ||
|
|
3fe49b70d0 | ||
|
|
5287f30636 | ||
|
|
67433ae325 | ||
|
|
d27ce9d1d8 | ||
|
|
c8ea9bd774 | ||
|
|
885c8ea502 | ||
|
|
c8b32f9877 | ||
|
|
cf61fd8d09 | ||
|
|
cac20d4f24 | ||
|
|
965443a8f9 | ||
|
|
02be084faf | ||
|
|
bb2e83b6ce | ||
|
|
c09c62f077 | ||
|
|
7a2e93a995 | ||
|
|
4a94c946d1 | ||
|
|
5327c29641 | ||
|
|
be865102a8 | ||
|
|
2dca5d2905 | ||
|
|
b5ae352af5 | ||
|
|
868215705c | ||
|
|
37f1b43b93 | ||
|
|
16f0775783 | ||
|
|
f2c4285b4c | ||
|
|
ee95f0e89e | ||
|
|
1306977954 | ||
|
|
476fa81bc2 | ||
|
|
6d16d9dff4 | ||
|
|
b60ab881b1 | ||
|
|
f2d76a0d67 | ||
|
|
5dcc82d81e | ||
|
|
a01e47f205 | ||
|
|
c87563b7ed | ||
|
|
246b411114 | ||
|
|
e8f1f0ac43 | ||
|
|
cfbc2d96a1 | ||
|
|
1adf24ce77 | ||
|
|
a61d130baa | ||
|
|
0a1760cee6 | ||
|
|
3e094af325 | ||
|
|
762e4d70a0 | ||
|
|
6c4f863b96 | ||
|
|
b87f82f74d | ||
|
|
ffad53a331 | ||
|
|
b2ca1c2ab7 | ||
|
|
2cbfaec0c2 | ||
|
|
95dd648b90 | ||
|
|
662a218e41 | ||
|
|
0501ae9bec | ||
|
|
7fd38eec00 | ||
|
|
4bab4580ad | ||
|
|
21d2e6ad20 | ||
|
|
d0a8f369ef | ||
|
|
fef2e1a40c | ||
|
|
20c2cb7ea4 | ||
|
|
333a8a0970 | ||
|
|
64a26e987e | ||
|
|
eb233847de | ||
|
|
7bb810d427 | ||
|
|
e49724072b | ||
|
|
3664ba93e9 | ||
|
|
a9903e987b | ||
|
|
f9a88a211c | ||
|
|
32535af3e6 | ||
|
|
fa8948c1b6 | ||
|
|
2d5455c09d | ||
|
|
83680bbe57 | ||
|
|
1d1a00a0ff | ||
|
|
ffd95b9fdf | ||
|
|
ecb2544cab | ||
|
|
9c66021b53 | ||
|
|
8255fc3c1b | ||
|
|
32e7413aad | ||
|
|
d87db5fd48 | ||
|
|
388368adad | ||
|
|
4d014d5a1d | ||
|
|
181a6c226f | ||
|
|
1975ed7eaa | ||
|
|
565a7530fb | ||
|
|
32cbc6bc3e | ||
|
|
7d7a05c04c | ||
|
|
6ac268b668 | ||
|
|
19c72892a8 | ||
|
|
9717968e08 | ||
|
|
e19c3229bd | ||
|
|
b3c6f1031b | ||
|
|
c2d93b4a4a | ||
|
|
76430322dd | ||
|
|
31ae0ab8e0 | ||
|
|
8182d434ec | ||
|
|
da78d0cdb1 | ||
|
|
850db144ac | ||
|
|
0f6709075f | ||
|
|
e86b84b0b9 | ||
|
|
e08d212986 | ||
|
|
7b88d955e5 | ||
|
|
d1c34fb437 | ||
|
|
611f9cdfa3 | ||
|
|
bd2fc22e96 | ||
|
|
efa16837d8 | ||
|
|
db7aad26fd | ||
|
|
229b3da2d1 | ||
|
|
48d6728e1e | ||
|
|
c51c06e6ec | ||
|
|
a425c9a6ac | ||
|
|
e79ae8ebf5 | ||
|
|
e3020d15ba | ||
|
|
83e0ecbdc7 | ||
|
|
3087023caa | ||
|
|
7e080767da | ||
|
|
44c3a91d72 | ||
|
|
26dc7d8761 | ||
|
|
e573fa4197 | ||
|
|
7aa0cf4361 | ||
|
|
c3faf45f75 | ||
|
|
fb8b5aa77f | ||
|
|
8183a284af | ||
|
|
09997a0074 | ||
|
|
c44597dfbd | ||
|
|
b1632eaea5 | ||
|
|
a2461af084 | ||
|
|
5c366839f3 | ||
|
|
311df46a2c | ||
|
|
a235f61044 | ||
|
|
0b80b86d31 | ||
|
|
0c7ede5f43 | ||
|
|
445c1ac7ba | ||
|
|
c687e05d8f | ||
|
|
5fb6fecc24 | ||
|
|
3dfbdc328e | ||
|
|
97d87f2455 | ||
|
|
a78be47e2b | ||
|
|
eed2ce4243 | ||
|
|
78ba7b70b4 | ||
|
|
f86cd4602c | ||
|
|
ee28afac86 | ||
|
|
81ff6372e9 | ||
|
|
61156f1c3e | ||
|
|
e26b170b05 | ||
|
|
ddbaa0fb94 | ||
|
|
64d2b2678a | ||
|
|
3a3b5ea2dd | ||
|
|
7cb3ac8a80 | ||
|
|
190ca5d171 | ||
|
|
5d8ec51417 | ||
|
|
d922436ada | ||
|
|
4537a829af | ||
|
|
363b9c7132 | ||
|
|
f9d83ac68c | ||
|
|
63b5cbaba7 | ||
|
|
1989914aef | ||
|
|
2c0b155baf | ||
|
|
4d20c2457a | ||
|
|
2dd9003721 | ||
|
|
94ceb44fd4 | ||
|
|
ab50d2adf4 | ||
|
|
0eb979256f | ||
|
|
5ce94a63d3 | ||
|
|
42ea50d62e | ||
|
|
0df4cf0fd5 | ||
|
|
ccf3da114b | ||
|
|
348417977d | ||
|
|
914a1f8866 | ||
|
|
cbbbeeac0b | ||
|
|
c9ea726bfb | ||
|
|
fa88e05d91 | ||
|
|
a6915020cb | ||
|
|
ea2287215e | ||
|
|
e940dead70 | ||
|
|
b6a6d54a22 | ||
|
|
11a95cb391 | ||
|
|
084c22836b | ||
|
|
726b81bf12 | ||
|
|
7c3de520d9 | ||
|
|
b450796df5 | ||
|
|
b1daadf9f2 | ||
|
|
c38e3ee446 | ||
|
|
606b9919e3 | ||
|
|
e3de7e7100 | ||
|
|
92fae0e13f | ||
|
|
a8b260ad38 | ||
|
|
faff877c80 | ||
|
|
0a0eeb3c3f | ||
|
|
cdcbbc2cf4 | ||
|
|
7565d8ee95 | ||
|
|
11e1302e05 | ||
|
|
99cb2883a1 | ||
|
|
e61dede7f8 | ||
|
|
cb4dfab482 | ||
|
|
377c508038 | ||
|
|
30e34b6847 | ||
|
|
102702e1df | ||
|
|
c014f0ef34 | ||
|
|
e615a6b9d4 | ||
|
|
f1dca727c6 | ||
|
|
2db1f4c7f7 | ||
|
|
b3d631943c | ||
|
|
b6895ae99c | ||
|
|
9f26a7323c | ||
|
|
2a7e322ee5 | ||
|
|
13a44264ac | ||
|
|
6165719829 | ||
|
|
51dd6d27c5 | ||
|
|
cea4dcd9cb | ||
|
|
e1c1f411c3 | ||
|
|
4550fc95d7 | ||
|
|
1f97af9c03 | ||
|
|
df9e1ec42d | ||
|
|
ac79fae1fb | ||
|
|
fe39f07981 | ||
|
|
b578e0c50c | ||
|
|
4408a8f368 | ||
|
|
d3e922af6e | ||
|
|
8adf878584 | ||
|
|
aa6973813f | ||
|
|
e21a64fcad | ||
|
|
8b6308d3c9 | ||
|
|
bc3ea9c4b9 | ||
|
|
04ea55e21a | ||
|
|
a68270ff67 | ||
|
|
c498ed2d96 | ||
|
|
e6d059bc19 | ||
|
|
cc500ceccf | ||
|
|
7a91969f41 | ||
|
|
6bd3605d10 | ||
|
|
6c6da90952 | ||
|
|
539b63f765 | ||
|
|
e755459004 | ||
|
|
a8f95e2386 | ||
|
|
55b200a48e | ||
|
|
6b8d7c2df2 | ||
|
|
eb7c4895ca | ||
|
|
a060dbd461 | ||
|
|
9379f7a27d | ||
|
|
19fedc2278 | ||
|
|
260efc17a9 | ||
|
|
a4026d6386 | ||
|
|
d6f7755d12 | ||
|
|
00b89635f3 | ||
|
|
f54dc07432 | ||
|
|
3bbc55b4be | ||
|
|
b58d3e005d | ||
|
|
870bb41ff7 | ||
|
|
0701531d37 | ||
|
|
43eb486700 | ||
|
|
82eeb9a478 | ||
|
|
432c263cdf | ||
|
|
c2d28b0110 | ||
|
|
23361d142e | ||
|
|
63836527c7 | ||
|
|
4f6e8249e0 | ||
|
|
ab2f775b95 | ||
|
|
bb0e176956 | ||
|
|
c0d4aced5e | ||
|
|
4ed865759a | ||
|
|
70e09d3b3a | ||
|
|
2bcfa4d121 | ||
|
|
5b497d61f0 | ||
|
|
242df7f648 | ||
|
|
421e6797f6 | ||
|
|
0886956ec8 | ||
|
|
9670bde56f | ||
|
|
3277cf551b | ||
|
|
ad5cc831a3 | ||
|
|
b00cca953e | ||
|
|
1f35020e3f | ||
|
|
f0994dd801 | ||
|
|
d002eebd49 | ||
|
|
e3ffac9ce0 | ||
|
|
e8a4d5eeed | ||
|
|
fc090dadce | ||
|
|
25e4786484 | ||
|
|
81e85ab488 | ||
|
|
201b1099bd | ||
|
|
b6054dd633 | ||
|
|
912843be25 | ||
|
|
bf49a7fc87 | ||
|
|
d77be00bcc | ||
|
|
ff0fa8ae8e | ||
|
|
92f4793181 | ||
|
|
5eaac204d5 | ||
|
|
7ef41ad886 | ||
|
|
ada396f26d | ||
|
|
674247db09 | ||
|
|
5fecd29666 | ||
|
|
71e1324a0f | ||
|
|
07cae542b0 | ||
|
|
b693f67b99 | ||
|
|
18a3d51d75 | ||
|
|
118a39bd5c | ||
|
|
5357eb9735 | ||
|
|
0946212c4b | ||
|
|
d6ab44d18e | ||
|
|
1db1a543c7 | ||
|
|
2009e8223b | ||
|
|
bdaa38ea5c | ||
|
|
713732b1dd | ||
|
|
f053539cdd | ||
|
|
fc6916bb3e | ||
|
|
97c26cb4fb | ||
|
|
10c98bb96e | ||
|
|
3e92a0c40d | ||
|
|
7c2d9891d0 | ||
|
|
3c3ac1f1df | ||
|
|
80af278a0f | ||
|
|
f3c461cbd9 | ||
|
|
f254eaee25 | ||
|
|
012408d19e | ||
|
|
f7e563e71a | ||
|
|
81c6d39c1a | ||
|
|
5adb0bdee5 | ||
|
|
d682443e1d | ||
|
|
64c99d46d4 | ||
|
|
0f0defb36f | ||
|
|
1e1ee67d4b | ||
|
|
5bc514c565 | ||
|
|
c065b19ef8 | ||
|
|
1da3461dfe | ||
|
|
b20a4c3c3d | ||
|
|
d66e75c183 | ||
|
|
31b4c47379 | ||
|
|
71bba499e0 | ||
|
|
7a08fa42d9 | ||
|
|
18a008462a | ||
|
|
d81da59398 | ||
|
|
3ab1eabe75 | ||
|
|
cf4f860db8 | ||
|
|
c68e3337ef | ||
|
|
dd5eecb1e2 | ||
|
|
db1ae613d6 | ||
|
|
a800816cda | ||
|
|
d4ef06c7c1 | ||
|
|
95d1d231c9 | ||
|
|
10b278e26f | ||
|
|
0550eef2eb | ||
|
|
73eb9919eb | ||
|
|
9116009b0b | ||
|
|
4e4ceb5074 | ||
|
|
d79e2ff187 | ||
|
|
d4a2594239 | ||
|
|
b666162bdf | ||
|
|
d705accaed | ||
|
|
d93917b081 | ||
|
|
ceff5f3083 | ||
|
|
97762756f8 | ||
|
|
2c49e991b4 | ||
|
|
c2a8f38ef5 | ||
|
|
f8a41fce08 | ||
|
|
624ae826eb | ||
|
|
d47dc0687e | ||
|
|
117e5222e4 | ||
|
|
b1c7a77f37 | ||
|
|
7b833390f1 | ||
|
|
ae08642116 | ||
|
|
c1905aa7e1 | ||
|
|
97ece018aa | ||
|
|
7f0102a881 | ||
|
|
786923bdbf | ||
|
|
deb9b2069f | ||
|
|
9308a73e8e | ||
|
|
869e116ad0 | ||
|
|
a2f3d22001 | ||
|
|
2e360943b2 | ||
|
|
8976f054c7 | ||
|
|
7bce725c63 | ||
|
|
5c83d67865 | ||
|
|
6e52b1681e | ||
|
|
f27b2cc586 | ||
|
|
1ed5d69bf4 | ||
|
|
5bb6cc40fe | ||
|
|
4c0a12dcf9 | ||
|
|
a308af41e0 | ||
|
|
02db91f3d7 | ||
|
|
4cf4015579 | ||
|
|
291b97ac9b | ||
|
|
b04e367e72 | ||
|
|
81d58122d6 | ||
|
|
874f592cf4 | ||
|
|
9b0bdd1e63 | ||
|
|
d934b5e381 | ||
|
|
14549330b9 | ||
|
|
2487bec6d6 | ||
|
|
4e1acfecdc | ||
|
|
c63c776989 | ||
|
|
44a8be6be3 | ||
|
|
a5a64f2080 | ||
|
|
16ee5a90e4 | ||
|
|
7ca6e69526 | ||
|
|
279fa0bf5e | ||
|
|
abe24611b3 | ||
|
|
17a18dde18 | ||
|
|
044818072e | ||
|
|
8bd791b2c4 | ||
|
|
c8d0d0c212 | ||
|
|
d31be61af8 | ||
|
|
a8a408b5d5 | ||
|
|
ff9d25412c | ||
|
|
de7f3e63b1 | ||
|
|
879c151524 | ||
|
|
7990a60d8b | ||
|
|
8aa0e25da2 | ||
|
|
1e6a578890 | ||
|
|
1dca9b98df | ||
|
|
de180b3635 | ||
|
|
5ca763ac8c | ||
|
|
188486f33a | ||
|
|
bc08d06bb1 | ||
|
|
05e039011a | ||
|
|
7640123299 | ||
|
|
e6dd983f97 | ||
|
|
002ebc5928 | ||
|
|
84486c03ed | ||
|
|
dc7dfb2414 | ||
|
|
ee01beb844 | ||
|
|
a31e2127e7 | ||
|
|
68b62a5630 | ||
|
|
990d44dd07 | ||
|
|
819ae41c00 | ||
|
|
bf95b7f7e6 | ||
|
|
861b78b928 | ||
|
|
a29df8f904 | ||
|
|
08c414a66e | ||
|
|
97ebf9324a | ||
|
|
0112ad63d9 | ||
|
|
bcbb440ad4 | ||
|
|
57a80d00aa | ||
|
|
70eae5f7d2 | ||
|
|
e2a65e2cdd | ||
|
|
f03b74614e | ||
|
|
532b3fd7fd | ||
|
|
64df4129d4 | ||
|
|
f6e35e2045 | ||
|
|
a97717a624 | ||
|
|
3f650de52f | ||
|
|
1f4bda7976 | ||
|
|
a4423e45f8 | ||
|
|
1386c592bf | ||
|
|
016f3fc73c | ||
|
|
7ef3184699 | ||
|
|
5f6c823301 | ||
|
|
a42c46f4d2 | ||
|
|
fb09cf254e | ||
|
|
315b913fd0 | ||
|
|
0383dc18ae | ||
|
|
f16856d23b | ||
|
|
e640fa1bc0 | ||
|
|
df3b3b604d | ||
|
|
21e6c410e2 | ||
|
|
19045329dc | ||
|
|
4586ef79f7 | ||
|
|
bc4557e21f | ||
|
|
f97d4ce3c5 | ||
|
|
f6e08f203c | ||
|
|
5dcbc6b4e1 | ||
|
|
ebe906fce0 | ||
|
|
cd4f626218 | ||
|
|
c1eb2cf447 | ||
|
|
5fec95cc4d | ||
|
|
46b943c800 | ||
|
|
fa8fe508a7 | ||
|
|
911a2bbbff | ||
|
|
2a926a8d73 | ||
|
|
d222842313 | ||
|
|
2942b6e442 | ||
|
|
926cade437 | ||
|
|
13b4413b36 | ||
|
|
706a900c8e | ||
|
|
da03f39425 | ||
|
|
f516db0e48 | ||
|
|
8744e1d73e | ||
|
|
6113d9f4cd | ||
|
|
1dd92cb089 | ||
|
|
8f6255c2cd | ||
|
|
6c4f6e269c | ||
|
|
82b0837d8c | ||
|
|
137489cc1f | ||
|
|
4dc4dfdda0 | ||
|
|
7d42c164fc | ||
|
|
ae15311471 | ||
|
|
dbcdace348 | ||
|
|
9375827949 | ||
|
|
739f401fac | ||
|
|
5f5a47679d | ||
|
|
26d1d63edb | ||
|
|
1b2f98494b | ||
|
|
381bc37d13 | ||
|
|
e7b63fe270 | ||
|
|
80ae4c36ad | ||
|
|
936bfc753a | ||
|
|
f0ccf1f4f7 | ||
|
|
3a3c4d9d73 | ||
|
|
41cffd13e0 | ||
|
|
9270dd0ff1 | ||
|
|
ba8a50e0b9 | ||
|
|
9c69f2ce6d | ||
|
|
e7a27c798a | ||
|
|
ddc612328e | ||
|
|
d05d1e6914 | ||
|
|
8bcf776813 | ||
|
|
589e591d3b | ||
|
|
e2e8c5ec9e | ||
|
|
fce034419d | ||
|
|
d9aea9eb3c | ||
|
|
4cddd43f5a | ||
|
|
becc1696cb | ||
|
|
cf4957551f | ||
|
|
794b06d55a | ||
|
|
f51f742e00 | ||
|
|
31fe765e51 | ||
|
|
40cc188815 | ||
|
|
303f6bb35b | ||
|
|
9043b6e2a3 | ||
|
|
0608b9175e | ||
|
|
ea7fda6b28 | ||
|
|
090326b75c | ||
|
|
b582e133a1 | ||
|
|
78e6f7e5a7 | ||
|
|
8173eb8de9 | ||
|
|
591cd8950c | ||
|
|
7c4c772f43 | ||
|
|
3a78d6d6f7 | ||
|
|
bbf85a6048 | ||
|
|
6dfa876809 | ||
|
|
aff86a2ffa | ||
|
|
1eb925f3dd | ||
|
|
701d76240e | ||
|
|
37ea9e9083 | ||
|
|
6457b3ad25 | ||
|
|
cba5b948de | ||
|
|
4ba232a7e4 | ||
|
|
05f3f0fc7e | ||
|
|
89a5d78ced | ||
|
|
5fc4e3903a | ||
|
|
1b70e22a58 | ||
|
|
22aeda105e | ||
|
|
7181122a3a | ||
|
|
76ce34c4ea | ||
|
|
c58620fdc2 | ||
|
|
a6341dedd2 | ||
|
|
ba7171326c | ||
|
|
78b4269a69 | ||
|
|
a30bf8e364 | ||
|
|
bd1edbaf30 | ||
|
|
bdf9264963 | ||
|
|
befe1a550d | ||
|
|
f4d3f2b28f | ||
|
|
2a1c8c1e57 | ||
|
|
a3da09cf5b | ||
|
|
017f26c03d | ||
|
|
1e2a123693 | ||
|
|
2916afb974 | ||
|
|
37963b7b21 | ||
|
|
e5b4c998cb | ||
|
|
4bf0ad40b1 | ||
|
|
420d766ae5 | ||
|
|
645a76b0e8 | ||
|
|
6288f039d2 | ||
|
|
3585b29b03 | ||
|
|
96bac8ee1f | ||
|
|
e7d14e7aa3 | ||
|
|
6b14ed7efe | ||
|
|
3d40f599d6 | ||
|
|
6ec677a047 | ||
|
|
7bb0c9d57e | ||
|
|
ec2a1da6b6 | ||
|
|
a072a28929 | ||
|
|
fc7d732e0a | ||
|
|
cc5d86328b | ||
|
|
e3cbe3cf1f | ||
|
|
9482aaf523 | ||
|
|
e0cee0fbef | ||
|
|
f9a8512477 | ||
|
|
1457db721b | ||
|
|
7774d2d7af | ||
|
|
e6d3564d9b | ||
|
|
d62e703439 | ||
|
|
0346080e16 | ||
|
|
76559f6af8 | ||
|
|
04ce79462c | ||
|
|
ffa065a3e6 | ||
|
|
0e1e3665a6 | ||
|
|
c64bcd1ff7 | ||
|
|
dd84b83302 | ||
|
|
084223037c | ||
|
|
072840a18c | ||
|
|
3ef13666dc | ||
|
|
e344678ac5 | ||
|
|
1f79e6510d | ||
|
|
b94c37dd3b | ||
|
|
b61c4da8f1 | ||
|
|
ba60585550 | ||
|
|
0ed7660e72 | ||
|
|
8b4ff41b96 | ||
|
|
8769fa260d | ||
|
|
2667737490 | ||
|
|
7cb3982a1f | ||
|
|
2336dd22f3 | ||
|
|
f13ab03192 | ||
|
|
0df813b0d2 | ||
|
|
2faebfd402 | ||
|
|
7094ff3e62 | ||
|
|
c6ab2647c1 | ||
|
|
b62d1429c0 | ||
|
|
23a0bc33fa | ||
|
|
93340a48b1 | ||
|
|
0379a8ee02 | ||
|
|
6cce02650b | ||
|
|
6e79fe4cd5 | ||
|
|
f66d8c7a34 | ||
|
|
826e532605 | ||
|
|
fc35f2fbcc | ||
|
|
216239bfce | ||
|
|
739eb56006 | ||
|
|
468405d4ea | ||
|
|
31af83ba02 | ||
|
|
45fddb9459 | ||
|
|
05dcd3bcca | ||
|
|
89a898410f | ||
|
|
4a0456cbce | ||
|
|
a525d8a2b0 | ||
|
|
d7fcf62e12 | ||
|
|
4ac86b9acb | ||
|
|
00c9ecde52 | ||
|
|
ae49908a42 | ||
|
|
37cf42c524 | ||
|
|
c43a26870e | ||
|
|
5a6574921a | ||
|
|
7fa86c29e7 | ||
|
|
a3f20796d7 | ||
|
|
835d73789e | ||
|
|
f0ac170d2f | ||
|
|
b154e3d03b | ||
|
|
633e5a53dc | ||
|
|
3f98cf8625 | ||
|
|
36fe9a51c4 | ||
|
|
74ab3aa522 | ||
|
|
cfdf175f9d | ||
|
|
c07a863018 | ||
|
|
243941db51 | ||
|
|
d6c1316178 | ||
|
|
f35048b89f | ||
|
|
24d92b2ac0 | ||
|
|
c702862bc4 | ||
|
|
400f6be9e3 | ||
|
|
5fc6951060 | ||
|
|
5ba38d5cd6 | ||
|
|
3e8132646d | ||
|
|
5aef0bbf3c | ||
|
|
bb3dadc0c7 | ||
|
|
7bb176e7c7 | ||
|
|
8c16e4ed58 | ||
|
|
e9315d9be7 | ||
|
|
46738cec6b | ||
|
|
e576bb15f1 | ||
|
|
26d18d26e9 | ||
|
|
8bac416ab5 | ||
|
|
e6aa840633 | ||
|
|
4b976d3b5f | ||
|
|
e3315c8f81 | ||
|
|
6bcbd006f1 | ||
|
|
c60a0938eb | ||
|
|
4d026afb2c | ||
|
|
4e888d9db0 | ||
|
|
440996b636 | ||
|
|
ed1a1a71ac | ||
|
|
cbe3ad0084 | ||
|
|
46935fde45 | ||
|
|
ca8dc19c83 | ||
|
|
e4a31b3497 | ||
|
|
406dc2bdd4 | ||
|
|
c325f61fce | ||
|
|
d3729cfe77 | ||
|
|
fa8f07b97e | ||
|
|
52c153fa84 | ||
|
|
21bd87f74b | ||
|
|
4d08f3c271 | ||
|
|
e44bbd5a3c | ||
|
|
f827f6bf13 | ||
|
|
4be68ba98d | ||
|
|
e47edea63b | ||
|
|
8daf89d1c4 | ||
|
|
0fa3ca5fad | ||
|
|
e3229c8183 | ||
|
|
c8606cf445 | ||
|
|
09029dc993 | ||
|
|
0a97070b90 | ||
|
|
4f57179a2e | ||
|
|
d0d7d91ab7 | ||
|
|
8497d151ab | ||
|
|
8a98f2bbca | ||
|
|
181aea2805 | ||
|
|
6a762275b6 | ||
|
|
a64430691c | ||
|
|
3cd6d31731 | ||
|
|
af30fde81a | ||
|
|
589b8dcd23 | ||
|
|
4e87135bf4 | ||
|
|
f636236935 | ||
|
|
c3d732b426 | ||
|
|
9b6abadb5a | ||
|
|
686b01c43a | ||
|
|
04afbf2f84 | ||
|
|
75f2796748 | ||
|
|
45179bc542 | ||
|
|
67729e94bf | ||
|
|
c53e82a423 | ||
|
|
02ccfa9ed7 | ||
|
|
fc5de2a097 | ||
|
|
0753c4e1b7 | ||
|
|
d8c2634a66 | ||
|
|
6f7a891a6d | ||
|
|
e4224e6358 | ||
|
|
aa8a9dccbf | ||
|
|
1732e30e58 | ||
|
|
9eedd1fff9 | ||
|
|
ac6e8a3704 | ||
|
|
c5f918c885 | ||
|
|
230712c3ea | ||
|
|
2e2f054a4f | ||
|
|
8913a774ea | ||
|
|
36c3785cde | ||
|
|
f75a25d010 | ||
|
|
5ed905df71 | ||
|
|
ea4fa81cc4 | ||
|
|
8862be991e | ||
|
|
8aea55909e | ||
|
|
1289967abb | ||
|
|
41d1fb9d59 | ||
|
|
8d9a196059 | ||
|
|
9db90debeb | ||
|
|
2333ab540e | ||
|
|
c81d65f527 | ||
|
|
bf44f5c027 | ||
|
|
d1400f12a6 | ||
|
|
c610717220 | ||
|
|
5edcf15072 | ||
|
|
e4bffce6f4 | ||
|
|
54fe032791 | ||
|
|
c668dddcfd | ||
|
|
bdc975f280 | ||
|
|
4315fb94f3 | ||
|
|
eb1163f712 | ||
|
|
42f3c02c3e | ||
|
|
31ebcf07e0 | ||
|
|
95612e8ce9 | ||
|
|
e56d88937a | ||
|
|
8c697a9621 | ||
|
|
2d3747b3d3 | ||
|
|
b38e252746 | ||
|
|
f1d6eb8990 | ||
|
|
c2c77304d7 | ||
|
|
0b051ad3c6 | ||
|
|
b72ffe03c3 | ||
|
|
01de0cfe93 | ||
|
|
d6f152958f | ||
|
|
b85962bfcd | ||
|
|
a1ae3f42f4 | ||
|
|
21876586df | ||
|
|
a317cd849f | ||
|
|
3b8a49d429 | ||
|
|
872235e94f | ||
|
|
da7ef60bef | ||
|
|
824669f70f | ||
|
|
558085705f | ||
|
|
19a3f3d310 | ||
|
|
49aab685fb | ||
|
|
4383599d30 | ||
|
|
ae6bca3033 | ||
|
|
1266884f93 | ||
|
|
f91527464d | ||
|
|
58f72cfa6b | ||
|
|
97f8a3ccde | ||
|
|
69134303d2 | ||
|
|
cef67540c2 | ||
|
|
ff38571933 | ||
|
|
5d0109769d | ||
|
|
6852b08cfc | ||
|
|
2896c604a5 | ||
|
|
b21b6be9ca | ||
|
|
5f043468ee | ||
|
|
e25a3ae98c | ||
|
|
4f69553bd3 | ||
|
|
38560cdcf5 | ||
|
|
7cd4d070ac | ||
|
|
e6b36f3fe5 | ||
|
|
36597d9b3d | ||
|
|
c4e965a631 | ||
|
|
15da23183b | ||
|
|
77baba0893 | ||
|
|
55da743977 | ||
|
|
a19ab7aa79 | ||
|
|
29d4c7c146 | ||
|
|
e711f0fb6f | ||
|
|
36fd8cdc8a | ||
|
|
4a24e39224 | ||
|
|
97c161fc3f | ||
|
|
00c43d91cd | ||
|
|
100cfd095e | ||
|
|
5047dbc85e | ||
|
|
1b8f9b2abc | ||
|
|
f3ad4414b6 | ||
|
|
8930c39fbe | ||
|
|
7c2908569e | ||
|
|
5598464081 | ||
|
|
69f40748e5 | ||
|
|
c7eb10884a | ||
|
|
0ec1a39328 | ||
|
|
92c9b106e3 | ||
|
|
37a9122aa8 | ||
|
|
91e780432d | ||
|
|
a1cdb1ad56 | ||
|
|
fef93209cd | ||
|
|
81f15208cf | ||
|
|
c9c5bfe093 | ||
|
|
932e4a0f98 | ||
|
|
0483a2463b | ||
|
|
149b150eda | ||
|
|
9364b99158 | ||
|
|
3adce567df | ||
|
|
fa2cc303cd | ||
|
|
e842fef434 | ||
|
|
1c89b7fb1b | ||
|
|
2b85f221bb | ||
|
|
fdebac3b6a | ||
|
|
85d6feec01 | ||
|
|
0fffc85f6c | ||
|
|
e123967577 | ||
|
|
2b31426df3 | ||
|
|
dc490cef44 | ||
|
|
49d54323f6 | ||
|
|
a81d65f595 | ||
|
|
82c386806a | ||
|
|
239ee905e7 | ||
|
|
ed3b7ba6fd | ||
|
|
d52946f31f | ||
|
|
55d96a3767 | ||
|
|
6000a91e74 | ||
|
|
bd6e200a70 | ||
|
|
1360e3ad7b | ||
|
|
ac877ad08e | ||
|
|
4aad26b0cc | ||
|
|
10cb2fbda5 | ||
|
|
2c0a6a6c87 | ||
|
|
329f52fd21 | ||
|
|
7019699e74 | ||
|
|
c2178c7b6f | ||
|
|
0ed75de06f | ||
|
|
2607d3a33b | ||
|
|
2b886fb452 | ||
|
|
bed66fbde7 | ||
|
|
2b9ee576e9 | ||
|
|
efafcb2977 | ||
|
|
0569425df1 | ||
|
|
6c8a2013d9 | ||
|
|
5c7edbef8a | ||
|
|
d417fe96c4 | ||
|
|
c4da75fe6a | ||
|
|
0bf7f6da61 | ||
|
|
8992772748 | ||
|
|
463cb520d9 | ||
|
|
399f68c03b | ||
|
|
15df4beb80 | ||
|
|
4b79940122 | ||
|
|
51ce85d453 | ||
|
|
3dfe95558f | ||
|
|
45e56e53a4 | ||
|
|
0e114fa7bb | ||
|
|
78721bdf08 | ||
|
|
143f468c26 | ||
|
|
c3f01cc9b6 | ||
|
|
0c7091e2d9 | ||
|
|
334633f0fb | ||
|
|
a52e6b86f4 | ||
|
|
40d90424a3 | ||
|
|
bb33e8077a | ||
|
|
2859d0f4ff | ||
|
|
c4c2449216 | ||
|
|
9bf125aa15 | ||
|
|
a9df5384a3 | ||
|
|
6ed71d004e | ||
|
|
92b81f4996 | ||
|
|
3b83cd3418 | ||
|
|
0cd60920ca | ||
|
|
2673ad9ce4 | ||
|
|
0c7924aa7c | ||
|
|
e7c93602a1 | ||
|
|
6a3bb38dbc | ||
|
|
1a79dc87ba | ||
|
|
dd38b3d725 | ||
|
|
35221c8973 | ||
|
|
bf0cd7685e | ||
|
|
5f37767207 | ||
|
|
cab1bceae8 | ||
|
|
48c389a27c | ||
|
|
a95364db1d | ||
|
|
4199eb6ac5 | ||
|
|
47ac8e8bef | ||
|
|
1bc9b9fc86 | ||
|
|
91510a1755 | ||
|
|
c2d1e228a8 | ||
|
|
bfa0f0fd9b | ||
|
|
9d01ab0e16 | ||
|
|
02c6430ed2 | ||
|
|
f755b7ce74 | ||
|
|
0b78522ca5 | ||
|
|
3814f9a1c9 | ||
|
|
fe4ae46784 | ||
|
|
8250efcd62 | ||
|
|
c698f2af2b | ||
|
|
7ebb683fac | ||
|
|
05ee0e86b1 | ||
|
|
1ed6274f8b | ||
|
|
7857a2ea61 | ||
|
|
8ce85e5d23 | ||
|
|
c01effbf4c | ||
|
|
a2ff3ecd9a | ||
|
|
9ae16ca6ec | ||
|
|
c7406d3bce | ||
|
|
cb8ecc752b | ||
|
|
a5ecc2383c | ||
|
|
8e6323ae48 | ||
|
|
e73f76024e | ||
|
|
83c03c998a | ||
|
|
4c522ae050 | ||
|
|
689d5a7592 | ||
|
|
c118d4fae8 | ||
|
|
1baf2e8dd5 | ||
|
|
1fcdaa8b81 | ||
|
|
71729578dd | ||
|
|
abe7bf969a | ||
|
|
673ae3908c | ||
|
|
cd7a81d828 | ||
|
|
81264fa63e | ||
|
|
5e3dbc18c3 | ||
|
|
e43c20c1e6 | ||
|
|
f65039d748 | ||
|
|
d0e70ddddc | ||
|
|
3de96a8d9d | ||
|
|
1a31c9122e | ||
|
|
9a7c264ee6 | ||
|
|
5eb030046c | ||
|
|
b3fd673f33 | ||
|
|
fb12f498a7 | ||
|
|
fd54116d55 | ||
|
|
83ecdc9a88 | ||
|
|
be1e868fc4 | ||
|
|
a1e6e646f9 | ||
|
|
29df56c8b4 | ||
|
|
064b3efa13 | ||
|
|
5cc5628956 | ||
|
|
8afa3d1e30 | ||
|
|
c53d7d9c25 | ||
|
|
8f0535dc5c | ||
|
|
02f14ffdf1 | ||
|
|
a412f2f18f | ||
|
|
8f4d233965 | ||
|
|
cc84b96024 | ||
|
|
4ff81a0b63 | ||
|
|
9b40b7eb39 | ||
|
|
5c3464a303 | ||
|
|
71bea2eea4 | ||
|
|
84fd841f86 | ||
|
|
ed0a549027 | ||
|
|
06e621399b | ||
|
|
267f30849f | ||
|
|
b8ed3d8954 | ||
|
|
b634acec67 | ||
|
|
629b856788 | ||
|
|
3035ea8d8b | ||
|
|
abe7046d4f | ||
|
|
f3007e2fe2 | ||
|
|
b60b922fef | ||
|
|
85d3345043 | ||
|
|
a7a1a4ddd1 | ||
|
|
60ee889794 | ||
|
|
9ec21d815d | ||
|
|
ac32995e01 | ||
|
|
5204b2cef2 | ||
|
|
8c99268bb8 | ||
|
|
237b2670f6 | ||
|
|
0719db17ed | ||
|
|
d50f617a85 | ||
|
|
1cfc7e6638 | ||
|
|
8b9bb68ac5 | ||
|
|
018192714c | ||
|
|
71b631fbe4 | ||
|
|
2951f5e093 | ||
|
|
e1f69e41b0 | ||
|
|
898aad3da5 | ||
|
|
7274ff5e2d | ||
|
|
ec5b9571d3 | ||
|
|
770ecdfa99 | ||
|
|
4023ae73ba | ||
|
|
7f87d22249 | ||
|
|
6225f8940e | ||
|
|
6a5183cc0c | ||
|
|
037f5ecfa5 | ||
|
|
63657151ea | ||
|
|
c4e1a4c485 | ||
|
|
4222503961 | ||
|
|
af779a1880 | ||
|
|
84a5bed66d | ||
|
|
5d3111df37 | ||
|
|
fa9ffccb19 | ||
|
|
79660bfd6e | ||
|
|
3c9bc6ce73 | ||
|
|
4a333ff988 | ||
|
|
ce8c4ebd91 | ||
|
|
0ee47e95da | ||
|
|
16916f44b9 | ||
|
|
4d2ba40287 | ||
|
|
845bf3c325 | ||
|
|
3693c32d4b | ||
|
|
bc157fcde7 | ||
|
|
9a0476aa46 | ||
|
|
fb62298bd2 | ||
|
|
d19506f1ad | ||
|
|
c7b5b40eda | ||
|
|
74c61262b7 | ||
|
|
271f977cdd | ||
|
|
2290e2eb6d | ||
|
|
0d33072a7e | ||
|
|
e823b3ae95 | ||
|
|
19d9a29459 | ||
|
|
f96f9cc62f | ||
|
|
d2e5eecf22 | ||
|
|
b9ca6bf4a9 | ||
|
|
aa68acea3d | ||
|
|
12cca24d8b | ||
|
|
bf7b18f158 | ||
|
|
3675dc5b9d | ||
|
|
1dfdcb0413 | ||
|
|
a698d46144 | ||
|
|
d32baa61a1 | ||
|
|
32cda58064 | ||
|
|
4081f96d68 | ||
|
|
16350b4dec | ||
|
|
d8fe1d8b81 | ||
|
|
5e018fc8f0 | ||
|
|
80a463a91e | ||
|
|
61fce32c60 | ||
|
|
5525fff1fe | ||
|
|
328f5656bf | ||
|
|
9ec080a107 | ||
|
|
1bae755f1c | ||
|
|
9deccb465e | ||
|
|
2ff635d0cd | ||
|
|
501000fa6b | ||
|
|
9f4b297d23 | ||
|
|
aea308a5a2 | ||
|
|
5c4948bd6d | ||
|
|
d78d9167a0 | ||
|
|
75149000db | ||
|
|
9c9fcc3dd8 | ||
|
|
4271fbb85f | ||
|
|
ba4603e850 | ||
|
|
f2bc31c97b | ||
|
|
62a1726ef1 | ||
|
|
f19941f6da | ||
|
|
3917b84b56 | ||
|
|
04e5b61732 | ||
|
|
3ecf97ac82 | ||
|
|
f6a2240b1f | ||
|
|
3c82148f44 | ||
|
|
2c43e9587d | ||
|
|
52c311887a | ||
|
|
4c25355be9 | ||
|
|
d95b299217 | ||
|
|
efa8912742 | ||
|
|
c33913bd58 | ||
|
|
295ceaa702 | ||
|
|
8c64652b33 | ||
|
|
66a9563345 | ||
|
|
fdf241c6dd | ||
|
|
113989dc46 | ||
|
|
430cff8747 | ||
|
|
aee69fa3c7 | ||
|
|
afb3483fe3 | ||
|
|
7f2ff9d341 | ||
|
|
57be80bcd4 | ||
|
|
90272fa444 | ||
|
|
73fd407aff | ||
|
|
46dc527222 | ||
|
|
b83494888b | ||
|
|
a0f964e89e | ||
|
|
30b3b8800e | ||
|
|
366baa737a | ||
|
|
453a2084e7 | ||
|
|
fe30a20882 | ||
|
|
70dcb1a6ee | ||
|
|
c4554d38c1 | ||
|
|
4deed897ff | ||
|
|
460450f524 | ||
|
|
29b5c97345 | ||
|
|
b171eb7d32 | ||
|
|
0e18d43496 | ||
|
|
bd4222adfa | ||
|
|
1e4761609d | ||
|
|
de72e2e96b | ||
|
|
95a0dabe68 | ||
|
|
9f53ad685e | ||
|
|
02c597d109 | ||
|
|
510bee115b | ||
|
|
ed250f836d | ||
|
|
a47410a0f1 | ||
|
|
704130966e | ||
|
|
b927aa81b3 | ||
|
|
d154ac96c2 | ||
|
|
6067ba601e | ||
|
|
60336c25f1 | ||
|
|
82093bcf95 | ||
|
|
7b8191e2f0 | ||
|
|
716d0af96f | ||
|
|
88dd9cf15a | ||
|
|
f917dd9284 | ||
|
|
cd68bebf03 | ||
|
|
7d4091eb24 | ||
|
|
35cc348f03 | ||
|
|
59fc80a10b | ||
|
|
ea146cbe87 | ||
|
|
c6b28ba3a0 | ||
|
|
6f3e1e31f0 | ||
|
|
fe57890da4 | ||
|
|
7df0750c58 | ||
|
|
8cd9ec939b | ||
|
|
872ff0ef62 | ||
|
|
052faed48d | ||
|
|
bcf825a4f7 | ||
|
|
31b37a7792 | ||
|
|
dfe12c8bcb | ||
|
|
89d5b2d576 | ||
|
|
3afd9f5025 | ||
|
|
601ef73b5d | ||
|
|
e4f8bc347d | ||
|
|
3cb47ee5c8 | ||
|
|
1535247e1b | ||
|
|
37dd4ebaef | ||
|
|
1e8949067b | ||
|
|
1945e94190 | ||
|
|
1ba971af24 | ||
|
|
0b5357d12a | ||
|
|
3be361b03c | ||
|
|
7681b5d326 | ||
|
|
0a35d387f7 | ||
|
|
b40efc2426 | ||
|
|
59aae7fd40 | ||
|
|
a633e4bccf | ||
|
|
6c4b67d93a | ||
|
|
b56b8099ab | ||
|
|
f9fe5c9b6c | ||
|
|
2ee8420b94 | ||
|
|
bbe127865b | ||
|
|
13b954d580 | ||
|
|
50686e1b65 | ||
|
|
7b3c3d891d | ||
|
|
98feca7fca | ||
|
|
e45eb3fd69 | ||
|
|
dd86b8b461 | ||
|
|
57d43cd5d3 | ||
|
|
14b5b5e3df | ||
|
|
f53289ef1b | ||
|
|
a7e43ca6a7 | ||
|
|
8ca21c413f | ||
|
|
1b3ce91582 | ||
|
|
61fd54c496 | ||
|
|
b017127b3a | ||
|
|
52f2d15280 | ||
|
|
5c86e46c72 | ||
|
|
a5648851f2 | ||
|
|
cb41520a20 | ||
|
|
537612e5e3 | ||
|
|
4e0c671f68 | ||
|
|
507cfb9d53 | ||
|
|
2013009e8a | ||
|
|
f1a1d08458 | ||
|
|
7de6cc4468 | ||
|
|
783d83e4cc | ||
|
|
c366a1a4e7 | ||
|
|
b784cab94b | ||
|
|
78e361d486 | ||
|
|
3b1f135fdb | ||
|
|
2f93d1a83f | ||
|
|
653a26fee1 | ||
|
|
e33c9cb2f0 | ||
|
|
4be43528e3 | ||
|
|
9d343a42ce | ||
|
|
459722610a | ||
|
|
f745dce04e | ||
|
|
c1f4aaf957 | ||
|
|
f4bf8d3766 | ||
|
|
6e94d7a707 | ||
|
|
87e8e17e91 | ||
|
|
9e79178d0f | ||
|
|
9d0168a9ee | ||
|
|
9760d41561 | ||
|
|
0c039793df | ||
|
|
4cec45131e | ||
|
|
e6c08cb4e4 | ||
|
|
2d17d8cfe4 | ||
|
|
ef583fc9bb | ||
|
|
db87b1e214 | ||
|
|
5790bdfe82 | ||
|
|
731567369e | ||
|
|
317cbf904d | ||
|
|
f4561494f6 | ||
|
|
5164891928 | ||
|
|
5e79e29823 | ||
|
|
cc3649fcb8 | ||
|
|
ab11d15729 | ||
|
|
0e75d67671 | ||
|
|
ba81f923d9 | ||
|
|
a0cdb182fd | ||
|
|
ca7296ca8c | ||
|
|
fb2d0d3e71 | ||
|
|
2afd641f0f | ||
|
|
d871bbfc3b | ||
|
|
5e9ab81363 | ||
|
|
d0acface41 | ||
|
|
aea7cdb823 | ||
|
|
e066c6ab94 | ||
|
|
8e82772cfc | ||
|
|
441a064d84 | ||
|
|
ee6b2a94eb | ||
|
|
07761716e4 | ||
|
|
6dc96b86b4 | ||
|
|
8c2874e04d | ||
|
|
c7001bf0fa | ||
|
|
f62b209ffb | ||
|
|
0fe71b2b92 | ||
|
|
e528ba5278 | ||
|
|
fd1b2b1041 | ||
|
|
e5422c71f5 | ||
|
|
efd8960e1e | ||
|
|
8dcb0a298e | ||
|
|
acbd3537c0 | ||
|
|
145c301eed | ||
|
|
ec91a8b63f | ||
|
|
ffdeb28bfd | ||
|
|
df1ac5586e | ||
|
|
ab1b7a2605 | ||
|
|
53456cf7fa | ||
|
|
1cbdda1ec5 | ||
|
|
ba2fa25636 | ||
|
|
5189cbaa6f | ||
|
|
f1ce2e4b10 | ||
|
|
50ae49c0ec | ||
|
|
502c2240f7 | ||
|
|
b784f00b92 | ||
|
|
0c0d7f3481 | ||
|
|
457dac477a | ||
|
|
dc114f759d | ||
|
|
672f81f216 | ||
|
|
3516986ff2 | ||
|
|
7ecd98a5fb | ||
|
|
1fdeab9685 | ||
|
|
ebd4e64cc3 | ||
|
|
1452f4129f | ||
|
|
04d43f3f28 | ||
|
|
b7ebf961ac | ||
|
|
28c7a0177a | ||
|
|
9c5ea0bdd9 | ||
|
|
cd540b0146 | ||
|
|
62860750f2 | ||
|
|
4d8277c5c2 | ||
|
|
b9fddcf78c | ||
|
|
a834e1905d | ||
|
|
de1f5c1944 | ||
|
|
6d9b193d25 | ||
|
|
982d346264 | ||
|
|
4c927eb7c7 | ||
|
|
fead93f0b9 | ||
|
|
ca3ba3adb6 | ||
|
|
9f87a38107 | ||
|
|
329572d191 | ||
|
|
ae21315593 | ||
|
|
b209547a5b | ||
|
|
8a0f214144 | ||
|
|
5ff3b9457a | ||
|
|
8ec25cac46 | ||
|
|
39180f8ea3 | ||
|
|
2203b2ca8b | ||
|
|
faab0d78cf | ||
|
|
c3a5ea1b91 | ||
|
|
6349c4f752 | ||
|
|
8c5fa68f11 | ||
|
|
a487cd8e64 | ||
|
|
92eac86c68 | ||
|
|
cd2e29a77d | ||
|
|
ce090c6437 | ||
|
|
f80be0f3da | ||
|
|
fd9a338365 | ||
|
|
776164310b | ||
|
|
52ab9f4ade | ||
|
|
88c75c0d35 | ||
|
|
cd571b6ec4 | ||
|
|
701f9ab69b | ||
|
|
6d47664767 | ||
|
|
8cb8c50998 | ||
|
|
f14a149748 | ||
|
|
beb2c2fec0 | ||
|
|
48e010f195 | ||
|
|
e350b7d8f5 | ||
|
|
e7e1582836 | ||
|
|
9d9a8a7ced | ||
|
|
aef81d088c | ||
|
|
35b421b4df | ||
|
|
dbbae7a53f | ||
|
|
b9ace9f58f | ||
|
|
48aa5cb1aa | ||
|
|
b517c38cb9 | ||
|
|
d158c8ad7a | ||
|
|
8c9eeb6160 | ||
|
|
aedb8c46fc | ||
|
|
1ff895368e | ||
|
|
48e30125bb | ||
|
|
db416d25de | ||
|
|
da18a8b712 | ||
|
|
48c98cddba | ||
|
|
16a0e03d1d | ||
|
|
e0f580daf6 | ||
|
|
c1c16964eb | ||
|
|
d0134d6415 | ||
|
|
9f4c759ea3 | ||
|
|
661e2071d1 | ||
|
|
0f25334032 | ||
|
|
334ada3dcc | ||
|
|
df0b5bb014 | ||
|
|
20686086d8 | ||
|
|
1be8f6c434 | ||
|
|
f8c16d8c7c | ||
|
|
7f3cf46ee1 | ||
|
|
632cd2cd4c | ||
|
|
0f5243f36a | ||
|
|
137368cc27 | ||
|
|
e343d284d9 | ||
|
|
a23692a29c | ||
|
|
30170df1b1 | ||
|
|
3be4e6c112 | ||
|
|
e5650b5378 | ||
|
|
67f534a6f6 | ||
|
|
51031e7359 | ||
|
|
e215e0f14a | ||
|
|
1099d5f282 | ||
|
|
330761a372 | ||
|
|
81f38b942c | ||
|
|
07cefceed8 | ||
|
|
ed5e520b35 | ||
|
|
36b62260b1 | ||
|
|
3e085dd7c6 | ||
|
|
a18fd29795 | ||
|
|
76e4f4b80e | ||
|
|
8466531916 | ||
|
|
a4c5d34720 | ||
|
|
2e158f4c1b | ||
|
|
b3a7e7f465 | ||
|
|
1a66188411 | ||
|
|
485b2cad1e | ||
|
|
3bcd90f7ae | ||
|
|
586f17dc2a | ||
|
|
9863b05c30 | ||
|
|
a9f92637ca | ||
|
|
6b8b1b8e1e | ||
|
|
c3c5802be2 | ||
|
|
ab776f15f4 | ||
|
|
ebc3e938bf | ||
|
|
9cc3bb23c0 | ||
|
|
d2f275c49f | ||
|
|
aec31df520 | ||
|
|
76745dc9d0 | ||
|
|
25dce4d386 | ||
|
|
1c736df647 | ||
|
|
aeae8fb710 | ||
|
|
6055065e27 | ||
|
|
a08b2c77d6 | ||
|
|
f9a099a284 | ||
|
|
62fcafa982 | ||
|
|
065d94eb4a | ||
|
|
7760181baa | ||
|
|
9302d1fabc | ||
|
|
d1d63c8c29 | ||
|
|
bfd166b717 | ||
|
|
4f747f8fa7 | ||
|
|
2111307965 | ||
|
|
065e1f063f | ||
|
|
5226836211 | ||
|
|
c58dc5785a | ||
|
|
30d76da32f | ||
|
|
876521fdea | ||
|
|
e1e5279366 | ||
|
|
32886c5034 | ||
|
|
41e14208e4 | ||
|
|
b79fc28a5f | ||
|
|
ef72ff6903 | ||
|
|
82e8b510ca | ||
|
|
8109ddf78f | ||
|
|
f0f6ad17e2 | ||
|
|
83d53a46fb | ||
|
|
a8c8e14d6a | ||
|
|
e96e291ec4 | ||
|
|
e03ebedfdf | ||
|
|
deaf114fa3 | ||
|
|
0071ef22d7 | ||
|
|
58924aaf3a | ||
|
|
d6af6ce486 | ||
|
|
b1d0e6dc55 | ||
|
|
a200adb51a | ||
|
|
6ea00200b0 | ||
|
|
5cf03d7ae0 | ||
|
|
3b5fbdabd4 | ||
|
|
18c5d9b480 | ||
|
|
fe5c050c61 | ||
|
|
a7c56e3920 | ||
|
|
a519228856 | ||
|
|
e1f5628a4f | ||
|
|
e4eee1c29e | ||
|
|
0fc5bd3c10 | ||
|
|
77de17d7e3 | ||
|
|
87fcf1c610 | ||
|
|
8895d0d565 | ||
|
|
6340d9ea0b | ||
|
|
62aaa276a7 | ||
|
|
0391775fed | ||
|
|
400b743feb | ||
|
|
754910f514 | ||
|
|
614285804d | ||
|
|
1b22ba436b | ||
|
|
387d462c2c | ||
|
|
e6178525d7 | ||
|
|
a663dc482c | ||
|
|
b913d76972 | ||
|
|
ab276db78c | ||
|
|
34038d2844 | ||
|
|
c27ea5c447 | ||
|
|
a8c71e475e | ||
|
|
41673145ee | ||
|
|
4757c7d051 | ||
|
|
5619b98468 | ||
|
|
630eb98343 | ||
|
|
5412cb4d2d | ||
|
|
8f46f128ff | ||
|
|
8807d4d98b | ||
|
|
7719f5270d | ||
|
|
afb4c1b61e | ||
|
|
28bea42b15 | ||
|
|
955af412ea | ||
|
|
49dd3c65e1 | ||
|
|
b2f41f88c9 | ||
|
|
f3500c7f24 | ||
|
|
1cbdc9deff | ||
|
|
89652cc080 | ||
|
|
fe3f151e0b | ||
|
|
16caae9d40 | ||
|
|
d541becb1a | ||
|
|
21e97d4e30 | ||
|
|
9fd9bd95f4 | ||
|
|
fe9c348ee0 | ||
|
|
0d36ba188e | ||
|
|
5a6d55c2ca | ||
|
|
36ad9562eb | ||
|
|
bf06a9fe43 | ||
|
|
34c9fbd77a | ||
|
|
f4ca2650e5 |
No files matched your search
@@ -9,6 +9,8 @@
|
|||||||
*.class
|
*.class
|
||||||
|
|
||||||
tmp
|
tmp
|
||||||
|
mage8
|
||||||
|
adists
|
||||||
|
|
||||||
*.tar
|
*.tar
|
||||||
*.tar.*
|
*.tar.*
|
||||||
@@ -39,6 +41,15 @@ __old__
|
|||||||
|
|
||||||
*-venv
|
*-venv
|
||||||
|
|
||||||
|
mage8/
|
||||||
|
adists/
|
||||||
|
rubarbe/
|
||||||
|
|
||||||
|
linux/
|
||||||
|
windows/
|
||||||
|
|
||||||
|
install/
|
||||||
|
|
||||||
### END CUSTOM ###
|
### END CUSTOM ###
|
||||||
|
|
||||||
# Created by https://www.toptal.com/developers/gitignore/api/python
|
# Created by https://www.toptal.com/developers/gitignore/api/python
|
||||||
@@ -270,6 +281,7 @@ flycheck_*.el
|
|||||||
|
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/emacs
|
# End of https://www.toptal.com/developers/gitignore/api/emacs
|
||||||
|
|
||||||
# Created by https://www.toptal.com/developers/gitignore/api/qt
|
# Created by https://www.toptal.com/developers/gitignore/api/qt
|
||||||
# Edit at https://www.toptal.com/developers/gitignore?templates=qt
|
# Edit at https://www.toptal.com/developers/gitignore?templates=qt
|
||||||
|
|
||||||
@@ -618,7 +630,7 @@ TSWLatexianTemp*
|
|||||||
|
|
||||||
# auto folder when using emacs and auctex
|
# auto folder when using emacs and auctex
|
||||||
./auto/*
|
./auto/*
|
||||||
*.el
|
# *.el
|
||||||
|
|
||||||
# expex forward references with \gathertags
|
# expex forward references with \gathertags
|
||||||
*-tags.tex
|
*-tags.tex
|
||||||
@@ -645,3 +657,233 @@ TSWLatexianTemp*
|
|||||||
*.glstex
|
*.glstex
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/latex
|
# End of https://www.toptal.com/developers/gitignore/api/latex
|
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/intellij
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij
|
||||||
|
|
||||||
|
### Intellij ###
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff
|
||||||
|
.idea/**/workspace.xml
|
||||||
|
.idea/**/tasks.xml
|
||||||
|
.idea/**/usage.statistics.xml
|
||||||
|
.idea/**/dictionaries
|
||||||
|
.idea/**/shelf
|
||||||
|
|
||||||
|
# AWS User-specific
|
||||||
|
.idea/**/aws.xml
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.idea/**/contentModel.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files
|
||||||
|
.idea/**/dataSources/
|
||||||
|
.idea/**/dataSources.ids
|
||||||
|
.idea/**/dataSources.local.xml
|
||||||
|
.idea/**/sqlDataSources.xml
|
||||||
|
.idea/**/dynamic.xml
|
||||||
|
.idea/**/uiDesigner.xml
|
||||||
|
.idea/**/dbnavigator.xml
|
||||||
|
|
||||||
|
# Gradle
|
||||||
|
.idea/**/gradle.xml
|
||||||
|
.idea/**/libraries
|
||||||
|
|
||||||
|
# Gradle and Maven with auto-import
|
||||||
|
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||||
|
# since they will be recreated, and may cause churn. Uncomment if using
|
||||||
|
# auto-import.
|
||||||
|
# .idea/artifacts
|
||||||
|
# .idea/compiler.xml
|
||||||
|
# .idea/jarRepositories.xml
|
||||||
|
# .idea/modules.xml
|
||||||
|
# .idea/*.iml
|
||||||
|
# .idea/modules
|
||||||
|
# *.iml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# CMake
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Mongo Explorer plugin
|
||||||
|
.idea/**/mongoSettings.xml
|
||||||
|
|
||||||
|
# File-based project format
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Cursive Clojure plugin
|
||||||
|
.idea/replstate.xml
|
||||||
|
|
||||||
|
# SonarLint plugin
|
||||||
|
.idea/sonarlint/
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
|
||||||
|
# Editor-based Rest Client
|
||||||
|
.idea/httpRequests
|
||||||
|
|
||||||
|
# Android studio 3.1+ serialized cache file
|
||||||
|
.idea/caches/build_file_checksums.ser
|
||||||
|
|
||||||
|
### Intellij Patch ###
|
||||||
|
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||||
|
|
||||||
|
# *.iml
|
||||||
|
# modules.xml
|
||||||
|
# .idea/misc.xml
|
||||||
|
# *.ipr
|
||||||
|
|
||||||
|
# Sonarlint plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/7973-sonarlint
|
||||||
|
.idea/**/sonarlint/
|
||||||
|
|
||||||
|
# SonarQube Plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
|
||||||
|
.idea/**/sonarIssues.xml
|
||||||
|
|
||||||
|
# Markdown Navigator plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
|
||||||
|
.idea/**/markdown-navigator.xml
|
||||||
|
.idea/**/markdown-navigator-enh.xml
|
||||||
|
.idea/**/markdown-navigator/
|
||||||
|
|
||||||
|
# Cache file creation bug
|
||||||
|
# See https://youtrack.jetbrains.com/issue/JBR-2257
|
||||||
|
.idea/$CACHE_FILE$
|
||||||
|
|
||||||
|
# CodeStream plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/12206-codestream
|
||||||
|
.idea/codestream.xml
|
||||||
|
|
||||||
|
# Azure Toolkit for IntelliJ plugin
|
||||||
|
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
|
||||||
|
.idea/**/azureSettings.xml
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/intellij
|
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode
|
||||||
|
|
||||||
|
### VisualStudioCode ###
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Built Visual Studio Code Extensions
|
||||||
|
*.vsix
|
||||||
|
|
||||||
|
### VisualStudioCode Patch ###
|
||||||
|
# Ignore all local history of files
|
||||||
|
.history
|
||||||
|
.ionide
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode
|
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/linux
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=linux
|
||||||
|
|
||||||
|
### Linux ###
|
||||||
|
*~
|
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||||
|
.fuse_hidden*
|
||||||
|
|
||||||
|
# KDE directory preferences
|
||||||
|
.directory
|
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk
|
||||||
|
.Trash-*
|
||||||
|
|
||||||
|
# .nfs files are created when an open file is removed but is still being accessed
|
||||||
|
.nfs*
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/linux
|
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/macos
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=macos
|
||||||
|
|
||||||
|
### macOS ###
|
||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
### macOS Patch ###
|
||||||
|
# iCloud generated files
|
||||||
|
*.icloud
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/macos
|
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/windows
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=windows
|
||||||
|
|
||||||
|
### Windows ###
|
||||||
|
# Windows thumbnail cache files
|
||||||
|
Thumbs.db
|
||||||
|
Thumbs.db:encryptable
|
||||||
|
ehthumbs.db
|
||||||
|
ehthumbs_vista.db
|
||||||
|
|
||||||
|
# Dump file
|
||||||
|
*.stackdump
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
[Dd]esktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/windows
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# .gitlab-ci.yml -- Pamhyr gitlab-ci
|
# .gitlab-ci.yml -- Pamhyr gitlab-ci
|
||||||
# Copyright (C) 2023 INRAE
|
# Copyright (C) 2023-2025 INRAE
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -20,16 +20,27 @@ stages:
|
|||||||
- test
|
- test
|
||||||
- build
|
- build
|
||||||
- package
|
- package
|
||||||
|
- hash
|
||||||
|
- antivirus
|
||||||
- release
|
- release
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# PYINSTALLER VARIABLES #
|
||||||
|
#########################
|
||||||
|
|
||||||
|
variables:
|
||||||
|
HIDDEN_IMPORTS: "--hiddenimport rasterio --collect-submodules rasterio"
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# DOWNLOADS #
|
# DOWNLOADS #
|
||||||
#############
|
#############
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
MAGE_VERSION: "v8.3.3"
|
MAGE_8_VERSION: "permalink/latest"
|
||||||
|
ADISTS_VERSION: "permalink/latest"
|
||||||
|
RUBAR_VERSION: "permalink/latest"
|
||||||
|
|
||||||
dl-mage-doc:
|
dl-mage8-doc:
|
||||||
stage: downloads
|
stage: downloads
|
||||||
tags:
|
tags:
|
||||||
- linux
|
- linux
|
||||||
@@ -38,46 +49,98 @@ dl-mage-doc:
|
|||||||
script:
|
script:
|
||||||
- mkdir -p doc
|
- mkdir -p doc
|
||||||
- cd doc
|
- cd doc
|
||||||
- curl -L -o mage8.pdf https://gitlab.irstea.fr/jean-baptiste.faure/mage/-/releases/$MAGE_VERSION/downloads/documents/Mage-8_Documentation.pdf
|
- curl -L -o mage8.pdf https://forge.inrae.fr/river-hydraulics/mage/-/releases/$MAGE_8_VERSION/downloads/documents/Mage-8_Documentation.pdf
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- doc/mage8.pdf
|
- doc/mage8.pdf
|
||||||
|
|
||||||
dl-mage-linux:
|
dl-mage8-linux:
|
||||||
stage: downloads
|
stage: downloads
|
||||||
tags:
|
tags:
|
||||||
- linux
|
- linux
|
||||||
rules:
|
rules:
|
||||||
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
script:
|
script:
|
||||||
- curl -L -o mage.tgz https://gitlab.irstea.fr/jean-baptiste.faure/mage/-/releases/$MAGE_VERSION/downloads/packages/mage_linux.tgz
|
- curl -L -o mage8.tgz https://forge.inrae.fr/river-hydraulics/mage/-/releases/$MAGE_8_VERSION/downloads/packages/mage_linux.tgz
|
||||||
- mkdir -p mage-linux
|
- mkdir -p mage8-linux
|
||||||
- cd mage-linux
|
- cd mage8-linux
|
||||||
- tar xvf ../mage.tgz
|
- tar xvf ../mage8.tgz
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- mage-linux/mage
|
- mage8-linux/mage
|
||||||
- mage-linux/mage_extraire
|
|
||||||
- mage-linux/mailleurTT
|
|
||||||
- mage-linux/libbief.so
|
|
||||||
|
|
||||||
dl-mage-windows:
|
dl-mage8-windows:
|
||||||
stage: downloads
|
stage: downloads
|
||||||
tags:
|
tags:
|
||||||
- linux
|
- linux
|
||||||
rules:
|
rules:
|
||||||
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
script:
|
script:
|
||||||
- curl -L -o mage.tgz https://gitlab.irstea.fr/jean-baptiste.faure/mage/-/releases/$MAGE_VERSION/downloads/packages/mage_windows.tgz
|
- curl -L -o mage8.tgz https://forge.inrae.fr/river-hydraulics/mage/-/releases/$MAGE_8_VERSION/downloads/packages/mage_windows.tgz
|
||||||
- mkdir -p mage-windows
|
- mkdir -p mage8-windows
|
||||||
- cd mage-windows
|
- cd mage8-windows
|
||||||
- tar xvf ../mage.tgz
|
- tar xvf ../mage8.tgz
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- mage-windows/mage.exe
|
- mage8-windows/mage.exe
|
||||||
- mage-windows/mage_extraire.exe
|
|
||||||
- mage-windows/mailleurTT.exe
|
dl-adists-linux:
|
||||||
- mage-windows/libbief.dll
|
stage: downloads
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
|
script:
|
||||||
|
- mkdir -p adists-linux
|
||||||
|
- cd adists-linux
|
||||||
|
- curl -L -o adists https://forge.inrae.fr/river-hydraulics/adists/-/releases/$ADISTS_VERSION/downloads/executables/adists
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- adists-linux/adists
|
||||||
|
|
||||||
|
dl-adists-windows:
|
||||||
|
stage: downloads
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
|
script:
|
||||||
|
- mkdir -p adists-windows
|
||||||
|
- cd adists-windows
|
||||||
|
- curl -L -o adists.exe https://forge.inrae.fr/river-hydraulics/adists/-/releases/$ADISTS_VERSION/downloads/executables/adists_win64.exe
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- adists-windows/adists.exe
|
||||||
|
|
||||||
|
dl-rubar-linux:
|
||||||
|
stage: downloads
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
|
script:
|
||||||
|
- mkdir -p rubar-linux
|
||||||
|
- cd rubar-linux
|
||||||
|
- curl -L -o rubar.tgz https://forge.inrae.fr/river-hydraulics/rubarbe/-/releases/$RUBAR_VERSION/downloads/packages/rubar_linux.tgz
|
||||||
|
- tar xf rubar.tgz
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- rubar-linux/rubarbe
|
||||||
|
|
||||||
|
dl-rubar-windows:
|
||||||
|
stage: downloads
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
|
script:
|
||||||
|
- mkdir -p rubar-windows
|
||||||
|
- cd rubar-windows
|
||||||
|
- curl -L -o rubar.tgz https://forge.inrae.fr/river-hydraulics/rubarbe/-/releases/$RUBAR_VERSION/downloads/packages/rubar_windows.tgz
|
||||||
|
- tar xf rubar.tgz
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- rubar-windows/rubarbe.exe
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# CONFIGURE #
|
# CONFIGURE #
|
||||||
@@ -117,13 +180,13 @@ unittest:
|
|||||||
- job: set-version
|
- job: set-version
|
||||||
artifacts: true
|
artifacts: true
|
||||||
script:
|
script:
|
||||||
- python3 -m venv venv
|
- python3.12 -m venv venv
|
||||||
- . venv/bin/activate
|
- . venv/bin/activate
|
||||||
- pip3 install -U pip
|
- pip3 install -U pip
|
||||||
- pip3 install -r ./full-requirements.txt
|
- pip3 install -r ./full-requirements.txt
|
||||||
- pip3 install -U -r ./full-requirements.txt
|
- pip3 install -U -r ./full-requirements.txt
|
||||||
- cd src
|
- cd src
|
||||||
- python3 -m unittest discover -t .
|
- python3.12 -m unittest discover -t .
|
||||||
|
|
||||||
test-pep8:
|
test-pep8:
|
||||||
stage: test
|
stage: test
|
||||||
@@ -135,7 +198,7 @@ test-pep8:
|
|||||||
- job: unittest
|
- job: unittest
|
||||||
script:
|
script:
|
||||||
# Setup virtual env
|
# Setup virtual env
|
||||||
- python3 -m venv venv
|
- python3.12 -m venv venv
|
||||||
- . venv/bin/activate
|
- . venv/bin/activate
|
||||||
- pip3 install -U pip
|
- pip3 install -U pip
|
||||||
- pip3 install -r ./requirements.txt
|
- pip3 install -r ./requirements.txt
|
||||||
@@ -148,23 +211,22 @@ test-pep8:
|
|||||||
# BUILD #
|
# BUILD #
|
||||||
#########
|
#########
|
||||||
|
|
||||||
build-users-doc:
|
# build-users-doc:
|
||||||
stage: build
|
# stage: build
|
||||||
tags:
|
# tags:
|
||||||
- linux
|
# - linux
|
||||||
needs:
|
# needs:
|
||||||
- job: set-version
|
# - job: set-version
|
||||||
artifacts: true
|
# artifacts: true
|
||||||
script:
|
# script:
|
||||||
- cd ./doc/users/
|
# - cd ./doc/users/
|
||||||
- ./build.sh
|
# - ./build.sh
|
||||||
artifacts:
|
# artifacts:
|
||||||
paths:
|
# paths:
|
||||||
- doc/users/documentation.pdf
|
# - doc/users/documentation.pdf
|
||||||
- doc/users/documentation.html
|
# - doc/users/documentation.html
|
||||||
- doc/users/images/
|
# - doc/users/images/
|
||||||
allow_failure: true
|
# allow_failure: true
|
||||||
|
|
||||||
|
|
||||||
build-td:
|
build-td:
|
||||||
stage: build
|
stage: build
|
||||||
@@ -174,13 +236,32 @@ build-td:
|
|||||||
- job: set-version
|
- job: set-version
|
||||||
artifacts: true
|
artifacts: true
|
||||||
script:
|
script:
|
||||||
- cd ./doc/users/Tuto1/
|
- cd ./doc/users/TP_Hydraulique_Hogneau/
|
||||||
- ./build.sh
|
- ./build.sh
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- doc/users/Tuto1/step-by-step.pdf
|
- doc/users/TP_Hydraulique_Hogneau/step-by-step.pdf
|
||||||
- doc/users/Tuto1/pas-a-pas.pdf
|
- doc/users/TP_Hydraulique_Hogneau/pas-a-pas.pdf
|
||||||
- doc/users/Tuto1/data/
|
- doc/users/TP_Hydraulique_Hogneau/Tuto-2-fr.pdf
|
||||||
|
- doc/users/TP_Hydraulique_Hogneau/data/
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
|
build-td-2:
|
||||||
|
stage: build
|
||||||
|
tags:
|
||||||
|
- linux
|
||||||
|
needs:
|
||||||
|
- job: set-version
|
||||||
|
artifacts: true
|
||||||
|
script:
|
||||||
|
- cd ./doc/users/TP_AdisTS_Vieux_Rhone/
|
||||||
|
- ./build.sh
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- doc/users/TP_AdisTS_Vieux_Rhone/pas-a-pas.pdf
|
||||||
|
- doc/users/TP_AdisTS_Vieux_Rhone/data/
|
||||||
|
- doc/users/TP_AdisTS_Vieux_Rhone/Sujet.pdf
|
||||||
|
- doc/users/TP_AdisTS_Vieux_Rhone/Vieux_Rhone_TP_AdisTS.pamhyr
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
build-developers-doc:
|
build-developers-doc:
|
||||||
@@ -195,7 +276,7 @@ build-developers-doc:
|
|||||||
- ./build.sh
|
- ./build.sh
|
||||||
# Create html documentation
|
# Create html documentation
|
||||||
- cd ../../src
|
- cd ../../src
|
||||||
- python3 -m venv doc-venv
|
- python3.12 -m venv doc-venv
|
||||||
- . doc-venv/bin/activate
|
- . doc-venv/bin/activate
|
||||||
- pip3 install -U pip
|
- pip3 install -U pip
|
||||||
- pip3 install -r ../full-requirements.txt
|
- pip3 install -r ../full-requirements.txt
|
||||||
@@ -221,9 +302,13 @@ build-linux:
|
|||||||
rules:
|
rules:
|
||||||
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
needs:
|
needs:
|
||||||
- job: dl-mage-linux
|
- job: dl-adists-linux
|
||||||
artifacts: true
|
artifacts: true
|
||||||
- job: dl-mage-doc
|
- job: dl-rubar-linux
|
||||||
|
artifacts: true
|
||||||
|
- job: dl-mage8-linux
|
||||||
|
artifacts: true
|
||||||
|
- job: dl-mage8-doc
|
||||||
artifacts: true
|
artifacts: true
|
||||||
- job: set-version
|
- job: set-version
|
||||||
artifacts: true
|
artifacts: true
|
||||||
@@ -231,45 +316,57 @@ build-linux:
|
|||||||
artifacts: true
|
artifacts: true
|
||||||
- job: build-developers-doc
|
- job: build-developers-doc
|
||||||
artifacts: true
|
artifacts: true
|
||||||
- job: build-users-doc
|
# - job: build-users-doc
|
||||||
artifacts: true
|
# artifacts: true
|
||||||
- job: build-td
|
- job: build-td
|
||||||
artifacts: true
|
artifacts: true
|
||||||
|
- job: build-td-2
|
||||||
|
artifacts: true
|
||||||
script:
|
script:
|
||||||
- mkdir -p linux
|
- mkdir -p linux
|
||||||
- cd linux
|
- cd linux
|
||||||
# Setup virtual env
|
# Setup virtual env
|
||||||
- python3 -m venv linux-venv
|
- python3.12 -m venv linux-venv
|
||||||
- . linux-venv/bin/activate
|
- . linux-venv/bin/activate
|
||||||
- pip3 install -U pip
|
- pip3 install -U pip
|
||||||
- pip3 install -r ../requirements.txt
|
- pip3 install -r ../requirements.txt
|
||||||
- pip3 install -U -r ../requirements.txt
|
- pip3 install -U -r ../requirements.txt
|
||||||
# Run Pyinstaller
|
# Run Pyinstaller
|
||||||
- pyinstaller -y --paths linux-venv/lib/python3.8/site-packages ../src/pamhyr.py
|
- pyinstaller -y $HIDDEN_IMPORTS --paths linux-venv/lib/python3.12/site-packages ../src/pamhyr.py
|
||||||
# Create directory
|
# Create directory
|
||||||
- mkdir -p pamhyr
|
- mkdir -p pamhyr
|
||||||
- mkdir -p pamhyr/pamhyr
|
- mkdir -p pamhyr/_internal
|
||||||
- mkdir -p pamhyr/pamhyr/_internal
|
|
||||||
# Copy Pamhyr info
|
# Copy Pamhyr info
|
||||||
- cp -v ../VERSION pamhyr/pamhyr/_internal/
|
- cp -v ../VERSION pamhyr/_internal/
|
||||||
- cp -v ../AUTHORS pamhyr/pamhyr/_internal/
|
- cp -v ../AUTHORS pamhyr/_internal/
|
||||||
- cp -v ../LICENSE pamhyr/pamhyr/_internal/
|
- cp -v ../LICENSE pamhyr/_internal/
|
||||||
- cp -v ../src/motd.txt pamhyr/pamhyr/_internal/
|
- cp -v ../src/motd.txt pamhyr/_internal/
|
||||||
# Copy mage
|
# Copy mage
|
||||||
- mkdir -p pamhyr/mage
|
- mkdir -p pamhyr/mage8
|
||||||
- cp -v ../mage-linux/* pamhyr/mage/
|
- cp -v ../mage8-linux/* pamhyr/mage8/
|
||||||
|
# Copy adists
|
||||||
|
- mkdir -p pamhyr/adists
|
||||||
|
- cp -v ../adists-linux/* pamhyr/adists/
|
||||||
|
# Copy rubar
|
||||||
|
- mkdir -p pamhyr/rubar
|
||||||
|
- cp -v ../rubar-linux/* pamhyr/rubar/
|
||||||
# Copy Pamhyr
|
# Copy Pamhyr
|
||||||
- cp -r dist/pamhyr pamhyr/
|
- cp -r dist/pamhyr/* pamhyr/
|
||||||
|
# Pamhyr script to force x11
|
||||||
|
- echo '#!/usr/bin/env bash' > pamhyr/pamhyr-x11
|
||||||
|
- echo "" >> pamhyr/pamhyr-x11
|
||||||
|
- echo "GDK_BACKEND=x11 ./pamhyr $@" >> pamhyr/pamhyr-x11
|
||||||
|
- chmod +x pamhyr/pamhyr-x11
|
||||||
# Copy Pamhyr resources
|
# Copy Pamhyr resources
|
||||||
- mkdir -p pamhyr/pamhyr/_internal/View
|
- mkdir -p pamhyr/_internal/View
|
||||||
- mkdir -p pamhyr/pamhyr/_internal/View/ui
|
- mkdir -p pamhyr/_internal/View/ui
|
||||||
- mkdir -p pamhyr/pamhyr/_internal/View/ui/Widgets
|
- mkdir -p pamhyr/_internal/View/ui/Widgets
|
||||||
- cp -r ../src/View/ui/*.ui pamhyr/pamhyr/_internal/View/ui/
|
- cp -r ../src/View/ui/*.ui pamhyr/_internal/View/ui/
|
||||||
- cp -r ../src/View/ui/ressources/ pamhyr/pamhyr/_internal/View/ui
|
- cp -r ../src/View/ui/ressources/ pamhyr/_internal/View/ui
|
||||||
- cp -r ../src/View/ui/Widgets/*.ui pamhyr/pamhyr/_internal/View/ui/Widgets
|
- cp -r ../src/View/ui/Widgets/*.ui pamhyr/_internal/View/ui/Widgets
|
||||||
# Copy lang
|
# Copy lang
|
||||||
- mkdir -p pamhyr/pamhyr/_internal/lang
|
- mkdir -p pamhyr/_internal/lang
|
||||||
- cp -r ../src/lang/*.qm pamhyr/pamhyr/_internal/lang
|
- cp -r ../src/lang/*.qm pamhyr/_internal/lang
|
||||||
# Copy tests cases
|
# Copy tests cases
|
||||||
- mkdir -p pamhyr/tests_cases/
|
- mkdir -p pamhyr/tests_cases/
|
||||||
- mkdir -p pamhyr/tests_cases/Saar
|
- mkdir -p pamhyr/tests_cases/Saar
|
||||||
@@ -287,20 +384,22 @@ build-linux:
|
|||||||
- cp -r ../doc/dev/images/* pamhyr/doc/images
|
- cp -r ../doc/dev/images/* pamhyr/doc/images
|
||||||
- cp -r ../doc/images/* pamhyr/doc/images
|
- cp -r ../doc/images/* pamhyr/doc/images
|
||||||
# Copy Tuto
|
# Copy Tuto
|
||||||
- mkdir -p pamhyr/doc/Tuto1/
|
- mkdir -p pamhyr/doc/TP_Hydraulique_Hogneau/
|
||||||
- mkdir -p pamhyr/doc/Tuto1/data
|
- mkdir -p pamhyr/doc/TP_Hydraulique_Hogneau/data
|
||||||
- cp ../doc/users/Tuto1/Hogneau_Engees2022.pdf pamhyr/doc/Tuto1/Hogneau_Engees2022.pdf
|
- cp ../doc/users/TP_Hydraulique_Hogneau/Hogneau_Engees2022.pdf pamhyr/doc/TP_Hydraulique_Hogneau/Hogneau_Engees2022.pdf
|
||||||
- cp ../doc/users/Tuto1/step-by-step.pdf pamhyr/doc/Tuto1/Tuto1-en.pdf
|
- cp ../doc/users/TP_Hydraulique_Hogneau/step-by-step.pdf pamhyr/doc/TP_Hydraulique_Hogneau/Tuto1-en.pdf
|
||||||
- cp ../doc/users/Tuto1/pas-a-pas.pdf pamhyr/doc/Tuto1/Tuto1-fr.pdf
|
- cp ../doc/users/TP_Hydraulique_Hogneau/pas-a-pas.pdf pamhyr/doc/TP_Hydraulique_Hogneau/Tuto1-fr.pdf
|
||||||
- cp ../doc/users/Tuto1/*.pamhyr pamhyr/doc/Tuto1/
|
- cp ../doc/users/TP_Hydraulique_Hogneau/Tuto-2-fr.pdf pamhyr/doc/TP_Hydraulique_Hogneau/Tuto2-fr.pdf
|
||||||
- cp ../doc/users/Tuto1/data/* pamhyr/doc/Tuto1/data/
|
- cp ../doc/users/TP_Hydraulique_Hogneau/*.pamhyr pamhyr/doc/TP_Hydraulique_Hogneau/
|
||||||
|
- cp ../doc/users/TP_Hydraulique_Hogneau/data/* pamhyr/doc/TP_Hydraulique_Hogneau/data/
|
||||||
|
- mkdir -p pamhyr/doc/TP_AdisTS_Vieux_Rhone/
|
||||||
|
- mkdir -p pamhyr/doc/TP_AdisTS_Vieux_Rhone/data
|
||||||
|
- cp ../doc/users/TP_AdisTS_Vieux_Rhone/*.pdf pamhyr/doc/TP_AdisTS_Vieux_Rhone/
|
||||||
|
- cp ../doc/users/TP_AdisTS_Vieux_Rhone/data/* pamhyr/doc/TP_AdisTS_Vieux_Rhone/data/
|
||||||
|
- cp ../doc/users/TP_AdisTS_Vieux_Rhone/Vieux_Rhone_TP_AdisTS.pamhyr pamhyr/doc/TP_AdisTS_Vieux_Rhone/Vieux_Rhone_TP_AdisTS.pamhyr
|
||||||
# Copy TP charriage
|
# Copy TP charriage
|
||||||
- mkdir -p pamhyr/doc/TP_charriage/
|
- mkdir -p pamhyr/doc/TP_charriage/
|
||||||
- cp ../doc/users/TP_charriage/* pamhyr/doc/TP_charriage
|
- cp -r ../doc/users/TP_charriage/* pamhyr/doc/TP_charriage
|
||||||
# Create running script
|
|
||||||
- echo "#!/bin/sh" > pamhyr/Pamhyr2
|
|
||||||
- echo "./pamhyr/pamhyr $@" >> pamhyr/Pamhyr2
|
|
||||||
- chmod u+x pamhyr/Pamhyr2
|
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- linux/pamhyr
|
- linux/pamhyr
|
||||||
@@ -312,9 +411,13 @@ build-windows:
|
|||||||
rules:
|
rules:
|
||||||
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
needs:
|
needs:
|
||||||
- job: dl-mage-windows
|
- job: dl-mage8-windows
|
||||||
artifacts: true
|
artifacts: true
|
||||||
- job: dl-mage-doc
|
- job: dl-adists-windows
|
||||||
|
artifacts: true
|
||||||
|
- job: dl-rubar-windows
|
||||||
|
artifacts: true
|
||||||
|
- job: dl-mage8-doc
|
||||||
artifacts: true
|
artifacts: true
|
||||||
- job: set-version
|
- job: set-version
|
||||||
artifacts: true
|
artifacts: true
|
||||||
@@ -322,18 +425,22 @@ build-windows:
|
|||||||
artifacts: true
|
artifacts: true
|
||||||
- job: build-developers-doc
|
- job: build-developers-doc
|
||||||
artifacts: true
|
artifacts: true
|
||||||
- job: build-users-doc
|
# - job: build-users-doc
|
||||||
artifacts: true
|
# artifacts: true
|
||||||
- job: build-td
|
- job: build-td
|
||||||
artifacts: true
|
artifacts: true
|
||||||
|
- job: build-td-2
|
||||||
|
artifacts: true
|
||||||
script:
|
script:
|
||||||
- mkdir windows
|
- mkdir windows
|
||||||
- cd windows
|
- cd windows
|
||||||
# Setup env
|
# Setup env
|
||||||
|
- python -m pip install -U pip
|
||||||
- python -m pip install -r ..\requirements.txt
|
- python -m pip install -r ..\requirements.txt
|
||||||
- python -m pip install -U -r ..\requirements.txt
|
- python -m pip install -U -r ..\requirements.txt
|
||||||
# Run Pyinstaller
|
# Run Pyinstaller
|
||||||
- pyinstaller -y ..\src\pamhyr.py
|
# - pyinstaller --noconsole -y ..\src\pamhyr.py
|
||||||
|
- pyinstaller -i ../src/View/ui/ressources/icon.ico $HIDDEN_IMPORTS --hide-console hide-early -y ..\src\pamhyr.py
|
||||||
# Create directory
|
# Create directory
|
||||||
- mkdir pamhyr
|
- mkdir pamhyr
|
||||||
- dir
|
- dir
|
||||||
@@ -403,10 +510,149 @@ windows-package-exe:
|
|||||||
- copy ..\packages\pamhyr.nsi pamhyr.nsi
|
- copy ..\packages\pamhyr.nsi pamhyr.nsi
|
||||||
- .\make-windows-exe.bat
|
- .\make-windows-exe.bat
|
||||||
|
|
||||||
|
########
|
||||||
|
# HASH #
|
||||||
|
########
|
||||||
|
|
||||||
|
linux-build-hash:
|
||||||
|
stage: hash
|
||||||
|
tags:
|
||||||
|
- release
|
||||||
|
- linux
|
||||||
|
needs:
|
||||||
|
- job: build-linux
|
||||||
|
artifacts: true
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
|
script:
|
||||||
|
- cd linux
|
||||||
|
- sha256sum -b pamhyr/pamhyr > pamhyr/pamhyr.sha256
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- linux/pamhyr/pamhyr.sha256
|
||||||
|
|
||||||
|
windows-build-hash:
|
||||||
|
stage: hash
|
||||||
|
tags:
|
||||||
|
- release
|
||||||
|
- linux
|
||||||
|
needs:
|
||||||
|
- job: build-windows
|
||||||
|
artifacts: true
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
|
script:
|
||||||
|
- cd windows
|
||||||
|
- sha256sum -b pamhyr/pamhyr.exe > pamhyr/pamhyr.exe.sha256
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- windows/pamhyr/pamhyr.exe.sha256
|
||||||
|
|
||||||
|
pkg-hash:
|
||||||
|
stage: hash
|
||||||
|
tags:
|
||||||
|
- release
|
||||||
|
- linux
|
||||||
|
needs:
|
||||||
|
- job: linux-package-tar
|
||||||
|
artifacts: true
|
||||||
|
- job: windows-package-zip
|
||||||
|
artifacts: true
|
||||||
|
- job: windows-package-exe
|
||||||
|
artifacts: true
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_TAG
|
||||||
|
script:
|
||||||
|
- cd windows
|
||||||
|
- sha256sum -b pamhyr-windows.exe > pamhyr-windows.exe.sha256
|
||||||
|
- sha256sum -b pamhyr-windows.zip > pamhyr-windows.zip.sha256
|
||||||
|
- cd ..
|
||||||
|
- cd linux
|
||||||
|
- sha256sum -b pamhyr-gnulinux.tar.xz > pamhyr-gnulinux.tar.xz.sha256
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- windows/pamhyr-windows.exe.sha256
|
||||||
|
- windows/pamhyr-windows.zip.sha256
|
||||||
|
- linux/pamhyr-gnulinux.tar.xz.sha256
|
||||||
|
|
||||||
|
#############
|
||||||
|
# ANTIVIRUS #
|
||||||
|
#############
|
||||||
|
|
||||||
|
build-check-clamav:
|
||||||
|
stage: antivirus
|
||||||
|
tags:
|
||||||
|
- release
|
||||||
|
- linux
|
||||||
|
needs:
|
||||||
|
- job: build-linux
|
||||||
|
artifacts: true
|
||||||
|
- job: build-windows
|
||||||
|
artifacts: true
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_BRANCH == 'master' || $CI_COMMIT_TAG
|
||||||
|
script:
|
||||||
|
- cd packages
|
||||||
|
- ./clamav-scan.sh builds
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
|
pkg-check-clamav:
|
||||||
|
stage: antivirus
|
||||||
|
tags:
|
||||||
|
- release
|
||||||
|
- linux
|
||||||
|
needs:
|
||||||
|
- job: linux-package-tar
|
||||||
|
artifacts: true
|
||||||
|
- job: windows-package-zip
|
||||||
|
artifacts: true
|
||||||
|
- job: windows-package-exe
|
||||||
|
artifacts: true
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == 'ci-test' || $CI_COMMIT_TAG
|
||||||
|
script:
|
||||||
|
- cd packages
|
||||||
|
- ./clamav-scan.sh packages
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
###########
|
###########
|
||||||
# RELEASE #
|
# RELEASE #
|
||||||
###########
|
###########
|
||||||
|
|
||||||
|
shadow-release:
|
||||||
|
stage: release
|
||||||
|
tags:
|
||||||
|
- release
|
||||||
|
- linux
|
||||||
|
needs:
|
||||||
|
- job: linux-package-tar
|
||||||
|
artifacts: true
|
||||||
|
- job: windows-package-zip
|
||||||
|
artifacts: true
|
||||||
|
- job: windows-package-exe
|
||||||
|
artifacts: true
|
||||||
|
# - job: build-users-doc
|
||||||
|
# artifacts: true
|
||||||
|
- job: build-developers-doc
|
||||||
|
artifacts: true
|
||||||
|
- job: pkg-hash
|
||||||
|
artifacts: true
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_TAG && $CI_COMMIT_TAG !~ /^v/
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- linux/pamhyr-gnulinux.tar.xz
|
||||||
|
- windows/pamhyr-windows.zip
|
||||||
|
- windows/pamhyr-windows.exe
|
||||||
|
- linux/pamhyr-gnulinux.tar.xz.sha256
|
||||||
|
- windows/pamhyr-windows.zip.sha256
|
||||||
|
- windows/pamhyr-windows.exe.sha256
|
||||||
|
- doc/dev/documentation.pdf
|
||||||
|
# - doc/users/documentation.pdf
|
||||||
|
script:
|
||||||
|
- cd packages
|
||||||
|
|
||||||
|
|
||||||
tag-release:
|
tag-release:
|
||||||
stage: release
|
stage: release
|
||||||
tags:
|
tags:
|
||||||
@@ -419,44 +665,57 @@ tag-release:
|
|||||||
artifacts: true
|
artifacts: true
|
||||||
- job: windows-package-exe
|
- job: windows-package-exe
|
||||||
artifacts: true
|
artifacts: true
|
||||||
- job: build-users-doc
|
# - job: build-users-doc
|
||||||
artifacts: true
|
# artifacts: true
|
||||||
- job: build-developers-doc
|
- job: build-developers-doc
|
||||||
artifacts: true
|
artifacts: true
|
||||||
|
- job: pkg-hash
|
||||||
|
artifacts: true
|
||||||
rules:
|
rules:
|
||||||
- if: $CI_COMMIT_TAG
|
- if: $CI_COMMIT_TAG =~ /^v/
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- linux/pamhyr-gnulinux.tar.xz
|
- linux/pamhyr-gnulinux.tar.xz
|
||||||
- windows/pamhyr-windows.zip
|
- windows/pamhyr-windows.zip
|
||||||
- windows/pamhyr-windows.exe
|
- windows/pamhyr-windows.exe
|
||||||
|
- linux/pamhyr-gnulinux.tar.xz.sha256
|
||||||
|
- windows/pamhyr-windows.zip.sha256
|
||||||
|
- windows/pamhyr-windows.exe.sha256
|
||||||
- doc/dev/documentation.pdf
|
- doc/dev/documentation.pdf
|
||||||
- doc/users/documentation.pdf
|
# - doc/users/documentation.pdf
|
||||||
script:
|
script:
|
||||||
- cd packages
|
- cd packages
|
||||||
release:
|
release:
|
||||||
name: '$CI_COMMIT_TAG'
|
name: '$CI_COMMIT_TAG'
|
||||||
description: 'Automatic release from tag $CI_COMMIT_TAG'
|
description: '$CI_COMMIT_TAG_MESSAGE'
|
||||||
tag_name: '$CI_COMMIT_TAG'
|
tag_name: '$CI_COMMIT_TAG'
|
||||||
ref: '$CI_COMMIT_SHA'
|
ref: '$CI_COMMIT_SHA'
|
||||||
assets:
|
assets:
|
||||||
links:
|
links:
|
||||||
|
- name: 'GNU/Linux CHECKSUM SHA256 (tar.xz)'
|
||||||
|
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/linux/pamhyr-gnulinux.tar.xz.sha256'
|
||||||
|
filepath: '/linux/pamhyr-gnulinux.tar.xz.sha256'
|
||||||
|
link_type: 'package'
|
||||||
- name: 'GNU/Linux (tar.xz)'
|
- name: 'GNU/Linux (tar.xz)'
|
||||||
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/linux/pamhyr-gnulinux.tar.xz'
|
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/linux/pamhyr-gnulinux.tar.xz'
|
||||||
filepath: '/linux/pamhyr-gnulinux.tar.xz'
|
filepath: '/linux/pamhyr-gnulinux.tar.xz'
|
||||||
link_type: 'package'
|
link_type: 'package'
|
||||||
|
- name: 'Windows CHECKSUM SHA256 (exe)'
|
||||||
|
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/windows/pamhyr-windows.exe.sha256'
|
||||||
|
filepath: '/windows/pamhyr-windows.exe.sha256'
|
||||||
|
link_type: 'package'
|
||||||
- name: 'Windows (exe)'
|
- name: 'Windows (exe)'
|
||||||
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/windows/pamhyr-windows.exe'
|
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/windows/pamhyr-windows.exe'
|
||||||
filepath: '/windows/pamhyr-windows.exe'
|
filepath: '/windows/pamhyr-windows.exe'
|
||||||
link_type: 'package'
|
link_type: 'package'
|
||||||
|
- name: 'Windows CHECKSUM SHA256 (zip)'
|
||||||
|
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/windows/pamhyr-windows.zip.sha256'
|
||||||
|
filepath: '/windows/pamhyr-windows.zip.sha256'
|
||||||
|
link_type: 'package'
|
||||||
- name: 'Windows (zip)'
|
- name: 'Windows (zip)'
|
||||||
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/windows/pamhyr-windows.zip'
|
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/windows/pamhyr-windows.zip'
|
||||||
filepath: '/windows/pamhyr-windows.zip'
|
filepath: '/windows/pamhyr-windows.zip'
|
||||||
link_type: 'package'
|
link_type: 'package'
|
||||||
- name: 'User documentations (pdf)'
|
|
||||||
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/doc/users/documentation.pdf'
|
|
||||||
filepath: '/doc/users/documentation.pdf'
|
|
||||||
link_type: 'other'
|
|
||||||
- name: 'Dev documentations (pdf)'
|
- name: 'Dev documentations (pdf)'
|
||||||
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/doc/dev/documentation.pdf'
|
url: '${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/doc/dev/documentation.pdf'
|
||||||
filepath: '/doc/dev/documentation.pdf'
|
filepath: '/doc/dev/documentation.pdf'
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Black">
|
||||||
|
<option name="sdkName" value="Python 3.10 (pamhyr)" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (pamhyr)" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/pamhyr.iml" filepath="$PROJECT_DIR$/.idea/pamhyr.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="jdk" jdkName="Python 3.10 (pamhyr)" jdkType="Python SDK" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
<component name="PyDocumentationSettings">
|
||||||
|
<option name="format" value="PLAIN" />
|
||||||
|
<option name="myDocStringFormat" value="Plain" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
Sylvain COULIBALY, INRAE, 2020 - 2022
|
Sylvain COULIBALY, INRAE, 2020 - 2022
|
||||||
Théophile TERRAZ, INRAE, 2022 - 2023
|
Théophile TERRAZ, INRAE, 2022 - 2024
|
||||||
Pierre-Antoine ROUBY, INRAE, 2023
|
Pierre-Antoine ROUBY, INRAE, 2023 - 2026
|
||||||
|
Dylan JEANNIN, INRAE, 2026
|
||||||
@@ -3,63 +3,39 @@
|
|||||||
Pamhyr is a free and open source graphical user interface for 1D hydro-sedimentary
|
Pamhyr is a free and open source graphical user interface for 1D hydro-sedimentary
|
||||||
modelling of rivers.
|
modelling of rivers.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
+ Edit a complex river hydraulics network
|
+ Define a complex river hydraulics network
|
||||||
+ Define the river geometry
|
+ Define the river geometry
|
||||||
+ Define boundary conditions
|
+ Define boundary conditions
|
||||||
+ Define lateral contribution
|
+ Define lateral contribution
|
||||||
+ Edit river friction
|
+ Define river friction
|
||||||
+ Add reservoirs
|
+ Define reservoirs
|
||||||
+ Add hydraulic structures
|
+ Define hydraulic structures
|
||||||
+ Generate initial conditions
|
+ Define or generate initial conditions
|
||||||
+ Edit river sedimentary layers
|
+ Define river sedimentary layers
|
||||||
+ Save the study in a unique file
|
+ Save the study in a unique file
|
||||||
+ Run Mage 8 on a study and visualize results
|
+ Run Mage 8 on a study and visualize results
|
||||||
|
+ Create and edit study alternative scenario tree
|
||||||
|
|
||||||
Let see the
|
Let see the
|
||||||
[documentation](https://gitlab.irstea.fr/theophile.terraz/pamhyr/-/wikis/home)
|
[documentation](https://gitlab.com/pamhyr/pamhyr2/-/wikis/home)
|
||||||
|
([:fr:](https://gitlab.com/pamhyr/pamhyr2/-/wikis/home-fr),
|
||||||
|
[:gb:](https://gitlab.com/pamhyr/pamhyr2/-/wikis/home-en))
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
### GNU/Linux
|
### GNU/Linux
|
||||||
|
|
||||||
Downloads the [last
|
See documentation:
|
||||||
realease](https://gitlab.irstea.fr/theophile.terraz/pamhyr/-/releases/permalink/latest)
|
- [French :fr:](https://gitlab.com/pamhyr/pamhyr2/-/wikis/home/fr/Install%20on%20GNULinux)
|
||||||
GNU/Linux binary archive.
|
- [English :gb:](https://gitlab.com/pamhyr/pamhyr2/-/wikis/home/en/Install%20on%20GNULinux)
|
||||||
|
|
||||||
```shell
|
|
||||||
tar xf pamhyr-gnulinux.tar.xz
|
|
||||||
cd pamhyr
|
|
||||||
./Pamhyr2
|
|
||||||
```
|
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
Downloads the [last
|
See documentation:
|
||||||
realease](https://gitlab.irstea.fr/theophile.terraz/pamhyr/-/releases/permalink/latest)
|
- [French :fr:](https://gitlab.com/pamhyr/pamhyr2/-/wikis/home/fr/Install%20on%20Windows)
|
||||||
Windows installer or ZIP archive.
|
- [English :gb:](https://gitlab.com/pamhyr/pamhyr2/-/wikis/home/en/Install%20on%20Windows)
|
||||||
|
|
||||||
### From source code
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# Get mage
|
|
||||||
mkdir mage
|
|
||||||
cd mage
|
|
||||||
|
|
||||||
curl -L -o mage.tgz https://gitlab.irstea.fr/jean-baptiste.faure/mage/-/releases/v8.3.2/downloads/packages/mage_linux.tgz
|
|
||||||
tar xf mage.tgz
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
# Get Pamhyr2 source code
|
|
||||||
git clone https://gitlab.irstea.fr/theophile.terraz/pamhyr/
|
|
||||||
cd pamhyr
|
|
||||||
|
|
||||||
# Install dependencies
|
|
||||||
pip3 install -r requirements.txt
|
|
||||||
|
|
||||||
# Run pamhyr
|
|
||||||
./src/pamhyr.py
|
|
||||||
```
|
|
||||||
@@ -1,18 +1,23 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
echo " PDF documentation.org"
|
FILES="documentation.org scenario.org"
|
||||||
emacs -nw --batch \
|
|
||||||
|
for file in $FILES
|
||||||
|
do
|
||||||
|
echo " PDF $file"
|
||||||
|
emacs -nw --batch \
|
||||||
--eval "(require 'org)" \
|
--eval "(require 'org)" \
|
||||||
--eval "(require 'ox-latex)" \
|
--eval "(require 'ox-latex)" \
|
||||||
--eval "(load-file \"../tools/setup.el\")" \
|
--eval "(load-file \"../tools/setup.el\")" \
|
||||||
--file ./documentation.org \
|
--file ./$file \
|
||||||
-f org-latex-export-to-pdf
|
-f org-latex-export-to-pdf \
|
||||||
|
|
||||||
echo " HTML documentation.org"
|
echo " HTML $file"
|
||||||
emacs -nw --batch \
|
emacs -nw --batch \
|
||||||
--eval "(require 'org)" \
|
--eval "(require 'org)" \
|
||||||
--eval "(require 'ox-latex)" \
|
--eval "(require 'ox-latex)" \
|
||||||
--eval "(require 'ox-html)" \
|
--eval "(require 'ox-html)" \
|
||||||
--eval "(load-file \"../tools/setup.el\")" \
|
--eval "(load-file \"../tools/setup.el\")" \
|
||||||
--file ./documentation.org \
|
--file ./$file \
|
||||||
-f org-html-export-to-html
|
-f org-html-export-to-html
|
||||||
|
done
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# documentation.org -- Pamhyr developers documentation
|
# documentation.org -- Pamhyr developers documentation
|
||||||
# Copyright (C) 2023 INRAE
|
# Copyright (C) 2023-2024 INRAE
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -28,20 +28,6 @@
|
|||||||
#+OPTIONS: toc:t
|
#+OPTIONS: toc:t
|
||||||
#+LANGUAGE: UKenglish
|
#+LANGUAGE: UKenglish
|
||||||
|
|
||||||
#+NAME: attr_wrap
|
|
||||||
#+HEADER: :var width="\\textwidth"
|
|
||||||
#+HEADER: :var caption=""
|
|
||||||
#+HEADER: :var smallcaption=""
|
|
||||||
#+HEADER: :var name=""
|
|
||||||
#+HEADER: :var data=""
|
|
||||||
#+HEADER: :var float="nil"
|
|
||||||
#+BEGIN_SRC sh :results output :exports none
|
|
||||||
echo "#+CAPTION[$smallcaption]: $caption"
|
|
||||||
echo "#+NAME: $name"
|
|
||||||
echo "#+ATTR_LATEX: :width $width :float $float"
|
|
||||||
echo "$data"
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
#+BEGIN_abstract
|
#+BEGIN_abstract
|
||||||
This document is for the use of developers. It describes the project
|
This document is for the use of developers. It describes the project
|
||||||
architecture, the tools available to assist development and
|
architecture, the tools available to assist development and
|
||||||
@@ -54,13 +40,13 @@ documentation, translations or code.
|
|||||||
|
|
||||||
* Introduction
|
* Introduction
|
||||||
|
|
||||||
Pamhyr2 is free and open source software (FOSS) graphical user
|
{{{pamhyr2}}} is free and open source software (FOSS) graphical user
|
||||||
interface (GUI) for 1D hydro-sedimentary modelling of rivers developed
|
interface (GUI) for 1D hydro-sedimentary modelling of rivers developed
|
||||||
in Python (with version 3.8). It use PyQt at version 5 and matplotlib
|
in Python (with version 3.8). It use PyQt at version 5 and matplotlib
|
||||||
in version 3.4.1 or later for the user insterface (see
|
in version 3.4.1 or later for the user insterface (see
|
||||||
{{{file(/requirements.txt)}}} for details). The architecture of
|
{{{file(/requirements.txt)}}} for details). The architecture of
|
||||||
project code follow the Qt Model/View architecture [fn:qt-arch] (see
|
project code follow the Qt Model/View architecture [fn:qt-arch] (see
|
||||||
details in section [[Architecture]]). Pamhyr2 packages can be build
|
details in section [[Architecture]]). {{{pamhyr2}}} packages can be build
|
||||||
manually (see section [[Building packages]]), but there are automatically
|
manually (see section [[Building packages]]), but there are automatically
|
||||||
build with the gitlab-ci (see the section [[Setup the CI
|
build with the gitlab-ci (see the section [[Setup the CI
|
||||||
environment]]). Documentation files are written with org-mode[fn:org],
|
environment]]). Documentation files are written with org-mode[fn:org],
|
||||||
@@ -75,7 +61,7 @@ https://doc.qt.io/qt-5/model-view-programming.html (last access
|
|||||||
|
|
||||||
* Architecture
|
* Architecture
|
||||||
|
|
||||||
Pamhyr2's architecture is based on Qt Model/View, see Figure
|
{{{pamhyr2}}}'s architecture is based on Qt Model/View, see Figure
|
||||||
[[graph-architecture]]. It is made up of several different components: the
|
[[graph-architecture]]. It is made up of several different components: the
|
||||||
model (in blue), the graphical components (in red), the
|
model (in blue), the graphical components (in red), the
|
||||||
actions/delegates (in green), the commands (in purple), the solvers
|
actions/delegates (in green), the commands (in purple), the solvers
|
||||||
@@ -178,7 +164,7 @@ https://doc.qt.io/qt-5/model-view-programming.html
|
|||||||
|
|
||||||
** Model
|
** Model
|
||||||
|
|
||||||
The model is a set of Python classes. In Pamhyr2, this classes must
|
The model is a set of Python classes. In {{{pamhyr2}}}, this classes must
|
||||||
respect some constraint. Each model class must inherits
|
respect some constraint. Each model class must inherits
|
||||||
=Model.Tools.SQLSubModel= abstract class, except the =Model.Study=
|
=Model.Tools.SQLSubModel= abstract class, except the =Model.Study=
|
||||||
class who inherits =Model.Tools.SQLModel= (see [[SQL]]).
|
class who inherits =Model.Tools.SQLModel= (see [[SQL]]).
|
||||||
@@ -369,6 +355,7 @@ of Bar (Listing [[sql-bar]] and [[sql-foo]]).
|
|||||||
CREATE TABLE bar (
|
CREATE TABLE bar (
|
||||||
id INTEGER NOT NULL PRIMARY KEY,
|
id INTEGER NOT NULL PRIMARY KEY,
|
||||||
x INTEGER NOT NULL,
|
x INTEGER NOT NULL,
|
||||||
|
y INTEGER NOT NULL,
|
||||||
foo_id INTEGER NOT NULL,
|
foo_id INTEGER NOT NULL,
|
||||||
FOREIGN KEY(foo_id) REFERENCES foo(id),
|
FOREIGN KEY(foo_id) REFERENCES foo(id),
|
||||||
)""")
|
)""")
|
||||||
@@ -455,6 +442,15 @@ of Bar (Listing [[sql-bar]] and [[sql-foo]]).
|
|||||||
bar._sql_save(execute, data=data)
|
bar._sql_save(execute, data=data)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
Let see the results database scheme for {{{pamhyr2}}} at version v0.0.7 in
|
||||||
|
Figure [[sql_schema]].
|
||||||
|
|
||||||
|
#+NAME: sql_schema
|
||||||
|
#+ATTR_LATEX: :width 16cm
|
||||||
|
#+CAPTION: SQLite database scheme at {{{pamhyr2}}} version v0.0.7 (generate with [[https://gitlab.com/Screwtapello/sqlite-schema-diagram]])
|
||||||
|
[[./images/schema_v0.0.7.png]]
|
||||||
|
|
||||||
|
|
||||||
[fn:sqlite] The SQLite web site: https://www.sqlite.org/index.html
|
[fn:sqlite] The SQLite web site: https://www.sqlite.org/index.html
|
||||||
(last access 2023-09-20)
|
(last access 2023-09-20)
|
||||||
|
|
||||||
@@ -476,7 +472,7 @@ PamhyrModelList but use a dictionary instead of list.
|
|||||||
|
|
||||||
** View
|
** View
|
||||||
|
|
||||||
Pamhyr2 use Qt as graphical user interface library with the
|
{{{pamhyr2}}} use Qt as graphical user interface library with the
|
||||||
application "Qt designer" for windows or widget creation (see [[UI file]])
|
application "Qt designer" for windows or widget creation (see [[UI file]])
|
||||||
and "Qt linguist" for interface translate (see [[Translate]]). In
|
and "Qt linguist" for interface translate (see [[Translate]]). In
|
||||||
addition, we use matplotlib as ploting library (see [[Plot]]).
|
addition, we use matplotlib as ploting library (see [[Plot]]).
|
||||||
@@ -491,11 +487,11 @@ componant translate, and possible other files or sub-directories.
|
|||||||
|
|
||||||
*** UI file
|
*** UI file
|
||||||
|
|
||||||
We define as possible all Pamhyr2 windows and custom widgets with "Qt
|
We define as possible all {{{pamhyr2}}} windows and custom widgets
|
||||||
designer". This application generate UI file who describes interface
|
with "Qt designer". This application generate UI file who describes
|
||||||
organisation with table, layout, button, etc. This method is faster
|
interface organisation with table, layout, button, etc. This method is
|
||||||
than hand made windows and widget creation, and saves us some purely
|
faster than hand made windows and widget creation, and saves us some
|
||||||
descriptive code. The UI files are saved into =src/View/ui= for
|
purely descriptive code. The UI files are saved into =src/View/ui= for
|
||||||
window, and =/src/View/ui/Widgets= for custom widget.
|
window, and =/src/View/ui/Widgets= for custom widget.
|
||||||
|
|
||||||
*** Translate
|
*** Translate
|
||||||
@@ -523,10 +519,11 @@ window, and =/src/View/ui/Widgets= for custom widget.
|
|||||||
|
|
||||||
*** Window
|
*** Window
|
||||||
|
|
||||||
The abstract class PamhyrWindow and PamhyrDialog are used for most of
|
The abstract class =PamhyrWindow= and =PamhyrDialog= are used for most
|
||||||
Pamhyr2 window. These class allow to create an window for Pamhyr2 GUI
|
of {{{pamhyr2}}} window. These class allow to create an window for
|
||||||
and implemente some useful methods. The super class method difine some
|
{{{pamhyr2}}} GUI and implemente some useful methods. The super class
|
||||||
generic value from optional parameters, for examples:
|
method difine some generic value from optional parameters, for
|
||||||
|
examples:
|
||||||
- =self._study=: The study giving in constructor parameters =study=
|
- =self._study=: The study giving in constructor parameters =study=
|
||||||
(typically a =Model.Study= class object)
|
(typically a =Model.Study= class object)
|
||||||
- =self._config=: The configuration giving in constructor parameters
|
- =self._config=: The configuration giving in constructor parameters
|
||||||
@@ -536,7 +533,7 @@ generic value from optional parameters, for examples:
|
|||||||
object)
|
object)
|
||||||
|
|
||||||
#+NAME: window
|
#+NAME: window
|
||||||
#+CAPTION: Example of Pamhyr2 window
|
#+CAPTION: Example of {{{pamhyr2}}} window
|
||||||
#+begin_src python :python python3 :results output :noweb yes
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
from View.Tools.PamhyrWindow import PamhyrWindow
|
from View.Tools.PamhyrWindow import PamhyrWindow
|
||||||
from View.My.Translate import MyTranslate
|
from View.My.Translate import MyTranslate
|
||||||
@@ -546,8 +543,8 @@ generic value from optional parameters, for examples:
|
|||||||
_pamhyr_ui = "MyUI"
|
_pamhyr_ui = "MyUI"
|
||||||
_pamhyr_name = "My window"
|
_pamhyr_name = "My window"
|
||||||
|
|
||||||
def __init__(self, my_data=None,
|
def __init__(self, study=None, config=None,
|
||||||
study=None, config=None,
|
my_data=None,
|
||||||
parent=None):
|
parent=None):
|
||||||
self._my_data = my_data
|
self._my_data = my_data
|
||||||
|
|
||||||
@@ -583,7 +580,7 @@ window componants or connections.
|
|||||||
|
|
||||||
*** Table
|
*** Table
|
||||||
|
|
||||||
An abstract class PamhyrTableModel is available to define a simple
|
An abstract class =PamhyrTableModel= is available to define a simple
|
||||||
QAbstractTableModel shortly. In simple cases, there are only =data=
|
QAbstractTableModel shortly. In simple cases, there are only =data=
|
||||||
and =setData= methode to implement, but the constructor needs more
|
and =setData= methode to implement, but the constructor needs more
|
||||||
information than a classic QAbstractTableModel class.
|
information than a classic QAbstractTableModel class.
|
||||||
@@ -636,7 +633,7 @@ class AddNodeCommand(QUndoCommand):
|
|||||||
self._node = node
|
self._node = node
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
self._graph.remove_node(self._node.name)
|
self._graph.remove_node(self._node)
|
||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._graph.insert_node(self._node)
|
self._graph.insert_node(self._node)
|
||||||
@@ -644,7 +641,7 @@ class AddNodeCommand(QUndoCommand):
|
|||||||
|
|
||||||
All undo command must be push into a =QUndoStack= (see Listing
|
All undo command must be push into a =QUndoStack= (see Listing
|
||||||
[[undo-cmd-push]]) to perform the action and allow user undo and redo this
|
[[undo-cmd-push]]) to perform the action and allow user undo and redo this
|
||||||
action. In PamhyrWindow (and PamhyrDialog) the undo stack is
|
action. In =PamhyrWindow= (and =PamhyrDialog=) the undo stack is
|
||||||
automatically create if the option ="undo"= is activate at window
|
automatically create if the option ="undo"= is activate at window
|
||||||
creation, this stack is accessible at =self._undo_stack=.
|
creation, this stack is accessible at =self._undo_stack=.
|
||||||
|
|
||||||
@@ -661,11 +658,13 @@ creation, this stack is accessible at =self._undo_stack=.
|
|||||||
|
|
||||||
*** Plot
|
*** Plot
|
||||||
|
|
||||||
To define a new plot you can create a class who inherit to APlot. The
|
To define a new plot you can create a class who inherit to
|
||||||
creator need threee argument:
|
=PamhyrPlot=. The creator need at leaste five argument:
|
||||||
- A =canvas= of type =MplCanvas=
|
- A =canvas= of type =MplCanvas=
|
||||||
|
- A (optional) =trad= of type =PamhyrTranslate=
|
||||||
- A =data= used in =draw= and =update= to create and update the plot
|
- A =data= used in =draw= and =update= to create and update the plot
|
||||||
- A optional =toolbar= of type =PamhyrToolbar=
|
- A optional =toolbar= of type =PamhyrToolbar=
|
||||||
|
- A =parent= window
|
||||||
This class must implement two method =draw= and =update=, the first
|
This class must implement two method =draw= and =update=, the first
|
||||||
method to draw the plot from scratch, the second to update the plot if
|
method to draw the plot from scratch, the second to update the plot if
|
||||||
data has changed.
|
data has changed.
|
||||||
@@ -673,25 +672,42 @@ data has changed.
|
|||||||
#+begin_src python :python python3 :results output :noweb yes
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
from View.Tools.PamhyrPlot import PamhyrPlot
|
from View.Tools.PamhyrPlot import PamhyrPlot
|
||||||
|
|
||||||
class MyPlot(APlot):
|
class MyPlot(PamhyrPlot):
|
||||||
def __init__(self, canvas=None, data=None, toolbar=None):
|
def __init__(self, canvas=None, trad=None, toolbar=None
|
||||||
|
data=None, parent=None):
|
||||||
super(MyPlot, self).__init__(
|
super(MyPlot, self).__init__(
|
||||||
canvas=canvas,
|
canvas=canvas,
|
||||||
|
trad=trad,
|
||||||
data=data,
|
data=data,
|
||||||
toolbar=toolbar
|
toolbar=toolbar,
|
||||||
|
parent=parent
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.label_x = self._trad["x"]
|
||||||
|
self.label_y = self._trad["y"]
|
||||||
|
|
||||||
|
# Optional configuration
|
||||||
|
self._isometric_axis = False
|
||||||
|
|
||||||
|
self._auto_relim_update = True
|
||||||
|
self._autoscale_update = True
|
||||||
|
|
||||||
def draw(self):
|
def draw(self):
|
||||||
# Draw function code...
|
# Draw function code...
|
||||||
|
|
||||||
def update(self, ind = None):
|
def update(self):
|
||||||
# Update function code...
|
# Update function code...
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
# Clear plot values...
|
||||||
|
|
||||||
|
# ...
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Solver
|
** Solver
|
||||||
|
|
||||||
The Pamhyr2 architecture allow to define multiple solver. A solver is
|
The {{{pamhyr2}}} architecture allow to define multiple solver. A
|
||||||
define by a:
|
solver is define by a:
|
||||||
- type
|
- type
|
||||||
- name
|
- name
|
||||||
- description,
|
- description,
|
||||||
@@ -707,11 +723,11 @@ different solver type, this solver type implement the code for export
|
|||||||
study to solver input format, and read the solver output to study
|
study to solver input format, and read the solver output to study
|
||||||
results. There exists a generic solver with a generic input and output
|
results. There exists a generic solver with a generic input and output
|
||||||
format, the type could be use to use a solver not implemented in
|
format, the type could be use to use a solver not implemented in
|
||||||
Pamhyr2, but this solver must can read/write input and output generic
|
{{{pamhyr2}}}, but this solver must can read/write input and output
|
||||||
format or use external script. There is possible to define different
|
generic format or use external script. There is possible to define
|
||||||
solver with the same type, for example two differents version of the
|
different solver with the same type, for example two differents
|
||||||
same solver. Finaly, with input and output formater is possible to
|
version of the same solver. Finaly, with input and output formater is
|
||||||
execute a code on distant computer, for example, over ssh.
|
possible to execute a code on distant computer, for example, over ssh.
|
||||||
|
|
||||||
#+name: graph-multi-solver
|
#+name: graph-multi-solver
|
||||||
#+header: :results drawer
|
#+header: :results drawer
|
||||||
@@ -745,7 +761,7 @@ execute a code on distant computer, for example, over ssh.
|
|||||||
style=dashed;
|
style=dashed;
|
||||||
subgraph cluster021 {
|
subgraph cluster021 {
|
||||||
label="Solver Classes";
|
label="Solver Classes";
|
||||||
classSolverM7[label="Mage7", fillcolor=6];
|
//classSolverM7[label="Mage7", fillcolor=6];
|
||||||
classSolverM8[label="Mage8", fillcolor=6];
|
classSolverM8[label="Mage8", fillcolor=6];
|
||||||
classSolverR[label="RubarBE", fillcolor=6];
|
classSolverR[label="RubarBE", fillcolor=6];
|
||||||
}
|
}
|
||||||
@@ -828,8 +844,8 @@ solver and get results:
|
|||||||
- (2.1) The solver read the input file(s)
|
- (2.1) The solver read the input file(s)
|
||||||
- (2.2) The solver compute results and write it to solver output
|
- (2.2) The solver compute results and write it to solver output
|
||||||
file(s)
|
file(s)
|
||||||
- (3) Pamhyr2 create a Reuslts
|
- (3) {{{pamhyr2}}} create a =Results= object
|
||||||
- (3.1) The Pamhyr2 solver class read solver output file(s) and
|
- (3.1) The {{{pamhyr2}}} solver class read solver output file(s) and
|
||||||
complete Results with readed data
|
complete Results with readed data
|
||||||
|
|
||||||
#+name: graph-pipeline
|
#+name: graph-pipeline
|
||||||
@@ -947,7 +963,7 @@ the temporal order of action is prensented in Figure
|
|||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
To implement a Solver in Pamhyr2, there exists a abstract class
|
To implement a Solver in {{{pamhyr2}}}, there exists a abstract class
|
||||||
=Solver.AbstractSolver=. A class who herits this class, must implement
|
=Solver.AbstractSolver=. A class who herits this class, must implement
|
||||||
different methods:
|
different methods:
|
||||||
- =export=: Export the study to solver input file(s)
|
- =export=: Export the study to solver input file(s)
|
||||||
@@ -958,27 +974,35 @@ different methods:
|
|||||||
|
|
||||||
** Unit tests
|
** Unit tests
|
||||||
|
|
||||||
The unit tests is actually not implemented in Pamhyr2, it is a *work
|
A very small part of {{{pamhyr2}}} has unit test. This part is limited to the Model.
|
||||||
in progress*.
|
|
||||||
|
#+begin_src shell
|
||||||
|
python3 -m venv test
|
||||||
|
. test test/bin/activate
|
||||||
|
pip3 install -U -r ./full-requirements.txt
|
||||||
|
|
||||||
|
cd src/
|
||||||
|
python3 -Walways -m unittest discovert -v -t .
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** The debug mode
|
** The debug mode
|
||||||
|
|
||||||
To activate an deactivate the Pamhyr2 debug mode you can open the
|
To activate an deactivate the {{{pamhyr2}}} debug mode you can open
|
||||||
configuration window and type "Ctrl+G" or run Pamhyr2 with command
|
the configuration window and type "Ctrl+G" or run {{{pamhyr2}}} with
|
||||||
line:
|
command line:
|
||||||
#+begin_src shell
|
#+begin_src shell
|
||||||
./Pamhyr2 debug
|
./Pamhyr2 debug
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
This mode add some log and add two action in main window menu:
|
This mode add some log and add two action in main window menu: "About
|
||||||
"About/Debug" open a window with Python Repl in current Python
|
> Debug" open a window with Python Repl in current Python
|
||||||
environement, and "About/Debug SQLite" who open the application
|
environement, and "About > Debug SQLite" who open the application
|
||||||
SQLiteBrowser (if installed) on current Study to explore the study
|
SQLiteBrowser (if installed) on current Study to explore the study
|
||||||
data base file.
|
data base file.
|
||||||
|
|
||||||
#+NAME: debug-repl
|
#+NAME: debug-repl
|
||||||
#+ATTR_LATEX: :width 12cm
|
#+ATTR_LATEX: :width 14cm
|
||||||
#+CAPTION: Pamhyr2 debug Python REPL
|
#+CAPTION: {{{pamhyr2}}} debug Python REPL
|
||||||
[[./images/python-debug-repl.png]]
|
[[./images/python-debug-repl.png]]
|
||||||
|
|
||||||
* Build the project
|
* Build the project
|
||||||
@@ -991,7 +1015,7 @@ to build packages manually.
|
|||||||
If you need an hand made package, you can script available in
|
If you need an hand made package, you can script available in
|
||||||
{{{file(packages)}}} directory.
|
{{{file(packages)}}} directory.
|
||||||
|
|
||||||
*** GNU/Linux
|
*** GNU/Linux {{{linux}}}
|
||||||
|
|
||||||
On GNU/Linux building GNU/Linux packages is easy, you just need python
|
On GNU/Linux building GNU/Linux packages is easy, you just need python
|
||||||
in version 3.8 must be installed with venv and pyinstaller packages
|
in version 3.8 must be installed with venv and pyinstaller packages
|
||||||
@@ -1013,7 +1037,7 @@ cd packages
|
|||||||
./linux.sh
|
./linux.sh
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Windows
|
*** Windows {{{windows}}}
|
||||||
|
|
||||||
To make the Windows packages you have two choice: If you use Windows
|
To make the Windows packages you have two choice: If you use Windows
|
||||||
you can use the script {{{file(packages/windows.bat)}}}, other else
|
you can use the script {{{file(packages/windows.bat)}}}, other else
|
||||||
@@ -1028,10 +1052,10 @@ winetricks installed.
|
|||||||
|
|
||||||
** Setup the CI environment
|
** Setup the CI environment
|
||||||
|
|
||||||
Pamhyr2 need a Linux ci-runner and a Windows ci-runner for building
|
{{{pamhyr2}}} need a Linux ci-runner and a Windows ci-runner for building
|
||||||
package. The windows ci-runner could run on a Wine environement.
|
package. The windows ci-runner could run on a Wine environement.
|
||||||
|
|
||||||
*** Linux
|
*** Linux {{{linux}}}
|
||||||
|
|
||||||
The Linux ci-runner need some software and dependencies in addtion of
|
The Linux ci-runner need some software and dependencies in addtion of
|
||||||
gitlab-ci.
|
gitlab-ci.
|
||||||
@@ -1041,10 +1065,11 @@ gitlab-ci.
|
|||||||
emacs emacs-goodies-el \
|
emacs emacs-goodies-el \
|
||||||
texlive-full \
|
texlive-full \
|
||||||
python3.8 python3.8-venv
|
python3.8 python3.8-venv
|
||||||
|
|
||||||
sudo python3 -m pip install pyinstaller
|
sudo python3 -m pip install pyinstaller
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Windows (Wine)
|
*** Windows (Wine) {{{windows}}}
|
||||||
|
|
||||||
The ci-runner environment for Wine need at least wine version 8, let
|
The ci-runner environment for Wine need at least wine version 8, let
|
||||||
[[https://www.numetopia.fr/comment-installer-wine-sur-ubuntu-ou-linux-mint/][see who to add wine official depot to your linux distribution]].
|
[[https://www.numetopia.fr/comment-installer-wine-sur-ubuntu-ou-linux-mint/][see who to add wine official depot to your linux distribution]].
|
||||||
@@ -1053,18 +1078,77 @@ The ci-runner environment for Wine need at least wine version 8, let
|
|||||||
sudo apt install wine-stable winetricks
|
sudo apt install wine-stable winetricks
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
In addition, the environment need windows version of:
|
**** Setup environment
|
||||||
- [[https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe][Python 3.8.10]]
|
|
||||||
- Git
|
Export Wine environment variable to set wine as 64 bits architecture
|
||||||
- PowerShell
|
and set the correct path for wine environment.
|
||||||
- Gitlab-ci
|
|
||||||
|
#+begin_src shell
|
||||||
|
export WINARCH=win64
|
||||||
|
export WINEPREFIX=$PWD/my-wine-runner-prefix
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Setup Wine environment to Windows 10 and install the minimal fonts
|
||||||
|
with =winetricks=.
|
||||||
|
|
||||||
|
#+begin_src shell
|
||||||
|
winetricks corefonts win10
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
**** Install dependencies
|
||||||
|
|
||||||
|
First install 7zip with help of =winetricks=.
|
||||||
|
|
||||||
|
#+begin_src shell
|
||||||
|
winetricks 7zip
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
In addition, install in the environment the Windows version of:
|
||||||
|
- [[https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe][Python 3.8.10]] (ensure the python path is set and Pip is enable)
|
||||||
|
- [[https://git-scm.com/downloads][Git]]
|
||||||
|
- [[https://github.com/PowerShell/PowerShell/releases/download/v7.0.1/PowerShell-7.0.1-win-x64.msi][PowerShell]]
|
||||||
- [[https://freefr.dl.sourceforge.net/project/nsis/NSIS%203/3.08/nsis-3.08-setup.exe][Nsis]]
|
- [[https://freefr.dl.sourceforge.net/project/nsis/NSIS%203/3.08/nsis-3.08-setup.exe][Nsis]]
|
||||||
|
|
||||||
|
To run a Windows executable into wine environement, use =wine64= command:
|
||||||
|
|
||||||
|
#+begin_src shell
|
||||||
|
wine64 <the-exe-file>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
Now, we can install =pyinstaller= on this windows environment:
|
Now, we can install =pyinstaller= on this windows environment:
|
||||||
#+begin_src shell
|
#+begin_src shell
|
||||||
wine python -m pip install pyinstaller
|
wine python -m pip install pyinstaller
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
Now, we can download [[https://docs.gitlab.com/runner/install/windows.html][Gitlab-ci]] runner for Windows an put it in the
|
||||||
|
current path.
|
||||||
|
|
||||||
|
**** Setup runner
|
||||||
|
|
||||||
|
You can configure the runner with command:
|
||||||
|
|
||||||
|
#+begin_src shell
|
||||||
|
wine64 gitlab-runner-windows-amd64.exe register
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
**** Run the runner
|
||||||
|
|
||||||
|
Create a new executable shell script =runner.sh= with following lines:
|
||||||
|
|
||||||
|
#+begin_src shell
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
export WINARCH=win64
|
||||||
|
export WINEPREFIX=$PWD/my-wine-runner-prefix
|
||||||
|
|
||||||
|
wine64 gitlab-runner-windows-amd64.exe run
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Now you can run the runner with command =./runner.sh=.
|
||||||
|
|
||||||
|
{{{bulb}}} You can run this command into a =screen= terminal, detach
|
||||||
|
the terminal and disconnect from runner machine to keep runner alive.
|
||||||
|
|
||||||
* Documentation files
|
* Documentation files
|
||||||
|
|
||||||
This document and the user documentation are org files. This text file
|
This document and the user documentation are org files. This text file
|
||||||
@@ -1247,23 +1331,23 @@ Some org-mode configuration used in documentations files are define in
|
|||||||
|
|
||||||
* How to contribute?
|
* How to contribute?
|
||||||
|
|
||||||
Pamhyr2 is free software: you can redistribute it and/or modify it
|
{{{pamhyr2}}} is free software: you can redistribute it and/or modify
|
||||||
under the terms of the GNU General Public License[fn:license], either
|
it under the terms of the GNU General Public License[fn:license],
|
||||||
version 3 of the License, or any later version.
|
either version 3 of the License, or any later version.
|
||||||
|
|
||||||
[fn:license] The GPLv3 web page:
|
[fn:license] The GPLv3 web page:
|
||||||
https://www.gnu.org/licenses/gpl-3.0.en.html
|
https://www.gnu.org/licenses/gpl-3.0.en.html
|
||||||
|
|
||||||
** Guidelines
|
** Guidelines
|
||||||
|
|
||||||
To contribute to Pamhyr2, we expect a minimum of respect between
|
To contribute to {{{pamhyr2}}}, we expect a minimum of respect between
|
||||||
contributors. We therefore ask you to respect the following rules
|
contributors. We therefore ask you to respect the following rules
|
||||||
regarding communication and contribution content:
|
regarding communication and contribution content:
|
||||||
+ No gender, racial, religious or social discrimination
|
+ No gender, racial, religious or social discrimination
|
||||||
+ No insults, personal attacks or potentially offensive remarks
|
+ No insults, personal attacks or potentially offensive remarks
|
||||||
+ Pamhyr2 is free software, and intended to remain so, so take care
|
+ {{{pamhyr2}}} is free software, and intended to remain so, so take
|
||||||
with the licensing of libraries and external content you want to add
|
care with the licensing of libraries and external content you want
|
||||||
to the project
|
to add to the project
|
||||||
+ Humour or hidden easter eggs are welcome if they respect the
|
+ Humour or hidden easter eggs are welcome if they respect the
|
||||||
previous rules
|
previous rules
|
||||||
|
|
||||||
@@ -1274,11 +1358,12 @@ an issue on the project's gitlab page[fn:p2-gitlab], or you can create
|
|||||||
a merge request on the same page with the changes you have made to the
|
a merge request on the same page with the changes you have made to the
|
||||||
code, translation or documentation.
|
code, translation or documentation.
|
||||||
|
|
||||||
The Pamhyr2 copyright is owned by INRAE[fn:inrae], but we keep a
|
The {{{pamhyr2}}} copyright is owned by INRAE[fn:inrae], but we keep a
|
||||||
record of each contributors. If you made a modification to pamhyr2
|
record of each contributors. If you made a modification to
|
||||||
software, please add your name at the end of {{{file(AUTHORS)}}} file
|
{{{pamhyr2}}} software, please add your name at the end of
|
||||||
and respect the Listing [[auth-format]] format. You can update this file
|
{{{file(AUTHORS)}}} file and respect the Listing [[auth-format]]
|
||||||
information for following contribution.
|
format. You can update this file information for following
|
||||||
|
contribution.
|
||||||
|
|
||||||
#+NAME: auth-format
|
#+NAME: auth-format
|
||||||
#+CAPTION: =AUTHORS= file format
|
#+CAPTION: =AUTHORS= file format
|
||||||
@@ -1289,16 +1374,17 @@ information for following contribution.
|
|||||||
#+CAPTION: Current =AUTHORS= file
|
#+CAPTION: Current =AUTHORS= file
|
||||||
#+INCLUDE: "../../AUTHORS" src text
|
#+INCLUDE: "../../AUTHORS" src text
|
||||||
|
|
||||||
[fn:p2-gitlab] The Pamhyr2 Gitlab project page:
|
[fn:p2-gitlab] The {{{pamhyr2}}} Gitlab project page:
|
||||||
https://gitlab.irstea.fr/theophile.terraz/pamhyr
|
https://gitlab.com/pamhyr/pamhyr2
|
||||||
[fn:inrae] The INRAE web site: https://www.inrae.fr/
|
[fn:inrae] The INRAE web site: https://www.inrae.fr/
|
||||||
|
|
||||||
** Translate
|
** Translate
|
||||||
|
|
||||||
You can improve or add translation for the project. To contribute to
|
You can improve or add translation for the project. To contribute to
|
||||||
Pamhyr2 translate, you need to use Qt Linguist[fn:qt-linguist]. Open
|
{{{pamhyr2}}} translate, you need to use Qt
|
||||||
Qt-linguist and edite the translation ({{{file(.ts)}}}) file, finally,
|
Linguist[fn:qt-linguist]. Open Qt-linguist and edit the translation
|
||||||
commit the new version of file and make a merge request.
|
({{{file(.ts)}}}) file, finally, commit the new version of file and
|
||||||
|
make a merge request.
|
||||||
|
|
||||||
If you want add a new language, edit the script
|
If you want add a new language, edit the script
|
||||||
{{{file(src/lang/create_ts.sh)}}} like Listing [[ts-it]]. Run the script
|
{{{file(src/lang/create_ts.sh)}}} like Listing [[ts-it]]. Run the script
|
||||||
@@ -1307,7 +1393,7 @@ and open the new file with Qt-linguist, setup target language (Figure
|
|||||||
file and make a merge request.
|
file and make a merge request.
|
||||||
|
|
||||||
#+NAME: ts-it
|
#+NAME: ts-it
|
||||||
#+CAPTION: Example of modified {{{file(src/lang/create_ts.sh)}}} to add italian (it) translate for Pamhyr2
|
#+CAPTION: Example of modified {{{file(src/lang/create_ts.sh)}}} to add italian (it) translate for {{{pamhyr2}}}
|
||||||
#+begin_src shell
|
#+begin_src shell
|
||||||
...
|
...
|
||||||
LANG="fr it"
|
LANG="fr it"
|
||||||
@@ -1325,7 +1411,7 @@ https://doc.qt.io/qt-5/qtlinguist-index.html (last access 2023-09-18)
|
|||||||
** Code contribution
|
** Code contribution
|
||||||
|
|
||||||
If you are developper you can improve and/or add features to
|
If you are developper you can improve and/or add features to
|
||||||
Pamhyr2. Please, follow the architecture described in section
|
{{{pamhyr2}}}. Please, follow the architecture described in section
|
||||||
[[Architecture]] as closely as possible. Keep the code simple, clear and
|
[[Architecture]] as closely as possible. Keep the code simple, clear and
|
||||||
efficient as possible. The master branch is reserved for the project
|
efficient as possible. The master branch is reserved for the project
|
||||||
maintainer; you can create a new branch or fork the project before the
|
maintainer; you can create a new branch or fork the project before the
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 224 KiB |
@@ -0,0 +1,661 @@
|
|||||||
|
# senario.org -- Pamhyr developers documentation
|
||||||
|
# Copyright (C) 2023-2024 INRAE
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
#+STARTUP: indent show2levels
|
||||||
|
|
||||||
|
#+INCLUDE: ../tools/macro.org
|
||||||
|
#+INCLUDE: ../tools/latex.org
|
||||||
|
|
||||||
|
#+TITLE: Scenario implementation in Pamhyr2: \textbf{Preparatory work}
|
||||||
|
#+SUBTITLE: Version: {{{version}}}
|
||||||
|
#+AUTHOR: {{{INRAE}}}
|
||||||
|
|
||||||
|
#+OPTIONS: toc:t
|
||||||
|
#+LANGUAGE: UKenglish
|
||||||
|
|
||||||
|
#+latex: \newpage
|
||||||
|
|
||||||
|
* COMMENT tools
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp :export none
|
||||||
|
(add-to-list 'org-structure-template-alist
|
||||||
|
'("p" "#+begin_src python :python python3 :results output\n\n#+end_src"))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
#+begin_example
|
||||||
|
((p #+begin_src python :python python3 :results output
|
||||||
|
|
||||||
|
,#+end_src) (d . #+name: graph-XXX
|
||||||
|
,#+header: :results drawer
|
||||||
|
,#+header: :exports results
|
||||||
|
,#+header: :post attr_wrap(width="12cm", data=*this*, name="graph-XXX", caption="Graph XXX", float="t")
|
||||||
|
,#+begin_src dot :file "images/graph-XXX.png" :cache no
|
||||||
|
digraph {
|
||||||
|
bgcolor="transparent";
|
||||||
|
node[colorscheme=set19,shape=box,style="filled",fillcolor=9];
|
||||||
|
}
|
||||||
|
,#+end_src) (p . src python :python python3 :results output :noweb yes
|
||||||
|
|
||||||
|
src) (t . EXPORT latex
|
||||||
|
\begin{table}
|
||||||
|
\centering
|
||||||
|
\resizebox{0.6\linewidth}{!}{
|
||||||
|
|
||||||
|
}
|
||||||
|
%\vspace{0.5pt}
|
||||||
|
%\caption{Number of tests by errors types}
|
||||||
|
\end{table}
|
||||||
|
,#+E) (B . src shell :session *shell* :results output :exports both) (a . export ascii) (c . center) (C . comment) (e . example) (E . export) (h . export html) (l . export latex) (q . quote) (s . src) (v . verse))
|
||||||
|
#+end_example
|
||||||
|
|
||||||
|
#+name: dbg-execute
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
def execute(db, query):
|
||||||
|
print(query)
|
||||||
|
return db.execute(query)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS: dbg-execute
|
||||||
|
|
||||||
|
#+name: execute
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
def execute(db, query):
|
||||||
|
return db.execute(query)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS: execute
|
||||||
|
|
||||||
|
* Principe
|
||||||
|
|
||||||
|
** Scenario
|
||||||
|
|
||||||
|
A scenario is defined by a name, a description and a parent
|
||||||
|
scenario. If a scenario as no parent, parent value is =None=. So, in
|
||||||
|
Pamhyr2 the list of scenario must by a tree with a root defined by a
|
||||||
|
default scenarios with no parent.
|
||||||
|
|
||||||
|
#+begin_src sql
|
||||||
|
CREATE TABLE scenario(
|
||||||
|
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
name TEXT NOT NULL, -- Name of the scenario
|
||||||
|
description TEXT NOT NULL, -- Rich text description
|
||||||
|
parent_id INTEGER REFERENCES scenario(id) -- Recursive references
|
||||||
|
-- for parent scenario
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Data
|
||||||
|
|
||||||
|
Each data is associated with one and only one scenario. This senario
|
||||||
|
is defined by the =id=. So, each data structure who can saved in DB
|
||||||
|
must add the following lines in table définition:
|
||||||
|
|
||||||
|
#+begin_src sql
|
||||||
|
scenario_id INTEGER NOT NULL,
|
||||||
|
FOREIGN KEY(scenario_id) REFERENCES scenario(id)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
To avoid, at least, memory usage exploitation, by default, a scenario
|
||||||
|
must saved only the modified data from its parent. This contrains
|
||||||
|
require to wrap any data modification to update the data scenario id
|
||||||
|
to current scenario id in source code. In addition, we need to modify
|
||||||
|
the data loading méthode to take in considération this recursive
|
||||||
|
dependencies.
|
||||||
|
|
||||||
|
#+CAPTION: Recursive loading method
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
def rec_load(cls, db, current_scenario):
|
||||||
|
# Default case, end of recursion
|
||||||
|
if current_scenario is None:
|
||||||
|
return [] # Default value
|
||||||
|
|
||||||
|
table = db.execute(f"<MY SELECT> WHERE scenario_id = {current_scenario}")
|
||||||
|
|
||||||
|
# If no data for this scenario, recursion
|
||||||
|
if len(table) == 0:
|
||||||
|
parent_id = db.get_parent_id(current_scenario)
|
||||||
|
return cls.rec_load(db, parent_id)
|
||||||
|
|
||||||
|
# Otherelse, parse data and return...
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
With this method, modify a data in parent scenario, modify this data
|
||||||
|
in child scenario too. Unless is value has been previously modified in
|
||||||
|
the child scenario. Deny tree node modification, except for leaf.
|
||||||
|
|
||||||
|
This method work, but it dont allow to delete data un child scenarios,
|
||||||
|
because if we dont found data for this scenario we search for parent
|
||||||
|
scenario. So, we need a condition to stop recursion in case of data
|
||||||
|
deletion in child scenario. To stop the recurtion, we can use a dummy
|
||||||
|
data flag. By default, this flags is =false=, but if this flags is
|
||||||
|
=true= the data is ignored at loading.
|
||||||
|
|
||||||
|
So, we can use this flags for each data structure who can saved in DB:
|
||||||
|
|
||||||
|
#+begin_src sql
|
||||||
|
is_dummy BOOLEAN, -- True if this data as been deleted
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Modify the loading method:
|
||||||
|
|
||||||
|
#+CAPTION: Recursive loading method with possible dummy data
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
def rec_load_2(cls, db, current_scenario):
|
||||||
|
# Default case, end of recursion
|
||||||
|
if current_scenario is None:
|
||||||
|
return [] # Default value
|
||||||
|
|
||||||
|
table = db.execute(f"<MY SELECT> WHERE scenario_id = {current_scenario}")
|
||||||
|
|
||||||
|
# If no data for this scenario, recursion
|
||||||
|
if len(table) == 0:
|
||||||
|
parent_id = db.get_parent_id(current_scenario)
|
||||||
|
return cls.rec_load(db, parent_id)
|
||||||
|
|
||||||
|
for data in table:
|
||||||
|
if is_dummy(data):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Otherelse, parse data ...
|
||||||
|
|
||||||
|
# return ...
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
|
||||||
|
And add a data reduction method:
|
||||||
|
|
||||||
|
#+caption: Data reduction method for data subtree
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
def reduce_change(self):
|
||||||
|
# Get the greater scenario
|
||||||
|
scenar = reduce(
|
||||||
|
lambda acc, x: max(acc, x._scenario),
|
||||||
|
self._values,
|
||||||
|
self._scenario
|
||||||
|
)
|
||||||
|
|
||||||
|
# Apply change on this subtree
|
||||||
|
self._scenario = scenar
|
||||||
|
|
||||||
|
if is_dummy(self): # There are no more subtree
|
||||||
|
self.values = []
|
||||||
|
else: # Update data subtree scenario id
|
||||||
|
for value in self._values:
|
||||||
|
value.set_scenario(self._scenario)
|
||||||
|
# Dummy data is no more necessary in this subtree
|
||||||
|
self._values = list(
|
||||||
|
filter(
|
||||||
|
lambda v: not is_dummy(v),
|
||||||
|
self._values
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
# Keep data id unique for all subtree
|
||||||
|
self.get_new_db_id()
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
|
||||||
|
#+latex: \newpage
|
||||||
|
|
||||||
|
* Prototype
|
||||||
|
|
||||||
|
** Scenario
|
||||||
|
|
||||||
|
#+name: scenario
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
class Scenario():
|
||||||
|
def __init__(self, id, name, parent):
|
||||||
|
self._id = id
|
||||||
|
self._name = name
|
||||||
|
self._parent = parent
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def create_db(cls, db):
|
||||||
|
execute(
|
||||||
|
db, """
|
||||||
|
CREATE TABLE scenario(
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
parent_id INTEGER REFERENCES scenario(id)
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def load_db(cls, db):
|
||||||
|
cur = execute(
|
||||||
|
db, f"SELECT * FROM scenario"
|
||||||
|
)
|
||||||
|
table = cur.fetchall()
|
||||||
|
|
||||||
|
new = []
|
||||||
|
for values in table:
|
||||||
|
new.append(
|
||||||
|
cls(
|
||||||
|
values[0], values[1], values[2],
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return new
|
||||||
|
|
||||||
|
def save(self, db):
|
||||||
|
sid = 'NULL' if self._parent is None else self._parent
|
||||||
|
|
||||||
|
execute(
|
||||||
|
db,
|
||||||
|
"INSERT INTO scenario (id, name, parent_id) " +
|
||||||
|
f"VALUES ({self._id}, '{self._name}', {sid})"
|
||||||
|
)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f"Scenario {{ {self._id}, {self._name}, parent {self._parent} }}"
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self._name}({self._id})"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS: scenario
|
||||||
|
|
||||||
|
** Data
|
||||||
|
|
||||||
|
#+name: data-b
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
class B():
|
||||||
|
def __init__(self, value, scenario):
|
||||||
|
self._value = value
|
||||||
|
self._scenario = scenario
|
||||||
|
self._dummy = False
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def create_db(cls, db):
|
||||||
|
execute(db, """
|
||||||
|
CREATE TABLE b(
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
dummy_data BOOLEAN,
|
||||||
|
x INTEGER,
|
||||||
|
a_id INTEGER NOT NULL,
|
||||||
|
scenario_id INTEGER NOT NULL,
|
||||||
|
FOREIGN KEY(a_id) REFERENCES a(id),
|
||||||
|
FOREIGN KEY(scenario_id) REFERENCES scenario(id)
|
||||||
|
)
|
||||||
|
""")
|
||||||
|
|
||||||
|
def save(self, db, a_id):
|
||||||
|
execute(
|
||||||
|
db,
|
||||||
|
"INSERT INTO b (x, dummy_data, a_id, scenario_id) " +
|
||||||
|
f"VALUES ({self._value}, {self._dummy}, {a_id}, {self._scenario})"
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def load_db(cls, db, a_id, senar):
|
||||||
|
if senar is None:
|
||||||
|
return []
|
||||||
|
|
||||||
|
cur = execute(
|
||||||
|
db,
|
||||||
|
"SELECT x, scenario_id, dummy_data FROM b " +
|
||||||
|
f"WHERE scenario_id = {senar} AND a_id = {a_id}"
|
||||||
|
)
|
||||||
|
table = cur.fetchall()
|
||||||
|
|
||||||
|
if len(table) == 0:
|
||||||
|
parent = execute(
|
||||||
|
db,
|
||||||
|
f"SELECT parent_id FROM scenario WHERE id = {senar}"
|
||||||
|
).fetchone()
|
||||||
|
|
||||||
|
return cls.load_db(db, parent[0])
|
||||||
|
|
||||||
|
new = []
|
||||||
|
for values in table:
|
||||||
|
if values[2]: # Is dummy
|
||||||
|
continue
|
||||||
|
|
||||||
|
new.append(cls(values[0], values[1]))
|
||||||
|
|
||||||
|
return new
|
||||||
|
|
||||||
|
def set_value(self, value, scenario):
|
||||||
|
self._value = value
|
||||||
|
self._scenario = scenario
|
||||||
|
|
||||||
|
def set_dummy(self, scenario):
|
||||||
|
self._scenario = scenario
|
||||||
|
self._dummy = True
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
if self._dummy:
|
||||||
|
return ""
|
||||||
|
return f"{self._value}"
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self._dummy:
|
||||||
|
return ""
|
||||||
|
return f"{self._value}"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS: data-b
|
||||||
|
|
||||||
|
#+name: data-a
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
class A():
|
||||||
|
def __init__(self, id, values, scenario):
|
||||||
|
self._id = id
|
||||||
|
self._values = values
|
||||||
|
self._scenario = scenario
|
||||||
|
self._dummy = False
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def create_db(cls, db):
|
||||||
|
execute(db, """
|
||||||
|
CREATE TABLE a(
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
dummy_data BOOLEAN,
|
||||||
|
scenario_id INTEGER,
|
||||||
|
FOREIGN KEY(scenario_id) REFERENCES scenario(id)
|
||||||
|
)
|
||||||
|
""")
|
||||||
|
|
||||||
|
def save(self, db):
|
||||||
|
self.reduce_change()
|
||||||
|
|
||||||
|
execute(db, f"DELETE FROM a WHERE scenario_id = {self._scenario}")
|
||||||
|
execute(
|
||||||
|
db,
|
||||||
|
"INSERT INTO a (id, dummy_data, scenario_id) " +
|
||||||
|
f"VALUES ({self._id}, {self._dummy}, {self._scenario})"
|
||||||
|
)
|
||||||
|
|
||||||
|
execute(
|
||||||
|
db,
|
||||||
|
"DELETE FROM b " +
|
||||||
|
f"WHERE scenario_id = {self._scenario} " +
|
||||||
|
f"AND a_id = {self._id}"
|
||||||
|
)
|
||||||
|
|
||||||
|
for value in self._values:
|
||||||
|
value.save(db, self._id)
|
||||||
|
|
||||||
|
def reduce_change(self):
|
||||||
|
diff_scenar = reduce(
|
||||||
|
lambda acc, x: max(acc, x._scenario),
|
||||||
|
self._values,
|
||||||
|
self._scenario
|
||||||
|
)
|
||||||
|
print(f" ~> Reduce: {self._scenario} to {diff_scenar}")
|
||||||
|
self._scenario = diff_scenar
|
||||||
|
|
||||||
|
# Reduce new scenario value on each value
|
||||||
|
for value in self._values:
|
||||||
|
value._scenario = self._scenario
|
||||||
|
|
||||||
|
# Delete useless dummy data
|
||||||
|
self._values = list(
|
||||||
|
filter(
|
||||||
|
lambda v: not v._dummy,
|
||||||
|
self._values
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
# HACK: keep id unique
|
||||||
|
self._id = self._id * 100 + diff_scenar
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def load_db(cls, db, senar):
|
||||||
|
if senar is None:
|
||||||
|
return []
|
||||||
|
|
||||||
|
cur = execute(
|
||||||
|
db,
|
||||||
|
f"SELECT id, scenario_id, dummy_data FROM a WHERE scenario_id = {senar}"
|
||||||
|
)
|
||||||
|
table = cur.fetchall()
|
||||||
|
|
||||||
|
if len(table) == 0:
|
||||||
|
parent = execute(
|
||||||
|
db,
|
||||||
|
f"SELECT parent_id FROM scenario WHERE id = {senar}"
|
||||||
|
).fetchone()
|
||||||
|
|
||||||
|
return cls.load_db(db, parent[0])
|
||||||
|
|
||||||
|
new = []
|
||||||
|
for values in table:
|
||||||
|
if values[2]:
|
||||||
|
continue
|
||||||
|
|
||||||
|
bb = B.load_db(db, values[0], senar)
|
||||||
|
new.append(cls(values[0], bb, values[1]))
|
||||||
|
|
||||||
|
return new
|
||||||
|
|
||||||
|
def set_dummy(self, scenario):
|
||||||
|
self._scenario = scenario
|
||||||
|
self._dummy = True
|
||||||
|
|
||||||
|
def add(self, b):
|
||||||
|
self._values.append(b)
|
||||||
|
|
||||||
|
def delete(self, index, scenario):
|
||||||
|
self._values[index].set_dummy(scenario)
|
||||||
|
self._scenario = scenario
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
if self._dummy:
|
||||||
|
return "{ }"
|
||||||
|
return f"{{ {self._values}, ({self._scenario}) }}"
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self._dummy:
|
||||||
|
return "{ }"
|
||||||
|
return f"{{ {list(map(str, self._values))}, ({self._scenario}) }}"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS: data-a
|
||||||
|
|
||||||
|
** Full prototype
|
||||||
|
|
||||||
|
#+begin_src python :python python3 :results output :exports both :noweb yes :cache yes
|
||||||
|
from functools import reduce
|
||||||
|
|
||||||
|
def execute(db, query):
|
||||||
|
# print(query)
|
||||||
|
return db.execute(query)
|
||||||
|
|
||||||
|
def get_tree(db):
|
||||||
|
from treelib import Node, Tree
|
||||||
|
|
||||||
|
tree = Tree()
|
||||||
|
|
||||||
|
for senar in db.execute("SELECT * FROM scenario").fetchall():
|
||||||
|
if senar[1] is None:
|
||||||
|
tree.create_node(
|
||||||
|
str(Scenario(senar[0], senar[1], senar[2])) +
|
||||||
|
" : " + str(A.load_db(db, senar[0])[0]),
|
||||||
|
senar[0]
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
tree.create_node(
|
||||||
|
str(Scenario(senar[0], senar[1], senar[2])) +
|
||||||
|
" : " + str(A.load_db(db, senar[0])[0]),
|
||||||
|
senar[0],
|
||||||
|
parent=senar[2]
|
||||||
|
)
|
||||||
|
|
||||||
|
return tree
|
||||||
|
|
||||||
|
### --- Scenario ---
|
||||||
|
<<scenario>>
|
||||||
|
|
||||||
|
### --- class B ---
|
||||||
|
<<data-b>>
|
||||||
|
|
||||||
|
### --- class A ---
|
||||||
|
<<data-a>>
|
||||||
|
|
||||||
|
### --- Script ---
|
||||||
|
import sqlite3
|
||||||
|
import pprint
|
||||||
|
|
||||||
|
pp = pprint.PrettyPrinter(width=79, compact=True, depth=6)
|
||||||
|
|
||||||
|
with sqlite3.connect(":memory:") as db:
|
||||||
|
cur = db.cursor()
|
||||||
|
|
||||||
|
Scenario.create_db(cur)
|
||||||
|
A.create_db(cur)
|
||||||
|
B.create_db(cur)
|
||||||
|
|
||||||
|
print("--- Default scenario (s0) ---")
|
||||||
|
|
||||||
|
# One scenario
|
||||||
|
|
||||||
|
s0 = Scenario(0, "s0", None)
|
||||||
|
a0 = A(
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
B(0, s0._id),
|
||||||
|
B(1, s0._id),
|
||||||
|
B(2, s0._id),
|
||||||
|
],
|
||||||
|
s0._id
|
||||||
|
)
|
||||||
|
|
||||||
|
s0.save(cur)
|
||||||
|
a0.save(cur)
|
||||||
|
|
||||||
|
print("--- New scenario (s1) -- copy without modification ---")
|
||||||
|
|
||||||
|
# New scenario
|
||||||
|
|
||||||
|
s1 = Scenario(1, "s1", s0._id)
|
||||||
|
s1.save(cur)
|
||||||
|
|
||||||
|
print("--- New scenario (s2) -- data modification ---")
|
||||||
|
|
||||||
|
# New scenario 2 with data
|
||||||
|
|
||||||
|
s2 = Scenario(2, "s2", s0._id)
|
||||||
|
s2.save(cur)
|
||||||
|
|
||||||
|
a2 = a0
|
||||||
|
bb = list(map(
|
||||||
|
lambda b: b.set_value(b._value + 1, s2._id),
|
||||||
|
a2._values
|
||||||
|
))
|
||||||
|
|
||||||
|
a2.save(cur)
|
||||||
|
|
||||||
|
print("--- New scenario (s3) -- delete data ---")
|
||||||
|
|
||||||
|
# New scenario 3 with data
|
||||||
|
|
||||||
|
s3 = Scenario(3, "s3", s0._id)
|
||||||
|
s3.save(cur)
|
||||||
|
|
||||||
|
a3 = A.load_db(cur, s3._id)[0]
|
||||||
|
a3._values[0].set_dummy(s3._id)
|
||||||
|
a3.save(cur)
|
||||||
|
|
||||||
|
print("--- New scenario (s4) -- new data ---")
|
||||||
|
|
||||||
|
s4 = Scenario(4, "s4", s3._id)
|
||||||
|
s4.save(cur)
|
||||||
|
|
||||||
|
a4 = A.load_db(cur, s3._id)[0]
|
||||||
|
a4.add(B(666, s4._id))
|
||||||
|
a4.save(cur)
|
||||||
|
|
||||||
|
print("--- Scenario tree ---")
|
||||||
|
|
||||||
|
tree = get_tree(db)
|
||||||
|
print(tree)
|
||||||
|
|
||||||
|
print("--- Modify s0 data ---")
|
||||||
|
|
||||||
|
aa = A.load_db(db, s0._id)[0]
|
||||||
|
bb = list(map(
|
||||||
|
lambda b: b.set_value(b._value * 100 - 1, s0._id),
|
||||||
|
aa._values
|
||||||
|
))
|
||||||
|
aa.save(db)
|
||||||
|
|
||||||
|
print("--- Scenario tree ---")
|
||||||
|
|
||||||
|
tree = get_tree(db)
|
||||||
|
print(tree)
|
||||||
|
|
||||||
|
print("--- DB ---")
|
||||||
|
|
||||||
|
ss = db.execute("SELECT * FROM scenario").fetchall()
|
||||||
|
print(f"+ scenario ({len(ss)}):")
|
||||||
|
pp.pprint(ss)
|
||||||
|
|
||||||
|
aa = db.execute("SELECT * FROM a").fetchall()
|
||||||
|
print(f"+ a ({len(aa)}):")
|
||||||
|
pp.pprint(aa)
|
||||||
|
|
||||||
|
bb = db.execute("SELECT * FROM b").fetchall()
|
||||||
|
print(f"+ b ({len(bb)}):")
|
||||||
|
pp.pprint(bb)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS[96c84f23be557425ae2822ef7f174175ef69f9b9]:
|
||||||
|
#+begin_example
|
||||||
|
--- Default scenario (s0) ---
|
||||||
|
~> Reduce: 0 to 0
|
||||||
|
--- New scenario (s1) -- copy without modification ---
|
||||||
|
--- New scenario (s2) -- data modification ---
|
||||||
|
~> Reduce: 0 to 2
|
||||||
|
--- New scenario (s3) -- delete data ---
|
||||||
|
~> Reduce: 0 to 3
|
||||||
|
--- New scenario (s4) -- new data ---
|
||||||
|
~> Reduce: 3 to 4
|
||||||
|
--- Scenario tree ---
|
||||||
|
s0(0) : { ['0', '1', '2'], (0) }
|
||||||
|
├── s1(1) : { ['0', '1', '2'], (0) }
|
||||||
|
├── s2(2) : { ['1', '2', '3'], (2) }
|
||||||
|
└── s3(3) : { ['1', '2'], (3) }
|
||||||
|
└── s4(4) : { ['1', '2', '666'], (4) }
|
||||||
|
|
||||||
|
--- Modify s0 data ---
|
||||||
|
~> Reduce: 0 to 0
|
||||||
|
--- Scenario tree ---
|
||||||
|
s0(0) : { ['-1', '99', '199'], (0) }
|
||||||
|
├── s1(1) : { ['-1', '99', '199'], (0) }
|
||||||
|
├── s2(2) : { ['1', '2', '3'], (2) }
|
||||||
|
└── s3(3) : { ['1', '2'], (3) }
|
||||||
|
└── s4(4) : { ['1', '2', '666'], (4) }
|
||||||
|
|
||||||
|
--- DB ---
|
||||||
|
+ scenario (5):
|
||||||
|
[(0, 's0', None), (1, 's1', 0), (2, 's2', 0), (3, 's3', 0), (4, 's4', 3)]
|
||||||
|
+ a (4):
|
||||||
|
[(10000, 0, 0), (10002, 0, 2), (10003, 0, 3), (1000304, 0, 4)]
|
||||||
|
+ b (14):
|
||||||
|
[(1, 0, 0, 100, 0), (2, 0, 1, 100, 0), (3, 0, 2, 100, 0), (4, 0, 1, 10002, 2),
|
||||||
|
(5, 0, 2, 10002, 2), (6, 0, 3, 10002, 2), (7, 0, 1, 10003, 3),
|
||||||
|
(8, 0, 2, 10003, 3), (9, 0, 1, 1000304, 4), (10, 0, 2, 1000304, 4),
|
||||||
|
(11, 0, 666, 1000304, 4), (12, 0, -1, 10000, 0), (13, 0, 99, 10000, 0),
|
||||||
|
(14, 0, 199, 10000, 0)]
|
||||||
|
#+end_example
|
||||||
@@ -0,0 +1,525 @@
|
|||||||
|
# presentation.org -- Pamhyr
|
||||||
|
# Copyright (C) 2023 INRAE
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
#+STARTUP: indent hideblocks content beamer
|
||||||
|
|
||||||
|
#+TITLE: \textbf{Pamhyr2}
|
||||||
|
#+SUBTITLE: Scenarios managements
|
||||||
|
|
||||||
|
# #+AUTHOR: Pierre-Antoine Rouby
|
||||||
|
#+LATEX_HEADER: \author[Pierre-Antoine Rouby]{\textbf{Pierre-Antoine Rouby}}
|
||||||
|
#+EMAIL: pierre-antoine.rouby@inrae.fr
|
||||||
|
#+INSTITUTE: INRAE Lyon-Villerbanne, teams River Hydraulics
|
||||||
|
#+LATEX_HEADER: \institute{INRAE Lyon-Villerbanne, River Hydraulics team}
|
||||||
|
#+DATE: 9th November
|
||||||
|
|
||||||
|
#+KEYWORDS: g ui, hydraulics, sedimentary, hydro-sedimentary, 1D modelling, freesoftware, foss
|
||||||
|
|
||||||
|
#+OPTIONS: H:2 toc:t num:t author:nil
|
||||||
|
#+LATEX_CLASS: beamer
|
||||||
|
#+LATEX_CLASS_OPTIONS: [slideopt,A4,showboxes,svgnames,aspectratio=169]
|
||||||
|
# #+LATEX_CLASS_OPTIONS: [presentation]
|
||||||
|
#+BEAMER_THEME: default
|
||||||
|
#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col)
|
||||||
|
|
||||||
|
#+LANGUAGE: fr
|
||||||
|
#+LATEX_HEADER: \usepackage[frenchb]{babel}
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp :results silent :exports none
|
||||||
|
(setq org-latex-pdf-process (list
|
||||||
|
"latexmk -pdflatex='lualatex -shell-escape -interaction nonstopmode' -pdf -f %f"))
|
||||||
|
|
||||||
|
(add-to-list 'org-latex-packages-alist '("" "minted"))
|
||||||
|
(setq org-latex-listings 'minted)
|
||||||
|
(setq org-src-fontify-natively t)
|
||||||
|
|
||||||
|
(org-add-link-type
|
||||||
|
"cite" 'ebib
|
||||||
|
(lambda (path desc format)
|
||||||
|
(cond
|
||||||
|
((eq format 'html)
|
||||||
|
(format "(<cite>%s</cite>)" path))
|
||||||
|
((eq format 'text)
|
||||||
|
(format "[%s]" path))
|
||||||
|
((eq format 'latex)
|
||||||
|
(if (or (not desc) (equal 0 (search "cite:" desc)))
|
||||||
|
(format "\\cite{%s}" path)
|
||||||
|
(format "\\cite[%s][%s]{%s}"
|
||||||
|
(cadr (split-string desc ";"))
|
||||||
|
(car (split-string desc ";")) path))))))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
# Wrapper
|
||||||
|
#+NAME: attr_wrap
|
||||||
|
#+HEADER: :var width="\\textwidth"
|
||||||
|
#+HEADER: :var caption=""
|
||||||
|
#+HEADER: :var smallcaption=""
|
||||||
|
#+HEADER: :var name=""
|
||||||
|
#+HEADER: :var data=""
|
||||||
|
#+HEADER: :var float="nil"
|
||||||
|
#+BEGIN_SRC sh :results output :exports none
|
||||||
|
echo "#+CAPTION[$smallcaption]: $caption"
|
||||||
|
echo "#+NAME: $name"
|
||||||
|
echo "#+ATTR_LATEX: :width $width :float $float"
|
||||||
|
echo "$data"
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \setbeamertemplate{footline}[frame number]
|
||||||
|
#+LATEX_HEADER: \setbeamertemplate{headline}{}
|
||||||
|
#+LATEX_HEADER: \usepackage{multirow}
|
||||||
|
#+LATEX_HEADER: \usepackage{fontawesome5}
|
||||||
|
#+LATEX_HEADER: \usepackage{tcolorbox}
|
||||||
|
#+LATEX_HEADER: \usepackage{tikz}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \logo{\includegraphics[width=.1\textwidth]{../../../src/View/ui/ressources/Logo-INRAE.png}}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \newcommand{\R}[1]{\rotatebox[origin=c]{90}{#1}}
|
||||||
|
|
||||||
|
# Beamer colors
|
||||||
|
#+LATEX_HEADER: \setbeamersize{text margin left=0.5cm,text margin right=0.5cm}
|
||||||
|
#+LATEX_HEADER: \setbeamerfont{alerted text}{series=\bfseries}
|
||||||
|
#+LATEX_HEADER: \setbeamerfont{example text}{series=\bfseries}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \definecolor{inrae_1}{RGB}{102,193,191}
|
||||||
|
#+LATEX_HEADER: \definecolor{inrae_2}{RGB}{0,150,152}
|
||||||
|
#+LATEX_HEADER: \definecolor{inrae_3}{RGB}{39,86,98}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \setbeamercolor{alerted text}{fg=inrae_1}
|
||||||
|
#+LATEX_HEADER: \setbeamercolor{structure}{fg=inrae_2}
|
||||||
|
#+LATEX_HEADER: \setbeamercolor{normal text}{fg=inrae_3}
|
||||||
|
#+LATEX_HEADER: \setbeamercolor*{author}{fg=inrae_3}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \usepackage[absolute,showboxes,overlay]{textpos}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \TPshowboxesfalse
|
||||||
|
#+LATEX_HEADER: \textblockorigin{5mm}{0mm}
|
||||||
|
|
||||||
|
# Biblio
|
||||||
|
#+LATEX_HEADER: \usepackage{natbib}
|
||||||
|
# #+LATEX_HEADER: \bibliographystyle{apalike}
|
||||||
|
#+LATEX_HEADER: \setbeamertemplate{bibliography item}{}
|
||||||
|
#+LATEX_HEADER: \renewcommand\bibfont{\scriptsize}
|
||||||
|
#+LATEX_HEADER: \setbeamertemplate{frametitle continuation}[from second]
|
||||||
|
#+LATEX_HEADER: \setbeamercolor*{bibliography entry title}{fg=inrae_3}
|
||||||
|
#+LATEX_HEADER: \setbeamercolor*{bibliography entry author}{fg=inrae_3}
|
||||||
|
#+LATEX_HEADER: \setbeamercolor*{bibliography entry location}{fg=inrae_3}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \usepackage{bbding}
|
||||||
|
#+LATEX_HEADER: \usepackage{pdfpages}
|
||||||
|
|
||||||
|
# Renew title page
|
||||||
|
#+LATEX_HEADER: \defbeamertemplate*{title page}{customized}[1][]
|
||||||
|
#+LATEX_HEADER: {
|
||||||
|
# #+LATEX_HEADER: {
|
||||||
|
# #+LATEX_HEADER: \usebeamerfont{date}\usebeamercolor[fg]{date}
|
||||||
|
# #+LATEX_HEADER: \tikz[overlay,remember picture]
|
||||||
|
# #+LATEX_HEADER: \node[xshift=-1cm,yshift=-1cm,text width=10cm] at (current page.north east) {
|
||||||
|
# #+LATEX_HEADER: 7$^{th}$ International Conference\\
|
||||||
|
# #+LATEX_HEADER: 8TH-10TH November\\
|
||||||
|
# #+LATEX_HEADER: EDF Lab - CHATOU, FRANCE
|
||||||
|
# #+LATEX_HEADER: }
|
||||||
|
# #+LATEX_HEADER: }
|
||||||
|
#+LATEX_HEADER: {
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{title}\inserttitle\par
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{title}\usebeamercolor[fg]{title}
|
||||||
|
#+LATEX_HEADER: }
|
||||||
|
#+LATEX_HEADER: \bigskip
|
||||||
|
#+LATEX_HEADER: \begin{center}
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}
|
||||||
|
#+LATEX_HEADER: {
|
||||||
|
#+LATEX_HEADER: \LARGE\insertsubtitle\par
|
||||||
|
#+LATEX_HEADER: }
|
||||||
|
#+LATEX_HEADER: \bigskip
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor\par
|
||||||
|
#+LATEX_HEADER: \bigskip
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute\par
|
||||||
|
#+LATEX_HEADER: \bigskip
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate\par
|
||||||
|
#+LATEX_HEADER: \usebeamercolor[fg]{titlegraphic}\inserttitlegraphic
|
||||||
|
#+LATEX_HEADER: \end{center}
|
||||||
|
#+LATEX_HEADER: }
|
||||||
|
|
||||||
|
# #+LATEX_HEADER: \newcommand{\tred}[1]{\textcolor{rouge_inrae}{#1}}
|
||||||
|
|
||||||
|
#+TODO: TODO WIP TOREVIEW | DONE
|
||||||
|
|
||||||
|
#+MACRO: pamhyr \textsc{PAMHyR}
|
||||||
|
#+MACRO: pamhyr2 \textsc{Pamhyr2}
|
||||||
|
|
||||||
|
#+MACRO: pause \pause
|
||||||
|
#+MACRO: framebreak \framebreak
|
||||||
|
#+MACRO: no
|
||||||
|
# #+MACRO: OK \checkmark
|
||||||
|
#+MACRO: OK \faIcon{check}
|
||||||
|
#+MACRO: bf \textbf{$1}
|
||||||
|
|
||||||
|
# #+latex: \frame{\tocpage}
|
||||||
|
|
||||||
|
* Problématique
|
||||||
|
|
||||||
|
** Problématique
|
||||||
|
|
||||||
|
*** Utilisateur
|
||||||
|
|
||||||
|
- Définire une version modifier de l'étude (changement dans les
|
||||||
|
données)
|
||||||
|
- Comparé des résultats entre une variante et l'étude
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
**** COMMENT Développeur
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
|
||||||
|
- Un unique fichier
|
||||||
|
- Limité la duplication de donnée à sauvegarder
|
||||||
|
- Garder une bonne cohérence entre données et résultats
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
*** Scénarios
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 1
|
||||||
|
:BEAMER_ENV: definition
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Un scénario est une variate d'une étude.
|
||||||
|
|
||||||
|
** Problématique -- Avancer
|
||||||
|
|
||||||
|
*** Utilisateur
|
||||||
|
|
||||||
|
- Définire une version modifier d'un senarios
|
||||||
|
- Comparé des résultats entre plusieurs senarios
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
**** COMMENT Développeur
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
|
||||||
|
- Un unique fichier
|
||||||
|
- Limité la duplication de donnée à sauvegarder
|
||||||
|
- Garder une bonne cohérence entre données et résultats
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
*** Scénarios
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 1
|
||||||
|
:BEAMER_ENV: definition
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Un scénario peut être l'étude ou une variate d'un autre scénario.
|
||||||
|
|
||||||
|
** Problématique -- Encore plus avancer
|
||||||
|
|
||||||
|
*** Utilisateur
|
||||||
|
|
||||||
|
- Définire un ensemble fini de variante correspondant a un ensemble de
|
||||||
|
valeur pour un(des) paramètre(s) et executer un solveur sur
|
||||||
|
l'ensemble des variantes
|
||||||
|
- Pouvoir comparé des metrics sur un ensemble de résultats trop grand
|
||||||
|
pour une comparaisont à la mains
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
**** COMMENT Développeur
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
|
||||||
|
- Un unique fichier
|
||||||
|
- Limité la duplication de donnée à sauvegarder
|
||||||
|
- Garder une bonne cohérence entre données et résultats
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
*** Scénarios
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 1
|
||||||
|
:BEAMER_ENV: definition
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Un scénario peut être l'étude, une variate d'un scénarios ou un
|
||||||
|
ensemble fini de variantes d'un scénarios.
|
||||||
|
|
||||||
|
** Problématique -- Encore plus plus avancer
|
||||||
|
|
||||||
|
*** Utilisateur
|
||||||
|
|
||||||
|
- Définire un ensemble fini de variante correspondant a un ensemble de
|
||||||
|
valeur pour un(des) paramètre(s) et faire un nombre fini de tirage
|
||||||
|
aléatoire dans ces paramètre pour executer un solveur ces paramètres
|
||||||
|
- Pouvoir comparé des metrics sur un ensemble de résultats trop grand
|
||||||
|
pour une comparaisont à la mains
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
*** Scénarios
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 1
|
||||||
|
:BEAMER_ENV: definition
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Un scénario peut être l'étude, une variate d'un scénarios ou un
|
||||||
|
ensemble fini ou un tirage aléatoire dans un ensemble de variantes
|
||||||
|
d'un scénarios.
|
||||||
|
|
||||||
|
** Problématique -- Développeur
|
||||||
|
|
||||||
|
*** Développeur
|
||||||
|
|
||||||
|
- Permetre a l'utilisateur de *garder une bonne cohérence entre
|
||||||
|
données et résultats* de façon claire
|
||||||
|
- Permetre a l'utilisateur de *géré les scénarios* de façon claire
|
||||||
|
(représentation graphique)
|
||||||
|
- Garder *un unique fichier* (=.pamhyr=)
|
||||||
|
- *Limité la duplication* de donnée à sauvegarder
|
||||||
|
- Permetre à l'utilisateur de garder les *résultats pertinant* sans
|
||||||
|
exploser la mémoire de l'ordinateur
|
||||||
|
|
||||||
|
* Proposition
|
||||||
|
|
||||||
|
** Proposition -- Concept
|
||||||
|
|
||||||
|
*** {{{no}}}
|
||||||
|
\vspace{-1.2cm}
|
||||||
|
**** Deux type de scénarios
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
|
||||||
|
- Scénarios simple
|
||||||
|
- Scénarios d'éxecution d'ensemble
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
**** Scénarios simple
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Est composer:
|
||||||
|
- d'un identifiant unique
|
||||||
|
- d'un nom (définie par l'utilisateur)
|
||||||
|
- d'une description (définie par l'utilisateur)
|
||||||
|
- d'un parent (définie par l'utilisateur)
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
\vspace{-0.5cm}
|
||||||
|
|
||||||
|
*** Scénarios d'ensembles
|
||||||
|
|
||||||
|
**** {{{no}}}
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
\vspace{-1cm}
|
||||||
|
Est composer:
|
||||||
|
- d'un identifiant unique
|
||||||
|
- d'un nom (définie par l'utilisateur)
|
||||||
|
- d'une description (définie par l'utilisateur)
|
||||||
|
- d'un parent (définie par l'utilisateur)
|
||||||
|
- d'un ou plusieurs ensemble de valeur
|
||||||
|
|
||||||
|
**** {{{no}}}
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
\vspace{-0.5cm}
|
||||||
|
Un ensemble de valeurs est definie par:
|
||||||
|
- une valeurs de départ
|
||||||
|
- une valeurs de fin
|
||||||
|
- un pas de valeur
|
||||||
|
- un élément d'origine (élément définie dans l'étude)
|
||||||
|
- une fonctions (modification de l'élément à l'aide d'une valeur de
|
||||||
|
l'ensemble)
|
||||||
|
|
||||||
|
** Proposition -- Limitation
|
||||||
|
|
||||||
|
*** Scénarios simple
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Si le scénarios est le *parent d'un autre scénarios*, il ne *peut plus
|
||||||
|
être modifier* sans risquer des comportement difficilement
|
||||||
|
comprehensible pour l'utilisateur.
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
*** Scénarios d'ensembles
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
|
||||||
|
- Un scénarios d'ensemble *ne peut pas être parent* d'un autre
|
||||||
|
scénarios
|
||||||
|
- Le nombre d'exécution peut très rapidement grossir
|
||||||
|
|
||||||
|
** Proposition -- Affichage
|
||||||
|
|
||||||
|
#+name: graph-scenarios
|
||||||
|
#+header: :results drawer
|
||||||
|
#+header: :exports results
|
||||||
|
#+header: :post attr_wrap(width="7cm", data=*this*, name="graph-scenarios", caption="Exemple of scenarios graph", float="t")
|
||||||
|
#+begin_src dot :file "images/graph-scenarios.png" :cache no
|
||||||
|
digraph {
|
||||||
|
bgcolor="transparent";
|
||||||
|
node[colorscheme=pastel19,shape=ellipse,style="filled",fillcolor=9];
|
||||||
|
|
||||||
|
b[fillcolor=2];
|
||||||
|
|
||||||
|
aa[shape=box,fillcolor=2];
|
||||||
|
aa2[label="aa'", shape=box, fillcolor=2];
|
||||||
|
ad[shape=box, fillcolor=2];
|
||||||
|
re[shape=box, fillcolor=2];
|
||||||
|
rf[shape=box, fillcolor=2];
|
||||||
|
|
||||||
|
default -> a;
|
||||||
|
default -> b;
|
||||||
|
default -> c;
|
||||||
|
|
||||||
|
a -> aa;
|
||||||
|
a -> aa2;
|
||||||
|
a -> f -> rf;
|
||||||
|
c -> d -> ad;
|
||||||
|
c -> e -> re;
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS[80ed2484b9cc71143f800ff23c10846fd04697c3]: graph-scenarios
|
||||||
|
:results:
|
||||||
|
#+CAPTION[]: Exemple of scenarios graph
|
||||||
|
#+NAME: graph-scenarios
|
||||||
|
#+ATTR_LATEX: :width 7cm :float t
|
||||||
|
[[file:images/graph-scenarios.png]]
|
||||||
|
:end:
|
||||||
|
|
||||||
|
* Solution technique
|
||||||
|
|
||||||
|
** Technique -- scénarios
|
||||||
|
|
||||||
|
#+begin_src sql
|
||||||
|
CREATE TABLE scenario(
|
||||||
|
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
name TEXT NOT NULL, -- Name of the scenario
|
||||||
|
description TEXT NOT NULL, -- Rich text description
|
||||||
|
parent_id INTEGER REFERENCES scenario(id) -- Recursive references
|
||||||
|
-- for parent scenario
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Technique -- Données -- Enregistrement
|
||||||
|
|
||||||
|
#+begin_src sql
|
||||||
|
-- Unique ID (Must be unused, to delete)
|
||||||
|
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
-- New ID (not unique)
|
||||||
|
pamhyr_id INTEGER NOT NULL,
|
||||||
|
-- (Optional) Flag for set there is no data in this scenario and
|
||||||
|
-- ignore parent scenario
|
||||||
|
dummy BOOLEAN NOT NULL,
|
||||||
|
-- Corresponding scenario
|
||||||
|
scenario_id INTEGER NOT NULL,
|
||||||
|
PRIMARY KEY(pamhyr_id, scenario_id),
|
||||||
|
FOREIGN KEY(scenario_id) REFERENCES scenario(id),
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Technique -- Données -- Chargement
|
||||||
|
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
def load(cls, db, current_scenario):
|
||||||
|
# Default case, end of recursion
|
||||||
|
if current_scenario is None:
|
||||||
|
return [] # Default value
|
||||||
|
|
||||||
|
table = db.execute(f"<MY SELECT> WHERE scenario_id = {current_scenario}")
|
||||||
|
|
||||||
|
# If no data for this scenario, recursion
|
||||||
|
if len(table) == 0:
|
||||||
|
parent_id = db.get_parent_id(current_scenario)
|
||||||
|
return cls.load(db, parent_id)
|
||||||
|
|
||||||
|
# Otherelse, parse data and return...
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Technique -- Données -- Modification
|
||||||
|
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
def set_modified(self, current_scenario):
|
||||||
|
self.scenario = current_scenario
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src python :python python3 :results output :noweb yes
|
||||||
|
def delete(self, current_scenario):
|
||||||
|
self.deleted = True
|
||||||
|
self.set_modified(current_scenario)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Technique -- Exécution d'ensemble
|
||||||
|
|
||||||
|
#+begin_src sql
|
||||||
|
CREATE TABLE range_set(
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
start REAL NOT NULL, -- Range start
|
||||||
|
end REAL NOT NULL, -- Range end
|
||||||
|
step REAL NOT NULL, -- Range step
|
||||||
|
generator_name TEXT NOT NULL, -- Generator function name (ex:
|
||||||
|
-- 'minor_strickler')
|
||||||
|
original_data_id INTEGER, -- (optional) Ref to data who apply
|
||||||
|
-- this range (ex: a strickler id)
|
||||||
|
scenario_id INTEGER NOT NULL,
|
||||||
|
FOREIGN KEY(scenario_id) REFERENCES scenario(id)
|
||||||
|
)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Sauvegarde des résultats
|
||||||
|
|
||||||
|
** Sauvegarde des résultats
|
||||||
|
|
||||||
|
*** Scénarios simple
|
||||||
|
|
||||||
|
Sauvegarde d'un seul résultats complet par scénarios (et par solver).
|
||||||
|
|
||||||
|
*** Scénarios d'ensemble
|
||||||
|
|
||||||
|
Sauvegarde de metrics récupéré sur un ensemble de résultats (pas de
|
||||||
|
sauvegarde de tous les résultats) ou certain résultats particuliers.
|
||||||
|
|
||||||
|
* Question & remarque
|
||||||
|
|
||||||
|
** Question & remarque
|
||||||
|
|
||||||
|
- Solution satisfaisante ?
|
||||||
|
- Cas d'usage intéressent non couvert ?
|
||||||
|
- Contre exemple ?
|
||||||
|
- Meilleur solution ?
|
||||||
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 196 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 196 KiB |
@@ -0,0 +1,487 @@
|
|||||||
|
# presentation.org -- Pamhyr
|
||||||
|
# Copyright (C) 2023 INRAE
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
#+STARTUP: indent hideblocks content beamer
|
||||||
|
|
||||||
|
#+TITLE: SimHydro 2023
|
||||||
|
#+SUBTITLE: \textbf{Pamhyr2}: a graphical user interface for 1D hydro-sedimentary modelling of rivers
|
||||||
|
|
||||||
|
# #+AUTHOR: Pierre-Antoine Rouby
|
||||||
|
#+LATEX_HEADER: \author[Pierre-Antoine Rouby]{\textbf{Pierre-Antoine Rouby$^{*}$}, Benoît Camenen, Lionel Pénard, Léa Kieffer, Théophile Terraz\\\texttt{<pierre-antoine.rouby@inrae.fr>}^{*}}
|
||||||
|
#+EMAIL: pierre-antoine.rouby@inrae.fr
|
||||||
|
#+INSTITUTE: INRAE Lyon-Villerbanne, teams River Hydraulics
|
||||||
|
#+LATEX_HEADER: \institute{INRAE Lyon-Villerbanne, River Hydraulics team}
|
||||||
|
#+DATE: 9th November
|
||||||
|
|
||||||
|
#+KEYWORDS: g ui, hydraulics, sedimentary, hydro-sedimentary, 1D modelling, freesoftware, foss
|
||||||
|
|
||||||
|
#+OPTIONS: H:2 toc:t num:t author:nil
|
||||||
|
#+LATEX_CLASS: beamer
|
||||||
|
#+LATEX_CLASS_OPTIONS: [slideopt,A4,showboxes,svgnames,aspectratio=169]
|
||||||
|
# #+LATEX_CLASS_OPTIONS: [presentation]
|
||||||
|
#+BEAMER_THEME: default
|
||||||
|
#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col)
|
||||||
|
|
||||||
|
#+LANGUAGE: fr
|
||||||
|
#+LATEX_HEADER: \usepackage[frenchb]{babel}
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp :results silent :exports none
|
||||||
|
(setq org-latex-pdf-process (list
|
||||||
|
"latexmk -pdflatex='lualatex -shell-escape -interaction nonstopmode' -pdf -f %f"))
|
||||||
|
|
||||||
|
(add-to-list 'org-latex-packages-alist '("" "minted"))
|
||||||
|
(setq org-latex-listings 'minted)
|
||||||
|
(setq org-src-fontify-natively t)
|
||||||
|
|
||||||
|
(org-add-link-type
|
||||||
|
"cite" 'ebib
|
||||||
|
(lambda (path desc format)
|
||||||
|
(cond
|
||||||
|
((eq format 'html)
|
||||||
|
(format "(<cite>%s</cite>)" path))
|
||||||
|
((eq format 'text)
|
||||||
|
(format "[%s]" path))
|
||||||
|
((eq format 'latex)
|
||||||
|
(if (or (not desc) (equal 0 (search "cite:" desc)))
|
||||||
|
(format "\\cite{%s}" path)
|
||||||
|
(format "\\cite[%s][%s]{%s}"
|
||||||
|
(cadr (split-string desc ";"))
|
||||||
|
(car (split-string desc ";")) path))))))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \setbeamertemplate{footline}[frame number]
|
||||||
|
#+LATEX_HEADER: \setbeamertemplate{headline}{}
|
||||||
|
#+LATEX_HEADER: \usepackage{multirow}
|
||||||
|
#+LATEX_HEADER: \usepackage{fontawesome5}
|
||||||
|
#+LATEX_HEADER: \usepackage{tcolorbox}
|
||||||
|
#+LATEX_HEADER: \usepackage{tikz}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \logo{\includegraphics[width=.1\textwidth]{../../../../../src/View/ui/ressources/Logo-INRAE.png}}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \newcommand{\R}[1]{\rotatebox[origin=c]{90}{#1}}
|
||||||
|
|
||||||
|
# Beamer colors
|
||||||
|
#+LATEX_HEADER: \setbeamersize{text margin left=0.5cm,text margin right=0.5cm}
|
||||||
|
#+LATEX_HEADER: \setbeamerfont{alerted text}{series=\bfseries}
|
||||||
|
#+LATEX_HEADER: \setbeamerfont{example text}{series=\bfseries}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \definecolor{inrae_1}{RGB}{102,193,191}
|
||||||
|
#+LATEX_HEADER: \definecolor{inrae_2}{RGB}{0,150,152}
|
||||||
|
#+LATEX_HEADER: \definecolor{inrae_3}{RGB}{39,86,98}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \setbeamercolor{alerted text}{fg=inrae_1}
|
||||||
|
#+LATEX_HEADER: \setbeamercolor{structure}{fg=inrae_2}
|
||||||
|
#+LATEX_HEADER: \setbeamercolor{normal text}{fg=inrae_3}
|
||||||
|
#+LATEX_HEADER: \setbeamercolor*{author}{fg=inrae_3}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \usepackage[absolute,showboxes,overlay]{textpos}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \TPshowboxesfalse
|
||||||
|
#+LATEX_HEADER: \textblockorigin{5mm}{0mm}
|
||||||
|
|
||||||
|
# Biblio
|
||||||
|
#+LATEX_HEADER: \usepackage{natbib}
|
||||||
|
# #+LATEX_HEADER: \bibliographystyle{apalike}
|
||||||
|
#+LATEX_HEADER: \setbeamertemplate{bibliography item}{}
|
||||||
|
#+LATEX_HEADER: \renewcommand\bibfont{\scriptsize}
|
||||||
|
#+LATEX_HEADER: \setbeamertemplate{frametitle continuation}[from second]
|
||||||
|
#+LATEX_HEADER: \setbeamercolor*{bibliography entry title}{fg=inrae_3}
|
||||||
|
#+LATEX_HEADER: \setbeamercolor*{bibliography entry author}{fg=inrae_3}
|
||||||
|
#+LATEX_HEADER: \setbeamercolor*{bibliography entry location}{fg=inrae_3}
|
||||||
|
|
||||||
|
#+LATEX_HEADER: \usepackage{bbding}
|
||||||
|
#+LATEX_HEADER: \usepackage{pdfpages}
|
||||||
|
|
||||||
|
# Renew title page
|
||||||
|
#+LATEX_HEADER: \defbeamertemplate*{title page}{customized}[1][]
|
||||||
|
#+LATEX_HEADER: {
|
||||||
|
# #+LATEX_HEADER: {
|
||||||
|
# #+LATEX_HEADER: \usebeamerfont{date}\usebeamercolor[fg]{date}
|
||||||
|
# #+LATEX_HEADER: \tikz[overlay,remember picture]
|
||||||
|
# #+LATEX_HEADER: \node[xshift=-1cm,yshift=-1cm,text width=10cm] at (current page.north east) {
|
||||||
|
# #+LATEX_HEADER: 7$^{th}$ International Conference\\
|
||||||
|
# #+LATEX_HEADER: 8TH-10TH November\\
|
||||||
|
# #+LATEX_HEADER: EDF Lab - CHATOU, FRANCE
|
||||||
|
# #+LATEX_HEADER: }
|
||||||
|
# #+LATEX_HEADER: }
|
||||||
|
#+LATEX_HEADER: {
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{title}\inserttitle\par
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{title}\usebeamercolor[fg]{title}
|
||||||
|
#+LATEX_HEADER: \large New modeling paradigms for water issues?\par
|
||||||
|
#+LATEX_HEADER: }
|
||||||
|
#+LATEX_HEADER: \bigskip
|
||||||
|
#+LATEX_HEADER: \begin{center}
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}
|
||||||
|
#+LATEX_HEADER: {
|
||||||
|
#+LATEX_HEADER: \LARGE\insertsubtitle\par
|
||||||
|
#+LATEX_HEADER: }
|
||||||
|
#+LATEX_HEADER: \bigskip
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor\par
|
||||||
|
#+LATEX_HEADER: \bigskip
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute\par
|
||||||
|
#+LATEX_HEADER: \bigskip
|
||||||
|
#+LATEX_HEADER: \usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate\par
|
||||||
|
#+LATEX_HEADER: \usebeamercolor[fg]{titlegraphic}\inserttitlegraphic
|
||||||
|
#+LATEX_HEADER: \end{center}
|
||||||
|
#+LATEX_HEADER: }
|
||||||
|
|
||||||
|
# #+LATEX_HEADER: \newcommand{\tred}[1]{\textcolor{rouge_inrae}{#1}}
|
||||||
|
|
||||||
|
#+TODO: TODO WIP TOREVIEW | DONE
|
||||||
|
|
||||||
|
#+MACRO: pamhyr \textsc{PAMHyR}
|
||||||
|
#+MACRO: pamhyr2 \textsc{Pamhyr2}
|
||||||
|
|
||||||
|
#+MACRO: pause \pause
|
||||||
|
#+MACRO: framebreak \framebreak
|
||||||
|
#+MACRO: no
|
||||||
|
# #+MACRO: OK \checkmark
|
||||||
|
#+MACRO: OK \faIcon{check}
|
||||||
|
#+MACRO: bf \textbf{$1}
|
||||||
|
|
||||||
|
# #+latex: \frame{\tocpage}
|
||||||
|
|
||||||
|
* 1D hydro-sedimentary simulation at INRAE
|
||||||
|
** COMMENT 1D river flow simulation
|
||||||
|
*** INRAE (Lyon-Villerbanne)
|
||||||
|
|
||||||
|
- Mage [fn:: Mage: https://gitlab.irstea.fr/jean-baptiste.faure/mage]
|
||||||
|
- RubarBE [fn:: RubarBE:
|
||||||
|
https://gitlab.irstea.fr/theophile.terraz/rubarbe]
|
||||||
|
|
||||||
|
*** Other project
|
||||||
|
|
||||||
|
- Mascaret [fn:: OpenTeleMac: http://www.opentelemac.org]
|
||||||
|
- HEC-RAS [fn:: HEC-RAS:
|
||||||
|
https://www.hec.usace.army.mil/software/hec-ras]
|
||||||
|
- Mike 11 [fn:: Mike11:
|
||||||
|
https://www.mikepoweredbydhi.com/products/mike-11]
|
||||||
|
|
||||||
|
** {{{pamhyr}}}
|
||||||
|
#+BEGIN_EXPORT latex
|
||||||
|
\tikz[overlay,remember picture]
|
||||||
|
\node[xshift=-4cm,yshift=4cm] at (current page.south east) {
|
||||||
|
\includegraphics[width=7cm]{../images/PAMHyR.png}
|
||||||
|
};
|
||||||
|
#+END_EXPORT
|
||||||
|
|
||||||
|
{{{pamhyr}}} developed at INRAE in Java since the end of 90s
|
||||||
|
|
||||||
|
*** Features
|
||||||
|
- Graphical user interface
|
||||||
|
- Define and edit complexe 1D river models
|
||||||
|
- Run a solver
|
||||||
|
- Visualize simulation results
|
||||||
|
|
||||||
|
*** Compatibility
|
||||||
|
- 2 solvers *Mage and RubarBE*
|
||||||
|
# - Multi-reaches (Only for Mage)
|
||||||
|
- Multi-platform (Linux / Windows)
|
||||||
|
|
||||||
|
** {{{pamhyr}}}
|
||||||
|
#+BEGIN_EXPORT latex
|
||||||
|
\tikz[overlay,remember picture]
|
||||||
|
\node[xshift=-4cm,yshift=4cm] at (current page.south east) {
|
||||||
|
\includegraphics[width=7cm]{../images/PAMHyR.png}
|
||||||
|
};
|
||||||
|
#+END_EXPORT
|
||||||
|
|
||||||
|
*** Conception issues
|
||||||
|
- Monolingual French
|
||||||
|
- Interface too different for each solver
|
||||||
|
- Impossible to undo an action
|
||||||
|
|
||||||
|
*** Huge technical debts
|
||||||
|
- Out dated technologies (UML $\to$ Java)
|
||||||
|
- Unmaintained library
|
||||||
|
- Unstable development process
|
||||||
|
|
||||||
|
Hard to maintain or add features to the interface
|
||||||
|
|
||||||
|
(No modification since 2016)
|
||||||
|
|
||||||
|
* Presentation of {{{pamhyr2}}}
|
||||||
|
** {{{Pamhyr2}}} - Needs - General constraints
|
||||||
|
|
||||||
|
Create a new version of {{{pamhyr}}} called {{{pamhyr2}}}
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
*** Constraints for users experience
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
+ *User friendly*
|
||||||
|
+ *Multi platform* (at least Linux and Windows)
|
||||||
|
+ *Multi language* (at least English and French)
|
||||||
|
+ *Multi solver* (as much as possible, at least Mage and
|
||||||
|
RubarBE)
|
||||||
|
+ *Single save file* per study
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
*** Constraints for developers experience
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.5
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
- *Common used* code library and tools
|
||||||
|
# - *Modular* and *flexible* code
|
||||||
|
- *Clear* architecture
|
||||||
|
- *Free and open sources software* (FOSS)
|
||||||
|
|
||||||
|
** {{{Pamhyr2}}} - Needs - Features
|
||||||
|
# #+BEGIN_EXPORT latex
|
||||||
|
# \tikz[overlay,remember picture]
|
||||||
|
# \node[xshift=-5cm,yshift=-2cm] at (current page.north east) {
|
||||||
|
# \includegraphics[width=6cm]{../images/geometry_saar.png}
|
||||||
|
# };
|
||||||
|
# #+END_EXPORT
|
||||||
|
|
||||||
|
**** {{{no}}}
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.30
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
- Define and edit data
|
||||||
|
+ River network
|
||||||
|
+ Geometry
|
||||||
|
+ Boundary conditions
|
||||||
|
+ Friction
|
||||||
|
+ Initial conditions
|
||||||
|
+ *Sedimentary layers*
|
||||||
|
- User meshed geometry
|
||||||
|
- Run a solver
|
||||||
|
- Display results
|
||||||
|
+ Default visualisation
|
||||||
|
+ *Customized visualisation*
|
||||||
|
|
||||||
|
**** {{{no}}}
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.70
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
[[../images/geometry_saar.png]]
|
||||||
|
|
||||||
|
** {{{pamhyr2}}} - Technical choices
|
||||||
|
#+BEGIN_EXPORT latex
|
||||||
|
\tikz[overlay,remember picture]
|
||||||
|
\node[xshift=-9.3cm,yshift=-4cm] at (current page.north east) {
|
||||||
|
\includegraphics[width=6.3cm]{../images/BC.png}
|
||||||
|
};
|
||||||
|
#+END_EXPORT
|
||||||
|
|
||||||
|
*** Technologies
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.60
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
- *Python*
|
||||||
|
- *PyQt*
|
||||||
|
- Qt Designer
|
||||||
|
- Qt Linguist
|
||||||
|
- *Matplotlib*
|
||||||
|
- SQLite (as =*.pamhyr=)
|
||||||
|
- *GPLv3* license (strong copyleft)
|
||||||
|
|
||||||
|
*** Architecture
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.35
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
- Qt Model/View
|
||||||
|
- Multiple solvers configuration
|
||||||
|
- *Unified interface*, as much as possible
|
||||||
|
|
||||||
|
** {{{pamhyr2}}} - State of the project
|
||||||
|
#+BEGIN_EXPORT latex
|
||||||
|
\tikz[overlay,remember picture]
|
||||||
|
\node[xshift=-4.5cm,yshift=-2.5cm] at (current page.north east) {
|
||||||
|
\includegraphics[width=8cm]{../images/apply_sedi.png}
|
||||||
|
};
|
||||||
|
#+END_EXPORT
|
||||||
|
|
||||||
|
*** {{{no}}}
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.40
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
|
||||||
|
\vspace{-1.5cm}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\emph{Last version:} \texttt{v0.0.3}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
#+latex: \begin{center}
|
||||||
|
#+latex: \resizebox{0.9\columnwidth}{!}{
|
||||||
|
# #+caption: Tools by methods
|
||||||
|
#+name: tab:current-state
|
||||||
|
#+attr_latex: :align |l|c|
|
||||||
|
|---------------------------------+-----------------|
|
||||||
|
| {{{bf(Features)}}} | {{{bf(State)}}} |
|
||||||
|
|---------------------------------+-----------------|
|
||||||
|
| Create save and load study | {{{OK}}} |
|
||||||
|
| *Undo/Redo actions* | {{{OK}}} |
|
||||||
|
| Edit river network | {{{OK}}} |
|
||||||
|
| Edit geometry | {{{OK}}} |
|
||||||
|
| Edit boundary conditions | {{{OK}}} |
|
||||||
|
| Edit lateral contributions | {{{OK}}} |
|
||||||
|
| Edit frictions (Stricklers) | {{{OK}}} |
|
||||||
|
| Edit initial conditions | {{{OK}}} |
|
||||||
|
| *Edit sedimentary layers* | {{{OK}}} |
|
||||||
|
| Edit hydraulics structures | |
|
||||||
|
| Edit suspended sediment | |
|
||||||
|
| Edit polluant | |
|
||||||
|
| Use meshing tool | WIP |
|
||||||
|
| Run a solver | {{{OK}}} |
|
||||||
|
| Read and display results | {{{OK}}} |
|
||||||
|
| Customize results visualisation | WIP |
|
||||||
|
| Generic solver input/output | |
|
||||||
|
|---------------------------------+-----------------|
|
||||||
|
#+latex: }
|
||||||
|
#+latex: \end{center}
|
||||||
|
|
||||||
|
{{{pause}}}
|
||||||
|
|
||||||
|
*** {{{no}}}
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.60
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
|
||||||
|
\vspace{2.5cm}
|
||||||
|
|
||||||
|
#+latex: \begin{center}
|
||||||
|
#+latex: \resizebox{0.8\columnwidth}{!}{
|
||||||
|
# #+caption: Tools by methods
|
||||||
|
#+name: tab:current-state-solver
|
||||||
|
#+attr_latex: :align |l|c|c|c|
|
||||||
|
|----------------------------+----------------+-------------------+--------------------|
|
||||||
|
| {{{bf(Usage)}}} | {{{bf(Mage)}}} | {{{bf(RubarBE)}}} | {{{bf(Mascaret)}}} |
|
||||||
|
|----------------------------+----------------+-------------------+--------------------|
|
||||||
|
| *Hydraulics* (mono reach) | {{{OK}}} | | {{{OK}}} |
|
||||||
|
| *Hydraulics* (multi reach) | {{{OK}}} | | |
|
||||||
|
| *Bed load evolution* | {{{OK}}} | | |
|
||||||
|
|----------------------------+----------------+-------------------+--------------------|
|
||||||
|
#+latex: }
|
||||||
|
#+latex: \end{center}
|
||||||
|
|
||||||
|
# #+LaTeX: \vspace{0.3cm}
|
||||||
|
|
||||||
|
#+latex: \begin{center}
|
||||||
|
#+latex: \resizebox{0.6\columnwidth}{!}{
|
||||||
|
# #+caption: Tools by methods
|
||||||
|
#+name: tab:current-state-package
|
||||||
|
#+attr_latex: :align |l|c|c|
|
||||||
|
|--------------------+---------------------+-------------------|
|
||||||
|
| {{{bf(Packages)}}} | {{{bf(GNU/Linux)}}} | {{{bf(Windows)}}} |
|
||||||
|
|--------------------+---------------------+-------------------|
|
||||||
|
| Archive (tar/zip) | {{{OK}}} | {{{OK}}} |
|
||||||
|
| Installer | | {{{OK}}} |
|
||||||
|
|--------------------+---------------------+-------------------|
|
||||||
|
#+latex: }
|
||||||
|
#+latex: \end{center}
|
||||||
|
|
||||||
|
* Future work and perspective
|
||||||
|
** Future work
|
||||||
|
#+BEGIN_EXPORT latex
|
||||||
|
\tikz[overlay,remember picture]
|
||||||
|
\node[xshift=-4.8cm,yshift=-3.8cm] at (current page.north east) {
|
||||||
|
\includegraphics[width=8.7cm]{../images/results_hydro.png}
|
||||||
|
};
|
||||||
|
#+END_EXPORT
|
||||||
|
|
||||||
|
*** Next step
|
||||||
|
- *Meshing tools integration*
|
||||||
|
- *Custom results visualisation*
|
||||||
|
+ Python + matplotlib script
|
||||||
|
- RubarBE integration
|
||||||
|
- Hydraulics structures
|
||||||
|
- Unified graphics theme
|
||||||
|
|
||||||
|
*** Open questions
|
||||||
|
- Generic solver input/output (HDF5? CGNS? SQLite?)
|
||||||
|
- GNU/Linux packages (Pip? Conda? Guix? Deb?)
|
||||||
|
|
||||||
|
** Contribution
|
||||||
|
#+LaTeX: \begin{center}
|
||||||
|
\faIcon{gitlab} https://gitlab.com/pamhyr/pamhyr2/
|
||||||
|
#+LaTeX: \end{center}
|
||||||
|
|
||||||
|
*** For users
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.45
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
- Try {{{pamhyr2}}}
|
||||||
|
- Report bug
|
||||||
|
- Propose improvement
|
||||||
|
- Improve translation
|
||||||
|
- Improve user documentation
|
||||||
|
- Improve tests cases examples
|
||||||
|
- /Find better project name/
|
||||||
|
|
||||||
|
*** For developers
|
||||||
|
:PROPERTIES:
|
||||||
|
:BEAMER_COL: 0.45
|
||||||
|
:BEAMER_ENV: block
|
||||||
|
:END:
|
||||||
|
- Add new solver / features
|
||||||
|
- Improve sources code
|
||||||
|
- Improve developers documentation
|
||||||
|
- Improve unit tests
|
||||||
|
|
||||||
|
# * Conclusion
|
||||||
|
** Thanks for listening
|
||||||
|
# #+BEGIN_EXPORT latex
|
||||||
|
# \tikz[overlay,remember picture]
|
||||||
|
# \node[xshift=-6cm,yshift=-1.5cm,text width=10cm] at (current page.north east) {
|
||||||
|
# {\small\emph{\alert{Journées de la modélisation 1D hydro-sédimentaire} (in french) -}
|
||||||
|
# \emph{30 \& 31 janvier 2024, INRAE Villeurbanne - }
|
||||||
|
# \emph{Information and inscription: }\texttt{<benoit.camenen@inrae.fr>}}
|
||||||
|
# };
|
||||||
|
# #+END_EXPORT
|
||||||
|
|
||||||
|
#+LaTeX: \begin{center}
|
||||||
|
\faIcon{gitlab} https://gitlab.com/pamhyr/pamhyr2/
|
||||||
|
#+LaTeX: \end{center}
|
||||||
|
|
||||||
|
#+LaTeX: \begin{center}
|
||||||
|
/*Journées de la modélisation 1D hydro-sédimentaire*/ (in French)
|
||||||
|
#+LaTeX: \\
|
||||||
|
/30 & 31 janvier 2024/, INRAE Villeurbanne
|
||||||
|
#+LaTeX: \\
|
||||||
|
Information and registration: =<benoit.camenen@inrae.fr>=
|
||||||
|
#+LaTeX: \end{center}
|
||||||
|
|
||||||
|
- {{{pamhyr2}}} developers:
|
||||||
|
+ =<pierre-antoine.rouby@inrae.fr>=,
|
||||||
|
+ =<theophile.terraz@inrae.fr>=
|
||||||
|
- Mage/RubarBE developer:
|
||||||
|
+ =<theophile.terraz@inrae.fr>=
|
||||||
|
|
||||||
|
# #+LaTeX: \vspace{0.5cm}
|
||||||
|
# #+LaTeX: \begin{center}
|
||||||
|
# #+LaTeX: {\Large
|
||||||
|
# *Thanks for listening*
|
||||||
|
# #+LaTeX: }
|
||||||
|
# #+LaTeX: \end{center}
|
||||||
@@ -11,7 +11,8 @@
|
|||||||
\usepackage[absolute]{textpos}
|
\usepackage[absolute]{textpos}
|
||||||
\usepackage{titlesec}
|
\usepackage{titlesec}
|
||||||
\usepackage{amssymb}
|
\usepackage{amssymb}
|
||||||
\usepackage{tcolorbox}
|
\usepackage[minted,xparse,breakable]{tcolorbox}
|
||||||
|
\usepackage{pmboxdraw}
|
||||||
|
|
||||||
\usepackage{enumitem}
|
\usepackage{enumitem}
|
||||||
\setlist[enumerate]{itemsep=-0.5em}
|
\setlist[enumerate]{itemsep=-0.5em}
|
||||||
@@ -133,6 +134,7 @@
|
|||||||
\setminted[c]{fontsize=\footnotesize,encoding=utf8,linenos}
|
\setminted[c]{fontsize=\footnotesize,encoding=utf8,linenos}
|
||||||
\setminted[c++]{breaklines,fontsize=\footnotesize,encoding=utf8,linenos}
|
\setminted[c++]{breaklines,fontsize=\footnotesize,encoding=utf8,linenos}
|
||||||
\setminted[python]{breaklines,fontsize=\footnotesize,encoding=utf8,linenos}
|
\setminted[python]{breaklines,fontsize=\footnotesize,encoding=utf8,linenos}
|
||||||
|
\setminted[sql]{breaklines,fontsize=\footnotesize,encoding=utf8,linenos}
|
||||||
\setminted[shell]{breaklines,fontsize=\footnotesize,encoding=utf8}
|
\setminted[shell]{breaklines,fontsize=\footnotesize,encoding=utf8}
|
||||||
\setminted[scheme]{breaklines,fontsize=\footnotesize,encoding=utf8}
|
\setminted[scheme]{breaklines,fontsize=\footnotesize,encoding=utf8}
|
||||||
\setminted[commun-lisp]{breaklines,fontsize=\footnotesize,encoding=utf8}
|
\setminted[commun-lisp]{breaklines,fontsize=\footnotesize,encoding=utf8}
|
||||||
@@ -140,7 +142,7 @@
|
|||||||
\setminted[llvm]{breaklines,fontsize=\footnotesize,encoding=utf8}
|
\setminted[llvm]{breaklines,fontsize=\footnotesize,encoding=utf8}
|
||||||
|
|
||||||
%% Add box arrond of minted
|
%% Add box arrond of minted
|
||||||
\BeforeBeginEnvironment{minted}{\begin{tcolorbox}[boxsep=0pt, left=0.1cm, right=0.1cm, arc=0pt, boxrule=0.5pt, colback=white]}%
|
\BeforeBeginEnvironment{minted}{\begin{tcolorbox}[breakable, boxsep=0pt, left=0.1cm, right=0.1cm, arc=0pt, boxrule=0.5pt, colback=white]}%
|
||||||
\AfterEndEnvironment{minted}{\end{tcolorbox}}%
|
\AfterEndEnvironment{minted}{\end{tcolorbox}}%
|
||||||
|
|
||||||
\makeatletter
|
\makeatletter
|
||||||
@@ -155,9 +157,13 @@
|
|||||||
%%
|
%%
|
||||||
|
|
||||||
%% FIXME: Delete me for the first realease
|
%% FIXME: Delete me for the first realease
|
||||||
\usepackage{draftwatermark}
|
%% \usepackage{draftwatermark}
|
||||||
\SetWatermarkLightness{0.8}
|
%% \SetWatermarkLightness{0.8}
|
||||||
\SetWatermarkAngle{25}
|
%% \SetWatermarkAngle{25}
|
||||||
\SetWatermarkScale{3}
|
%% \SetWatermarkScale{3}
|
||||||
\SetWatermarkFontSize{1cm}
|
%% \SetWatermarkFontSize{1cm}
|
||||||
\SetWatermarkText{Work in progress}
|
%% \SetWatermarkText{Work in progress}
|
||||||
|
|
||||||
|
%% Icons
|
||||||
|
|
||||||
|
\usepackage{fontawesome5}
|
||||||
@@ -17,11 +17,15 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Constant name
|
# Constant name
|
||||||
#+MACRO: oldPamhyr PAMHyR
|
#+MACRO: pamhyr \textsc{PAMHyR}
|
||||||
#+MACRO: Pamhyr Pamhyr2
|
#+MACRO: pamhyr2 \textsc{Pamhyr2}
|
||||||
#+MACRO: Mage Mage
|
#+MACRO: mage \textsc{Mage}
|
||||||
#+MACRO: Rubarbe RubarBE
|
#+MACRO: mage7 \textsc{Mage7}
|
||||||
#+MACRO: Inrae INRAE
|
#+MACRO: mage8 \textsc{Mage8}
|
||||||
|
#+MACRO: rubarbe \textsc{RubarBE}
|
||||||
|
#+MACRO: adists \textsc{AdisTS}
|
||||||
|
#+MACRO: mascaret \textsc{Mascaret}
|
||||||
|
#+MACRO: inrae INRAE
|
||||||
#+MACRO: latex \LaTeX
|
#+MACRO: latex \LaTeX
|
||||||
|
|
||||||
# Information
|
# Information
|
||||||
@@ -35,6 +39,16 @@
|
|||||||
#+MACRO: cite [cite:$1]
|
#+MACRO: cite [cite:$1]
|
||||||
#+MACRO: biblio \bibliography{documentation}
|
#+MACRO: biblio \bibliography{documentation}
|
||||||
|
|
||||||
|
# Icons
|
||||||
|
#+MACRO: bulb \faIcon{lightbulb}
|
||||||
|
#+MACRO: OK \faIcon{check}
|
||||||
|
|
||||||
|
#+MACRO: linux \faIcon{linux}
|
||||||
|
#+MACRO: windows \faIcon{windows}
|
||||||
|
|
||||||
|
#+MACRO: python \faIcon{python}
|
||||||
|
#+MACRO: java \faIcon{java}
|
||||||
|
|
||||||
# Wrapper
|
# Wrapper
|
||||||
#+NAME: attr_wrap
|
#+NAME: attr_wrap
|
||||||
#+HEADER: :var width="\\textwidth"
|
#+HEADER: :var width="\\textwidth"
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
|
||||||
|
@article{camenen_simple_2007,
|
||||||
|
title = {Simple and {General} {Formula} for the {Settling} {Velocity} of {Particles}},
|
||||||
|
volume = {133},
|
||||||
|
language = {en},
|
||||||
|
number = {2},
|
||||||
|
urldate = {2025-01-23},
|
||||||
|
journal = {Journal of Hydraulic Engineering},
|
||||||
|
author = {Camenen, Benoit},
|
||||||
|
month = feb,
|
||||||
|
year = {2007},
|
||||||
|
pages = {229-233},
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{meyer-peter_formulas_1948,
|
||||||
|
address = {Stockholm, Sweden},
|
||||||
|
title = {Formulas for bed-load transport.},
|
||||||
|
journal = {Report on Second Meeting of IAHR},
|
||||||
|
author = {Meyer-Peter, E and Mueller, R},
|
||||||
|
year = {1948},
|
||||||
|
pages = {39-64},
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{elder_dispersion_1959,
|
||||||
|
title = {The dispersion of marked fluid in turbulent shear flow},
|
||||||
|
volume = {5},
|
||||||
|
issn = {0022-1120, 1469-7645},
|
||||||
|
language = {en},
|
||||||
|
number = {04},
|
||||||
|
urldate = {2025-01-23},
|
||||||
|
journal = {Journal of Fluid Mechanics},
|
||||||
|
author = {Elder, J. W.},
|
||||||
|
month = may,
|
||||||
|
year = {1959},
|
||||||
|
pages = {544},
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{fischer_discussion_1975,
|
||||||
|
title = {Discussion of Simple Method for Predicting Dispersion in Streams},
|
||||||
|
volume = {101},
|
||||||
|
issn = {0090-3914, 2690-2435},
|
||||||
|
language = {en},
|
||||||
|
number = {3},
|
||||||
|
urldate = {2025-01-23},
|
||||||
|
journal = {Journal of the Environmental Engineering Division},
|
||||||
|
author = {Fischer, Hugo B},
|
||||||
|
month = mar,
|
||||||
|
year = {1975},
|
||||||
|
pages = {453-455},
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{iwasa_predicting_1991,
|
||||||
|
address = {Hong Kong},
|
||||||
|
title = {Predicting longitudinal dispersion coefficient in open channel flows},
|
||||||
|
journal = {roc. Int. Symp. of Environmental Hydraulics},
|
||||||
|
author = {Iwasa, Y and Aya, S},
|
||||||
|
year = {1991},
|
||||||
|
pages = {505-510},
|
||||||
|
}
|
||||||
|
|
||||||
|
@book{soulsby_dynamics_1997,
|
||||||
|
address = {London},
|
||||||
|
edition = {Thomas Telford},
|
||||||
|
title = {Dynamics of {Marine} {Sands}: {A} {Manual} for {Practical} {Applications}},
|
||||||
|
urldate = {2025-01-23},
|
||||||
|
author = {Soulsby, Richard},
|
||||||
|
year = {1997},
|
||||||
|
}
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
|
||||||
|
%% LyX 2.0.2 created this file. For more info, see http://www.lyx.org/.
|
||||||
|
%% Do not edit unless you really know what you are doing.
|
||||||
|
\documentclass[12pt,french]{article}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage[latin9]{inputenc}
|
||||||
|
\usepackage{geometry}
|
||||||
|
\geometry{verbose,tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm,headheight=2cm,headsep=2cm,footskip=2cm}
|
||||||
|
\usepackage{textcomp}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\usepackage[frenchb]{babel}
|
||||||
|
|
||||||
|
\makeatletter
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
|
||||||
|
\newcommand{\noun}[1]{\textsc{#1}}
|
||||||
|
%% Because html converters don't know tabularnewline
|
||||||
|
\providecommand{\tabularnewline}{\\}
|
||||||
|
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
\usepackage{babel}
|
||||||
|
\addto\extrasfrench{%
|
||||||
|
\providecommand{\og}{\leavevmode\flqq~}%
|
||||||
|
\providecommand{\fg}{\ifdim\lastskip>\z@\unskip\fi~\frqq}%
|
||||||
|
}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\includegraphics[width=5cm]{img/Logo-INRAE_Transparent.png}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
|
||||||
|
TP AdisTS - Pamhyr2\\
|
||||||
|
Version : Janvier 2025
|
||||||
|
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
|
||||||
|
\textbf{\LARGE Modélisation 1D du transport sédimentaire : } \\
|
||||||
|
\textbf{\LARGE Cas du Vieux-Rhône de Miribel-Jonage}\\
|
||||||
|
\textbf{\LARGE (Lyon, France)}
|
||||||
|
|
||||||
|
\par\end{center}{\LARGE \par}
|
||||||
|
|
||||||
|
~
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=17cm]{img/Garde.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
{\large INRAE Lyon-Grenoble Auvergne-Rhône-Alpes}
|
||||||
|
\par\end{center}{\large \par}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
|
||||||
|
RiverLy, Hydraulique des rivières
|
||||||
|
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{lll}
|
||||||
|
Auteur : & Dorian Hernandez & dorian.hernandez@inrae.fr\tabularnewline
|
||||||
|
& Théophile Terraz & theophile.terraz@inrae.fr\tabularnewline
|
||||||
|
|
||||||
|
\end{tabular}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\tableofcontents{}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
|
||||||
|
% \section{Introduction}
|
||||||
|
%
|
||||||
|
% TODO
|
||||||
|
%
|
||||||
|
% \pagebreak{}
|
||||||
|
|
||||||
|
|
||||||
|
\section{Contexte de l'étude - le colmatage du Vieux-Rhône}
|
||||||
|
|
||||||
|
Le champ de captage de Crépieux-Charmy est un site de pompage d'eau potable alimentant 97 \% de la ville de Lyon. Situé au nord-est de la ville, il est en contact hydraulique avec trois chenaux du Rhône. Le canal de Miribel au Nord, dont les débits varient entre 89 (débit réservé) et 2400 ~$m³/s$ (Crue extrême), le canal de Jonage au sud, imposant un débit quasi constant de 600 ~$m³/s$ pour alimenter la centrale de Cusset, et un Vieux-Rhône qui traverse le site. Les fortes variations hydrauliques le long de Miribel, ainsi que le débit constant le long de Jonage mènent à un dépôt général des sédiments fins et grossiers le long du Vieux-Rhône, avec la création d'un remous important causé par Jonage.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Intro.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Eau du grand Lyon, le gérant du champ de captage, souhaite identifier les zones de dépôts de sédiments fin le long du Vieux-Rhône, cause principale de colmatage, impactant les performances de pompage de l'eau dans les nappes.
|
||||||
|
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Champ_captant.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Pour cela, une campagne expérimentale visant à identifier les zones colmatés du Vieux-Rhône a été réalisée et a mis en avant une hétérogénéité du site. Notamment, une forte zone de dépôts de grossier est présente en amont. Tandis qu'une présence plus importante de fines et sables dans la zone aval (zone de remous de Jonage) a été observée, ainsi qu'un colmatage plus important.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Grossier_sable.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
En parallèle, un modèle numérique hydraulique 1D a été élaboré sous Pamhyr2 afin d'analyser l'écoulement sur le site. Les résultats numériques mettent alors bien en avant le remous généré par Jonage, ainsi qu'une diminution de la vitesse de l'écoulement à partir du point kilométrique (PK) 1000, fin de la zone amont.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Simu.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
\section{Objectifs de l'étude}
|
||||||
|
|
||||||
|
Le modèle numérique 1D représente actuellement la partie hydraulique du système. L'objectif du TP est alors de mettre en donnée la partie sédimentaire (fines) du modèle, afin d'effectuer des calculs à l'aide de AdisTS , et in-fine, identifier les zones de dépôt et d'érosion des sédiments fins le long du Vieux-Rhône selon différents scénarios hydraulique. Les différentes étapes seront alors :
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Mettre en données le modèle Pamhyr2 du Vieux-Rhône pour le solveur AdisTS.
|
||||||
|
\item Lancer des calculs Mage - AdisTS pour différents scénarios hydrauliques.
|
||||||
|
\item Interpréter et discuter les résultats obtenus (comportement hydro-sédimentaire du site, impacts des débits, impact d'une crue, limites du modèle, etc..)
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\section{Données fournies}
|
||||||
|
|
||||||
|
\textbf{Le modèle numérique du Vieux-Rhône}
|
||||||
|
|
||||||
|
Fichier \textit{Vieux\_Rhone\_TP\_AdisTS.pamhyr}.\\
|
||||||
|
|
||||||
|
\textbf{Les scénarios hydrauliques}
|
||||||
|
|
||||||
|
Quatre scénarios hydrauliques sont à analyser (voir les conditions initiales hydraulique) :
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Le premier correspond à un débit constant de 25~$m³/s$
|
||||||
|
\item Le deuxième consiste en une faible montée en débit puis à une redescente (25 - 50 - 25~$m³/s)$.
|
||||||
|
\item Le troisième correspondant à une plus forte montée en débit (25 - 100 - 25~$m³/s)$.
|
||||||
|
\item Le dernier correspond à une crue (25 - 600 - 25~$m3/s)$.\\
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\textbf{Propriétés des sédiments}
|
||||||
|
|
||||||
|
Nous considérerons 2 classes de sédiments de types sable naturel, correspondant à une classe de Fines (limon) de diamètre moyen 63 microns et une classe de Sable de 500 microns. Les deux classes auront une masse volumique de 2650~$kg/m³$, et une porosité de 0,45 pourra être choisie. Leurs concentrations constantes en amont (conditions aux limites amont) seront de 60 $mg/l$ pour les fines et 30 $mg/l$ pour les sables. Nous considérerons dans un premier temps qu'il n'y a aucun dépôt initial de ces deux classes de sédiments et que la concentration initiale en sédiments dans le bief est nulle.\\
|
||||||
|
|
||||||
|
\textbf{Documentation}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Un tutoriel guidé de mise en données : Pas-a-pas.pdf.
|
||||||
|
\item Un guide utilisateur de AdisTS : adis-TS\_usage.pdf
|
||||||
|
\item Un guide de conception de AdisTS : adis-TS\_conception.pdf
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\section{Bonus}
|
||||||
|
|
||||||
|
Ajouter une épaisseur initiale de sédiments \textit{Sables} au fond de 1 $cm$ et relancer un calcul avec le scénario 1.
|
||||||
|
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
\end{document}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
pdflatex -no-shell-escape pas-a-pas.tex
|
||||||
|
bibtex pas-a-pas.aux
|
||||||
|
pdflatex -no-shell-escape pas-a-pas.tex
|
||||||
|
pdflatex -no-shell-escape pas-a-pas.tex
|
||||||
|
pdflatex -no-shell-escape Sujet.tex
|
||||||
|
pdflatex -no-shell-escape Sujet.tex
|
||||||
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 684 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 160 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 79 KiB |
@@ -0,0 +1,291 @@
|
|||||||
|
|
||||||
|
%% LyX 2.0.2 created this file. For more info, see http://www.lyx.org/.
|
||||||
|
%% Do not edit unless you really know what you are doing.
|
||||||
|
\documentclass[12pt,french]{article}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage[latin9]{inputenc}
|
||||||
|
\usepackage{geometry}
|
||||||
|
\geometry{verbose,tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm,headheight=2cm,headsep=2cm,footskip=2cm}
|
||||||
|
\usepackage{textcomp}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\usepackage[frenchb]{babel}
|
||||||
|
|
||||||
|
\makeatletter
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
|
||||||
|
\newcommand{\noun}[1]{\textsc{#1}}
|
||||||
|
%% Because html converters don't know tabularnewline
|
||||||
|
\providecommand{\tabularnewline}{\\}
|
||||||
|
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
\usepackage{babel}
|
||||||
|
\addto\extrasfrench{%
|
||||||
|
\providecommand{\og}{\leavevmode\flqq~}%
|
||||||
|
\providecommand{\fg}{\ifdim\lastskip>\z@\unskip\fi~\frqq}%
|
||||||
|
}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\includegraphics[width=5cm]{img/Logo-INRAE_Transparent.png}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
|
||||||
|
Tutoriel Pas-à-pas AdisTS - Pamhyr2
|
||||||
|
|
||||||
|
Version : Janvier 2025
|
||||||
|
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
|
||||||
|
\textbf{\LARGE Modélisation 1D du transport sédimentaire : } \\
|
||||||
|
\textbf{\LARGE Cas du Vieux-Rhône de Miribel-Jonage}\\
|
||||||
|
\textbf{\LARGE (Lyon, France)}
|
||||||
|
|
||||||
|
\par\end{center}{\LARGE \par}
|
||||||
|
|
||||||
|
~
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=17cm]{img/Garde.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
{\large INRAE Lyon-Grenoble Auvergne-Rhône-Alpes}
|
||||||
|
\par\end{center}{\large \par}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
|
||||||
|
RiverLy, Hydraulique des rivières
|
||||||
|
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{lll}
|
||||||
|
Auteurs : & Dorian Hernandez & dorian.hernandez@inrae.fr\tabularnewline
|
||||||
|
& Théophile Terraz & theophile.terraz@inrae.fr\tabularnewline
|
||||||
|
|
||||||
|
|
||||||
|
\end{tabular}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\tableofcontents{}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
|
||||||
|
% \section{Introduction}
|
||||||
|
%
|
||||||
|
% TODO
|
||||||
|
%
|
||||||
|
% \pagebreak{}
|
||||||
|
|
||||||
|
|
||||||
|
\section{Ouvrir l'étude}
|
||||||
|
|
||||||
|
Lancez Pamhyr2.
|
||||||
|
|
||||||
|
Cliquez sur le bouton \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/open.png} puis ouvrez le modèle Pamhyr2 \textit{Vieux\_Rhone\_TP\_AdisTS.pamhyr}.
|
||||||
|
|
||||||
|
Le modèle à un bief du Vieux-Rhône s'affiche sur la fenêtre graphique.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Open_model.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
|
||||||
|
\section{Mise en donnée}
|
||||||
|
|
||||||
|
\subsection{Création des classes de sédiments}
|
||||||
|
|
||||||
|
Dans la fenêtre principale, cliquez sur \texttt{[AdisTS] => [Polluants]} pour créer des classes de sédiments.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Model_menu_Adists.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
La fenêtre \textit{Polluants - Vieux-Rhône} s'affiche. Elle va nous permettre de définir l'ensemble des caractéristiques (type de sédiment, taille moyenne, masse volumique,..) de nos classes de sédiments, ainsi que les conditions sédimentaires initiales et aux limites du modèle.
|
||||||
|
|
||||||
|
A l'aide du bouton \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/add.png} inclure deux nouvelles classes de sédiments et les nommer \textit{Fines} et \textit{Sables}.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Polluants_fenetre.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Pensez à sauvegarder régulièrement l'étude, à l'aide du bouton \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/save.png} de la fenêtre principale.
|
||||||
|
|
||||||
|
\subsection{Caractéristiques et conditions initiales des sédiments}
|
||||||
|
|
||||||
|
Pour pouvoir attribuer des caractéristiques et des conditions initiales à une classe de sédiments, il faut d'abord la sélectionner.
|
||||||
|
|
||||||
|
Cliquez sur la classe de sédiments \textit{Fines}, puis ouvrez la fenêtre \texttt{[Caractéristiques]}.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Pol_to_Caracteristique.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
La fenêtre d'édition de la classe de sédiments \textit{Fines} s'ouvre.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/caracteristique_fines_a_completer.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Celle-ci contient les informations nécessaire à la résolution des termes sources (taux d'érosion et de dépôt) de l'équation de transport-dispersion. Notamment pour le calcul de la vitesse de chute selon \cite{camenen_simple_2007} et la contrainte critique de mise en mouvement via l'approximation de \cite{soulsby_dynamics_1997}.
|
||||||
|
|
||||||
|
Complétez les valeurs manquantes du tableau selon les données de l'énoncé. Puis, fermez la fenêtre des caractéristiques.
|
||||||
|
|
||||||
|
Ouvrez à présent la fenêtre de \texttt{[Conditions initiales]} (toujours pour les \textit{Fines}).
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/CI.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Cette fenêtre contient deux espaces permettant de définir la concentration initiale de \textit{Fines} (dans "l'eau" du bief) et l'épaisseur de dépôt de fines au fond du bief. Dans le compartiment de gauche, on définit les valeurs par défaut, appliquées à l'ensemble du bief. Le compartiment de droite permet d'imposer des conditions initiales différentes en fonction des PKs du bief.
|
||||||
|
|
||||||
|
Nous considérerons une concentration initiale nulle en sédiments fins, ainsi qu'une épaisseur nulle au fond.\\
|
||||||
|
\\
|
||||||
|
Fermez la fenêtre de conditions initiales.\\
|
||||||
|
\\
|
||||||
|
Sélectionnez la classe de sédiments \textit{Sables} et répétez les étapes précédentes en considérant cette fois-ci les caractéristiques propres aux sables selon l'énoncé.
|
||||||
|
|
||||||
|
\subsection{Conditions aux limites}
|
||||||
|
|
||||||
|
Pour les conditions aux limites il n'est pas nécessaire de mettre en surbrillance les classes de sédiments.\\
|
||||||
|
\\
|
||||||
|
Ouvrez la fenêtre de \texttt{[Conditions aux limites]} et ajouter deux conditions aux limites de type concentration au n½ud amont du bief. Il y aura alors une condition aux limites pour chaque classe de sédiments.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/CL.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Éditez la condition aux limites \textit{Fines} en la mettant en surbrillance et en cliquant sur le bouton \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/edit.png}.\\
|
||||||
|
Créez une condition aux limites de type concentration constante de 0.060 $kg/m³$ en insérant deux lignes \textit{Temps/Concentration} à l'aide du bouton \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/add.png}.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/CL_edit.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Procédez de la même façon pour la classe de sédiments \textit{Sables}, mais avec une concentration de 0.030 $kg/m³$.\\
|
||||||
|
\\
|
||||||
|
Fermez les fenêtres d'éditions des conditions aux limites et des polluants.
|
||||||
|
|
||||||
|
\subsection{Caractéristiques du fond fixe}
|
||||||
|
|
||||||
|
Dans la fenêtre principale, cliquez sur \texttt{[AdisTS] => [D90]}. Cette fenêtre permet de définir le diamètre des particules fixes au fond du canal, nécessaire pour le calcul du coefficient de Strickler à la manière de \cite{meyer-peter_formulas_1948}. De même que pour les conditions initiales des polluants, la fenêtre d'édition est divisée en deux parties afin d'introduire un paramètres par défaut et de laisser la possibilité d'appliquer des valeurs de $d_{90}$ variables le long du bief.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/D90.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Définissez 2 coefficients différents. Une valeur de 5 cm sur la partie amont (zone principale de dépôt de grossier) et 2 cm sur la partie avale.
|
||||||
|
|
||||||
|
\subsection{Coefficient de diffusion}
|
||||||
|
|
||||||
|
Le coefficient de diffusion $D_f$ comprend une part de diffusion moléculaire prise par défaut à $D_{mol}=10^{-6}$, à laquelle s'ajoutent les diffusions turbulentes et la dispersion sous forme d'un seul terme $D_{mix}$ défini selon les formules de \cite{fischer_discussion_1975}, \cite{elder_dispersion_1959} ou \cite{iwasa_predicting_1991}. Il est aussi possible d'utiliser une forme générique de $D_{mix}$ (voir doc utilisateur) ou encore d'imposer une valeur constante. Dans le cas tu TP nous choisirons Iwasa et Aya avec $\alpha=2$.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Diff.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
\section{Paramètres du solveur}
|
||||||
|
|
||||||
|
Dans la fenêtre principale, cliquez sur \texttt{[Exécuter] => [Paramètres numériques des solveurs]}.
|
||||||
|
Dans la fenêtre \textit{Paramètres du solveur}, sélectionnez l'onglet \texttt{[Adis-TS\_WC]}.
|
||||||
|
|
||||||
|
Ces paramètres pilotent le comportement du solveur numérique. On retrouve notamment les temps de début et de fin de la simulation. Le pas de temps maximal en secondes pour le calcul. Le paramètre d'implicitation du schéma numérique de Crank-Nicholson (0.5 comme valeur recommandée). Les temps d'écriture des fichiers .bin, .csv (pour l'export à la volée), et de l'affichage à l'écran. On retrouve aussi la possibilité d'appliquer une concentration initiale.
|
||||||
|
|
||||||
|
|
||||||
|
Exemple de valeurs des paramètres :
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Execute_param.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Fermez la fenêtre \textit{Paramètres du solveur}.
|
||||||
|
|
||||||
|
\section{Lancer une simulation}
|
||||||
|
|
||||||
|
Avant de lancer AdisTS, il est nécessaire d'avoir une première solution hydraulique.
|
||||||
|
|
||||||
|
Vérifiez que les conditions aux limites amont et aval sélectionnées sont bien celles correspondantes à l'hydrogramme et au limnigramme du scénrio souhaité.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/CL_verif.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Dans la fenêtre principale, cliquez sur \texttt{[Exécuter] => [Lancer le solveur]}.
|
||||||
|
Sélectionnez \textit{Defaut-Mage - (Mage8)} et cliquez sur le bouton \textit{Lancer}.
|
||||||
|
La fenêtre \textit{Log du solveur} s'ouvre.
|
||||||
|
Cette fenêtre affiche les sorties texte du solveur.
|
||||||
|
À partir de la fenêtre \textit{Log du solveur}, il est possible de réexécuter le calcul en cliquant sur l'icône \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/run.png}. Cliquez sur le bouton \textit{Résultats} pour ouvrir la fenêtre \textit{Résultats} de Mage.
|
||||||
|
|
||||||
|
Dans la fenêtre principale, cliquez sur \texttt{[Exécuter] => [Lancer AdisTS]}.
|
||||||
|
Sélectionnez \textit{Defaut-AdisTS - (adistswc)} et cliquez sur le bouton \textit{Lancer}.
|
||||||
|
La fenêtre \textit{Log du solveur} s'ouvre.
|
||||||
|
Cette fenêtre affiche les sorties texte du solveur. Si le calcul s'est déroulé correctement, la fenêtre log devrait ressembler à celle-ci :
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/log.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
|
||||||
|
Cliquez sur le bouton \textit{Résultats} pour ouvrir la fenêtre \textit{Résultats} de AdisTS. Il est aussi possible de ré-ouvrir les résultats de Mage en cliquant sur le bouton \textit{Résultats Mage}.
|
||||||
|
|
||||||
|
\section{Visualisation et export de résultats}
|
||||||
|
|
||||||
|
Il est aussi possible d'ouvrir la fenêtre \textit{Résultats} si vous avez fermé la fenêtre \textit{Log du solveur}, en cliquant sur \texttt{[Résultats] => [Visualiser les derniers résultats]} à partir de la fenêtre principale. Les résultats affichés sont ceux de AdisTS.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Results.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Le panneau supérieur gauche permet de sélectionner le bief, le panneau du milieu gauche permet de sélectionner une section dans ce bief et le panneau inférieur gauche permet de sélectionner la classe de sédiments dont on veut extraire des résultats.
|
||||||
|
La fenêtre de droite possède 4 onglets. Chaque onglet présente des résultats en fonction du temps (un curseur en bas de la fenêtre permet de visualiser les résultats à différents pas de temps) :
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Le premier onglet correspond aux données brutes de concentration dans l'eau et de masse déposée pour chaque classe de sédiments de l'étude.
|
||||||
|
\item Le deuxième onglet est divisée en deux sous-onglets permettant de visualiser de deux façons différentes la concentration de la classe de sédiments sélectionnée : soit en fonction du PK du bief, soit en fonction du temps.
|
||||||
|
\item De même, le troisième onglet est divisé en deux sous-onglets permettant de visualiser cette fois-ci la masse linéique de sédiments s'étant déposés.
|
||||||
|
\item Enfin le dernier onglet présente l'épaisseur des sédiments déposés.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Il est possible d'exporter les résultats au format CSV en cliquant sur le bouton \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/export.png} en haut à gauche de la fenêtre.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/Export_res_adis.jpeg}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Répétez les étapes 4 et 5, selon différents scénarios hydrauliques.
|
||||||
|
|
||||||
|
\section{Bonus}
|
||||||
|
|
||||||
|
Ajoutez une épaisseur initiale de 1 cm de sédiments \textit{Sables} au fond et relancer un calcul avec le scénario 1.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\bibliographystyle{plainnat}
|
||||||
|
\bibliography{Biblio.bib}
|
||||||
|
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
\end{document}
|
||||||
@@ -0,0 +1,293 @@
|
|||||||
|
|
||||||
|
%% LyX 2.0.2 created this file. For more info, see http://www.lyx.org/.
|
||||||
|
%% Do not edit unless you really know what you are doing.
|
||||||
|
\documentclass[12pt,french]{article}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage{geometry}
|
||||||
|
\geometry{verbose,tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm,headheight=2cm,headsep=2cm,footskip=2cm}
|
||||||
|
\usepackage{textcomp}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\usepackage[frenchb]{babel}
|
||||||
|
|
||||||
|
\makeatletter
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
|
||||||
|
\newcommand{\noun}[1]{\textsc{#1}}
|
||||||
|
\usepackage{amsthm}
|
||||||
|
|
||||||
|
\newtheorem{remark}{Q?}
|
||||||
|
%% Because html converters don't know tabularnewline
|
||||||
|
\providecommand{\tabularnewline}{\\}
|
||||||
|
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
\usepackage{babel}
|
||||||
|
\addto\extrasfrench{%
|
||||||
|
\providecommand{\og}{\leavevmode\flqq~}%
|
||||||
|
\providecommand{\fg}{\ifdim\lastskip>\z@\unskip\fi~\frqq}%
|
||||||
|
}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\includegraphics[width=5cm]{img/Logo-INRAE_Transparent.png}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
|
||||||
|
Tutoriel pour Pamhyr2
|
||||||
|
|
||||||
|
- suite -
|
||||||
|
|
||||||
|
Janvier 2025
|
||||||
|
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
|
||||||
|
\textbf{\LARGE Scénarii d'aménagement de la rivière } \\
|
||||||
|
\textbf{\LARGE Hogneau (Nord, France) avec Pamhyr2}
|
||||||
|
|
||||||
|
\par\end{center}{\LARGE \par}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
{\large INRAE Lyon-Grenoble Auvergne-Rhône-Alpes}
|
||||||
|
\par\end{center}{\large \par}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
|
||||||
|
RiverLy, Hydraulique des rivières
|
||||||
|
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{lll}
|
||||||
|
Auteurs : & Céline Berni & celine.berni@inrae.fr\tabularnewline
|
||||||
|
& Théophile TERRAZ & theophile.terraz@inrae.fr\tabularnewline
|
||||||
|
|
||||||
|
\end{tabular}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\tableofcontents{}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
|
||||||
|
% \section{Introduction}
|
||||||
|
%
|
||||||
|
% TODO
|
||||||
|
%
|
||||||
|
% \pagebreak{}
|
||||||
|
|
||||||
|
|
||||||
|
\section*{Préambule}
|
||||||
|
|
||||||
|
Dans ce document, nous expliciterons les fonctionnalités de PamHyr utiles à la modélisation de scénarii d'aménagement de la rivière Hogneau comme décrit dans le document de TP.
|
||||||
|
Il est utile au préalable d'avoir suivi le tutoriel pour la modélisation de la rivière Hogneau fourni avec le logiciel (Tuto1-fr.pdf).
|
||||||
|
Suivre le tutoriel 1 vous permettra de construire le modèle avec le scénario de référence (la rivière avant aménagement).
|
||||||
|
|
||||||
|
Notez que l'outil PamHyr ne permet pas au stade actuel de comparer plusieurs scenarii.
|
||||||
|
Vous devrez pour ce faire exporter les vos résultats à partir de la fenêtre \textit{Résultats} qui s'ouvre en cliquant sur \texttt{[Résultats] => [Visualiser les derniers résultats]} à partir de la fenêtre principale.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/export_resultats_commentee.png}
|
||||||
|
%\includegraphics[width=12cm]{../../../src/View/ui/ressources/export_resultats2.png}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Le bouton \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/export.png} vous permet d'exporter les résultats au format CSV pour une utilisation en dehors de Pamhyr2.
|
||||||
|
|
||||||
|
Deux options s'offrent à vous :
|
||||||
|
\begin{itemize}
|
||||||
|
\item Vous souhaitez avoir une vue d'ensemble du cours d'eau (et tracer une courbe de remous par exemple). Vous allez exporter une variable en un instant donné tout le long du cours d'eau. Il faut alors vous placer à un instant donné (à l'aide du curseur en bas à gauche) et exporter la grandeur de votre choix pour tous les points kilométriques de votre maillage. Dans la fenêtre d'export, vous devrez sélectionner \texttt{Point Kilométrique (m)} pour l'axe X, et la variable que vous souhaitez exporter pour l'axe Y.
|
||||||
|
|
||||||
|
Cocher \texttt{enveloppe} vous permettra d'exporter en plus les valeurs minimale et maximale au cours du temps pour la grandeur choisie.
|
||||||
|
|
||||||
|
Par exemple, vous choisissez d'exporter la cote du fond et la cote de l'eau et vous cochez \texttt{enveloppe}. Vous obtiendrez un tableau avec les colonnes suivantes :
|
||||||
|
\begin{itemize}
|
||||||
|
\item \texttt{Point Kilométrique (m)} : toutes les valeurs de PK le long de votre bief
|
||||||
|
\item \texttt{Cote du fond (m)} : la cote du fond correspondante à chaque PK
|
||||||
|
\item \texttt{Cote de l'eau (m)} : la cote de l'eau correspondante à chaque PK à l'instant sélectionné (voir figure ci-dessous)
|
||||||
|
\item \texttt{Cote de l'eau min (m)} : la cote de l'eau minimale atteinte correspondante à chaque PK
|
||||||
|
\item \texttt{Cote de l'eau max (m)} : la cote de l'eau maximale atteinte correspondante à chaque PK
|
||||||
|
\end{itemize}
|
||||||
|
ces deux dernières colonnes constituant l'enveloppe de la cote de l'eau.
|
||||||
|
\item Vous souhaitez regarder l'évolution au cours du temps de ce qu'il se passe en un point précis du cours d'eau (regarder l'hydrogramme de crue à l'aval d'un aménagement par exemple). Vous devez alors vous placer au point kilométrique (PK) qui vous intéresse (le PK sélectionné est marqué en rouge sur la visualisation du profil en long ou sélectionné dans le tableau) et exporter la hauteur d'eau, le niveau d'eau, le débit ou autre en fonction du temps. Dans la fenêtre d'export, vous devrez sélectionner \texttt{Temps (s)} pour l'axe X.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Ainsi dans l'exemple ci-dessus, les données exportées le seront au point kilométrique 34000\,m, à l'instant $t=1$ jour et 12h.
|
||||||
|
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
|
||||||
|
\section{Premier scénario d'aménagement : abaissement du seuil}
|
||||||
|
|
||||||
|
Parmi les 3 options d'aménagement évoquées par la collectivité locale, jouer sur le contrôle aval en abaissant le seuil qui marque la jonction avec le canal de Condé-Pommeroeul peut faire baisser le niveau à l’amont.
|
||||||
|
|
||||||
|
\begin{remark}
|
||||||
|
Pourquoi jouer sur le contrôle aval peut-il avoir un effet sur le niveau d'eau en amont ?
|
||||||
|
\end{remark}
|
||||||
|
|
||||||
|
Pour modifier la hauteur du seuil, dans la fenêtre principale, cliquez sur \texttt{[Hydraulique] => [Ouvrages hydrauliques]} pour ouvrir la fenêtre des ouvrages hydrauliques.
|
||||||
|
Vous pouvez alors sélectionner le seuil Palplanche.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/ouvrage_seuilpalplanche.png}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Sélectionnez le seuil aval (SeuilPalplanche) et cliquez sur \includegraphics[width=0.5cm]{"../../../src/View/ui/ressources/edit.png"} pour modifier les lois de cet ouvrage.
|
||||||
|
Vous pouvez alors essayer de modifier la cote du seuil.
|
||||||
|
Lancez le calcul en exécutant le programme pour plusieurs hauteurs de seuil (dont celle initiale de référence) avec chacune des trois crues proposées en condition amont.
|
||||||
|
|
||||||
|
\begin{remark}
|
||||||
|
Exportez les données obtenues en fonction du PK pour 2 ou 3 hauteurs de seuil.
|
||||||
|
Sur quelle distance le seuil aval influence-t-il la hauteur d'eau ?
|
||||||
|
Est-ce suffisant pour limiter la hauteur d'eau au niveau du pont de l'A2 ($PK \approx 33000$\,m) ?
|
||||||
|
\end{remark}
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
|
||||||
|
\section{Second scénario d'aménagement : élargissement du lit moyen}
|
||||||
|
|
||||||
|
Ce scénario d'aménagement consiste à essayer d’augmenter le laminage en créant un lit moyen en rive droite entre les PKs 32 015 et 33 920\,m. Pour rappel, cette localisation est imposée pour des raisons de disponibilité des terrains et on ne peut pas envisager une largeur du lit moyen supérieure à 50 mètres.
|
||||||
|
|
||||||
|
\begin{remark}
|
||||||
|
Pourquoi élargir le lit moyen peut-il avoir un effet sur le niveau d'eau durant la crue ?
|
||||||
|
\end{remark}
|
||||||
|
|
||||||
|
Pour élargir le lit moyen, la géométrie doit être modifiée.
|
||||||
|
Il est judicieux d'enregistrer votre étude sous un autre nom avant de procéder à ces modifications (cliquez sur \texttt{[Fichier] => [Sauvegarder sous]}).
|
||||||
|
|
||||||
|
Vous aurez un certain nombre de sections à modifier. Pour limiter leur nombre, le plus simple est de repartir de la géométrie initiale (avant maillage) avant de modifier les transects et de mailler à nouveau après les modifications.
|
||||||
|
Vous pouvez supprimer les sections interpolées (notées interpol\textit{i}) en les sélectionnant dans la fenêtre \textit{Géométrie} et en appuyant sur le bouton \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/del.png}.
|
||||||
|
|
||||||
|
Cliquez sur \texttt{[Géométrie] => [Modifier la géométrie]} ou sur l'icône \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/geometry.png} pour définir la géométrie du bief.
|
||||||
|
Sélectionnez la section en travers que vous souhaitez modifier.
|
||||||
|
Vous pouvez l'éditer en cliquant sur l'icône \includegraphics[width=0.5cm]{"../../../src/View/ui/ressources/edit.png"}.
|
||||||
|
|
||||||
|
S'ouvre alors la fenêtre suivante :
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/modif_profil_en_travers.png}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
En appuyant sur \includegraphics[width=0.5cm]{"../../../src/View/ui/ressources/add.png"} vous pourrez ajouter un point sur votre profil en travers que vous pourrez ensuite placer ou vous le souhaitez sur le profil grâce aux flèches \includegraphics[width=0.5cm]{"../../../src/View/ui/ressources/up.png"} ou \includegraphics[width=0.5cm]{"../../../src/View/ui/ressources/down.png"}.
|
||||||
|
Dans le cas présent, afin d'élargir le lit moyen de 50\,m, vous pourrez ajouter un point juste après le point qui correspond à la rive droite (rd) légèrement plus haut et 50\,m plus à droite (en $Y=61.5$\,m et $Z=20.1$\,m par exemple).
|
||||||
|
Il ne restera alors plus qu'à décaler tous les points suivants de 50\,m.
|
||||||
|
|
||||||
|
Vous devriez obtenir la géométrie suivante :
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=15cm]{img/modif_profil_en_travers2.png}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Vous pouvez appliquer cette méthode à l'ensemble des transects à élargir et lancer le calcul pour chacune des crues proposées avec ce nouvel aménagement.
|
||||||
|
|
||||||
|
\begin{remark}
|
||||||
|
Exportez les résultats obtenus pour la hauteur d'eau en fonction du PK pour ce nouveau scénario.
|
||||||
|
Quel est l'effet de cet aménagement sur la hauteur d'eau et sur quel secteur ?
|
||||||
|
Exportez également le débit en fonction du temps en quelques sections choisies.
|
||||||
|
Quel est l'effet de cet aménagement sur l'hydrogramme de crue ?
|
||||||
|
Peut-on s'attendre à ce résultat compte tenu du volume qu'il est possible de stocker en lit moyen et du volume total de la crue ?
|
||||||
|
\end{remark}
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
|
||||||
|
\section{Troisième scénario d'aménagement : casier de stockage}
|
||||||
|
|
||||||
|
Ce troisième scénario consiste à faire baisser le débit dans la rivière en créant un déversement vers un casier de stockage en rive gauche juste en aval du pont de l'A2.
|
||||||
|
La surface de stockage disponible a été estimée à 42 ha pour une altitude moyenne du terrain naturel de 18\,m.
|
||||||
|
|
||||||
|
\begin{remark}
|
||||||
|
Quel volume d'eau ce réservoir peut-il stocker ?
|
||||||
|
Comment se compare-t-il au volume de la crue ?
|
||||||
|
Quel est alors l'effet attendu de cet ouvrage ?
|
||||||
|
\end{remark}
|
||||||
|
|
||||||
|
Pour modéliser ce scénario, il est nécessaire de dévier une part de l'écoulement pour le diriger vers un casier.
|
||||||
|
Il faut donc créer une difluence, soit modifier le réseau.
|
||||||
|
De nouveau, il est préférable d'enregistrer l'étude sous un autre nom avant de procéder à ces modifications.
|
||||||
|
|
||||||
|
Cliquez sur \texttt{[Réseau] => [Modifier le réseau]} ou sur l'icône \includegraphics[width=0.5cm]{img/network.png} pour modifier la structure de votre rivière.
|
||||||
|
Le réseau pour la configuration de référence ne comportait qu'un seul bief entre deux noeuds.
|
||||||
|
Pour ajouter un casier, il faut ajouter un noeud pour la diffluence, un noeud en amont du casier et un noeud en aval du casier.
|
||||||
|
Le casier ne peut en effet pas être en limite aval du modèle ni directement au niveau de la confluence.
|
||||||
|
Pour ajouter un noeud, cliquez sur \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/add.png} pour sélectionner l'outil ``d'addition'' et cliquez ensuite dans la fenêtre grise à l'endroit ou vous souhaitez ajouter un noeud.
|
||||||
|
De la même façon vous pourrez avec cet outil ajouter un bief entre deux noeuds en cliquant successivement sur l'un puis sur l'autre.
|
||||||
|
Vous pourrez alors créer un réseau tel que celui ci-dessous où DevLat est le noeud marquant la diffluence.
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=12cm]{img/reseau_casier.png}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Pour chacun des nouveau biefs crées, il vous faudra créer ou adapter la géométrie.
|
||||||
|
Deux exemples vous sont proposés ci-dessous pour les biefs amont et aval du casier.
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=10cm]{img/geom_am_casier.png}
|
||||||
|
\includegraphics[width=10cm]{img/geom_av_casier.png}
|
||||||
|
\par\end{center}
|
||||||
|
Vous noterez la présence d'un ouvrage sur le bief amont afin de pouvoir contrôler à partir de quelle hauteur d'eau on souhaite commencer le remplissage du casier.
|
||||||
|
|
||||||
|
Pour le bief principal constitué des deux biefs Crespin->DevLat et DevLat->SeuilAval, l'un d'eux porte la géométrie complète tandis que la géométrie de l'autre n'est pas définie.
|
||||||
|
Il vous faudra supprimer les sections dans l'un que vous implémenterez dans l'autre.
|
||||||
|
L'outil d'import de géométrie pourra vous aider.
|
||||||
|
Il faudra le cas échéant réimplémenter également les ouvrages.
|
||||||
|
|
||||||
|
Vous devrez ensuite implémenter le casier sur le noeud nommé casier. Cliquez sur \texttt{[Hydraulique] => [Casiers]}. Vous pouvez ajouter un casier en cliquant sur \includegraphics[width=0.5cm]{../../../src/View/ui/ressources/add.png}. Vous devrez ensuite configurer le casier en cliquant sur l'icône \includegraphics[width=0.5cm]{"../../../src/View/ui/ressources/edit.png"}. Pour chaque altitude, vous pouvez définir l'aire de stockage (en ha). Vous pourrez ainsi configurer votre casier de la façon suivante :
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=10cm]{img/Casier.png}
|
||||||
|
\par\end{center}
|
||||||
|
|
||||||
|
Lancez le calcul pour chacune des crues proposées avec ce nouvel aménagement.
|
||||||
|
|
||||||
|
\begin{remark}
|
||||||
|
Exportez les résultats obtenus pour la hauteur d'eau en fonction du PK pour ce nouveau scénario.
|
||||||
|
Quel est l'effet de cet aménagement sur la hauteur d'eau et sur quel secteur ?
|
||||||
|
Exportez également le débit en fonction du temps en quelques sections choisies.
|
||||||
|
Quel est l'effet de cet aménagement sur l'hydrogramme de crue ?
|
||||||
|
Comparer les crues centenale et décennale : comment l'ouvrage sur le bief amont impacte-t-il les hydrogrammes ?
|
||||||
|
Vos résultats sont-ils cohérent avec vos premières estimations ?
|
||||||
|
\end{remark}
|
||||||
|
|
||||||
|
\section{Conclusion}
|
||||||
|
|
||||||
|
\`A l'aide de la modélisation numérique du cours d'eau de l'Hogneau, vous avez pu comparer l'efficacité de 3 scenarii d'aménagement sur une crue historique, une crue centenale et une crue décennale.
|
||||||
|
|
||||||
|
\begin{remark}
|
||||||
|
Quel aménagement jugez-vous le plus efficace ?
|
||||||
|
Quels éléments vous ont apporté la modélisation ?
|
||||||
|
Que proposeriez-vous à la collectivité locale ?
|
||||||
|
\end{remark}
|
||||||
|
|
||||||
|
A travers cet exemple, avez pris en main l'outil PamHyr avec le code de calcul MAGE.
|
||||||
|
|
||||||
|
\pagebreak{}
|
||||||
|
\end{document}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
pdflatex -no-shell-escape step-by-step.tex
|
||||||
|
pdflatex -no-shell-escape step-by-step.tex
|
||||||
|
pdflatex -no-shell-escape pas-a-pas.tex
|
||||||
|
pdflatex -no-shell-escape pas-a-pas.tex
|
||||||
|
pdflatex -no-shell-escape Tuto-2-fr.tex
|
||||||
|
pdflatex -no-shell-escape Tuto-2-fr.tex
|
||||||
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 163 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 16 KiB |