From 6a1e261f1e10e8b1a2a12fa160896dbcbf818555 Mon Sep 17 00:00:00 2001 From: Su Tian Date: Sat, 5 Sep 2020 09:04:35 -0400 Subject: [PATCH] updated doc --- cross_section.pyc | Bin 0 -> 4210 bytes doc/build/doctrees/beam.doctree | Bin 0 -> 59377 bytes doc/build/doctrees/environment.pickle | Bin 26267 -> 39170 bytes doc/build/doctrees/index.doctree | Bin 5556 -> 5510 bytes doc/build/doctrees/iogebt.doctree | Bin 0 -> 29921 bytes doc/build/doctrees/iovabs.doctree | Bin 25979 -> 25058 bytes doc/build/doctrees/ms_analysis.doctree | Bin 0 -> 20618 bytes doc/build/doctrees/ms_module.doctree | Bin 0 -> 2981 bytes doc/build/doctrees/prebeam.doctree | Bin 0 -> 9861 bytes doc/build/doctrees/sg_io.doctree | Bin 0 -> 2920 bytes doc/build/doctrees/sg_module.doctree | Bin 0 -> 2966 bytes doc/build/doctrees/utils.doctree | Bin 0 -> 15713 bytes doc/build/html/_sources/beam.rst.txt | 21 + doc/build/html/_sources/index.rst.txt | 8 +- doc/build/html/_sources/iogebt.rst.txt | 27 + doc/build/html/_sources/ms_analysis.rst.txt | 16 + doc/build/html/_sources/ms_module.rst.txt | 11 + doc/build/html/_sources/prebeam.rst.txt | 14 + doc/build/html/_sources/sg_io.rst.txt | 9 + doc/build/html/_sources/sg_module.rst.txt | 12 + doc/build/html/_sources/utils.rst.txt | 12 + doc/build/html/analysis.html | 23 +- doc/build/html/beam.html | 562 ++++++++++++++++++ doc/build/html/genindex.html | 129 +++- doc/build/html/index.html | 34 +- doc/build/html/iogebt.html | 347 +++++++++++ doc/build/html/ioutils.html | 17 +- doc/build/html/iovabs.html | 28 +- doc/build/html/ms_analysis.html | 287 +++++++++ .../html/{utilities.html => ms_module.html} | 62 +- doc/build/html/msmio.html | 195 ------ doc/build/html/objects.inv | Bin 903 -> 1283 bytes doc/build/html/{others.html => prebeam.html} | 73 ++- doc/build/html/presg.html | 24 +- doc/build/html/search.html | 9 +- doc/build/html/searchindex.js | 2 +- doc/build/html/sg.html | 26 +- .../{msmstructure.html => sg_module.html} | 62 +- doc/build/html/utils.html | 268 +++++++++ doc/source/beam.rst | 21 + doc/source/index.rst | 8 +- doc/source/iogebt.rst | 27 + doc/source/ms_analysis.rst | 16 + doc/source/ms_module.rst | 11 + doc/source/prebeam.rst | 14 + doc/source/sg_module.rst | 12 + doc/source/utils.rst | 12 + io/iovabs.pyc | Bin 12041 -> 14445 bytes ms/__init__.pyc | Bin 0 -> 161 bytes ms/analysis.py | 49 +- ms/analysis.pyc | Bin 0 -> 4011 bytes ms/beam.py | 107 +++- ms/beam.pyc | Bin 0 -> 4008 bytes ms/iogebt.py | 79 ++- ms/iogebt.pyc | Bin 0 -> 9030 bytes ms/prebeam.py | 20 +- ms/prebeam.pyc | Bin 0 -> 9867 bytes utils.py | 37 +- utils.pyc | Bin 8510 -> 8551 bytes 59 files changed, 2296 insertions(+), 395 deletions(-) create mode 100644 cross_section.pyc create mode 100644 doc/build/doctrees/beam.doctree create mode 100644 doc/build/doctrees/iogebt.doctree create mode 100644 doc/build/doctrees/ms_analysis.doctree create mode 100644 doc/build/doctrees/ms_module.doctree create mode 100644 doc/build/doctrees/prebeam.doctree create mode 100644 doc/build/doctrees/sg_io.doctree create mode 100644 doc/build/doctrees/sg_module.doctree create mode 100644 doc/build/doctrees/utils.doctree create mode 100644 doc/build/html/_sources/beam.rst.txt create mode 100644 doc/build/html/_sources/iogebt.rst.txt create mode 100644 doc/build/html/_sources/ms_analysis.rst.txt create mode 100644 doc/build/html/_sources/ms_module.rst.txt create mode 100644 doc/build/html/_sources/prebeam.rst.txt create mode 100644 doc/build/html/_sources/sg_io.rst.txt create mode 100644 doc/build/html/_sources/sg_module.rst.txt create mode 100644 doc/build/html/_sources/utils.rst.txt create mode 100644 doc/build/html/beam.html create mode 100644 doc/build/html/iogebt.html create mode 100644 doc/build/html/ms_analysis.html rename doc/build/html/{utilities.html => ms_module.html} (54%) delete mode 100644 doc/build/html/msmio.html rename doc/build/html/{others.html => prebeam.html} (54%) rename doc/build/html/{msmstructure.html => sg_module.html} (58%) create mode 100644 doc/build/html/utils.html create mode 100644 doc/source/beam.rst create mode 100644 doc/source/iogebt.rst create mode 100644 doc/source/ms_analysis.rst create mode 100644 doc/source/ms_module.rst create mode 100644 doc/source/prebeam.rst create mode 100644 doc/source/sg_module.rst create mode 100644 doc/source/utils.rst create mode 100644 ms/__init__.pyc create mode 100644 ms/analysis.pyc create mode 100644 ms/beam.pyc create mode 100644 ms/iogebt.pyc create mode 100644 ms/prebeam.pyc diff --git a/cross_section.pyc b/cross_section.pyc new file mode 100644 index 0000000000000000000000000000000000000000..82112c1d18846efc656c6f561b73059f87c13d9a GIT binary patch literal 4210 zcmcgvOK%)S5boLauDy;O@^s?7m=GQth)wJOiUJ~FD+)-Fg~kDaWicAhv^TSvo!M-+ zO&pR_BE&C<#Fc-+h5wQRcO=d{zOQC_*G_Vb+41yzU0vN>Rb5?GuKzVXnYYh*VWpX!wuDKs_wX2n@~wj>6Y5Wl)8GN)MKT- zTboqLn4>m^)B`GMI_mh4Iz<6i+Y=Bb{TII#+W@>3?dZWCk(Vg)MKl`1ih$US(s^8J ztxiE80ycgEsmD~X+U7#BhlXzr?=oI<4GkteR4N3h36S+jk!1*=YB|(!ph@Ld+ce*b zMWa$S?Qt}g()S{(2Wgbq7Abeq_-?L^v19116uGudfGp~zc_bP}c_-6?HgqS=E!Wj~ z(x$93$>?mejgFGW+yYv@w*Ixz1GB!Br#4zQQI@Tn%ZqcyZY4YG=E_{6w{=$Z*ORMr zok6kH4?C${@0m_NU5^KaF`?11O^bZKzauh-VTzT)kRqEYZsxUy&(L&~TuetvV7jiN z(Yj*8u2`vC7s{Bl4fVJIL($+X<~mwY@S6YQ8dvw8d7LyZlb(6iq=_NNa8heXl1cdmj}n)g{o;)zZmDGQ zIf*Bo#3S*Ry@$9?2V~cCZdY&j7Egs^N;sZ6j*&7D;;HwX@S`Q~xe0qzed&@TRo#;L z7jhWRBqP;u-5bxT2IKEJ45&Ihj9lX9YI_<-z9Oz*=?Z>IKS=*ZU`zjDLt;v|P3g8N zJw(Eu+<#m2#m_eiYm1)5M2QflpQToULbpisk=M)MW>(-%(EmplLqeb21eukkh(Fvk zHnPuV&q~*B?B_+HDF!-9zWny)jg?yvVFmeb`quo>Co&ydiEnQxSb>Mdr#W z(;`)tLGm=^qKt;YX*45Sym~Xx>L1~)VqwdZEE$~S-m`4TFcM&&4&xLy`4F$6{hFSo z8!R*Ht(Hk|cpkLd5*g_u!}Hi(OH@Z(3iXRkKk_B3`Yx+Z zPWt%WzLOfi*yv(cA85>Xpx0w?$d7%4)B1UOZ49vW6$IfBu5LcY$H>fyt8aNug2TtQMO9jfLEk)1?a+K+N z)JN$fEMb$i4mrjhm~a3YK&FLK^N|N-UP(b^SAuDVQVtz-l-JzKha5OemnP3q2aY*# z+<_SfPB?JVfmsJmIdIy6GY*_p_MGaz&OBCyZC@zocTwJWf#<>tls6safLrG+N11Yz zw^cGB>b&EIT5hQA&f%g1?=p*0_xC7jl|v*P7@p|7=}1DsuY zkP?&8H8DE}$-31G!Knv!r>~8$@9MH}(wXk*+>W?po}=13+C~c!O#7*g??~RdyRcAw z7pw0T;fM=^5oTJT#Rba}%?_fzeozL)?JP3IcEDsSd9N4Cr&E4x`7yCX(H<_R10_W# z5R-FtYJI!TK39mS$-nSS+7X-<^rHexw$MB)x&3+}bp zvePSQoT`&lBMj!9WY17fM`mkKs@Xv$kd$j}>gaxIN=uY@v8&S(Extd^0xN;t+5HUOuy9#4&I$`a1#V*yCvK_p*77YpdsPl-J=lurLbM w9stko5xSVRa+GC;krE_e>I*2$erqhw`AJ!Beabv)c-dK}@i|hTnVV_;2a8H`jsO4v literal 0 HcmV?d00001 diff --git a/doc/build/doctrees/beam.doctree b/doc/build/doctrees/beam.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f21bf63ecfded511277bbdaeff4b349103a7f9cd GIT binary patch literal 59377 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 literal 0 HcmV?d00001 diff --git a/doc/build/doctrees/environment.pickle b/doc/build/doctrees/environment.pickle index ca3fdd6a29c9c4e19764e8d05514aea5d26d702c..fcc5c6fce0bac3783127f3de9eb72a82dfe760f5 100644 GIT binary patch literal 39170 zcmb__2Y4Js(zbE7oCDZoSvDX6ma)m)VS0}c!} zmyCo`tE;-JtHXBRKDiLo+)`yv zzf;*&l4@ndsnokJZIsHz%TpixBl_;}Cx`x&-pq_*d8kx&0)MK-Y}8BTuFI;sE9Gjw zcm>nC{Aqxn9{Mu|GgI=lnm=<>W?sEo$OTTJ(ij-A2#P#tl)>(%Zp41w-r`o&5o2ZA0j9j9J^1 zmfGeNOV^|sd1551YhymQ7}mCewS}OcL31h9N4u|RR0^zgfu8|a*M*koRyy0sQe9f`+ZS5+6rDEtimZck- zSQ-LLGYpDWv0-J(4gFHgl$T~|XNswEnyHbPnM%Z7)i6~9Q%jQ^(u%zD@=Le+KKPT+ z4=jIf6MuE^Hxt( z*?G2M=Q&_!G1zHoUaFPng0bg?{_`zk_q8y_I#a5e26jL>yFc__5OelGy3V{X#nFRl zK3){nlo!WrzQl0$QgBAIM9$h9*~`G&%R~Pambd#`c$*DO81lHv98~@u3jJ5c{JpBz z-I;aES$8DsR(0{w-@8M?2 zG%{Vq>PQ|Pe!iaf-x2!nL~!U}O1=`5wL8B?s(VJe{15iF!j$v3jOOYQpws1l2&||Z=6^Ud16(?i zFZ&hSle|+!YJ+2nS{a~;8oS9}IKLN;3Mv$Ml z$Nv-|wTubm>@8aK?rZYHj{j-Ee8(BrDb7 zYE65OumMrI`O2^Zhb{C!-|JF(GonvOJ)#i$U+8r|7c!xdnOqwU{Vy`^f2nud>00ZD zYo&f|mHm)m;o7PZ{8pzDROJe(j$D%$xIK0HjgPqlYFdY)-pl{;-fgGEM1tY|xN@;> z^$(Y;gZXk!B9ejs759)@v)B*ZtMzmwAP*x!Kl_t@`VsvoQlp%g+%5;IMThBs)m_ty zx;&lp#ymJI<;zLKe!f%Yn z9ST;e(jfQK-=?kH+^BD%m<#?l-Th4x-Mj6iIGZ+k!hO%7cJFf3-S)rL&SUr3$WGZA z$)W1h{BO78(OQ_YwPhM9k>iWN|4uvVu`z0?igMDm>)$PWcqecU?;fd(#-E z<|)DzRT;_GuddXcVN^CKR7!jN@3{wB(7R*wbdA~K4AYbEuT@JGw43j@E2O6*UVph% zL2FDZ+7H?>lN=$P){0g{LtzE|VY_IO93h%93+n%rLsbYKW(d}NzpopB&e5$hAK`F_&;mUitdA{YKhTV zpC9yp-fCNZv3FY{hYodX6UUtXFWaiuad8H1bvYO=mPY(vwKH{cjMGU|SD^COZH4@G zo3^@R5{SeXs`oDFDTk8GMX>jXr^h=|n-q-KkgDvoh zpmp%jkLQ*v*IefR-re2;d3;Q{gEH%*HOK!$JNGB1k(!MtO%2*&;Qz55E$J@ORok{+ zTDW3qSBZ{5;Qy(;j(5koc0w;ys{$+a=XSi6FpGfb zP|vfle{IJcqswp#Zq@%An53_cuGOs;_v*m4vkCV94$2$^>io!F9Y-3-lw$pVw5fGb zT;{Z_{C^_j6t!`h3;Z{y?EkC1T#4?JcFDetCLev_ewoq{GwEO3Fl}8gG-Owv6G}3*BZ=;@%T5SY*8$aEsNdIm|h=^6`X(2V4Bv_&$5m~GDBIMrCaC7Icg+on2c zRcd|65zKH!)kcEQI+iu@7u(uZ&=?uX%cvY}GE3X( zL_%#?STGpQ%P}1pO!U~M52u8Agg}n%$YjzRHQ`}-Mm>8ut|L~`na4VW>nFz(xY6Rz zH8qYFZyw$A<>XFIAZF{}GZ_aYYPTKx)fG9BIIZd)Ls4cRCfyxN(^+=585M#+mUqNk zl{OyDRSQ#5jYCkSq=Q(X+9>Ev%L-z(wuvUBq(%m2g+hPC&Y@SUIW3Dkpc$c0#?xnMFCJW4_DBmUHB!!F7?| zj<`)cx7R)n+oX?}t(7mat!?cvJqcmFfKxl>o%C*PB#M|-s8|tab(G&BN)>eNl8MezRBDOg%OJZ?1*G1_kcx&@s9z!RMH1@DAkH%iIny9U9H5uoo zIkfeO^M4z3)@+L}XBbY?hB7H%hpKG+oi)U2Yi`|Xj@u?e%wqo@UCy8vSrl7fDKb#2jikl0ty6R`*%7(% zSK;$M>|sH#j-?$(*CPVC8eccLJ)1JKa&|9>JOSUbnYmcUt5()W8$@J4KhCk}m&kA+ z8;G2loz7*Wewu+TA?kx~(&(%brg!U`Wphn7^Fw1$7g)@O6fCbyk)R&RHAqUuxAdj6P=Oy7?gI_zhz;Lb+BG7VL9Z?sM1dbJy*22kv#Z?{kOuxs82pxX<0c&poiu zJ-E+3w6CGdHo6E`z=DQTEQxFZ{sd6B($=I3L`@%>F5?5 zFTX2qb|=ZOfjF`SqBe@T!iu<>+CbT)z#36PeA^ZO2Q|X%)e;Z%GSiL7WhWxGCYVoM z>s1+DQbrPLzzBj+DtPv0=G8`Z9VURPM$3*=@pV&Xp<5p*yH2^58_WkewX_VIRgYm?z9#11x)aw&7<<5$!ES2f-5C?Q|K4rdsbeIrzJI?2F=4XnVEwb zm6s^UOY!W@Ox|&$ybN!6$;!*|;#jmUw1=EiD?!%s3M6duqAXW7v6e56RJoi2PB9YC zIeYTxv!S(vK-p(eW@_zfV1n!+<~5^H*;&C3R(U027G_Q)5=`l%G_OKRD6eLEB(kNb zvsJXiT+tcIH_G)~v>`%XqoA)%kvcljW1n<7nmY$P5Vgw11t z@(G(~Hm#zC9AYZj%uHpPJd9V=mSy>3F=zKgK=9l)>S9MmAddjxUR$QQTBZOl#b90n zc|FoXc@$5Z;k=rl`;}1`7;d?dHz18$Hsp;2iUe-j<}k$P$eZxJFHSJz)$G0*332sW z9H6&Flb~6RbAJm-rZYdv?$$xSJOV9ZUIO#Dd*rPE%*xvcZmX-x#hL)!kSuRksCVF* znQb=q^fNzsC%)t@hs)4~(`SaY8g9TEptCnlg}e)3x&n49{l>8WRtpl|3jK%jZlqf( z^G&NyjPQGqn3eb98JUz>W|A6JM>nf!tl8`uGdCS(sgW(qrQ=rvkqa{jKg{l20fqc$t?} z`x5G~e3A*)YR$Dp4A4n9@+qWwY1S5N#-i~>v;0(e18+<7F z2EJ*#HEVw@r0LDIl9CN3~-FjaBCi?pnK&mem>gdV*)0(aHR0ruBOX=qfwk8g2d=G!q@ zZcs`^Z2I{DF(Se1#`j?d{>2`&ChYHHuOdGrzHUE`lH^CkLDP$i&pIi(QuyO^W=AR^ z%(9!|g{_!B0Ze9cf4BS;FIJYb1DN5u->Bl33i7iQ74J!eqQ8fNd3zb5LlmjkqZj1S z39^J1p^jol0|rA5>d#O)kFn>^ksgb{*qX=z`vo!SfLVI62NlyxF_wd~K#}|s2$?DV zWsdxcsHXmV^s_v=S=4}O?$)NtubHM!jH#Ahoge7G+I;3hNE~l*IvsN|zd=$czs0i` zKYqv$!Y%wABD(CbmC^2#g3OF)1w($%q%Qb<(F`3EryJ8Re_$GS0$))Y?q@<*0rSDD z2BF}c@<)rf0WJ{QHqslGqu9@qdgPe?iO})PX?OFFIc)1~t`_K;^CR+SAjS%q1ver; zs!jSY_#XQ;^Aq!F{NTS@=1g~T6-G1GnjUFeuXRR@qW=brto$9%=0eaf&qYJ6e;_rs zq{*gU z%uypA4awyQe7*AGne^Bb62>>B(})#WjIYq=$z-D2G8vy!hik^?oPyM>OvTeOx)d`$ zrkiN-Ev6~xbb^{{n>j%Zq_YQ|Qb~WAQ_k_r**Tr~5}5&5YaudA6c}5|YYjN371ShD z8kq@@%(O;*Xw`W#i=>UXbo^uON#tuw7t-(bj0xGsB{mB{jq1;#iZYup+om9qp7tEX z(4uC>jcG1FSoW7CwPvtUDWd&GWiW10CNQfQHq^F^&ZE^W4YBQHAp-88u2ZfKU0|V@|G9$rdfC=SjJS|@d zVcUfTHK)M6S#cM3Oq%clAJq<%3Y?b;Fm`g}SR~tGdR5eQ8_CSG;~q1IA;+a4GmA}k zrX4t$<3?*ao>{5&+ZmL_b{nA0IMmf%!ow=f=Z+eA5y zc}E3U9Q8D&W5#fuGZ6qr7G^Ng4}h$!CYUuV zv3Fo=7I#7=)#?nu#_i8IzbcMo3S|u-VrkHq(3zkLCWD+hmI7d_8nTvDSYx{OV5o)h zQ@uVaXDVXEM@pkR2XpWhzqL@@|!TrERRQOEUr0d z9@?U{JQpGu#Gf>>WS*^nLz7)`^gL$@P6bza5NC=tTkqM2+M(c$CWz0sMxu|Bw79;ZG zF9$$YuE3KMCB1Sb-tf{VSK%d|D4A~Rvs{gjv52AuroZ|~MutxSNNk@{J%?>4k-s1J79%M^?=LGWEh^7P*V$pT7$=k>w2+R~YR znet=vzX#(&+io=TLE*vt6i4M|q-tefmJHS+^K2(5@&L)oAhVf# z({d@`MJG8@2E7hX3r>_2k!FOe{u+K69{*fh93?Y^rxot;I zB7!~fFhG;~pB}bE6Gwr#012gpCw?hz{i#4ae8|d9JTsHMyp-{h$M3bby8BUH(Vh2AZ<~I-@STULx_KQxkC@F7y2w~N*GRz9LeImZrMFel^4tz^Z* z-c2y=Y$MqDk=qjc+fQOvv((>Sg}z_HB&W=hwCLhF+S>pT%99BfHTh$WXs9RiHi9`_ zIIiW!NJVZ3pw@EqG-mEvC-m>Y=gf_6y|0rs5t#_@mJ?D(Y?A{ z8VpuPn5))ggxiiJ#QC7^6 z&t8JhCYTa_3Si;}$`vB4dK-I%AK{_8-bF5FoOsBS?(sqNRX)(2u}g~N&?x7 zEz&Oz?c_tfPm}=i22b0e{r|U zb}F+uK~rF>h1t80^evCks2jf=sz>vDPet-RtG2~jUK*{q&k5vdfQThx=Fn5CSMqcu z>l}JyIQ8e})(kheD)0==BAVAR6C?p9U9lYa%obcMEXEVA)-`$-U_yB|AtOOYh0q_| z8K>ttNX^P~@yyK7HDxrA=OLDOJlc`z;(uwV1WiAm^f>cx&HX}!;HVV+5^c642S~3A z1F6z2aAPp9d_R$*q4>fkV}yx0kryC2wmVCdp6*}f3OroXA{^ld05T94B&AewMrd`} zg}e|jv5kr51mcyy2g$-+DZbk&w-Iwx&m3-yx*Lb>DbHSVJ*W_klc&)L7wjluuX{9eF>JPDG zipMD>PiK_aWIVPQkM+UR>hN}^a?Quvz;E{Vi^IhlZd3xKlnRy>m}9Z2qvOs~8RDe)!@CPY?U-p&NObAt)CvB^7-;&}07d1e}Z zCyiB|cj7ZP^WYcj7`^eQ?eZ>sY1$zWb%|K|z+RVkGc|oaj`{o^e8%p8_af+Z7liUY zytpevc|XH7p?rYhx==pIa3GWqG29-?hZzos@)3rOP(I2q4CP}C_lNRvh6h6V1jB=& ze3IdzP(FpQk(tkZGN^Ev@-p4Vr|~(I&)^9z1}3{Ju{UPTz!Y~K{s-{B9sk4l-ar`Q ze?Pt-KzI=UhX$rJG7HpO#|R3IK^-mmtdjg3Nk+R9BEM8Vk8jxTBVS;+fSV(}h_}?S z6Y`}9;xUFR3Grn@a1ViQ_LHwf0AFROB)(<=bQhz1Jp%X!!;lodNdV3p1Atqv1xUF)uMFLDRm4eoaL26xzX-G;l%4c*(^{qBA40r!6Qp!<+} z$bGnxf!E7*S2(ity{3VX$9C?{L2lDYR%Kzjq#1~tU2Ze+)*{JSabg$W*06cZCK%6d z>hE8TzmZ_I{$c=&`E!uMDm|C5>j*oKu$+B1u%+tiXeTb9=SR>B2t7dPg@m3LL!14x zfLs(oE+*u5LM~~BRIT;{^2iACC_)Ysaw#GCgW;IlsGSjfSp4;Nu9=Tr-X*zU~w}fp7as=|qAhMTeN8ozEcEjWh~sIiU{_x`)t7z7SMg`V|rI zN&+7w@JR&b`cPb^G@mC&@TU;|5aD|X&zfl9v3(Xi^hIE&BE+d<(d=PSPD4DYEvF-v zSpc)lJ&$l=bp17uRrnlAKc2mAhzUu)cx=TU4V*`#;L&z?G*pheAS-7m2u+elJL}O> zI_}D>tkDG8B9G?Pqxth_E*zWy!e!K)_F`)R7Rs4;VnmD;Z#hdpoK0-E?Yy?Z1~$Z* z4M$ya4q&jE?_5PVPZ4km8V)g&^EI+G>n_W>M`zt*vMx?w!|`Nt0TWu!UgP#9{swQP zOCE=GkbFFXP%cy|5y^ELX(id?F?UkFi0O9MA;uT_6HY7@njKPH#v7J=&Fzwl0f;Ov zK@iHN#Nyd)2I$0M7}`)Y>&>+y8*1Yq5LhYTPHWdokknLQqvG{^SL zic26HNlA&6_ z^=48#xInh!6Et`Of>3V6b1*X_a^kYG1M%KX9vlB&$s)2zZNOf+N#AJ-_DT-#PG-90 zWk$q^N0OO25vS_SW#wjk>s5LwV*-~qzefiQ1Ctw>sazM5JOBq~p< z=A1~`g#@dO-HNv-jW^m6ug7B+EZHqgx9YeRkx-tbD3LrvjkM<5<1s7Z--ghtjr z<#xr0(C=WRNgav7T**?PEQa{$tp=0KFo!!Cc0LPJo`N(;{w@Te+>NJ|JXvWqizeP~ z5gUV6?t7KaJuw}~{a%fXUH*MY_ad9OU(xT2(R(}+^widE{lBwy@u{O7?A=qDdD`A3 z_98md)Lq%p>ZMeXHWMiu^)!;+xp=}XTEoVVZ6>(I&^-?@y~Sr_948aX@bo|ARY&AR7hU2{gNJb(n-9$%<<52o>6)Df@8V-~FK zFJ`)Jk1s(al$R<>)SzCbk=A^BJZ44wmm{?8@fCOv<)C6j=npY6MtfX?BCsrmIF5d8 zc3{X1b9g1gan6C2R{;PjeKmqmUW2D?l;o$iQOaxMkL@i}UZ;sx4Tlg5WeF|s=`F^8$3SOJEZN5p zT0wps@0cG`j7X55WTZ)u(^QZX6(BicHlJd6f=*#jfbwa?A-K;V2<5YQTEUTrF$L!t zY0+_N@~1whNbK+p0G$By&0S~f_~$jNFT`0vv|rT7rCE1<*1at2UY>Q$naA=aBv_R^ zrg&dY<9($gUXRBtSlF*J-Rk6Ph=lTWMTvy^4UM$s+v71S;(rsN)ycQ;j{U=m5utyF zktUr?VhKR+3b^2r|FzDPsKwNf8Rqa^hU1;c}@kfE zry&s{osJ-s8O&b&ksgoSjVV&k$g#~H%~T}XBLhHtWWKorwjIpUth(Z?AoST9*_?H+ z$+}O>y4Pl1bI`fWL4sA*T*aH0#+%;}ug7B+EcpV2R#^-29?Bxch$`@6jkIRl<1r_q zFF|OPbtK+HIZ81i^reh6DJvO?46qO=iXpzG)$<`U%wZYBG0t+Aqmc;J9D^W~WAU`A zAunx~=(zY}2TOE(oS5o?Pl!J@^(iOnXLq~RS2yCJEXOmhrac;IKl5BxAi?TurQ)5G z#yhzqUXRBtD2`JQT7C86J(NDhhy;GBMq0D&@t70QPeW++bvoWdS)~{edOss$=xaL< zZpZQMhIqbJUu1?ktY+AL#=V?@?@-km1fi_O)2fPWw5jUM_+tlEofRjhRCRXzu}M|u z=x2A>s_ILNr!xmZym zVPB$=)_i+BW<~r<5n5fX$2*RCP>cxuaz@6`)i91r=eg;II8OU-9#xPT=5PhWagY9& zD**zvU4ny;JOm9Y#y!ks05}&^Tn*qzT4dlj(9yDv!EnggjRzk zyocf`Mx=tB8fne8$74=JFC(-X9Kk!zP*98ry~;?F29wUJF~0F5Gt8mJu;ZN;;v)$< z5(J?Hcv>Bi6QiTp=y|b)^J25+MV2hIa<40;MobA#!Y+;6k#+CPx=+cvcV%63tA*@F zf|dIo#T!lI-O>@S$72>O)~!spf`1Ysp@fPON$xg{wC3C6F)QLf8KD*Y?RXF64#kMj z?_{J|@GJr7-JJ|tLQ|p^OGajx!&4Zx+}t5|;Uh$TH-b?1;%P-r9$IaeiMN}rWTNsO zrE_mg2Lj)xk+BQDAL(|Y@;*g>YK-3Fk>LONL}k3uqQgYx)0lblM5X?)3CHI^;7wDI z(YlP$L3+g|QbV$g@^lj2q|2xmnOyCZ(HUIH0KBK zj4k2|HS+YV`;4sn%&hyYtZOcKkq41rTjq-t@5O1nmvqGI@t6hc{Y#l{Tjt9U3FYOA z5;d(?XrwjY9*n%zw6si=0Q8=nw9NgcL@h0o%rJ*nGaU00 z8+i?qp{&;;2<3Hn+BQmVTHB}`ia)kDRC!nvtr8wVER@&d87tvYjf^dfH!$5QWpdy67~Q zFhT8*J?8lyhGWeoycdbk&HE5wiyfX;H{{NAS+PPqBmEY);sXk3MfyP{^r4s#4Cse7 z(k>G#(vKkBiu9w3{;@Rr$HzctPAuLh5L%Ib67Sg2rx=k)Kg~#sNZaQUCMZ&}$2>p7 z(1^5sF5$CCgh)S!Ae7JJX+=uz#uTY%pqxuUzBxUoOR8ePV!|WSY>@h@xGeI`&vi59*c{BF9Fe<|L-(|G^sh}YvW3zqM{Ot%`C zg#Edp9D!$??_`a%=G)^jE8NpUz0L23!zR_Txe4AycT9-kQuXhZzhf ze3_Zd1UQs23qdGdcv@wUyQm!`JEUgEAKM#^%+W-vl(~q7G7ryKIP*0!ws00O-706H z;x9_$FCGJ*S+VF#5L(?FiFZt8Dn?YjmujRvd*(#+WeBZqj>dZ^$0$aGek>zRx>>ja zyXkT2LcWZZNBzO&M3qJEnB{Q{%_fbF5vlGihLjwSG-&1o1fiUWr_~I3GtDGchi7Ep z(sy?&pcUwHCDaoWLMvIJk#>n#fv!Zl73fKdesUW9lrhkm6HC{N&C_ z37wP34{t2#Sj*F*TxPM?C)oYK<{r}24SI)@BKP??g-T8f8fd z@TL(<0C%SFO0)5)xc}Cg@x+7#YX*n!(M_0#LI19zUz?z_S;Xji+2LU*{8A}wNhr|N z#1x`y0D|#}c&n`}wkC8g=s+iRa{S>)o^45H5|T}<*?R^K!`k_l&UFc$Gt#VCuk&yW z9c2k!KPI8*nzF-iG~E*7FU1^pAS>HRF{z6;Ai9m>JKWW}oiftjHubrWsakJTR+ZlJ zh#qdu90%>^inc=;+n$wdGh;WAG5RK~<5q6X7e;iVtv?~_^Uky7&M8+)j9ej^S4@tL z>Hc21x;a7PEfR`04$?mqDGwya9mZiM#Eu=#0%F@vHdN?LbfSa1Ly*THQv2NBDzPH4 z@@^w54vF=8S_F3KdIwM^8rJLR^ZIS+hlp!XyMc2rUi1r+5>sjz@*qzx5w8P2#gytS6SAR%*3GnwXFl*c9K zeotAdC$wl6+E{{-z}+n4Q~I@1Y9y2>cAgPpuXY(1-FuuZ*Dg?S+=E%!O;Wv{wsF#m zZ|Leo2yG&1q$@0~J<5$zpqmoimwPyT_jg*9(FB=JR&s0J;qbj9ZT`1tSq@>*yl@KxmCY*gXQkWQ#i!7156CyD; zIIji=QcaA|>6Xymgb>?hdgL^24fGaU3il)wIOCJP!*@cwxc^nH-7nx3ojQcZXV}C+}wI-(VzqP1&mZkd=a_oySk*F6IOpK$iDMwFDNT?OY z)wvTx|AV4GEkR!n4&oU|PC#}tQSRRr?db^`XNaslPUYN8DK%3w#TNb<2@O`#ri=R~ zLg+M0=$Q#2wFtNx567eNcGroJS!l^TDWofr#1)DY zAmQ~|KAw|Mq3utotVtW}G37hQ(s}M!bkoF&|#g4$~6($ zxPMgf9!LmW3GKkqH&1vT>ps_?^H|d#R)Oao=2QXm8ZeMPniHM_bXb&mn4K(#I~E%CqT)Y zYPou8LX0NP5^I`JZ>v#BZE*jhEWIqDVq5~Vem9{){YELgJfXm*XYXyCNLenhWqCzH zgR^ct3a>l?0`9+*gM$e+-SZYlqPcx00`Ml;+#gEtbsiPDPo(_bOiSRE34!y;K*wu@ zCr}=*$5MP%LXn=0PVJWSyBs~lWCE1jZ>eNnosgktQ^oPueq$n)-~GDczb3(_Wb`WQ z3FPh_W6SZ{gn-U4o7+n#LgE}t;&llL)==y|ujv)M6CpCq5;>F*VL^i7W*2X)I^zCH z#qe+oc8h~J7Pi-AvwtKZphHk|k@y6-SuQ%WWPV*yicfpmHeD$%{|Mbv(m$@tX`r!TFJo8L<4PWoS<+DRW?mE66 zc%c91qwWA-AMJbFjy`ugUO(4&>K(87mpja_4=#PqR z+@8RbPnA%&CA53@ZXDXgI}();PIp`lz+kn!mBhN-JT3~;Go=Tn;T%D1O$Zu;diqOl z4{tizmzkpn73a*&FZX8Vl`840CA<)ugfrtGe2i->S;%;oNw5ibB7)iUhq?B!W1M$h zbo4y`%sgHa!-HrnE4a_ajUxR4d+S7Kz&*%)~{(D5^L5?KiIgkysN9-WvI$UE^J2V&vm zt#=UuSEBNAfk56(tjwb5Mhhqx^l%^(4i0}0QubvQnUN%pVmDV+;XovLFLC63q%%v8 Q>gLZ(<^71`_{IMJ2W#8B?EnA( literal 26267 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 diff --git a/doc/build/doctrees/index.doctree b/doc/build/doctrees/index.doctree index 071301113216187bab885ddda2f3c15608042005..e99ac39fd33a6d784b46a8700fc427b1ed8dde62 100644 GIT binary patch literal 5510 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 delta 2918 zcmZ{md3+m36~}ESmL=JeWy^MaD2d}-%HfdE)-Cy@eE64-KOgbe6w_8+ue2l0#;e_Z zGqbh~Y}EiUP7Cx{N-1Xx1SphHpiqud3Z>jvxyw;n?wfMo$D5I4NBx99q|eUVH@|uF zeQ)2)+M#<7-IMHV^mKJ~i7H&V23HjpVmPq9WwRvU>NO}97W%XykhUY>nl&&A3%zLZ zImIc9YhV@@;y5;4(^(a^fYKV2DTy)LvZxEz88TqIWhby`#dfFwT7*iTUCFLy*RVxa zq9k5xn01T#l0kL8Ct&;M6D(T{N@h@^L5UqXa0*xmcAkxsE;hk>*d&``Id+Wg2;pR& z?J2UoMYg-hW{R-HhD^4v2o8&xN@#@T(LY;+TAt0JjvIo9It#-X@3URYE>kgWy4GdW z(k!XieAH(x{o_g>I`mPxLzPFn;*(S2^eK=b1kC^^3v7QuFFV29=!*Ev+%hh_5<aSyUu_lbcm;`YZ`A zLG{xitf4wnO4qiPHhkcvN@@KJc|6}c;l5QerpJ?YKo)8 zZLMhF)p@d2E8os;)+H;XHLF&74Q*D3&fWyOK}Gsnc2E~>n;pCkllb}&-hjHg%5KH_ zV>uGDUB`AQyiu2<8Cg3L75v6qm_mFugtw~b zmD3%qTGL$Lb|J3YRJ3nris@Y;yrVtwY-^&X_|81(Q~Xway08Vy0-xE9>+B}I!**08 z5k1;J+R52=$&e)c54s?dNUv>c&i+ObzDY)&;@*7q zts;DzB+9llrR})_9xcLmqC3;s#&-*3SaQ=96_3{pTvV7uKiG3z{h3N#?-{5B+{5*tTm5t3M zeouPw4PS*nkO5v%Zv-_0?!X^Oj!Ef@<54WLZRejz!ZIaAJT)KwTtHt9&T!~5b>J`2 ziOl%iUyJZJGGJia#*OPNz~2ib$xH_i5$*Sn`CgK0h2)q*V37ZeuFveg=wBqGLK0|X zsO;db;NPUzqNSh;|0$3Rt(B*jA9%9Z}fO(y2`t{yShkBNtPw=R)dtlT)08a zsH=SQ9<*UL2d$vy8yjUH_!hJy3_NaZx8k*&w>F*AD<;P?tBUJ!YSwsfbk$JqWK5~Y zk@4)_qZeDePYs7?-Il6oWFVS*vMj%O|z zv}W3lVOkd6SP%*CkDeIXGcbTIXUG=nF7s40G(0wu)^jqn?t7Rb8_S5}l}7Nv=vl)P zjf{5h7hb^26whpTi4W-sX_eK@s^G)gI_L$`52S&WqK<_s&!U<12C_1H86Q#4$(9t> z0v~NE*>1;_G3A!fQ)Ukf-0L=F7&I(fsOt(=ohC4@CnxaZ!Yf(DuJeg#Yj*E*C((Qc zE7&XKmDP#y&Kh)HRk?y}{Vr(SGIHV_Q709@1D;(w0b|S%L>5V`OIRAilzaYf&-u zWs@I@ZX4Nt@G!nwC;i-9!EGya7N13vYC^hf+pUBji5?r-k$swa*TrT+eiWbbY>2UF waC9!jN!$pyUhVp9`B z8tEa8k_sgBP?C^@gqlDa34uTgfpijD_popZ(y z`KoZH*VZ2 zDO3xkp~PUVG*B&+OBH8QZ+c4*hATrOg`VL`PoX@N@2~bqKASuA-~&!LyyQ$?mrjhr zadfSEaA7E4a@y9Vw;r9Z7tT8E>(U#6t+1$^7%t~(#e8D0ED0KQI(pNyN7vv?S*P`& zdyVy&+M7;}E_-}6TP+MY)7HfrVPx`NjXT%XQZp;H{z|n_MVQN_OfElIai+V@j8x}H zRx0_-aK2K>4k5NP`mWf_|zn?d|vuk1pdIK%TtxSRF>CDg=%(rC0i^muPolV zyHc&?)-12=(w)n%%ooce%X52n4@tQ;k{K#gmut6Mj_$kMC|mA#ze?5FCN;U59b$Z( z`KigCZ_c)9mh5lL<(cjK>w(m-{AO*H)7eNKgux=^jSOf zSv&Sw-F-C+#x2j}p3N3d$gjrWUeeOc(hJXZ_Hv!Q;YwX|4)Icv^!3=U}>f2s-iV;o{QDNERdW&{W$9e9X(rymMHL zZ*6`P9BwTc#inxv0=~?3j`Ra|poZDvz&Xlwdi`Rr>8)+)$EpUAcCF)G=LFWA^Y(Gxe0NANZ>Lc0qfE!Lv`3xTpxx_HfzFdqop?oQ)Z}E> zImNgf?mEZEcb!5hmtWoCoC+70yH1~9RXEejPOfCWK14X$XEKD)4MQ% zUx z$qA%7gY2QyR-F~;Hn8~9v{S^)0j)|J zwu&L|oKjb0{E;86LR}V#Fu$18ppDC0Upv`mEyz~ed{+Ic7 zxZ=;VBWspo2v*Q0SQL~8n}=3-86arf&PKPL3L{u$D?2r7ayB)|Je8c4%>!HVBZ3FR z02Tlp&Z_iuRG_I{oz>`vYh34y{_u3+oJqB9gSBE&9|UXD9Sy;8+|)#!@13*obecF= z5Ii`}ULOwrIW2rg9Z zCNc9b9v>HBY{EvGwL-tC23uQ zPy_=aFzb9;Bb0A3A7uv0rK&E|KLhWsb)C=p>M*K99n52MKF3&mK4xAII@cE>YZLl1 zB-s(G!}%hNT<1F1GX(5`e265tDoGSdBeg0!_OAzs+@SH`<}*j;NZXbrZYXo$)#{X1L!4MR&W-x7d;#O~?3y zt%5eZ&Fed!(>hPyL#OYJT3fVi9If5wb?~|#=YB--+phB+KN5G361)C#ZcT^tT{!iC z>wGV$-S?yR=pF3+z+zu~&~<*u8Z2&@4-#E?{47XxcP9=h01VQ7K8dPUzM-$8K0k`n z{{Zzr6rJP!l^~Rtxx#%I4m{#IkNP33k8OtPF>j@knnJWNk{>7x0xCYfF0^hd0Gq2n#S^$GFr#{>XBk$ zpio^Ot>JGXbE{vG{P2jCtrRL9&NFc4S=ae3oUxu}0H2F%o2MAC=TT|jo!_C>zjvKK z__co4L~2H}0q2i~Ff|+k=LHSm2B_Ks==qcDyy)ve^k8KoL;K7*?@u@{f&ORL`AZ{x z4(OxxG3T!k`_J6AT;Ofwp#{n>po0Yna7nW%!3j9_{@czQrSJDk8`7@GzO zJh9N-Y6I1LE-@(OVI97?Y&F}1&LNZIE!cF1M%tJzc^gWl9TFFwD;-E&nSyJi$!t2T z&E>V4Wm?Menn5?Q{(xx4R15bSG1!|v1 z_F(GLxdB32uqrDh*#`9Wp~+00-DYSpwWTIuX2dE$wxcF)TbOMo z*&cap2&`GE7(%*`?ZvWW%~FG7WC1m=AvmAxEkk4n6g8t8Z~E$x9YI7`79w$_8&`Bo zTf=~Q_h?=lMi%itHGwm`EXKXfI(Qo@-H3+lgnT}+YX*O3rb~i&$S%mEr|gQv zmECalM!iih%zQQ3b5M3SMJ;>6IaBl&|%ibtjN}8~{ z)d<;TKe7zlOhSlJ_E%j%S_}z2K(6jnN}`mOd33-O1CG2N+p0YUXs$3?F78GgOytsV-^LN6tz8 zOwB_qBrO9dMxAp=T*>3=PfavxCLsW3i*5`m&yeBK$&CYw_AM=ot4`g10X*KENHMXI zhv5}STq&vo^Yo;dz_2&j0gKD9a+X4zW*qz7l1N<2N^X9#dOPii!idtjSaMXI7$kH6%togtFGq0 z&4`%34ahBPl=F;$(+>q7FT~q&rjjBK`H)-Ig3g7uxT@)_Koexoj+IT?G|J9;j?%f1 zI~RAZoTvFHu(qkYJ~MF{F6S$6#4knFasm0xc3K@+%Y`UKa4tgP%Ec;g`Xa5HkZ@tX zPU-6dI*eVSnPy{2;}fBCfG|BUiq8{(%OOo?1ve^!Z~3y5&=^UMTG=T@j+ zz5uq+I@#VA`B4|hHB3f+4Zlcc;Cs0aH?CZdD=K4CCu4Mj=A+@Jw+zsYOasI(UqTjv z`7#n$zJjYC7-~0xF<9SfK=<-h75G|6z>7=>=F8VXhVq+~_vSd>x#(8$kl*V;a*NUN z4b}0@Kt~AtYh)Vme|sNHyEam{P<%a3_)FUHlT@i5%`3G$6_k1?T%Czyud-jm29{y#%&k#lwTW( zr&Z!Nfkb%p7(4adGusRq6r`qvo>uY+Z`5GdDuhU%RV%*@tmq%W14R0qmbXNt z&nr2b?nVtl>vF!5GzKbdS5*2t$j6}4-=o--Kd5qjtT&+2KWcdxmA-(IF;MBB$TDm* z38T^%RToj|OSp68&zf)iYcVjOR)}w7RES3D9#)t&RQer9qx3}nLI*rV`d9TBi1cqP zY;TQ7{|-9(;XjbL@=shF5$VgG_*(rta#LfLqz(aIr&tSA`UYsI)qjw<@}??lUM15ti~)>XqSA5rTY)PZ;K~_A>y@+{ z9aB^~UO7g0Y(wzCG5+DbIbah&f?pGnxH3s~HTy+Rj9)~ila;g0aO$qR_BV95M&}fb zwkzA{&UJuCQQ#ESJT;;j6X~>;dXhFB;#}Fu)J$mVkxWMcsx||OD>HHRCqEi8lMMi< znPn{Ez*)+NYd#(wigrbsUKIu(HKO2o2Kq zyE;}krvn}$+(Lbh)Ul2Tw}za!yQnH=FKKr}#+BVwgzmxo9-4`orzy(s$&}rH32t0js_X{h>99<6 zas8}+_8sN#z9ERWmuiR_q;E91x6--P-3NEr4Ay)iG&RBNeYG%ltxG?tXFsOl`D1?+ zpotDZf^A@2{rQ7-%>2;+>kcyf2P^*}A%0r$7Q2Tk@vwjh*A8bUSjR?S9se}Lh{+M) z3$0}B`eLHRA3lid{K_qZu;RKSapTHSw28+Gb+S==H6M*J-DPZ!W@^@<>dP_6BQ(b% zapgE%{m@Xo2~7yt5leL+t&5T9$+Dzm9Mpgf+sa;l`B=O(Me7$%>w?`DjJyEhC&|T1U?P z$fCXjNLerXrgZknnBt^~)a9&vl4XXxh0qqWHLDa4vU<-6Fz(fiK)nXeh`X@)~ z4Ge}jS14yO#7UJ3JAyyO%P@+dwWPe|INq@_`iRlts16Bqgi(gE96=fWELKs`Y9NZR z)HD+fi$9C41YKvbRVusM$m(wg2!!K-x&FC(O$*I*f(?C!(m7q7i91);YQ7PfyIK}I zThSk?Ig4osnV*e3B7F`LSI))N?=ZAt+OJ`#9%T&XrGVzUg%rn~IwjRi9DDX2sr%6W5Zz;nf%UEQ%1N&mqBHsS2AF z744!0(5bni`hwEG7|>CL>on7BDQTQS6|M(eCxaVQ_C_PCZ>*e9866 z=H;d4*I>S`vNr{?2*%Bti3Y=O&s&tv_WXtlf71x-^k80J^52A^@}@SuRhgTWdu@6f z`J*qx+>T;Y^A04g+^GsoyV8EWUGGx*-2oj{`IcsyttD-B3?aVuGr?^TK3HCKttvtKFauS1+(mFj!FPbPpXTXtS{oum6tT1NY9V0Qs~cz^%sEXEVgl0LE;_X zay6lrKhp(o)AcV}18lnfm4(wx*0rEd1e`&hCf?wq-Al{soUQeJh0Eb6aBm8Cdk9^rbt}b zOcm%rJ5E5ny?1gAyzhN(kD1ZO8CuI#Mxrr*-K2?;UH zE=u1uprazYX{Om&(pJAvk=;S}cZv5<@jb)hOInE2663Ixbbo(kFJxTVTSe#|%ErUp$aO0 z{v*fWCcIXyFN{XnF!pPBEQEDC^Elk#Jz8A(K%`E#?+KcZhMV3pKq;p6?aULAMPN=s z;tDr}{J>DV2~23exW1S@Sp`lB33!nSZ;zY`GL$b@-o7~Au{Rk{GdeP=25yS5&zl8W{!0X=?B~}eFvdLIO zIi7;*&^+6F66q%6N=gKSfPHEleme0MU;kM}wQqluk;~&?lW{e4_?wJtaPP_)xN?xF z(`f%QHLvY2Yk6-r8EHJc$><{AxXH+vF#cyT4Q(=>jXdIi4iaqg;_Anr_BH;on~div z|M?+)FaF_CbOFfFeWCJR6vrFcWW3mjtW%Nofk=4J7(i*WPhIc{+g3h7aukbx62%6KehPQkht_;c zEXt5${pR_vSoAY05eGc#Oa5yq)&h%u7Bp1rb4aj3t;(8Lx^xZW82z7E^b5-QMZ;-p zy^?mLV~RzuQ;yLcyB<8AW08p602&;-5s52bQf1AK(G}wuq3D;D^DBn4B@}J+RH5is zRb+HezotBdqF+}tH+g1apyDrqQL^H&Bc^e-nu-x8mwgr8H_DWj++W zO?hrNJOQTUD(DU^i>prE{+;0Q=5U3gcOehMcO$_LwJOkQ#HN|Ra0rUtqn!7KIL)y3 z`=&zC`;^?g)TsB%`<2cG_qSEucZ@pS+KPpud4AQc0g2L&cXu-REY1xAIIxVf6kPwIdLg~K@=%~n3nrSwcwAC+EI@%s;1@sCk;A{PRpXEPjU@>@q9+|AIsRpc9QvY?Vi)N2mfBuo8lBw!jAAs`Uy!)+S6uzcjW*33(||+&X88ZE{Qn5?(~h@J z|ECgP4u}ZuznBS@;E_LRfvPz4-?$0m(5sLib@9y?m;4&OLT0|-@+xjzc@0-Cv8j{o z`?}_%;ik6?&>KwaIP^crA~0_v!ABCXJ?IC9+D%|$ap(qM#fK9@0$yaoE9ebDhVlu@ zJ28%TY#cht=$NcJ+5#QnCAF~}SyKChpj|~f0#O8Mie{og@(00G&~*?@Q`t@<`&Mx1 z^cI@w1j9c=>Fn(@ap%e`%{SuEjkGMbo6{ev*_devhi-yABE2aRZ0F+YHzTdY^zY3L z{}#%>Wr&{!y#75~iE|7wfNMJa8_jF`%Y5D&97^M19J(#?jX0DsVf?pa8p5I5BairZ zA#r5^u73P!U*jK(Lw8XA9Yg$H{KKPYA;{3(t-L*Pyb&C_$cQXfk(~mO@SrhcEWq00AB9vUVx&I-FJyc+4Xxw}jw~GM28M>k7e%zT!XLSBE+$Q>+C9 zKLs?@=u{-GELUaCeV(qFK2HeVr<|u5PFw4hv>P2$2%b@nI3!qi>~!$JG2+;8u(BwI zPyI-+WvqIdeWDk}C!+71a^?-EeiS&S$DzYDx~cekP=!W!b4YoJzb!RX@C+f*Kc;fo zWoucSo}^9p_|RCvH1yCeB9D3wBXOmKtN+lT8GUG2KH@Gb&xqkkPlMrx(L@g%C64Za zfCnB#HI|9=PTz00jD380Ciueq=;`pD_o>>{z&LzRkbcqg4UL>x(PvuQNrF9b% z!tSe-{{DcDid?OkW@AZP{X#`P0J;ymKd9m#3X6ZZg*YuS4j&=iM;zB6gD)$n2;GDE zk7*`qo~9`Oai$yzpTLbPpH%ildS7pfiGRHw!y;Qv;GNnbe6e|m+t7WmMgg#Tv=a_~jxX&Yx*7^bxSH6g= zKf%$8nN=E4_jQKQyR z`>2HL1TJzXFgRaB#z!Sz$Gs~z;Yw7ZPNR?9ta)uExrO%zmC$$?m3#yFMpVL>(8M>H zhEU0^$Rqx@A#vq)T>bddzQ#WmmE58HcZT@A_=i!+T_8jE-OBr|I9`6&^nm(D8s1W8 zm3xfZdsXdyf!Z)~G0sGgi$D18SJ7_=q6qAFG!yOq{^0vA=sNfwP}%Pp+4RK?kJ+)l z!D2ol+;R9|qKNN~Ci-zEz>0oe z7A8(*Ne^ZEdhiU?LHzv|wP1zW`ae)Q2l0crbLEGcH&bzawZO^fM@oqu%8US&J;c;Z zzjax87^P_RN07MkD6W2oqQ#g2{g~l@T={<-;-?vJK>tLEPXt8x_armHSZ%qD_EWHh zx6uwme$-LQZ8X1vKO-}@(SD8_dU0XqTb4jL%a{>)U9*LKcDfH4;~z z#?=oDwVS}iZlnE11)d2Bc##PYwP!(w^4}`&b8)-_=&AAFb@_kVE9H6P$?w#Y-v^$A zN2l?>`CCbP)JF!Ncg*9wl!1JQ`~kuU{vTD-3r3Uv-R$(Hu7A4UW-u~8HN8oZ{0X9L zuNPHCb9>dH#!KWgKlpDlAb$o4;r$B|>icJ)50!dZGtHH%FTVbzbS}RBt-`Mu;qdow5j`qyT6w*yjLnL@U!A;0 z{>EPty^bPO`3)p^X;_8LvWs?2V7TmhQ|aUII=|`usKN%CX}07!g>f_;cFE~UeQT38BRmo)Vp>l0VTxnOO&FxR;%qWik)li4ZP6=e;-Bis) zD}KJ`-87}M?K)L>x)IhDP2;bIsJyBDW+-#Ba5t+hXmWixcU=0Ju_VZKN8~4j3Yh4pyS}0 zv0JRd6iTa9(6Sbo8dC1?OI2KCH;LYHB-NQ*9{VGruC+Yhf1)XH?b<_m_(q zU#cPtP~0awkT|p994*ziqf!@=x^a^zC*X>7D?<+%+VRPAJ(H^mkqv#I58vG8$r8Da6SKt{ z4uq3^KrhRCaK+9pc~i6ecxHGg7HYYoBKv^?KR1HCvgB~e8NauV=M_%qk^MnK+wr8Q z8csUH*%kPl&jBb*jn9|lK;Ec}87D z4$;zS)$%~dl|!j;B98}JBZu*Rstl5jv({=-l*3sx$EsFGDoYnFs+P+*`>v3$4)&B~ zXpvPNE-sQI$kL9*V;(Qj50A()icsM2HyqA`r->hr!iXTKaq+i(Y1l9oW#sD9-fBZrDj%hTnc}FhE|`Rs|}B2f-YW>lTnTq z$A_{DrNOete2QW20@?gesuxo<6-pG5OR&;X;eKiH3=V&A1n+>MpbHOLGNE#s1&MYk<+zwlL7n&b44bP zvzdw+oWFx#OyGz&$%42pH5XMK4yKEG|I6r+U(yez^{EZ>rIj+E%1p&aD*0LtwHz)= zPK#&YOoTGJTLB|U@cWC3;YG`)-RD?<5t?d50cK6*+60R6E`p!Xa*KyBbP*acC6#Sv{&N zwREZu!HgM$vI=GEQaJ8mq(0)j-%64Ci5jWWlqimbsgT& z&#prAo1*hk#3zczGI$DHK;5U=rg>gp427<&!xbxo#ayt^W$7bxeOV6lL6OSf6xB`Sv59H literal 0 HcmV?d00001 diff --git a/doc/build/doctrees/iovabs.doctree b/doc/build/doctrees/iovabs.doctree index c8572ca844f01e2e180e6aeee2b3853032f9d274..f42ed44742a240232ea87683a816660a7f459e46 100644 GIT binary patch literal 25058 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 WHeBV0jX3(9Zbt<>wzxJ%2LBHUX-yUY literal 25979 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 diff --git a/doc/build/doctrees/ms_analysis.doctree b/doc/build/doctrees/ms_analysis.doctree new file mode 100644 index 0000000000000000000000000000000000000000..11c72332249f93ca999625c69892981b2d53e3a3 GIT binary patch literal 20618 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 literal 0 HcmV?d00001 diff --git a/doc/build/doctrees/ms_module.doctree b/doc/build/doctrees/ms_module.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5d5fe851fee3ddb8700625b604306cf587d5dba2 GIT binary patch literal 2981 zcmZ`*`Fk8k5mjUzyQ{|j6sIzNa6%z&cq}EgeL^Mf`A={-kIL*Ml;h>-96R{ z7>I!gEhIp=@B6;*`~J(Qo|#?A`rrrq)9!Y6y?XWPRXsBvMk>s$jLmYYB5qplW5QG0 z!n-cr#_<9VEJ8D73AbArH#kw?I%yG&yaLD8xW2L1BRT@OR zYjC>22Fzzn8y+Ow7}ld#nm)E*KFqbINP$tg4mr+v(297dG;_Cc)`P<=x2mg@O_k+= zu}oW>Te}OU9Ud7OoGSdru2%whxi}$?ij(4$ zI1Q8KCA?1%TQ>X$HV^>3y37PhnSrk=0R9|f2t0?HJ3w+Hm=;fN8>G}k|*2R1s)ilkM z4%a-w*RPGioJ_+wkGPOgMEZSXAWp0|Nq8g0;GSZGX<1XPT55QaiWs4duma zDz&6#a}^&W0v|8%i4IKkV%5Pn4qQ!0FRij-My2r;ipHT`>&xX7M;o(>q#{ z;MRP6%c8eFLAW}cC3t-sJ#T%AK1$W&9g9zH<6FJ;Y5F45ygc&MHonbUpQ$ooDT}v^ zGI5yD+h?D;4htW0T3xTOaT8P%ru zUNXJ8y;uxx_!z_7Fjxg3DKLcvnMP8Ry#?f#J#GyuA2VneZmmpv260b^cXg?ZsP#09 zb8>&w3Qd7_5e^Tj2%M`B@C}1G!8k%sD;<%!XFMf!hE5B&h~${1y`0=VaKgh)7$@cS zp-GvB+&zI?J2VG)=Ae?&(~$1H&x3jLZkf@g#7!N8@297zJN88V08Bc~ZD9eky6b+S zQIhKzKL}@pwVAoPvSO8@2`0JiE-T$z5jKfe@I%my82P4UNrumObh{)sh@Cy-ZF0XO zCUG+*r}1KfScS|9?!!KQ1ZF8gnq+A;i#|%DNwC<~SD#&*gt;1bZNJ-|xX*(#Tx+ER zN=`+@bx?g2ERA9+>BnHf5nnmJiwKFi(m-OEq;6eXH{;q z-2T5eKS8sJ2n;PgN06xMWF$e~X&;}bY8{O7Bnw7rGx$lOmn>hVT~#0Z6djx2WIA<# z=`GjGpZ4IGE0ya&M|EI%LU=957ob5uEL~i^9N}l+5bsNx-z4~)_$z7sEO9dxs zm%KW!%ol2*!LLxKIZkLRDc!Bk_^Sh$sb+BCbd6slm`+%G zg!y#}v5$EC22AF*yL1J=39b6NQ{lJhwoLby2)_-@^5l{s621cmgGd_IAu4NLzUx7g zdYf#qEBp98vaGYAVALoCyrPkka9$CRJU8+TzdxWxVx3@9Mr3?HSfh>VPNm@wX&__| zKeW1fKmG`&hbz^O#VKg^c*<#~BJzJiP)kAVQuI@5i?RuVstfREJ22}?KkBld!?|IX zZEkKZXIoaNwCplkb5`i6S;1d815GXK2SWBlO#dwYlC}($_V8D5=1zL{b;Ym6b1?6` zE!d^xH!vL6le#440tale%k?OYIu`gAd0`70Z-X zHs{OKNv;+V{&5FpXt<3&|H+wbNzceC|Lo-*IJV#Ht3~uLYh&VkfqxYX;;12=?cIE< z$?~@X|1M6`1fUuJk8-c5Ms2-K(xOC55v@be9D1$6fBN_@m~z6P_3hsU{wMD&{}*14 BRAB%B literal 0 HcmV?d00001 diff --git a/doc/build/doctrees/prebeam.doctree b/doc/build/doctrees/prebeam.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0dc8aad93d66235fef45876f8d4f85f4a589aea3 GIT binary patch literal 9861 zcmc&)d3+pI9Z%CH*=(EiZb{n0a=O7LZNni(kh`d%5rM%~vM#f`vw5?f-P!k>nI;iO zS_N%Uyzs^oZ@f_P#0w9+#RCsiJW#w9Me#=b{@$C}%x<<7KK@}p&Ca~{e(!f5Z{B-* zyGv!a6!^B|jn&<<<)yhAWluJ@v8$`AK~~W+ zYnhr`4jd~}aVaxn6@A$|mD`|)8|0QO&$H_@nMzPE`L&UA9UtnTp=vl(EJPe7EAde%kwb z3Xw*YNNYr&u>pe%0*y8WS}Rf_6&R_Ku$?j(k?ZnueY;XUOG%%W8=%vTp*##aC37}n zdC2H8dLbL6ki(+e=#Ba}Ppl`^E1EoCZZ`USbB4v2Ta3PlIeEB|HhrJ$V&Fr$ zM}#tyHB#lE!El~DGH>*i9MkjgepKE_70uFaV$&R*Hut zydB%O$aD%t$1Uwn%SVB$Q$u-LtZ2K|aLLcKhi5{~11%WjqnY2+;m&h4XTockh`=+9 z6r2q%yT_7ec3>_Q+uTf4!#Zup)=ZQcz0)qu zkH8D^VpGlq{Qr`XYhE)GH|8f0oE|KM0_j#31zocy?uMZUTZNDg>$Aodmvxacjb2@| zq}v|w?9`|nC5V)kjod2m-)?3p;gl3gub9ju(r3J>O5ixEQUtla1zpKKMvtlnau&s_ zr($zinLCg)#QZ@F!3h!-B`u!{Gh80Zr?DAUcVLT?yN$qO@mDDEqp31v;h&xrXNV5@ zCH7N!1tPH{Ubz?Y?hEBJw5KM6@bb<~F%zXEA%v{%`E< z2YX449spBUhw?d#nY!{2OkvpoWg@3Lwuc(_TyS?yD4)kV-3*-`%B2&`uTjjm;F8a0 zDPHj3q5VUT!5Fa1;y8e^7S#r>l8&1Q@B2q zZ(s_`K_QVVn9LgwN#;!;(>6)I8MNLK%D2X}u5Z$^f+GHRPHQE%?yJ@M+aU1`p?rHh z9my&YIT4tA2lMvM4h5_kHSb!qCS%Rckl7Gv`EC%oF_iCNq1Qp^g_4QYKT?=ll)V>@ zb;JKDRlX1Y(BEWO-o)a*zk|4wOX7vV2VjbWit<6&f3<Cj84Fl0*V6L4z;j0^zt_a`{Z4ppXFNX;93*#!@`nJ)3?%3v|Zk(1%oP{yt|0zXq>nCuu<)gxo9@gH>}cn1^w@!|{| zFVR8J4o^xl1wAQfdWvqw_b6_Yfe-GC0 z3FRO33@GA{SVLljmwsYa+`S(k(rB49WBIwIoQHjq_o`04x)jl(QVD3yH5|KS`v(?_ z_oqeqH5SCGHH7KeURwSc%-k2szknHWFI(lWovd;XYwK?iI%enZkoq5?{AVoneOgni z+6l;i>46nV70COQ0+&Fv5#afEC?AONKzpFlgOSW#d#}w<7l5wXM@#SssT;qofZGB1 zP+gCfYMjdy&YmXDWGVz3me?Y0(#-ca!-jeR4i*tS)TidBn)8ncsb4kPKhuW=M-inl z$bm%5)x;HgVs0-);8M;XExwASUED$#A%qroXU2A9Ml&U{Oy9~}bY3P~BG>aqqY6Ee zh%hgm9tS8E$bduRgoSxCj$1UH%#L$1YL{yvDq(jT=*)YS#bove)i}bAR^lzBRjNId zTNd%pI997Z{q5cwZ&enW(X8R;cyku5MH>cQhet^3@f#Vq%2bs4MKauIgNEOz;15f{ zGXYoz!9_!AaJV@L&Ngx5&`}2U(`JA@q(E!RwFNT;f{6~tOGrmBJuy^egshp2YA^DP zDznOJIg+0`yqJ%p(1ccw#v`O-@EdD|v1_g9z!EK?M8~QL$0a62YDvb_!!QiwSp_?? z7?yqXcs2NNJ*YnZJ9{N<1&A2dYS<*ORuQ~Fp;0xnUEb_uZ?s0CF`lQl6%K-V8z8{u zc05Abq42eBQ&pKuXk+n~klG3=$N;;eX&MISwCi?Sc(gSq`Rl7C+ew&c;hf=P2-@ zs+vArWe&7#+SKQ&;dX2h<2xC6{2}sr9wx!^kHI6P$13z%t;~0LI&2~ zLrG39LN^4v7>|$)g+L3&6gvraiGqBhhRhuUYd@HDPV7u9@srfVb{-cbelo+c#FyeF zq-g~{R8`Z5t4us8ab69#W6MsaS>mTK@c4sgu>g3e;xar!G8Ja63TCBE75Gv_j4u@A zr0I(aL8*xVQkPYuozJKWTNqR#SJcEAJy9)cp<6K6ocnfK_Y7eQsz?cEXaTgs`_@TB0q1UwUIuEmr-$k(ueg59$imP_xf8l2OE zs%}hRzjNZUHf3H$^8i7jRI=#0aX*XwRG!(a(`vbi`Kn{qq&i)W@dJtVF+B|(xs?cv zHVTO<9&N=^$Rw3U53+DJda>@t=Px~-kwzO?yi}qq(19a>`3bc_NPE$o!bkc11XgZ1 zDWrXjnmAn#uw|ZsX8T86v@%Z9GcgEFU5Q6XSK*h}2}&K1|5>W7e3zch@5VCzXrTRg zud)Eq`N=4>LI=>c66Zm~RaQSUa5X>2JL!d3OGeFg zy5*Et;k#aqzJW*AwM{K3fHx|DH!(mzz6#Zeu}5!Ky>G!UufL2H@c}a*z|mXLjU(lz zEX~tsdYhVd1Adu%K1PF_Z&%ZjU~Q5%9Sd^js?A44ywpt$GQWn?8gw*p3e<1DwMb_-KJXj83E5 zs?$gKr62k!S?Y-RX0-R?=-z6uL>3OYaVLO2s&EYQ;YR}qYJB6sqmQZH0pBepSot_3 z?BSEFdHMvuub>K#<0e2r4tH-%X*BQMeyn8GU7 znum!v=xsRAB7Kp&d&*WZn4vE*CS#RVD_ZPQ^I%U{mQP& zt>n{JxiP?1v>wz7a~zj+8~R}NmF1w;C^TK%qpzVK7Du+X>lHTw{<;Ppf2u-HZg?4dyv#KSi+h|*v+MvvWoVwrB|=4xxs#_bJ6UjUUWEq;qp_ZYp{ zwXWDR^lgPwISaghkL}sMOY|MpyT0VO=I(-ptuv>9^C28OsS_$c4M%W7DF#>3H-5)xU8A|VucnORl#_nO?UjYH?U_XwAX4JpYHmL=5w=Py_8k43!McnsC4nv95+u{g zhm@S?3W$TU# z1}(AK=%2BWKuxyYZ_zV_Gfnoh1+D&0^{!AMsJ}-&`aSyg8`u$REQI_$=rb~L$j{Es zj_ErRD&%n+W*eZrZS)5QL(QoB=3Jq9%Yy#M-OC(ojMBaQy17-Ih1Qt-6F{meRt7m| z7Z&vQXP(?`m+3x!8ANa-{opU?JYa0ndBAckmEfR4UlgKSH1t=1AgUq*sc7-&Z|KY$ z8&v4nbzGuQcc82~o3c!Q$LM}6$jn)oUw8cjU0hL=E}K>0pNu;w8tdEZp1S@-|Kdql z--UEP-m(>>A( z7!m_9TJHP4@B6;5zm4jdSxMFhKiHpkx4Y`~t5>h;`B^_uer{x>R}vL)-LW5Io|q2a zbM-dP7I>%&?S#eLY^Pk~;R5H@7iMN=bhs@0YB^Rx9&v0q8jk6FsEsrfO(kByM;e<2 zwqP-3ndV;1wPqoOXuH^fML*9nO5?TK_aIGF$cT5aOC((_@MT?bx-9$CPb@##zqNd`D*MaD8F5ma z73aixm@9AK1A_4Oy5c@p-0zBIS6p(%Wj7a;R@BK>4(57>k4bO+|B+zzh1>XGfe%r7 zm=R|kam6X4oDo;^Ar)O?if|Wc%?~iHWNlzD|Wq#w#ocs-CGYcJNh{^wkBvW}5U`%}ujDfv>eWUq{tU z@_5KI9^mWOW?(@kev}7X$RHrqzF{KHtk0D_MmoVaQn^`Lw#8!y-<$C?BQ5&Wx*dGe zdfRGLC5F_iZ{VAWyvGZCVhD%BNDc8V6I%>YNvAB8R!OvtPfqGmU8e7;52mT!DjtU> z#mOYeY|X{Db)EGFg_mlR4K?1pgO0P_EWar218?2Ir#Lj~H@tlU^YyDnGNKUgaPjG` zxG8RNXvJ(C@YD!=W^L9g<1k6EEGMV`ZKdIe$ylOCDvPNO;K0JJ5tK@Qw!n8ni~g(> zzFy$FU`cPsLlt?`lN#Uc;(OrOT{cqQ9=Pbj$pgo|@~8K@=t0}3=C*ume4mTV3J&I{ zepU9+knCv};hwYkE(R7>sxm{kxdSa3)Ydg3>sr{4MPulqfQ4zY3Vj_qW~X-H@>18!8|>X=222jl;>%{ z2o{<8>g}~Tnj97G+Dkv;hzA_Fz_Uzc9z9M4#I;v_6f6lMD(OdI$r7RIiXbQv5rZFt zxquJz5MOX$iBntKl5Z0X!MVXZ6S$~ylji3C#r!x883N)P+#yI*b@B#pY_*RQs@BmU zk5g|~Z5ls8^pbzeWTfh2pQK}pTP#Z~V2Z_AjGuDglr5F*K1;P{cuaT=$4^6xe&}6U zy%ykS;20lEn!+UbocJqg{VZ|Q@KrLBA%3ndFKKa8YH3u4pQp%vq}YbXV#X0dREu?HG*k{wNIE|rxXW>$8W$~ZbrT9_)X~4*R2Y_MYmaIyHwX5+DE}Sk^EEC$jtS?h1*;)kn#~nCAGi&$rpRCE2^z2&YpPhUN zrw*EZwNCzJZAM%w@ULP?oYbVV{rhV*S^iew-^F>F05rD$QLYNr1g+OXT6}29q4fsZ ZQ?J$dPZ$3M4J!=V#r|F3fAZnVe*qD?Im!S4 literal 0 HcmV?d00001 diff --git a/doc/build/doctrees/sg_module.doctree b/doc/build/doctrees/sg_module.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4f5bd6c064112abb4efca2bc20deedcc18dbab34 GIT binary patch literal 2966 zcmZ`*`Fk8k5mjVM+FeVsd>^qB8Do$kI+8fSm>WX^2u}!h1pzw@y)(VjgXXH~9!mli zVjx1x5$^lG@B6;bKaAJ2vy!~u#}CrCGt*uD`qisf_4K$OWPWL)STChnAa%<=CNecG zzUT5C9`Esi1!|@uk!CBGnh*APVy!tgHm1Y*Bn!$|@}#5bh%P(YLdYEnN2cwKi#4=ysV#Mzpnvp(!Imdm}zeQ#Cxkms-M@BI=X|e4Xp@ z`2}hOWp3ALzR#s8KNec!_x&z4I>KKsEZg%g9k9e)aQQiEPSC_){Y96bt0qNB2jeJ} zd}(zY!Rie2^VGNkQ_o)*r3#6RWs4U;)a4$(U_qU%QhxLC`5S|jzfhf0$JJ?dMxCXJ zYBfKgfOT;}-RG+NT{Z8j3$D88mI_Cz`kTG-&a|0DPs#j|_J1L2L|{@S_&xi)xg7l@6QCH-(go8->Vo zS@4U+e(ZyT!O=Be=PF7!mqZW@>ZIP-;+Npim-hH&!$YssyiCc3X5bKe^3scGjk<7nP^*&27HrtTpgP zq$1wZk!ITFrzB0*_kK&CrfVj;QH&$kTz>0PpX@WBsCJT8OYoye%tD})zd+U zwi1HGf2$EXWD1e$ZdN47;M*OV*|m|JCf?CwkLL7N(#c|PxKi^wT^4lY zF5{_ocU<=A_{egv`V_bg=#UD}nhJogYu*5iV+frU0ZcuYDWvLKVQhlrSfpVISNE(6 zd5gv&<9AaNH}$0r!SC6D|I6G$h3r!w``+u&tcJF7Y)WjK(cD8Ql*+zS-$xTxfLr{2 znl8Hb3tC87#QZd!Q^w@_+VZl=GPJBnn(k6ogv-h#@iO0`W*}gjMkG0Zz`^c{Traln z%pZjL9n*>JB_-O5_TtPJR&pP5`5BtV1<}FMK@ZwSOHv{>_0|usPS8w^yLR6lM?K)s zIaw50;o)*w0It2kqY`NlBc*+svqWfYQGgPI82$)N1hP|x{85MIBn-i(d)-L0)f8aX8{RWhpTv-R{Q)3Wb1HHCb_q(HqD;|y>R>}?Pm3|Phr{Y zhA2`C7_p>C_|p!Zu&J^&XsPy$On}!&{tPwnVe!(+m4H7>N91ONz74^b;IE?fbKqvu z&(dxb^5^UHLW{Q}9ht1)FCelXXJXxxiHKqk1`6}A{p*W6bRIWJc584?D4xzOS6}MW z0h!+BFFW zz_h~JC(Li)h!NuXn>10H?&4Mc7Pac_R)ycj?kL@#BK{6FtCfoyBz%_+dqJc{2UOO) ze9xgKY8$rMjW+rFu&ndG5-1b^AJB+PSg-IP&-F6rAM{a3qT_8u0gUg5tC*zjRvP~Z z-64PUk(HGP`NuRh9HoAu&QLRysl+S=@_!1bl_2&g`WeciDgtj%1^n|JnzpImt+HRx z{IJS4Ha3>>Eu*rusxnMD%UG(H`Ipu}QzJG#6@@CspW$C&$jH)=e@*A^re~xoexshH zS?g`y9won}@hITm0WJEmoj&T!{k~844(d+EvhoX1Vw5+Wf&Kt>*Cbck)%-`7PF5<8 zQcP^tmr+SJ7XklihYq3B?LPn6nrubSu2ufUDLZsx)a(ZX=wDaI)P)}ZP0gv}8amrQ z@eVr6-+TNIbru}}4ga6jkTK}H^)QKX38N8)B5Dr3R`b7H{x?lpVPJauPmljwc9#AJ D8sJP% literal 0 HcmV?d00001 diff --git a/doc/build/doctrees/utils.doctree b/doc/build/doctrees/utils.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2c981fc178ee32b512ea79348493bbdfc89790f1 GIT binary patch literal 15713 zcmdU037i~7)z7upB)ho)cSC>ygiIj2$r3;a0!jprg%u+WBkVfqnd#l`$z1iiC%X}g zLje=S6Ffi#FTC);TRiYUMFquMQ53}sFBI{_gYW-db@%oh8xVhfzwgV@)m8QC|E{Xn zHLtraT2v_33XQ-k`yRmvKu+vGdBisSqCG{jmusg_v-g$5Bs z&-t|m6&%$+Zl#J&p+>?(4UAi>>_$+Vs?~yOEpT#vU{j!$k1e!%SV6Dos})+U%(&h7 z+heT^)fk>rW0l+M_BO2Eg6oxwV5L@1s(o55=sTixO6>~+?x)pbU_i2GLZJq&1y(nt zhn#B2U1W8K?Q61U!a!TMOjtgYpJ-IQz@G5!a(TkvbkwjPG>W?>{LRBfXQxxH)hCL_ z4Np_8QO`|#!GySC0-l>NU=zkGIp?t2UsaP2*}Gf0vPW=tq#gq zy~ReI>3o%*w0a6<+xKyQ@TAq7w+lOnO@GLwwV17R=%jkAyUMn@4ETtKmZdgmo zUe!_S#ufoAoJK0+E^=X|^_f;P!K-B_rH+7+j?`*H#vPQoV}*0)w0Q0eyF>1N?izQ0 zcdgYWqtu8CnKx$K^rU<6q6Yd2)Lsg>VZ&MYSN=sZl0y7XeTS*xQV zhPA+5Gw!Y%7o;Kg$VT37QpFjnpRJas4)-5 zc^XK!dJ2p9)J%&cRu9$|d5%A+o|eJ-@~YEiM~!8-zyKVm_7-$9>(d#pny%D}jk1%p z(|WhpS}-1{({0Q$Gc{IEc9<3jp@oz>17eSB_4F38mvFB-lcjz}20^E0)Y!Ji>MqtQ zwpUfp%r25Sq0VYks+KQt2v%0M7bHE)%ZmyS899`*2-#I$fJe zT7Tr>{H7)_D+ZdiQIk(rgx{X`a_SRKHPMr{N3wQvgl$~7)brMTN-{JPtt3pdA!Dv2jMxTcED$4 ztt#xZWzC|Fz#-=%RI)Xei8aDes>-&gW!#h94huJ$&#I1f+X|@^)F-WcGntd2vD|s> z3S%Q{09hMa?ZjAjIw4$NOrvI4ve}1|Y!@VZL!2;A(?t5OZKV` z8-RE!zq)P1!8%WqU3XLJYB0G*tJko?o1ySlJQf;dJ8;qz?nu*+23ykf6!xTZjj`GM z5%pTkgRA~;1i#n8uYIw4>RL9=bsdZ|wlI1?zaDOTw2Hq04t}FnZ!#WA#)E6j3TxSu zOnFYZm@^CO%`p7+TD>LmE)2-e^VA%TdMiu+whq$Au6=uJ{Fc!v^$vjFpw&AKI8ffz zjxyw4&+FvfZL`BjV4~K00Cb~P@8#){!t^*ZiVi+}enU7RLzyM`zmH{pe>=BzV+)wu z2Vm`H9Q8pM@k3gDI5NbIdof+UR@{|RAAwLeY4y=qyN|W=W9h)}~pzhe6*lZ8Ew=#>b&c)TQ!E;~N>KjJwA@}w$t~Rq& z-$YzBu{fPk-@=%0YxSLI%&i@Ej&-M6#Lg!-3t3X?yAb$Jt-fbQV0L{U8%Ff-KF@XC zJ9gtYC2BTJJ3)2{49dn-cS)<+OS<6}Qj~LM>t(Ot1$)|6`$1bkjx=#9b=USiKc#*M zY3|nQN07$7i|6`}J2~S{w$we)I+o`r(EF!a{VdY^ZeyzztsK58!`k^-u)-U<^D*Knq|)O$%|2$S`9=`O^1XbY+?rq3_a*X|WJ4 zX(L<%yUo9xsmqM+meD=&=;X5m3>|2Ct(h2oaonL^kV6nwCnXH7_va zau}jz=;TO5{W5UC49uPdVa=8&ok75uCl;l7>5Vv)9!{T%y#ftys};$cZXjotnyH}m z9M7pbG<=3vcB(sSJG}xNLd!eLQ)1Csq!rSS@I)(dr)ibc2PHLNWMY)n(rOX`&EcuU zsxZ(#T#hEj(Y|Pbi}pjI=`py5zAP~(2O>lt1x=J7NSLFq6yXvt&;(n#DLH&X4RTiu^!!^Jwj-YY^UY9w?R6GO=otn z<3cfWjYdG^4jDtNak0yDd22@-Wo)a)>&BwA5N+adqkG351r08kX~MOlx(UE;3G5C#k~c0 znof}VV0J&)X}d$)+gBew9wf}}L?LZ8%TS30=ZSCzjLVX_GF za}6t@lnA*`7s@jYrOdGHGZpqqTlAx6fQYr+CdBPpMt*rF)3IO9!i^?N$OlU@e5k|> zlYTi{x?9oKjrFp@&f(5dXm_4$nw}-}q1_=WOLT5WjG+<>z%b`=Y3x2zp$XJrqe&E+ zo{ei{BW56WFU4lw$C$a@7&!y7T|n#v2=i<)H2+SHAAO7@-U`3G3z1)OC>aG+97}(+$1eu3T5FmES05i+a5Pcyix@% zEdk1HPPtN*NzN&8kx1N8O|YH?zIEJbQc^bwq(~8aLpqPFX^AEKUv&U6!?iA_M9CMy z4xOZc8@p|HyW5uZqz3vh>vy8iG=pnX_LFAAp;OtOIX}@ZZbfF(ZAxjJ_7K~PTSOOytvXHb#C@(jZ z^6=m(gc;OqsEb&p7YfzhWx7IWknp1y3G$0WWE2Z*26>4zbOISFu`nDTU&^J~8rjh1 zWvFU;xeSzLR$^?4RGjwX^dem;G*=lK*#_j9+bg7D@7!JqnvfeZ@$@P|dbL5~MO|X- zn43v5x=16^)k1kqg3>IzXm)WDkzOO+ZO@Y^*+j3EettZ?PT;OJaM=?$cE)MLz;)6^ zkIb9jbfJcqPI!G}BQnjV^G-11I8~$)kz!8UX}elX=jl4&Kz5c9^F547vb}q~aA=b# zPTtWQc+BX3EWsNA1AD#+g{C(P)7H7jDx0~;2Dn}*-(n~w8@~lAx?8qy&7JR+bo#`! zo%1Hr6WAC96X|@ew4L4x;?7#WO<>x!TpaBL-wuM-Ef%v&(L2xsac)4N>79Zz_=v<| zf4@uUTlo%^SUH~C@8;6%o##`F-UAv~?nV@v-ivFrBVdtaCR$5aRC=GOV+|njN$(f> z496VHF&aB)=r61`{`WWsseO&78 zNzM{u&rM5CZ_+1(woNd}aMI08-f`RevQfX(*e0cDe zx#Y$072IgLL&yiS$8-2>&uE^Gq#VD>IItihxCBjBjx{7q-8Rs;2MAIO7(EHi5J$G4Ne9 z!;ND4Eb68P^++gK_$# z(r%n6lBLiuk!-1qU1r8gB+EZsB+EyUEYFcF&yg%2MY8^R__ByR9R{SIBiVA?X<8w5 z6Uk&xxKbKAMlu$aF;;PDA{lQ9SEH(F9~oyN8ABV#Hbt_1(G2?ig#IxJdIk<7*`Ra| z#hoza8m`R0%;HG4Kj{ALRTk;A7K3G#9e^862Qp8rGREY&evs7L-O1vzNzz;EO zLTHYRX`tQ)uFP-Zxkxq)!bff65eya^Z^VtJP0SQFW=yv6sMOn4WqH}gM{${qWSh|d zosUML=@?uiBQt)ibJEDi3hCnv>0Bf`P8!-dM@Bv#{h^ULl5G)`6AX$NnQ>!=3ChO{ z<%tPOhHQysC!q zK1ondjZxvW)1=aFx@gb)Wa;NU?^9&(Q_W!cS-#D|XK+=#)h{t{%ZB%9Lf8syUg^^q z)0^M+Aqbt0CRp(d6v(B@U=xg(FMI=|^KSR)(tl>$4;7vvl~zunP?&ey&@Z9-nKJe) zGd6oD9xt0`H%GrSWuMvpGn8MRlQjPMx=cM$rKc6jwb7ru7wP#!*Z%^P;25<4{b|G#B4}EGg z{b(x?<)k^ZT;AF51CrIlMK7_9E1U;OIH*peA5UnukY&ZZ9} z*o!;n!DH6!#j^DCcD#Z+O;xG0uozt9%KQ;FdWikov6W?K=5;O;4O-? zjVzm)8T=aCJjMCR5eQ`?LCMhJQ+cO!&cvNiXqGGgMTK?&KdI1jP=}c3qd*Finaj80 zLnW52lR{c3FGx@(6uMA4FN!;%(8XMtU!nLJ_^4gmI5B-*YGh<2&411t9odlH zB>yKj%(Zfh>1k~>J(EH@nPR|vGhlK+(|uxyIp%`z<>f1DysgPZZz-#sq9?64?j!aaLX9Bxv~xZ1p0tfc|j zRe!2R6}+TEXYSF0Bd{K=qC*Gc2+xp9TRtCFvkbI~ZD-hk#w zdLwtPY&x?fcyE&4H*@bkEkpVJvrpFx!CRQ14_|%B`6r*=Dy?tBmEB@3i;he2(Gz+* znsGoX)+Ih$MemSdH{ic6}<~}9Hi<`3hUFmW$1f&Xn!P!k?=;e zA$Q6>D{u-zQs+7IIh#-KlVR`Y&R*XM0(=(d(+5yZymQBgx%|a&F?F_G=5KK5gXpi( zhj7*OVWzcKMfS|`2_|T{!>5m+2Xd}Ps=h`=oG9Zj&hWY()1PiaAAHA0a~e2RmgDmP z^iecgi<~NbjBom2pMoO?qCSrLZX85&>T~b>efor84B(3wuMU6;AEoo@W@+sYYK4R- zpJc!;KC7~eKE?OTXo~xBuB}03`ZPDKb%UVpZ`rspsMT;p&vSyQks3{Jbc0HHBYlQR z`il5&8AsVFb-D%halnX^a%Da$MxR9+4rHzND}30kfpc$u4u^wmgiiV#`X=e~jIs=- zz(G5l3&BAbNuu3g4QqXP22^l4RydWs!&7P(M|Q^v=*wu|V;xXy1ocKR zAO2SusGCJA1at>i`uU_=wNc5<^17t2q77bOUTjqAxp<2E^fk1@;|OeCb*dH;f87ud z%-B@r4>E!4*cJMQ(C*9rp28L+d2TMR^o6mH~(^SPK&+=qCM7Pr@E8AFJMOTy6-fK(6UmdyQFyqJ`1g3x_MYh zRJF@K{Xp7RvGs8B(tJ%~O!z~=Txt#&;!EP{4!T>22YA*Z>X@%yeEN~JE^qM|{TR(w zS0k7jK926;`&0Sm50ih9pE@S%;iEuV; z%A2KMFxdj@fP#z9w(%$?V|-}Ifi8!2u%l6@dqK4a>)FodX1pR2^uI*ISg$qEJd^2H zjMh`AAA8KEO{4T{sf7nj={Kmk`&)g}{NbO?zWXg&#&Hmd=h>W9?~~SLvIKKx4btz> zw%fu7ul2bl|9iAq>1fH%%*>3K(}A+&aq@E`sQry}Ka=5^Q4Q?bTztNe{=m&k%J|-y z9^l)x&F0KCugO1xq$F!)fMa%U&VGO5!Hc{i{h4nD_^HoFHN(~M7c}m%_BV0BDLWG2 zV8X!7g=a?TuOPvy3LPY?#izfaanjmPmX24&8A3VH>r~m5MS2juyOHjj~FzOBzatTPJepF9X}4>bJ?cR0yw-jlDw=PteOxeaSo(|Ka^Abtpx zniedEFW2J1h%L=R+{=fwl7x(o=;8n>4x8cxrqvfcSbSOp(n(s3D>j~(enp>_prWY@ J*G7Kie*i+3pZov- literal 0 HcmV?d00001 diff --git a/doc/build/html/_sources/beam.rst.txt b/doc/build/html/_sources/beam.rst.txt new file mode 100644 index 0000000..c649e85 --- /dev/null +++ b/doc/build/html/_sources/beam.rst.txt @@ -0,0 +1,21 @@ +Class Module for Beam +===================== + +.. highlight:: python + +:: + + import msgpi.ms.beam + +Beam segment +------------ + +.. autoclass:: msgpi.ms.beam.BeamSegment + :members: + +Beam +---- + +.. autoclass:: msgpi.ms.beam.Beam + :members: + diff --git a/doc/build/html/_sources/index.rst.txt b/doc/build/html/_sources/index.rst.txt index cc41001..1fc1901 100644 --- a/doc/build/html/_sources/index.rst.txt +++ b/doc/build/html/_sources/index.rst.txt @@ -10,11 +10,9 @@ Welcome to Some scripts's documentation! :maxdepth: 2 :caption: Contents: - sg - iovabs - ioutils - presg - analysis + sg_module + ms_module + utils Indices and tables ================== diff --git a/doc/build/html/_sources/iogebt.rst.txt b/doc/build/html/_sources/iogebt.rst.txt new file mode 100644 index 0000000..c775346 --- /dev/null +++ b/doc/build/html/_sources/iogebt.rst.txt @@ -0,0 +1,27 @@ +I/O Module for GEBT +=================== + +.. highlight:: python + +:: + + import msgpi.ms.iogebt + +Reading Functions +----------------- + +.. autofunction:: msgpi.ms.iogebt.readGEBTIn + +.. autofunction:: msgpi.ms.iogebt.readGEBTOut + +.. autofunction:: msgpi.ms.iogebt.readGEBTOutNode + +.. autofunction:: msgpi.ms.iogebt.readGEBTOutStatic + +.. autofunction:: msgpi.ms.iogebt.readGEBTOutEigen + +Writing Functions +----------------- + +.. autofunction:: msgpi.ms.iogebt.writeGEBTIn + diff --git a/doc/build/html/_sources/ms_analysis.rst.txt b/doc/build/html/_sources/ms_analysis.rst.txt new file mode 100644 index 0000000..92b2588 --- /dev/null +++ b/doc/build/html/_sources/ms_analysis.rst.txt @@ -0,0 +1,16 @@ +analysis Module for GEBT +======================== + +.. highlight:: python + +:: + + import msgpi.ms.analysis + + +.. autofunction:: msgpi.ms.analysis.solveGEBT + +.. autofunction:: msgpi.ms.analysis.runGEBT + +.. autofunction:: msgpi.ms.analysis.solvePLECS + diff --git a/doc/build/html/_sources/ms_module.rst.txt b/doc/build/html/_sources/ms_module.rst.txt new file mode 100644 index 0000000..02e3b0c --- /dev/null +++ b/doc/build/html/_sources/ms_module.rst.txt @@ -0,0 +1,11 @@ +Structure Module +================ + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + beam + iogebt + prebeam + ms_analysis diff --git a/doc/build/html/_sources/prebeam.rst.txt b/doc/build/html/_sources/prebeam.rst.txt new file mode 100644 index 0000000..0c2e326 --- /dev/null +++ b/doc/build/html/_sources/prebeam.rst.txt @@ -0,0 +1,14 @@ +prebeam Module for GEBT +======================= + +.. highlight:: python + +:: + + import msgpi.ms.prebeam + +Preprocessing Function +---------------------- + +.. autofunction:: msgpi.ms.prebeam.preBeam + diff --git a/doc/build/html/_sources/sg_io.rst.txt b/doc/build/html/_sources/sg_io.rst.txt new file mode 100644 index 0000000..b6f1baa --- /dev/null +++ b/doc/build/html/_sources/sg_io.rst.txt @@ -0,0 +1,9 @@ +SG I/O Module +============= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + iovabs + ioutils diff --git a/doc/build/html/_sources/sg_module.rst.txt b/doc/build/html/_sources/sg_module.rst.txt new file mode 100644 index 0000000..5017285 --- /dev/null +++ b/doc/build/html/_sources/sg_module.rst.txt @@ -0,0 +1,12 @@ +SG Module +============= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + sg + presg + iovabs + ioutils + analysis diff --git a/doc/build/html/_sources/utils.rst.txt b/doc/build/html/_sources/utils.rst.txt new file mode 100644 index 0000000..ba80118 --- /dev/null +++ b/doc/build/html/_sources/utils.rst.txt @@ -0,0 +1,12 @@ +Utility Functions +================= + +.. highlight:: python + +:: + + import msgpi.utils + +.. autofunction:: msgpi.utils.calcRotationTensorFromParameters + +.. autofunction:: msgpi.utils.calcCab diff --git a/doc/build/html/analysis.html b/doc/build/html/analysis.html index 04daa40..8660f26 100644 --- a/doc/build/html/analysis.html +++ b/doc/build/html/analysis.html @@ -35,7 +35,8 @@ - + + @@ -81,11 +82,15 @@

