From df0a25c0d500d62574ccb3a9cd20e0aa6d2a5fc6 Mon Sep 17 00:00:00 2001 From: kurannn Date: Mon, 7 Apr 2025 12:28:40 +0200 Subject: [PATCH] 'docs_add' --- doc/_build/doctrees/another-feature.doctree | Bin 0 -> 9162 bytes .../doctrees/contents/auxiliary.doctree | Bin 0 -> 12959 bytes doc/_build/doctrees/contents/case.doctree | Bin 0 -> 4324 bytes doc/_build/doctrees/contents/gmc.doctree | Bin 0 -> 3367 bytes .../doctrees/contents/ground_motion.doctree | Bin 0 -> 4498 bytes .../doctrees/contents/installation.doctree | Bin 0 -> 7116 bytes .../doctrees/contents/seismic_source.doctree | Bin 0 -> 4499 bytes doc/_build/doctrees/contents/site.doctree | Bin 0 -> 2968 bytes doc/_build/doctrees/contents/ssc.doctree | Bin 0 -> 2906 bytes doc/_build/doctrees/environment.pickle | Bin 0 -> 25967 bytes doc/_build/doctrees/index.doctree | Bin 0 -> 11740 bytes doc/_build/doctrees/some-feature.doctree | Bin 0 -> 4435 bytes doc/_build/html/.buildinfo | 4 + .../html/_sources/another-feature.md.txt | 51 + .../html/_sources/contents/auxiliary.rst.txt | 54 ++ .../html/_sources/contents/case.rst.txt | 19 + doc/_build/html/_sources/contents/gmc.rst.txt | 11 + .../_sources/contents/ground_motion.rst.txt | 7 + .../_sources/contents/installation.rst.txt | 42 + .../_sources/contents/seismic_source.rst.txt | 7 + .../html/_sources/contents/site.rst.txt | 7 + doc/_build/html/_sources/contents/ssc.rst.txt | 7 + doc/_build/html/_sources/index.rst.txt | 45 + doc/_build/html/_sources/some-feature.md.txt | 14 + doc/_build/html/_static/alabaster.css | 663 +++++++++++++ doc/_build/html/_static/basic.css | 914 ++++++++++++++++++ doc/_build/html/_static/custom.css | 1 + doc/_build/html/_static/doctools.js | 149 +++ .../html/_static/documentation_options.js | 13 + doc/_build/html/_static/file.png | Bin 0 -> 286 bytes doc/_build/html/_static/github-banner.svg | 5 + doc/_build/html/_static/language_data.js | 192 ++++ doc/_build/html/_static/minus.png | Bin 0 -> 90 bytes doc/_build/html/_static/plus.png | Bin 0 -> 90 bytes doc/_build/html/_static/pygments.css | 84 ++ doc/_build/html/_static/searchtools.js | 632 ++++++++++++ doc/_build/html/_static/sphinx_highlight.js | 154 +++ doc/_build/html/another-feature.html | 162 ++++ doc/_build/html/contents/auxiliary.html | 162 ++++ doc/_build/html/contents/case.html | 129 +++ doc/_build/html/contents/gmc.html | 117 +++ doc/_build/html/contents/ground_motion.html | 119 +++ doc/_build/html/contents/installation.html | 148 +++ doc/_build/html/contents/seismic_source.html | 119 +++ doc/_build/html/contents/site.html | 114 +++ doc/_build/html/contents/ssc.html | 114 +++ doc/_build/html/genindex.html | 117 +++ doc/_build/html/index.html | 154 +++ doc/_build/html/objects.inv | 5 + doc/_build/html/search.html | 126 +++ doc/_build/html/searchindex.js | 1 + doc/_build/html/some-feature.html | 119 +++ doc/conf.py | 9 +- doc/contents/auxiliary.rst | 54 ++ doc/contents/case.rst | 19 + doc/contents/gmc.rst | 11 + doc/contents/installation.rst | 42 + doc/contents/site.rst | 7 + doc/contents/ssc.rst | 7 + doc/index.rst | 45 +- 60 files changed, 4964 insertions(+), 11 deletions(-) create mode 100644 doc/_build/doctrees/another-feature.doctree create mode 100644 doc/_build/doctrees/contents/auxiliary.doctree create mode 100644 doc/_build/doctrees/contents/case.doctree create mode 100644 doc/_build/doctrees/contents/gmc.doctree create mode 100644 doc/_build/doctrees/contents/ground_motion.doctree create mode 100644 doc/_build/doctrees/contents/installation.doctree create mode 100644 doc/_build/doctrees/contents/seismic_source.doctree create mode 100644 doc/_build/doctrees/contents/site.doctree create mode 100644 doc/_build/doctrees/contents/ssc.doctree create mode 100644 doc/_build/doctrees/environment.pickle create mode 100644 doc/_build/doctrees/index.doctree create mode 100644 doc/_build/doctrees/some-feature.doctree create mode 100644 doc/_build/html/.buildinfo create mode 100644 doc/_build/html/_sources/another-feature.md.txt create mode 100644 doc/_build/html/_sources/contents/auxiliary.rst.txt create mode 100644 doc/_build/html/_sources/contents/case.rst.txt create mode 100644 doc/_build/html/_sources/contents/gmc.rst.txt create mode 100644 doc/_build/html/_sources/contents/ground_motion.rst.txt create mode 100644 doc/_build/html/_sources/contents/installation.rst.txt create mode 100644 doc/_build/html/_sources/contents/seismic_source.rst.txt create mode 100644 doc/_build/html/_sources/contents/site.rst.txt create mode 100644 doc/_build/html/_sources/contents/ssc.rst.txt create mode 100644 doc/_build/html/_sources/index.rst.txt create mode 100644 doc/_build/html/_sources/some-feature.md.txt create mode 100644 doc/_build/html/_static/alabaster.css create mode 100644 doc/_build/html/_static/basic.css create mode 100644 doc/_build/html/_static/custom.css create mode 100644 doc/_build/html/_static/doctools.js create mode 100644 doc/_build/html/_static/documentation_options.js create mode 100644 doc/_build/html/_static/file.png create mode 100644 doc/_build/html/_static/github-banner.svg create mode 100644 doc/_build/html/_static/language_data.js create mode 100644 doc/_build/html/_static/minus.png create mode 100644 doc/_build/html/_static/plus.png create mode 100644 doc/_build/html/_static/pygments.css create mode 100644 doc/_build/html/_static/searchtools.js create mode 100644 doc/_build/html/_static/sphinx_highlight.js create mode 100644 doc/_build/html/another-feature.html create mode 100644 doc/_build/html/contents/auxiliary.html create mode 100644 doc/_build/html/contents/case.html create mode 100644 doc/_build/html/contents/gmc.html create mode 100644 doc/_build/html/contents/ground_motion.html create mode 100644 doc/_build/html/contents/installation.html create mode 100644 doc/_build/html/contents/seismic_source.html create mode 100644 doc/_build/html/contents/site.html create mode 100644 doc/_build/html/contents/ssc.html create mode 100644 doc/_build/html/genindex.html create mode 100644 doc/_build/html/index.html create mode 100644 doc/_build/html/objects.inv create mode 100644 doc/_build/html/search.html create mode 100644 doc/_build/html/searchindex.js create mode 100644 doc/_build/html/some-feature.html create mode 100644 doc/contents/auxiliary.rst create mode 100644 doc/contents/case.rst create mode 100644 doc/contents/gmc.rst create mode 100644 doc/contents/installation.rst create mode 100644 doc/contents/site.rst create mode 100644 doc/contents/ssc.rst diff --git a/doc/_build/doctrees/another-feature.doctree b/doc/_build/doctrees/another-feature.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d38d15eedd1278f99f3ad149b764a95107c8b4c3 GIT binary patch literal 9162 zcmcIq`-@yx9pBAnc6VmqnN@D(EkQqQ3}=phA8A4}#zyAqYYd1i{bu+}AvIr?bg+V1|3oIp6R3 zzR&l3zw_-On=lu9CG3Bu3L`d2M&uEk)p$;Jn5s`P6Ia3a_i06w+l~Q)>Bk5HX|0 zESW?sHaLq|N~^K>_#L)ORP4Lvoiw9uGPFR6O!<i(1@L9T*G%eMz zq>Mx}k>Hd#n-ES+Tuj-n6~`FFbIrHB>}lFb!s?}I+1n9o(V9d}Nvlm$DPQ2{H^=!o zwRUUc?yE72;=3<1Ke!j%eKWDP*`2$f>8|Am5}d8&Y_5Aw%FpmwewI%pO+J%}xsuaj zF`(*S4LoK@l7kk?sqT?n1i*BSF!6I+{5)~VKL*zL1<3FczL)WR8s94*n?Iw;JQncEU74k0KeB;mKV`DEvJ)R-LIPnZ8aD&K*g*3pqTs7>#CuK9J&afO2 zir5x@+hDH1WXv1@7)&Iw7dQ>cyb!>`w}m5|#Fs`Q4cBUt_L{ymjMM zX)s@Sz-@Sf9`51Q@>UyfCL%WcAeK?$7;KkCwvZMXosqb%<=H`onHGsy&`uhq2(j2; z76|u1Q_#>1U@N(9e2Gw6FbqRPu*95K;TsVPBgUEUun3G};9lS+A+}>62b>xVhSRWx z>lP9MLy6H!+QO2CPXrl|E?$yo-FRWwW}##dSS%oez_u-BW1XFZ!m)rAZ265a3WNiz zh7?Is*wjwk&@#Zc5wu#u7M1~LWf9GKflFjqBp?BC#JOA(Z(SSB3O}V@JR&uwmCb#j z+vc#vcw@-q%SWmHA^Yq{1Wf(><{118VmKnhd2|ZCd}Jo~=rr6uQe%B|I$k<5Ge5v8 z+0aP%Jj`OUHxgC=svaZquIb2Y6>&5h%)+tN9aI}YRRq-$qI&I))x;^7NA&!y;^FOX z&-(CaKA-dORvFD}QsXbq@8V#=kvb{cQILdPLB2Yhr|iIuLuL<59wvXvM2#3lKGwMsP`*CrYWjj3{GRh!0vz$R1>uMqjb_T|E(t$`C-5;3ZpD!p=6I($R zD-k2~bES;GjINC5!Tle5xgV~*_W|(xUI6}wf~Z_v6_K@9B0&iUB}b=J{#FtC_rnqT zx88jZO=#sRg?Ds2#BagbZw|A=ulKPWQg$vPVf`;c1#cAg!88KRVlZ{ik^dz*f))Us9L8I{`265?^F{b)6Fqu_S@ zMwe#%lJZe`-7XK<=_lC{hz^vwr zWGY_6Jv2zI{;T`3?(9V#i%-Q0NPzT~*#+a*mKg82S@Nxb&}Fe2GSl zogi|Zi&q*26NdrGIKe4+0*u5%N1 zCO3iAem0hl2-f-Y4Jx#Fmhe}uG#+S0Xf?EQJ**mECq-Pic;z`g8BsaQH?BR`cv!0D zh_RO1yKxBZjoWGG64rMi)lf@iE*>WRUdJ7*;ipL`%3slEn)I%A2r7{Dw~%=UNs&N#}D7= zWAKetgMkFcLAe)oN-CICWyfZ%+r2*Y zy(e$qIotUztv=JKXwvcUs;(fO*pJ=HxGI>;6&La^+izFxE);x*k}snF@!zTV3Ka`ZO9{~7cbbhqMQ(Ulz+zN(&(k>$s(c25&! zzBUe-tm9IXfwbIob4)dgHO#?lLP^p%lAt7_evVmoZ)S^;tc#RusR~WRS=(k?9s+*i!X2^KoFyfLx}If;+0^mKWk>Cfm@&F57r* z`XSoT&73N9f3en^q;U-4v;sbw$v;-5J4nOm!aQ)Y*ID2<(98CwZwJ>0zV}!P|`3N#9lT!iRKB=HsNmDkKMqY^{BIEf#n_+dFBp zC<-EzTfXBW=s@A%&6cTJ$Yk7wrKYi@>RjJUABxUD;A?6=!&}i%K%ecM=mS=Z!~?7> z<`9vq)0w#<-GRg%q&LUVrBo*(W(SdDIxM6<4q8w!5JXDU;#*)75)lrpl(oce$|u!4 zrQc>Xq>c#~)|``gp;;Oq1gi&-T(HQukmqly1wEq8n$%wng)vK zLuxCrrFjqSs?0bSOh?3&(Swnk%BjLB;9#?0CWaem4+GM*x)Ux}~(@2H>69szR z7lX-evuIr~+0uK!^{;a2x!A0Zn-9E5m!YTCIoPCUmhM?HU}g#Lo?49W`_kGqxoC42 zU)b+)Hz3oWjXevF_GSXVjv=TM`aOF!aS5_=(Vnw8+NEfGMw!1s%36eg-bQhKPdCMN zr#p`Wd$67Wz0nqIpa=}h6e{AR*|$!h1qx*Z=%*4%)VtnJVKa2b!iDdH1kRYmCMRvI z+BO+dTh~PYo?e_>O=(NmE);n<1dV)Rw>oj8Wo$05CM%d$Lf!fE$iu2k23*(G%ikU7hY< zioUMizKGYnrY4@f_L<^P*Ux3H^yI|;xsn>#s{0u0oB|k~V&G+|q6sZ!{Xc-tX-tiO309TU~w;z~eo3j!1HRk&7cSYIf6~uOH2wnp{DOXdhMz>$2~yqO9U2g3J?xGlASLn57#TaZ*9be24@T{t?waYI?dfj1 zt9N%GmVk(a6_t>Pj*?SO5tkg0Vx%Za@<-&rfkQ6&CvxCGey^%OYG!uFYn&KcVx^s( zuC99Zs_OSX>+RbUzs7PZ*g zOu{s_StiEN!*)I2iCK`no{2f?&OJYALYUQ%Cl9lyr5h=(0|yq77yCL;@6@XTElHM3;fJs>7?Zr8-P?*%Md zOPiLMwm6TyX3DWjTGav1NoWOAwr?c~8u5K1u)6BoK_`u>ho)t($E-ztQZdD?HoeN+ zdG|5*kbBHM;2syxpFMr!#|ev*8<$uRZiF}9NUe2t?FRU|VTS<+qsa}cSZpIs!1s4A z?oXRoYYhvr+OZY6+SXkEbl=$6HJ2Huy})5xr*D>nZ{}NN5M9d)5`4kg8QitFk)%-+ z#vBjKaM%X(!-!7P2wO%;z-Xm`JS5BaxW|&|n7xsDF>{Po7#oS#O?``dLEB)K?NVn4 z%f(c_5xG{vh!&A&R?JO_9H_0>|)zDCMWZl;e-FeBsoUlSbDHtTrQF8q;SS2h4|o<@>!A!{g|0 z`zg)aOg*2kdV%3s+-id11iONTSc%b&L#zh-MLaZ_da|%w$ zG**bIiDB9&+Ja)QFmN-B*IRzL*^mfcc9#HQ^vH6w0xG8zRMy<@0+8;Qn2-mn9k~(| z_i@0}eF9SO6n>w^?=$#4Nl?Y?G0qDxTn5N-LXa0xE6)`@B+1q1GIw%~XIAPy>we!o z?ydl8@E}yV(!(LtyXfP^!w6KbH$3Ii-|Ro6;i;K>Mk)p16CU4 z%pZ~bL9uAFLlHEUoq-73DX9jCF8V+NlfomZmr8~nT2|_Fqs_uDlVWEy8RVWx!S6!v z>e8QZ7D@F-${2kHG;E=qP8Z96AbG3KAl~~K6mXa=&O+*#nP%$yjGI2x{*ZVfbN<^*n4-6NNa2(o=X?0u`q<-~a@t2#L8jJyt!=SBi zrEw=#3n(5Nwd0!k`pw=k@gcDA0dTM+g8O@58oM9p?CwpYEr9J`z*iipbKXOzcPpJk zru^rn%K2Hn4#1JV=ouUEt^h_j6$IO}F0`gIty?|%I}8E*T zDUE!o-Mj$$jm9otS#dz5L)c-h$Sk`!9_P31?Bkq?mDh-DmFsZ987Lx%pZ5A9lp@P2g1r4(>q96GWJMx6r) z;dCV38Sr09!2c1d_JKe2YMt(v`XcuxF5iZ@d~x^UvO94xsa)nv>|4z!&U!nKv&buv zK~CDNMvJ-rz$Pmr_8s2j`2!+44Ptr9s*IRM1aI@Nh6!>?c}56XJ(-Z#FI2uxb9$!p$(G4TyjrS`Jy*IP4mharw-( zOJ`m(ZZ;77-jv3&VbIuI2511J1E~ya1A~wuwb0j2HdJ2uWa{Dx%EPuJcUg&!TcSxiHj^m z=SI0mvYY*hh~LBM(@Yve(jhG!@{6peD-XJTLdpU*%-D22x+p=Kp^Hl{kK;aN#fZ}g zaUL=c@ab0&Oj=MEz89^iY^i+YxFksoCl095z8pGYu372G;K{WYGOwg%!zS1Wr1_6e-zPjW3I6~`Tc z?bquF?23!SKA(*2BE5rcBeyK_Lk=qiG)fl^<_!W}3{cs(f{gB@QSwc?ZU_t2!B*+t z_4_#a5CD&jn!JGEqq}X6c7UG`9N_2!ArO96fbh!yc!xEvXpXyw)k$#o&wGc}b+Xa* z`sG6Dt+wb&T;^i?u(5pk+{-5kXZVY&BXtj+herU|4jvidPlhK_`@MqlgP_Uc_Uda; zw1iUM+B7N!OjqK}_F9yofZ~L2g*3jkO4^&%>r&y?>&@a>=~{-1b(m^QpVE~u^3Jgr zrnvLg^gm~|8+cd|Kn?dVSTV2wO+wmvTF}7-iSMTfSzs*k$f>v*N47b_6&T-S@E5g} zmX<=YM=Ya&L{<=NFv_=Jxw=dZ3e|P?&DK*!_W!^2LmH*Ncf=R^<;31ZM3d_;2ju$B z+U5%>&oFuZ{gg9}Wnw^AMQ(L*F{6oNu_sfxfNB&L_xDq{i$zaJG16#_=B88zB{zAC zM&YTi&dsL}qmI#*KDc>%b5>ShRsJJUIQrmr^ul+aqVo)Bc9w~-mfs_nzsd$wqs4sG zpXSnXeDal^m$Ql@p`DU^lu;XziIJTeAGjg6nX8gutVv*E9D58&U*oqS02>k zG?%f7{JxR&0vHPvg_X&OMne@(LG(xV`}f-)Ye#&uoNq5abrER2sBzktSRIcN*V4AS zcpi~N#S*n+TPW+XR`Zg^DmPob%PXTW(E#BCO7qCQLwVrt04&QK-4*c&40e#H5;hab zm^Q^@vdnRUhsbtj7steO(T6#BObICa#2hY@sff}nOC}E$Evj@<988eqgfD>F(8aRY z6WJvyX>>9%`4jR@k}{DXCRN2=w&u>SiCXShgmH!k+=jzhvAPi+X4Hfz5DC`tIGsPH zv5%)&9@-`qUD8`jJVAwTy-XZ#g&_}+5!PN_+$UzK<`kZWxkVR28CvEj=^B}K*rl3~ z1SB6*EzFnYgNaEHG>g(t%$N_zYeCn=l($xYfSfkI zAM1ZJL7&}g^+B_5UYNs_S6Ou|Mjt{&UAkq04A|vJ$-HL}|^s)XI1B1l^ ztpQj|Tx^k#HDzMf&+p@~;|`wpqc~U`i5W_v9MfSDkb-Hba&b*eqR^p*WnxD>2Uuk- zZwuv$V$Mo=XjV;PzXy2DI%zjDO9*0PWdkk@S&XDV5uBGT65MqBRa2C()CtY4Ehci~T_pJea)LI1=zCp{XO|bA!R-x;s{9-+<`A{e<-AG4 zAs%%(kCM};PN6wzL_OS;28}RopUT8h>M0pOPZOn8I3C=dh=XWfefqf{St@w1klA$=8N|wZ-1j!+;Zh8`I)DihCFMc3dAtE8Qwa0B2i7FchujCE8 zEVmG&*V717P%XO3Zz?^o4fKRIRgzVT;V`KR6afzOLjcvrVIXxbrIE_U*HL=T5WF}L z;T~9U8A@ii#Zeo*)=h>2K;J~!JSkf6_r6%n3*P}&zopdLwm86o4Jtnu2bDU3`~r$7 z(nYm3fTs#^C2$tO6rjaXOb^&NRBV0=3a_tK6{MpX)LP}kB#97e+0i~ljq3Yy=Pd|% zXNx`>xbHj@g#|w`Je$)O~{95<&Nnq~=cQ*rTbldHYA$vG=mqAXkXt zA)zR5NPr|YVX2bzW+dU~k{;^3xUmDzY2?lkJe;`$V`Iq(AA+2KRrH%dzmdMiL~aN7iE%;-g!jVQxhrIh)IWwm rIjaA)xHt})otmO2X39N~$e+n;^dV_&`hSaQhfGASP08;`n~nbh7%ptHYArlai*Ut7fWDbyuf8 z^l>mG2ZKe5y|{AApAg6;kiTWG`Ahcqx~F?)1Z!k4Yr&wdSFh^5dcWU$_3HcHPygAu zRsY3pS4mY~95BvH!-Y$6jhj3aqV(xidi+Cro*u=%W#`TWn~M~0K_iz+b1Ta9O^O3j z_e#5i>H1YCa<5F;EtfsHB3Hjjk7Pggyz*MiO~v(R%!#4%fnO%lg3|KW;)1L%%)LmB zFDn&;WuN43>}Q>;aw)D%Jv@%fT9qOlhY^eG%zLXw!Q*6fk|o6*dA*uz<{X6h?v<=) zzSelCW`hySPpue}PKc|XO=v2~ZTX?xln>;R+>1}1Jw5rS6V{!4B}#K&bxzc**q&cT8 zFeioq|IN7m^u}m6p1r%P_X=_F>`)Y55x!RD_ODlAKLDC27W-}g}0UC1Z#eQ#OmbbXIzl{FJ9T+?0j zyzxw@qg!#k)e#)SK-buNagYZ~y-U`0Dx0mO=~&{L6W*(Gf;Mco>#N4L?j(4MEB|6T zpjGJ_vlSD36?{6D+sCm#5v8!q8=ElT3_Xu$MTNmeV=#l2Qw-Oq!(cT=Ti)au^*S^Q z!##LtFH^iTHpZ96i@C|8_u>|{cV#HDi?Ojqf@I*(VpUmg3hEjiw*0V>2rX(!My*NK zc3iMHT`+CIj^m~km9ak4)Xb!#+i_ho-3@zjS6nDW%`+cdtJI45L;afc27qB)89XdEcTEzQbFU=x9GbBu4J z36FQJ$c^P07nLYE%qVc=IIf@r9pj7$hvFcr7^{mUSK@#LZ?c&v-d5n&77s<0b^JqA zYk@)&YfGkS!|hs9Gn=rVi7F=oH`zr&eA*Egm2o1QUs+Qm_t}|3xvTlPopI&ZNYg>4 zUaq!zfgIb!VH`4{PBLt|HC4;TN;kdwefokCbl-G=0vOtj1MdyIR=Oehxl73f+LRNp zP^&`u^!J^IaZrgWLr?@#GOq)+NsR4}>hTE;qXaWUeBHT*V!CS$cMnNi~rgKah7>8{++@EAX<&z6(fdhd|w} z$IUR)CTG*o?&T8ilN`V|$%ZJ`A;jv_P{9Pf`Ra$7#wJ;!X2s;E{v|} zse;I>4Qo=7o@%EFoGC_vBY!X9f)v8T$h{m|rn|&~OYfTBuOz#YFR$dUS3!PElHc%x z{1)$v7w9s7kw1pGH4kWQVJlal1-S^TjfC>H)oYG2FKP5}KoFo98QpQDR(=1Pu+#1@ z?AULu){E{e?2r0uJr(?W*Y}#v;Mzk~$Yv*(1>mu9MUG_3^{COUlf{JD7$@w^Z;;DV+RmsUj?{gi4~hGLagDK&ht2_9{djvOPcw9{mV8DBE#ewo`T&;6NeP zXFk#XV1`wQenW((Se z;g!1nl_RwK=MgX=EcV##T1})8B+z19Xq5rSHDNWZvPAfkCD$J7&=kuu0O*G6CZ!H^ z7*EJ=b1bPz(5)M411o^-cP8{b&=onQ-ZftlQG)#@{NGfi1&{bswsq=S8I@EMtF*@= zMGqQF@&b#E+F=YY=UBE!%Tf!hI#wldpwF-i#|=cNue`fCP|8YW>CEQI4c7^;h%EDX zh@Q?pBwYj6E@F^GARz;jcWMc(Y01Qw+_HE~;_x^+Fkf_hxkQd)Dif7L%ez)- z2S+~~8IJG$`OTPWt#r&lXo6~FJcOE9@3!hp&sb?xR=hh{*jX^a-n(vXbQ-|;=>Gi1 z!b!IsE&!kzhWrRz$h(dpGAl_&k?s`hWxVz7mZpi)X`Ir6$`o$!${-0%JU|275$WJ5 zfJz5^=vmWsNoiF)6}e>&Y<1EyFX9RQkkv|1@w6l&7~HBP6|zI^r=r5pGF9;~4|v+9 z!$KJv&z`IxlGyly8(!mcD^9r~eGx7)igIn-7wEA~T*jaiswRWc&PXjDa8W=1d*KUC z@Ss}`s@C@Oh3YXaol0HG~ zp)=eU%-X^{IX;Hi^olFXlXjTD0Gq!k{KnEztI^;+9zWomQ?CL?XU_MBu z=D!)6N2ij2*K?|SoZ3O<1KoejY%bueWl0|`lv?Ib*4+UBna7jfoLnF_ML@{4+csC2 zJBBgi858&cysJV5+;1Ap05*PGqNxoMb*oy}%UCFk9(8ID5{CIB!2?}48?s!b5U0<} z0xrU6S@aoF}Ffe9?n}H`x*mmnr5O0M8PgQE(F` z$Q=X)XjzP3;O{idjPJm9bJBXQgc#NalSMPM5JpnS*MhMAX0O-_<61#ruL?x?&a+q7 zhJA&`vyxg5!K1i&Ux`WmE7jcv;Y7PNXR$T* zS{=GMXCK_EZ6Nd8i?&8Pc+$Wa3I0a_Sa`RQC?Swo+yPI<+S8HzBQF2J{|@wHI7A;| oR5z%1?QlXIbK;GOxGLEOmx(CT0Ff+ItDOdJ8__^`t;>GzA2;_VYXATM literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/contents/ground_motion.doctree b/doc/_build/doctrees/contents/ground_motion.doctree new file mode 100644 index 0000000000000000000000000000000000000000..223b6944fbb0084686f177033f228ae12129d901 GIT binary patch literal 4498 zcmdT|ZEqyS5%!(Ew%7Kq?Sr$T-1#zq2)@L-=0gyXrAQ$l!pUKg(2;yG8hU4XxBEOZ zJ@kvcmOvyQP-3aSG5HhuoL`Y&m8a%y*L!df1u4o&tDCN=sjjMis_JR~x%2nG?yr>p z{I1D`%w|It$C-+`Dg0)vBA4>a7T*+)|5AKe9Qm$hS4KG<@xre_BN8%+HP4Dq3*RSo zD-$!Uzuz!CvQlO3=b|Il#m1+_k?8u4l{VoEul(LSZYC4S^mUM`*x@DVLUrvapOFvW zqVaW6`L&)icwq~%@4I2^wpjJ+wYMX`mdK13BR6J#i&?AX*jYqLQLW0@Py`!M!i<3s z&z+2=)zfC|^7&%Sq6^I@q~rXCWm9@ph+XkO?1+bARUG=a-aS44#BgoS|G+bKsm?!l z?1Dc%hhOKB$}Ai;=Tog*7Kf>#3=Oq`?~l&zx-sJIA{aK+EEkLE`PWmygHxHse0KU- zo2t+1Tm@v9$;{v(=D|eiz(SvXMy4)dv`wHU0cVj2CfFKoR5{aDl->rp zRuMNQFb?_*|67(zSTU}+>jkIe;lwZ4rG=)d!n4hf5Fj{laC(Lb|ny4 zBCX_RSRU+=IKatb)1p2^WbmZQ;7B~eIf)hDDZ^dJLWLjkGn|@u1>krMzt{151HZ>~ zg78IS3!Kgo&R%9yz{q#obU~vuIe4=W>myq*Cw?j37Kh>(*V2NdL>4RTPmzX1g~sOuUke9#0rXoDG);)God-LOq?!wU({O9iFfjP`+etRjWxtLKzy3#-I5d`a z6s}h-t{92kk?&4<#x=7_7g*qUIQnIpW3gRr7-E+TEVt^V(+O5RtD=x53cba~9co|K zg}*mZ%4W*)g_mb{e2)fd=F)J6{+iAB~$8L)4`d3V6$Qm>>XDK9I zq(9;mRPi_8FQ-AsGfX9Dp%ptj8T@)+B%UAMei?GDl@0}lNWwKTPOe6_@Vix}7p!zj zD}_H?db4Cg{KNMvqjLwEPaocXvGk?iqW}OjBaoj20TsTNux#qslq20S)^|aB{7afg zO2=W$bB@uRMKpXyejQ~yL5xU;i~&?Wkuyvj-)GLMa4zz9C9u_tU7Ck2{*cvDAVC#$ z#u75PTS`h~)7j5Ox#2EW;VdOQ?eSTz3=bE-EFluv@KPFC;d3{PrD5ZQ0;#>+XzBtr zwu4|W=(BRB!)UKo3nwxuC#yf8Cu{ski`}Yzh=6GL^RY zaPJM@&v_mqDI6sUmVr%nNJ4!(q{{F=5!UAB^yCC$Gt95807+7MdQ$lNq**!u&Cv1` z$769En~)D)fAd$!XJ1dECG#YioBw%Zo*F6P^@8i6Yy$|vhk%e9zh|z&g=V3UQ<2~Y@UA6_aKB?xaI5fhhoUw})Jx^MT84=N ztEy6a7zvQS2nSyk8?s!c5MN)o99s~}E~#_f1a5#H70GM@3^ZNg9`y<1#!GrKCGaMS zRi#LT_yVMwr(+(Yey`zz;9xyB{(c0li;$;GCLt~a)MZPz_iIWIuqKnLr``Bfo?Q~L z_M25NLGc2L;8_yIVZ(|`m85zfP61jL*95>OCK~-Ey4@{lMYSP@wMn~JrxF57hkS#C z)$@_~N_-)%gmu14QhS}lO(KV1-H59jCtjiFFEGTcV9xgzkFK=Ui)6)J2`-g{Dzwq7 zoL-bvdSIG3>U6A<77eB9%S*ymyL-!Gx7oG)=-w^+=(O5WYrns2tA2w4hyD@a_5hF+ zemhc0f;1zc7$6((*79$Vg|CZ`Q46?CpsH|}F*tqN5I2mzxd!b|8)-Y#8Y*@qhAkKS z=~KF>1-LPAO;8N1Qh^be87;$lkxI*(p6%UPS^44AX&@dv>*0%%kN0qKz<5oPg)?m6n!X=%Y4)fNEur*}RcJsJI;8XMiG&o&n58Cl;htv|XvwI&DjcZTgY=CUPj%PdM`ufY4fg z>QkrA`OdZ9X}$m33uo*`9Sl z0WI_y>epF|wb|s|;tK2Nmf|X+jU_#ME0Kys z5wY)>ec1NI9lCGMA6tF5aPqWMg40#OmUPFj#bpz^T}rvBpNM!ui_N@8^fXZ_>`_Bm-Ndw zuW!92X(qQ`qlwrRTlaFZL+@-suB|{M3WCZl-ne8plMwy##<{$Qt9Eb~GRR2Enp*kb z4x`@cs$;df>T&6nENJNMam74^4QVC<8s-`GV7UNy#3E1ZQeQ-o*yG8dJH06s1&t{D z2R_4>c$`L@O1r-)peOp4_IgT_ubazwG#Nmh-RWD(+aq{^N`<3D0ujH-lThr*)zzzb zxJ?4@^*13eNkTln#*=&>Px1i!W7#bn3|3%YNMDrZgf7>eE;rd_SPV*OOO=Ua(A3EE zP#cyFThVQ&o(7*UHTe+sDVUo*14MlWf6w9XdHlTqQ?eJ?7tOIaY(@Y0W2@c9%|6wNFD!ojWHfg-R@i>Y(clCH14JCkKDzjGtv>l;w{@uqpzhz<6;BuT2IyKZP z30f9_ah3D=W=Zyv8Lq@Eh(#q3q zM67(#LEY<%%p+cD-%>iOrLP?*27i31`}r?8Hv_Ogx&wyV`0m5&wbI69LmM4E)61iX zDnH_gidDvGri_kR@i_uWV_Dxe!3nBRG>dscBCCX0>>|<$8@vzzLz;Pe%qaOlAtL#TgH3H3_H&zuRzB=ghHCr8qpPh0wfzkF>_o)<1e<>3cpK!IX!_F{ zaC2{^NHihx22Za~kKI|%HdiY@8YK?p|IMSzKMm1-{pj)^?_s*_pi}6xt2U&+U%H#o zl+DgIm&`@LPDUcX7l~k}iJ@n2q|R&BVxy887i(+zP*Ig89&WSK5YGQVo?t26*^i^^ zG9{*}>~9W^?C+!a zTR!q)b2kFii1*f9@mNVaMy*A-a5@oIjuhdOrH8*%`F1xwK)T(fQ66sO4WrUx0TZL&N`(4yFdx?%CKKSuu`uX-`rG0W0)I5-}BBZN%v?Tp^b zc}7i0l3lg0-X69@ra!A{raq4-xMhg1sYpV5lDmW@2Ffer|1P>WbgWidSOtZcJ=S(D z55~NI{~s&ELh}l0%kO`zlrSvxx8Hz2G-E%y$pt%f@X^Pk7DOOz)&R>7f~j)9#c`N5 zPT3ke<@h9k1hD;Wv-^S-&32qyA0=KJQjY85_*%-Osj5EzG(_Em#1D}Qw>N4%l;!5} ziWtv^IOd3KxO8Kr5~E(-%^a~(2f=qB#wqgGvqy^Jjf#>X{)~p53Ml`3V=d?pPABM< zp`b%s>e=S-rXba{;{keO`eBOkiD4OIW>Lpmt{$tgtNJOlsfl#cIv=B?0fMU=tF@HC z9Ix0oqo=DqG{j?Wuyt0?2RQ<9qWpS9H(OEMs7_Bws!ZU;405R+D)v!&n!c^j?Qf7M z$BeG(5p`SSD$P}~$rd(sXFwAZxJ6drAw&_2sbZYsVa6SZ1~b{g<8=9$XAz#}ln8t? z;vwF_VHj_N|_fe_G1t|0A+j;7noMo~RSYB`x8oB)B zn`xb2jT&)c`9e8++|;usU1n&2ZCSE$PERuu)sHQ`ME5zgrijXAwW+0BA?@V@95=s5 zGLuBHBcmh+r33W`)Lg3go}T9kbmSxK36lT|-N{vd?b@2;_4%KcuLrLL7skCiKw8^tF#`LL)o`R%xH_7p$%4Nv?!HBrC4wq^AAa>qtXIr09D>%-OwM5&!!3l#XE3d=9|6%N z<6l5dG5`=G9;0)(z4*MIPiZ>LiRLo1hSDRD-8hH-MAeOeEKxX{0aI6GgY`n6H#@BW z*y&?5gThSNUY4e7&wcJ?=yN{n2V?9FWyt=s6?-@c z4_*{1R%}e^OTc98*X~&-b>Fqqhk8*SB#P|&b;n%bV}KbZ>sc8SINH4&el4M>C+)L) z^f4SDrD`t)3^VxvhIjr3En5}h?VUVDdv3mYxSGPnfkU821U%^j165#HHlaf1y|H~f zMpuu+i1SACnPR5^W@60l;lc+Hfl;b($axgjWXGp5;gOHeGbYelv6spZEC6fNcVX>N zPoPaVpF8xF3n%bjKoPTf)X4yz!qk8wJmFKv5`+S@6h7JjHlg{raUTJ1gz7$kfDCT^ z`k`%H2;WXXpEN}Gd;3@L@$Fxl#HKrjtPWDhdB3m=hmt*mpJtiONF+@W?-p;s6YzxxK85c~61H~-)hQWQ%qcbz_U>Ri5asrhT?@89gNlz)EL zSF@gf;X63K zE-Jm&a|SJJA@+SYY}FR4e!bRq_^-p9--n9*7E)iFq(lI$rj3N=JNx)eof{Dvw=#3poU@Xt+1F>?ZttizEa;+k6 zOkf=N8U9;{Fjht^ISx#Y1@>y5Yi>vmi9Zfl76&rRojp;`;$Lv|_r!;rL3l)IGFAz5I3efQyp4aibf#)%W5V~j_ zf$$t5_%fRUN50#-3mm1$!JCCxAK8LA@oVw6I26b5{u*geMqu4CJ>_%YH^`kI{61Sg znXPeY zz*3rkEtQ7gN+wAI`4YKfClfo6Sr9YJ#td0pp$s7VX@t$Kju%17UT8Iy1y-?_2-`sU zX*c*kq_vd;GIG!wIjHL2fQ%f}c?}jmXp9`RMiwm${d6Bj26!jB93>2!is&#EY-mO@`~aEHp*b>Z(# zl(Lz!eBtBS9p9slnz=Nbp}waDD1C!+mxqx`shS&zd{9w%!b?hcC9MdX#)cE?4Rxo3 z8&JcQwqe3AIox;GZwZ#P%Z}gYGYPMu!aLJ2b$lo0V>iWd{VS$3cnutyvlNsr+#hi= zs`$qD%We?z3|$FaD8%-e0mUj9*G5|m`0{%&0P~m$C%chP^Ious%eHU|&e@XL5={Sse z&e58)h?>vHuOn?Iuo3Q%F@VY^a)yrM`^;Gt&Po2R1h#syOY^YBAG}%;BxVJjv4jNf zmXs3N6#F?TH{8W4oTY@PJwD5o;o;)W5+aceFQt(cK6k@d8a7VIkXp-)CNGd#k_)iOra)mLQ)!D2_ulaR zoaZ5&!jY1gGH}QaQK)W*lo|eK!rI)No}7SehWWJ>DjO<2Jt_Qs;w%*aXJ~nf@K}Un z6ZFCBZ~g}U?CVLiB%Ua9@xN@uQz0e1UT{5>+)m0fko_mZrU?$~qM0CtVk?TXO@9bL zreT|#tpOqCAt2<&@0n}NLbFiFsYvhuylaUf-0zqavsL)HLsAZNjBEyF}%s;XRj z7zqr25dvQ&8@yb)5W6p2jw5KyE@$Vu2;2ZYDw5d*7-*`(J*pGNjhFajO5jZtt5T6B z;tNdGJRS2G`Fjl&1jp2K=KvlL>d%vFP0oG(v)wCPG%Ck$Fto>$H zOOU*PBIYcKqY<^!^2!m=(k#bZW3cnqx zB!QdZP&AN@cWe5$@WR){$H)a-CXiLQ%os$U4#W+kZ>}-+rwz4jYRxEiB!=xQ_VcH7 zQwwlo;F_QqSfv6Z&@qRW>-1Kbk&dSOUADsr`!LuHAl=FBG7YDT0Bpf4EE*8}F z`lpx_w|@0w{;GTF!T;pw%A0Ua0N0oo4NYBigwv`np)}GhO<(c?!_c!w6o<;WG?csX ze5QMD^y;)@!5ZZj0QQ%6J{~<8{gDbAU8v7C7RED@zFkUxZtC^-+TPWmjdRdVy?TA%2Or>U0^dbY6_eoA`WE+UfZG8ECEP^oW)ctU`y@>K{eN&0jfRA?-+}Li z6KLaxJHB?q+LO`yAJK?X{TPC-S-WGc@d5qNu-)2Rmc(tDMTv{41W#eR-->B=sM{=M Ih8qw64X7)plmGw# literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/contents/site.doctree b/doc/_build/doctrees/contents/site.doctree new file mode 100644 index 0000000000000000000000000000000000000000..554e5d5c65d1b25d447c3b157ee90701a2a6ad70 GIT binary patch literal 2968 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 W9)c61(+lX@HzqSrHfWv`BmWP~BAFoo literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/index.doctree b/doc/_build/doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e437d81977c3b1e40adbf19b7800d7430c84f8e2 GIT binary patch literal 11740 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 F_%|ALxz+#x literal 0 HcmV?d00001 diff --git a/doc/_build/doctrees/some-feature.doctree b/doc/_build/doctrees/some-feature.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9f4222b1bd78071d8a820ffb6c402493d60e8981 GIT binary patch literal 4435 zcmb7I+io1U8I~;XO1sjo4vF0qwvr8s)N&iiu2Z0eFWLe@fdWo-(Iifa%9wIzxJybi zobiyfR~H7-ivSkNyRa91fcCCHAEH3tqXBXgAkWb6pVJ;9*^+<-hCj*w@cl>Xi`L(M zx4l&SxlNr3sU`<3ic}hL?cG|GhBo2K_^UFVMy9H{E?S~3R-gDi(Qz#!P0VMu+{VXg!UrSHjLo^Hb2xVW6FwpN z3%g(XQlEClAl-Pe?K(lDu2^yHO3OocJ(i05Lpx-y%Z$n8&>C1r)~v`#ljf^o%(Mm( z-z~+G@@p-!*>o{v;YrR%bjG?>!^X7b#in@s(X!ZeKl$+C(Wjc{`sgFB(r4+>Q_D{H zCr8lfNW-rE%C3VX^5T}*5VysO9g6i5*C{YtHNka1w!<300*sq;qzVD>x=*~s?xA>_ zj1=#{GVw0J`w@Qc;dckWyU<$vw9pnu#rwFnU#ZY>9e~KjIm^VXJ3jsGB$P&~@u0?) zkuwKU4Fu2mLH8qW?&v`RGY4!COKk>wJju-IK-)Y|t%~R_fv*QSe`;mUqq`3azwU{f z?w!}L_frFZGixBOE_YwC`3tD^zc2oNb;T}_$6pEPui*aH_W)fV+BoJWAW&u?od$o0 zb^>X5a?bXzn-FNziNVjxT)64#>BCy1#kJ-E^E zXfUtQ0(GjGxte0#O0lPa$GuT=fdWmT;&RH|O=2JsK^PjUtMu69LLcc+(JS5GTFtIPHR zb*6}S!K^OgRUesQwlUjn{FGfmZ@Md+?Fz&YJ*?;oE3d<#>8#>?_om62(s9ujf-FzR zIoD-pZJE@t*gslw-TDlVu(X86vg?Ov5$M}N)1^0RO4+U5n&yU@55|z~X090JsWMze z-nAdI*rH80gGoEJCbPyLip@jU8FR&RX42ea5i#_8!;%b(^->@zvpT`DTPj01d~ykCmxi(#(0qhVVcm?q`~r5N#QXs zD8X}SL{Lu~kXT))#*ag{k@GCg(K+}t4*0IQu3&MqY`JYdkwDF0M$+}6mTN_PXvYxO zf6j6R)Nmr_ECHnh_(M)c`IoLQ6)+083R7y%-gT@Q?f-ILOMKs+-wZgKcpeC*qL}AE zoKy{scbg^BGhA8)7w>i#b{1G1|8RL}$@NRVQyuEtx92w&F1szV0kNh9Ac|p=cfFXY zv1MZp#3QV)VGea~6yrlp?sv{Zmq=xsB3bl2Ax(@ky3y9?ae>q9ioIGpS`6 zqMJb^H5yGPZJPQB{20IlNfNc z0|nroFi8wy9m9smqR0sUXwB^+CX=8^&&Gg2XA~i4ZcCpk!zO`{V-e$r_`M#d6#5%F zVMw&67J01!)EmXRTn2F(vI^SWP+&R^;rKG&fN}vLZlBl;BIwyuyk)97aE9nfL#alH zfx0m4P^mzbUpOZd3f?$nWj4}F<-{Xqk|B?f!lzI{aBd*vMu<}<0Z*8W1H90v&=zWM zS5E{4Ydk8;+L>G7>KWqXt>hF_W`j-^&THoTf@WLU@n^V3oeY+2Pc=%UD&Bm@pJTfoaozI$dV;`LBUoM} z_#A#0h_-HL&hqjRc`i!Fk0I_{RRuOIxnopccWtU#fc6DmtVAro_r!PNTk(zf+PV%= z&1r_nphw_$XX2YPE8eB=Z}H^(TI^fbYvKXi3SK=t^U4<9P^c)@=Sr{7QYe!PDzYmX zrg0Nu1@X-VVspAP$FWmOEiUcM@kf6{IHFqJSmaghV5~sNF2ap^(|VZVy;c0L0d0Hr zLkdICzXA$h`ahuj;DL)mhIhS2!j%G>$~{M3Z^%UktV +int main() +{ + printf("Hello, World!"); + return 0; +} +``` + + +## Math + +This creates an equation: +```{math} +a^2 + b^2 = c^2 +``` + +This is an in-line equation, {math}`a^2 + b^2 = c^2`, embedded in text. diff --git a/doc/_build/html/_sources/contents/auxiliary.rst.txt b/doc/_build/html/_sources/contents/auxiliary.rst.txt new file mode 100644 index 0000000..e05b536 --- /dev/null +++ b/doc/_build/html/_sources/contents/auxiliary.rst.txt @@ -0,0 +1,54 @@ +Auxiliary module +################################ + +The :index:`auxiliary` module contains codes that support the development of auxiliary functionalities +required for simulating each fundamental phase of the earthquake process. +It provides tools for statistical operations, spatial representations, and input/output (I/O) management. +Additionally, it includes built-in databases such as ground motion models, correlation models, and other resources +essential for the simulation workflow. + +Pre-simulation +********************************************* + +The pre-simulation submodule focuses on preparing and managing fault geometries before the main simulation steps. +Its core functionalities include: + +- **Fault information management**: + Import and modify fault segment data stored in GeoJSON format, including geometrical and attribute handling. + +- **Geometry validation**: + Check and validate the geometric consistency of fault segments to ensure accurate meshing and simulation. + +- **Triangular meshing**: + Generate triangular meshes based on the fault geometry, enabling detailed structural representation. + +- **STL file creation**: + Convert the meshed fault segments into STL (Stereolithography or Standard Triangle Language) file format, + suitable for 3D visualization and numerical simulations. + + +Post simulation +********************************************* + The post-simulation analysis focuses on processing the earthquake catalog, extracting statistical insights, + and creating visualizations to better understand the seismic event distribution. + +- **Catalog processing**: + The earthquake catalog is loaded from a MATLAB `.mat` file. The catalog is then saved as a `.csv` file to facilitate easier access and further processing. + +- **Statistical evaluation**: + Key earthquake parameters which are magnitude, rupture area, mean slip, and mean stress drop, are statistically summarized. + +- **3D spatial visualization**: + 3D scatter plots are created to visualize the spatial distribution of events. + +- **Magnitude-frequency distribution (MFD)**: + MFDs of the simulated earthquake catalog are analyzed. + Gutenberg-Richter law parameters, specifically the **a-value** and **b-value**, are estimated using various statistical techniques. + Then, MFD plots are generated, illustrating the relationship between earthquake magnitude and the cumulative number of events. + + +PSHA +********************************************* +PSHA with synthetic catalog ... + + diff --git a/doc/_build/html/_sources/contents/case.rst.txt b/doc/_build/html/_sources/contents/case.rst.txt new file mode 100644 index 0000000..d413be4 --- /dev/null +++ b/doc/_build/html/_sources/contents/case.rst.txt @@ -0,0 +1,19 @@ +Case study +################################ + +In this part, we will showcase the use of the tools developed within each module in a real case application. + + +ssc +********************************************* +In this part, we will showcase the use of the tools developed within seismic source module in a real case application. + + +gmc +********************************************* +In this part, we will showcase the use of the tools developed within ground motion module in a real case application. + + +site +********************************************* +In this part, we will showcase the use of the tools developed within site and site-effects module in a real case application. \ No newline at end of file diff --git a/doc/_build/html/_sources/contents/gmc.rst.txt b/doc/_build/html/_sources/contents/gmc.rst.txt new file mode 100644 index 0000000..b3aa7bf --- /dev/null +++ b/doc/_build/html/_sources/contents/gmc.rst.txt @@ -0,0 +1,11 @@ +Ground motion module +################################ + +The *ground motion module* will contain functionalities for computing ground motion scalar parameters +using ground-motion models (GMMs) implemented into the OQ Engine. +The primary functionality required for this module is the GMMs to compute +ground motion parameters and their associated uncertainty for scenarios of interest. + + + + diff --git a/doc/_build/html/_sources/contents/ground_motion.rst.txt b/doc/_build/html/_sources/contents/ground_motion.rst.txt new file mode 100644 index 0000000..20a2145 --- /dev/null +++ b/doc/_build/html/_sources/contents/ground_motion.rst.txt @@ -0,0 +1,7 @@ +Auxiliary module +################################ + +The :index:`Auxiliary` module contains code for the the simulation of each fundamental step of the earthquake process such as statistical, spatial representation, and input/output (I/O) functionalities. + +Moreover, this auxiliary module will contain the built-in databases. +********************************************* diff --git a/doc/_build/html/_sources/contents/installation.rst.txt b/doc/_build/html/_sources/contents/installation.rst.txt new file mode 100644 index 0000000..161a1c2 --- /dev/null +++ b/doc/_build/html/_sources/contents/installation.rst.txt @@ -0,0 +1,42 @@ +Installation +============ +The **quakeT** is installed with the procedure described in the following. +Note that this procedure implies the installation of the OpenQuake engine. +It was tested on **Windows**, **Mac OS** and **Linux** systems. + +Here we demonstrate the installation of the quakeT for a Windows system and Python 3.12. + +* Open a terminal and move to the folder where you intend to install the tools; +* Upgrade pip: + +.. code-block:: ini + + >python -m pip install --upgrade pip + +* Install the OpenQuake engine and activate its virtual environment: + +.. code-block:: ini + + >git clone https://github.com/GEMScienceTools/quakeT.git + +.. code-block:: ini + + >cd oq-engine + +.. code-block:: ini + + >python3 install.py devel + +.. code-block:: ini + + >openquake/script/activate + +* Go to the folder where you cloned the quakeT repository and complete the installation running the following commands, making sure to replace `requirements.txt` with the name of the file corresponding to the correct python version and operating system: + +.. code-block:: ini + + >pip install -e . + +.. code-block:: ini + + >pip install -r requirements.txt diff --git a/doc/_build/html/_sources/contents/seismic_source.rst.txt b/doc/_build/html/_sources/contents/seismic_source.rst.txt new file mode 100644 index 0000000..20a2145 --- /dev/null +++ b/doc/_build/html/_sources/contents/seismic_source.rst.txt @@ -0,0 +1,7 @@ +Auxiliary module +################################ + +The :index:`Auxiliary` module contains code for the the simulation of each fundamental step of the earthquake process such as statistical, spatial representation, and input/output (I/O) functionalities. + +Moreover, this auxiliary module will contain the built-in databases. +********************************************* diff --git a/doc/_build/html/_sources/contents/site.rst.txt b/doc/_build/html/_sources/contents/site.rst.txt new file mode 100644 index 0000000..44f010a --- /dev/null +++ b/doc/_build/html/_sources/contents/site.rst.txt @@ -0,0 +1,7 @@ +Site and site-effects module +################################ + +Within the *site and site-effects module*, functionalities will be developed for modelling the site response. + + + diff --git a/doc/_build/html/_sources/contents/ssc.rst.txt b/doc/_build/html/_sources/contents/ssc.rst.txt new file mode 100644 index 0000000..3176e42 --- /dev/null +++ b/doc/_build/html/_sources/contents/ssc.rst.txt @@ -0,0 +1,7 @@ +Seismic source module +################################ + +The *seismic source module* will contain codes for evaluating models related to seismic sources. + + + diff --git a/doc/_build/html/_sources/index.rst.txt b/doc/_build/html/_sources/index.rst.txt new file mode 100644 index 0000000..2889e69 --- /dev/null +++ b/doc/_build/html/_sources/index.rst.txt @@ -0,0 +1,45 @@ +.. +Welcome to the quakeT documentation! +==================================== + +**quakeT** is an initiative of the SIGMA3 project, jointly conducted by the *Électricité de France (EDF)* and the *GEM Foundation*. +Its goal is to collect a set of tools for building components of a probabilistic seismic hazard model, +generating synthetic datasets, and checking the compatibility between observations and models. + + +quakeT code is hosted on github at the following link: https://github.com/GEMScienceTools/quakeT. +It is developed in close connection with the `OpenQuake engine `_ and other toolkits in `GEMScienceTools `_ , +the open-source hazard and risk calculation engine developed primarily by the GEM Foundation. + + +Currently the quakeT includes five sub-modules: + +* **Auxiliary module** is related to the development of the auxiliary functionalities required to support the modules related to the simulation of each fundamental step of the earthquake process such as pre-simulation, post simulation, and PSHA model with synthetic catalogs; + +* **Seismic source module** will contain codes for evaluating models related to seismic sources; + +* **Ground motion module** will contain functionalities for computing ground motion intensity measures (IMs); + +* **Site and site-effects module** will be developed for modelling the site response; + +* **Case study module** will showcase the use of the tools developed within each module in a real case application; + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + contents/installation + contents/auxiliary + contents/ssc + contents/gmc + contents/site + contents/case + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/doc/_build/html/_sources/some-feature.md.txt b/doc/_build/html/_sources/some-feature.md.txt new file mode 100644 index 0000000..cd6ac9f --- /dev/null +++ b/doc/_build/html/_sources/some-feature.md.txt @@ -0,0 +1,14 @@ +# Some feature + +## Subsection + +Exciting documentation in here. +Let's make a list (empty surrounding lines required): + +- item 1 + + - nested item 1 + - nested item 2 + +- item 2 +- item 3 diff --git a/doc/_build/html/_static/alabaster.css b/doc/_build/html/_static/alabaster.css new file mode 100644 index 0000000..7e75bf8 --- /dev/null +++ b/doc/_build/html/_static/alabaster.css @@ -0,0 +1,663 @@ +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: Georgia, serif; + font-size: 17px; + background-color: #fff; + color: #000; + margin: 0; + padding: 0; +} + + +div.document { + width: 940px; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.sphinxsidebar { + width: 220px; + font-size: 14px; + line-height: 1.5; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #fff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +div.body > .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +p.caption { + font-family: inherit; + font-size: inherit; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar { + max-height: 100%; + overflow-y: auto; +} + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Georgia, serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: Georgia, serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox { + margin: 1em 0; +} + +div.sphinxsidebar .search > div { + display: table-cell; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +div.sphinxsidebar .badge { + border-bottom: none; +} + +div.sphinxsidebar .badge:hover { + border-bottom: none; +} + +/* To address an issue with donation coming after search */ +div.sphinxsidebar h3.donation { + margin-top: 10px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Georgia, serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #EEE; + border: 1px solid #CCC; +} + +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fafafa; +} + +div.admonition p.admonition-title { + font-family: Georgia, serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #EEE; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +/* Cloned from + * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 + */ +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +table.footnote td.label { + width: .1px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + /* Matches the 30px from the narrow-screen "li > ul" selector below */ + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: unset; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +div.viewcode-block:target { + background: #ffd; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fff; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +/* Don't put an underline on images */ +a.image-reference, a.image-reference:hover { + border-bottom: none; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + +@media screen and (max-width: 940px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: #fff; + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.sphinxsidebar { + display: block; + float: none; + width: unset; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: #fff; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + min-width: auto; /* fixes width on small screens, breaks .hll */ + padding: 0; + } + + .hll { + /* "fixes" the breakage */ + width: max-content; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + ul { + margin-left: 0; + } + + li > ul { + /* Matches the 30px from the "ul, ol" selector above */ + margin-left: 30px; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Hide ugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* relbar */ + +.related { + line-height: 30px; + width: 100%; + font-size: 0.9rem; +} + +.related.top { + border-bottom: 1px solid #EEE; + margin-bottom: 20px; +} + +.related.bottom { + border-top: 1px solid #EEE; +} + +.related ul { + padding: 0; + margin: 0; + list-style: none; +} + +.related li { + display: inline; +} + +nav#rellinks { + float: right; +} + +nav#rellinks li+li:before { + content: "|"; +} + +nav#breadcrumbs li+li:before { + content: "\00BB"; +} + +/* Hide certain items when printing */ +@media print { + div.related { + display: none; + } +} + +img.github { + position: absolute; + top: 0; + border: 0; + right: 0; +} \ No newline at end of file diff --git a/doc/_build/html/_static/basic.css b/doc/_build/html/_static/basic.css new file mode 100644 index 0000000..d9846da --- /dev/null +++ b/doc/_build/html/_static/basic.css @@ -0,0 +1,914 @@ +/* + * Sphinx stylesheet -- basic theme. + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin-top: 10px; +} + +ul.search li { + padding: 5px 0; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: inherit; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/doc/_build/html/_static/custom.css b/doc/_build/html/_static/custom.css new file mode 100644 index 0000000..2a924f1 --- /dev/null +++ b/doc/_build/html/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/doc/_build/html/_static/doctools.js b/doc/_build/html/_static/doctools.js new file mode 100644 index 0000000..0398ebb --- /dev/null +++ b/doc/_build/html/_static/doctools.js @@ -0,0 +1,149 @@ +/* + * Base JavaScript utilities for all Sphinx HTML documentation. + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/doc/_build/html/_static/documentation_options.js b/doc/_build/html/_static/documentation_options.js new file mode 100644 index 0000000..e21c068 --- /dev/null +++ b/doc/_build/html/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '0.1', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/doc/_build/html/_static/file.png b/doc/_build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/doc/_build/html/_static/github-banner.svg b/doc/_build/html/_static/github-banner.svg new file mode 100644 index 0000000..c47d9dc --- /dev/null +++ b/doc/_build/html/_static/github-banner.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/doc/_build/html/_static/language_data.js b/doc/_build/html/_static/language_data.js new file mode 100644 index 0000000..c7fe6c6 --- /dev/null +++ b/doc/_build/html/_static/language_data.js @@ -0,0 +1,192 @@ +/* + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, if available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/doc/_build/html/_static/minus.png b/doc/_build/html/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/doc/_build/html/_static/plus.png b/doc/_build/html/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/doc/_build/html/_static/pygments.css b/doc/_build/html/_static/pygments.css new file mode 100644 index 0000000..04a4174 --- /dev/null +++ b/doc/_build/html/_static/pygments.css @@ -0,0 +1,84 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #004461; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #582800 } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902 } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000 } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #745334 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #990000 } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #004461 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #888888 } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8 } /* Text.Whitespace */ +.highlight .mb { color: #990000 } /* Literal.Number.Bin */ +.highlight .mf { color: #990000 } /* Literal.Number.Float */ +.highlight .mh { color: #990000 } /* Literal.Number.Hex */ +.highlight .mi { color: #990000 } /* Literal.Number.Integer */ +.highlight .mo { color: #990000 } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/doc/_build/html/_static/searchtools.js b/doc/_build/html/_static/searchtools.js new file mode 100644 index 0000000..2c774d1 --- /dev/null +++ b/doc/_build/html/_static/searchtools.js @@ -0,0 +1,632 @@ +/* + * Sphinx JavaScript utilities for the full-text search. + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename, kind] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +// Global search result kind enum, used by themes to style search results. +class SearchResultKind { + static get index() { return "index"; } + static get object() { return "object"; } + static get text() { return "text"; } + static get title() { return "title"; } +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename, kind] = item; + + let listItem = document.createElement("li"); + // Add a class representing the item's type: + // can be used by a theme's CSS selector for styling + // See SearchResultKind for the class names. + listItem.classList.add(`kind-${kind}`); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = Documentation.ngettext( + "Search finished, found one page matching the search query.", + "Search finished, found ${resultCount} pages matching the search query.", + resultCount, + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.setAttribute("role", "list"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename, kind]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score + boost, + filenames[file], + SearchResultKind.title, + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + SearchResultKind.index, + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + SearchResultKind.object, + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + SearchResultKind.text, + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/doc/_build/html/_static/sphinx_highlight.js b/doc/_build/html/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/doc/_build/html/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/doc/_build/html/another-feature.html b/doc/_build/html/another-feature.html new file mode 100644 index 0000000..883562a --- /dev/null +++ b/doc/_build/html/another-feature.html @@ -0,0 +1,162 @@ + + + + + + + + More features here — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

