From 1828868e7fef6b0632524e6989921bd8b5c543bd Mon Sep 17 00:00:00 2001 From: Su Tian Date: Wed, 19 Aug 2020 00:05:54 -0400 Subject: [PATCH] updated doc --- analysis.py | 45 +- analysis.pyc | Bin 3625 -> 3723 bytes doc/build/doctrees/analysis.doctree | Bin 0 -> 17841 bytes doc/build/doctrees/environment.pickle | Bin 20482 -> 26267 bytes doc/build/doctrees/index.doctree | Bin 5502 -> 5556 bytes doc/build/doctrees/ioutils.doctree | Bin 22671 -> 26599 bytes doc/build/doctrees/iovabs.doctree | Bin 20797 -> 25979 bytes doc/build/doctrees/presg.doctree | Bin 0 -> 20117 bytes doc/build/doctrees/sg.doctree | Bin 58950 -> 146253 bytes doc/build/html/_sources/analysis.rst.txt | 13 + doc/build/html/_sources/index.rst.txt | 2 + doc/build/html/_sources/presg.rst.txt | 15 + doc/build/html/analysis.html | 263 +++++++++ doc/build/html/genindex.html | 87 ++- doc/build/html/index.html | 4 + doc/build/html/ioutils.html | 40 +- doc/build/html/iovabs.html | 28 +- doc/build/html/objects.inv | Bin 692 -> 903 bytes doc/build/html/presg.html | 277 ++++++++++ doc/build/html/search.html | 2 + doc/build/html/searchindex.js | 2 +- doc/build/html/sg.html | 651 +++++++++++++++++++++-- doc/source/analysis.rst | 13 + doc/source/conf.py | 1 + doc/source/index.rst | 2 + doc/source/presg.rst | 15 + io/iosc.pyc | Bin 14796 -> 14809 bytes io/iovabs.py | 30 +- io/iovabs.pyc | Bin 11647 -> 12041 bytes io/utils.py | 82 +-- io/utils.pyc | Bin 2946 -> 3175 bytes presg.py | 40 +- presg.pyc | Bin 8074 -> 8770 bytes sg.py | 270 ++++++---- sg.pyc | Bin 5528 -> 6037 bytes utils.pyc | Bin 8526 -> 8510 bytes 36 files changed, 1663 insertions(+), 219 deletions(-) create mode 100644 doc/build/doctrees/analysis.doctree create mode 100644 doc/build/doctrees/presg.doctree create mode 100644 doc/build/html/_sources/analysis.rst.txt create mode 100644 doc/build/html/_sources/presg.rst.txt create mode 100644 doc/build/html/analysis.html create mode 100644 doc/build/html/presg.html create mode 100644 doc/source/analysis.rst create mode 100644 doc/source/presg.rst diff --git a/analysis.py b/analysis.py index b699f61..8050950 100644 --- a/analysis.py +++ b/analysis.py @@ -10,21 +10,22 @@ def solve(sg_xml, analysis, solver, scrnout=True): - """ + """Solve Parameters ---------- sg_xml : str - File name of SG design parameters (XML format) + File name of SG design parameters (XML format). analysis : str - Analysis to be carried out - h - homogenization - d - dehomogenization/localization/recover - f - initial failure strength - fe - initial failure envelope - fi - initial failure indices and strength ratios + Analysis to be carried out. + + * h - homogenization + * d - dehomogenization/localization/recover + * f - initial failure strength + * fe - initial failure envelope + * fi - initial failure indices and strength ratios solver : str - Format of the generated input file ('vabs' or 'swiftcomp') + Format of the generated input file ('vabs' or 'swiftcomp'). """ # Preprocess @@ -49,26 +50,26 @@ def solve(sg_xml, analysis, solver, scrnout=True): def run(input_name, analysis, solver, smdim, scrnout=True): - """ Run codes + """Run codes. Parameters ---------- solver : str - Excect command string of the code ('vabs' or 'swiftcomp') + Excect command string of the code ('vabs' or 'swiftcomp'). input_name : str - Name of the input file + Name of the input file. analysis : str - Analysis to be carried out - h - homogenization - d or l - dehomogenization/localization/recover - f - initial failure strength - fe - initial failure envelope - fi - initial failure indices and strength ratios - smdim : int - Dimension of the macroscopic structural model + Analysis to be carried out. - :param scrnout: Print solver messages - :type scrnout: bool + * h - homogenization + * d or l - dehomogenization/localization/recover + * f - initial failure strength + * fe - initial failure envelope + * fi - initial failure indices and strength ratios + smdim : int + Dimension of the macroscopic structural model. + scrnout : bool + Print solver messages. """ try: analysis_long = { diff --git a/analysis.pyc b/analysis.pyc index 18137af8c4d02f89c8ec6c366831aaea45f7a29c..8f7a5bc480db5da1f14639ada93241503bfb5bdb 100644 GIT binary patch delta 1092 zcma)4KTH!*82`Pyw$~n4iWORrDyO1W0*wY#G-?oy!e&aM=7J%$?`(RMUUPS-BnJ-Q zTs+o}vLW$SJ4p0}a){_hcKS=jr$%mA7=Ai9&qV zYJukw0yPE88k+qGX@0$!SK!?T@7t!rHq~c@G({j_2vw{y@LkB$#drb~eLey2jd&Fw zz8l8il~@pi6Nf{(1RM=~GfM$sTw3?7LXo~(R!OXa9w|7w%px_-5`qo{2AnkbZmd$R zN&K?ldk`kU2O>!)IVkLEvloo9U^oM(OU7GHAxz=YRFmNvH!)M(D+e(}n^RtFnpKzE zeu=>H2q;4v`v+VE%>!-x53o*%a&ls{6hZ4(y{5Yun5WDeuG{#9_GPc$49o}_&s?y5 zzfz-w8}E|qY*4~-<=o`V^z?LDZZh>n+jF~qGdS-qv}nS>1+k(JvmN5OJ|aHp)q%() z@G4dNMx{C*NN{hu-a;jqv+q=ky13X;&PI-QkyMC?AFa}<|6QfBENhI8KS2aJm5Co6 zefyORGgwA3Sf1`4mWwA?mUSy>)}>^bnN&$CP8!EH_cr(UWa3*oFJ2nS!m1er~sXw6q0VWHqUj1V|u+7$iW%nCP(_G)>jiP6J&^x7lq?8kTS< zH%~B$p7id)c;KdgfCs&BG2T3S^J2WJGYcgq7~@RdZ{El3dvD%*`*i$OE~|Zy>-Nd@ zhgF;{CeJlV?(@TJeqRFzIH3_hDcI*ju)-)s`eGE8j#8{I8nEK922dL8YleKyFiHv3 zlHd#ngwlx5Yd)U>58wbOrB$qrLQux9|B~zQ!sBqUVNsTBFh#dx_P?91C|rJ zY+k%!dGU!|6F=F(aZj5fx-DJ@t}f5dI5oFcajIKo$E|KXs@lBfmUrCER=r$lRvKNm z?#{NlZ57S68&7I6#pEO)DU9I6a8z<(N$ZkaOQo?IEZ^CN$G|hl>@hT<1P|C`*bDoH zQEW3fC-B0sfHuL?&?E3MWaL3S1dp&Cg7Z%N2u|a3w;Q2({{{;@YviR?N}5?k+qcW zH*Bd@aVk5eTXmXtr@bV;Mbe|EhIY4AJJ*|!ZM$(Cj2_acCga!Z^`e?cSx4ZOkEVF5 zPt%b2s?S6MQft}urbxy(D@4V!SkWj*9ei;8IoSWtIVh@D&r5Pwl!vrN;R{=5A!bmV z42c;sC`D;D$TSL3f<{=JhFF43(zNrxNe#_QW9oDwQ-96mC_a(tsIcmtV1p$ diff --git a/doc/build/doctrees/analysis.doctree b/doc/build/doctrees/analysis.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ff9fdc20f72d1afccfaa9209df1a912f352bf771 GIT binary patch literal 17841 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 literal 0 HcmV?d00001 diff --git a/doc/build/doctrees/environment.pickle b/doc/build/doctrees/environment.pickle index dc20486de3ebbdb9fecc05396f53fc0b9f60cb7d..ca3fdd6a29c9c4e19764e8d05514aea5d26d702c 100644 GIT binary patch literal 26267 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 literal 20482 zcmb_k2YejG)pwVDmSwqOz`z+%&KOC6=?S6O7#v}lU@u&Pk7ISW(%$**_U7%LEkTw* z5@b6e2_dBS-h1!8_ufM)Nk}EV=lj1mJG-kpN!IuKKL6y|-Fao+yqS6P=FQCAzM$kc z-AZG8z-b()kk_a?jUaPHt5PdpnaWV}H{YQaglb{V>MGYpD>cVgiwtEesMIpsy@QRK zXP0*{ETa|!e@UpiMy!Q)v#FL2TPw&R$1WG`+Ch85SIbJp;s}ZfDve?><2yk{WeRs* zrS~_Bv_LDQ}t78h* z!b;g!8w%E9je2aMWi2haPzgB=bzDIm-!8~rXB_fx%&&*Ad#=jv9NeAV<&|4CCp+p< z_WH}O*rQIk^A2@ls7}hcEZLH#4PJrDy1lIt+v*DJF)mAOvKC9F)XA-p{9>+pqwI{U zK9}owN~lg1au=03E$6N)xa$k15l_`658+x__TRkLH56xK% z{h%DGOLFKy4X;tNN1U1;s)wQb)V;E9kxQ-R&53^VY0aComX0|M4ZF;}j5C(_j!h+3 zUG83v&z9BYjZ~dd;HxV_YgwtH_3ww)5>vpooZHUU46&M5vTIJJxR>mPUz3)*mb~$a zjM|=S$En%3Oca9%(aESQA&CrewZrOykPg{3b(Pf}_0XNt!>$hQP&?f#-5u^#?$w9X z!zV`$xl#{zdroIti#6sDFt3R)hYqP-j44%2FqiLJdZptQAHXMIL}5G)vx?*OU$uwxBE5Zj3oF5uv&+=Q2fClm+PgQmFRi+$%x` zw5$cqiBRq3Z)N53C!u@P{jp|cz#kiky9D=$0jK8hAn?`o?$-P=;KjB=-7uNY&P)j5 znnk8o`3}lQPUdqnQ;yZV5xZ7oE9n=5iKe3-)xqJ$$^0oZb0|A#KPjAz$G#5g!mQMl zMkS~~fZ$-o57bQ^)Wu0LVACs1-3)xTNMbaVJ()joW;wl)T1B-SHPTT=X)=HE%yg{Q zqDK|3UAcqSnappBX)E4SV53zpViX^6WExYoj*{z>`7JY(NByW=@tZZf z6m{c92NN&djUm3CIYnDLJgVEl4)jC}fTp`;sp+KIT>rUW$W#y+! z>rk;YERP%&bjaD7%%6VL%90n^OLd@w!NJM==9w9c!YG@Tx?*COXW8+oqEAf9JTiU1 zA4rc{bxTL#w@%JxW$cDsoA4{XdUOY2IIFENW3|+x12)fN>b4FJkD1J$8P|K7{uzyj z-7=nJ&hXXk?LGC5SsT0QLi&=g9@|m)<0kXR&sO-(hI)K^S$C$ZJYA36*$80a$VYoo zWn4|R_sm0SWhXUezmg5W?pAQMSNGK6_JWVJjpUA@UK>fB5zkk5cQnUSXSMv|4aD=tJss3fYimrc zp8#I%UN35kd)pQB^jU4HwrtPnDCwD#`Tkg)9TkMP)oN7WGuMlOQ*Xjkk*@!&4mQtD z_oNOs=^7LLb=4hihR`=Z^{;L;t2>9a3{AqDX(+w7FzN6-ONqh6WbXI#@kEgDebrk&aqfE2A zc5lcS8Uh(EmIeA`C^d~T4YQ{&_uD(A2oXj49WYin5w0dKx-juUe zR{ZOnvI7qX9gkb{%}1;r?uhWXookU<_tjg5-R!WntQfBc-&(L%6nUMn&8!gLRo6h5G!^f)3VLFsd(r zptp^nq`rvUc0tf()t8WeY#VmfK49yWy81G}>)OE033yr!^_8LdE!2TZ+`eDU@A!Xc z-zaACHEW61rTV&QSN)yYCMwRTZ=gND8LDsPte)n?m@J^6_lcULzCCQMa)Wx!b!yGx zi0w;9P~Wk7IQ|fYAJBo+cdZPg6$2NJtNNbNSdoHql=porQ@4G%)K8KSrz0oX?dhnA`lT!x>wY~e!$m#d{=&-cZaCRm z1qo&jiMOB^XT8xZ{9a!84_GU9Rs51utJw|5Lr?uxpnh#*dFwSNs50gT>Nok7Xv}lY zI_Io2vkC9tT1)H}TAtMJ+y|_T(`;c3afnR)UZxrurs_ef*BLL>T4kr$#8TEF1Y7=4 zP=8F8+JDM}`8;b`-EIJdNAI5t>Mv4vKWQWPmj(4#_W^roexUwlTT2euwH8qS9;$yJ z9>Ruj94pu{PyKUvc=(XD9?`v;BaJT2gjPfGuKJg?a(aYY0$j+^X9pX(<`0DcfEr}JsM~}K!>eGoKFkz9wR~Z`=h== z3mH(2z^jD^T&Jd83W_!O13oQcE(T$xAi&!pTcoGOfEH*8(inw@e$^glcLLMF1a%3@ zQlvR+!M+=58Q$}^zG)Bt-7`7H7&Pv_R7<$fsK_eeu{y=$7<3{J{k~XsM(tKD zC`J($S|g}yQ>>0n8m5l$EIL!Y2+KYexU>#v!`w3NZ`|J+@p?r(mQfehm=SCGQHqM zcge4TVUVw>W)9|N39LoSuF+-?1#|{dn}_{!sTpQx#M5aDa^tq^9MTQzP}W3VpdqD{XMtASaAt;R(Hh`RK8qmH(c zFJ|Vf-Q(jy?v;FuMmSVHnn9LP^biptV$~xxDEYqhEuS6=V1X_{YNXKC3BmQC*lNPv zf__Kq0X+;Tv81||VxC)6^XXCm;T$%28l=mZSyba?QXEelba|S=aYo=u!$mMH;F(zq z?$Z@OjQdp=A%+CEg0>-7W-`-9dUfNX`#TMeDf_e?C?Q?RU_t2MFv9rwG8mI-Qp5ngI#bb@vQ6pOXeIQqpAs+1ACcsLVAD$Ms{ zT#Y%HjmOd35yEG`mWG&K_EsVgUBfh(4g}A4O4{8uU1JxZ)`Ed74dcaBdbtn#7pRtp zy)D|!93zN(zx#7Y?Ec<;Fw(vI2ltPLY&H5soplVdpg3By$9%drMI8-n?QhT{0C68M zY_$Inb4m$N#JtKiyAJr)LbctYJ$N$${n`Bst56RqW3Ff~WAHR@*#E%2&+uLW1+YiY zfdE8;EMSFnJ<=Su$LtZ9?HlkRLCd}TnLX9Fx}Y}^BF~@<6dx_g8Ms8-Q+g!Bcvovj zWo&=}nG%-y{Ud0b{q!h9cnv%Rj2ysQMxxjap+NgybR%Q0jqT>tT{Sa=mSM)VCuG>{ z1OBjKw=yw2;>l6Ll&!7s)o`N44y`l8!%W(`$!-FAfr>~CM=c<`l11$$)6Ia!1~9Uc zvNg)X!SpQ~NN|z^cnl-VEtYfc78RgZ4kIcW#_w0igEG_0c59;@CD5+jfaTO8AkjK zNtYREHOiPdjB*2@S@X}<^VWXHX%-LKgsn&n?G`{s42K@9{hO6!UOoU|fevyZD0VGt zQarL^yc6crxZq46HC(itIcgt}8S@sVjvFHpQRX~EMM_w<_;f357t&)KalJC7+fr!O8g0#GK4M>*_Y>(cT)J2wUil<* z)$JyKx!zrcYY$oPKyHB^i`44U`93`kU&c3czvq76RJbQvkV0)7U7^PVFQhw>8g2C^ zD$&enlA&z(L?3I7i^gtj>_{8}Sf=w8G9xscgFK)5bQt;8BE)dU=?JrldbaMYdW{s1 zaC!nWF_Na{K+`BsG=&_K$jH`^{RKVT?&9KB#mhJYq$eR?q}OHw{yo-In7!%A3^4PB z6+z*~YR~s6fEMU(q(*S<=U0sj@>D^%hY=z>q}?p3S-eW7rvV|Z7|)rqqHkbP?*w+G zhOynEdx0Zuo*9QP4+lL6Cg|xx7%45)GW$o0a9-#c0Bi4Wv6yXoCNiv8SZ%JfH8M-5 zX8|LmXCpNd$KgU>>+m^%73jIlDI+m$Zg8KThYZ`$tP~p$Dhz8p75))TJ$=S@i%%Z_LY_|vedHacYI-(e z&G88SAP|yj_cFQOLD16*eF$*lCtK0#m^B9rQl6j>11ep6L$Y9qjHOx1egr55`Y0E( z;HFLVF}%ofIAvY~I2Z66=;MHC&5DbHb8qokH2Q?F`6N=)iYJI)K8huM10Fq}gTdU@ zC}DXhbK$3en)La!=N$zXeEKv{Li!9+9D_41gioJEMu9$u)LKxr>GOE8aoCOH`8;EN zLBL-`ic?Q8H1s9LT*T83eHpJ#>;W&0yoU+;3i3ry-O-#aHj%!{l#8(sVjrNd;oUS* zD#{nx1B9`@4g_s$yQ87k7~>`5H<-!NW*KfSWT0;{8pc5sGUlKseG7RJppt|&J=ANHGL25V(B`^WC# z_n7@MaS!`3i_-TK?$+A0uHw+!4}cNUeT)~4)#J4~xL4}8Izn}DwQ8+;gMJ7^t$AZX zIo3))Lbi3I8w5@N;=#dExlzRiSIuj&7RecaM>=RDbU9e7jQE2Q<={C37Yv*?$YuD! zK-IrgyHl6!b@Kg}@7mM9Yu7c!tM~4@#v{DZk5dw^H>!;cMFp-8A>{WH;KYNA1MS#* z(@QcO)TSpAAQ8|k8@ zUlRuzqfpMT0X||HY>m{EO-(#O`1BiK#JbSY(bS#*{T5(}jz;D#-VXo3EO)asJ0GYp46 z<16t>WbToz$;xO2ZTuJJ*UJf8YRI)pFnIZdse~=9Lw^MXqZLQEZh@|+=mpY*NRuh80pt2rNtku>5w zByqq6fW+QwVx|y)K$V*wcfW-|DbOM=%Zw0oGVyYgVXzorYpIzrXbC=fFr<`&$r=;M z7zbv$7ioEtGuwN-owesob++RE?$*AysD1`oA9zGMFaZOD`l?YG9StamvHhH zB<_RQeoMlPtASCVHAs`aW`GAG14(NEiT8dP5ZPW@2Y^%E29A15ZZXcbB96Wu+1UTb zDPt^Tcz>IYLC%z2&S+vnygA6w28O0j(d+DEk$vZNbQ~Ty9uU&;cyaqe+Q`o>A)Ua_ zts$L=XUkg2TkL3LL^-tSJqg(%Ws!nUgN7=Si0 zJKo`^lksL{Mm>ZlB#cXa8bqgPW^SLm#og)v^HjmCdDv2tv;K4%GD12%!s`X*DZo9` z-Rhp(vM?QU@E`LmPYpRBRk`YJ2AnoWB$)!8fmeyN3=9n7uj1j4?+pxKUuX+p*aD_A znQkk@rGCa<4!f(daasjv0}~5{iht%pX&lV|5>&zJ$-w zZ?=*V;h$Rrv3Ojj!_SQ}u&>j+k~=Ci3Lx5M43Cgpq^50HI%%6~+#pr0ecYJAs>_TF zstBS{X;m2Qj~Su!*5sp8Cq|`pz>P{9Lhhx>n=_DeNnAaJr%@^4JtSW!B9#XG(WcVK zjr-rLl*QvRTl~~2y+ON#DU}`o5Gp;0M@ZvHjY?U%8C6=O8m4jDuUGs9WQrp!7$}N4wG?ddL9NTDJ+|W734TPfM7sav5CpI~Z=7>#_I<>2X35 z>HG2W(Oz)2%0)5#op_q&n#6lZhlC;`Kg=Ifnkz9#eX|=R7KTeW!q5Nh)i8PjsL*Op z#3Q7;keXIwA*XLOqy8re&68sqsQ)SQF|!u#2E1cRh-TFcJrz*c>wEAB>1o1>)swAq zNjMHCfp5AOANgxBUH@NCJZgUXWFLdikkQk@8U3&;5{RC`->B6y@x;Y2;}_v_(h|2) zhO=_ST=H}Kuzf6U4(^go9D#dhkBk3{bA*fdMC6h7HtdRgu>w7dxer&*$77P7jdZxm zzQQCuN8Z^@n55?-b*v2TK9+2`HPt!oH3_>0yiCc^^MEa<*S6_kuzxW+Q+UL zb}s>1NH1m1W`=*6d~|jgGwfatxEXb?5b{^1$zL@CIhVv^;?;PXQTH0WhxA&Zh(_J( z_+!ebThoW`z$ZQW?MAs@HlmY>=O_b_<>NwM&(DqGrtZ|tvS60g%;*h(q9NXhM@Vl% zY6cw3H~oNP+ZUTjV+FUEVfbd@^p=S z_AWe4YrGrpA-zW^B6Yr3KH7`TR=Ff5e;=NvHQtZ+kUk(35%~xCV@hizHgHS(_?haI zu`pc1hxj?m-BkK85TN~!;1SYCks9r@JV(=hY7W|JwEr>T^zoPzwEqeDXjcQI`y>EH z`=1iJPp9cVGc8@V%0+PHKFe^U{?Fkfq|XaUq`xo7M|-*1Di_7{U&Pa>|4Voe>B~Y9 zk$;6hW>Eju+11a&a0y@K=bUfs($|2F#`roOA$X$+Qb`o=J7|EADlHofi>Gi0>*fKdM`rba9LT0T0}V6^xfz>OAvE9AdRlmC7OaxRIh^dO!_i+{j- zNPiTHNQ-~sk11MQ*@uZ;UlZ@=i_vq{AJ z4XM!}%XKsjvSZsmO(y0A*J7dz4fJKKo3pt}Bda&caO|9KOUL)2HoJFW=Q5!GFq^7S^Ytx59bLFP3X8+S;=c(C zzO5;zZurvP&c;#5A1~zda7-qWfG<79)+A9Ofq+2Gbm(Ym)v^n2ZXO1qqXj zr(u%1&~!9@w+p|83BM^qnM+nj5$YAfWKqK8th7*OU>{ACs&H96BbVs9;!$LIvT#`f zE)D`-?v?^|F~_LUV!`y?V{_qh2A&dR+w49;ST0Qj8!**N-(a4dM^kt#OL&|=m4}f8 z%EFz~*?CP0uS~-0+^M|MSMp}(^b+B;JmJJ+g13^)h0EE=?-lZHkUQ?y0fcq9>7H69{87##U@vvYUl$WkSXm)y*~MY|ikX`fCf> zc=LO+`)Fa%n=s&>G3AF1=E7y4a9Ndb;hw?gH=>^pmSYs|sZV@KO zCQMjAX(n=McrKitBb<(#g%khI$6Po)N;n;#aN3&46#w|aTo@e?MjI1GT)B>)6POF9 z+l12z2`3(@hLik=$XvMGBwS8RxX5o7L@uX47Y;8I4kslXiaJMkXCJf|9 zS`ZDX&4t<(>P=IrWy4}F)Xxy=lN0KTpv39#xzB~&vxHq=!tQKlH|6(4=E9~XY)(no z@Q+4CzuGbv`VpZ&bt--IV-a(qf2`1-me6yjV5=)XQZN?|dEsz+!ht8y=(kDcVAx2= za|t>3?I}N#Fc%^25iXm-#lcU6;pnE`_dEj`A#GviZqHShfAfp;@4x3wo7_JA`k4D3 z;%?EecP%~J-Kt-od-9jT0vo}6n8K$sg+)KJz%AtDu7_MB!AZaZ4FG1X!#N*&f6>A5 z;aU;zlBN{et0LpQ|p~Y4YUkKp{WpSLZTpYosHCBRtYh+4hw}?^H zcTNslJ(WiKaD0_dJ6YXL96#rSID96<%9=At2M->^_A1|A9`I;v5GNA`f#?s?AXlP? ziQ>&JA3qgm&adIXYT1#~(zxAL6(9jG|L zsFcaaFb3%?E^j@DF|kjJgG+p41Uuh+(zT2#F{hLuE&PT64oAqTSsaKv8^j@(^Q%A3dM;mhsgedqJ>CSg*}z97!Nkh3|s%h?yj*%#xjr7ypu zA#`XNJH5!oPA^hxb#(Th&)vv|AdZ<{0svYLM{jVF4(E0C0UB&t(!+%CQYKs`$2)o3 Mj4s1BP8$sT4_}CL1^@s6 diff --git a/doc/build/doctrees/index.doctree b/doc/build/doctrees/index.doctree index acacf1c4d1cc29d025d98efb34f091bf8174a319..071301113216187bab885ddda2f3c15608042005 100644 GIT binary patch delta 2878 zcma)8Yj7M#5td}@bay(PbkbQ5OR*K%md}di*v2--KY%KJs_MuOrchBFo4wt+n~nE& zw`X=O3D_J0WF!J{!X!Wffj|);5JG_9Kw-cT0)$5(JVL_zjd_?i=AF(q1Xiu{|-`&yC5pXK%aP3Jj%kyb`H$Br`5{`iCNw6qMF~_#4 z2lg7tIiBT4Hmx}>6+kOcE3p@_7qSNYD7e0Ff9=fQ~63*Z_nW8^Sr8k&pI_j*FFL2xEv6GF!`RcUfl` zW1cLhrwS)9$3hH?ZL&-*r;CS{RDu_mNU9pSE)C%&^PQ;I3=&qf6aGoU;Wpow%7@bv z=@{XzkD)2gr$>*y3@I-plu5>QL})l6ZNRbufB9wDC(N++SIB2&#-H;_#9E2rBvNAv z>iRZRU~;q0&49tH6x8Zvpyq~^hHLVU%=W#nMw}aBcugB;rG=9VsAoG~-B{$b2Cr36 zH_CIFiT+coB!i~V(p~R zn=ZneR}L=29WlJ6-K$%1@sFuS+!@2$WUhC#@9mcw!IovCceHs? z>US_D^Ib8#Q_)q9ceaL1Yx}OtX*;6my_+dr?~dU;?ZCTQfm+G;mPn7%a4Deko3K)R zW~Wx!O}eB;mv77Q>{#=jWTHqfF4M)pbu1@byEtF0CAZG^KBjcNH-`5o`B2yU+PZ$A z#BO8vY*6%r8x_4sPb^j@tf`!6LQh~Xph#@uki;W zKDSQEk7*^(#PD%NP&q!ZUdc~fPRUV4>yui^voU9f6!UX!F+Z=wd~k!94{sFntYZBI6jL+M1mKG+!^`lc7{1(= z@}ZWL@`s@bwCO zgA~jt^xL*1`kNJaOnUi|=C>;FILYADn4#l)0-mVAx7CS6a#qAS^+H4KN%&5g42InF zM9t?70}~3fj#*Uptv%vPZy= zWB3UfzR0!&DT)-blH?Hs{DEyJ+cug${YDCpnsOxu`-#Uocr9s8gN(2a|1&M1{7U^P7IT~STX#YblbEV)#1r9 z8K8|SRZUvL#Ejwr{gixsV6w?O@DoK+DuosDPW93!up?g7FcwwYc^BGH^nN>P1jfZ_ z5PTEbQ7Amk9k1rMoHr-V`2~~X@mt4yoSF^Zt$nvB>DAppDQDm}EpUsd8c*RWN#o+| zuKkB>-XoiZk?FKT>Lw}6_i9d^XEcKD6pqUYM>wI+c~+h&Omz0jCki`vPFOizhOJV ztRkIO&7(RbgL@0FU^QovkI8=x?rLsD^BPXISv3|MJ7jzu4RdLdUq2E^XF`GYSizCQ z`}ZH9;a)4hxW+l7pI12a0w@`C6k^g!LO31idPi(;?gR97tIB1i_+5Ov+`_l zOXoiMSaI94ug2xM4mK6@{rFU31-u&$va2I9h@*g;FvN?A?-}}V}?M=~w^& delta 2871 zcmZ`*Yjh+<70zTglbOjRnPetmlO5I&HoHUCgk8|ciHD;<{GsHW@mFzjJhZ(%-8ECa z>FMrURlPew+qf!_6&8dRMa2gwim12>Dhi70`-SiK8+_smeB%S~R?SQvob^wiuBv;# z``z!}zSVahcw+X{Mg41(q?zkD)Q7_-NZ$2rFLG$z^{4>LfLevUh+W2BOi89`wHz8s z2KG{K#P%;`S<#4UR#c-=jm@8T9Gn7&NbMy z0Sz`{v3&+GmPT(x8f6u9C>r2a*a89_iD3nSmPdPfdS2i=u1&?1_`%2rWZKI6*0(e0-XS4pcZ)^ zm8Rzk36Y9+v_jJDO*oc3keSGpy7XJgqnYx>tB7=Y3@=d`3}Xh1oYof)H>mIW4s9KV zmm+=9rcbg8)^sIpLaeY~mKX!&wKdxb>`1zvnD+yRid<-MtHG_1<>2LremsU(AUab> zmv@miY~Ym&=~ZXaq@+Z?!WJQO{notYI30M3BKr-qg-mmBB#XIoQYVwka{C6aWiM2<&~dLzuFLIOdkunLAHxl8 zaD+%YMB%j+vQsgD8`;U_eiTkfXHKnON862~3p>HCQc1j?%`RuqrYkGlg!O$x3~xkS z-GJ9)YqBy)yT0f86yBse)ry{_8kVUN-5kT4(RfRVngObyOZ1k_5;0wux9YmQjVbkS ziQ!hoUK!ooX+tgf+s`EVm}2`5b|pIA7Q;Kcj<<9iwTkbmkbb4#YDkxNU{d(bu3l%? z=nT88NH%$FU^I0*>U#DX>j-ma+ctFRl{?c3zMbGw|kDT43s z$k`1Br%=uh#PC5x)N|9RYrGh74c(d5^-E{yjP2OUko4bI^MHY#83P`5!0%bG$+-iNo%l>x__I98vT=6 z#M3c+s*R2!e!45-XOxKdZxive+eN%j5&RsAxETySj}m?%hA$$Xmhkj838PvvGgMyt zQk4wWgFyO$q$bu~z?WnA3d!KBZ#8k)JrKiJNkObOYk_BWEd_kdfUlDgE0RHXukHN} z1HMU0Pcd&FeanDvldSDZOS*wC;5!C#{Dj|t=fNDD~hkOTDBhno79{>n=<$uq}17{ndcKk-Ui`AEnS`g1=Wuj#(bo zM!WuFsgDeHSbCNa==9GjTda~Y>(r%k}F)+l==l!N~ZLRH~<^O2(AT>VHDXWa3SSOt67^@sMQjY;NY@GaSA{Ek|g} zm8zv=gqo;)`A*!&l+$+L*WCv1(~!DM*g!{J;mUyXbn?hZIn|%!NB2HEgBB;q4(cD} zS#8{=8wwgZNU!PfoZc?bRv2LITJZf{kpK5f|Qff#p2l6c(zXP?hiMbo$pB=F78V` zEh&`7^HU0Yrx#$*bCL^6(+krI{&6y-=7G7%|6FC)>pFa|dKtook*>sibz||FC{5KR-D#Ham3?cMN_ApCqk>cLcvcn_h^| Hs5bvURIBm) diff --git a/doc/build/doctrees/ioutils.doctree b/doc/build/doctrees/ioutils.doctree index 49e01102a5e40bfb61cf4e5dfcf44a163b2b44f8..1061b3e2d40d21e58905de104945b75c1c1b8b8a 100644 GIT binary patch literal 26599 zcmd5_2b>$l)i(y)XSrf9&1VqRXRyx&V~pt?V>qfnfRD58q`Q@@leABg?E^Nn05+Y_ zL+_!75^Cr@^xg>_64DFl;rsvJ?5nWx4xuQM1Bfe2nGKQTiTx3~%LOpaTwY0Q<-US)4tQ=dpSne*C z(j~CV=em-q-l9Fyu}8&57ZOrTb@iu;#Y7*}GrH3r6C2%A7J&-8iutnir0lUBu}Cu2 zla~as?Ug%X;}YdkzBivQh*L9B=_T~N-YONj-=L^iviIDO{SVyT=QSWw(_ zYBIGrmCY9xB^w_BWi&mwjiB1gGGuZd+pe;QlgIyw%3UbbA_{` zu}GqXVbfhML7nS5_IhoxmSnj=xT3v&XKYwcHc>3%euK_fOLwAYk+3s1?2N5Qy=~NK zPqM}*VnYmkTc4?cxu&=~k|_~rhqAPH zhProg>|H%|Z4<8KbS{}%8nJgnGv+z=?jAHoLv*satZPcXJHrQr9gnvF z#Pd$}L9jPa)vAN7g96gohqTp=Sb}yH({KuWA}9jP0_YUwWYV5&8nkK$5#ngqn(KjQO9a8!gF9qZ<-!DyFA!m{SEqy{szuD zV&~9XdB-lWx5m^7*p4pfgrB4uMyeWIMBAnkq|MsF3Ncr2Fxy2~YY0`lgm#x5d$AeJ zLARI>w^-$EBwhlEmpb+UaIH*0zTrNMeHev1{Og1}0>U-YtOEhR=h#Qq3%In2fOrx^ zsc@CqbP*4Rqaf+gj(rSuyCHP@jYfT-MdP$ZRYdJ$*|hI}UDJ+h(Ct30h{;YfRVIPF&JXg+sOgw8x@`y?poWXC?mD5=#t0jlxs#b;%oTJE;U?KH#467X2$bV*ZAmx5C*mVFtxUGCUdc-$`Xxuwe8_&?m`_T({R z=am0S==LhdzS={F&kPu>3ua$K;eHe{zwwRr+PXOv`>;t|8D=~On^WqiYJ(C6)r{S&X#peW8gA{7|>4vKqch`4@_-BtU< zQS69)H;CWk*!LRZpz_mtDy`P-H0b;4I^9TMeC_=p^nhbO$X<`2*Z1}uToHYHk2}s> zne|!q5M_S2p4-Or2a($&P;WII`%x(IF~@$~Q^W&JRM(wP4n*uHAk>qN{gmIjpVjlD zbl~@Nt%ADoP)(KGK6nO%o^|Z!d_vEM5qgq@UZ_(OyRi#4&>yj11f7>0`(>ZbD`9k= zC7o9-8q#Zy{W^f-n?R*BlxQ2TlcQ6oM)$W;YCBQP&9L-~_U0wZi3z4G?bPiXVWeLo z={M_rzBld0lqb*C#9QF~wqw6T-kujH(RbZhZfpeCWrb8vx;Ncpzqc%~I%u_CBa@$_ z13gUpeRSOij{Tu&cdPZb`mNaLYPR-A@c*-P5*lr@KL*Yxj{T{J^IC{|E2MHsw6|+1 zq>0#{LFmsN`xgcS(*6?jT-0!SYAv$fTZRQOatY~6l`67*p`~UDY`HUEZC+|=A)D?= zmzLKz?pJk=)@w0-qGHKh5CWB(S?SYJ?gzYFV- ~52X*xawEK^a{U@*8 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 RCQ~*wqvFtHTuU7-{|CZqkHG){ diff --git a/doc/build/doctrees/iovabs.doctree b/doc/build/doctrees/iovabs.doctree index d2e1dc7873223cafedb50db4f6bcd045a5c6a360..c8572ca844f01e2e180e6aeee2b3853032f9d274 100644 GIT binary patch literal 25979 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 literal 20797 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 diff --git a/doc/build/doctrees/presg.doctree b/doc/build/doctrees/presg.doctree new file mode 100644 index 0000000000000000000000000000000000000000..286b837fcb604ae9bf2df964779879691cd85bbb GIT binary patch literal 20117 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 A`Tzg` literal 0 HcmV?d00001 diff --git a/doc/build/doctrees/sg.doctree b/doc/build/doctrees/sg.doctree index 03ffccff30ff9589d6f071f532d50c216337b576..fe4871724c1b4c365b837496817f284a7cc1fbd4 100644 GIT binary patch literal 146253 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ℜ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 NL_%{Fe!FLl|9^>q)QkWC literal 58950 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 + + + + + + + + analysis Module — msgpi documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

analysis Module

+
import msgpi.analysis
+
+
+
+
+msgpi.analysis.solve(sg_xml, analysis, solver, scrnout=True)
+

Solve

+ +++ + + + +
Parameters:
    +
  • sg_xml (str) – File name of SG design parameters (XML format).
  • +
  • analysis (str) –

    Analysis to be carried out.

    +
      +
    • h - homogenization
    • +
    • d - dehomogenization/localization/recover
    • +
    • f - initial failure strength
    • +
    • fe - initial failure envelope
    • +
    • fi - initial failure indices and strength ratios
    • +
    +
  • +
  • solver (str) – Format of the generated input file (‘vabs’ or ‘swiftcomp’).
  • +
+
+
+ +
+
+msgpi.analysis.run(input_name, analysis, solver, smdim, scrnout=True)
+

Run codes.

+ +++ + + + +
Parameters:
    +
  • solver (str) – Excect command string of the code (‘vabs’ or ‘swiftcomp’).
  • +
  • input_name (str) – Name of the input file.
  • +
  • analysis (str) –

    Analysis to be carried out.

    +
      +
    • h - homogenization
    • +
    • d or l - dehomogenization/localization/recover
    • +
    • f - initial failure strength
    • +
    • fe - initial failure envelope
    • +
    • fi - initial failure indices and strength ratios
    • +
    +
  • +
  • smdim (int) – Dimension of the macroscopic structural model.
  • +
  • scrnout (bool) – Print solver messages.
  • +
+
+
+ +
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/doc/build/html/genindex.html b/doc/build/html/genindex.html index a872791..94b56dc 100644 --- a/doc/build/html/genindex.html +++ b/doc/build/html/genindex.html @@ -84,6 +84,8 @@
  • Class Module for MSM Structure Gene
  • SG I/O Module for VABS
  • I/O Utility Functions
  • +
  • presg Module
  • +
  • analysis Module
  • @@ -151,6 +153,7 @@

    Index

    A + | C | D | E | F @@ -174,10 +177,28 @@

    A

    +

    C

    + + + +
    +

    D

    +
    @@ -185,11 +206,21 @@

    D

    E

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

    Writing Functions
    msgpi.io.iovabs.writeVABSIn(sg, fn_vabs_in='', fmt=1)
    -
    +

    Write SG to VABS input file

    + +++ + + + + + + + +
    Parameters:
      +
    • sg (StructureGene) – Structure Gene that will be written to file.
    • +
    • fn_vabs_in (str) – File name.
    • +
    • fmt (int) – Format of the input file.
    • +
    +
    Returns:

    VABS input file name.

    +
    Return type:

    str

    +
    +
    diff --git a/doc/build/html/objects.inv b/doc/build/html/objects.inv index 172a9d366719854783b3d3cb96f49c4434a8ca8c..ad30697239ddf1287ef0d60cb3927be06ccd9311 100644 GIT binary patch delta 800 zcmV+*1K<3#1&0Tabbpx1Zrd;rhVOm~7VR}D(%y1wk~%d|#|7N&CeY+aCcs4{M^1F> 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^ixsHj`-p delta 587 zcmV-R0<`^y2ebu{bbpq~Zrd;rhVOa`7VR}Ia?Pzy>(mFw1>EH*jHIzlfQw2F9qZQD z=SaopAcv}Q!1H{UVnl!x!K-pS?FZX8z_zb z37$FjOSH?3&2LXp6!vCBkr$|=70g*GRY4Vu*TR)0?BR=^QcBhiK6zg>#!=HP2@ znc_24zOMEru+~Wlrj0E%WI)+#>b-9ZzOLbkS*q>?6nt^mHFRK`^;elo z=zO_hyF`Z$+vv&(WPY2ma3#w8E`MciO?xvA^z?xBv$P1NJX{j}v%ytA{tar(Y&{KV ZSXFl4HS|d=o85+;v%^Aqvj6EoHldcYDUJXD diff --git a/doc/build/html/presg.html b/doc/build/html/presg.html new file mode 100644 index 0000000..d617082 --- /dev/null +++ b/doc/build/html/presg.html @@ -0,0 +1,277 @@ + + + + + + + + + + + presg Module — msgpi documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    presg Module

    +
    import msgpi.presg
    +
    +
    +
    +
    +msgpi.presg.readMaterialFromXMLElement(xem)
    +

    Read material data from XML elements.

    +
    + +
    +
    +msgpi.presg.preSG1D(xr_sg, smdim)
    +

    Preprocessor of 1D SG.

    + +++ + + + + + + + +
    Parameters:
      +
    • xr_sg (xml.etree.ElementTree.Element) – Root element of the input file.
    • +
    • smdim (int) – Dimension of the material/structural model.
    • +
    +
    Returns:

    Structure Gene.

    +
    Return type:

    StructureGene

    +
    +
    + +
    +
    +msgpi.presg.preSG(sg_xml, analysis, solver='swiftcomp', write_input=True, scrnout=True)
    +

    Preprocessor of a structure gene.

    + +++ + + + + + +
    Parameters:
      +
    • sg_xml (str) – File name of SG design parameters (XML format)
    • +
    • analysis (str) –

      The analysis that will be carried out after the generation of +the input file.

      +
        +
      • h - homogenization
      • +
      • d - dehomogenization/localization/recover
      • +
      • f - initial failure strength
      • +
      • fe - initial failure envelope
      • +
      • fi - initial failure indices and strength ratios
      • +
      +
    • +
    • solver (str) – Format of the generated input file (‘vabs’ or ‘swiftcomp’)
    • +
    • write_input (bool) – Whether to write input file.
    • +
    • scrnout (bool) – Whether to print messages to the screen.
    • +
    +
    Returns:

      +
    • str, int – (If write_input True) Input file name, dimension of the material/structural model.
    • +
    • StructureGene – (If write_input False) Structure Gene.
    • +
    +

    +
    +
    + +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/build/html/search.html b/doc/build/html/search.html index fa0a1e3..80b1434 100644 --- a/doc/build/html/search.html +++ b/doc/build/html/search.html @@ -84,6 +84,8 @@
  • Class Module for MSM Structure Gene
  • SG I/O Module for VABS
  • I/O Utility Functions
  • +
  • presg Module
  • +
  • analysis Module
  • diff --git a/doc/build/html/searchindex.js b/doc/build/html/searchindex.js index 81dca0f..2cb4329 100644 --- a/doc/build/html/searchindex.js +++ b/doc/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","ioutils","iovabs","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:["index.rst","ioutils.rst","iovabs.rst","sg.rst"],objects:{"msgpi.io.iovabs":{readVABSIn:[2,0,1,""],readVABSOutHomo:[2,0,1,""],writeVABSElementOrientations:[2,0,1,""],writeVABSElements:[2,0,1,""],writeVABSIn:[2,0,1,""],writeVABSMOCombos:[2,0,1,""],writeVABSMacroData:[2,0,1,""],writeVABSMaterials:[2,0,1,""],writeVABSNodes:[2,0,1,""]},"msgpi.io.utils":{textToMatrix:[1,0,1,""],writeFormatFloats:[1,0,1,""],writeFormatFloatsMatrix:[1,0,1,""],writeFormatIntegers:[1,0,1,""],writeFormatIntegersMatrix:[1,0,1,""]},"msgpi.sg":{MaterialSection:[3,1,1,""],StructureGene:[3,1,1,""]},"msgpi.sg.StructureGene":{analysis:[3,2,1,""],degen_element:[3,2,1,""],elem_orient:[3,2,1,""],elem_prop:[3,2,1,""],elements:[3,2,1,""],findComboByMaterialOrientation:[3,3,1,""],findMaterialByName:[3,3,1,""],fn_gmsh_msh:[3,2,1,""],global_displacements:[3,2,1,""],global_loads:[3,2,1,""],global_loads_dist:[3,2,1,""],global_loads_type:[3,2,1,""],global_rotations:[3,2,1,""],initial_curvature:[3,2,1,""],initial_twist:[3,2,1,""],materials:[3,2,1,""],mocombos:[3,2,1,""],model:[3,2,1,""],nodes:[3,2,1,""],nonuniform_temperature:[3,2,1,""],num_slavenodes:[3,2,1,""],oblique:[3,2,1,""],physics:[3,2,1,""],prop_elem:[3,2,1,""],summary:[3,3,1,""],trans_element:[3,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":3,"2k12":3,"class":0,"default":3,"float":[1,3],"function":0,"import":[1,2,3],"int":3,"return":1,"true":[1,2],The:1,after:1,all:1,analysi:3,angl:3,append:1,arrai:1,beam:3,bernoulli:3,block:[1,3],bool:1,brief:3,c11:3,c12:3,c13:3,c21:3,c22:3,c23:3,c31:3,c32:3,c33:3,calcctmkeypoint:[],calcul:[],charact:1,cid:3,classic:3,combin:3,conduct:3,configur:3,connect:3,constitut:[],content:0,convert:1,coordin:3,cross:[],curvatur:3,data:2,defualt:3,degen_el:3,dehomogen:3,desir:1,dimens:3,dimensiona:3,distribut:3,e11:3,e12:3,e13:3,e22:3,e23:3,e33:3,each:1,effect:3,eid:3,elast:3,elem_ori:3,elem_prop:3,element:3,euler:3,exampl:[1,2],failur:3,file:[1,2,3],find:3,findcombobymaterialorient:3,findmaterialbynam:3,finit:3,flag:3,flatten:[],fmt:[1,2],fn_gmsh_msh:3,fn_vabs_in:2,fobj:[1,2],format:1,from:2,g12:3,g13:3,g23:3,gene:0,gener:3,genom:[],global:3,global_displac:3,global_load:3,global_loads_dist:3,global_loads_typ:3,global_rot:3,gmsh:3,going:1,height:[],homogen:[2,3],includ:3,index:0,initi:3,initial_curvatur:3,initial_twist:3,input:2,integ:1,iovab:2,k11:3,k12:3,k13:3,k22:3,kei:[],kirchhoff:3,length:[],lenticular:[],level:3,line:1,list:1,load:3,local:3,love:3,m11:3,m12:3,m22:3,macroscop:3,materi:0,materialsect:3,matrix:1,mesh:3,microscop:[],mid:3,middl:[],mindlin:3,mocombo:3,model:3,modul:0,msg:3,msgpi:[1,2,3],msm:0,msmio:[],n11:3,n12:3,n13:3,n22:3,n23:3,name:[2,3],newlin:1,nid1:3,nid2:3,nid:3,nodal:3,node:3,none:3,nonuniform_temperatur:3,num_slavenod:3,number:[1,3],numpi:1,object:[1,3],obliqu:3,onli:3,option:3,orient:3,output:2,page:0,paramet:[1,2,3],physic:3,piezoelectr:3,piezoelectromagnet:3,piezomagnet:3,plate:3,point:[],print:3,prop_elem:3,properti:3,radian:[],radiu:[],read:0,readvabsin:2,readvabsouthomo:2,recov:3,refin:3,reissner:3,repres:1,result:2,s11:3,s12:3,s13:3,s22:3,s23:3,s33:3,scrnout:2,search:0,section:0,sff:2,sfi:2,sgdim:3,shell:3,side:[],slave:3,smdim:3,solid:3,store:3,str:[2,3],strain:3,stress:3,string:1,structur:0,structuregen:3,subtend:[],summari:3,swiftcomp:3,temperatur:3,tempscript:[],text:1,textlist:1,texttomatrix:1,theori:3,thermoelast:3,thermopiezoelectr:3,thermopiezoelectromagnet:3,thermopiezomagnet:3,timoshenko:3,trans_el:3,transform:3,trapez:3,twist:3,type:[1,3],uniform:3,util:0,vab:[0,3],vlasov:3,web:[],what:[],writ:1,write:[0,1],writeformatfloat:1,writeformatfloatsmatrix:1,writeformatinteg:1,writeformatintegersmatrix:1,writevabsel:2,writevabselementorient:2,writevabsin:2,writevabsmacrodata:2,writevabsmateri:2,writevabsmocombo:2,writevabsnod:2,written:1,zero:3},titles:["Welcome to Some scripts\u2019s documentation!","I/O Utility Functions","SG I/O Module for VABS","Class Module for MSM Structure Gene"],titleterms:{"class":3,"function":[1,2],beam:[],code:[],cross:[],document:0,gene:3,genom:[],indic:0,materi:3,modul:[2,3],msm:3,other:[],read:2,script:0,section:3,some:0,structur:3,tabl:0,util:1,vab:2,welcom:0,write:2}}) \ No newline at end of file +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 diff --git a/doc/build/html/sg.html b/doc/build/html/sg.html index 48e1277..403fb45 100644 --- a/doc/build/html/sg.html +++ b/doc/build/html/sg.html @@ -169,12 +169,240 @@

    Material Section -Parameters:smdim (int, optional) – Dimension of material/structure model. Defualt to 3. +Parameters:smdim (int) – Dimension of material/structure model. +Beam (1), plate/shell (2), or 3D continuum (3). +Defualt to 3. + + + +
    +
    +compliance = None
    +

    Compliance matrix.

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

    (beam/plate/shell models) Refined compliance matrix

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

    Engineering constants. +Keys: e1, e2, e3, nu12, nu13, nu23, g12, g13, g23

    + +++ + + + +
    Type:dict
    +
    + +
    +
    +density = None
    +

    Density of the material/structure.

    + +++ +
    Type:float
    +
    +
    +eff_props = None
    +

    (will be deprecated) Effective properties of the material/structure

    + +++ + + + +
    Type:dict
    +
    + +
    +
    +failure_criterion = None
    +

    Failure criterion.

    + +++ + + + +
    Type:int
    +
    + +
    +
    +mass_center = None
    +

    Mass center.

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

    Mass matrix at the mass center.

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

    Mass matrix at the origin.

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

    Name of the material/structure.

    + +++ + + + +
    Type:str
    +
    + +
    +
    +shear_center = None
    +

    (beam model) Shear center.

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

    Dimension of material/structure model.

    + +++ + + + +
    Type:int
    +
    + +
    +
    +stiffness = None
    +

    Stiffness matrix.

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

    (beam/plate/shell models) Refined stiffness matrix

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

    Strength properties.

    + +++ + + + +
    Type:dict
    +
    + +
    +
    +type = None
    +

    (continuum model) Isotropy type. +Isotropic (0), orthotropic (1), anisotropic (2).

    + +++ + + + +
    Type:int
    +
    + +

    +

    Structure Gene

    @@ -188,8 +416,9 @@

    Structure Gene Parameters:
    • name (str) – Name of the SG.
    • -
    • sgdim (int) – Dimensiona of the SG.
    • -
    • smdim (int) – Dimension of the material/structural model. (1: beam, 2: plate/shell, 3: solid/block)
    • +
    • sgdim (int) – Dimension of the SG.
    • +
    • smdim (int) – Dimension of the material/structural model. +Beam (1), plate/shell (2), 3D continuum (3).
    @@ -204,30 +433,129 @@

    Structure Gene + + + +Type:int + + +
    degen_element = None

    Flag of the type of elements (SC)

    + +++ + + + +
    Type:int
    elem_orient = None
    -

    {eid: [[a1, a2, a3], [b1, b2, b3], [c1, c2, c3]], …}

    +

    Element local orientations.

    +

    {eid: [[a1, a2, a3], [b1, b2, b3], [c1, c2, c3]], …}

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

    {eid: mid/cid, …}

    +

    Material/Combination id for each element.

    +

    {eid: mid/cid, …}

    + +++ + + + +
    Type:dict(int, int)
    +
    + +
    +
    +elementids = None
    +

    Element ids

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

    1D element ids

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

    2D element ids

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

    3D element ids

    + +++ + + + +
    Type:list(int)
    elements = None
    -

    Elemental connectivities {eid: [nid1, nid2, …], …}, no zeros

    +

    Elemental connectivities

    +

    {eid: [nid1, nid2, …], …}, no zeros

    + +++ + + + +
    Type:dict(int, list(int))
    @@ -238,12 +566,18 @@

    Structure Gene -Parameters:
      +Parameters:
      • name (str) – Material name.
      • angle (float) – Orientation angle.
      +Returns:

      Combination id. 0 if not found.

      + + +Return type:

      int

      + +

    @@ -258,6 +592,10 @@

    Structure Gene Parameters:name (str) – Material name. +Returns:Material id. 0 if not found. + +Return type:int + @@ -271,111 +609,289 @@

    Structure Gene
    global_displacements = None
    -

    [u1, u2, u3]

    +

    Global displacements.

    +

    [u1, u2, u3]

    + +++ + + + +
    Type:list(float)
    global_loads = None
    -

    Global loads -3D structures

    +

    Global loads

    +
      +
    • 3D continuum model
    • +
    +
    +
      +
    • generalized stresses = [s11, s22, s33, s23, s13, s12]
    • +
    • generalized strains = [e11, e22, e33, e23, e13, e12]
    • +
    +
    +
      +
    • Kirchhoff-Love plate/shell model
    • +
    +
    +
      +
    • generalized stresses = [N11, N22, N12, M11, M22, M12]
    • +
    • generalized strains = [e11, e22, 2e12, k11, k22, 2k12]
    • +
    +
    +
      +
    • Reissner-Mindlin plate/shell model
    • +
    +
    +
      +
    • generalized stresses = [N11, N22, N12, M11, M22, M12, N13, N23]
    • +
    • generalized strains = [e11, e22, 2e12, k11, k22, 2k12, g13, g23]
    • +
    +
    +
      +
    • Euler-Bernoulli beam model
    • +
    +
    +
      +
    • generalized stresses = [F1, M1, M2, M3]
    • +
    • generalized strains = [e11, k11, k12, k13]
    • +
    +
    +
      +
    • Timoshenko beam model
    • +
    -
    generalized stresses = [s11, s22, s33, s23, s13, s12] -generalized strains = [e11, e22, e33, e23, e13, e12]
    -
    -
    Kirchhoff-Love plate/shell model
    -
    generalized stresses = [N11, N22, N12, M11, M22, M12] -generalized strains = [e11, e22, 2e12, k11, k22, 2k12]
    -
    Reissner-Mindlin plate/shell model
    -
    generalized stresses = [N11, N22, N12, M11, M22, M12, N13, N23] -generalized strains = [e11, e22, 2e12, k11, k22, 2k12, g13, g23]
    -
    Euler-Bernoulli beam model
    -
    generalized stresses = [F1, M1, M2, M3] -generalized strains = [e11, k11, k12, k13]
    -
    Timoshenko beam model
    -
    generalized stresses = [F1, F2, F3, M1, M2, M3] -generalized strains = [e11, g12, g13, k11, k12, k13]
    -
    +
      +
    • generalized stresses = [F1, F2, F3, M1, M2, M3]
    • +
    • generalized strains = [e11, g12, g13, k11, k12, k13]
    • +
    +
    + +++ + + + +
    Type:list(float)
    global_loads_dist = None

    Distributed loads for Timoshenko beam model (VABS only)

    + +++ + + + +
    Type:list(list(float))
    global_loads_type = None
    -

    0 - generalized stresses, 1 - generalized strains

    +

    Global load type.

    +
      +
    • 0 - generalized stresses
    • +
    • 1 - generalized strains
    • +
    + +++ + + + +
    Type:int
    global_rotations = None
    -

    [[C11, C12, C13], [C21, C22, C23], [C31, C32, C33]]

    +

    Global rotation matrix.

    +

    [[C11, C12, C13], [C21, C22, C23], [C31, C32, C33]]

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

    Initial curvature

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

    Initial twist (beam only)

    + +++ + + + +
    Type:float
    materials = None
    -

    Materials {mid: MaterialSection object, …}

    +

    Materials

    +

    {mid: MaterialSection object, …}

    + +++ + + + +
    Type:dict(int, MaterialSection)
    mocombos = None
    -

    Material-orientation combinations -{cid: [mid, orientation], …}

    +

    Material-orientation combinations

    +

    {cid: [mid, orientation], …}

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

    Macroscopic structural model -0 - classical (default) -1 - refined (e.g. generalized Timoshenko) -2 - Vlasov model (beam only) -3 - trapeze effect (beam only)

    +

    Macroscopic structural model

    +
      +
    • 0 - classical (default)
    • +
    • 1 - refined (e.g. generalized Timoshenko)
    • +
    • 2 - Vlasov model (beam only)
    • +
    • 3 - trapeze effect (beam only)
    • +
    + +++ + + + +
    Type:int
    +
    + +
    +
    +name = None
    +

    Name of the SG.

    + +++ + + + +
    Type:str
    nodes = None
    -

    Nodal coordinates -3D SG: {nid: [y1, y2, y3], …} -2D SG: {nid: [y2, y3], …} -1D SG: {nid: [y3], …}

    +

    Nodal coordinates

    +
      +
    • 3D SG: {nid: [y1, y2, y3], …}
    • +
    • 2D SG: {nid: [y2, y3], …}
    • +
    • 1D SG: {nid: [y3], …}
    • +
    + +++ + + + +
    Type:dict(int, list(float))
    nonuniform_temperature = None

    Flag of uniform temperature

    + +++ + + + +
    Type:int
    num_slavenodes = None

    Number of slave nodes

    + +++ + + + +
    Type:int
    oblique = None

    Oblique (beam only)

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

    Omega (see SwiftComp manual).

    + +++ + + + +
    Type:float
    @@ -391,12 +907,57 @@

    Structure Gene + + + +Type:int + + +

    prop_elem = None
    -

    {mid/cid: [eid, …], …}

    +

    Element id for each material/combination.

    +

    {mid/cid: [eid, …], …}

    + +++ + + + +
    Type:dict(int, int)
    +
    + +
    +
    +sgdim = None
    +

    Dimension of the SG.

    + +++ + + + +
    Type:int
    +
    + +
    +
    +smdim = None
    +

    Dimension of the material/structural model.

    + +++ + + + +
    Type:int
    @@ -409,6 +970,14 @@

    Structure Gene trans_element = None

    Flag of transformation of elements

    + +++ + + + +
    Type:int

    diff --git a/doc/source/analysis.rst b/doc/source/analysis.rst new file mode 100644 index 0000000..2a3cb13 --- /dev/null +++ b/doc/source/analysis.rst @@ -0,0 +1,13 @@ +analysis Module +=============== + +.. highlight:: python + +:: + + import msgpi.analysis + +.. autofunction:: msgpi.analysis.solve + +.. autofunction:: msgpi.analysis.run + diff --git a/doc/source/conf.py b/doc/source/conf.py index 544e3ce..ae26899 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -42,6 +42,7 @@ extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.mathjax', + 'sphinx.ext.napoleon', ] # Add any paths that contain templates here, relative to this directory. diff --git a/doc/source/index.rst b/doc/source/index.rst index a18e361..cc41001 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -13,6 +13,8 @@ Welcome to Some scripts's documentation! sg iovabs ioutils + presg + analysis Indices and tables ================== diff --git a/doc/source/presg.rst b/doc/source/presg.rst new file mode 100644 index 0000000..a9c8241 --- /dev/null +++ b/doc/source/presg.rst @@ -0,0 +1,15 @@ +presg Module +============ + +.. highlight:: python + +:: + + import msgpi.presg + +.. autofunction:: msgpi.presg.readMaterialFromXMLElement + +.. autofunction:: msgpi.presg.preSG1D + +.. autofunction:: msgpi.presg.preSG + diff --git a/io/iosc.pyc b/io/iosc.pyc index d0d4a6c4d5262a36fb911e6394a4478d19e1387f..e7eee478e42493ebbbba36c1b3668a64e41d2e8a 100644 GIT binary patch delta 472 zcmX?8e6yIH`7*h8*|qo>-6jWEDv25Erlgjo=HwT|q*&;t7v+~0#HVMLY|i9k z;>E9Gv9t>deiiZxq0IPItWkbTK*dFM7e@SM_-YE^S26jby6omnT4$K>nlo8mL2UCG q-G}(yGugmQelv^Fc>*?qRB4%?+yff)w@Hx*di$M5KNOIHA{?V=R` delta 459 zcmcave5RP4`7T_?{|R}wYSElMp;O)N^zh$$*g&WKOWPf0D_oW;k) zi&w!?X%`lJ3MTK<729l~V9$(C(dG@xZ}BRaJV#4*^JjH+M!cp3YYO03Fh}bp6J8Vc q>3+xSj?M23-{G}l@;gKM%_b)22rG&*dx>9Bjm3R@Zk;^E(iH%pj;JO8 diff --git a/io/iovabs.py b/io/iovabs.py index 2aa3d07..7fe3170 100644 --- a/io/iovabs.py +++ b/io/iovabs.py @@ -17,8 +17,10 @@ def readVABSIn(fn_vabs_in): """ Read data from the VABS input file - :param fn_vabs_in: File name of the VABS input file - :type fn_vabs_in: str + Parameters + ---------- + fn_vabs_in : str + File name of the VABS input file """ try: @@ -218,8 +220,12 @@ def readVABSIn(fn_vabs_in): def readVABSOutHomo(fn, scrnout=True): """Read VABS homogenization results - :param fn: VABS output file name (e.g. example.sg.k) - :type fn: str + Parameters + ---------- + fn : str + VABS output file name (e.g. example.sg.k). + scrnout : bool + Whether to print message to screen. """ sm = sgm.MaterialSection(1) @@ -412,6 +418,22 @@ def writeVABSMacroData(sg, fobj, sff): def writeVABSIn(sg, fn_vabs_in='', fmt=1): + """Write SG to VABS input file + + Parameters + ---------- + sg : :obj:`StructureGene` + Structure Gene that will be written to file. + fn_vabs_in : str + File name. + fmt : int + Format of the input file. + + Returns + ------- + str + VABS input file name. + """ if not isinstance(sg, sgm.StructureGene): return diff --git a/io/iovabs.pyc b/io/iovabs.pyc index 38a348a05de6860bddac0ef743ce204b7329791a..008f4916a7506d0f84e5a998823d17b9597de23a 100644 GIT binary patch delta 1068 zcmah|K~K~`6n@i|?zRO115rYN5fye)i9ro+J zSLP3kJdX_f>iENgU#Ky`{J^HTt{pG+S>lV&3dLZt!s!GJgs(uPMN{@jyk+ki#EN@5 zyG-&Xy4;%``=8h;k%iveoiQaDEc@Ks5Ew6dUNv!{^D9iOFrNyKuKN`(XpIFyq0A(J zDU9*4_+{^P!}$yV!47U<#~=DW5^_J@@4uyy+4#%ATSAKQ{?H5|wfKl$)JYI`U3#aH zo#@lZlXC>}t_F1-Tpj8L2pvKKt`R*L%{AJfZi0(@O6_R~0anxCny{vUUzZ0Y@bLss zDSWSm%V-+-`6QZF(O5-Oz(HwRDrzN~hv256Zpo-HqVJ>qSOXRirXWm1*?_vO_zt)h ztmzQkAhM)($>}={nF-`i609Y(CF?dS%ao30img=2N(G_cDWa94xn{JR>1&hvW^|Al zpm=I|BD<`^wgyCsqP$Euqod3MaiY7~p+N_>2@ugE9YeeYl64?>T0IM{6K!ROohBvJ zFgZHNUckh|?C_ZuigilWh~x$vO$d$VT>`TU_>=OPcKO${1TnuN7|qYfzL=Yw%F_y8 z$8IWBs?1i+^zX(D%Gh`lUU79|DKGquWwGJ28OGVtaUb4xqv<9r6Uql-E9RL6T delta 627 zcmZ9JOG_L<6ov2Y=Tx=E2M%h~No#^mw~7QrNRv$AP@*yhIp%-PC|NdDb6|HsiN=E%ik-G`Jf7{lTTYzLBcU|pD?YfYF?qu3!dFLmHUC5YnQ%fwChb)U?qF(M>E5L>c%~@1$ z=uqrn{GVj!QsWWQ>> lines = ['1 2 3', '4 5 6', '7 8 9'] >>> utilities.textToMatrix(lines) array([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) - ''' + """ matrix = [] for line in textList: line = line.strip() diff --git a/io/utils.pyc b/io/utils.pyc index 5dffa6b1091b191985445f2d7757a2d8c0a51fca..24d7c8963e1f65fbb0794459a53ef4f1dc076803 100644 GIT binary patch delta 1146 zcmcgr&ui2`6rSmBlQp~DdXQ9#;AlZoWz(V_Gze0#h}0it6}*UT)=tvYBomW~-HNc_ z$!ncU{{-l7oj|Kt2%-A&zya++oafz_#&+Im4qi9_U1?WN0uZK@6k>+R4doOmoHyJ^6K z*teBaoJT##2XSGLaVv=V;z+POCCnqzPrSsZ=ZY{d;t-PYbm%M&@xrMxCEX2!SeDXb zEUX-U)>p7Co=#=>rg)~GH7|9x=yMvfRNoNSx3;e z7c%#sjf)rf%>TB1Yq~qW?a$NJiFt%j)&hgtZ9IeLv4)So(XS3Lx^GR%yKi6~0(+FW zg7ns#7j$#hY|XZ`KLi&&E&u=k delta 811 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 diff --git a/sg.py b/sg.py index f49a73a..e3e76ed 100644 --- a/sg.py +++ b/sg.py @@ -5,13 +5,56 @@ class MaterialSection(object): """ A macroscopic structure model. Stores material or structural properties. - :param smdim: Dimension of material/structure model. Defualt to 3. - :type smdim: int, optional + Parameters + ---------- + smdim : int + Dimension of material/structure model. + Beam (1), plate/shell (2), or 3D continuum (3). + Defualt to 3. """ def __init__(self, smdim=3): + #: int: Dimension of material/structure model. self.smdim = smdim + #: str: Name of the material/structure. self.name = '' + #: float: Density of the material/structure. + self.density = None + #: list(list(float)): Mass matrix at the origin. + self.mass_origin = None + #: list(list(float)): Mass matrix at the mass center. + self.mass_mc = None + + #: int: (continuum model) Isotropy type. + #: Isotropic (0), orthotropic (1), anisotropic (2). + self.type = None + #: dict: Engineering constants. + #: Keys: `e1`, `e2`, `e3`, `nu12`, `nu13`, `nu23`, `g12`, `g13`, `g23` + self.constants = None + #: list(list(float)): Stiffness matrix. + self.stiffness = None + #: list(list(float)): Compliance matrix. + self.compliance = None + + #: list(list(float)): + #: (beam/plate/shell models) Refined stiffness matrix + self.stiffness_refined = None + #: list(list(float)): + #: (beam/plate/shell models) Refined compliance matrix + self.compliance_refined = None + + #: list(float): Mass center. + self.mass_center = None + #: list(float): (beam model) Shear center. + self.shear_center = None + + #: int: Failure criterion. + self.failure_criterion = None + #: dict: Strength properties. + self.strength = None + + #: dict: + #: (will be deprecated) Effective properties of the material/structure self.eff_props = { 3: { 'density': 0, @@ -53,11 +96,11 @@ def __init__(self, smdim=3): } } - self.strength = { - 'criterion': 0, - 'chara_len': 0, - 'constants': [] - } + # self.strength = { + # 'criterion': 0, + # 'chara_len': 0, + # 'constants': [] + # } def __str__(self): s = '\n' @@ -96,116 +139,152 @@ def summary(self): class StructureGene(object): """ A finite element level structure gene model in the theory of MSG. - :param name: Name of the SG. - :type name: str - - :param sgdim: Dimensiona of the SG. - :type sgdim: int - - :param smdim: Dimension of the material/structural model. (1: beam, 2: plate/shell, 3: solid/block) - :type smdim: int + Parameters + ---------- + name : str + Name of the SG. + sgdim : int + Dimension of the SG. + smdim : int + Dimension of the material/structural model. + Beam (1), plate/shell (2), 3D continuum (3). """ def __init__(self, name, sgdim, smdim): + #: str: Name of the SG. self.name = name + #: int: Dimension of the SG. self.sgdim = sgdim + #: int: Dimension of the material/structural model. self.smdim = smdim - #: Analysis configurations + #: int: Analysis configurations #: - #: * 0 - homogenization (default) - #: * 1 - dehomogenization/localization/recover - #: * 2 - failure (SwiftComp only) + #: * 0 - homogenization (default) + #: * 1 - dehomogenization/localization/recover + #: * 2 - failure (SwiftComp only) self.analysis = 0 self.fn_gmsh_msh = self.name + '.msh' #: File name of the Gmsh mesh file - #: Physics included in the analysis + #: int: Physics included in the analysis #: - #: * 0 - elastic (default) - #: * 1 - thermoelastic - #: * 2 - conduction - #: * 3 - piezoelectric/piezomagnetic - #: * 4 - thermopiezoelectric/thermopiezomagnetic - #: * 5 - piezoelectromagnetic - #: * 6 - thermopiezoelectromagnetic + #: * 0 - elastic (default) + #: * 1 - thermoelastic + #: * 2 - conduction + #: * 3 - piezoelectric/piezomagnetic + #: * 4 - thermopiezoelectric/thermopiezomagnetic + #: * 5 - piezoelectromagnetic + #: * 6 - thermopiezoelectromagnetic self.physics = 0 - #: Macroscopic structural model - #: 0 - classical (default) - #: 1 - refined (e.g. generalized Timoshenko) - #: 2 - Vlasov model (beam only) - #: 3 - trapeze effect (beam only) + #: int: Macroscopic structural model + #: + #: * 0 - classical (default) + #: * 1 - refined (e.g. generalized Timoshenko) + #: * 2 - Vlasov model (beam only) + #: * 3 - trapeze effect (beam only) self.model = 0 - self.trans_element = 0 #: Flag of transformation of elements - self.nonuniform_temperature = 0 #: Flag of uniform temperature + #: int: Flag of transformation of elements + self.trans_element = 0 + #: int: Flag of uniform temperature + self.nonuniform_temperature = 0 - self.initial_twist = 0.0 #: Initial twist (beam only) - self.initial_curvature = [0.0, 0.0] #: Initial curvature - self.oblique = [1.0, 0.0] #: Oblique (beam only) + #: float: Initial twist (beam only) + self.initial_twist = 0.0 + #: list(float): Initial curvature + self.initial_curvature = [0.0, 0.0] + #: list(float): Oblique (beam only) + self.oblique = [1.0, 0.0] - # Materials - # self.num_materials = 0 #: Number of materials - self.materials = {} #: Materials {mid: MaterialSection object, ...} + #: dict(int, :obj:`MaterialSection`): Materials + #: + #: `{mid: MaterialSection object, ...}` + self.materials = {} - # self.num_mocombos = 0 #: Number of material-orientation combinations - #: Material-orientation combinations - #: {cid: [mid, orientation], ...} + #: dict(int, list(int, float)): Material-orientation combinations + #: + #: `{cid: [mid, orientation], ...}` self.mocombos = {} - # Discretization - # self.global_mesh_size = 0 #: Global mesh size - self.degen_element = 0 #: Flag of the type of elements (SC) - # self.num_nodes = 0 #: Number of nodes - # self.num_elements = 0 #: Number of elements - self.num_slavenodes = 0 #: Number of slave nodes - - #: Nodal coordinates - #: 3D SG: {nid: [y1, y2, y3], ...} - #: 2D SG: {nid: [y2, y3], ...} - #: 1D SG: {nid: [y3], ...} + #: int: Flag of the type of elements (SC) + self.degen_element = 0 + #: int: Number of slave nodes + self.num_slavenodes = 0 + + #: dict(int, list(float)): Nodal coordinates + #: + #: * 3D SG: `{nid: [y1, y2, y3], ...}` + #: * 2D SG: `{nid: [y2, y3], ...}` + #: * 1D SG: `{nid: [y3], ...}` self.nodes = {} - #: Elemental connectivities {eid: [nid1, nid2, ...], ...}, no zeros + #: dict(int, list(int)): Elemental connectivities + #: + #: `{eid: [nid1, nid2, ...], ...}`, no zeros self.elements = {} + #: list(int): Element ids self.elementids = [] + #: list(int): 1D element ids self.elementids1d = [] + #: list(int): 2D element ids self.elementids2d = [] + #: list(int): 3D element ids self.elementids3d = [] - #: Assignment of property to each element - self.elem_prop = {} #: {eid: mid/cid, ...} - self.prop_elem = {} #: {mid/cid: [eid, ...], ...} + #: dict(int, int): Material/Combination id for each element. + #: + #: `{eid: mid/cid, ...}` + self.elem_prop = {} + #: dict(int, int): Element id for each material/combination. + #: + #: `{mid/cid: [eid, ...], ...}` + self.prop_elem = {} - #: Element local orientations - self.elem_orient = {} #: {eid: [[a1, a2, a3], [b1, b2, b3], [c1, c2, c3]], ...} + #: dict(int, list(list(float))): Element local orientations. + #: + #: `{eid: [[a1, a2, a3], [b1, b2, b3], [c1, c2, c3]], ...}` + self.elem_orient = {} + #: float: Omega (see SwiftComp manual). self.omega = 1 - # Dehomogenization - self.global_displacements = [] #: [u1, u2, u3] - self.global_rotations = [] #: [[C11, C12, C13], [C21, C22, C23], [C31, C32, C33]] - self.global_loads_type = 0 #: 0 - generalized stresses, 1 - generalized strains - - #: Global loads - #: 3D structures - #: generalized stresses = [s11, s22, s33, s23, s13, s12] - #: generalized strains = [e11, e22, e33, e23, e13, e12] - #: Kirchhoff-Love plate/shell model - #: generalized stresses = [N11, N22, N12, M11, M22, M12] - #: generalized strains = [e11, e22, 2e12, k11, k22, 2k12] - #: Reissner-Mindlin plate/shell model - #: generalized stresses = [N11, N22, N12, M11, M22, M12, N13, N23] - #: generalized strains = [e11, e22, 2e12, k11, k22, 2k12, g13, g23] - #: Euler-Bernoulli beam model - #: generalized stresses = [F1, M1, M2, M3] - #: generalized strains = [e11, k11, k12, k13] - #: Timoshenko beam model - #: generalized stresses = [F1, F2, F3, M1, M2, M3] - #: generalized strains = [e11, g12, g13, k11, k12, k13] + #: list(float): Global displacements. + #: + #: `[u1, u2, u3]` + self.global_displacements = [] + #: list(list(float)): Global rotation matrix. + #: + #: `[[C11, C12, C13], [C21, C22, C23], [C31, C32, C33]]` + self.global_rotations = [] + #: int: Global load type. + #: + #: * 0 - generalized stresses + #: * 1 - generalized strains + self.global_loads_type = 0 + + #: list(float): Global loads + #: + #: * 3D continuum model + #: * generalized stresses = `[s11, s22, s33, s23, s13, s12]` + #: * generalized strains = `[e11, e22, e33, e23, e13, e12]` + #: * Kirchhoff-Love plate/shell model + #: * generalized stresses = `[N11, N22, N12, M11, M22, M12]` + #: * generalized strains = `[e11, e22, 2e12, k11, k22, 2k12]` + #: * Reissner-Mindlin plate/shell model + #: * generalized stresses = `[N11, N22, N12, M11, M22, M12, N13, N23]` + #: * generalized strains = `[e11, e22, 2e12, k11, k22, 2k12, g13, g23]` + #: * Euler-Bernoulli beam model + #: * generalized stresses = `[F1, M1, M2, M3]` + #: * generalized strains = `[e11, k11, k12, k13]` + #: * Timoshenko beam model + #: * generalized stresses = `[F1, F2, F3, M1, M2, M3]` + #: * generalized strains = `[e11, g12, g13, k11, k12, k13]` self.global_loads = [] - self.global_loads_dist = [] #: Distributed loads for Timoshenko beam model (VABS only) + #: list(list(float)): + #: Distributed loads for Timoshenko beam model (VABS only) + self.global_loads_dist = [] def summary(self): """Print a brief summary of the SG. @@ -226,8 +305,15 @@ def summary(self): def findMaterialByName(self, name): """Find material by name. - :param name: Material name. - :type name: str + Parameters + ---------- + name : str + Material name. + + Returns + ------- + int + Material id. 0 if not found. """ for i, m in self.materials.items(): if m.name == name: @@ -237,11 +323,17 @@ def findMaterialByName(self, name): def findComboByMaterialOrientation(self, name, angle): """Find material-orientation combination. - :param name: Material name. - :type name: str - - :param angle: Orientation angle. - :type angle: float + Parameters + ---------- + name : str + Material name. + angle : float + Orientation angle. + + Returns + ------- + int + Combination id. 0 if not found. """ for i, mo in self.mocombos.items(): if (self.materials[mo[0]].name == name) and (mo[1] == angle): diff --git a/sg.pyc b/sg.pyc index 2cd77610c307ac1f32295e0a9b2b280f7ac371c1..d56f1589e9a5b8760e499563acd8bc28d1d13100 100644 GIT binary patch delta 1728 zcmbVML2ukd6!ti~UVC?wbv8jjlPFVYi381+u%VzHkf2d3R0uFZsPwXOcgM-J_BgU< zBZ1oPkxEEN)u>W?;KT)S%?&OHZrl)u9{LYBaOnYwL&bZuvAb%j3gMN%{pQWg^UU|Y znY*vuIqgh6oUZ?)Z#zGcN4J0ZZ2jXf3lpw*me(mfYvp5_c`^_QJxhgDrVS(XNwTt4 zH0XOgOlYvadW!DFq2j0WT^`3Ycmo1yM!TD|pGqa2q>M*G@_}kYw4Ww>u?S_KV|W}dv-i1#f~h9X-sNG|I}BjDC=~H9 zjO<$+l=E+^-4#9I1We_Ov$nO<#S=rVw1d$u

    Ej>ix=}4V+=pu?2mt%85Amz4{|rT7odcK6VU1p$0LRfl**Ve_z`t z`+C{E)L6tJ%Lpg*H}jwC2kuO@?vUnX{g-=%boD3R#nH2!iq!z4<|->awuPZIqH34Z z?F(b?TS7AKa>cNqir5Fh;_au+~Al zd7tB*y*_WTJ0!mU| z8Ed63PpJlu{1C2)OoTDT{!YCd&bS(8a(n|#WGwq1Uq3Hl_e3Hw=+M`xh^R~zjnbhU zbo9@&^UJsyBQuxZ-Zjdj>(j;F(#)~c=CHnh(RIneL=$43*Zd%}45 z{r|mXoQzK>cVhHw6sKW%wVIxfG6BbX6e={N88)$$|1OltMbD+l6(PsDo+8y_fl&p4 zbswv=u?Cc#M=-WPYX<0ARyx(FYu3ju=m&E*&YUadY%P*kiAw^!{@6)`R}fYZ%t=RA qvG)-^z~laW0Q75k^E!ajbZqaI=X-7aXnutRFyfNF`P_@-tA7E(YiZ8_ delta 1192 zcmbVL&ubGw6rR~Mn@qMbKiZ^JYMr)dqxJ`Fq2M0cilr(=gpGmc;zUGN|UK?M&A{sDTZ2TvXaPaeJa-fW~+Jh{t$JM-pyGxNT0=E?ZZDKqgS zo7pk8%{TPb_PeWDyXm&v29FvwuVJeTba<4{i~3F1mt2N?YAnOyvE{9%Xmhw1$Ppek zr56USuinzWQkoL7MadQ+%Y@Y8230lV({Y1%2~smit&2?KubWJ-10_YKkqkqGR4XMl zn|Qx086jk?}}Z>L8Sx6WD-E{Q(`x88$z>0y}sORh0RE&kswYC^h6p0moQHKTHw3SqJ77*s19J{$$G%>%MrL_s z!se^OZH(|qn>T$|it%Ve`2Gl=vUwExUTu8U57%y-_^0Q)FRj}&U&PwA5xAaH*qzJn z(R>NZ#UW=10mZ(&h(a{ri)H|{*p#K1k+%?0dPZ|J*TIskgC&@$V`vG59)5=YQ&wcg z?uXnS9n%iP3&4cVVT1{UNrX{^F@Or3Mgo?=9?X7dekAHxu|=2EPI0LIr}F$FNYL_J zpQG}znER)F-wll6T$CLBfJ2m=WE8le2nS%d|=3q6C- eT!Amj0GO6(Fv0T7Qa{VXbPyQV)SaGQy7UW;Yz7|y diff --git a/utils.pyc b/utils.pyc index 77e1dc0bdeaa7cefe5207037836d900d5d0f3901..38be490aad3d8b2784b89c47d0b5643b320f3d64 100644 GIT binary patch delta 821 zcmaiy&q_i;6vn^tUd_2)y?WJ~e-cfooe-4N&XB@hp-bSRqnAWb`nQV~3aw+_pjWuG z6@r%0qGt$O1wotIH4d%E8HV}h@H^*x2j;asYnP4hr1iD4+dakqGUUB4&&B+{ymdQ> zVi1GB0s@F(7{`Faw?Gk00Y3pUKqjUPzOA%;Mlp@RPl95KNr7Z~TrrN)9AqJoWI_eg zAX||cP*MpOlv1LZU34W!ad}W$MLkePiB*t`UIBf{WEYVMaO@Yu1T!P-Ks>p1Z@WRg z>)voQKB2uva6Y;kcZ0Lbuww*KANaezL^w;d^hQN9^{a2vcYOUM z;>Uf_mJqdSE==cIOT6CY4^3^I&@6TI(}a^Xrtc!Xc;Q>cTS^VJR>X6)&Pw8=S`~%b pqaKyhi{g56vo1fq&E$@_%rUrYR~(CTyO7Uv&Nq0}w)hcu{{U|Z=$ill delta 828 zcmaKqPfG$p7{;G<{Wt6C>aLRcCrt`G6h!BsQljpiS|V9|O%bthy?4+)K+LUg5kj2` zI(3OYLC3lTT`Gu9HBNP%8HRc1ncqC``@-DR9%_00J#O@?a|ccQ4PERTV)<`p`IQql z1OiAyFN|&k-6&l4uNdgY;F_QS#(*0K>7XFS8r+18#W93&0ImfJOC|}5fTEH~$ym4< zXbUnXMH^&F(gDRW-W0xRP(n(XX&q!qZU&T;ViuH=!7Ru|D~ChDI8$W=?78`i?_fZy z^INBqSzR8q{FXOpcJ>E;v(soEQOlpK>1|yJJcb*Z3gE-&tLlDo&YqM8ldIUevPSM% zX=4oatsC3YC+sZyBqk^VRaa~+e0=!b{sY>8?rHWSI zFQrl{EdKDZ*C)>(2BsnLX!%n4_Om=+T@a|L{Z3o6bY`1H%V5mRW*o-YA`6)Y+hO(( Dn2GGO