Contents:

@@ -131,6 +136,8 @@
  • Docs »
  • +
  • SG I/O Module »
  • +
  • analysis Module
  • @@ -221,8 +228,10 @@

    analysis Module + + - + diff --git a/doc/build/html/beam.html b/doc/build/html/beam.html new file mode 100644 index 0000000..de11497 --- /dev/null +++ b/doc/build/html/beam.html @@ -0,0 +1,562 @@ + + + + + + + + + + + Class Module for Beam — msgpi documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Class Module for Beam

    +
    import msgpi.ms.beam
    +
    +
    +
    +

    Beam segment

    +
    +
    +class msgpi.ms.beam.BeamSegment
    +

    Class for a beam segment.

    +
    +
    +calcLengthSq()
    +

    Calculate the square of the segment length.

    + +++ + + + + + +
    Returns:Squred length of the segment.
    Return type:float
    +
    + +
    +
    +coords = None
    +

    Coordinates of starting and ending points. +[[x1, x2, x3], [x1, x2, x3]]

    + +++ + + + +
    Type:list(list(float))
    +
    + +
    +
    +css = None
    +

    Cross-section labels. +[starting, ending]

    + +++ + + + +
    Type:list(int)
    +
    + +
    +
    +local_frame_id = None
    +

    Local frame id.

    + +++ + + + +
    Type:int
    +
    + +
    +
    +num_divisions = None
    +

    Number of division of the segment.

    + +++ + + + +
    Type:int
    +
    + +
    +
    +points = None
    +

    Point labels. +[starting point, ending point]

    + +++ + + + +
    Type:list(int)
    +
    + +
    +
    +twist = None
    +

    Twist.

    + +++ + + + +
    Type:float
    +
    + +
    + +
    +
    +

    Beam

    +
    +
    +class msgpi.ms.beam.Beam
    +

    Class for a slender beam-like structure.

    +

    This class is mainly for the GEBT code.

    +
    +
    +analysis_type = None
    +

    Analysis type (GEBT).

    + +++ + + + +
    Type:int
    +
    + +
    +
    +angular_velocity = None
    +

    Angular velocity of the rotating beam. +[wa1, wa2, wa3]

    + +++ + + + +
    Type:list(float)
    +
    + +
    +
    +echo()
    +

    Print the beam data.

    +
    + +
    +
    +findPtCoordByName(name)
    +

    Find key point coordinates by point id.

    + +++ + + + + + + + +
    Parameters:name (int) – Point id.
    Returns:Point coordinates.
    Return type:list(float)
    +
    + +
    +
    +findSectionByName(name)
    +

    Find sectional properties by section id.

    + +++ + + + + + + + +
    Parameters:name (int) – Section id.
    Returns:Sectional properties.
    Return type:MaterialSection
    +
    + +
    +
    +frames = None
    +

    Local self.frames

    +
    + +
    +
    +linear_velocity = None
    +

    Linear velocity of the first key point. +[va1, va2, va3]

    + +++ + + + +
    Type:list(float)
    +
    + +
    +
    +max_iteration = None
    +

    Max iteration.

    + +++ + + + +
    Type:int
    +
    + +
    +
    +mconditions = None
    +

    Member conditions (B.C. and loads).

    + +++ + + + +
    Type:list
    +
    + +
    +
    +name = None
    +

    Name of the beam.

    + +++ + + + +
    Type:str
    +
    + +
    +
    +num_eigens = None
    +

    Number of eigen analysis resutls.

    + +++ + + + +
    Type:int
    +
    + +
    +
    +num_steps = None
    +

    Number of analysis steps.

    + +++ + + + +
    Type:int
    +
    + +
    +
    +pconditions = None
    +

    Point conditions (B.C. and loads).

    + +++ + + + +
    Type:list
    +
    + +
    +
    +points = None
    +

    Key point id and coordinates. +{ptid: [x1, x2, x3], …}

    + +++ + + + +
    Type:dict(int, list(float))
    +
    + +
    +
    +sections = None
    +

    Effective properties of cross-sections. +{sid: MaterialSection object, …}

    + +++ + + + +
    Type:dict(int, MaterialSection)
    +
    + +
    +
    +segments = None
    +

    Beam segments +{bsid: BeamSegment object, …}

    + +++ + + + +
    Type:dict(int, BeamSegment)
    +
    + +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/build/html/genindex.html b/doc/build/html/genindex.html index 94b56dc..dc5b324 100644 --- a/doc/build/html/genindex.html +++ b/doc/build/html/genindex.html @@ -26,6 +26,7 @@ + @@ -81,11 +82,9 @@

    Contents:

    @@ -153,12 +152,14 @@

    Index

    A + | B | C | D | E | F | G | I + | L | M | N | O @@ -173,6 +174,24 @@

    A

    + +
    + +

    B

    + + +
    @@ -180,6 +199,12 @@

    A

    C

    @@ -187,6 +212,10 @@

    C

  • compliance_refined (msgpi.sg.MaterialSection attribute)
  • constants (msgpi.sg.MaterialSection attribute) +
  • +
  • coords (msgpi.ms.beam.BeamSegment attribute) +
  • +
  • css (msgpi.ms.beam.BeamSegment attribute)
  • @@ -206,16 +235,18 @@

    D

    E

    @@ -273,6 +310,18 @@

    I

    +

    L

    + + + +
    +

    M

    - +
    • MaterialSection (class in msgpi.sg) +
    • +
    • max_iteration (msgpi.ms.beam.Beam attribute) +
    • +
    • mconditions (msgpi.ms.beam.Beam attribute)
    • mocombos (msgpi.sg.StructureGene attribute)
    • @@ -298,19 +351,27 @@

      M

      N

      - +
      @@ -330,12 +391,22 @@

      O

      P

        +
      • preBeam() (in module msgpi.ms.prebeam) +
      • +
      • preSG() (in module msgpi.presg) +
      • preSG1D() (in module msgpi.presg)
      • prop_elem (msgpi.sg.StructureGene attribute) @@ -346,15 +417,27 @@

        P

        R

        @@ -362,6 +445,10 @@

        R

        S

          +
        • solveGEBT() (in module msgpi.ms.analysis) +
        • +
        • solvePLECS() (in module msgpi.ms.analysis) +
        • stiffness (msgpi.sg.MaterialSection attribute)
        • stiffness_refined (msgpi.sg.MaterialSection attribute) @@ -393,10 +484,12 @@

          T

          - +
          Parameters:
            -
          • fn (str) – VABS output file name (e.g. example.sg.k).
          • -
          • scrnout (bool) – Whether to print message to screen.
          • -
          -
          Parameters:fn (string) – VABS output file name (e.g. example.sg.k)
          @@ -264,7 +268,7 @@

          Writing Functions - + diff --git a/doc/build/html/ms_analysis.html b/doc/build/html/ms_analysis.html new file mode 100644 index 0000000..da3531b --- /dev/null +++ b/doc/build/html/ms_analysis.html @@ -0,0 +1,287 @@ + + + + + + + + + + + analysis Module for GEBT — msgpi documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + + +
          + + + + + +
          + +
          + + + + + + + + + + + + + + + + + +
          + + + + +
          +
          +
          +
          + +
          +

          analysis Module for GEBT

          +
          import msgpi.ms.analysis
          +
          +
          +
          +
          +msgpi.ms.analysis.solveGEBT(beam_xml, scrnout=True)
          +

          Carry out a global beam analysis using GEBT.

          +

          This function includes the preprocessing of the input data, +running GEBT and parsing the results.

          + +++ + + + +
          Parameters:
            +
          • beam_xml (str) – Beam xml input file.
          • +
          • scrnout (bool) – Switch for printing GEBT cmd outputs.
          • +
          +
          +
          + +
          +
          +msgpi.ms.analysis.runGEBT(fn_input, scrnout=True)
          +

          Run GEBT analysis.

          + +++ + + + + + + + +
          Parameters:
            +
          • fn_input (str) – File name of the GEBT input.
          • +
          • scrnout (bool) – Switch for printing GEBT cmd outputs.
          • +
          +
          Returns:

          +
          Return type:

          File name of the GEBT output.

          +
          +
          + +
          +
          +msgpi.ms.analysis.solvePLECS(length, compliance, x1, f1=0, f2=0, f3=0, m1=0, m2=0, m3=0)
          +

          Solve the static problem of a prismatic, linearly elastic, +cantilever beam. Find the three displacements and three rotations +of a point x1 given loads f1, f2, f3, m1, m2, m3 applied at the +tip.

          +

          Equations (5.59) and (5.61) from the book +Nonlinear Composite Beam Theory by D. H. Hodges +are used.

          + +++ + + + + + + + +
          Parameters:
            +
          • length (float) – Total length of the beam.
          • +
          • compliance (list(list(float))) – The 6x6 compliance matrix of the beam cross-section.
          • +
          • x1 (float) – The location where the result is wanted.
          • +
          +
          Returns:

          Results (displacement, rotations, forces, moments).

          +
          Return type:

          list(list(float))

          +
          +
          + +
          + + +
          + +
          + + +
          +
          + +
          + +
          + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/build/html/utilities.html b/doc/build/html/ms_module.html similarity index 54% rename from doc/build/html/utilities.html rename to doc/build/html/ms_module.html index f27541d..2b27bc4 100644 --- a/doc/build/html/utilities.html +++ b/doc/build/html/ms_module.html @@ -8,7 +8,7 @@ - Utility Functions — Some scripts documentation + Structure Module — msgpi documentation @@ -34,7 +34,9 @@ - + + + @@ -48,7 +50,7 @@ - Some scripts + msgpi @@ -79,9 +81,15 @@

          Contents:

          -
            -
          • Class Module for MSM Structure Gene
          • -
          • SG I/O Module for VABS
          • + @@ -96,7 +104,7 @@ @@ -127,13 +135,13 @@
          • Docs »
          • -
          • Utility Functions
          • +
          • Structure Module
          • - View page source + View page source
          • @@ -146,10 +154,27 @@
            -
            -

            Utility Functions

            -
            import msg.utilities
            -
            + @@ -159,12 +184,21 @@

            Utility Functions + + + + + + +

            +

            - © Copyright 2019, s.t. + © Copyright 2020, msm group

            diff --git a/doc/build/html/msmio.html b/doc/build/html/msmio.html deleted file mode 100644 index 4440db7..0000000 --- a/doc/build/html/msmio.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - - - - I/O Module for MSM Codes — Some scripts documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            - - - -
            - - - - - -
            - -
            - - - - - - - - - - - - - - - - - -
            - - - - -
            -
            -
            -
            - -
            -

            I/O Module for MSM Codes

            -
            import msmio
            -
            -
            -
            - - -
            - -
            - - -
            -
            - -
            - -
            - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/build/html/objects.inv b/doc/build/html/objects.inv index ad30697239ddf1287ef0d60cb3927be06ccd9311..daa10a43a5eb0ccc733dcb310306c0bbf4f5a854 100644 GIT binary patch delta 1183 zcmV;Q1YrAz2ZIWbbbp!2a^p4-K=1krrjo0ba&ntnq_G`WSz}k|EH@SewkT9#;Q*k< zy5%?Wd-;+yz(piQ#{^hqYXR}Pu{6+&gegk4CX(>8VP>r>nUv>Ghe}e*luT}u?$OZ- z{{0Wh%}NXrqxcDCLQLV`iR@7kko=EdHtFM7U-SG!@VT2I1@aQGbu0n$Ee zhOflYW}&EPK6nW_a`(JdVy~h#?+DfEGqEIIfCbG6j~>AnmBVbfvW%Oxg*W@EP_t%l zS7hDgJ=CkcS6UEz&lQ>2vOs?6C?2JS0<>8!A!H=N3=aIm-R5-!3X{Eeg!`~R`U~-w zr@L($#P5NK^?wFm97Q=X1`*%*KYcr`nLU^Ox*`@=Y+qTJM;8?*Iy(VZl-YBz0H8;I zR|&93mCqp#Oy)0ktCY?+=PyJ+IG%!E(I{LaVuGj1nS>?FB*eTW(hWjI+bm}RM0Jno{Hcsh0QCk^C%2oSblr3SwT_}+TY9@ah`aoB7M_nJOj z1Nh|q?tizR=L2pv+F0^lEAiLvsfnuR$iS8sZaiN9-k8%L&%7u(Ba&YEfIvLcfSwof zNHNk_GI8)`(K))I37hKxF+)Dxb2mK1^el~LSt(DA&W@vPFU zU~yxgiXLWx=IG+31+z9HXCjWY>~N4^%rbhB#eW;Cy{nFbry}`DFtxg(7A^DvBz$-` z40?BYL%1S5kmyx1xLjm`yd#}aE}-3+j$~0Q%grMAHeZDQv<&}w0Uk4NmvQ-e%;wx$ zYOlOB2t{W~YsE|?aC0QctPtjy;eW(z3a<7TjpodhoY3e+X~b|v@};;Ni(M)s?#^gs zXn)nK6$Xl65_2|`K`VVCu62Qo$pCu>FZ%VmP*%~d*cgoFz$3WXUUh`EMa5uFR+1f* z7MTT6x++B6Hu>D1lM}>_MD02ITE(bV0tynrl}B`PG-j;M#ds$d!J1-j@G{~=Bv%PR z^f~k)cz+M-LN0PcY#n}8) zu4r;I`WdGCmh4nsaag%@uiv{%|B|f_kLqp-o`=Nciz^If&?mv0XE@p8kw&U*t;t9C zadqj|i0<|H6FA-@kXV(Z?%iP0P+Ifv-~X5ddsm`$nBT4HOm-mWlG`SaKR)+|=zntI zRa5XDBA12o% zYxMQ{Bpq5yY&St93a}kpobR9EJ`)p)Qk`?lbsbbV_myR3eVJEQpmLU7u)b-FM!$Z; z&SvHq2~O`|Afz0vQfXnY6uGWiFe{K7V;Htt;&bX2Ey?<8-5&x*cfW?(p^vNR~ zCQ2pqqlcg;m#b@MHZIxok_+!{IP!D>1h2SGj^NHo7z|gabT~(Nz^{%xd-d=i*_b?s z?%mFvHyr2M@h7HiBtJEZg+(a9hv^DqA}KwDB7UxKPk^T7dGm{#;XvG|-TIh&XMQd} zw>xEs20iKEHGedgLtLiZX(XyVw-CZKdeVvy=)o4aO@gs5hYk7~eI<}q=zlF(c=2pFvhH)2@s4Oi7GN`Y zJjh1!k&KIS0v-2sB1>MC43ppsISGF^4SzoYPw6-90=dtzuIg^39;A#>&;V|o9In>M zT-A5&`7%nuW`zmcjNS>oDYV;gok!EM3EbdY^#tn*h0&a?tjZ}@&JauqK6RRG zWwN084pJj=8?Am-DXyJ?f+uk0mM%Gw5^KC-_Lp1&8;YUH%L!)^xyl&s>#-*(dTzsz zi@Z-30?JG21UozV|3?3dEuE}1%qT;kgB~9Cgn#B6+9$+xPa9?tzs?@bTHynWAE0S- z0z=2v@o%6^yu|SL_n*MXx-#7@^lH}Dc}GGAr5{_oU9oTUGgcDww(ttGrp`Ww`pTP8 zZ5XkpON=%Ui}m`9w*3=*E9>E*t_JM{Bd@ikw&feVy3i|w&=^Q?`jY5&3t evKc*6?BuTZN#H@y%k`4=6VKwz&;9|ui^iz2qLV!U diff --git a/doc/build/html/others.html b/doc/build/html/prebeam.html similarity index 54% rename from doc/build/html/others.html rename to doc/build/html/prebeam.html index 45485bd..9ce1e51 100644 --- a/doc/build/html/others.html +++ b/doc/build/html/prebeam.html @@ -8,7 +8,7 @@ - Others — Some scripts documentation + prebeam Module for GEBT — msgpi documentation @@ -34,7 +34,9 @@ - + + + @@ -48,7 +50,7 @@ - Some scripts + msgpi @@ -79,8 +81,18 @@

            Contents:

            -
              -
            • Class Module for MSM Structure Genome
            • + @@ -95,7 +107,7 @@ @@ -126,13 +138,15 @@
            • Docs »
            • -
            • Others
            • +
            • Structure Module »
            • + +
            • prebeam Module for GEBT
            • - View page source + View page source
            • @@ -145,26 +159,33 @@
              -
              -

              Others

              -
              import tempscripts
              +  
              +

              prebeam Module for GEBT

              +
              import msgpi.ms.prebeam
               
              +
              +

              Preprocessing Function

              -
              -tempscripts.calcCTMKeyPoints(hw, a1, a2=None, r1=None, r2=None, hf=None)
              -

              Calculate key points of lenticular-type cross-section

              +
              +msgpi.ms.prebeam.preBeam(fn_beam, mode=1, sections=[])
              +

              Preprocessor of GEBT

              @@ -172,6 +193,7 @@

              Others + + + + + + + +

              - © Copyright 2019, s.t. + © Copyright 2020, msm group

              diff --git a/doc/build/html/presg.html b/doc/build/html/presg.html index d617082..48f861c 100644 --- a/doc/build/html/presg.html +++ b/doc/build/html/presg.html @@ -35,8 +35,8 @@ - - + + @@ -82,11 +82,15 @@

              Contents:

              @@ -132,6 +136,8 @@
            • Docs »
            • +
            • SG I/O Module »
            • +
            • presg Module
            • @@ -233,10 +239,10 @@

              presg Module - + - + diff --git a/doc/build/html/search.html b/doc/build/html/search.html index 80b1434..49f557a 100644 --- a/doc/build/html/search.html +++ b/doc/build/html/search.html @@ -25,6 +25,7 @@ + @@ -81,11 +82,9 @@

              Contents:

              diff --git a/doc/build/html/searchindex.js b/doc/build/html/searchindex.js index 2cb4329..610c022 100644 --- a/doc/build/html/searchindex.js +++ b/doc/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["analysis","index","ioutils","iovabs","presg","sg"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:54},filenames:["analysis.rst","index.rst","ioutils.rst","iovabs.rst","presg.rst","sg.rst"],objects:{"msgpi.analysis":{run:[0,0,1,""],solve:[0,0,1,""]},"msgpi.io.iovabs":{readVABSIn:[3,0,1,""],readVABSOutHomo:[3,0,1,""],writeVABSElementOrientations:[3,0,1,""],writeVABSElements:[3,0,1,""],writeVABSIn:[3,0,1,""],writeVABSMOCombos:[3,0,1,""],writeVABSMacroData:[3,0,1,""],writeVABSMaterials:[3,0,1,""],writeVABSNodes:[3,0,1,""]},"msgpi.io.utils":{textToMatrix:[2,0,1,""],writeFormatFloats:[2,0,1,""],writeFormatFloatsMatrix:[2,0,1,""],writeFormatIntegers:[2,0,1,""],writeFormatIntegersMatrix:[2,0,1,""]},"msgpi.presg":{preSG1D:[4,0,1,""],preSG:[4,0,1,""],readMaterialFromXMLElement:[4,0,1,""]},"msgpi.sg":{MaterialSection:[5,1,1,""],StructureGene:[5,1,1,""]},"msgpi.sg.MaterialSection":{compliance:[5,2,1,""],compliance_refined:[5,2,1,""],constants:[5,2,1,""],density:[5,2,1,""],eff_props:[5,2,1,""],failure_criterion:[5,2,1,""],mass_center:[5,2,1,""],mass_mc:[5,2,1,""],mass_origin:[5,2,1,""],name:[5,2,1,""],shear_center:[5,2,1,""],smdim:[5,2,1,""],stiffness:[5,2,1,""],stiffness_refined:[5,2,1,""],strength:[5,2,1,""],type:[5,2,1,""]},"msgpi.sg.StructureGene":{analysis:[5,2,1,""],degen_element:[5,2,1,""],elem_orient:[5,2,1,""],elem_prop:[5,2,1,""],elementids1d:[5,2,1,""],elementids2d:[5,2,1,""],elementids3d:[5,2,1,""],elementids:[5,2,1,""],elements:[5,2,1,""],findComboByMaterialOrientation:[5,3,1,""],findMaterialByName:[5,3,1,""],fn_gmsh_msh:[5,2,1,""],global_displacements:[5,2,1,""],global_loads:[5,2,1,""],global_loads_dist:[5,2,1,""],global_loads_type:[5,2,1,""],global_rotations:[5,2,1,""],initial_curvature:[5,2,1,""],initial_twist:[5,2,1,""],materials:[5,2,1,""],mocombos:[5,2,1,""],model:[5,2,1,""],name:[5,2,1,""],nodes:[5,2,1,""],nonuniform_temperature:[5,2,1,""],num_slavenodes:[5,2,1,""],oblique:[5,2,1,""],omega:[5,2,1,""],physics:[5,2,1,""],prop_elem:[5,2,1,""],sgdim:[5,2,1,""],smdim:[5,2,1,""],summary:[5,3,1,""],trans_element:[5,2,1,""]}},objnames:{"0":["py","function","Python function"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"]},objtypes:{"0":"py:function","1":"py:class","2":"py:attribute","3":"py:method"},terms:{"2e12":5,"2k12":5,"class":1,"default":5,"float":[2,5],"function":1,"import":[0,2,3,4,5],"int":[0,2,3,4,5],"return":[2,3,4,5],"true":[0,2,3,4],The:[2,4],after:[2,4],all:2,analysi:[1,4,5],angl:5,anisotrop:5,append:2,arrai:2,beam:5,bernoulli:5,block:2,bool:[0,2,3,4],brief:5,c11:5,c12:5,c13:5,c21:5,c22:5,c23:5,c31:5,c32:5,c33:5,calcctmkeypoint:[],calcul:[],carri:[0,4],center:5,charact:2,cid:5,classic:5,code:0,combin:5,command:0,complianc:5,compliance_refin:5,conduct:5,configur:5,connect:5,constant:5,constitut:[],content:1,continuum:5,convert:2,coordin:5,criterion:5,cross:[],curvatur:5,data:[3,4],defualt:5,degen_el:5,dehomogen:[0,4,5],densiti:5,deprec:5,design:[0,4],desir:2,dict:5,dimens:[0,4,5],dimensiona:[],displac:5,distribut:5,e11:5,e12:5,e13:5,e22:5,e23:5,e33:5,each:[2,5],eff_prop:5,effect:5,eid:5,elast:5,elem_ori:5,elem_prop:5,element:[4,5],elementid:5,elementids1d:5,elementids2d:5,elementids3d:5,elementtre:4,engin:5,envelop:[0,4],etre:4,euler:5,exampl:[2,3],excect:0,failur:[0,4,5],failure_criterion:5,fals:4,file:[0,2,3,4,5],find:5,findcombobymaterialorient:5,findmaterialbynam:5,finit:5,flag:5,flatten:[],fmt:[2,3],fn_gmsh_msh:5,fn_vabs_in:3,fobj:[2,3],format:[0,2,3,4],found:5,from:[3,4],g12:5,g13:5,g23:5,gene:[1,3,4],gener:[0,4,5],genom:[],global:5,global_displac:5,global_load:5,global_loads_dist:5,global_loads_typ:5,global_rot:5,gmsh:5,going:2,goint:2,height:[],homogen:[0,3,4,5],ids:5,includ:5,index:1,indic:[0,4],initi:[0,4,5],initial_curvatur:5,initial_twist:5,input:[0,3,4],input_nam:0,integ:2,iovab:3,isotrop:5,isotropi:5,k11:5,k12:5,k13:5,k22:5,kei:5,kirchhoff:5,length:[],lenticular:[],level:5,line:2,list:[2,5],load:5,local:[0,4,5],love:5,m11:5,m12:5,m22:5,macroscop:[0,5],manual:5,mass:5,mass_cent:5,mass_mc:5,mass_origin:5,materi:[1,4],materialsect:5,matrix:[2,5],mesh:5,messag:[0,3,4],microscop:[],mid:5,middl:[],mindlin:5,mocombo:5,model:[0,4,5],modul:1,msg:5,msgpi:[0,2,3,4,5],msm:1,msmio:[],n11:5,n12:5,n13:5,n22:5,n23:5,name:[0,3,4,5],newlin:2,nid1:5,nid2:5,nid:5,nodal:5,node:5,none:5,nonuniform_temperatur:5,nu12:5,nu13:5,nu23:5,num_slavenod:5,number:[2,5],numpi:2,object:[2,5],obliqu:5,omega:5,onli:5,option:[],orient:5,origin:5,orthotrop:5,out:[0,4],output:[2,3],page:1,paramet:[0,2,3,4,5],physic:5,piezoelectr:5,piezoelectromagnet:5,piezomagnet:5,plate:5,point:[],preprocessor:4,presg1d:4,presg:1,print:[0,3,4,5],prop_elem:5,properti:5,radian:[],radiu:[],ratio:[0,4],read:[1,4],readmaterialfromxmlel:4,readvabsin:3,readvabsouthomo:3,recov:[0,4,5],refin:5,reissner:5,repres:2,result:3,root:4,rotat:5,run:0,s11:5,s12:5,s13:5,s22:5,s23:5,s33:5,screen:[3,4],scrnout:[0,3,4],search:1,section:1,see:5,sff:3,sfi:3,sg_xml:[0,4],sgdim:5,shear:5,shear_cent:5,shell:5,side:[],slave:5,smdim:[0,4,5],solid:[],solv:0,solver:[0,4],stiff:5,stiffness_refin:5,store:5,str:[0,2,3,4,5],strain:5,strength:[0,4,5],stress:5,string:0,structur:[0,1,3,4],structuregen:[3,4,5],subtend:[],summari:5,swiftcomp:[0,4,5],temperatur:5,tempscript:[],text:2,textlist:2,texttomatrix:2,theori:5,thermoelast:5,thermopiezoelectr:5,thermopiezoelectromagnet:5,thermopiezomagnet:5,timoshenko:5,trans_el:5,transform:5,trapez:5,twist:5,type:[2,3,4,5],uniform:5,util:1,vab:[0,1,4,5],vlasov:5,web:[],what:[],whether:[3,4],writ:2,write:[1,2,4],write_input:4,writeformatfloat:2,writeformatfloatsmatrix:2,writeformatinteg:2,writeformatintegersmatrix:2,writevabsel:3,writevabselementorient:3,writevabsin:3,writevabsmacrodata:3,writevabsmateri:3,writevabsmocombo:3,writevabsnod:3,written:[2,3],xem:4,xml:[0,4],xr_sg:4,zero:5},titles:["analysis Module","Welcome to Some scripts\u2019s documentation!","I/O Utility Functions","SG I/O Module for VABS","presg Module","Class Module for MSM Structure Gene"],titleterms:{"class":5,"function":[2,3],analysi:0,beam:[],code:[],cross:[],document:1,gene:5,genom:[],indic:1,materi:5,modul:[0,3,4,5],msm:5,other:[],presg:4,read:3,script:1,section:5,some:1,structur:5,tabl:1,util:2,vab:3,welcom:1,write:3}}) \ No newline at end of file +Search.setIndex({docnames:["analysis","beam","index","iogebt","ioutils","iovabs","ms_analysis","ms_module","prebeam","presg","sg","sg_module","utils"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:54},filenames:["analysis.rst","beam.rst","index.rst","iogebt.rst","ioutils.rst","iovabs.rst","ms_analysis.rst","ms_module.rst","prebeam.rst","presg.rst","sg.rst","sg_module.rst","utils.rst"],objects:{"msgpi.analysis":{run:[0,0,1,""],solve:[0,0,1,""]},"msgpi.io.iovabs":{readVABSIn:[5,0,1,""],readVABSOutHomo:[5,0,1,""],writeVABSElementOrientations:[5,0,1,""],writeVABSElements:[5,0,1,""],writeVABSIn:[5,0,1,""],writeVABSMOCombos:[5,0,1,""],writeVABSMacroData:[5,0,1,""],writeVABSMaterials:[5,0,1,""],writeVABSNodes:[5,0,1,""]},"msgpi.io.utils":{textToMatrix:[4,0,1,""],writeFormatFloats:[4,0,1,""],writeFormatFloatsMatrix:[4,0,1,""],writeFormatIntegers:[4,0,1,""],writeFormatIntegersMatrix:[4,0,1,""]},"msgpi.ms.analysis":{runGEBT:[6,0,1,""],solveGEBT:[6,0,1,""],solvePLECS:[6,0,1,""]},"msgpi.ms.beam":{Beam:[1,1,1,""],BeamSegment:[1,1,1,""]},"msgpi.ms.beam.Beam":{analysis_type:[1,2,1,""],angular_velocity:[1,2,1,""],echo:[1,3,1,""],findPtCoordByName:[1,3,1,""],findSectionByName:[1,3,1,""],frames:[1,2,1,""],linear_velocity:[1,2,1,""],max_iteration:[1,2,1,""],mconditions:[1,2,1,""],name:[1,2,1,""],num_eigens:[1,2,1,""],num_steps:[1,2,1,""],pconditions:[1,2,1,""],points:[1,2,1,""],sections:[1,2,1,""],segments:[1,2,1,""]},"msgpi.ms.beam.BeamSegment":{calcLengthSq:[1,3,1,""],coords:[1,2,1,""],css:[1,2,1,""],local_frame_id:[1,2,1,""],num_divisions:[1,2,1,""],points:[1,2,1,""],twist:[1,2,1,""]},"msgpi.ms.iogebt":{readGEBTIn:[3,0,1,""],readGEBTOut:[3,0,1,""],readGEBTOutEigen:[3,0,1,""],readGEBTOutNode:[3,0,1,""],readGEBTOutStatic:[3,0,1,""],writeGEBTIn:[3,0,1,""]},"msgpi.ms.prebeam":{preBeam:[8,0,1,""]},"msgpi.presg":{preSG1D:[9,0,1,""],preSG:[9,0,1,""],readMaterialFromXMLElement:[9,0,1,""]},"msgpi.sg":{MaterialSection:[10,1,1,""],StructureGene:[10,1,1,""]},"msgpi.sg.MaterialSection":{compliance:[10,2,1,""],compliance_refined:[10,2,1,""],constants:[10,2,1,""],density:[10,2,1,""],eff_props:[10,2,1,""],failure_criterion:[10,2,1,""],mass_center:[10,2,1,""],mass_mc:[10,2,1,""],mass_origin:[10,2,1,""],name:[10,2,1,""],shear_center:[10,2,1,""],smdim:[10,2,1,""],stiffness:[10,2,1,""],stiffness_refined:[10,2,1,""],strength:[10,2,1,""],type:[10,2,1,""]},"msgpi.sg.StructureGene":{analysis:[10,2,1,""],degen_element:[10,2,1,""],elem_orient:[10,2,1,""],elem_prop:[10,2,1,""],elementids1d:[10,2,1,""],elementids2d:[10,2,1,""],elementids3d:[10,2,1,""],elementids:[10,2,1,""],elements:[10,2,1,""],findComboByMaterialOrientation:[10,3,1,""],findMaterialByName:[10,3,1,""],fn_gmsh_msh:[10,2,1,""],global_displacements:[10,2,1,""],global_loads:[10,2,1,""],global_loads_dist:[10,2,1,""],global_loads_type:[10,2,1,""],global_rotations:[10,2,1,""],initial_curvature:[10,2,1,""],initial_twist:[10,2,1,""],materials:[10,2,1,""],mocombos:[10,2,1,""],model:[10,2,1,""],name:[10,2,1,""],nodes:[10,2,1,""],nonuniform_temperature:[10,2,1,""],num_slavenodes:[10,2,1,""],oblique:[10,2,1,""],omega:[10,2,1,""],physics:[10,2,1,""],prop_elem:[10,2,1,""],sgdim:[10,2,1,""],smdim:[10,2,1,""],summary:[10,3,1,""],trans_element:[10,2,1,""]},"msgpi.utils":{calcCab:[12,0,1,""],calcRotationTensorFromParameters:[12,0,1,""]}},objnames:{"0":["py","function","Python function"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"]},objtypes:{"0":"py:function","1":"py:class","2":"py:attribute","3":"py:method"},terms:{"2e12":10,"2k12":10,"3x1":12,"3x3":12,"6x6":6,"class":[2,7,11],"default":10,"float":[1,3,4,6,10,12],"function":[2,6,7,11],"import":[0,1,3,4,5,6,8,9,10,12],"int":[0,1,4,5,8,9,10],"return":[1,3,4,5,6,9,10,12],"static":[3,6],"switch":6,"true":[0,4,5,6,9],SGs:8,The:[4,6,9],a_1:12,a_2:12,a_3:12,a_i:12,after:[4,9],all:4,analysi:[1,2,3,7,9,10,11],analysis_typ:1,angl:10,angular:1,angular_veloc:1,anisotrop:10,append:4,appli:6,arrai:4,b_1:12,b_2:12,b_3:12,b_j:12,basi:12,beam:[2,3,6,7,8,10],beam_xml:6,beamseg:1,bernoulli:10,between:12,blank:3,block:4,book:6,bool:[0,4,6,9],brief:10,bsid:1,c11:10,c12:10,c13:10,c21:10,c22:10,c23:10,c31:10,c32:10,c33:10,calccab:12,calcctmkeypoint:[],calclengthsq:1,calcrotationtensorfromparamet:12,calcul:[1,12],cantilev:6,carri:[0,6,9],cdot:12,center:10,charact:4,cid:10,classic:10,cmd:6,code:[0,1],combin:10,command:0,complianc:[6,10],compliance_refin:10,composit:6,condit:1,conduct:10,configur:10,connect:10,constant:10,constitut:[],construct:3,content:[2,7,11],continuum:10,convert:4,coord:1,coordin:[1,10],cosin:12,creat:8,criterion:10,cross:[1,6,8],css:1,curvatur:10,dat:3,data:[1,3,5,6,9],defualt:10,degen_el:10,dehomogen:[0,9,10],densiti:10,deprec:10,design:[0,9],desir:4,dict:[1,10],dimens:[0,9,10],dimensiona:[],direct:12,displac:[6,10],distribut:10,divis:1,e11:10,e12:10,e13:10,e22:10,e23:10,e33:10,each:[4,10],echo:1,eff_prop:10,effect:[1,10],eid:10,eigen:[1,3],elast:[6,10],elem_ori:10,elem_prop:10,element:[9,10],elementid:10,elementids1d:10,elementids2d:10,elementids3d:10,elementtre:9,end:1,engin:10,envelop:[0,9],equat:6,etre:9,eular:12,euler:10,exampl:[4,5,12],excect:0,failur:[0,9,10],failure_criterion:10,fals:9,file:[0,3,4,5,6,8,9,10],find:[1,6,10],findcombobymaterialorient:10,findmaterialbynam:10,findptcoordbynam:1,findsectionbynam:1,finit:10,first:1,flag:10,flatten:[],fmt:[4,5],fn_beam:8,fn_gebt_in:3,fn_gebt_out:3,fn_gmsh_msh:10,fn_input:6,fn_vabs_in:5,fobj:[4,5],forc:6,format:[0,4,5,9],found:10,frame:[1,12],from:[3,5,6,9,12],g12:10,g13:10,g23:10,gebt:[1,2,7],gene:[2,5,9,11],gener:[0,9,10],genom:[],given:6,global:[6,8,10],global_displac:10,global_load:10,global_loads_dist:10,global_loads_typ:10,global_rot:10,gmsh:10,going:[3,4],goint:4,height:[],hodg:6,homogen:[0,5,9,10],ids:10,includ:[6,10],index:2,indic:[0,9],initi:[0,9,10],initial_curvatur:10,initial_twist:10,input:[0,3,5,6,8,9],input_nam:0,integ:4,iogebt:3,iovab:5,isotrop:10,isotropi:10,iter:1,k11:10,k12:10,k13:10,k22:10,kei:[1,10],kirchhoff:10,label:1,left:3,length:[1,6],lenticular:[],level:10,like:1,line:[3,4],linear:1,linear_veloc:1,linearli:6,list:[1,3,4,6,8,10,12],load:[1,6,10],local:[0,1,9,10],local_frame_id:1,locat:6,love:10,m11:10,m12:10,m22:10,macroscop:[0,10],main:8,mainli:1,manual:10,mass:10,mass_cent:10,mass_mc:10,mass_origin:10,materi:[9,11],materialsect:[1,8,10],matrix:[4,6,10,12],max:1,max_iter:1,mcondit:1,member:1,mesh:10,messag:[0,9],method:12,microscop:[],mid:10,middl:[],milenkov:12,mindlin:10,mocombo:10,mode:8,model:[0,9,10],modul:2,moment:6,msg:10,msgpi:[0,1,3,4,5,6,8,9,10,12],msm:[2,11],msmio:[],n11:10,n12:10,n13:10,n22:10,n23:10,name:[0,1,3,5,6,8,9,10],newlin:4,nid1:10,nid2:10,nid:10,nodal:[3,10],node:[3,10],none:[1,10],nonlinear:6,nonuniform_temperatur:10,nu12:10,nu13:10,nu23:10,num_divis:1,num_eigen:1,num_slavenod:10,num_step:1,number:[1,3,4,10],numpi:4,object:[1,3,4,10],obliqu:10,omega:10,onli:10,option:[],orient:10,origin:10,orthotrop:10,out:[0,6,9],output:[3,4,5,6],page:2,paramet:[0,1,3,4,5,6,8,9,10,12],pars:6,pcondit:1,physic:10,piezoelectr:10,piezoelectromagnet:10,piezomagnet:10,plate:10,point:[1,6],prebeam:[2,7],pregebt:8,preprocess:[6,7],preprocessor:[8,9],presg1d:9,presg:[2,11],print:[0,1,6,9,10],prismat:6,problem:6,prop_elem:10,properti:[1,8,10],ptid:1,radian:[],radiu:[],ratio:[0,9],read:[7,9,11],readgebtin:3,readgebtout:3,readgebtouteigen:3,readgebtoutnod:3,readgebtoutstat:3,readmaterialfromxmlel:9,readvabsin:5,readvabsouthomo:5,recov:[0,9,10],refin:10,reissner:10,repres:4,result:[3,5,6],resutl:1,rodrigu:12,root:9,rotat:[1,6,10,12],run:[0,6,8],rungebt:6,s11:10,s12:10,s13:10,s22:10,s23:10,s33:10,same:3,screen:9,scrnout:[0,5,6,9],search:2,section:[1,6,8,11],see:10,segment:7,self:1,sff:5,sfi:5,sg_xml:[0,9],sgdim:10,shear:10,shear_cent:10,shell:10,sid:1,side:[],slave:10,slender:1,smdim:[0,9,10],solid:[],solv:[0,6],solvegebt:6,solveplec:6,solver:[0,9],squar:1,squre:1,start:1,step:1,stiff:10,stiffness_refin:10,store:10,str:[0,1,3,4,5,6,8,9,10,12],strain:10,strength:[0,9,10],stress:10,string:[0,5],structur:[0,1,2,5,9,11],structuregen:[5,9,10],subtend:[],summari:10,swiftcomp:[0,9,10],tabl:3,temperatur:10,tempscript:[],tensor:12,text:4,textlist:4,texttomatrix:4,theori:[6,10],thermoelast:10,thermopiezoelectr:10,thermopiezoelectromagnet:10,thermopiezomagnet:10,thi:[1,3,6],three:[6,12],timoshenko:10,tip:6,total:6,trans_el:10,transform:10,trapez:10,twist:[1,10],type:[1,3,4,5,6,9,10,12],uniform:10,used:6,using:6,util:[2,11],va1:1,va2:1,va3:1,vab:[0,2,9,10,11],veloc:1,vlasov:10,wa1:1,wa2:1,wa3:1,want:6,web:[],what:[],where:6,whether:9,wiener:12,writ:4,write:[4,7,9,11],write_input:9,writeformatfloat:4,writeformatfloatsmatrix:4,writeformatinteg:4,writeformatintegersmatrix:4,writegebtin:3,writevabsel:5,writevabselementorient:5,writevabsin:5,writevabsmacrodata:5,writevabsmateri:5,writevabsmocombo:5,writevabsnod:5,written:[3,4,5],xem:9,xml:[0,6,8,9],xr_sg:9,zero:10},titles:["analysis Module","Class Module for Beam","Welcome to Some scripts\u2019s documentation!","I/O Module for GEBT","I/O Utility Functions","SG I/O Module for VABS","analysis Module for GEBT","Structure Module","prebeam Module for GEBT","presg Module","Class Module for MSM Structure Gene","SG Module","Utility Functions"],titleterms:{"class":[1,10],"function":[3,4,5,8,12],analysi:[0,6],beam:1,code:[],cross:[],document:2,gebt:[3,6,8],gene:10,genom:[],indic:2,materi:10,modul:[0,1,3,5,6,7,8,9,10,11],msm:10,other:[],prebeam:8,preprocess:8,presg:9,read:[3,5],script:2,section:10,segment:1,some:2,structur:[7,10],tabl:2,util:[4,12],vab:5,welcom:2,write:[3,5]}}) \ No newline at end of file diff --git a/doc/build/html/sg.html b/doc/build/html/sg.html index 403fb45..33f0576 100644 --- a/doc/build/html/sg.html +++ b/doc/build/html/sg.html @@ -35,8 +35,8 @@ - - + + @@ -82,13 +82,19 @@

              Contents:

              Parameters:
                -
              • hw – Web length
              • -
              • a1 – Subtended angle (radian) of the side shell
              • -
              • a2 – Subtended angle (radian) of the middle shell
              • -
              • r1 – Radius of the side shell
              • -
              • r2 – Radius of the middle shell
              • -
              • hf – Flattened height
              • +
              • fn_beam (str) – File name of the preGEBT main input file (.xml).
              • +
              • mode (int) –

                Mode of preprocessing.

                +
                +
                  +
                • 1 - create SG (cross-section) input files
                • +
                • 2 - run SGs
                • +
                • 3 - create global 1D beam input file
                • +
                +
                +
              • +
              • sections (list(MaterialSection)) – List of sectional properties.
              +++ + + + +
              Parameters:
                +
              • rp (list(float)) – Rotation parameters (3x1).
              • +
              • method (str) –

                Rotation parameter type.

                +
                  +
                • er - Eular-Rodrigues
                • +
                • wm - Wiener-Milenkovic
                • +
                +
              • +
              +
              +
              + +
              +
              +msgpi.utils.calcCab(a, b)
              +

              Calculate the direction cosine matrix between frame a and b

              +

              \(C_{ij} = a_i\ \cdot\ b_j\)

              + +++ + + + + + + + +
              Parameters:
                +
              • a (list(float)) – List of three a basis (a_1, a_2, a_3).
              • +
              • b (list(float)) – List of three b basis (b_1, b_2, b_3).
              • +
              +
              Returns:

              3x3 matrix of the direction cosine.

              +
              Return type:

              list(list(float))

              +
              +

              Examples

              +
              >>> a = [
              +...     [1., 0., 0.],
              +...     [0., 1., 0.],
              +...     [0., 0., 1.]
              +... ]
              +>>> b = [
              +...     [],
              +...     [],
              +...     []
              +... ]
              +>>> utilities.calcCab(a, b)
              +
              +
              +
              + +
              + + +
              + +
              + + +
              +
              + + + +
              + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/source/beam.rst b/doc/source/beam.rst new file mode 100644 index 0000000..c649e85 --- /dev/null +++ b/doc/source/beam.rst @@ -0,0 +1,21 @@ +Class Module for Beam +===================== + +.. highlight:: python + +:: + + import msgpi.ms.beam + +Beam segment +------------ + +.. autoclass:: msgpi.ms.beam.BeamSegment + :members: + +Beam +---- + +.. autoclass:: msgpi.ms.beam.Beam + :members: + diff --git a/doc/source/index.rst b/doc/source/index.rst index cc41001..1fc1901 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -10,11 +10,9 @@ Welcome to Some scripts's documentation! :maxdepth: 2 :caption: Contents: - sg - iovabs - ioutils - presg - analysis + sg_module + ms_module + utils Indices and tables ================== diff --git a/doc/source/iogebt.rst b/doc/source/iogebt.rst new file mode 100644 index 0000000..c775346 --- /dev/null +++ b/doc/source/iogebt.rst @@ -0,0 +1,27 @@ +I/O Module for GEBT +=================== + +.. highlight:: python + +:: + + import msgpi.ms.iogebt + +Reading Functions +----------------- + +.. autofunction:: msgpi.ms.iogebt.readGEBTIn + +.. autofunction:: msgpi.ms.iogebt.readGEBTOut + +.. autofunction:: msgpi.ms.iogebt.readGEBTOutNode + +.. autofunction:: msgpi.ms.iogebt.readGEBTOutStatic + +.. autofunction:: msgpi.ms.iogebt.readGEBTOutEigen + +Writing Functions +----------------- + +.. autofunction:: msgpi.ms.iogebt.writeGEBTIn + diff --git a/doc/source/ms_analysis.rst b/doc/source/ms_analysis.rst new file mode 100644 index 0000000..92b2588 --- /dev/null +++ b/doc/source/ms_analysis.rst @@ -0,0 +1,16 @@ +analysis Module for GEBT +======================== + +.. highlight:: python + +:: + + import msgpi.ms.analysis + + +.. autofunction:: msgpi.ms.analysis.solveGEBT + +.. autofunction:: msgpi.ms.analysis.runGEBT + +.. autofunction:: msgpi.ms.analysis.solvePLECS + diff --git a/doc/source/ms_module.rst b/doc/source/ms_module.rst new file mode 100644 index 0000000..02e3b0c --- /dev/null +++ b/doc/source/ms_module.rst @@ -0,0 +1,11 @@ +Structure Module +================ + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + beam + iogebt + prebeam + ms_analysis diff --git a/doc/source/prebeam.rst b/doc/source/prebeam.rst new file mode 100644 index 0000000..0c2e326 --- /dev/null +++ b/doc/source/prebeam.rst @@ -0,0 +1,14 @@ +prebeam Module for GEBT +======================= + +.. highlight:: python + +:: + + import msgpi.ms.prebeam + +Preprocessing Function +---------------------- + +.. autofunction:: msgpi.ms.prebeam.preBeam + diff --git a/doc/source/sg_module.rst b/doc/source/sg_module.rst new file mode 100644 index 0000000..5017285 --- /dev/null +++ b/doc/source/sg_module.rst @@ -0,0 +1,12 @@ +SG Module +============= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + sg + presg + iovabs + ioutils + analysis diff --git a/doc/source/utils.rst b/doc/source/utils.rst new file mode 100644 index 0000000..ba80118 --- /dev/null +++ b/doc/source/utils.rst @@ -0,0 +1,12 @@ +Utility Functions +================= + +.. highlight:: python + +:: + + import msgpi.utils + +.. autofunction:: msgpi.utils.calcRotationTensorFromParameters + +.. autofunction:: msgpi.utils.calcCab diff --git a/io/iovabs.pyc b/io/iovabs.pyc index 008f4916a7506d0f84e5a998823d17b9597de23a..a138740387262f03c1509a02e8064ebcaa4f62e2 100644 GIT binary patch delta 4518 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 diff --git a/ms/__init__.pyc b/ms/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c607f6bba5b6451edb862dea600aff833d2b111a GIT binary patch literal 161 zcmZSn%*&OhAs3g-00oRd+5w1*S%5?e14FO|NW@PANHCxg#a=)$XRDad;?$zzn9{t= zlEj$e#GIU%Vgn=H;*!#o%9vtf-IUa_)SUc+m=p`$^rHOIg81~zl9=4$^ny$v8519$ e3Dg%KuUAl6!T~hSCO1E&G$+*#WN9%FGXMbDX(lTG literal 0 HcmV?d00001 diff --git a/ms/analysis.py b/ms/analysis.py index 7decb1a..9693980 100644 --- a/ms/analysis.py +++ b/ms/analysis.py @@ -9,7 +9,20 @@ def solveGEBT(beam_xml, scrnout=True): - """ Carry out a global beam analysis using GEBT + """Carry out a global beam analysis using GEBT. + + This function includes the preprocessing of the input data, + running GEBT and parsing the results. + + Parameters + ---------- + beam_xml : str + Beam xml input file. + scrnout : bool + Switch for printing GEBT cmd outputs. + + Returns + ------- """ # Preprocess @@ -31,6 +44,19 @@ def solveGEBT(beam_xml, scrnout=True): def runGEBT(fn_input, scrnout=True): + """Run GEBT analysis. + + Parameters + ---------- + fn_input : str + File name of the GEBT input. + scrnout : bool + Switch for printing GEBT cmd outputs. + + Returns + ------- + File name of the GEBT output. + """ cmd = ['gebt', fn_input] # cmd = ' '.join(cmd) @@ -60,14 +86,19 @@ def solvePLECS(length, compliance, x1, f1=0, f2=0, f3=0, m1=0, m2=0, m3=0): Nonlinear Composite Beam Theory by D. H. Hodges are used. - :param length: Total length of the beam - :type length: float - - :param compliance: The 6x6 compliance matrix of the beam cross-section - :type compliance: list of list of float - - :param x1: The location where the result is wanted. - :type x1: float + Parameters + ---------- + length : float + Total length of the beam. + compliance : list(list(float)) + The 6x6 compliance matrix of the beam cross-section. + x1 : float + The location where the result is wanted. + + Returns + ------- + list(list(float)) + Results (displacement, rotations, forces, moments). """ F = np.array([[f1, f2, f3, m1, m2, m3]]).T diff --git a/ms/analysis.pyc b/ms/analysis.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e72cb9fba875048eb5c50706e05dd76aa0e3f7c GIT binary patch literal 4011 zcmcInZEqXL5uQ6r)QcrimfwM(*`jDd0TNqTh>;j>>sq#xCXSp^a#IK_gd=ZBoqTV( z-IK(E`V{wjf&PSk>aXZODhl)mw9m}mQBq!te29;Cdvi0hGqbZZJHy6*mKQ(IyN3g+ zt~tCP<1zoh5aRYICOVkH9vyf!-lu~`4bRZQYz;T*V6KMe>3D&T7wOks>7RZ;;bLUs;`4Y1!)kEO=MJQqI9G_e)eR)v$&{m?H>U-_9u&gQ5(;g~*qTb!7eNsu+Uml{%+2W~ zpKRyhSrV&<%Gg3sY~K?$pV3b7Fp70Yh-OfvywHcLpJnlsfA2K1gCjM}3fLc|c52%o z3E45QzP6{UZCRvOjB%1@;m(d3bzU3Z_6`=?zQ)_mZqAE7Hi6%oO|$cWjTY}2%M&B3 z6C*51l$`{9V_U!$Itc&p+b4T3OZ!QdWC#nQl)b^Sz&O%Ii9&fNCUZ>AT)PMn!}O3f#+pOAwiq=8Rk zU1cTG5ZQw?^IVp?ob-@E#gjT49X;)kMS@A@g~(jUX6WSF)il?BP}IZWF0ijg{d0u5;`mTi+VQr#6nNXw&q?>) z>Rt9Y{SsjuIp#Lj&T}?ZeH1Xd)9EZ)97uEuA7j64$RSmMx+r#CY602iFm!P`Hr+e? z!D%FUAkZ)_&5>j1=c0FjfD<6gb!z#D&RoVJ?$Q!8*0Z<&^yRDlHb;%*N$u(G5@R@( zaUzI<=ew_7ym)IN-sKSQ;1N&J%2K1@t$NE|(_8h|JmobSvwj3J4Vdu;9u6r9^1oqe zRjp}o4dJqZVt~_so<>a?p(=P>cg`0oHe`gmM+jX9`&7Y#0gRiA(Bd~GGifUDT1}m* zyF^9oqx{@u%U~AD(SnrIS^5idPf9C*p-=aaQaA6MFLC)|{FFfeW;kEIN<-0~VJSje z5n7GH>`Szk*aw-5vY1sVoy&BSD=5he*?A+Jr(3m|kOp2h2s}0MVhJnkM<(B`$Sj8E z^XDu?EnJ9luEWw>l}tBp^}84Oh;3TAV$+4%R;Bau+)E3s=EAi9v$EO>tPEo6*;9wZ zmm;PG8JFobBhxE`;6|Kuh^On~UPRk&H6bV=LeSY!XIqs5nY>P{d=U!KFmgRONnEV4w*L(B16=Iv&wTbkO*k~}jg z-mYcYKhhamvHn;+?Wj+1XW>Y@ULzKaRS~Ni z!3E!)&I8yIM?pH!m>5UKwq+0z>+2Un;OGZu57Z@gY*!JT)m4WjszH$%vsv{xPCnfH zErTE{&IaN-b$X<+#)}S6p~pPMUQgHjeXZB`+uC)Vh-zPsi48T41Z;9vpjX8PXA&;! z&eRbOQ@JYO-~X(E-|R+Q1tKmM5f_n~^>GEh2{(GV!Uybfx9sVZSJK_a*@80lL2ebm4G;e(ZLdTZczU7M8L8HE+3L?d)y$Tl4U1 KEd6Zhr~d=t@s#uc literal 0 HcmV?d00001 diff --git a/ms/beam.py b/ms/beam.py index 80ed51f..5c38f9a 100644 --- a/ms/beam.py +++ b/ms/beam.py @@ -3,61 +3,88 @@ class BeamSegment(object): - """ Class for a beam segment. + """Class for a beam segment. """ def __init__(self): - self.points = [] #: Point labels [start, stop] - self.coords = [] #: Coordinates [[x1, x2, x3], [x1, x2, x3]] - self.css = [] #: Cross-section labels [start, stop] + #: list(int): Point labels. + #: `[starting point, ending point]` + self.points = [] + #: list(list(float)): Coordinates of starting and ending points. + #: `[[x1, x2, x3], [x1, x2, x3]]` + self.coords = [] + #: list(int): Cross-section labels. + #: `[starting, ending]` + self.css = [] self.rotate_a1 = 0.0 - self.twist = 0.0 #: Twist - # self.dihedral = 0. #: Dihedral - # self.sweep = 0. #: Sweep - self.local_frame_id = 0 #: Local frame + #: float: Twist. + self.twist = 0.0 + # self.dihedral = 0. + # self.sweep = 0. + #: int: Local frame id. + self.local_frame_id = 0 self.frame_id = 0 self.curv_id = 0 - self.num_divisions = 1 #: Number of divisions for meshing + #: int: Number of division of the segment. + self.num_divisions = 1 def calcLengthSq(self): + """Calculate the square of the segment length. + + Returns + ------- + float + Squred length of the segment. + """ return ((np.array(self.coords[0]) - np.array(self.coords[1]))**2).sum() class Beam(object): - """ A slender beam-like structure + """Class for a slender beam-like structure. This class is mainly for the GEBT code. """ def __init__(self): - self.name = '' #: Name of the beam + #: str: Name of the beam. + self.name = '' # Analysis - self.analysis_type = 0 #: Analysis type (GEBT) - self.max_iteration = 1 #: Max iteration - self.num_steps = 1 #: Number of analysis steps - self.num_eigens = 0 #: Number of eigen analysis resutls + #: int: Analysis type (GEBT). + self.analysis_type = 0 + #: int: Max iteration. + self.max_iteration = 1 + #: int: Number of analysis steps. + self.num_steps = 1 + #: int: Number of eigen analysis resutls. + self.num_eigens = 0 # Design - self.angular_velocity = [] #: Angular velocity of the rotating beam - self.linear_velocity = [] #: Linear velocity of the first key point - - #: Points - #: {ptid: [x1, x2, x3], ...} + #: list(float): Angular velocity of the rotating beam. + #: `[wa1, wa2, wa3]` + self.angular_velocity = [] + #: list(float): Linear velocity of the first key point. + #: `[va1, va2, va3]` + self.linear_velocity = [] + + #: dict(int, list(float)): Key point id and coordinates. + #: `{ptid: [x1, x2, x3], ...}` self.points = {} - #: Beam segments - #: {bsid: BeamSegment object, ...} + #: dict(int, :obj:`BeamSegment`): Beam segments + #: `{bsid: BeamSegment object, ...}` self.segments = {} - # self.divisions = [] #: Divisions of members - self.pconditions = [] #: Point conditions (B.C. and loads) - self.mconditions = [] #: Member conditions (B.C. and loads) + # self.divisions = [] # Divisions of members + #: list: Point conditions (B.C. and loads). + self.pconditions = [] + #: list: Member conditions (B.C. and loads). + self.mconditions = [] - #: Effective properties of cross-sections - #: {sid: MaterialSection object, ...} + #: dict(int, :obj:`MaterialSection`): Effective properties of cross-sections. + #: `{sid: MaterialSection object, ...}` self.sections = {} self.frames = {} #: Local self.frames @@ -69,6 +96,8 @@ def __init__(self): # self.results = None #: Results of GEBT analysis def echo(self): + """Print the beam data. + """ print('') print('Key Point Coordinates') print('='*40) @@ -86,12 +115,36 @@ def echo(self): print('') def findPtCoordByName(self, name): + """Find key point coordinates by point id. + + Parameters + ---------- + name : int + Point id. + + Returns + ------- + list(float) + Point coordinates. + """ for i, c in self.points.items(): if i == name: return c return None def findSectionByName(self, name): + """Find sectional properties by section id. + + Parameters + ---------- + name : int + Section id. + + Returns + ------- + :obj:`MaterialSection` + Sectional properties. + """ for i, s in self.sections.items(): if s.name == name: return i diff --git a/ms/beam.pyc b/ms/beam.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c8480ecbb629ef10763fc39dacd47585cc67aafa GIT binary patch literal 4008 zcmcIn-EP!I6dvzivLPW9Xhl_8T%n4s)I@8_z7w zmgEYgUiGez)JNzm@C1E;_WO?4n;)ujQSip&GiS!2H7ad$s-2;YZl?u%@!z=C z?J_yEeVWq`+4C8?k3E- zrnI{}=i&-!m3NI(ahv;S21@NJj-Y|zD_H;W9 zSYC(e@{0M0>AKTKW4QyvJkG2UG0gKKGM1ka8e=)7$ZcS?A6&FezVLHwtUV4X$-^M= z`$dpyKaT7yRMXB3I^n2z%7F#Q*(mj+_-Sn7JTo17w_KLdNxy@qlE&PCw6@y2Z**aL zqb#;T&jd-*Gb@*tj2%Vep80$!(oc1g4|~yn`CEL6u8~^@u=dh}#s5*mfJ_X!8uQu8I zMk7HIjuLE`YaeUZY>$FMyLrFtl@M?foek{cwME7@?c$YQHDv< zsDGDo8Mi#=Z1NN$%Mfa<=kjN`R@=WOah_g4Pi|( z2|!;Gh)^3fjf#kxmC#ba7KdgkVYV7-SHfI1bgUBQtD%KTI9>^h2gnNf2ab|Pi0TAH z*?7W2_$0`JWNc#N+wri}q`{6KTU`Ve6eGMv&M{UGjlhUK9S?M7EX@Vk09ji2Ct44vAryXHiTyWj{U8FDHlPAWsA?(_YD?_`YBOrL2I{QcytRE^{a9L> zJ!I*DSgMnX#nSg;sjl{L_O->*oZ5xoV`{fSkI}pc7+nwnX?9!$oQ#Vi%)n3!4%5ov z2^^2_;6u!ZXzms`1%;>Oyp94J>@%r%n$zAzb6bzyyF4)6HJ+7m2Cg@jQ29D01DUI6 zcuO|SM*-ly?D5Lsp<+9<4t+uJ;N2=(dj1m;JWS; zCB)uCXwy>rES>tndxnnSRot5ga3h^?Uk|a;_KUO}2Be=(CIW(##6K)c=FzU49AQ}; z;Jq><@tOz(?s|v#FVlu#K|ZEsS%Eqz4Xk&T!*w>Ka*qeI$5(^|1?%1?)RCvW3uwgU zrs2N6`Ll>;z78Mfn|PWtbWv|QO`!d(^8ubB)!NQi^^oh~Y%YBbx4DdFXXyyk&k8_+ zcCaTX)lpAssyIQ6cDGLm&4 znSf$pS{sld-BlOxoT_*Nlz=^C?{zgt0=nu*;qmFem^!fD{UlkJ@>k;TE#Vsl80&ea zrSK@@%M_AqiKPwSPH34j$du@=l_b43UdO(SpfrS=S~%;>JG0KKas2{=J1a-xdhS46 zK}QEeTRR%smoOlqHCmWGNZetO4|QQFKb=*F|?V-`rY#bO+p3 z#6dDK@#s*XC(1)#upetVp38Wj!#7L3JqGtktUaDF66&{<#Z{;$%Pm9wE1XV4y@*hE zgm8HBdwjt=$wq3(6-vx!?+TiIIEwTJ|0VHG!Te{q4XfH#1J&e8`&9d+aHdq_C{c!E zj}@}~`y&6-ESrIFARZ(igMW5dRv>zax(7*#-M6=FS<2P21pkJooD{?J&SL$&3;zJ* C*@IdD literal 0 HcmV?d00001 diff --git a/ms/iogebt.py b/ms/iogebt.py index 0d7103d..517c567 100644 --- a/ms/iogebt.py +++ b/ms/iogebt.py @@ -13,6 +13,18 @@ # ==================================================================== def readGEBTIn(fn_gebt_in): + """Read GEBT input. + + Parameters + ---------- + fn_gebt_in : str + File name of the GEBT input. + + Returns + ------- + :obj:`Beam` + Beam object constructed from the data. + """ beam = msb.Beam() # results = {} @@ -81,6 +93,20 @@ def readGEBTIn(fn_gebt_in): # -------------------------------------------------------------------- def readGEBTOutNode(lines): + """Read GEBT nodal results. + + Parameters + ---------- + lines : list(str) + File name of the GEBT output. + beam : :obj:`Beam` + Beam object. + + Returns + ------- + list(list(float)) + Table of result numbers for this node. + """ out = [] for l in lines: out += list(map(float, l.strip().split())) @@ -95,6 +121,18 @@ def readGEBTOutNode(lines): def readGEBTOutStatic(fn_gebt_out, beam): + """Read GEBT results of static analysis. + + Parameters + ---------- + fn_gebt_out : str + File name of the GEBT output. + beam : :obj:`Beam` + Beam object. + + Returns + ------- + """ flag_analysis = beam.analysis_type nstep = beam.num_steps nkp = len(beam.points) @@ -164,6 +202,18 @@ def readGEBTOutStatic(fn_gebt_out, beam): # -------------------------------------------------------------------- def readGEBTOutEigen(fn_gebt_out, beam): + """Read GEBT results of eigen analysis. + + Parameters + ---------- + fn_gebt_out : str + File name of the GEBT output. + beam : :obj:`Beam` + Beam object. + + Returns + ------- + """ # if len(gebtin) == 0: # gebtin = readGEBTIn(gebtin_name) @@ -306,6 +356,18 @@ def readGEBTOutEigen(fn_gebt_out, beam): def readGEBTOut(fn_gebt_out, beam): + """Read GEBT results. + + Parameters + ---------- + fn_gebt_out : str + File name of the GEBT output. + beam : :obj:`Beam` + Beam object + + Returns + ------- + """ flag_analysis = beam.analysis_type if flag_analysis <= 1: return readGEBTOutStatic(fn_gebt_out, beam) @@ -331,7 +393,22 @@ def readGEBTOut(fn_gebt_out, beam): # ==================================================================== def writeGEBTIn(beam, fn_gebt_in=''): - """ Write data to the GEBT input""" + """Write data to the GEBT input. + + Parameters + ---------- + beam : :obj:`Beam` + Beam object that is going to be written to file. + fn_gebt_in : str + File name of the GEBT input. + If left blank, the file name will be the same as the beam name, + i.e., `[beam.name].dat`. + + Returns + ------- + str + File name of the GEBT input. + """ if fn_gebt_in == '': fn_gebt_in = beam.name + '.dat' diff --git a/ms/iogebt.pyc b/ms/iogebt.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ad993af59ece55aab869cca8b3c2c56c5b923f6 GIT binary patch literal 9030 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 literal 0 HcmV?d00001 diff --git a/ms/prebeam.py b/ms/prebeam.py index 8d08dd8..91bf430 100644 --- a/ms/prebeam.py +++ b/ms/prebeam.py @@ -10,14 +10,18 @@ def preBeam(fn_beam, mode=1, sections=[]): """ Preprocessor of GEBT - :param fn_beam: File name of the PreGEBT main input file (.xml) - :type fn_beam: string - - :param mode: Mode of running - 1 - create SG (cross-section) input files - 2 - run SGs - 3 - create global 1D beam input file - :type mode: int + Parameters + ---------- + fn_beam : str + File name of the preGEBT main input file (.xml). + mode : int + Mode of preprocessing. + + * 1 - create SG (cross-section) input files + * 2 - run SGs + * 3 - create global 1D beam input file + sections : list(:obj:`MaterialSection`) + List of sectional properties. """ beam = msb.Beam() diff --git a/ms/prebeam.pyc b/ms/prebeam.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2eac118b588638e87587a7e77d70274f8d628000 GIT binary patch literal 9867 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 Q+I#FVDI6uktl&%jFOrc(6#xJL literal 0 HcmV?d00001 diff --git a/utils.py b/utils.py index 11618a2..9af9487 100644 --- a/utils.py +++ b/utils.py @@ -25,15 +25,17 @@ def tilde(v): def calcRotationTensorFromParameters(rp, method=''): - """ Calculate rotation tensor from rotation parameters + """Calculate rotation tensor from rotation parameters. - :param rp: Rotation parameters (3x1) - :type rp: list-like + Parameters + ---------- + rp : list(float) + Rotation parameters (3x1). + method : str + Rotation parameter type. - :param method: Rotation parameter type - er - Eular-Rodrigues - wm - Wiener-Milenkovic - :type method: string + * `er` - Eular-Rodrigues + * `wm` - Wiener-Milenkovic """ C = np.zeros((3, 3)) if method == 'er': @@ -129,17 +131,20 @@ def calcCab(a, b): :math:`C_{ij} = a_i\ \cdot\ b_j` - :param a: list of three a basis (a_1, a_2, a_3) - :type a: list + Parameters + ---------- + a : list(float) + List of three a basis (a_1, a_2, a_3). + b : list(float) + List of three b basis (b_1, b_2, b_3). - :param b: list of three b basis (b_1, b_2, b_3) - :type b: list - - :return: 3a3 matrix of the direction cosine - :rtype: numpy.array - - :Example: + Returns + ------- + list(list(float)) + 3x3 matrix of the direction cosine. + Examples + -------- >>> a = [ ... [1., 0., 0.], ... [0., 1., 0.], diff --git a/utils.pyc b/utils.pyc index 38be490aad3d8b2784b89c47d0b5643b320f3d64..7b93baa16498952a7bfafe6381de1df15ecf41bf 100644 GIT binary patch delta 539 zcmdnz^xTP^`7?>JV1sNF_6ee$BF{bxqR9=c(!4MsAYGn2c_FK$h!xl}n32ULMVWc&o42w?F*0&*7GSSrWVG1a#i7B- z=(Kq=rvekB_vS0yl}wDuoBj9<85zqaH}J1zl$@+5ki`x4UZRyk&gAm~D#}P+0f_;9 zg5rrJkUAkj6m=jmgu0^ClG36)D+S}k$%TRnlXH0``5|VyRwU*YYJQH8L^%X4rg5#(*W%;={Ie8>Rg*iDnRXJICxHvsHg#d=neb4{^