More features here

+
+

Some text

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod +tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, +quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo +consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse +cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non +proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
+

Table

+ + + + + + + + + + + + + + + + + + + + +

No.

Prime

1

No

2

Yes

3

Yes

4

No

+
+
+

Code blocks

+

The following is a Python code block:

+
  def hello():
+      print("Hello world")
+
+
+

And this is a C code block:

+
#include <stdio.h>
+int main()
+{
+    printf("Hello, World!");
+    return 0;
+}
+
+
+
+
+

Math

+

This creates an equation:

+
+\[a^2 + b^2 = c^2\]
+

This is an in-line equation, \(a^2 + b^2 = c^2\), embedded in text.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/contents/auxiliary.html b/doc/_build/html/contents/auxiliary.html new file mode 100644 index 0000000..31ecd56 --- /dev/null +++ b/doc/_build/html/contents/auxiliary.html @@ -0,0 +1,162 @@ + + + + + + + + Auxiliary module — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Auxiliary module

+

The auxiliary module contains codes that support the development of auxiliary functionalities +required for simulating each fundamental phase of the earthquake process. +It provides tools for statistical operations, spatial representations, and input/output (I/O) management. +Additionally, it includes built-in databases such as ground motion models, correlation models, and other resources +essential for the simulation workflow.

+
+

Pre-simulation

+

The pre-simulation submodule focuses on preparing and managing fault geometries before the main simulation steps. +Its core functionalities include:

+
    +
  • Fault information management: +Import and modify fault segment data stored in GeoJSON format, including geometrical and attribute handling.

  • +
  • Geometry validation: +Check and validate the geometric consistency of fault segments to ensure accurate meshing and simulation.

  • +
  • Triangular meshing: +Generate triangular meshes based on the fault geometry, enabling detailed structural representation.

  • +
  • STL file creation: +Convert the meshed fault segments into STL (Stereolithography or Standard Triangle Language) file format, +suitable for 3D visualization and numerical simulations.

  • +
+
+
+

Post simulation

+
+

The post-simulation analysis focuses on processing the earthquake catalog, extracting statistical insights, +and creating visualizations to better understand the seismic event distribution.

+
+
    +
  • Catalog processing: +The earthquake catalog is loaded from a MATLAB .mat file. The catalog is then saved as a .csv file to facilitate easier access and further processing.

  • +
  • Statistical evaluation: +Key earthquake parameters which are magnitude, rupture area, mean slip, and mean stress drop, are statistically summarized.

  • +
  • 3D spatial visualization: +3D scatter plots are created to visualize the spatial distribution of events.

  • +
  • Magnitude-frequency distribution (MFD): +MFDs of the simulated earthquake catalog are analyzed. +Gutenberg-Richter law parameters, specifically the a-value and b-value, are estimated using various statistical techniques. +Then, MFD plots are generated, illustrating the relationship between earthquake magnitude and the cumulative number of events.

  • +
+
+
+

PSHA

+

PSHA with synthetic catalog …

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/contents/case.html b/doc/_build/html/contents/case.html new file mode 100644 index 0000000..bbfde0c --- /dev/null +++ b/doc/_build/html/contents/case.html @@ -0,0 +1,129 @@ + + + + + + + + Case study — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Case study

+

In this part, we will showcase the use of the tools developed within each module in a real case application.

+
+

ssc

+

In this part, we will showcase the use of the tools developed within seismic source module in a real case application.

+
+
+

gmc

+

In this part, we will showcase the use of the tools developed within ground motion module in a real case application.

+
+
+

site

+

In this part, we will showcase the use of the tools developed within site and site-effects module in a real case application.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/contents/gmc.html b/doc/_build/html/contents/gmc.html new file mode 100644 index 0000000..044de38 --- /dev/null +++ b/doc/_build/html/contents/gmc.html @@ -0,0 +1,117 @@ + + + + + + + + Ground motion module — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Ground motion module

+

The ground motion module will contain functionalities for computing ground motion scalar parameters +using ground-motion models (GMMs) implemented into the OQ Engine. +The primary functionality required for this module is the GMMs to compute +ground motion parameters and their associated uncertainty for scenarios of interest.

+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/contents/ground_motion.html b/doc/_build/html/contents/ground_motion.html new file mode 100644 index 0000000..997eb55 --- /dev/null +++ b/doc/_build/html/contents/ground_motion.html @@ -0,0 +1,119 @@ + + + + + + + + Auxiliary module — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Auxiliary module

+

The Auxiliary module contains code for the the simulation of each fundamental step of the earthquake process such as statistical, spatial representation, and input/output (I/O) functionalities.

+
+

Moreover, this auxiliary module will contain the built-in databases.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/contents/installation.html b/doc/_build/html/contents/installation.html new file mode 100644 index 0000000..31f219a --- /dev/null +++ b/doc/_build/html/contents/installation.html @@ -0,0 +1,148 @@ + + + + + + + + Installation — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Installation

+

The quakeT is installed with the procedure described in the following. +Note that this procedure implies the installation of the OpenQuake engine. +It was tested on Windows, Mac OS and Linux systems.

+

Here we demonstrate the installation of the quakeT for a Windows system and Python 3.12.

+
    +
  • Open a terminal and move to the folder where you intend to install the tools;

  • +
  • Upgrade pip:

  • +
+
>python -m pip install --upgrade pip
+
+
+
    +
  • Install the OpenQuake engine and activate its virtual environment:

  • +
+
>git clone https://github.com/GEMScienceTools/quakeT.git
+
+
+
>cd oq-engine
+
+
+
>python3 install.py devel
+
+
+
>openquake/script/activate
+
+
+
    +
  • Go to the folder where you cloned the quakeT repository and complete the installation running the following commands, making sure to replace requirements.txt with the name of the file corresponding to the correct python version and operating system:

  • +
+
>pip install -e .
+
+
+
>pip install -r requirements.txt
+
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/contents/seismic_source.html b/doc/_build/html/contents/seismic_source.html new file mode 100644 index 0000000..a57c598 --- /dev/null +++ b/doc/_build/html/contents/seismic_source.html @@ -0,0 +1,119 @@ + + + + + + + + Auxiliary module — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Auxiliary module

+

The Auxiliary module contains code for the the simulation of each fundamental step of the earthquake process such as statistical, spatial representation, and input/output (I/O) functionalities.

+
+

Moreover, this auxiliary module will contain the built-in databases.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/contents/site.html b/doc/_build/html/contents/site.html new file mode 100644 index 0000000..982a7b7 --- /dev/null +++ b/doc/_build/html/contents/site.html @@ -0,0 +1,114 @@ + + + + + + + + Site and site-effects module — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Site and site-effects module

+

Within the site and site-effects module, functionalities will be developed for modelling the site response.

+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/contents/ssc.html b/doc/_build/html/contents/ssc.html new file mode 100644 index 0000000..75bfcb8 --- /dev/null +++ b/doc/_build/html/contents/ssc.html @@ -0,0 +1,114 @@ + + + + + + + + Seismic source module — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Seismic source module

+

The seismic source module will contain codes for evaluating models related to seismic sources.

+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/genindex.html b/doc/_build/html/genindex.html new file mode 100644 index 0000000..f33354c --- /dev/null +++ b/doc/_build/html/genindex.html @@ -0,0 +1,117 @@ + + + + + + + Index — Example 0.1 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Index

+ +
+ A + +
+

A

+ + +
+ + + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/index.html b/doc/_build/html/index.html new file mode 100644 index 0000000..6f01365 --- /dev/null +++ b/doc/_build/html/index.html @@ -0,0 +1,154 @@ + + + + + + + + Welcome to the quakeT documentation! — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Welcome to the quakeT documentation!

+

quakeT is an initiative of the SIGMA3 project, jointly conducted by the Électricité de France (EDF) and the GEM Foundation. +Its goal is to collect a set of tools for building components of a probabilistic seismic hazard model, +generating synthetic datasets, and checking the compatibility between observations and models.

+

quakeT code is hosted on github at the following link: https://github.com/GEMScienceTools/quakeT. +It is developed in close connection with the OpenQuake engine and other toolkits in GEMScienceTools , +the open-source hazard and risk calculation engine developed primarily by the GEM Foundation.

+

Currently the quakeT includes five sub-modules:

+
    +
  • Auxiliary module is related to the development of the auxiliary functionalities required to support the modules related to the simulation of each fundamental step of the earthquake process such as pre-simulation, post simulation, and PSHA model with synthetic catalogs;

  • +
  • Seismic source module will contain codes for evaluating models related to seismic sources;

  • +
  • Ground motion module will contain functionalities for computing ground motion intensity measures (IMs);

  • +
  • Site and site-effects module will be developed for modelling the site response;

  • +
  • Case study module will showcase the use of the tools developed within each module in a real case application;

  • +
+ +
+
+

Indices and tables

+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/objects.inv b/doc/_build/html/objects.inv new file mode 100644 index 0000000..d8a7e67 --- /dev/null +++ b/doc/_build/html/objects.inv @@ -0,0 +1,5 @@ +# Sphinx inventory version 2 +# Project: Example +# Version: +# The remainder of this file is compressed using zlib. +xڅRJ0+TqN\ ႂ1<4{'MbSpWkΤƆ8! lgpn{$*gD hxJ[۔3ڊ ,bm]l4ii4>RV_d2'"ߒKF&y_kI"H#y|J92Q|V# _H5Vhbg:VL*V6?Gp|93Vd/0[Ҧ~ \ No newline at end of file diff --git a/doc/_build/html/search.html b/doc/_build/html/search.html new file mode 100644 index 0000000..72bc35f --- /dev/null +++ b/doc/_build/html/search.html @@ -0,0 +1,126 @@ + + + + + + + Search — Example 0.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Search

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/_build/html/searchindex.js b/doc/_build/html/searchindex.js new file mode 100644 index 0000000..a0d5200 --- /dev/null +++ b/doc/_build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"Auxiliary module": [[1, null]], "Case study": [[2, null]], "Code blocks": [[0, "code-blocks"]], "Contents:": [[7, null]], "Ground motion module": [[3, null]], "Indices and tables": [[7, "indices-and-tables"]], "Installation": [[4, null]], "Math": [[0, "math"]], "More features here": [[0, null]], "PSHA": [[1, "psha"]], "Post simulation": [[1, "post-simulation"]], "Pre-simulation": [[1, "pre-simulation"]], "Seismic source module": [[6, null]], "Site and site-effects module": [[5, null]], "Some feature": [[8, null]], "Some text": [[0, "some-text"]], "Subsection": [[8, "subsection"]], "Table": [[0, "table"]], "Welcome to the quakeT documentation!": [[7, null]], "gmc": [[2, "gmc"]], "site": [[2, "site"]], "ssc": [[2, "ssc"]]}, "docnames": ["another-feature", "contents/auxiliary", "contents/case", "contents/gmc", "contents/installation", "contents/site", "contents/ssc", "index", "some-feature"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["another-feature.md", "contents\\auxiliary.rst", "contents\\case.rst", "contents\\gmc.rst", "contents\\installation.rst", "contents\\site.rst", "contents\\ssc.rst", "index.rst", "some-feature.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": 8, "0": 0, "06x": [], "1": [0, 8], "12": 4, "16777215": [], "2": [0, 8], "3": [0, 4, 8], "35": [], "39": [], "3d": 1, "4": 0, "5": [], "50": [], "6": [], "A": [], "And": 0, "In": 2, "It": [1, 4, 7], "Its": [1, 7], "No": 0, "Such": [], "The": [0, 1, 3, 4, 6], "Then": 1, "_": [], "_quaket_imag": [], "access": 1, "accur": 1, "activ": 4, "ad": 0, "add": [], "add_to": [], "addition": 1, "adipisc": 0, "again": [], "align": [], "aliqua": 0, "aliquip": 0, "amet": 0, "an": [0, 7], "analysi": 1, "analyz": 1, "anim": 0, "append": [], "applic": [2, 7], "ar": 1, "area": 1, "arrai": [], "assess": [], "associ": 3, "attribut": 1, "aut": 0, "aux": [], "auxiliari": 7, "b": [0, 1], "base": 1, "befor": 1, "better": 1, "between": [1, 7], "block": [], "both": [], "build": 7, "built": 1, "c": 0, "calcul": 7, "calculate_fault_length": [], "can": [], "case": 7, "cat": [], "catalog": [1, 7], "cd": 4, "center": [], "check": [1, 7], "cillum": 0, "clone": 4, "close": 7, "code": [1, 6, 7], "cointain": [], "collect": 7, "color": [], "com": [4, 7], "command": 4, "commodo": 0, "compat": 7, "complet": 4, "compon": 7, "comput": [3, 7], "conduct": 7, "connect": 7, "consectetur": 0, "consequat": 0, "consist": 1, "contain": [1, 3, 6, 7], "convert": 1, "coordin": [], "core": 1, "correct": 4, "correl": 1, "correspond": 4, "creat": [0, 1], "create_structured_triangular_mesh": [], "creation": 1, "csv": 1, "culpa": 0, "cumul": 1, "cupidatat": 0, "current": 7, "data": 1, "databas": 1, "datafram": [], "dataset": 7, "de": 7, "def": 0, "defin": [], "demonstr": 4, "describ": 4, "deserunt": 0, "detail": 1, "devel": 4, "develop": [1, 2, 5, 7], "df_fault_info": [], "df_loc": [], "dip": [], "direct": [], "displai": [], "distribut": 1, "do": 0, "document": 8, "dolor": 0, "drop": 1, "dui": 0, "e": 4, "ea": 0, "each": [1, 2, 7], "earthquak": [1, 7], "easier": 1, "edf": 7, "effect": [2, 7], "eiusmod": 0, "elit": 0, "embed": 0, "empti": 8, "enabl": 1, "engin": [3, 4, 7], "enim": 0, "ensur": 1, "environ": 4, "equat": 0, "ess": 0, "essenti": 1, "est": 0, "estim": 1, "et": 0, "etc": [], "eu": 0, "evalu": [1, 6, 7], "event": 1, "ex": 0, "excepteur": 0, "excit": 8, "exercit": 0, "extract": 1, "f": [], "facilit": 1, "fault": 1, "fault_id": [], "fault_length": [], "featur": [], "fid": [], "figur": [], "file": [1, 4], "filechwck": [], "fillcolor": [], "fillopac": [], "first": [], "five": 7, "focus": 1, "folder": 4, "folium": [], "follow": [0, 4, 7], "format": 1, "foundat": 7, "franc": 7, "frequenc": 1, "from": 1, "fugiat": 0, "function": [1, 3, 5, 7], "fundament": [1, 7], "further": 1, "g": [], "gem": 7, "gemsciencetool": [4, 7], "gener": [1, 7], "geojson": 1, "geometr": 1, "geometri": 1, "geometrii": [], "get": [], "git": 4, "github": [4, 7], "gmc": 7, "gmm": 3, "go": 4, "goal": 7, "ground": [1, 2, 7], "ground_mot": [], "gutenberg": 1, "h": 0, "handl": 1, "hash": [], "hazard": 7, "hello": 0, "here": [4, 8], "host": 7, "http": [4, 7], "i": [0, 1, 3, 4, 7], "id": 0, "illustr": 1, "im": 7, "implement": 3, "impli": 4, "import": 1, "incididunt": 0, "includ": [0, 1, 7], "index": 7, "inform": 1, "ini": [], "initi": 7, "input": 1, "insight": 1, "inspect": [], "instal": 7, "int": 0, "intend": 4, "intens": 7, "interact": [], "interest": 3, "ipsum": 0, "ipython": [], "irur": 0, "item": 8, "its": 4, "jointli": 7, "kei": 1, "kilometr": [], "km": [], "km_coordin": [], "labor": 0, "labori": 0, "laborum": 0, "languag": 1, "latitud": [], "law": 1, "length": [], "let": 8, "librari": [], "line": [0, 8], "link": 7, "linux": 4, "list": 8, "load": 1, "local": [], "locat": [], "longitud": [], "lonlat_to_km_absolut": [], "lorem": 0, "lsd": [], "m": 4, "mac": 4, "magna": 0, "magnitud": 1, "main": [0, 1], "make": [4, 8], "manag": 1, "map": [], "mat": 1, "matlab": 1, "mean": 1, "measur": 7, "mesh": 1, "mfd": 1, "minim": 0, "model": [1, 3, 5, 6, 7], "modifi": 1, "modul": [2, 7], "mollit": 0, "moreov": [], "motion": [1, 2, 7], "move": 4, "n": [], "name": 4, "necessari": [], "nest": 8, "net": [], "net_slip_r": [], "next": [], "nisi": 0, "non": 0, "north_anatolian_fault_trac": [], "nostrud": 0, "note": 4, "np": [], "nulla": 0, "number": 1, "numer": 1, "numpi": [], "o": [1, 4], "observ": 7, "occaecat": 0, "officia": 0, "open": [4, 7], "openquak": [4, 7], "oper": [1, 4], "oq": [3, 4], "origin": [], "other": [1, 7], "output": 1, "page": 7, "panda": [], "paramet": [1, 3], "pariatur": 0, "part": 2, "pd": [], "phase": 1, "pip": 4, "platform": [], "plot": 1, "png": [], "post": 7, "pre": 7, "prepar": 1, "primari": 3, "primarili": 7, "prime": 0, "print": 0, "printf": 0, "probabilist": 7, "procedur": 4, "process": [1, 7], "proident": 0, "project": 7, "properti": [], "provid": 1, "psha": 7, "py": 4, "python": [0, 4], "python3": 4, "quaket": 4, "quaket_logo": [], "qui": 0, "r": 4, "rake": [], "rate": [], "real": [2, 7], "relat": [6, 7], "relationship": 1, "render": [], "replac": 4, "repositori": 4, "reprehenderit": 0, "represent": 1, "requir": [1, 3, 4, 7, 8], "resample_fault_trac": [], "resourc": 1, "respons": [5, 7], "result": [], "return": 0, "richter": 1, "risk": 7, "run": 4, "ruptur": 1, "save": 1, "scalar": 3, "scale": [], "scatter": 1, "scenario": 3, "script": 4, "search": 7, "section": [], "sed": 0, "segment": 1, "segment_df": [], "seismic": [1, 2, 7], "seismic_sourc": [], "set": 7, "showcas": [2, 7], "sigma3": 7, "simul": 7, "sint": 0, "sismic": [], "sit": 0, "site": 7, "slip": 1, "sourc": [2, 7], "spatial": 1, "specif": 1, "ssc": 7, "standard": 1, "statist": 1, "stdio": 0, "step": [1, 7], "stereolithographi": 1, "stl": 1, "storag": [], "store": 1, "stress": 1, "structur": 1, "studi": 7, "style": [], "style_funct": [], "sub": 7, "submodul": 1, "subsequ": [], "suitabl": 1, "summar": 1, "summari": [], "sunt": 0, "support": [1, 7], "sure": 4, "surround": 8, "synthet": [1, 7], "system": 4, "tabl": [], "table_data": [], "tabular": [], "techniqu": 1, "tempor": 0, "termin": 4, "test": 4, "thi": [0, 2, 3, 4], "titl": [], "tool": [1, 2, 4, 7], "toolkit": 7, "trace": [], "transform": [], "triangl": 1, "triangular": 1, "txt": 4, "ullamco": 0, "uncertainti": 3, "understand": 1, "unknown": [], "upgrad": 4, "us": [1, 2, 3, 7], "usd": [], "ut": 0, "util": [], "valid": 1, "valu": 1, "variou": 1, "velit": 0, "veniam": 0, "version": 4, "view": [], "virtual": 4, "visual": 1, "volupt": 0, "wa": 4, "we": [2, 4], "weight": [], "where": 4, "which": 1, "window": 4, "within": [2, 5, 7], "workflow": 1, "world": 0, "x": [], "y": [], "ye": 0, "you": 4, "zoom_start": [], "\u00e9lectricit\u00e9": 7}, "titles": ["More features here", "Auxiliary module", "Case study", "Ground motion module", "Installation", "Site and site-effects module", "Seismic source module", "Welcome to the quakeT documentation!", "Some feature"], "titleterms": {"auxiliari": 1, "block": 0, "built": [], "calcul": [], "case": 2, "code": 0, "contain": [], "content": 7, "coordin": [], "data": [], "databas": [], "document": 7, "effect": 5, "extract": [], "fault": [], "featur": [0, 8], "gmc": 2, "ground": 3, "here": 0, "indic": 7, "instal": 4, "length": [], "load": [], "math": 0, "modul": [1, 3, 5, 6], "more": 0, "moreov": [], "motion": 3, "post": 1, "pre": 1, "prepar": [], "properti": [], "psha": 1, "quaket": 7, "seismic": 6, "simul": 1, "site": [2, 5], "some": [0, 8], "sourc": 6, "ssc": 2, "studi": 2, "subsect": 8, "tabl": [0, 7], "text": 0, "thi": [], "trace": [], "transform": [], "visual": [], "welcom": 7}}) \ No newline at end of file diff --git a/doc/_build/html/some-feature.html b/doc/_build/html/some-feature.html new file mode 100644 index 0000000..aa97a1b --- /dev/null +++ b/doc/_build/html/some-feature.html @@ -0,0 +1,119 @@ + + + + + + + + Some feature — Example 0.1 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Some feature

+
+

Subsection

+

Exciting documentation in here. +Let’s make a list (empty surrounding lines required):

+
    +
  • item 1

    +
      +
    • nested item 1

    • +
    • nested item 2

    • +
    +
  • +
  • item 2

  • +
  • item 3

  • +
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/doc/conf.py b/doc/conf.py index c49ec6e..4e9c31c 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -6,9 +6,9 @@ # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information -project = 'QuakeT' -copyright = 'GEM Foundation and Électricité de France' -author = 'GEM Foundation and Électricité de France' +project = 'Example' +copyright = 'workshop participant' +author = 'workshop participant' release = '0.1' @@ -24,5 +24,6 @@ # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -html_theme = 'sphinx_rtd_theme' +#html_theme = 'sphinx_rtd_theme' +html_theme = 'alabaster' html_static_path = ['_static'] diff --git a/doc/contents/auxiliary.rst b/doc/contents/auxiliary.rst new file mode 100644 index 0000000..e05b536 --- /dev/null +++ b/doc/contents/auxiliary.rst @@ -0,0 +1,54 @@ +Auxiliary module +################################ + +The :index:`auxiliary` module contains codes that support the development of auxiliary functionalities +required for simulating each fundamental phase of the earthquake process. +It provides tools for statistical operations, spatial representations, and input/output (I/O) management. +Additionally, it includes built-in databases such as ground motion models, correlation models, and other resources +essential for the simulation workflow. + +Pre-simulation +********************************************* + +The pre-simulation submodule focuses on preparing and managing fault geometries before the main simulation steps. +Its core functionalities include: + +- **Fault information management**: + Import and modify fault segment data stored in GeoJSON format, including geometrical and attribute handling. + +- **Geometry validation**: + Check and validate the geometric consistency of fault segments to ensure accurate meshing and simulation. + +- **Triangular meshing**: + Generate triangular meshes based on the fault geometry, enabling detailed structural representation. + +- **STL file creation**: + Convert the meshed fault segments into STL (Stereolithography or Standard Triangle Language) file format, + suitable for 3D visualization and numerical simulations. + + +Post simulation +********************************************* + The post-simulation analysis focuses on processing the earthquake catalog, extracting statistical insights, + and creating visualizations to better understand the seismic event distribution. + +- **Catalog processing**: + The earthquake catalog is loaded from a MATLAB `.mat` file. The catalog is then saved as a `.csv` file to facilitate easier access and further processing. + +- **Statistical evaluation**: + Key earthquake parameters which are magnitude, rupture area, mean slip, and mean stress drop, are statistically summarized. + +- **3D spatial visualization**: + 3D scatter plots are created to visualize the spatial distribution of events. + +- **Magnitude-frequency distribution (MFD)**: + MFDs of the simulated earthquake catalog are analyzed. + Gutenberg-Richter law parameters, specifically the **a-value** and **b-value**, are estimated using various statistical techniques. + Then, MFD plots are generated, illustrating the relationship between earthquake magnitude and the cumulative number of events. + + +PSHA +********************************************* +PSHA with synthetic catalog ... + + diff --git a/doc/contents/case.rst b/doc/contents/case.rst new file mode 100644 index 0000000..d413be4 --- /dev/null +++ b/doc/contents/case.rst @@ -0,0 +1,19 @@ +Case study +################################ + +In this part, we will showcase the use of the tools developed within each module in a real case application. + + +ssc +********************************************* +In this part, we will showcase the use of the tools developed within seismic source module in a real case application. + + +gmc +********************************************* +In this part, we will showcase the use of the tools developed within ground motion module in a real case application. + + +site +********************************************* +In this part, we will showcase the use of the tools developed within site and site-effects module in a real case application. \ No newline at end of file diff --git a/doc/contents/gmc.rst b/doc/contents/gmc.rst new file mode 100644 index 0000000..b3aa7bf --- /dev/null +++ b/doc/contents/gmc.rst @@ -0,0 +1,11 @@ +Ground motion module +################################ + +The *ground motion module* will contain functionalities for computing ground motion scalar parameters +using ground-motion models (GMMs) implemented into the OQ Engine. +The primary functionality required for this module is the GMMs to compute +ground motion parameters and their associated uncertainty for scenarios of interest. + + + + diff --git a/doc/contents/installation.rst b/doc/contents/installation.rst new file mode 100644 index 0000000..161a1c2 --- /dev/null +++ b/doc/contents/installation.rst @@ -0,0 +1,42 @@ +Installation +============ +The **quakeT** is installed with the procedure described in the following. +Note that this procedure implies the installation of the OpenQuake engine. +It was tested on **Windows**, **Mac OS** and **Linux** systems. + +Here we demonstrate the installation of the quakeT for a Windows system and Python 3.12. + +* Open a terminal and move to the folder where you intend to install the tools; +* Upgrade pip: + +.. code-block:: ini + + >python -m pip install --upgrade pip + +* Install the OpenQuake engine and activate its virtual environment: + +.. code-block:: ini + + >git clone https://github.com/GEMScienceTools/quakeT.git + +.. code-block:: ini + + >cd oq-engine + +.. code-block:: ini + + >python3 install.py devel + +.. code-block:: ini + + >openquake/script/activate + +* Go to the folder where you cloned the quakeT repository and complete the installation running the following commands, making sure to replace `requirements.txt` with the name of the file corresponding to the correct python version and operating system: + +.. code-block:: ini + + >pip install -e . + +.. code-block:: ini + + >pip install -r requirements.txt diff --git a/doc/contents/site.rst b/doc/contents/site.rst new file mode 100644 index 0000000..44f010a --- /dev/null +++ b/doc/contents/site.rst @@ -0,0 +1,7 @@ +Site and site-effects module +################################ + +Within the *site and site-effects module*, functionalities will be developed for modelling the site response. + + + diff --git a/doc/contents/ssc.rst b/doc/contents/ssc.rst new file mode 100644 index 0000000..3176e42 --- /dev/null +++ b/doc/contents/ssc.rst @@ -0,0 +1,7 @@ +Seismic source module +################################ + +The *seismic source module* will contain codes for evaluating models related to seismic sources. + + + diff --git a/doc/index.rst b/doc/index.rst index decc210..2889e69 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -1,14 +1,45 @@ -.. QuakeT documentation master file created by - Created on Fri, Mar 28th, 2023. - -Welcome to the QuakeT documentation! +.. +Welcome to the quakeT documentation! ==================================== -QuakeT is an initiative of the SIGMA3 project, jointly conducted by EDF and the GEM Foundation. Its goal is to collect a set of tools for building components of a probabilistic seismic hazard model, generating synthetic datasets, and checking the compatibility between observations and models. +**quakeT** is an initiative of the SIGMA3 project, jointly conducted by the *Électricité de France (EDF)* and the *GEM Foundation*. +Its goal is to collect a set of tools for building components of a probabilistic seismic hazard model, +generating synthetic datasets, and checking the compatibility between observations and models. + + +quakeT code is hosted on github at the following link: https://github.com/GEMScienceTools/quakeT. +It is developed in close connection with the `OpenQuake engine `_ and other toolkits in `GEMScienceTools `_ , +the open-source hazard and risk calculation engine developed primarily by the GEM Foundation. + + +Currently the quakeT includes five sub-modules: + +* **Auxiliary module** is related to the development of the auxiliary functionalities required to support the modules related to the simulation of each fundamental step of the earthquake process such as pre-simulation, post simulation, and PSHA model with synthetic catalogs; + +* **Seismic source module** will contain codes for evaluating models related to seismic sources; + +* **Ground motion module** will contain functionalities for computing ground motion intensity measures (IMs); + +* **Site and site-effects module** will be developed for modelling the site response; + +* **Case study module** will showcase the use of the tools developed within each module in a real case application; .. toctree:: :maxdepth: 2 :caption: Contents: - some-feature.md - another-feature.md + contents/installation + contents/auxiliary + contents/ssc + contents/gmc + contents/site + contents/case + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` +