From adffe5e47e1034f1a92a8b7d396bccd04d6e1195 Mon Sep 17 00:00:00 2001 From: David Hendriks <davidhendriks93@gmail.com> Date: Wed, 25 Aug 2021 18:06:05 +0100 Subject: [PATCH] updated docs --- .../doctrees/binary_c_parameters.doctree | Bin 916548 -> 936233 bytes docs/build/doctrees/environment.pickle | Bin 536177 -> 537897 bytes docs/build/doctrees/functions.doctree | Bin 209313 -> 212148 bytes docs/build/doctrees/grid.doctree | Bin 107231 -> 104489 bytes docs/build/doctrees/index.doctree | Bin 30144 -> 30148 bytes .../notebook_individual_systems.ipynb | 121 +++++---- .../nbsphinx/notebook_population.ipynb | 17 +- .../notebook_individual_systems.doctree | Bin 54049 -> 57802 bytes .../doctrees/notebook_population.doctree | Bin 154820 -> 154083 bytes docs/build/doctrees/readme_link.doctree | Bin 26888 -> 26892 bytes docs/build/doctrees/spacing_functions.doctree | Bin 12398 -> 12404 bytes .../utils/custom_logging_functions.html | 4 +- .../utils/distribution_functions.html | 4 +- .../binarycpython/utils/functions.html | 253 ++++++++++-------- .../_modules/binarycpython/utils/grid.html | 118 ++++---- .../utils/grid_options_defaults.html | 4 +- .../binarycpython/utils/plot_functions.html | 4 +- .../utils/run_system_wrapper.html | 15 +- .../utils/spacing_functions.html | 8 +- .../binarycpython/utils/useful_funcs.html | 4 +- docs/build/html/_modules/index.html | 4 +- .../html/_sources/binary_c_parameters.rst.txt | 67 ++++- .../notebook_individual_systems.ipynb.txt | 121 +++++---- .../_sources/notebook_population.ipynb.txt | 17 +- docs/build/html/binary_c_parameters.html | 82 +++++- docs/build/html/custom_logging_functions.html | 4 +- docs/build/html/distribution_functions.html | 4 +- docs/build/html/example_notebooks.html | 4 +- docs/build/html/functions.html | 16 +- docs/build/html/genindex.html | 6 +- docs/build/html/grid.html | 18 +- docs/build/html/grid_options_defaults.html | 4 +- .../build/html/grid_options_descriptions.html | 4 +- docs/build/html/hpc_functions.html | 4 +- docs/build/html/index.html | 6 +- docs/build/html/modules.html | 4 +- .../html/notebook_api_functionality.html | 4 +- docs/build/html/notebook_custom_logging.html | 4 +- docs/build/html/notebook_extra_features.html | 4 +- .../html/notebook_individual_systems.html | 124 +++++---- .../html/notebook_individual_systems.ipynb | 121 +++++---- docs/build/html/notebook_population.html | 12 +- docs/build/html/notebook_population.ipynb | 17 +- docs/build/html/objects.inv | Bin 5490 -> 5490 bytes docs/build/html/plot_functions.html | 4 +- docs/build/html/py-modindex.html | 4 +- docs/build/html/readme_link.html | 6 +- docs/build/html/run_system_wrapper.html | 4 +- docs/build/html/search.html | 4 +- docs/build/html/searchindex.js | 2 +- docs/build/html/spacing_functions.html | 6 +- docs/build/html/stellar_types.html | 4 +- docs/build/html/useful_funcs.html | 4 +- docs/source/_templates/footer.html | 4 +- docs/source/binary_c_parameters.rst | 67 ++++- docs/source/notebook_individual_systems.ipynb | 121 +++++---- docs/source/notebook_population.ipynb | 17 +- 57 files changed, 885 insertions(+), 565 deletions(-) diff --git a/docs/build/doctrees/binary_c_parameters.doctree b/docs/build/doctrees/binary_c_parameters.doctree index c459014308936f8bff24b47e72c5c4d983c4405d..f6338cfabfc2f18737da714694c03fafe5132542 100644 GIT binary patch delta 100664 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 Cps>OK delta 91376 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 Ww>NUdC`l(e7!Ac2l0-)%{{I2O?kl+f diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 8aa716a6daf4ce81ff15762358ef66b377771a6d..e0ed39a409e8733fee869823a5a3c54d0b789365 100644 GIT binary patch delta 54984 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%0DCyFPXG^b z;1K~F;J~8-ILv`35a`V8zb1}6#SkbxE9^5ELRZoLEGHlH0F3;CCuDz-lV1_Qs~k8k zfD;^e3juT}?I$_#SJwZz-wBoRo}mAY(?1lzM;!Q60H1N-v;e-~z?TB}iUVH@;9ng0 z76JA_nE${(od3>x5LU47Jt6xK@DIp83*Z+H{4Rj=9QZ>37da3BZY$421OI@B9s%}V zc>@Q6WT2iaJ4Db!IXzqe5gdpXKnw@s5kQyLp1^@*55S6%>IvD?I5|TAnH=bhKt1Eo zg(F=>lpGG^3!obZdJ3Qy2d+hcxus6tY5RKsCdEKc$c`Q}C}OYx&|_ZFSZ^OH5OkR# z%5VXo%M8Fs0ieqaz-R%W%M8F+0id@Gz<2?mw+ujm0MJ_oz>Gjw{93NP5dH!(nIm%Z zpW+GGujk~c0=S6-(*-bt0~P_y;y{T2N;yy_fN~DZsTW8kN1Otv=0L3gTpXA$fCU^_ zjDUEE1WIz72Viy3;0f8$?FRDg2*}&~eE$E72Vn_TdP4S1Ji%%N#Lho(aC-n2|85L1 z$95-=zs>_Nvg8SY2hQ?eF97)dFGHw6&;f@GHVFV7Z~*QV06O3RY!v`H-~enF06O3R z>=Xbx-~ik&0Cd1t!1ErtSpRsAQtNV-I@!|+@?l0D0^Z{fa9#v`Sh(TV72NoVTV}gJ z2q$s4;d}_UW=CY?lehj3!}Mh-e4U12=OKU_RxI4GzTk$n0Jk*y)#s$2WGKi8!t<oK zYGdz2b5D^p>B9*rO6+F9;vP!?`VqLSEp{79E7>_+aJA^#Q)D(@4m8nc4-u0Fj_J^} z)1;#w2S|5{R6ReA&N@wuu+CO-nq=`Mv;<0?gLSflr%6m-ca)=;KZ#*+mBS%HhqZz~ zy1}N7CH&YA+>jsKu%K{DX!_<fnLLo3qJxtIItHBr$qMc-czR_c-I)>)AHu>%3*Li8 z-8eky83%HmqI;7AOpxMuazHn@{hl0<orrbfj_{l-#YY-Ek2BE0DFLa(L}#P~B<NT) zy3?gi2Sz5kEhQj{ofnb0!`30jsB`B^<d58y!KndFu(_Esto}VCKSc_U1i3@1Yi#ft zA)BSNq68l0V<P4ii~tdh-lw=3I=bK{K((_gt)6((3rYad^Fx$!+Svtj0n?Q@9q?ET zXXh$d1yDq_bH1&n(mLOg&WKirhkj?lE}$Ddbkxafw`h8UGA`VrNrzjSMUxG;@fJ;T z0*YcTBj$w!)0A23YHKU34oq{KMUxQA$h(O7IFfbzfGE)RTQsS_;SJybw}0`QewHQ; zLY-$Z?nSdSIS{&amL@rlaoG}J-W>p3^q&3SQ}n<rO&-MgjNgK-nj{Eyv1;<VvlLWg z-lc&Q2Kl%sFTeSi#{4b9MvE7x%dMJBNc<qby<yd)K<M9AP5)HJs+ZQ>q=hu0?7+EY zuEk|7u7u}VPSN4Tnl2EvqFB=jZflA)+5K6H(Ry>S9#RBCFQ~MXT3uE-dz;>TD-yy= ztd%7eo2A0xvX#|XE0Ni`Vy2hy5=}-2#^npW`5TN3Col1=aQ#H0gIsPdfpVwPRVA8E zQ8-Yzg9>V#b=B6M-MjaIp@SYP(e%(Wf-+qyjVRSb_hvZHyhxF`0#?ezVAxyJk|=1@ zu%T6|$>(``+7yeC3Xgx7K%{pdhp7xvmYV@`OJ)B<u+`Su*fVkP5FNu5jfaIpJ&nnN zPtRfAgKW_JQt2)H)?m{lX)z{^n5Bu%;b|(WW?O1OvCba-`&}zD4po47ASIQ4Zqvka z{iL#UC(&F2Py1x7Vktgf!DB_U^U82Ifl)d*@GIh#aAZ~Pqzo0^j)lBUjs+E+iG{tL z&)fG>>CxGmw0K5uF$y3?r_a)uIx?#00W72#7g#uo78Q~h(9@(c%?+CA7q6kiQUl`X z(K5}2fU=UN!{wS3y)LNKHrvFG^hRgd9JRJ8Xw9rN6;6k>W+B~q$dE)A|Dhd8ze?7H z(ZBtn9jD94$OsCeT`y|;uV11|p-DuSgokJK^nr`oG)<|klIC61CX%4_+jX()wYoG~ zOmuPUhv@pQU#RQ6{(fEL`X_ZG)?d_3r?(KD2?4s1=+f!4MAxb5q(k#=FU|EebxphP z(}cx@38A3-xZp^5`iq(b`dpJ{9Gp6K{tky4laFYiP_Jr@rs_&KIfCDIpWc0Deyz(2 zhlS@?xXQD-@T6VnJBwj6`JpkoKsxA%CZB3w4@m99X%>gmG#I`M@5-ue#s$XUN^6PD z!@|@h*VLs;b~fESMwb{PC&dAJx?n?(zo^NfOO9yz(xR6%TKdWX$P<FbUKSpwHe)7a z)uLET<)(_+EpYn96PmtFA0N^DW^d|0Tswm_y_>0B8PPPYkM?wM)9xazC7@~Bc&*Vu z4P*ETW_{D)5!xb6Q@|MQT#YspeoY}$w13q$&6%bBi8KwnMVk}Q^!Ze6v3_{t`t@r9 z*jo#5z6pf}IL}t&vJ@|L!I4cj)Z^^Nf~<m`FzCQjk^E>jENmyj)Y-eBfDJ|XJVX{l z3Jb~r=}=o&?5crJ%(CJ@e`Yj$!4E)7#HSgOJ2K>Fa~e(q2Khuck7v#x=1vGl(WM(m z%q<wxoJY*v5sNIbx=PAj6;-x;i^V3N5MnWU5_2Dn5h!9b+AE=0<}8^IR8eawu~yf@ zNmMzbe#AV4I!m;PqZo%V#9YAg7-_9`)z!c=iY@an6Z3T}4-rGoV>l4#n<d($K*s5M zVs_ATCEDnlSa2ROFUMrTHMT0}JR8=(M}(Ec`~Z@S@WG^N&=x!&#F9Kn%*R-gk{X-U zWwVr*&h8_VUL<B+0G(N?&FH|Qh6b2>;53+o$JvuR^Ypy~%p-703vt%Ds_R@9eC>i< z59SFP^Hh4WRGY+$eX~3%hG6AFWn1eiU7n~9Ys@b(Hb}G9lv(E37J6u}YRvBdjn1`e zqj)8~r!oHvV@JqBV}e?EkBy^D7X4d|IT$BR){gi=09J%3t+@elCIaFXYb8v7jJ8Z` zK1a9Pv@xuKnSa!pd+Q)-Se12-&B7;Nmu&%<DlB$iop~bt)TZq>f(0k(%y(eykV>bu z6wNe+>hIB+UtqKfM{PCCJglwCY>w;9-|FaHv$ct%8J{yc^KTe8xXM;j#>YjE8vd&@ z&<lq^=s~^yaihdh@$Ti>6<6A<?-q^Y``UuMiC{sjGE4t1Pu}cwd?MKlSD~13ffb zn;FD1Pc)c&8tCV<wH<lu>SHiZfU#Vg#p}P&U|wJVb}$vs(xwK>nJhM#@1%L<+EkwA zZi9InZ79<wcVjGf8_bVjnpkeamW;Bohtu+*{`q6MEY?AT`6YUyOq*!f3I8BI-CnLu z<P6_1m_MXp5KMg){sFBH2agUTDsZ+KIa)mIMz@q}Q`j>*?m$JaiKizZZ4xfQx+4Xy z=x^~GDzq_rMu+|XL=vlGJ`e3)u1(S+Oy4fi#><QqT|S=HS7;M^amE5yGR7=h404?H zn%Ua;JeJT`17?KaX5BHKM%cA+@bq)GU7N&ZO~<!optT=Q9d>Oj2jkcSV`j#IHF0lG z@?zee$1p_~@y79Xjd=Qw-J>5qqQ-iY;mb4l1A20!fW<yW^$xV0XY-cNux6tqkJY^I zFsya&V{r5C!Jz0W7*6O{T}XJcEJTYTiN)e$mw`)}B3{Fx)AKa+^lWWL9M7WJ7>W?J zlxj@_8L`#8!%)T8%EB#rYCL_uQX9?N)G3>`57cK^m3E}2WO)D@N=Z%CRoaV2tqFe2 zK5D9(r~NU<P=aqAvXwU3?$gfD(03ltE~1^r=pyKueelMRV~^^M^q$??hmg>X-nvKo z0o}1z8$-`Or4MSVeNa0+fR_9{fW>}Xq%%>=4!yqVn}@WI1Za@=y^m=B7BF^XxvgZ5 zX|}V*R8~__>RMQB0|NyH^&k`pe_$>+oGvBRG`)+hw9JN9iY#ZBnY6*Ijp=!VV~)c) z-{Fls&ste$%QqEO+N|)YT4pVotiZ0^R%3EHY#Bi`qDG(7<T#|2dS;o1mzDz6TDj0w zQBrF{i^t@0njo?XPR3c$se!O_0PPW~%gmhK#RGPkna_vEERmRvc-c)q|3lj&vFYDL zcXJ@u?yO+lw$R8-Q#H&RuB?ojItLuYC>vm+?|iIFhi7h|nXVhv)IUM@ZSIEG13ESh z8>^#)9viOF)4M+o2<$k&rosjBL8OXWP?O1uii3AexNN0RxSF~WnAvHMMfzwM%k+9$ zR0scZOZ6S-#c{gvR2r{|rS~lX6AE8$6X~^t`7{a!pY`tnQMCJQ8hw*xyzV74jo+lp zr{NpG@|{g}J?S4^b$YsSqpmAGK;d7}PF*N%*bIb_Cv_n-e4TD2y?LXqA8l9<2J_I( zaCvJZL^(T4ucOC$X`n$+9UNr;T4SVVPXuV`BlqbdV!C+hy$e{3gH60@=_CJ!(-^b1 z>w;<by}C|x;wD`<-98=?7H`s-XjG#vn;zN(f~-9e5JGoQT`uMqfpW2&**_*>1nvGJ zWVNG*E*7(ga}Dct(b>?bFk8z!YfS~Zw$ocm;b~ZH3X*2%p5MpR)s)2q(q)@+<iD4e z?J}gyqRyon!?k|f^hDOCOUj*2Xxdh2uCr&`YM|e;hE1QV1Ycv=`hZ|MtWF<DFFK(7 zXTKo>XhV%Yls@vf&e+uTUR|e)q<2%%W_|tCfa^QZch2ce**G~C*bDB33A96zv$_sk zSMZYZ*-=YIJIE~E_#(Om3}YjMelky@1Had&^VxGUG2cRM-|IVtu!(jS*o$E8(Qd!% zO*}$1F@Hs$`(B^R=lE}k`8=9~U1*OvB%5Owh*^tvUnXKnwD1|N(KGq$1I)qnmLK%# zoIO~GgCQn$|E`zKfuRBB`{<)T=sWS;b_JOKMo<5s&*;j;`Fnu*YvdfED4ge<D~s^& z0CN`2{ZTI)BwaP;WptVd{zYS6M_2r)@66?tH0D>(D$Jlge$=PLSg=*eM#^g%bAPn^ zl93b@&A%IJse+Fbvup-x%{SB0Kk4(ilryyE&*-f`>C?=NdRk{Tq8X)>(gJl*=Sd!< zH$R9Gq7=ojl)yOW5K;E&&2Q4LfAZ)7EVDy2_Gf(_&+sv$xeJ~6vxk};XdXou{j8TQ zpfQ0^rCWd2r|`&=1I^X+#h>+^d9XgvyoP@Nvp$mt*9DrNpsBy;^SDlq1e#wD1kt+C zb(JKWN7)^04yAYg;z<!6Vos+`zv#PiYGw%J_U~Wx9XW%^A?6!HfI$*H^NT*VZ;7)G zSL>KwZVEBaKvJBt*tk@P2d`{39=r9H5cBP{;#Yka&VPA``5n6HS5ML34Ke?np8Qpx z!>M0}m`_p7Z~9(5_(iB0UY_-vM==w^pq{FJ^AvqXn7NW}`Ay$5gURCzGoJ_pd4jz1 zaIdML)O>=T{Y@VOtyllMz7yPXf7fTit>|}sycXBCY5h<7WB^wGu1_~0;FdcTr&@o| zr?O|Km7T!Im&N720*U9I*XJg(#I1TO%VW#0`mUS{uMU#b6!BmEcMp<N8y+y=l5h71 z47jRz%L9fixUGD^&?^mB+}#mufP|OBLGQ1%aDRpo67Y>y2_OgyrQ%zxOgj8uM@?xY z7Ee?+P1tQ1JC3a-7R)HHf_}oPE1fROxa(kIw8HXV6)yiB_|6cQgzJ6<--25Vk%C#I zDr;>mx^t)K7vCA8L8hO-W1^*<F=X;(!WW47ON<{w$siJwDz7yDlbA!WV{<ONyCIil zXAJ2PxS8hGv6o))7h_R!#*o4uNR`=uS({DIo-rg9vAC@TW^i*685G2%cGeVEKqFN| z@<@<Pr=K<4sCg%hElnjgojhweYv_um4SHr3)=Km{=R0dkYhlG?x~-BKLvVxny|SX# zl|}FV)sPmK&DKpS^KFh&zTT73sWc;dX4BDM4SNWkx?1~shvwX9k2}CPd+Ql(VAH7I z4TrV8=XGPtAh1*54g$l&;*k&AaY0mpYh`0?OHw+`xoDWCc`|^DzP^_+l73pINojiL zq9HFplhY%clAM4T8XaKl(gi|6u-PM4-x=SKf+Wt@vwoV`G%LUu)D^0APOdSFZ&HjY zD1`xhXPyxk#GlPI;;Q>8ej|CtxG2^}o-KF-Dpy-$Ei1-a&B-$+MKi+bf{Q@V)$kL_ zuw0yH?7|*h1<$l-1c`=<O{3fLj2ZCOhUfE)sc<_Dp|QBP=HbWw2h})B%55-`6oZ4o h5D!xp=ztl(PDmxx3iJscrH-HdHZ-~#>*|X0{~syYJ(vIh delta 54148 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 Pf)Xv-V&}i~we|Ra(je=b diff --git a/docs/build/doctrees/functions.doctree b/docs/build/doctrees/functions.doctree index 4fa1fa8595d451316bf9fb81bb73e75e959634b9..404ea6de34f4477f068902d88dfe218f3316327e 100644 GIT binary patch delta 19860 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 YqXi?7L94Q{4;5@PFwRWKvel~p2kYL-*#H0l delta 18645 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 LG|#;iwrchN@d!f2 diff --git a/docs/build/doctrees/grid.doctree b/docs/build/doctrees/grid.doctree index 6954097710a726daade6683f7c30f32b46b5f6eb..36082ca3d96c82d3c7cd14d66b743fc2703a1cc2 100644 GIT binary patch delta 5892 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 YLzAuE7oqFaiuJSfb5RSeZ-x=@Kid!lod5s; delta 6890 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 Ce}}dJ diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree index c0b1adc8cd9411e63986831be12d8da490a424fc..d7befe589c22002c2d96c3f547c3035fdae1fab4 100644 GIT binary patch delta 51 zcmX@`n(@eMMwSMasXI5a_;52uPY&c(WVX~ZoP3qrf+K@Hc1ng|4_t8bRqofB0MNG) AO8@`> delta 44 ucmX@|n(@GEMwSMasarR)_;52uP7dT&WHgz4liOnQT5fh2fAdZ5*O>rnS`TFa diff --git a/docs/build/doctrees/nbsphinx/notebook_individual_systems.ipynb b/docs/build/doctrees/nbsphinx/notebook_individual_systems.ipynb index 19c2d29fb..21d49016f 100644 --- a/docs/build/doctrees/nbsphinx/notebook_individual_systems.ipynb +++ b/docs/build/doctrees/nbsphinx/notebook_individual_systems.ipynb @@ -28,6 +28,18 @@ { "cell_type": "code", "execution_count": 1, + "id": "e32dcdee", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from binarycpython.utils.functions import temp_dir\n", + "TMP_DIR = temp_dir(\"notebooks\", \"notebook_individual_systems\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "id": "425efed3-d8e3-432d-829e-41d8ebe05162", "metadata": {}, "outputs": [], @@ -38,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "b2abab48-433d-4936-8434-14804c52c9f6", "metadata": {}, "outputs": [ @@ -46,7 +58,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "SINGLE_STAR_LIFETIME 1 12462\n", + "SINGLE_STAR_LIFETIME 1 12461.9\n", "\n" ] } @@ -66,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "029fc3f2-f09a-49af-a32b-248505738f2e", "metadata": {}, "outputs": [ @@ -74,24 +86,25 @@ "name": "stdout", "output_type": "stream", "text": [ - " TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=67365 RANDOM_COUNT=0\n", - " 0.0000 1.000 0.000 1 15 -1 -1.00 0.000 0.000 \"INITIAL \"\n", - " 11003.1302 1.000 0.000 2 15 -1 -1.00 0.000 0.000 \"OFF_MS\"\n", - " 11003.1302 1.000 0.000 2 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 11582.2424 1.000 0.000 3 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12325.1085 0.817 0.000 4 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12457.1300 0.783 0.000 5 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12460.8955 0.774 0.000 6 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12460.8955 0.774 0.000 6 15 -1 -1.00 0.000 0.000 \"shrinkAGB\"\n", - " 12461.9514 0.523 0.000 11 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 15000.0000 0.523 0.000 11 15 -1 -1.00 0.000 0.000 \"MAX_TIME\"\n", + " TIME M1 M2 K1 K2 SEP PER ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=17089 RANDOM_COUNT=0\n", + " 0.0000 1.000 0.000 1 15 -1 -1 -1.00 0.000 0.000 \"INITIAL \"\n", + " 11003.1302 1.000 0.000 2 15 -1 -1 -1.00 0.000 0.000 \"OFF_MS\"\n", + " 11003.1302 1.000 0.000 2 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 11582.2424 1.000 0.000 3 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12325.1085 0.817 0.000 4 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12457.1301 0.783 0.000 5 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12460.9983 0.716 0.000 6 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12460.9983 0.716 0.000 6 15 -1 -1 -1.00 0.000 0.000 \"shrinkAGB\"\n", + " 12461.9458 0.518 0.000 11 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 15000.0000 0.518 0.000 11 15 -1 -1 -1.00 0.000 0.000 \"MAX_TIME\"\n", "\n" ] } ], "source": [ - "output = run_system(M_1=1, log_filename='/tmp/test_logfile.txt')\n", - "with open('/tmp/test_logfile.txt', 'r') as f:\n", + "log_filename = os.path.join(TMP_DIR, 'test_logfile.txt')\n", + "output = run_system(M_1=1, log_filename=log_filename, api_log_filename_prefix=TMP_DIR)\n", + "with open(log_filename, 'r') as f:\n", " print(f.read())" ] }, @@ -105,7 +118,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "e6a23b55-ca42-440d-83ac-e76a24a83a67", "metadata": { "tags": [] @@ -115,7 +128,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "['EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1', 'EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1', 'EXAMPLE_MASSLOSS 1.000000000000e-06 1 1 1', 'EXAMPLE_MASSLOSS 2.000000000000e-06 1 1 1']\n" + "EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1\n", + "EXAMPLE_MASSLOSS 1.000000000000e-06 1 1 1\n", + "EXAMPLE_MASSLOSS 2.000000000000e-06 1 1 1\n" ] } ], @@ -137,8 +153,8 @@ "# Generate entire shared lib code around logging lines\n", "custom_logging_code = binary_c_log_code(custom_logging_print_statement)\n", "\n", - "output = run_system(M_1=1, custom_logging_code=custom_logging_code)\n", - "print(output.splitlines()[:4])" + "output = run_system(M_1=1, custom_logging_code=custom_logging_code, api_log_filename_prefix=TMP_DIR)\n", + "print('\\n'.join(output.splitlines()[:4]))" ] }, { @@ -151,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "3822721f-217a-495b-962e-d57137b9e290", "metadata": {}, "outputs": [ @@ -201,7 +217,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "654a07ed-2a88-46ff-9da0-b7759580f9f3", "metadata": {}, "outputs": [ @@ -216,13 +232,13 @@ "4 2e-06 1 1 1\n", "5 3e-06 1 1 1\n", "... ... ... ... ...\n", - "1612 12461.8 0.577754 1 6\n", - "1613 12462 0.522806 1 11\n", - "1614 13462 0.522806 1 11\n", - "1615 14462 0.522806 1 11\n", - "1616 15000 0.522806 1 11\n", + "1617 12461.8 0.546683 1 6\n", + "1618 12461.9 0.517749 1 11\n", + "1619 13461.9 0.517749 1 11\n", + "1620 14461.9 0.517749 1 11\n", + "1621 15000 0.517749 1 11\n", "\n", - "[1616 rows x 4 columns]\n" + "[1621 rows x 4 columns]\n" ] } ], @@ -252,7 +268,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "4a98ffca-1b72-4bb8-8df1-3bf3187d882f", "metadata": {}, "outputs": [], @@ -271,7 +287,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "bff1cc2e-6b32-4ba0-879f-879ffbabd223", "metadata": {}, "outputs": [ @@ -279,11 +295,12 @@ "name": "stdout", "output_type": "stream", "text": [ + "adding: api_log_filename_prefix=/tmp/binary_c_python/notebooks/notebook_individual_systems to BSE_options\n", "adding: M_1=10 to BSE_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "SINGLE_STAR_LIFETIME 10 27.7358\n", + "SINGLE_STAR_LIFETIME 10 28.4838\n", "\n" ] } @@ -294,7 +311,8 @@ "\n", "# Set some parameters\n", "example_pop.set(\n", - " verbosity=1\n", + " verbosity=1,\n", + " api_log_filename_prefix=TMP_DIR\n", ")\n", "example_pop.set(\n", " M_1=10\n", @@ -315,7 +333,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "id": "dd748bab-b57e-4129-8350-9ea11fa179d0", "metadata": { "scrolled": true, @@ -338,10 +356,13 @@ ");\n", " to grid_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_eac2dfc438a14e5a9f5be98b1b6b4294.so\n", - "['EXAMPLE_MASSLOSS 0.000000000000e+00 10 0 10 1', 'EXAMPLE_MASSLOSS 0.000000000000e+00 10 10 10 1', 'EXAMPLE_MASSLOSS 1.000000000000e-06 10 10 10 1', 'EXAMPLE_MASSLOSS 2.000000000000e-06 10 10 10 1']\n" + "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_8967553693ac4e11a49c42d4eef773e8.so\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 10 0 10 1\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 10 10 10 1\n", + "EXAMPLE_MASSLOSS 1.000000000000e-06 10 10 10 1\n", + "EXAMPLE_MASSLOSS 2.000000000000e-06 10 10 10 1\n" ] } ], @@ -362,7 +383,7 @@ "\n", "# get output and print\n", "output = example_pop.evolve_single()\n", - "print(output.splitlines()[:4])" + "print('\\n'.join(output.splitlines()[:4]))" ] }, { @@ -377,7 +398,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "id": "fec39154-cce6-438c-8c2c-509d76b00f34", "metadata": {}, "outputs": [], @@ -428,7 +449,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "id": "57347512-fd4a-434b-b13c-5e6dbd3ac415", "metadata": { "scrolled": true, @@ -439,12 +460,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "adding: parse_function=<function object_parse_function at 0x7f9265091598> to grid_options\n", - "<<<< Warning: Key does not match previously known parameter: adding: output_dir=/tmp/ to custom_options >>>>\n", + "adding: parse_function=<function object_parse_function at 0x7fb4d41ebbf8> to grid_options\n", + "<<<< Warning: Key does not match previously known parameter: adding: output_dir=/tmp/binary_c_python/notebooks/notebook_individual_systems to custom_options >>>>\n", + "adding: api_log_filename_prefix=/tmp/binary_c_python/notebooks/notebook_individual_systems to BSE_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_e9c2bec7f15541eb847fc6013e48e7ed.so\n", + "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_5d7779e8190e4b79b10c7e6a44cb0e7e.so\n", "[['time', 'mass', 'initial_mass', 'stellar_type'], [0.0, 10.0, 0.0, 10.0, 1.0], [0.0, 10.0, 10.0, 10.0, 1.0], [1e-06, 10.0, 10.0, 10.0, 1.0]]\n", "dict_keys(['time', 'mass', 'initial_mass', 'stellar_type'])\n" ] @@ -453,7 +475,8 @@ "source": [ "example_pop.set(\n", " parse_function=object_parse_function,\n", - " output_dir='/tmp/'\n", + " output_dir=TMP_DIR,\n", + " api_log_filename_prefix=TMP_DIR\n", ")\n", "output = example_pop.evolve_single()\n", "print(output[:4])\n", @@ -488,7 +511,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "id": "ec48125c-6bf5-48f4-9357-8261800b5d8b", "metadata": {}, "outputs": [ @@ -496,7 +519,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "SINGLE_STAR_LIFETIME 15 14.2383\n", + "SINGLE_STAR_LIFETIME 15 14.9947\n", "\n" ] } @@ -510,10 +533,11 @@ "eccentricity = 0.0\n", "metallicity = 0.02\n", "max_evolution_time = 15000 # Myr. You need to include this argument.\n", + "api_log_filename_prefix = TMP_DIR\n", "\n", "# Here we set up the argument string that is passed to the bindings\n", "argstring = \"\"\"\n", - "binary_c M_1 {M_1} M_2 {M_2} separation {separation} orbital_period {orbital_period} eccentricity {eccentricity} metallicity {metallicity} max_evolution_time {max_evolution_time}\n", + "binary_c M_1 {M_1} M_2 {M_2} separation {separation} orbital_period {orbital_period} eccentricity {eccentricity} metallicity {metallicity} max_evolution_time {max_evolution_time} api_log_filename_prefix {api_log_filename_prefix}\n", "\"\"\".format(\n", " M_1=M_1,\n", " M_2=M_2,\n", @@ -522,6 +546,7 @@ " eccentricity=eccentricity,\n", " metallicity=metallicity,\n", " max_evolution_time=max_evolution_time,\n", + " api_log_filename_prefix=TMP_DIR\n", ").strip()\n", "\n", "from binarycpython import _binary_c_bindings\n", diff --git a/docs/build/doctrees/nbsphinx/notebook_population.ipynb b/docs/build/doctrees/nbsphinx/notebook_population.ipynb index 56f3b153c..b6a37baa8 100644 --- a/docs/build/doctrees/nbsphinx/notebook_population.ipynb +++ b/docs/build/doctrees/nbsphinx/notebook_population.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "id": "bbbaafbb-fd7d-4b73-a970-93506ba35d71", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "# Running populations with binarycpython\n", "This notebook will show you how to evolve a population of stars\n", @@ -27,15 +29,6 @@ "# help(Population) # Uncomment to see the public functions of this object" ] }, - { - "cell_type": "markdown", - "id": "a081ab23-7822-4971-aa82-991548534714", - "metadata": {}, - "source": [ - "- running ensemble\n", - "- using M&S grid" - ] - }, { "cell_type": "markdown", "id": "f268eff3-4e08-4f6b-8b59-f22dba4d2074", @@ -329,7 +322,7 @@ ], "source": [ "# Add grid variables\n", - "resolution = {\"M_1\": 20, \"q\": 20, \"per\": 40}\n", + "resolution = {\"M_1\": 20}\n", "\n", "# Mass\n", "example_pop.add_grid_variable(\n", @@ -1125,7 +1118,7 @@ ")\n", "\n", "# Add grid variables\n", - "resolution = {\"M_1\": 5, \"q\": 5, \"per\": 5}\n", + "resolution = {\"M_1\": 3, \"q\": 3, \"per\": 3}\n", "\n", "# Mass\n", "example_pop.add_grid_variable(\n", diff --git a/docs/build/doctrees/notebook_individual_systems.doctree b/docs/build/doctrees/notebook_individual_systems.doctree index 9d602efb727073bda11972d674aef97623b4bce7..5b53131af30bfd3e41de3be0cd1877012043cac3 100644 GIT binary patch delta 8698 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 delta 6199 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 diff --git a/docs/build/doctrees/notebook_population.doctree b/docs/build/doctrees/notebook_population.doctree index 2fe6b3d2cc9149c8f3a8350e8ae7e16a7bbf1060..8dc7f0c81bcae8dba9df8e55481ed6ade245f1cd 100644 GIT binary patch delta 6019 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 delta 6323 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 a>8-jhaO$jCFILWav0_q{d&@YI1OEpe8dv=Q diff --git a/docs/build/doctrees/readme_link.doctree b/docs/build/doctrees/readme_link.doctree index e9622f33a0658d2e097976d6d9c3fe3e5368c872..fd66cbc8cbd1f29cc2332d668bdbc6c429422a30 100644 GIT binary patch delta 52 zcmeCU#MpC*k+p$kDr4qG))IEc=*f536`3vd3@86%x8TTNkDZbs)&m#Z{EwY05dg^h B5cB{5 delta 45 scmeCV#Mp6(k+p$k>felwtR?J>k(2MSD>9l)p2u#F#J1RM#c?SC0DDId%>V!Z diff --git a/docs/build/doctrees/spacing_functions.doctree b/docs/build/doctrees/spacing_functions.doctree index 70fd3a19e4682e01551414730b3227beb3555677..8a6ae9a3e6438a8ba8d372d68f765dd1114cded6 100644 GIT binary patch delta 64 zcmaEt@Fjtzfn{puMwSh#j9QbW)YN&j4K=4^u*Xix5bFU8@Ph<er!-EfouZM!3K3({ LHr(u}rppBYxjqx- delta 55 zcmey8@GgO+fn{p)MwSh#j2e^W)YK>M=VW8a5bFVRcr~ZAPHCJ{J4GXd6(X|PT}_t@ E03E{;5C8xG diff --git a/docs/build/html/_modules/binarycpython/utils/custom_logging_functions.html b/docs/build/html/_modules/binarycpython/utils/custom_logging_functions.html index f99e7c8e6..de6d5f80a 100644 --- a/docs/build/html/_modules/binarycpython/utils/custom_logging_functions.html +++ b/docs/build/html/_modules/binarycpython/utils/custom_logging_functions.html @@ -644,9 +644,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/_modules/binarycpython/utils/distribution_functions.html b/docs/build/html/_modules/binarycpython/utils/distribution_functions.html index 98d9afd43..1cddf50cc 100644 --- a/docs/build/html/_modules/binarycpython/utils/distribution_functions.html +++ b/docs/build/html/_modules/binarycpython/utils/distribution_functions.html @@ -2482,9 +2482,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/_modules/binarycpython/utils/functions.html b/docs/build/html/_modules/binarycpython/utils/functions.html index a4fb372e3..4e1bbc15d 100644 --- a/docs/build/html/_modules/binarycpython/utils/functions.html +++ b/docs/build/html/_modules/binarycpython/utils/functions.html @@ -168,6 +168,7 @@ <span class="kn">import</span> <span class="nn">json</span> <span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">gc</span> <span class="kn">import</span> <span class="nn">tempfile</span> <span class="kn">import</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="nn">inspect</span> @@ -231,6 +232,35 @@ <span class="n">size</span> <span class="o">+=</span> <span class="nb">sum</span><span class="p">([</span><span class="n">get_size</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">seen</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">])</span> <span class="k">return</span> <span class="n">size</span></div> + +<div class="viewcode-block" id="format_ensemble_results"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.format_ensemble_results">[docs]</a><span class="k">def</span> <span class="nf">format_ensemble_results</span><span class="p">(</span><span class="n">ensemble_dictionary</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Function to handle all the steps of formatting the ensemble output again.</span> + +<span class="sd"> Input:</span> +<span class="sd"> ensemble_dictionary: dictionary containing all the ensemble results</span> +<span class="sd"> """</span> + + <span class="n">original_ensemble_results</span> <span class="o">=</span> <span class="n">ensemble_dictionary</span> + + <span class="n">float_format_ensemble_results</span> <span class="o">=</span> <span class="n">recursive_change_key_to_float</span><span class="p">(</span><span class="n">original_ensemble_results</span><span class="p">)</span> + <span class="k">del</span> <span class="n">original_ensemble_results</span> + <span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span> + + <span class="c1"># Then sort the dictionary</span> + <span class="n">sorted_ensemble_results</span> <span class="o">=</span> <span class="n">custom_sort_dict</span><span class="p">(</span><span class="n">float_format_ensemble_results</span><span class="p">)</span> + <span class="k">del</span> <span class="n">float_format_ensemble_results</span> + <span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span> + + <span class="c1"># Then Change the keys back to a string but with a %g format.</span> + <span class="n">reformatted_ensemble_results</span> <span class="o">=</span> <span class="n">recursive_change_key_to_string</span><span class="p">(</span><span class="n">sorted_ensemble_results</span><span class="p">)</span> + <span class="k">del</span> <span class="n">sorted_ensemble_results</span> + <span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span> + + <span class="c1"># Put back in the dictionary</span> + <span class="k">return</span> <span class="n">reformatted_ensemble_results</span></div> + + <div class="viewcode-block" id="subtract_dicts"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.subtract_dicts">[docs]</a><span class="k">def</span> <span class="nf">subtract_dicts</span><span class="p">(</span><span class="n">dict_1</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">dict_2</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span> <span class="sd">"""</span> <span class="sd"> Function to subtract two dictionaries.</span> @@ -650,7 +680,7 @@ <span class="c1">########################################################</span> -<div class="viewcode-block" id="return_binary_c_version_info"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.return_binary_c_version_info">[docs]</a><span class="k">def</span> <span class="nf">return_binary_c_version_info</span><span class="p">(</span><span class="n">parsed</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">]:</span> +<div class="viewcode-block" id="return_binary_c_version_info"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.return_binary_c_version_info">[docs]</a><span class="k">def</span> <span class="nf">return_binary_c_version_info</span><span class="p">(</span><span class="n">parsed</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">]:</span> <span class="sd">"""</span> <span class="sd"> Function that returns the version information of binary_c. This function calls the function</span> <span class="sd"> _binary_c_bindings.return_version_info()</span> @@ -804,11 +834,19 @@ <span class="n">cleaned</span> <span class="o">=</span> <span class="n">cleaned</span> <span class="o">-</span> <span class="n">ensembles</span> <span class="n">ensemble_dict</span> <span class="o">=</span> <span class="p">{}</span> + <span class="n">ensemble_filter_dict</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">ensembles</span><span class="p">:</span> <span class="n">split_info</span> <span class="o">=</span> <span class="n">el</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"Ensemble "</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" is "</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">split_info</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> - <span class="n">ensemble_dict</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">split_info</span><span class="p">[</span><span class="mi">0</span><span class="p">])]</span> <span class="o">=</span> <span class="n">split_info</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">split_info</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'filter'</span><span class="p">):</span> + <span class="n">ensemble_dict</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">split_info</span><span class="p">[</span><span class="mi">0</span><span class="p">])]</span> <span class="o">=</span> <span class="n">split_info</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">filter_no</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">split_info</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">'filter '</span><span class="p">,</span> <span class="s1">''</span><span class="p">))</span> + <span class="n">ensemble_filter_dict</span><span class="p">[</span><span class="n">filter_no</span><span class="p">]</span> <span class="o">=</span> <span class="n">split_info</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <span class="n">version_info_dict</span><span class="p">[</span><span class="s2">"ensembles"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ensemble_dict</span> <span class="k">if</span> <span class="n">ensemble_dict</span> <span class="k">else</span> <span class="kc">None</span> + <span class="n">version_info_dict</span><span class="p">[</span><span class="s2">"ensemble_filters"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ensemble_filter_dict</span> <span class="k">if</span> <span class="n">ensemble_filter_dict</span> <span class="k">else</span> <span class="kc">None</span> <span class="c1">##########################</span> <span class="c1"># macros:</span> @@ -1636,6 +1674,19 @@ <span class="k">return</span> <span class="n">structure_dict</span></div> +<div class="viewcode-block" id="count_keys_recursive"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.count_keys_recursive">[docs]</a><span class="k">def</span> <span class="nf">count_keys_recursive</span><span class="p">(</span><span class="n">input_dict</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Function to count the total amount of keys in a dictionary</span> +<span class="sd"> """</span> + + <span class="n">local_count</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">input_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> + <span class="n">local_count</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">OrderedDict</span><span class="p">)):</span> + <span class="n">local_count</span> <span class="o">+=</span> <span class="n">count_keys_recursive</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">])</span> + <span class="k">return</span> <span class="n">local_count</span></div> + + <div class="viewcode-block" id="merge_dicts"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.merge_dicts">[docs]</a><span class="k">def</span> <span class="nf">merge_dicts</span><span class="p">(</span><span class="n">dict_1</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">dict_2</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span> <span class="sd">"""</span> <span class="sd"> Function to merge two dictionaries in a custom way.</span> @@ -1761,6 +1812,7 @@ <span class="c1">#</span> <span class="k">return</span> <span class="n">new_dict</span></div> + <div class="viewcode-block" id="update_dicts"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.update_dicts">[docs]</a><span class="k">def</span> <span class="nf">update_dicts</span><span class="p">(</span><span class="n">dict_1</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">dict_2</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span> <span class="sd">"""</span> <span class="sd"> Function to update dict_1 with values of dict_2 in a recursive way.</span> @@ -1853,70 +1905,23 @@ <span class="k">return</span> <span class="n">new_dict</span></div> -<div class="viewcode-block" id="count_keys_recursive"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.count_keys_recursive">[docs]</a><span class="k">def</span> <span class="nf">count_keys_recursive</span><span class="p">(</span><span class="n">input_dict</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Function to count the total amount of keys in a dictionary</span> -<span class="sd"> """</span> - - <span class="n">local_count</span> <span class="o">=</span> <span class="mi">0</span> - <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">input_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> - <span class="n">local_count</span> <span class="o">+=</span> <span class="mi">1</span> - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">OrderedDict</span><span class="p">)):</span> - <span class="n">local_count</span> <span class="o">+=</span> <span class="n">count_keys_recursive</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">])</span> - <span class="k">return</span> <span class="n">local_count</span></div> - - -<div class="viewcode-block" id="recursive_change_key_to_float"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.recursive_change_key_to_float">[docs]</a><span class="k">def</span> <span class="nf">recursive_change_key_to_float</span><span class="p">(</span><span class="n">input_dict</span><span class="p">):</span> +<div class="viewcode-block" id="multiply_values_dict"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.multiply_values_dict">[docs]</a><span class="k">def</span> <span class="nf">multiply_values_dict</span><span class="p">(</span><span class="n">input_dict</span><span class="p">,</span> <span class="n">factor</span><span class="p">):</span> <span class="sd">"""</span> -<span class="sd"> Function to recursively change the key to float</span> - -<span class="sd"> This only works if the dict contains just sub-dicts or numbers/strings.</span> -<span class="sd"> Does not work with lists as values</span> -<span class="sd"> """</span> - - <span class="n">new_dict</span> <span class="o">=</span> <span class="n">OrderedDict</span><span class="p">()</span> <span class="c1"># TODO: check if this still works</span> - - <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">input_dict</span><span class="p">:</span> - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">OrderedDict</span><span class="p">)):</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">num_key</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> - <span class="n">new_dict</span><span class="p">[</span><span class="n">num_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">recursive_change_key_to_float</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span> - <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> - <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">recursive_change_key_to_float</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">num_key</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> - <span class="n">new_dict</span><span class="p">[</span><span class="n">num_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> - <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> - <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> - - <span class="k">return</span> <span class="n">new_dict</span></div> +<span class="sd"> Function that goes over dictionary recursively and multiplies the value if possible by a factor</span> -<div class="viewcode-block" id="recursive_change_key_to_string"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.recursive_change_key_to_string">[docs]</a><span class="k">def</span> <span class="nf">recursive_change_key_to_string</span><span class="p">(</span><span class="n">input_dict</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Function to recursively change the key back to a string but this time in a format that we decide</span> +<span class="sd"> If the key equals "general_info", the multiplication gets skipped</span> <span class="sd"> """</span> - <span class="n">new_dict</span> <span class="o">=</span> <span class="n">OrderedDict</span><span class="p">()</span> <span class="c1"># TODO: check if this still works</span> - <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">input_dict</span><span class="p">:</span> - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">OrderedDict</span><span class="p">)):</span> - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span> - <span class="n">string_key</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{:g}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> - <span class="n">new_dict</span><span class="p">[</span><span class="n">string_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">recursive_change_key_to_string</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">recursive_change_key_to_string</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span> - <span class="n">string_key</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{:g}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> - <span class="n">new_dict</span><span class="p">[</span><span class="n">string_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="o">==</span> <span class="s1">'general_info'</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">OrderedDict</span><span class="p">)):</span> + <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">multiply_values_dict</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="n">factor</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> - <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> - - <span class="k">return</span> <span class="n">new_dict</span></div> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span> + <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">*</span> <span class="n">factor</span> + <span class="k">return</span> <span class="n">input_dict</span></div> -<span class="c1"># New method to create a ordered dictionary</span> <div class="viewcode-block" id="custom_sort_dict"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.custom_sort_dict">[docs]</a><span class="k">def</span> <span class="nf">custom_sort_dict</span><span class="p">(</span><span class="n">input_dict</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> Returns a dictionary that is ordered, but can handle numbers better than normal OrderedDict</span> @@ -1968,26 +1973,58 @@ <span class="k">return</span> <span class="n">input_dict</span></div> -<div class="viewcode-block" id="multiply_values_dict"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.multiply_values_dict">[docs]</a><span class="k">def</span> <span class="nf">multiply_values_dict</span><span class="p">(</span><span class="n">input_dict</span><span class="p">,</span> <span class="n">factor</span><span class="p">):</span> +<div class="viewcode-block" id="recursive_change_key_to_float"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.recursive_change_key_to_float">[docs]</a><span class="k">def</span> <span class="nf">recursive_change_key_to_float</span><span class="p">(</span><span class="n">input_dict</span><span class="p">):</span> <span class="sd">"""</span> -<span class="sd"> Function that goes over dictionary recursively and multiplies the value if possible by a factor</span> +<span class="sd"> Function to recursively change the key to float</span> -<span class="sd"> If the key equals "general_info", the multiplication gets skipped</span> +<span class="sd"> This only works if the dict contains just sub-dicts or numbers/strings.</span> +<span class="sd"> Does not work with lists as values</span> <span class="sd"> """</span> + <span class="n">new_dict</span> <span class="o">=</span> <span class="n">OrderedDict</span><span class="p">()</span> <span class="c1"># TODO: check if this still works</span> + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">input_dict</span><span class="p">:</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="o">==</span> <span class="s1">'general_info'</span><span class="p">:</span> - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">OrderedDict</span><span class="p">)):</span> - <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">multiply_values_dict</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="n">factor</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">OrderedDict</span><span class="p">)):</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">num_key</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> + <span class="n">new_dict</span><span class="p">[</span><span class="n">num_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">recursive_change_key_to_float</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span> + <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> + <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">recursive_change_key_to_float</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">num_key</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> + <span class="n">new_dict</span><span class="p">[</span><span class="n">num_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> + <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> + <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> + + <span class="k">return</span> <span class="n">new_dict</span></div> + + +<div class="viewcode-block" id="recursive_change_key_to_string"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.recursive_change_key_to_string">[docs]</a><span class="k">def</span> <span class="nf">recursive_change_key_to_string</span><span class="p">(</span><span class="n">input_dict</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Function to recursively change the key back to a string but this time in a format that we decide</span> +<span class="sd"> """</span> + + <span class="n">new_dict</span> <span class="o">=</span> <span class="n">OrderedDict</span><span class="p">()</span> <span class="c1"># TODO: check if this still works</span> + + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">input_dict</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">OrderedDict</span><span class="p">)):</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span> + <span class="n">string_key</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{:g}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> + <span class="n">new_dict</span><span class="p">[</span><span class="n">string_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">recursive_change_key_to_string</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span> <span class="k">else</span><span class="p">:</span> - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span> - <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">*</span> <span class="n">factor</span> + <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">recursive_change_key_to_string</span><span class="p">(</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span> + <span class="n">string_key</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{:g}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> + <span class="n">new_dict</span><span class="p">[</span><span class="n">string_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">input_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> - <span class="k">return</span> <span class="n">input_dict</span></div> + <span class="k">return</span> <span class="n">new_dict</span></div> <span class="c1">#####</span> - <div class="viewcode-block" id="extract_ensemble_json_from_string"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.extract_ensemble_json_from_string">[docs]</a><span class="k">def</span> <span class="nf">extract_ensemble_json_from_string</span><span class="p">(</span><span class="n">binary_c_output</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span> <span class="sd">"""</span> <span class="sd"> Function to extract the ensemble_json information from a raw binary_c output string</span> @@ -2033,6 +2070,44 @@ <span class="k">return</span> <span class="n">json_dict</span></div> +<div class="viewcode-block" id="handle_ensemble_string_to_json"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.handle_ensemble_string_to_json">[docs]</a><span class="k">def</span> <span class="nf">handle_ensemble_string_to_json</span><span class="p">(</span><span class="n">raw_output</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Function that deals with the raw output of the ensemble and</span> +<span class="sd"> creates a working JSON dictionary out of it.</span> + +<span class="sd"> Having this wrapper makes it easy to</span> + +<span class="sd"> Args:</span> +<span class="sd"> raw_output: raw output of the ensemble dump by binary_c</span> + +<span class="sd"> Returns:</span> +<span class="sd"> json.loads(raw_output, cls=binarycDecoder)</span> + +<span class="sd"> """</span> + + <span class="c1"># return json.loads(json.dumps(ast.literal_eval(raw_output)), cls=binarycDecoder)</span> + <span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">raw_output</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="n">binarycDecoder</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="binaryc_json_serializer"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.binaryc_json_serializer">[docs]</a><span class="k">def</span> <span class="nf">binaryc_json_serializer</span><span class="p">(</span><span class="n">obj</span><span class="p">:</span> <span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span> + <span class="sd">"""</span> +<span class="sd"> Custom serialiser for binary_c to use when functions are present in the dictionary</span> +<span class="sd"> that we want to export.</span> + +<span class="sd"> Function objects will be turned into str representations of themselves</span> + +<span class="sd"> Args:</span> +<span class="sd"> obj: The object that might not be serialisable</span> + +<span class="sd"> Returns:</span> +<span class="sd"> Either string representation of object if the object is a function, or the object itself</span> +<span class="sd"> """</span> + + <span class="k">if</span> <span class="n">inspect</span><span class="o">.</span><span class="n">isfunction</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">py_rinterpolate</span><span class="o">.</span><span class="n">Rinterpolate</span><span class="p">):</span> + <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> + <span class="k">return</span> <span class="n">obj</span></div> + + <div class="viewcode-block" id="binarycDecoder"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.binarycDecoder">[docs]</a><span class="k">class</span> <span class="nc">binarycDecoder</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">JSONDecoder</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> Custom decoder to transform the numbers that are strings to actual floats</span> @@ -2089,44 +2164,6 @@ <span class="c1"># Let the base class default method raise the TypeError</span> <span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">JSONEncoder</span><span class="o">.</span><span class="n">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">)</span></div></div> - - -<div class="viewcode-block" id="binaryc_json_serializer"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.binaryc_json_serializer">[docs]</a><span class="k">def</span> <span class="nf">binaryc_json_serializer</span><span class="p">(</span><span class="n">obj</span><span class="p">:</span> <span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span> - <span class="sd">"""</span> -<span class="sd"> Custom serialiser for binary_c to use when functions are present in the dictionary</span> -<span class="sd"> that we want to export.</span> - -<span class="sd"> Function objects will be turned into str representations of themselves</span> - -<span class="sd"> Args:</span> -<span class="sd"> obj: The object that might not be serialisable</span> - -<span class="sd"> Returns:</span> -<span class="sd"> Either string representation of object if the object is a function, or the object itself</span> -<span class="sd"> """</span> - - <span class="k">if</span> <span class="n">inspect</span><span class="o">.</span><span class="n">isfunction</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">py_rinterpolate</span><span class="o">.</span><span class="n">Rinterpolate</span><span class="p">):</span> - <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> - <span class="k">return</span> <span class="n">obj</span></div> - - -<div class="viewcode-block" id="handle_ensemble_string_to_json"><a class="viewcode-back" href="../../../functions.html#binarycpython.utils.functions.handle_ensemble_string_to_json">[docs]</a><span class="k">def</span> <span class="nf">handle_ensemble_string_to_json</span><span class="p">(</span><span class="n">raw_output</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Function that deals with the raw output of the ensemble and</span> -<span class="sd"> creates a working JSON dictionary out of it.</span> - -<span class="sd"> Having this wrapper makes it easy to</span> - -<span class="sd"> Args:</span> -<span class="sd"> raw_output: raw output of the ensemble dump by binary_c</span> - -<span class="sd"> Returns:</span> -<span class="sd"> json.loads(raw_output, cls=binarycDecoder)</span> - -<span class="sd"> """</span> - - <span class="c1"># return json.loads(json.dumps(ast.literal_eval(raw_output)), cls=binarycDecoder)</span> - <span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">raw_output</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="n">binarycDecoder</span><span class="p">)</span></div> </pre></div> </div> @@ -2153,9 +2190,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/_modules/binarycpython/utils/grid.html b/docs/build/html/_modules/binarycpython/utils/grid.html index 12f880918..12c1a2512 100644 --- a/docs/build/html/_modules/binarycpython/utils/grid.html +++ b/docs/build/html/_modules/binarycpython/utils/grid.html @@ -230,6 +230,7 @@ <span class="n">custom_sort_dict</span><span class="p">,</span> <span class="n">recursive_change_key_to_string</span><span class="p">,</span> <span class="n">multiply_values_dict</span><span class="p">,</span> + <span class="n">format_ensemble_results</span><span class="p">,</span> <span class="p">)</span> @@ -532,7 +533,7 @@ <span class="n">probdist</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">dphasevol</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">],</span> <span class="n">parameter_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> - <span class="n">gridtype</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"edge"</span><span class="p">,</span> + <span class="n">gridtype</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"centred"</span><span class="p">,</span> <span class="n">branchpoint</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">precode</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">condition</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> @@ -555,25 +556,25 @@ <span class="sd"> name:</span> <span class="sd"> name of parameter. This is evaluated as a parameter and you can use it throughout</span> <span class="sd"> the rest of the function</span> -<span class="sd"> </span> + <span class="sd"> Examples:</span> <span class="sd"> name = 'lnm1'</span> <span class="sd"> longname:</span> <span class="sd"> Long name of parameter</span> -<span class="sd"> </span> + <span class="sd"> Examples:</span> <span class="sd"> longname = 'Primary mass'</span> <span class="sd"> range:</span> <span class="sd"> Range of values to take. Does not get used really, the spacingfunction is used to</span> <span class="sd"> get the values from</span> -<span class="sd"> </span> + <span class="sd"> Examples:</span> <span class="sd"> range = [math.log(m_min), math.log(m_max)]</span> <span class="sd"> resolution:</span> <span class="sd"> Resolution of the sampled range (amount of samples).</span> <span class="sd"> TODO: check if this is used anywhere</span> -<span class="sd"> Examples: </span> +<span class="sd"> Examples:</span> <span class="sd"> resolution = resolution["M_1"]</span> <span class="sd"> spacingfunction:</span> <span class="sd"> Function determining how the range is sampled. You can either use a real function,</span> @@ -586,12 +587,12 @@ <span class="sd"> precode:</span> <span class="sd"> Extra room for some code. This code will be evaluated within the loop of the</span> <span class="sd"> sampling function (i.e. a value for lnm1 is chosen already)</span> -<span class="sd"> </span> + <span class="sd"> Examples:</span> <span class="sd"> precode = 'M_1=math.exp(lnm1);'</span> <span class="sd"> probdist:</span> <span class="sd"> Function determining the probability that gets assigned to the sampled parameter</span> -<span class="sd"> </span> + <span class="sd"> Examples:</span> <span class="sd"> probdist = 'Kroupa2001(M_1)*M_1'</span> <span class="sd"> dphasevol:</span> @@ -605,7 +606,7 @@ <span class="sd"> condition = 'self.grid_options['binary']==1'</span> <span class="sd"> gridtype:</span> <span class="sd"> Method on how the value range is sampled. Can be either 'edge' (steps starting at</span> -<span class="sd"> the lower edge of the value range) or 'center'</span> +<span class="sd"> the lower edge of the value range) or 'centred'</span> <span class="sd"> (steps starting at lower edge + 0.5 * stepsize).</span> <span class="sd"> """</span> @@ -628,6 +629,11 @@ <span class="s2">"grid_variable_number"</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">grid_options</span><span class="p">[</span><span class="s2">"_grid_variables"</span><span class="p">]),</span> <span class="p">}</span> + <span class="c1"># Check for gridtype input</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">gridtype</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'edge'</span><span class="p">,</span> <span class="s1">'centred'</span><span class="p">]:</span> + <span class="n">msg</span> <span class="o">=</span> <span class="s2">"Unknown gridtype value. Please start another one"</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> + <span class="c1"># Load it into the grid_options</span> <span class="bp">self</span><span class="o">.</span><span class="n">grid_options</span><span class="p">[</span><span class="s2">"_grid_variables"</span><span class="p">][</span><span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]]</span> <span class="o">=</span> <span class="n">grid_variable</span> <span class="n">verbose_print</span><span class="p">(</span> @@ -949,6 +955,9 @@ <span class="s2">"zero_prob_stars_skipped"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">grid_options</span><span class="p">[</span><span class="s1">'_zero_prob_stars_skipped'</span><span class="p">]</span> <span class="p">}</span> + <span class="c1"># Add analytics dict to the metadata too:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">grid_ensemble_results</span><span class="p">[</span><span class="s1">'metadata'</span><span class="p">]</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">analytics_dict</span><span class="p">)</span> + <span class="c1">##</span> <span class="c1"># Clean up code: remove files, unset values, unload interpolators etc. This is placed in the general evolve function,</span> <span class="c1"># because that makes for easier control</span> @@ -1114,33 +1123,6 @@ <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">amt_cores</span><span class="p">):</span> <span class="n">job_queue</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="s2">"STOP"</span><span class="p">)</span> -<div class="viewcode-block" id="Population.format_ensemble_results"><a class="viewcode-back" href="../../../grid.html#binarycpython.utils.grid.Population.format_ensemble_results">[docs]</a> <span class="k">def</span> <span class="nf">format_ensemble_results</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ensemble_dictionary</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Function to handle all the steps of formatting the ensemble output again.</span> - -<span class="sd"> Input:</span> -<span class="sd"> ensemble_dictionary: dictionary containing all the ensemble results</span> -<span class="sd"> """</span> - - <span class="n">original_ensemble_results</span> <span class="o">=</span> <span class="n">ensemble_dictionary</span> - - <span class="n">float_format_ensemble_results</span> <span class="o">=</span> <span class="n">recursive_change_key_to_float</span><span class="p">(</span><span class="n">original_ensemble_results</span><span class="p">)</span> - <span class="k">del</span> <span class="n">original_ensemble_results</span> - <span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span> - - <span class="c1"># Then sort the dictionary</span> - <span class="n">sorted_ensemble_results</span> <span class="o">=</span> <span class="n">custom_sort_dict</span><span class="p">(</span><span class="n">float_format_ensemble_results</span><span class="p">)</span> - <span class="k">del</span> <span class="n">float_format_ensemble_results</span> - <span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span> - - <span class="c1"># Then Change the keys back to a string but with a %g format.</span> - <span class="n">reformatted_ensemble_results</span> <span class="o">=</span> <span class="n">recursive_change_key_to_string</span><span class="p">(</span><span class="n">sorted_ensemble_results</span><span class="p">)</span> - <span class="k">del</span> <span class="n">sorted_ensemble_results</span> - <span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span> - - <span class="c1"># Put back in the dictionary</span> - <span class="k">return</span> <span class="n">reformatted_ensemble_results</span></div> - <span class="k">def</span> <span class="nf">_evolve_population_grid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="sd">"""</span> <span class="sd"> Function that handles running the population using multiprocessing.</span> @@ -1202,7 +1184,7 @@ <span class="k">break</span> <span class="c1"># Extra ensemble result manipulation:</span> - <span class="n">combined_output_dict</span><span class="p">[</span><span class="s1">'ensemble_results'</span><span class="p">][</span><span class="s1">'ensemble'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_ensemble_results</span><span class="p">(</span><span class="n">combined_output_dict</span><span class="p">[</span><span class="s1">'ensemble_results'</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'ensemble'</span><span class="p">,</span> <span class="p">{}))</span> + <span class="n">combined_output_dict</span><span class="p">[</span><span class="s1">'ensemble_results'</span><span class="p">][</span><span class="s1">'ensemble'</span><span class="p">]</span> <span class="o">=</span> <span class="n">format_ensemble_results</span><span class="p">(</span><span class="n">combined_output_dict</span><span class="p">[</span><span class="s1">'ensemble_results'</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'ensemble'</span><span class="p">,</span> <span class="p">{}))</span> <span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span> <span class="c1"># Take into account that we run this on multiple cores</span> @@ -1271,6 +1253,7 @@ <span class="c1"># print("thread {}: persistent_data_memaddr: ".format(self.process_ID), persistent_data_memaddr)</span> <span class="c1"># Get results binary_c</span> + <span class="c1"># print("running: {}".format(binary_cmdline_string))</span> <span class="n">out</span> <span class="o">=</span> <span class="n">_binary_c_bindings</span><span class="o">.</span><span class="n">run_system</span><span class="p">(</span> <span class="n">argstring</span><span class="o">=</span><span class="n">binary_cmdline_string</span><span class="p">,</span> <span class="n">custom_logging_func_memaddr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">grid_options</span><span class="p">[</span> @@ -1563,11 +1546,6 @@ <span class="n">ensemble_json</span><span class="p">[</span><span class="s2">"ensemble"</span><span class="p">]</span> <span class="o">=</span> <span class="n">extract_ensemble_json_from_string</span><span class="p">(</span> <span class="n">ensemble_raw_output</span> <span class="p">)</span> <span class="c1"># Load this into a dict so that we can combine it later</span> - - <span class="c1"># Extra ensemble result manipulation:</span> - <span class="c1"># We need to reformat and multiply by a factor</span> - <span class="n">ensemble_json</span><span class="p">[</span><span class="s2">"ensemble"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_ensemble_results</span><span class="p">(</span><span class="n">ensemble_json</span><span class="p">[</span><span class="s2">"ensemble"</span><span class="p">])</span> - <span class="n">gc</span><span class="o">.</span><span class="n">collect</span><span class="p">()</span> <span class="k">else</span><span class="p">:</span> <span class="c1"># If we do not allow this, automatically we will export this to the data_dir, in</span> <span class="c1"># some formatted way</span> @@ -1578,9 +1556,11 @@ <span class="p">),</span> <span class="p">)</span> + <span class="c1"># TODO: consider writing this in a formatted structure</span> <span class="c1"># Write to file</span> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">output_file</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">ensemble_raw_output</span><span class="p">)</span> + <span class="c1"># f.write(json.dumps(self.format_ensemble_results(ensemble_output)))</span> <span class="nb">print</span><span class="p">(</span> <span class="s2">"Thread </span><span class="si">{}</span><span class="s2">: Wrote ensemble results directly to file: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> @@ -2094,34 +2074,40 @@ <span class="c1"># TODO: make sure this works</span> <span class="c1"># Adding for loop structure</span> - <span class="n">code_string</span> <span class="o">+=</span> <span class="p">(</span> - <span class="n">indent</span> <span class="o">*</span> <span class="n">depth</span> - <span class="o">+</span> <span class="s2">"for </span><span class="si">{}</span><span class="s2"> in sampled_values_</span><span class="si">{}</span><span class="s2">:"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> - <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> - <span class="p">)</span> - <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> - <span class="p">)</span> - <span class="c1"># code_string += (</span> <span class="c1"># indent * depth</span> - <span class="c1"># + "for {}_sample_number in range({}):".format(</span> - <span class="c1"># grid_variable["name"], grid_variable["resolution"]</span> + <span class="c1"># + "for {} in sampled_values_{}:".format(</span> + <span class="c1"># grid_variable["name"], grid_variable["name"]</span> <span class="c1"># )</span> <span class="c1"># + "\n"</span> <span class="c1"># )</span> - <span class="c1"># code_string += (</span> - <span class="c1"># indent * (depth+1)</span> - <span class="c1"># + "{} = sampled_values_{}[0] + ((sampled_values_{}[-1]-sampled_values_{}[0])/{}) * {}_sample_number".format(</span> - <span class="c1"># grid_variable["name"], grid_variable["name"], grid_variable["name"], grid_variable["name"], grid_variable["resolution"], grid_variable["name"]</span> - <span class="c1"># )</span> - <span class="c1"># + "\n"</span> - <span class="c1"># )</span> - - - - - + <span class="n">code_string</span> <span class="o">+=</span> <span class="p">(</span> + <span class="n">indent</span> <span class="o">*</span> <span class="n">depth</span> + <span class="o">+</span> <span class="s2">"for </span><span class="si">{}</span><span class="s2">_sample_number in range(</span><span class="si">{}</span><span class="s2">):"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> + <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"resolution"</span><span class="p">]</span> + <span class="p">)</span> + <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> + <span class="p">)</span> + <span class="k">if</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s1">'gridtype'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'edge'</span><span class="p">:</span> + <span class="n">code_string</span> <span class="o">+=</span> <span class="p">(</span> + <span class="n">indent</span> <span class="o">*</span> <span class="p">(</span><span class="n">depth</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> + <span class="o">+</span> <span class="s2">"</span><span class="si">{}</span><span class="s2"> = sampled_values_</span><span class="si">{}</span><span class="s2">[0] + (sampled_values_</span><span class="si">{}</span><span class="s2">[1]-sampled_values_</span><span class="si">{}</span><span class="s2">[0]) * </span><span class="si">{}</span><span class="s2">_sample_number"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> + <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> + <span class="p">)</span> + <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> + <span class="p">)</span> + <span class="k">elif</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s1">'gridtype'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'centred'</span><span class="p">:</span> + <span class="n">code_string</span> <span class="o">+=</span> <span class="p">(</span> + <span class="n">indent</span> <span class="o">*</span> <span class="p">(</span><span class="n">depth</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> + <span class="o">+</span> <span class="s2">"</span><span class="si">{}</span><span class="s2"> = sampled_values_</span><span class="si">{}</span><span class="s2">[0] + 0.5 * (sampled_values_</span><span class="si">{}</span><span class="s2">[1]-sampled_values_</span><span class="si">{}</span><span class="s2">[0]) + (sampled_values_</span><span class="si">{}</span><span class="s2">[1]-sampled_values_</span><span class="si">{}</span><span class="s2">[0]) * </span><span class="si">{}</span><span class="s2">_sample_number"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> + <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">grid_variable</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> + <span class="p">)</span> + <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> + <span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">msg</span> <span class="o">=</span> <span class="s2">"Unknown gridtype value. PLease choose a different one"</span> + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> <span class="c1">#################################################################################</span> <span class="c1"># Check condition and generate for loop</span> @@ -3746,7 +3732,7 @@ <span class="n">parameter_name</span><span class="o">=</span><span class="s2">"multiplicity"</span><span class="p">,</span> <span class="n">longname</span><span class="o">=</span><span class="s2">"multiplicity"</span><span class="p">,</span> <span class="n">valuerange</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="n">max_multiplicity</span><span class="p">],</span> - <span class="n">resolution</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">resolution</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">spacingfunc</span><span class="o">=</span><span class="s2">"range(1, 5)"</span><span class="p">,</span> <span class="n">precode</span><span class="o">=</span><span class="s1">'self.grid_options["multiplicity"] = multiplicity; self.bse_options["multiplicity"] = multiplicity; options=</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">grid_options</span><span class="p">[</span><span class="s1">'m&s_options'</span><span class="p">]</span> @@ -4239,9 +4225,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/_modules/binarycpython/utils/grid_options_defaults.html b/docs/build/html/_modules/binarycpython/utils/grid_options_defaults.html index 035bea23d..e0fdf688e 100644 --- a/docs/build/html/_modules/binarycpython/utils/grid_options_defaults.html +++ b/docs/build/html/_modules/binarycpython/utils/grid_options_defaults.html @@ -1007,9 +1007,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/_modules/binarycpython/utils/plot_functions.html b/docs/build/html/_modules/binarycpython/utils/plot_functions.html index ba2301c60..64e1f27cc 100644 --- a/docs/build/html/_modules/binarycpython/utils/plot_functions.html +++ b/docs/build/html/_modules/binarycpython/utils/plot_functions.html @@ -829,9 +829,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/_modules/binarycpython/utils/run_system_wrapper.html b/docs/build/html/_modules/binarycpython/utils/run_system_wrapper.html index 535ffdf42..70d649d6a 100644 --- a/docs/build/html/_modules/binarycpython/utils/run_system_wrapper.html +++ b/docs/build/html/_modules/binarycpython/utils/run_system_wrapper.html @@ -209,6 +209,7 @@ <span class="c1"># Load available arg keywords</span> <span class="n">available_binary_c_arg_keywords</span> <span class="o">=</span> <span class="n">get_arg_keys</span><span class="p">()</span> + <span class="n">special_keywords</span> <span class="o">=</span> <span class="p">[</span><span class="n">el</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">available_binary_c_arg_keywords</span><span class="p">)</span> <span class="k">if</span> <span class="n">el</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">)]</span> <span class="n">other_keywords</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"custom_logging_code"</span><span class="p">,</span> <span class="s2">"log_filename"</span><span class="p">,</span> <span class="s2">"parse_function"</span><span class="p">]</span> @@ -224,6 +225,16 @@ <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">available_binary_c_arg_keywords</span><span class="p">:</span> <span class="n">binary_c_args</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> + <span class="k">elif</span> <span class="nb">any</span><span class="p">(</span> + <span class="p">[</span> + <span class="kc">True</span> + <span class="k">if</span> <span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">param</span><span class="p">[:</span><span class="o">-</span><span class="mi">2</span><span class="p">])</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">param</span><span class="p">[:</span><span class="o">-</span><span class="mi">2</span><span class="p">])</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> + <span class="k">else</span> <span class="kc">False</span> + <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">special_keywords</span> + <span class="p">]</span> + <span class="p">):</span> + <span class="n">binary_c_args</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> + <span class="c1"># Notify user when this key wont be used</span> <span class="k">else</span><span class="p">:</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">other_keywords</span><span class="p">:</span> @@ -287,9 +298,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/_modules/binarycpython/utils/spacing_functions.html b/docs/build/html/_modules/binarycpython/utils/spacing_functions.html index f24e0dd94..6fa1aeaec 100644 --- a/docs/build/html/_modules/binarycpython/utils/spacing_functions.html +++ b/docs/build/html/_modules/binarycpython/utils/spacing_functions.html @@ -179,10 +179,10 @@ <span class="sd"> steps: amount of segments between min_bound and max_bound</span> <span class="sd"> Returns:</span> -<span class="sd"> np.linspace(min_bound, max_bound, steps)</span> +<span class="sd"> np.linspace(min_bound, max_bound, steps+1)</span> <span class="sd"> """</span> - <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">min_bound</span><span class="p">,</span> <span class="n">max_bound</span><span class="p">,</span> <span class="n">steps</span><span class="p">)</span></div> + <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">min_bound</span><span class="p">,</span> <span class="n">max_bound</span><span class="p">,</span> <span class="n">steps</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span></div> </pre></div> </div> @@ -209,9 +209,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/_modules/binarycpython/utils/useful_funcs.html b/docs/build/html/_modules/binarycpython/utils/useful_funcs.html index 4257a86e6..8a34e2326 100644 --- a/docs/build/html/_modules/binarycpython/utils/useful_funcs.html +++ b/docs/build/html/_modules/binarycpython/utils/useful_funcs.html @@ -566,9 +566,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/_modules/index.html b/docs/build/html/_modules/index.html index 2ce40dd7f..5306f95ef 100644 --- a/docs/build/html/_modules/index.html +++ b/docs/build/html/_modules/index.html @@ -189,9 +189,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/_sources/binary_c_parameters.rst.txt b/docs/build/html/_sources/binary_c_parameters.rst.txt index 96a16995f..9d05193ac 100644 --- a/docs/build/html/_sources/binary_c_parameters.rst.txt +++ b/docs/build/html/_sources/binary_c_parameters.rst.txt @@ -4,7 +4,7 @@ The following chapter contains all the parameters that the current version of bi This information was obtained by the following binary_c build: - **binary_c git branch**: branch_david **binary_c git revision**: 6101:20210807:c5232be5c **Built on**: Aug 7 2021 17:32:06 + **binary_c git branch**: branch_david **binary_c git revision**: 6162:20210825:093caf0e9 **Built on**: Aug 25 2021 18:02:39 Section: stars @@ -300,6 +300,22 @@ Section: stars | **Default value**: 0 | **Macros**: ['GB_WIND_REIMERS = 0', 'GB_WIND_SCHROEDER_CUNTZ_2005 = 1', 'GB_WIND_GOLDMAN_ETAL_2017 = 2', 'GB_WIND_BEASOR_ETAL_2020 = 3'] +| **Parameter**: postagbwind +| **Description**: Apply special post-(A)GB prescription. Default is POSTAGB_WIND_USE_GIANT which means we just use whatever is prescribed on the giant branch. Other options include: POSTAGB_WIND_NONE = 1 (no wind on the post (A)GB), POSTAGB_WIND_KRTICKA2020 = 2 which uses Krticka, Kubát and Krticková (2020, A&A 635, A173). +| **Parameter input type**: Integer +| **Default value**: 0 +| **Macros**: ['POSTAGB_WIND_GIANT = 0', 'POSTAGB_WIND_NONE = 1', 'POSTAGB_WIND_KRTICKA2020 = 2'] + +| **Parameter**: Teff_postAGB_min +| **Description**: The minimum temperature for which we apply post-(A)GB winds. See also Teff_postAGB_max. (6000 K) +| **Parameter input type**: Float +| **Default value**: 6000 + +| **Parameter**: Teff_postAGB_max +| **Description**: The maximum temperature for which we apply post-(A)GB winds. See also Teff_postAGB_min. (120000 K) +| **Parameter input type**: Float +| **Default value**: 120000 + | **Parameter**: mattsson_Orich_tpagbwind | **Description**: Experimental: turns on Mattsson's TPAGB wind when the star is oxygen rich. Requires MATTSSON_MASS_LOSS. | **Parameter input type**: Integer @@ -398,6 +414,11 @@ Section: stars | **Parameter input type**: Float | **Default value**: 1 +| **Parameter**: Tout_Pringle_1992_multiplier +| **Description**: Multiplier for the Tout & Pringle (1992) magnetic wind. (0.0) +| **Parameter input type**: Float +| **Default value**: 0 + | **Parameter**: artificial_mass_accretion_rate%d | **Description**: Constant mass accretion rate for star <n>. | **Parameter input type**: Float(scanf) @@ -442,10 +463,10 @@ Section: stars | **Default value**: 1 | **Parameter**: BH_prescription -| **Description**: Black hole mass prescrition: relates the mass of a newly formed black hole to its progenitor's (CO) core mass. 0=Hurley et al 2000/2002, 1=Belczynski (early 2000s). +| **Description**: Black hole mass prescrition: relates the mass of a newly formed black hole to its progenitor's (CO) core mass. BH_HURLEY2002 = 0 = Hurley et al 2000/2002, BH_BELCZYNSKI = 1 = Belczynski (early 2000s), BH_SPERA2015 = Spera+ 2015, BH_FRYER12_DELAYED = 3 = Fryer et al. (2012) delayed prescription, BH_FRYER12_RAPID = 4 = Fryer et al. (2012) rapid prescription, BH_FRYER12_STARTRACK = 5 = Fryer et al. (2012) startrack prescription. | **Parameter input type**: Integer | **Default value**: 0 -| **Macros**: ['BH_HURLEY2002 = 0', 'BH_BELCZYNSKI = 1', 'BH_SPERA2015 = 2', 'BH_FRYER12_DELAYED = 3', 'BH_FRYER12_RAPID = 4'] +| **Macros**: ['BH_HURLEY2002 = 0', 'BH_BELCZYNSKI = 1', 'BH_SPERA2015 = 2', 'BH_FRYER12_DELAYED = 3', 'BH_FRYER12_RAPID = 4', 'BH_FRYER12_STARTRACK = 5'] | **Parameter**: PPISN_prescription | **Description**: (Pulsational) Pair-Instability Supernova prescription: Relates initial helium core mass of star to whether the star undergoes PPISN or PISN. Requires PPISN flag to be True (see binary_c_parameters.h). 0=no ppisn, 1=Farmer et al 2019. @@ -1105,6 +1126,16 @@ Section: stars | **Parameter input type**: Float | **Default value**: 600000 +| **Parameter**: colour%d +| **Description**: Sets colour %d (0 to NUM_ANSI_COLOURS-1) to the extended ANSI set colour you choose (1-255, 0 means ignore). The colour numbers are defined in src/logging/ansi_colours.h +| **Parameter input type**: Int(scanf) +| **Default value**: NULL + +| **Parameter**: apply_Darwin_Radau_correction +| **Description**: Apply Darwin-Radau correction to the moment of inertia to take rotation into account? +| **Parameter input type**: True|False +| **Default value**: False + Section: binary --------------- @@ -2459,6 +2490,12 @@ Section: output | **Default value**: /tmp/c_log.dat | **Extra**: +| **Parameter**: log_arrows +| **Description**: Add arrows to the output log to show whether values are increasing or decreasing. +| **Parameter input type**: True|False +| **Default value**: False +| **Extra**: + | **Parameter**: stopfile | **Description**: File which, when it exists, will stop the current binary_c repeat run. | **Parameter input type**: String @@ -2572,6 +2609,12 @@ Section: input | **Default value**: NULL | **Extra**: +| **Parameter**: MINT_fallback_to_test_data +| **Description**: If TRUE, use the MINT test_data directory as a fallback when data is unavailable. (FALSE) +| **Parameter input type**: True|False +| **Default value**: NULL +| **Extra**: + | **Parameter**: MINT_disable_grid_load_warnings | **Description**: Use this to explicitly disable MINT's warnings when loading a grid with, e.g., missing or too much data. | **Parameter input type**: True|False @@ -2584,6 +2627,24 @@ Section: input | **Default value**: NULL | **Extra**: +| **Parameter**: MINT_nshells +| **Description**: Set the initial number of shells MINT uses in each star when doing nuclear burning. Note: remeshing can change this. If MINT_nshells is 0, shellular burning and other routines that require shells will not be available. (200) +| **Parameter input type**: Integer +| **Default value**: NULL +| **Extra**: + +| **Parameter**: MINT_maximum_nshells +| **Description**: Set the maximum number of shells MINT uses in each star when doing nuclear burning. Note that this will be limited to MINT_HARD_MAX_NSHELLS. (1000) +| **Parameter input type**: Integer +| **Default value**: NULL +| **Extra**: + +| **Parameter**: MINT_minimum_nshells +| **Description**: Set the minimum number of shells MINT uses in each star when doing nuclear burning. Note that this will be greater than or equal to MINT_HARD_MIN_NSHELLS, which is 0 by default. (0) +| **Parameter input type**: Integer +| **Default value**: NULL +| **Extra**: + | **Parameter**: MINT_Kippenhahn_stellar_type | **Description**: Stellar type selector for Kippenhahn plots. Set to -1 to ignore, otherwise the stellar type number for which Kippenhahn plot data should be output. | **Parameter input type**: Integer diff --git a/docs/build/html/_sources/notebook_individual_systems.ipynb.txt b/docs/build/html/_sources/notebook_individual_systems.ipynb.txt index 19c2d29fb..21d49016f 100644 --- a/docs/build/html/_sources/notebook_individual_systems.ipynb.txt +++ b/docs/build/html/_sources/notebook_individual_systems.ipynb.txt @@ -28,6 +28,18 @@ { "cell_type": "code", "execution_count": 1, + "id": "e32dcdee", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from binarycpython.utils.functions import temp_dir\n", + "TMP_DIR = temp_dir(\"notebooks\", \"notebook_individual_systems\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "id": "425efed3-d8e3-432d-829e-41d8ebe05162", "metadata": {}, "outputs": [], @@ -38,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "b2abab48-433d-4936-8434-14804c52c9f6", "metadata": {}, "outputs": [ @@ -46,7 +58,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "SINGLE_STAR_LIFETIME 1 12462\n", + "SINGLE_STAR_LIFETIME 1 12461.9\n", "\n" ] } @@ -66,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "029fc3f2-f09a-49af-a32b-248505738f2e", "metadata": {}, "outputs": [ @@ -74,24 +86,25 @@ "name": "stdout", "output_type": "stream", "text": [ - " TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=67365 RANDOM_COUNT=0\n", - " 0.0000 1.000 0.000 1 15 -1 -1.00 0.000 0.000 \"INITIAL \"\n", - " 11003.1302 1.000 0.000 2 15 -1 -1.00 0.000 0.000 \"OFF_MS\"\n", - " 11003.1302 1.000 0.000 2 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 11582.2424 1.000 0.000 3 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12325.1085 0.817 0.000 4 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12457.1300 0.783 0.000 5 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12460.8955 0.774 0.000 6 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12460.8955 0.774 0.000 6 15 -1 -1.00 0.000 0.000 \"shrinkAGB\"\n", - " 12461.9514 0.523 0.000 11 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 15000.0000 0.523 0.000 11 15 -1 -1.00 0.000 0.000 \"MAX_TIME\"\n", + " TIME M1 M2 K1 K2 SEP PER ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=17089 RANDOM_COUNT=0\n", + " 0.0000 1.000 0.000 1 15 -1 -1 -1.00 0.000 0.000 \"INITIAL \"\n", + " 11003.1302 1.000 0.000 2 15 -1 -1 -1.00 0.000 0.000 \"OFF_MS\"\n", + " 11003.1302 1.000 0.000 2 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 11582.2424 1.000 0.000 3 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12325.1085 0.817 0.000 4 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12457.1301 0.783 0.000 5 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12460.9983 0.716 0.000 6 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12460.9983 0.716 0.000 6 15 -1 -1 -1.00 0.000 0.000 \"shrinkAGB\"\n", + " 12461.9458 0.518 0.000 11 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 15000.0000 0.518 0.000 11 15 -1 -1 -1.00 0.000 0.000 \"MAX_TIME\"\n", "\n" ] } ], "source": [ - "output = run_system(M_1=1, log_filename='/tmp/test_logfile.txt')\n", - "with open('/tmp/test_logfile.txt', 'r') as f:\n", + "log_filename = os.path.join(TMP_DIR, 'test_logfile.txt')\n", + "output = run_system(M_1=1, log_filename=log_filename, api_log_filename_prefix=TMP_DIR)\n", + "with open(log_filename, 'r') as f:\n", " print(f.read())" ] }, @@ -105,7 +118,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "e6a23b55-ca42-440d-83ac-e76a24a83a67", "metadata": { "tags": [] @@ -115,7 +128,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "['EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1', 'EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1', 'EXAMPLE_MASSLOSS 1.000000000000e-06 1 1 1', 'EXAMPLE_MASSLOSS 2.000000000000e-06 1 1 1']\n" + "EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1\n", + "EXAMPLE_MASSLOSS 1.000000000000e-06 1 1 1\n", + "EXAMPLE_MASSLOSS 2.000000000000e-06 1 1 1\n" ] } ], @@ -137,8 +153,8 @@ "# Generate entire shared lib code around logging lines\n", "custom_logging_code = binary_c_log_code(custom_logging_print_statement)\n", "\n", - "output = run_system(M_1=1, custom_logging_code=custom_logging_code)\n", - "print(output.splitlines()[:4])" + "output = run_system(M_1=1, custom_logging_code=custom_logging_code, api_log_filename_prefix=TMP_DIR)\n", + "print('\\n'.join(output.splitlines()[:4]))" ] }, { @@ -151,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "3822721f-217a-495b-962e-d57137b9e290", "metadata": {}, "outputs": [ @@ -201,7 +217,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "654a07ed-2a88-46ff-9da0-b7759580f9f3", "metadata": {}, "outputs": [ @@ -216,13 +232,13 @@ "4 2e-06 1 1 1\n", "5 3e-06 1 1 1\n", "... ... ... ... ...\n", - "1612 12461.8 0.577754 1 6\n", - "1613 12462 0.522806 1 11\n", - "1614 13462 0.522806 1 11\n", - "1615 14462 0.522806 1 11\n", - "1616 15000 0.522806 1 11\n", + "1617 12461.8 0.546683 1 6\n", + "1618 12461.9 0.517749 1 11\n", + "1619 13461.9 0.517749 1 11\n", + "1620 14461.9 0.517749 1 11\n", + "1621 15000 0.517749 1 11\n", "\n", - "[1616 rows x 4 columns]\n" + "[1621 rows x 4 columns]\n" ] } ], @@ -252,7 +268,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "4a98ffca-1b72-4bb8-8df1-3bf3187d882f", "metadata": {}, "outputs": [], @@ -271,7 +287,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "bff1cc2e-6b32-4ba0-879f-879ffbabd223", "metadata": {}, "outputs": [ @@ -279,11 +295,12 @@ "name": "stdout", "output_type": "stream", "text": [ + "adding: api_log_filename_prefix=/tmp/binary_c_python/notebooks/notebook_individual_systems to BSE_options\n", "adding: M_1=10 to BSE_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "SINGLE_STAR_LIFETIME 10 27.7358\n", + "SINGLE_STAR_LIFETIME 10 28.4838\n", "\n" ] } @@ -294,7 +311,8 @@ "\n", "# Set some parameters\n", "example_pop.set(\n", - " verbosity=1\n", + " verbosity=1,\n", + " api_log_filename_prefix=TMP_DIR\n", ")\n", "example_pop.set(\n", " M_1=10\n", @@ -315,7 +333,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "id": "dd748bab-b57e-4129-8350-9ea11fa179d0", "metadata": { "scrolled": true, @@ -338,10 +356,13 @@ ");\n", " to grid_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_eac2dfc438a14e5a9f5be98b1b6b4294.so\n", - "['EXAMPLE_MASSLOSS 0.000000000000e+00 10 0 10 1', 'EXAMPLE_MASSLOSS 0.000000000000e+00 10 10 10 1', 'EXAMPLE_MASSLOSS 1.000000000000e-06 10 10 10 1', 'EXAMPLE_MASSLOSS 2.000000000000e-06 10 10 10 1']\n" + "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_8967553693ac4e11a49c42d4eef773e8.so\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 10 0 10 1\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 10 10 10 1\n", + "EXAMPLE_MASSLOSS 1.000000000000e-06 10 10 10 1\n", + "EXAMPLE_MASSLOSS 2.000000000000e-06 10 10 10 1\n" ] } ], @@ -362,7 +383,7 @@ "\n", "# get output and print\n", "output = example_pop.evolve_single()\n", - "print(output.splitlines()[:4])" + "print('\\n'.join(output.splitlines()[:4]))" ] }, { @@ -377,7 +398,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "id": "fec39154-cce6-438c-8c2c-509d76b00f34", "metadata": {}, "outputs": [], @@ -428,7 +449,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "id": "57347512-fd4a-434b-b13c-5e6dbd3ac415", "metadata": { "scrolled": true, @@ -439,12 +460,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "adding: parse_function=<function object_parse_function at 0x7f9265091598> to grid_options\n", - "<<<< Warning: Key does not match previously known parameter: adding: output_dir=/tmp/ to custom_options >>>>\n", + "adding: parse_function=<function object_parse_function at 0x7fb4d41ebbf8> to grid_options\n", + "<<<< Warning: Key does not match previously known parameter: adding: output_dir=/tmp/binary_c_python/notebooks/notebook_individual_systems to custom_options >>>>\n", + "adding: api_log_filename_prefix=/tmp/binary_c_python/notebooks/notebook_individual_systems to BSE_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_e9c2bec7f15541eb847fc6013e48e7ed.so\n", + "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_5d7779e8190e4b79b10c7e6a44cb0e7e.so\n", "[['time', 'mass', 'initial_mass', 'stellar_type'], [0.0, 10.0, 0.0, 10.0, 1.0], [0.0, 10.0, 10.0, 10.0, 1.0], [1e-06, 10.0, 10.0, 10.0, 1.0]]\n", "dict_keys(['time', 'mass', 'initial_mass', 'stellar_type'])\n" ] @@ -453,7 +475,8 @@ "source": [ "example_pop.set(\n", " parse_function=object_parse_function,\n", - " output_dir='/tmp/'\n", + " output_dir=TMP_DIR,\n", + " api_log_filename_prefix=TMP_DIR\n", ")\n", "output = example_pop.evolve_single()\n", "print(output[:4])\n", @@ -488,7 +511,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "id": "ec48125c-6bf5-48f4-9357-8261800b5d8b", "metadata": {}, "outputs": [ @@ -496,7 +519,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "SINGLE_STAR_LIFETIME 15 14.2383\n", + "SINGLE_STAR_LIFETIME 15 14.9947\n", "\n" ] } @@ -510,10 +533,11 @@ "eccentricity = 0.0\n", "metallicity = 0.02\n", "max_evolution_time = 15000 # Myr. You need to include this argument.\n", + "api_log_filename_prefix = TMP_DIR\n", "\n", "# Here we set up the argument string that is passed to the bindings\n", "argstring = \"\"\"\n", - "binary_c M_1 {M_1} M_2 {M_2} separation {separation} orbital_period {orbital_period} eccentricity {eccentricity} metallicity {metallicity} max_evolution_time {max_evolution_time}\n", + "binary_c M_1 {M_1} M_2 {M_2} separation {separation} orbital_period {orbital_period} eccentricity {eccentricity} metallicity {metallicity} max_evolution_time {max_evolution_time} api_log_filename_prefix {api_log_filename_prefix}\n", "\"\"\".format(\n", " M_1=M_1,\n", " M_2=M_2,\n", @@ -522,6 +546,7 @@ " eccentricity=eccentricity,\n", " metallicity=metallicity,\n", " max_evolution_time=max_evolution_time,\n", + " api_log_filename_prefix=TMP_DIR\n", ").strip()\n", "\n", "from binarycpython import _binary_c_bindings\n", diff --git a/docs/build/html/_sources/notebook_population.ipynb.txt b/docs/build/html/_sources/notebook_population.ipynb.txt index 56f3b153c..b6a37baa8 100644 --- a/docs/build/html/_sources/notebook_population.ipynb.txt +++ b/docs/build/html/_sources/notebook_population.ipynb.txt @@ -3,7 +3,9 @@ { "cell_type": "markdown", "id": "bbbaafbb-fd7d-4b73-a970-93506ba35d71", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "# Running populations with binarycpython\n", "This notebook will show you how to evolve a population of stars\n", @@ -27,15 +29,6 @@ "# help(Population) # Uncomment to see the public functions of this object" ] }, - { - "cell_type": "markdown", - "id": "a081ab23-7822-4971-aa82-991548534714", - "metadata": {}, - "source": [ - "- running ensemble\n", - "- using M&S grid" - ] - }, { "cell_type": "markdown", "id": "f268eff3-4e08-4f6b-8b59-f22dba4d2074", @@ -329,7 +322,7 @@ ], "source": [ "# Add grid variables\n", - "resolution = {\"M_1\": 20, \"q\": 20, \"per\": 40}\n", + "resolution = {\"M_1\": 20}\n", "\n", "# Mass\n", "example_pop.add_grid_variable(\n", @@ -1125,7 +1118,7 @@ ")\n", "\n", "# Add grid variables\n", - "resolution = {\"M_1\": 5, \"q\": 5, \"per\": 5}\n", + "resolution = {\"M_1\": 3, \"q\": 3, \"per\": 3}\n", "\n", "# Mass\n", "example_pop.add_grid_variable(\n", diff --git a/docs/build/html/binary_c_parameters.html b/docs/build/html/binary_c_parameters.html index a8132f81b..ecb6bba95 100644 --- a/docs/build/html/binary_c_parameters.html +++ b/docs/build/html/binary_c_parameters.html @@ -197,7 +197,7 @@ <h1>Binary_c parameters<a class="headerlink" href="#binary-c-parameters" title="Permalink to this headline">¶</a></h1> <p>The following chapter contains all the parameters that the current version of binary_c can handle, along with their descriptions and other properties.</p> <dl class="simple"> -<dt>This information was obtained by the following binary_c build:</dt><dd><p><strong>binary_c git branch</strong>: branch_david <strong>binary_c git revision</strong>: 6101:20210807:c5232be5c <strong>Built on</strong>: Aug 7 2021 17:32:06</p> +<dt>This information was obtained by the following binary_c build:</dt><dd><p><strong>binary_c git branch</strong>: branch_david <strong>binary_c git revision</strong>: 6162:20210825:093caf0e9 <strong>Built on</strong>: Aug 25 2021 18:02:39</p> </dd> </dl> <div class="section" id="section-stars"> @@ -547,6 +547,25 @@ <div class="line"><strong>Macros</strong>: [‘GB_WIND_REIMERS = 0’, ‘GB_WIND_SCHROEDER_CUNTZ_2005 = 1’, ‘GB_WIND_GOLDMAN_ETAL_2017 = 2’, ‘GB_WIND_BEASOR_ETAL_2020 = 3’]</div> </div> <div class="line-block"> +<div class="line"><strong>Parameter</strong>: postagbwind</div> +<div class="line"><strong>Description</strong>: Apply special post-(A)GB prescription. Default is POSTAGB_WIND_USE_GIANT which means we just use whatever is prescribed on the giant branch. Other options include: POSTAGB_WIND_NONE = 1 (no wind on the post (A)GB), POSTAGB_WIND_KRTICKA2020 = 2 which uses Krticka, Kubát and Krticková (2020, A&A 635, A173).</div> +<div class="line"><strong>Parameter input type</strong>: Integer</div> +<div class="line"><strong>Default value</strong>: 0</div> +<div class="line"><strong>Macros</strong>: [‘POSTAGB_WIND_GIANT = 0’, ‘POSTAGB_WIND_NONE = 1’, ‘POSTAGB_WIND_KRTICKA2020 = 2’]</div> +</div> +<div class="line-block"> +<div class="line"><strong>Parameter</strong>: Teff_postAGB_min</div> +<div class="line"><strong>Description</strong>: The minimum temperature for which we apply post-(A)GB winds. See also Teff_postAGB_max. (6000 K)</div> +<div class="line"><strong>Parameter input type</strong>: Float</div> +<div class="line"><strong>Default value</strong>: 6000</div> +</div> +<div class="line-block"> +<div class="line"><strong>Parameter</strong>: Teff_postAGB_max</div> +<div class="line"><strong>Description</strong>: The maximum temperature for which we apply post-(A)GB winds. See also Teff_postAGB_min. (120000 K)</div> +<div class="line"><strong>Parameter input type</strong>: Float</div> +<div class="line"><strong>Default value</strong>: 120000</div> +</div> +<div class="line-block"> <div class="line"><strong>Parameter</strong>: mattsson_Orich_tpagbwind</div> <div class="line"><strong>Description</strong>: Experimental: turns on Mattsson’s TPAGB wind when the star is oxygen rich. Requires MATTSSON_MASS_LOSS.</div> <div class="line"><strong>Parameter input type</strong>: Integer</div> @@ -664,6 +683,12 @@ <div class="line"><strong>Default value</strong>: 1</div> </div> <div class="line-block"> +<div class="line"><strong>Parameter</strong>: Tout_Pringle_1992_multiplier</div> +<div class="line"><strong>Description</strong>: Multiplier for the Tout & Pringle (1992) magnetic wind. (0.0)</div> +<div class="line"><strong>Parameter input type</strong>: Float</div> +<div class="line"><strong>Default value</strong>: 0</div> +</div> +<div class="line-block"> <div class="line"><strong>Parameter</strong>: artificial_mass_accretion_rate%d</div> <div class="line"><strong>Description</strong>: Constant mass accretion rate for star <n>.</div> <div class="line"><strong>Parameter input type</strong>: Float(scanf)</div> @@ -716,10 +741,10 @@ </div> <div class="line-block"> <div class="line"><strong>Parameter</strong>: BH_prescription</div> -<div class="line"><strong>Description</strong>: Black hole mass prescrition: relates the mass of a newly formed black hole to its progenitor’s (CO) core mass. 0=Hurley et al 2000/2002, 1=Belczynski (early 2000s).</div> +<div class="line"><strong>Description</strong>: Black hole mass prescrition: relates the mass of a newly formed black hole to its progenitor’s (CO) core mass. BH_HURLEY2002 = 0 = Hurley et al 2000/2002, BH_BELCZYNSKI = 1 = Belczynski (early 2000s), BH_SPERA2015 = Spera+ 2015, BH_FRYER12_DELAYED = 3 = Fryer et al. (2012) delayed prescription, BH_FRYER12_RAPID = 4 = Fryer et al. (2012) rapid prescription, BH_FRYER12_STARTRACK = 5 = Fryer et al. (2012) startrack prescription.</div> <div class="line"><strong>Parameter input type</strong>: Integer</div> <div class="line"><strong>Default value</strong>: 0</div> -<div class="line"><strong>Macros</strong>: [‘BH_HURLEY2002 = 0’, ‘BH_BELCZYNSKI = 1’, ‘BH_SPERA2015 = 2’, ‘BH_FRYER12_DELAYED = 3’, ‘BH_FRYER12_RAPID = 4’]</div> +<div class="line"><strong>Macros</strong>: [‘BH_HURLEY2002 = 0’, ‘BH_BELCZYNSKI = 1’, ‘BH_SPERA2015 = 2’, ‘BH_FRYER12_DELAYED = 3’, ‘BH_FRYER12_RAPID = 4’, ‘BH_FRYER12_STARTRACK = 5’]</div> </div> <div class="line-block"> <div class="line"><strong>Parameter</strong>: PPISN_prescription</div> @@ -1500,6 +1525,18 @@ <div class="line"><strong>Parameter input type</strong>: Float</div> <div class="line"><strong>Default value</strong>: 600000</div> </div> +<div class="line-block"> +<div class="line"><strong>Parameter</strong>: colour%d</div> +<div class="line"><strong>Description</strong>: Sets colour %d (0 to NUM_ANSI_COLOURS-1) to the extended ANSI set colour you choose (1-255, 0 means ignore). The colour numbers are defined in src/logging/ansi_colours.h</div> +<div class="line"><strong>Parameter input type</strong>: Int(scanf)</div> +<div class="line"><strong>Default value</strong>: NULL</div> +</div> +<div class="line-block"> +<div class="line"><strong>Parameter</strong>: apply_Darwin_Radau_correction</div> +<div class="line"><strong>Description</strong>: Apply Darwin-Radau correction to the moment of inertia to take rotation into account?</div> +<div class="line"><strong>Parameter input type</strong>: True|False</div> +<div class="line"><strong>Default value</strong>: False</div> +</div> </div> <div class="section" id="section-binary"> <h2>Section: binary<a class="headerlink" href="#section-binary" title="Permalink to this headline">¶</a></h2> @@ -3112,6 +3149,13 @@ <div class="line"><strong>Extra</strong>:</div> </div> <div class="line-block"> +<div class="line"><strong>Parameter</strong>: log_arrows</div> +<div class="line"><strong>Description</strong>: Add arrows to the output log to show whether values are increasing or decreasing.</div> +<div class="line"><strong>Parameter input type</strong>: True|False</div> +<div class="line"><strong>Default value</strong>: False</div> +<div class="line"><strong>Extra</strong>:</div> +</div> +<div class="line-block"> <div class="line"><strong>Parameter</strong>: stopfile</div> <div class="line"><strong>Description</strong>: File which, when it exists, will stop the current binary_c repeat run.</div> <div class="line"><strong>Parameter input type</strong>: String</div> @@ -3244,6 +3288,13 @@ <div class="line"><strong>Extra</strong>:</div> </div> <div class="line-block"> +<div class="line"><strong>Parameter</strong>: MINT_fallback_to_test_data</div> +<div class="line"><strong>Description</strong>: If TRUE, use the MINT test_data directory as a fallback when data is unavailable. (FALSE)</div> +<div class="line"><strong>Parameter input type</strong>: True|False</div> +<div class="line"><strong>Default value</strong>: NULL</div> +<div class="line"><strong>Extra</strong>:</div> +</div> +<div class="line-block"> <div class="line"><strong>Parameter</strong>: MINT_disable_grid_load_warnings</div> <div class="line"><strong>Description</strong>: Use this to explicitly disable MINT’s warnings when loading a grid with, e.g., missing or too much data.</div> <div class="line"><strong>Parameter input type</strong>: True|False</div> @@ -3258,6 +3309,27 @@ <div class="line"><strong>Extra</strong>:</div> </div> <div class="line-block"> +<div class="line"><strong>Parameter</strong>: MINT_nshells</div> +<div class="line"><strong>Description</strong>: Set the initial number of shells MINT uses in each star when doing nuclear burning. Note: remeshing can change this. If MINT_nshells is 0, shellular burning and other routines that require shells will not be available. (200)</div> +<div class="line"><strong>Parameter input type</strong>: Integer</div> +<div class="line"><strong>Default value</strong>: NULL</div> +<div class="line"><strong>Extra</strong>:</div> +</div> +<div class="line-block"> +<div class="line"><strong>Parameter</strong>: MINT_maximum_nshells</div> +<div class="line"><strong>Description</strong>: Set the maximum number of shells MINT uses in each star when doing nuclear burning. Note that this will be limited to MINT_HARD_MAX_NSHELLS. (1000)</div> +<div class="line"><strong>Parameter input type</strong>: Integer</div> +<div class="line"><strong>Default value</strong>: NULL</div> +<div class="line"><strong>Extra</strong>:</div> +</div> +<div class="line-block"> +<div class="line"><strong>Parameter</strong>: MINT_minimum_nshells</div> +<div class="line"><strong>Description</strong>: Set the minimum number of shells MINT uses in each star when doing nuclear burning. Note that this will be greater than or equal to MINT_HARD_MIN_NSHELLS, which is 0 by default. (0)</div> +<div class="line"><strong>Parameter input type</strong>: Integer</div> +<div class="line"><strong>Default value</strong>: NULL</div> +<div class="line"><strong>Extra</strong>:</div> +</div> +<div class="line-block"> <div class="line"><strong>Parameter</strong>: MINT_Kippenhahn_stellar_type</div> <div class="line"><strong>Description</strong>: Stellar type selector for Kippenhahn plots. Set to -1 to ignore, otherwise the stellar type number for which Kippenhahn plot data should be output.</div> <div class="line"><strong>Parameter input type</strong>: Integer</div> @@ -3483,9 +3555,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/custom_logging_functions.html b/docs/build/html/custom_logging_functions.html index 9999d221b..c7e8dfe67 100644 --- a/docs/build/html/custom_logging_functions.html +++ b/docs/build/html/custom_logging_functions.html @@ -420,9 +420,9 @@ I recommend using this in function in combination with a function that generates provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/distribution_functions.html b/docs/build/html/distribution_functions.html index e2b054585..2ab05aaf8 100644 --- a/docs/build/html/distribution_functions.html +++ b/docs/build/html/distribution_functions.html @@ -911,9 +911,9 @@ and is be given by dp/dlogP ~ (logP)^p for all other binary configurations (defa provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/example_notebooks.html b/docs/build/html/example_notebooks.html index 111d819a6..57f157057 100644 --- a/docs/build/html/example_notebooks.html +++ b/docs/build/html/example_notebooks.html @@ -267,9 +267,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/functions.html b/docs/build/html/functions.html index 9a3260db3..5974c283c 100644 --- a/docs/build/html/functions.html +++ b/docs/build/html/functions.html @@ -453,6 +453,16 @@ process)</p></li> </dl> </dd></dl> +<dl class="py function"> +<dt id="binarycpython.utils.functions.format_ensemble_results"> +<code class="sig-prename descclassname">binarycpython.utils.functions.</code><code class="sig-name descname">format_ensemble_results</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">ensemble_dictionary</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/binarycpython/utils/functions.html#format_ensemble_results"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#binarycpython.utils.functions.format_ensemble_results" title="Permalink to this definition">¶</a></dt> +<dd><p>Function to handle all the steps of formatting the ensemble output again.</p> +<dl class="simple"> +<dt>Input:</dt><dd><p>ensemble_dictionary: dictionary containing all the ensemble results</p> +</dd> +</dl> +</dd></dl> + <dl class="py function"> <dt id="binarycpython.utils.functions.get_arg_keys"> <code class="sig-prename descclassname">binarycpython.utils.functions.</code><code class="sig-name descname">get_arg_keys</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/binarycpython/utils/functions.html#get_arg_keys"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#binarycpython.utils.functions.get_arg_keys" title="Permalink to this definition">¶</a></dt> @@ -780,7 +790,7 @@ Does not work with lists as values</p> <dl class="py function"> <dt id="binarycpython.utils.functions.return_binary_c_version_info"> -<code class="sig-prename descclassname">binarycpython.utils.functions.</code><code class="sig-name descname">return_binary_c_version_info</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">parsed</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/binarycpython/utils/functions.html#return_binary_c_version_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#binarycpython.utils.functions.return_binary_c_version_info" title="Permalink to this definition">¶</a></dt> +<code class="sig-prename descclassname">binarycpython.utils.functions.</code><code class="sig-name descname">return_binary_c_version_info</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">parsed</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/binarycpython/utils/functions.html#return_binary_c_version_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#binarycpython.utils.functions.return_binary_c_version_info" title="Permalink to this definition">¶</a></dt> <dd><p>Function that returns the version information of binary_c. This function calls the function _binary_c_bindings.return_version_info()</p> <dl class="field-list simple"> @@ -975,9 +985,9 @@ of all the binary_c parameters.</p> provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index 96bac49dd..eae56de59 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -412,7 +412,7 @@ <td style="width: 33%; vertical-align: top;"><ul> <li><a href="distribution_functions.html#binarycpython.utils.distribution_functions.flatsections">flatsections() (in module binarycpython.utils.distribution_functions)</a> </li> - <li><a href="grid.html#binarycpython.utils.grid.Population.format_ensemble_results">format_ensemble_results() (binarycpython.utils.grid.Population method)</a> + <li><a href="functions.html#binarycpython.utils.functions.format_ensemble_results">format_ensemble_results() (in module binarycpython.utils.functions)</a> </li> <li><a href="custom_logging_functions.html#binarycpython.utils.custom_logging_functions.from_binary_c_config">from_binary_c_config() (in module binarycpython.utils.custom_logging_functions)</a> </li> @@ -760,9 +760,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/grid.html b/docs/build/html/grid.html index a62bb9964..35540c71a 100644 --- a/docs/build/html/grid.html +++ b/docs/build/html/grid.html @@ -241,7 +241,7 @@ then set the distribution functions</p> <dl class="py method"> <dt id="binarycpython.utils.grid.Population.add_grid_variable"> -<code class="sig-name descname">add_grid_variable</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">longname</span></em>, <em class="sig-param"><span class="n">valuerange</span></em>, <em class="sig-param"><span class="n">resolution</span></em>, <em class="sig-param"><span class="n">spacingfunc</span></em>, <em class="sig-param"><span class="n">probdist</span></em>, <em class="sig-param"><span class="n">dphasevol</span></em>, <em class="sig-param"><span class="n">parameter_name</span></em>, <em class="sig-param"><span class="n">gridtype</span><span class="o">=</span><span class="default_value">'edge'</span></em>, <em class="sig-param"><span class="n">branchpoint</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">precode</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">condition</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/binarycpython/utils/grid.html#Population.add_grid_variable"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#binarycpython.utils.grid.Population.add_grid_variable" title="Permalink to this definition">¶</a></dt> +<code class="sig-name descname">add_grid_variable</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">longname</span></em>, <em class="sig-param"><span class="n">valuerange</span></em>, <em class="sig-param"><span class="n">resolution</span></em>, <em class="sig-param"><span class="n">spacingfunc</span></em>, <em class="sig-param"><span class="n">probdist</span></em>, <em class="sig-param"><span class="n">dphasevol</span></em>, <em class="sig-param"><span class="n">parameter_name</span></em>, <em class="sig-param"><span class="n">gridtype</span><span class="o">=</span><span class="default_value">'centred'</span></em>, <em class="sig-param"><span class="n">branchpoint</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">precode</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">condition</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/binarycpython/utils/grid.html#Population.add_grid_variable"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#binarycpython.utils.grid.Population.add_grid_variable" title="Permalink to this definition">¶</a></dt> <dd><p>Function to add grid variables to the grid_options.</p> <p>The execution of the grid generation will be through a nested for loop. Each of the grid variables will get create a deeper for loop.</p> @@ -302,7 +302,7 @@ if you want to ignore any dphasevol calculations and set the value to 1 <p>condition = ‘self.grid_options[‘binary’]==1’</p> </p></li> <li><p><strong>gridtype</strong> (<code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>) – Method on how the value range is sampled. Can be either ‘edge’ (steps starting at -the lower edge of the value range) or ‘center’ +the lower edge of the value range) or ‘centred’ (steps starting at lower edge + 0.5 * stepsize).</p></li> </ul> </dd> @@ -398,16 +398,6 @@ simulation_<date+time>_settings.json will be created</p></li> </dl> </dd></dl> -<dl class="py method"> -<dt id="binarycpython.utils.grid.Population.format_ensemble_results"> -<code class="sig-name descname">format_ensemble_results</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">ensemble_dictionary</span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/binarycpython/utils/grid.html#Population.format_ensemble_results"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#binarycpython.utils.grid.Population.format_ensemble_results" title="Permalink to this definition">¶</a></dt> -<dd><p>Function to handle all the steps of formatting the ensemble output again.</p> -<dl class="simple"> -<dt>Input:</dt><dd><p>ensemble_dictionary: dictionary containing all the ensemble results</p> -</dd> -</dl> -</dd></dl> - <dl class="py method"> <dt id="binarycpython.utils.grid.Population.parse_cmdline"> <code class="sig-name descname">parse_cmdline</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/binarycpython/utils/grid.html#Population.parse_cmdline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#binarycpython.utils.grid.Population.parse_cmdline" title="Permalink to this definition">¶</a></dt> @@ -585,9 +575,9 @@ like m1,m2,sep, orb-per, ecc, probability etc.</p> provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/grid_options_defaults.html b/docs/build/html/grid_options_defaults.html index f0ca1669d..151d7f683 100644 --- a/docs/build/html/grid_options_defaults.html +++ b/docs/build/html/grid_options_defaults.html @@ -308,9 +308,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/grid_options_descriptions.html b/docs/build/html/grid_options_descriptions.html index 1c33c6433..65faf9f07 100644 --- a/docs/build/html/grid_options_descriptions.html +++ b/docs/build/html/grid_options_descriptions.html @@ -479,9 +479,9 @@ q extrapolation (below 0.15) method provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/hpc_functions.html b/docs/build/html/hpc_functions.html index 44e026619..eaeff7cea 100644 --- a/docs/build/html/hpc_functions.html +++ b/docs/build/html/hpc_functions.html @@ -239,9 +239,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 5274adf9b..66993241b 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -192,7 +192,7 @@ <p>Test coverage:</p> <a class="reference external image-reference" href="./badges/test_coverage.svg"><img alt="test coverage" src="_images/test_coverage.svg" /></a> <p>Binary population synthesis code that interfaces with binary_c. Based on a original work by Jeff Andrews (can be found in old_solution/ directory). Updated and extended for Python3 by David Hendriks, Robert Izzard.</p> -<p>The current release is version 0.4, make sure to use that version number when installing!</p> +<p>The current release is version 0.9.1, make sure to use that version number when installing!</p> <div class="section" id="requirements"> <h2>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h2> <p>To run this code you need to at least have installations of:</p> @@ -382,9 +382,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/modules.html b/docs/build/html/modules.html index 4451ca255..076e1dc8c 100644 --- a/docs/build/html/modules.html +++ b/docs/build/html/modules.html @@ -250,9 +250,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/notebook_api_functionality.html b/docs/build/html/notebook_api_functionality.html index 4f4782007..c4b2e364a 100644 --- a/docs/build/html/notebook_api_functionality.html +++ b/docs/build/html/notebook_api_functionality.html @@ -1347,9 +1347,9 @@ MAXIMUM MASS RATIO 0.0141 provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/notebook_custom_logging.html b/docs/build/html/notebook_custom_logging.html index 513172b9a..1c8c66116 100644 --- a/docs/build/html/notebook_custom_logging.html +++ b/docs/build/html/notebook_custom_logging.html @@ -902,9 +902,9 @@ EXAMPLE_SN 9.878236827680e+00 1.61349 8.38063 20 12 13 5 1 6.74037 4 provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/notebook_extra_features.html b/docs/build/html/notebook_extra_features.html index ee66bbf25..bd6f0c339 100644 --- a/docs/build/html/notebook_extra_features.html +++ b/docs/build/html/notebook_extra_features.html @@ -646,9 +646,9 @@ get_defaults(filter_values:bool=False) -> dict provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/notebook_individual_systems.html b/docs/build/html/notebook_individual_systems.html index 628bedab3..f2110d005 100644 --- a/docs/build/html/notebook_individual_systems.html +++ b/docs/build/html/notebook_individual_systems.html @@ -456,13 +456,24 @@ div.rendered_html tbody tr:hover { </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> +<span></span><span class="kn">import</span> <span class="nn">os</span> +<span class="kn">from</span> <span class="nn">binarycpython.utils.functions</span> <span class="kn">import</span> <span class="n">temp_dir</span> +<span class="n">TMP_DIR</span> <span class="o">=</span> <span class="n">temp_dir</span><span class="p">(</span><span class="s2">"notebooks"</span><span class="p">,</span> <span class="s2">"notebook_individual_systems"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> <span></span><span class="kn">from</span> <span class="nn">binarycpython.utils.run_system_wrapper</span> <span class="kn">import</span> <span class="n">run_system</span> <span class="c1"># help(run_system) # Uncomment to see the docstring</span> </pre></div> </div> </div> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[3]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> @@ -476,18 +487,19 @@ div.rendered_html tbody tr:hover { </div> <div class="output_area docutils container"> <div class="highlight"><pre> -SINGLE_STAR_LIFETIME 1 12462 +SINGLE_STAR_LIFETIME 1 12461.9 </pre></div></div> </div> <p>Lets try adding a log filename now:</p> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[3]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[4]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> -<span></span><span class="n">output</span> <span class="o">=</span> <span class="n">run_system</span><span class="p">(</span><span class="n">M_1</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">log_filename</span><span class="o">=</span><span class="s1">'/tmp/test_logfile.txt'</span><span class="p">)</span> -<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">'/tmp/test_logfile.txt'</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> +<span></span><span class="n">log_filename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">TMP_DIR</span><span class="p">,</span> <span class="s1">'test_logfile.txt'</span><span class="p">)</span> +<span class="n">output</span> <span class="o">=</span> <span class="n">run_system</span><span class="p">(</span><span class="n">M_1</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">log_filename</span><span class="o">=</span><span class="n">log_filename</span><span class="p">,</span> <span class="n">api_log_filename_prefix</span><span class="o">=</span><span class="n">TMP_DIR</span><span class="p">)</span> +<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">log_filename</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="nb">print</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">())</span> </pre></div> </div> @@ -497,23 +509,23 @@ SINGLE_STAR_LIFETIME 1 12462 </div> <div class="output_area docutils container"> <div class="highlight"><pre> - TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=67365 RANDOM_COUNT=0 - 0.0000 1.000 0.000 1 15 -1 -1.00 0.000 0.000 "INITIAL " - 11003.1302 1.000 0.000 2 15 -1 -1.00 0.000 0.000 "OFF_MS" - 11003.1302 1.000 0.000 2 15 -1 -1.00 0.000 0.000 "TYPE_CHNGE" - 11582.2424 1.000 0.000 3 15 -1 -1.00 0.000 0.000 "TYPE_CHNGE" - 12325.1085 0.817 0.000 4 15 -1 -1.00 0.000 0.000 "TYPE_CHNGE" - 12457.1300 0.783 0.000 5 15 -1 -1.00 0.000 0.000 "TYPE_CHNGE" - 12460.8955 0.774 0.000 6 15 -1 -1.00 0.000 0.000 "TYPE_CHNGE" - 12460.8955 0.774 0.000 6 15 -1 -1.00 0.000 0.000 "shrinkAGB" - 12461.9514 0.523 0.000 11 15 -1 -1.00 0.000 0.000 "TYPE_CHNGE" - 15000.0000 0.523 0.000 11 15 -1 -1.00 0.000 0.000 "MAX_TIME" + TIME M1 M2 K1 K2 SEP PER ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=17089 RANDOM_COUNT=0 + 0.0000 1.000 0.000 1 15 -1 -1 -1.00 0.000 0.000 "INITIAL " + 11003.1302 1.000 0.000 2 15 -1 -1 -1.00 0.000 0.000 "OFF_MS" + 11003.1302 1.000 0.000 2 15 -1 -1 -1.00 0.000 0.000 "TYPE_CHNGE" + 11582.2424 1.000 0.000 3 15 -1 -1 -1.00 0.000 0.000 "TYPE_CHNGE" + 12325.1085 0.817 0.000 4 15 -1 -1 -1.00 0.000 0.000 "TYPE_CHNGE" + 12457.1301 0.783 0.000 5 15 -1 -1 -1.00 0.000 0.000 "TYPE_CHNGE" + 12460.9983 0.716 0.000 6 15 -1 -1 -1.00 0.000 0.000 "TYPE_CHNGE" + 12460.9983 0.716 0.000 6 15 -1 -1 -1.00 0.000 0.000 "shrinkAGB" + 12461.9458 0.518 0.000 11 15 -1 -1 -1.00 0.000 0.000 "TYPE_CHNGE" + 15000.0000 0.518 0.000 11 15 -1 -1 -1.00 0.000 0.000 "MAX_TIME" </pre></div></div> </div> <p>To get more useful output we can include a custom_logging snippet (see notebook_custom_logging):</p> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[6]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[5]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> @@ -534,8 +546,8 @@ SINGLE_STAR_LIFETIME 1 12462 <span class="c1"># Generate entire shared lib code around logging lines</span> <span class="n">custom_logging_code</span> <span class="o">=</span> <span class="n">binary_c_log_code</span><span class="p">(</span><span class="n">custom_logging_print_statement</span><span class="p">)</span> -<span class="n">output</span> <span class="o">=</span> <span class="n">run_system</span><span class="p">(</span><span class="n">M_1</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">custom_logging_code</span><span class="o">=</span><span class="n">custom_logging_code</span><span class="p">)</span> -<span class="nb">print</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()[:</span><span class="mi">4</span><span class="p">])</span> +<span class="n">output</span> <span class="o">=</span> <span class="n">run_system</span><span class="p">(</span><span class="n">M_1</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">custom_logging_code</span><span class="o">=</span><span class="n">custom_logging_code</span><span class="p">,</span> <span class="n">api_log_filename_prefix</span><span class="o">=</span><span class="n">TMP_DIR</span><span class="p">)</span> +<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()[:</span><span class="mi">4</span><span class="p">]))</span> </pre></div> </div> </div> @@ -544,12 +556,15 @@ SINGLE_STAR_LIFETIME 1 12462 </div> <div class="output_area docutils container"> <div class="highlight"><pre> -['EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1', 'EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1', 'EXAMPLE_MASSLOSS 1.000000000000e-06 1 1 1', 'EXAMPLE_MASSLOSS 2.000000000000e-06 1 1 1'] +EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1 +EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1 +EXAMPLE_MASSLOSS 1.000000000000e-06 1 1 1 +EXAMPLE_MASSLOSS 2.000000000000e-06 1 1 1 </pre></div></div> </div> <p>Now we have some actual output, it is time to create a parse_function which parses the output. Adding a parse_function to the run_system will make run_system run the output of binary_c through the parse_function.</p> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[7]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[6]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> @@ -591,7 +606,7 @@ SINGLE_STAR_LIFETIME 1 12462 </div> <p>This output can now be turned into e.g. an Numpy array or Pandas dataframe (my favorite: makes querying the data very easy)</p> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[8]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[7]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> @@ -620,13 +635,13 @@ SINGLE_STAR_LIFETIME 1 12462 4 2e-06 1 1 1 5 3e-06 1 1 1 ... ... ... ... ... -1612 12461.8 0.577754 1 6 -1613 12462 0.522806 1 11 -1614 13462 0.522806 1 11 -1615 14462 0.522806 1 11 -1616 15000 0.522806 1 11 +1617 12461.8 0.546683 1 6 +1618 12461.9 0.517749 1 11 +1619 13461.9 0.517749 1 11 +1620 14461.9 0.517749 1 11 +1621 15000 0.517749 1 11 -[1616 rows x 4 columns] +[1621 rows x 4 columns] </pre></div></div> </div> </div> @@ -634,7 +649,7 @@ SINGLE_STAR_LIFETIME 1 12462 <h2>Single system via population object<a class="headerlink" href="#Single-system-via-population-object" title="Permalink to this headline">¶</a></h2> <p>When setting up your population object (see notebook_population), and configuring all the parameters, it is possible to run a single system using that same configuration. It will use the parse_function if set, and running a single system is a good method to test if everything works accordingly.</p> <div class="nbinput nblast docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[9]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[8]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> @@ -645,7 +660,7 @@ SINGLE_STAR_LIFETIME 1 12462 </div> <p>First, let’s try this without any custom logging or parsing functionality</p> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[9]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> @@ -654,7 +669,8 @@ SINGLE_STAR_LIFETIME 1 12462 <span class="c1"># Set some parameters</span> <span class="n">example_pop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> - <span class="n">verbosity</span><span class="o">=</span><span class="mi">1</span> + <span class="n">verbosity</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> + <span class="n">api_log_filename_prefix</span><span class="o">=</span><span class="n">TMP_DIR</span> <span class="p">)</span> <span class="n">example_pop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> <span class="n">M_1</span><span class="o">=</span><span class="mi">10</span> @@ -671,17 +687,18 @@ SINGLE_STAR_LIFETIME 1 12462 </div> <div class="output_area docutils container"> <div class="highlight"><pre> +adding: api_log_filename_prefix=/tmp/binary_c_python/notebooks/notebook_individual_systems to BSE_options adding: M_1=10 to BSE_options Creating and loading custom logging functionality -Running binary_c M_1 10 +Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems Cleaning up the custom logging stuff. type: single -SINGLE_STAR_LIFETIME 10 27.7358 +SINGLE_STAR_LIFETIME 10 28.4838 </pre></div></div> </div> <p>Now lets add some actual output with the custom logging</p> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[13]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> @@ -701,7 +718,7 @@ SINGLE_STAR_LIFETIME 10 27.7358 <span class="c1"># get output and print</span> <span class="n">output</span> <span class="o">=</span> <span class="n">example_pop</span><span class="o">.</span><span class="n">evolve_single</span><span class="p">()</span> -<span class="nb">print</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()[:</span><span class="mi">4</span><span class="p">])</span> +<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()[:</span><span class="mi">4</span><span class="p">]))</span> </pre></div> </div> </div> @@ -722,16 +739,19 @@ Printf("EXAMPLE_MASSLOSS %30.12e %g %g %g %d\n", ); to grid_options Creating and loading custom logging functionality -Running binary_c M_1 10 +Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems Cleaning up the custom logging stuff. type: single -Removed /tmp/binary_c_python/custom_logging/libcustom_logging_eac2dfc438a14e5a9f5be98b1b6b4294.so -['EXAMPLE_MASSLOSS 0.000000000000e+00 10 0 10 1', 'EXAMPLE_MASSLOSS 0.000000000000e+00 10 10 10 1', 'EXAMPLE_MASSLOSS 1.000000000000e-06 10 10 10 1', 'EXAMPLE_MASSLOSS 2.000000000000e-06 10 10 10 1'] +Removed /tmp/binary_c_python/custom_logging/libcustom_logging_8967553693ac4e11a49c42d4eef773e8.so +EXAMPLE_MASSLOSS 0.000000000000e+00 10 0 10 1 +EXAMPLE_MASSLOSS 0.000000000000e+00 10 10 10 1 +EXAMPLE_MASSLOSS 1.000000000000e-06 10 10 10 1 +EXAMPLE_MASSLOSS 2.000000000000e-06 10 10 10 1 </pre></div></div> </div> <p>Lastly we can add a parse_function to handle parsing the output again.</p> <p>Because the parse_function will now be part of the population object, it can access information of the object. We need to make a new parse function that is fit for an object: we the arguments now need to be (self, output). Returning the data is useful when running evolve_single(), but won’t be used in a population evolution.</p> <div class="nbinput nblast docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[14]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[11]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> @@ -781,13 +801,14 @@ Removed /tmp/binary_c_python/custom_logging/libcustom_logging_eac2dfc438a14e5a9f </div> </div> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[15]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[12]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> <span></span><span class="n">example_pop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> <span class="n">parse_function</span><span class="o">=</span><span class="n">object_parse_function</span><span class="p">,</span> - <span class="n">output_dir</span><span class="o">=</span><span class="s1">'/tmp/'</span> + <span class="n">output_dir</span><span class="o">=</span><span class="n">TMP_DIR</span><span class="p">,</span> + <span class="n">api_log_filename_prefix</span><span class="o">=</span><span class="n">TMP_DIR</span> <span class="p">)</span> <span class="n">output</span> <span class="o">=</span> <span class="n">example_pop</span><span class="o">.</span><span class="n">evolve_single</span><span class="p">()</span> <span class="nb">print</span><span class="p">(</span><span class="n">output</span><span class="p">[:</span><span class="mi">4</span><span class="p">])</span> @@ -805,12 +826,13 @@ Removed /tmp/binary_c_python/custom_logging/libcustom_logging_eac2dfc438a14e5a9f </div> <div class="output_area docutils container"> <div class="highlight"><pre> -adding: parse_function=<function object_parse_function at 0x7f9265091598> to grid_options -<<<< Warning: Key does not match previously known parameter: adding: output_dir=/tmp/ to custom_options >>>> +adding: parse_function=<function object_parse_function at 0x7fb4d41ebbf8> to grid_options +<<<< Warning: Key does not match previously known parameter: adding: output_dir=/tmp/binary_c_python/notebooks/notebook_individual_systems to custom_options >>>> +adding: api_log_filename_prefix=/tmp/binary_c_python/notebooks/notebook_individual_systems to BSE_options Creating and loading custom logging functionality -Running binary_c M_1 10 +Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems Cleaning up the custom logging stuff. type: single -Removed /tmp/binary_c_python/custom_logging/libcustom_logging_e9c2bec7f15541eb847fc6013e48e7ed.so +Removed /tmp/binary_c_python/custom_logging/libcustom_logging_5d7779e8190e4b79b10c7e6a44cb0e7e.so [['time', 'mass', 'initial_mass', 'stellar_type'], [0.0, 10.0, 0.0, 10.0, 1.0], [0.0, 10.0, 10.0, 10.0, 1.0], [1e-06, 10.0, 10.0, 10.0, 1.0]] dict_keys(['time', 'mass', 'initial_mass', 'stellar_type']) </pre></div></div> @@ -823,7 +845,7 @@ dict_keys(['time', 'mass', 'initial_mass', 'stellar_ <p>for more details on this API function see <code class="docutils literal notranslate"><span class="pre">notebook_api_functions</span></code></p> <p>First we must construct the argument string that we pass to binary_c</p> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[16]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[13]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> @@ -835,10 +857,11 @@ dict_keys(['time', 'mass', 'initial_mass', 'stellar_ <span class="n">eccentricity</span> <span class="o">=</span> <span class="mf">0.0</span> <span class="n">metallicity</span> <span class="o">=</span> <span class="mf">0.02</span> <span class="n">max_evolution_time</span> <span class="o">=</span> <span class="mi">15000</span> <span class="c1"># Myr. You need to include this argument.</span> +<span class="n">api_log_filename_prefix</span> <span class="o">=</span> <span class="n">TMP_DIR</span> <span class="c1"># Here we set up the argument string that is passed to the bindings</span> <span class="n">argstring</span> <span class="o">=</span> <span class="s2">"""</span> -<span class="s2">binary_c M_1 </span><span class="si">{M_1}</span><span class="s2"> M_2 </span><span class="si">{M_2}</span><span class="s2"> separation </span><span class="si">{separation}</span><span class="s2"> orbital_period </span><span class="si">{orbital_period}</span><span class="s2"> eccentricity </span><span class="si">{eccentricity}</span><span class="s2"> metallicity </span><span class="si">{metallicity}</span><span class="s2"> max_evolution_time </span><span class="si">{max_evolution_time}</span><span class="s2"></span> +<span class="s2">binary_c M_1 </span><span class="si">{M_1}</span><span class="s2"> M_2 </span><span class="si">{M_2}</span><span class="s2"> separation </span><span class="si">{separation}</span><span class="s2"> orbital_period </span><span class="si">{orbital_period}</span><span class="s2"> eccentricity </span><span class="si">{eccentricity}</span><span class="s2"> metallicity </span><span class="si">{metallicity}</span><span class="s2"> max_evolution_time </span><span class="si">{max_evolution_time}</span><span class="s2"> api_log_filename_prefix </span><span class="si">{api_log_filename_prefix}</span><span class="s2"></span> <span class="s2">"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span> <span class="n">M_1</span><span class="o">=</span><span class="n">M_1</span><span class="p">,</span> <span class="n">M_2</span><span class="o">=</span><span class="n">M_2</span><span class="p">,</span> @@ -847,6 +870,7 @@ dict_keys(['time', 'mass', 'initial_mass', 'stellar_ <span class="n">eccentricity</span><span class="o">=</span><span class="n">eccentricity</span><span class="p">,</span> <span class="n">metallicity</span><span class="o">=</span><span class="n">metallicity</span><span class="p">,</span> <span class="n">max_evolution_time</span><span class="o">=</span><span class="n">max_evolution_time</span><span class="p">,</span> + <span class="n">api_log_filename_prefix</span><span class="o">=</span><span class="n">TMP_DIR</span> <span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="kn">from</span> <span class="nn">binarycpython</span> <span class="kn">import</span> <span class="n">_binary_c_bindings</span> @@ -861,7 +885,7 @@ dict_keys(['time', 'mass', 'initial_mass', 'stellar_ </div> <div class="output_area docutils container"> <div class="highlight"><pre> -SINGLE_STAR_LIFETIME 15 14.2383 +SINGLE_STAR_LIFETIME 15 14.9947 </pre></div></div> </div> @@ -903,9 +927,9 @@ SINGLE_STAR_LIFETIME 15 14.2383 provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/notebook_individual_systems.ipynb b/docs/build/html/notebook_individual_systems.ipynb index 19c2d29fb..21d49016f 100644 --- a/docs/build/html/notebook_individual_systems.ipynb +++ b/docs/build/html/notebook_individual_systems.ipynb @@ -28,6 +28,18 @@ { "cell_type": "code", "execution_count": 1, + "id": "e32dcdee", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from binarycpython.utils.functions import temp_dir\n", + "TMP_DIR = temp_dir(\"notebooks\", \"notebook_individual_systems\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "id": "425efed3-d8e3-432d-829e-41d8ebe05162", "metadata": {}, "outputs": [], @@ -38,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "b2abab48-433d-4936-8434-14804c52c9f6", "metadata": {}, "outputs": [ @@ -46,7 +58,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "SINGLE_STAR_LIFETIME 1 12462\n", + "SINGLE_STAR_LIFETIME 1 12461.9\n", "\n" ] } @@ -66,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "029fc3f2-f09a-49af-a32b-248505738f2e", "metadata": {}, "outputs": [ @@ -74,24 +86,25 @@ "name": "stdout", "output_type": "stream", "text": [ - " TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=67365 RANDOM_COUNT=0\n", - " 0.0000 1.000 0.000 1 15 -1 -1.00 0.000 0.000 \"INITIAL \"\n", - " 11003.1302 1.000 0.000 2 15 -1 -1.00 0.000 0.000 \"OFF_MS\"\n", - " 11003.1302 1.000 0.000 2 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 11582.2424 1.000 0.000 3 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12325.1085 0.817 0.000 4 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12457.1300 0.783 0.000 5 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12460.8955 0.774 0.000 6 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12460.8955 0.774 0.000 6 15 -1 -1.00 0.000 0.000 \"shrinkAGB\"\n", - " 12461.9514 0.523 0.000 11 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 15000.0000 0.523 0.000 11 15 -1 -1.00 0.000 0.000 \"MAX_TIME\"\n", + " TIME M1 M2 K1 K2 SEP PER ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=17089 RANDOM_COUNT=0\n", + " 0.0000 1.000 0.000 1 15 -1 -1 -1.00 0.000 0.000 \"INITIAL \"\n", + " 11003.1302 1.000 0.000 2 15 -1 -1 -1.00 0.000 0.000 \"OFF_MS\"\n", + " 11003.1302 1.000 0.000 2 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 11582.2424 1.000 0.000 3 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12325.1085 0.817 0.000 4 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12457.1301 0.783 0.000 5 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12460.9983 0.716 0.000 6 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12460.9983 0.716 0.000 6 15 -1 -1 -1.00 0.000 0.000 \"shrinkAGB\"\n", + " 12461.9458 0.518 0.000 11 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 15000.0000 0.518 0.000 11 15 -1 -1 -1.00 0.000 0.000 \"MAX_TIME\"\n", "\n" ] } ], "source": [ - "output = run_system(M_1=1, log_filename='/tmp/test_logfile.txt')\n", - "with open('/tmp/test_logfile.txt', 'r') as f:\n", + "log_filename = os.path.join(TMP_DIR, 'test_logfile.txt')\n", + "output = run_system(M_1=1, log_filename=log_filename, api_log_filename_prefix=TMP_DIR)\n", + "with open(log_filename, 'r') as f:\n", " print(f.read())" ] }, @@ -105,7 +118,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "e6a23b55-ca42-440d-83ac-e76a24a83a67", "metadata": { "tags": [] @@ -115,7 +128,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "['EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1', 'EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1', 'EXAMPLE_MASSLOSS 1.000000000000e-06 1 1 1', 'EXAMPLE_MASSLOSS 2.000000000000e-06 1 1 1']\n" + "EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1\n", + "EXAMPLE_MASSLOSS 1.000000000000e-06 1 1 1\n", + "EXAMPLE_MASSLOSS 2.000000000000e-06 1 1 1\n" ] } ], @@ -137,8 +153,8 @@ "# Generate entire shared lib code around logging lines\n", "custom_logging_code = binary_c_log_code(custom_logging_print_statement)\n", "\n", - "output = run_system(M_1=1, custom_logging_code=custom_logging_code)\n", - "print(output.splitlines()[:4])" + "output = run_system(M_1=1, custom_logging_code=custom_logging_code, api_log_filename_prefix=TMP_DIR)\n", + "print('\\n'.join(output.splitlines()[:4]))" ] }, { @@ -151,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "3822721f-217a-495b-962e-d57137b9e290", "metadata": {}, "outputs": [ @@ -201,7 +217,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "654a07ed-2a88-46ff-9da0-b7759580f9f3", "metadata": {}, "outputs": [ @@ -216,13 +232,13 @@ "4 2e-06 1 1 1\n", "5 3e-06 1 1 1\n", "... ... ... ... ...\n", - "1612 12461.8 0.577754 1 6\n", - "1613 12462 0.522806 1 11\n", - "1614 13462 0.522806 1 11\n", - "1615 14462 0.522806 1 11\n", - "1616 15000 0.522806 1 11\n", + "1617 12461.8 0.546683 1 6\n", + "1618 12461.9 0.517749 1 11\n", + "1619 13461.9 0.517749 1 11\n", + "1620 14461.9 0.517749 1 11\n", + "1621 15000 0.517749 1 11\n", "\n", - "[1616 rows x 4 columns]\n" + "[1621 rows x 4 columns]\n" ] } ], @@ -252,7 +268,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "4a98ffca-1b72-4bb8-8df1-3bf3187d882f", "metadata": {}, "outputs": [], @@ -271,7 +287,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "bff1cc2e-6b32-4ba0-879f-879ffbabd223", "metadata": {}, "outputs": [ @@ -279,11 +295,12 @@ "name": "stdout", "output_type": "stream", "text": [ + "adding: api_log_filename_prefix=/tmp/binary_c_python/notebooks/notebook_individual_systems to BSE_options\n", "adding: M_1=10 to BSE_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "SINGLE_STAR_LIFETIME 10 27.7358\n", + "SINGLE_STAR_LIFETIME 10 28.4838\n", "\n" ] } @@ -294,7 +311,8 @@ "\n", "# Set some parameters\n", "example_pop.set(\n", - " verbosity=1\n", + " verbosity=1,\n", + " api_log_filename_prefix=TMP_DIR\n", ")\n", "example_pop.set(\n", " M_1=10\n", @@ -315,7 +333,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "id": "dd748bab-b57e-4129-8350-9ea11fa179d0", "metadata": { "scrolled": true, @@ -338,10 +356,13 @@ ");\n", " to grid_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_eac2dfc438a14e5a9f5be98b1b6b4294.so\n", - "['EXAMPLE_MASSLOSS 0.000000000000e+00 10 0 10 1', 'EXAMPLE_MASSLOSS 0.000000000000e+00 10 10 10 1', 'EXAMPLE_MASSLOSS 1.000000000000e-06 10 10 10 1', 'EXAMPLE_MASSLOSS 2.000000000000e-06 10 10 10 1']\n" + "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_8967553693ac4e11a49c42d4eef773e8.so\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 10 0 10 1\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 10 10 10 1\n", + "EXAMPLE_MASSLOSS 1.000000000000e-06 10 10 10 1\n", + "EXAMPLE_MASSLOSS 2.000000000000e-06 10 10 10 1\n" ] } ], @@ -362,7 +383,7 @@ "\n", "# get output and print\n", "output = example_pop.evolve_single()\n", - "print(output.splitlines()[:4])" + "print('\\n'.join(output.splitlines()[:4]))" ] }, { @@ -377,7 +398,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "id": "fec39154-cce6-438c-8c2c-509d76b00f34", "metadata": {}, "outputs": [], @@ -428,7 +449,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "id": "57347512-fd4a-434b-b13c-5e6dbd3ac415", "metadata": { "scrolled": true, @@ -439,12 +460,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "adding: parse_function=<function object_parse_function at 0x7f9265091598> to grid_options\n", - "<<<< Warning: Key does not match previously known parameter: adding: output_dir=/tmp/ to custom_options >>>>\n", + "adding: parse_function=<function object_parse_function at 0x7fb4d41ebbf8> to grid_options\n", + "<<<< Warning: Key does not match previously known parameter: adding: output_dir=/tmp/binary_c_python/notebooks/notebook_individual_systems to custom_options >>>>\n", + "adding: api_log_filename_prefix=/tmp/binary_c_python/notebooks/notebook_individual_systems to BSE_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_e9c2bec7f15541eb847fc6013e48e7ed.so\n", + "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_5d7779e8190e4b79b10c7e6a44cb0e7e.so\n", "[['time', 'mass', 'initial_mass', 'stellar_type'], [0.0, 10.0, 0.0, 10.0, 1.0], [0.0, 10.0, 10.0, 10.0, 1.0], [1e-06, 10.0, 10.0, 10.0, 1.0]]\n", "dict_keys(['time', 'mass', 'initial_mass', 'stellar_type'])\n" ] @@ -453,7 +475,8 @@ "source": [ "example_pop.set(\n", " parse_function=object_parse_function,\n", - " output_dir='/tmp/'\n", + " output_dir=TMP_DIR,\n", + " api_log_filename_prefix=TMP_DIR\n", ")\n", "output = example_pop.evolve_single()\n", "print(output[:4])\n", @@ -488,7 +511,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "id": "ec48125c-6bf5-48f4-9357-8261800b5d8b", "metadata": {}, "outputs": [ @@ -496,7 +519,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "SINGLE_STAR_LIFETIME 15 14.2383\n", + "SINGLE_STAR_LIFETIME 15 14.9947\n", "\n" ] } @@ -510,10 +533,11 @@ "eccentricity = 0.0\n", "metallicity = 0.02\n", "max_evolution_time = 15000 # Myr. You need to include this argument.\n", + "api_log_filename_prefix = TMP_DIR\n", "\n", "# Here we set up the argument string that is passed to the bindings\n", "argstring = \"\"\"\n", - "binary_c M_1 {M_1} M_2 {M_2} separation {separation} orbital_period {orbital_period} eccentricity {eccentricity} metallicity {metallicity} max_evolution_time {max_evolution_time}\n", + "binary_c M_1 {M_1} M_2 {M_2} separation {separation} orbital_period {orbital_period} eccentricity {eccentricity} metallicity {metallicity} max_evolution_time {max_evolution_time} api_log_filename_prefix {api_log_filename_prefix}\n", "\"\"\".format(\n", " M_1=M_1,\n", " M_2=M_2,\n", @@ -522,6 +546,7 @@ " eccentricity=eccentricity,\n", " metallicity=metallicity,\n", " max_evolution_time=max_evolution_time,\n", + " api_log_filename_prefix=TMP_DIR\n", ").strip()\n", "\n", "from binarycpython import _binary_c_bindings\n", diff --git a/docs/build/html/notebook_population.html b/docs/build/html/notebook_population.html index 7f15a864f..5336a7fdf 100644 --- a/docs/build/html/notebook_population.html +++ b/docs/build/html/notebook_population.html @@ -464,10 +464,6 @@ div.rendered_html tbody tr:hover { </pre></div> </div> </div> -<ul class="simple"> -<li><p>running ensemble</p></li> -<li><p>using M&S grid</p></li> -</ul> <div class="section" id="Setting-up-the-Population-object"> <h2>Setting up the Population object<a class="headerlink" href="#Setting-up-the-Population-object" title="Permalink to this headline">¶</a></h2> <p>To set up and configure the population object we need to make an object instance of the <code class="docutils literal notranslate"><span class="pre">Population</span></code> object, and add configuration via the <code class="docutils literal notranslate"><span class="pre">.set()</span></code> function.</p> @@ -679,7 +675,7 @@ add_grid_variable(name:str, longname:str, valuerange:Union[list, str], resolutio </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre> <span></span><span class="c1"># Add grid variables</span> -<span class="n">resolution</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"M_1"</span><span class="p">:</span> <span class="mi">20</span><span class="p">,</span> <span class="s2">"q"</span><span class="p">:</span> <span class="mi">20</span><span class="p">,</span> <span class="s2">"per"</span><span class="p">:</span> <span class="mi">40</span><span class="p">}</span> +<span class="n">resolution</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"M_1"</span><span class="p">:</span> <span class="mi">20</span><span class="p">}</span> <span class="c1"># Mass</span> <span class="n">example_pop</span><span class="o">.</span><span class="n">add_grid_variable</span><span class="p">(</span> @@ -1353,7 +1349,7 @@ time mass zams_mass probability radius stellar_type <span class="p">)</span> <span class="c1"># Add grid variables</span> -<span class="n">resolution</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"M_1"</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s2">"q"</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s2">"per"</span><span class="p">:</span> <span class="mi">5</span><span class="p">}</span> +<span class="n">resolution</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"M_1"</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="s2">"q"</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="s2">"per"</span><span class="p">:</span> <span class="mi">3</span><span class="p">}</span> <span class="c1"># Mass</span> <span class="n">example_pop</span><span class="o">.</span><span class="n">add_grid_variable</span><span class="p">(</span> @@ -1546,9 +1542,9 @@ time mass_1 zams_mass_1 mass_2 zams_mass_2 stellar_type_1 prev_stellar_type_1 st provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/notebook_population.ipynb b/docs/build/html/notebook_population.ipynb index 56f3b153c..b6a37baa8 100644 --- a/docs/build/html/notebook_population.ipynb +++ b/docs/build/html/notebook_population.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "id": "bbbaafbb-fd7d-4b73-a970-93506ba35d71", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "# Running populations with binarycpython\n", "This notebook will show you how to evolve a population of stars\n", @@ -27,15 +29,6 @@ "# help(Population) # Uncomment to see the public functions of this object" ] }, - { - "cell_type": "markdown", - "id": "a081ab23-7822-4971-aa82-991548534714", - "metadata": {}, - "source": [ - "- running ensemble\n", - "- using M&S grid" - ] - }, { "cell_type": "markdown", "id": "f268eff3-4e08-4f6b-8b59-f22dba4d2074", @@ -329,7 +322,7 @@ ], "source": [ "# Add grid variables\n", - "resolution = {\"M_1\": 20, \"q\": 20, \"per\": 40}\n", + "resolution = {\"M_1\": 20}\n", "\n", "# Mass\n", "example_pop.add_grid_variable(\n", @@ -1125,7 +1118,7 @@ ")\n", "\n", "# Add grid variables\n", - "resolution = {\"M_1\": 5, \"q\": 5, \"per\": 5}\n", + "resolution = {\"M_1\": 3, \"q\": 3, \"per\": 3}\n", "\n", "# Mass\n", "example_pop.add_grid_variable(\n", diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index 6013907ab4e83abd0bf59ec0cc3ccf216fa3ba69..8ac1e328102c8f00b236d77c3d126f5b16f1b475 100644 GIT binary patch delta 5370 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 YMSL%xfeeQMgqD8NH+#$ee|GJoxbG`+BLDyZ delta 5370 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 Y7ja%b0~sy@2tED8Z#K*Rf3j4h@>elt@&Et; diff --git a/docs/build/html/plot_functions.html b/docs/build/html/plot_functions.html index c279c2da4..119716b2c 100644 --- a/docs/build/html/plot_functions.html +++ b/docs/build/html/plot_functions.html @@ -473,9 +473,9 @@ This is not included in all the plotting routines.</p></li> provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/py-modindex.html b/docs/build/html/py-modindex.html index 943827786..cafb1a786 100644 --- a/docs/build/html/py-modindex.html +++ b/docs/build/html/py-modindex.html @@ -255,9 +255,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/readme_link.html b/docs/build/html/readme_link.html index d21f3c957..27d15ae84 100644 --- a/docs/build/html/readme_link.html +++ b/docs/build/html/readme_link.html @@ -206,7 +206,7 @@ <p>Test coverage:</p> <a class="reference external image-reference" href="./badges/test_coverage.svg"><img alt="test coverage" src="_images/test_coverage.svg" /></a> <p>Binary population synthesis code that interfaces with binary_c. Based on a original work by Jeff Andrews (can be found in old_solution/ directory). Updated and extended for Python3 by David Hendriks, Robert Izzard.</p> -<p>The current release is version 0.4, make sure to use that version number when installing!</p> +<p>The current release is version 0.9.1, make sure to use that version number when installing!</p> <div class="section" id="requirements"> <h2>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h2> <p>To run this code you need to at least have installations of:</p> @@ -334,9 +334,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/run_system_wrapper.html b/docs/build/html/run_system_wrapper.html index 0367bfe4b..98017ad46 100644 --- a/docs/build/html/run_system_wrapper.html +++ b/docs/build/html/run_system_wrapper.html @@ -283,9 +283,9 @@ and returns what the parse_function returns</p> provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/search.html b/docs/build/html/search.html index 5f2db9ccd..c131aef39 100644 --- a/docs/build/html/search.html +++ b/docs/build/html/search.html @@ -194,9 +194,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index c0a0e92d5..4d686578b 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["binary_c_parameters","custom_logging_functions","distribution_functions","example_notebooks","functions","grid","grid_options_defaults","grid_options_descriptions","hpc_functions","index","modules","notebook_api_functionality","notebook_custom_logging","notebook_extra_features","notebook_individual_systems","notebook_population","plot_functions","readme_link","run_system_wrapper","spacing_functions","stellar_types","useful_funcs"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,nbsphinx:3,sphinx:56},filenames:["binary_c_parameters.rst","custom_logging_functions.rst","distribution_functions.rst","example_notebooks.rst","functions.rst","grid.rst","grid_options_defaults.rst","grid_options_descriptions.rst","hpc_functions.rst","index.rst","modules.rst","notebook_api_functionality.ipynb","notebook_custom_logging.ipynb","notebook_extra_features.ipynb","notebook_individual_systems.ipynb","notebook_population.ipynb","plot_functions.rst","readme_link.rst","run_system_wrapper.rst","spacing_functions.rst","stellar_types.rst","useful_funcs.rst"],objects:{"binarycpython.utils":{custom_logging_functions:[1,0,0,"-"],distribution_functions:[2,0,0,"-"],functions:[4,0,0,"-"],grid:[5,0,0,"-"],grid_options_defaults:[6,0,0,"-"],hpc_functions:[8,0,0,"-"],plot_functions:[16,0,0,"-"],run_system_wrapper:[18,0,0,"-"],spacing_functions:[19,0,0,"-"],stellar_types:[20,0,0,"-"],useful_funcs:[21,0,0,"-"]},"binarycpython.utils.custom_logging_functions":{autogen_C_logging_code:[1,1,1,""],binary_c_log_code:[1,1,1,""],binary_c_write_log_code:[1,1,1,""],compile_shared_lib:[1,1,1,""],create_and_load_logging_function:[1,1,1,""],from_binary_c_config:[1,1,1,""],return_compilation_dict:[1,1,1,""]},"binarycpython.utils.distribution_functions":{"const":[2,1,1,""],Arenou2010_binary_fraction:[2,1,1,""],Izzard2012_period_distribution:[2,1,1,""],Kroupa2001:[2,1,1,""],Moe_di_Stefano_2017_multiplicity_fractions:[2,1,1,""],Moe_di_Stefano_2017_pdf:[2,1,1,""],build_q_table:[2,1,1,""],calc_P_integral:[2,1,1,""],calc_e_integral:[2,1,1,""],calc_total_probdens:[2,1,1,""],calculate_constants_three_part_powerlaw:[2,1,1,""],cosmic_SFH_madau_dickinson2014:[2,1,1,""],duquennoy1991:[2,1,1,""],fill_data:[2,1,1,""],flat:[2,1,1,""],flatsections:[2,1,1,""],gaussian:[2,1,1,""],gaussian_func:[2,1,1,""],gaussian_normalizing_const:[2,1,1,""],get_integration_constant_q:[2,1,1,""],get_max_multiplicity:[2,1,1,""],imf_chabrier2003:[2,1,1,""],imf_scalo1986:[2,1,1,""],imf_scalo1998:[2,1,1,""],imf_tinsley1980:[2,1,1,""],interpolate_in_mass_izzard2012:[2,1,1,""],ktg93:[2,1,1,""],linear_extrapolation_q:[2,1,1,""],merge_multiplicities:[2,1,1,""],normalize_dict:[2,1,1,""],number:[2,1,1,""],poisson:[2,1,1,""],powerlaw:[2,1,1,""],powerlaw_constant:[2,1,1,""],powerlaw_extrapolation_q:[2,1,1,""],prepare_dict:[2,1,1,""],raghavan2010_binary_fraction:[2,1,1,""],sana12:[2,1,1,""],set_opts:[2,1,1,""],three_part_powerlaw:[2,1,1,""]},"binarycpython.utils.functions":{BinaryCEncoder:[4,2,1,""],Capturing:[4,2,1,""],binarycDecoder:[4,2,1,""],binaryc_json_serializer:[4,1,1,""],call_binary_c_config:[4,1,1,""],catchtime:[4,2,1,""],convert_bytes:[4,1,1,""],count_keys_recursive:[4,1,1,""],create_arg_string:[4,1,1,""],create_hdf5:[4,1,1,""],custom_sort_dict:[4,1,1,""],example_parse_output:[4,1,1,""],extract_ensemble_json_from_string:[4,1,1,""],filter_arg_dict:[4,1,1,""],get_arg_keys:[4,1,1,""],get_defaults:[4,1,1,""],get_help:[4,1,1,""],get_help_all:[4,1,1,""],get_help_super:[4,1,1,""],get_moe_di_stefano_dataset:[4,1,1,""],get_size:[4,1,1,""],handle_ensemble_string_to_json:[4,1,1,""],imports:[4,1,1,""],inspect_dict:[4,1,1,""],is_capsule:[4,1,1,""],load_logfile:[4,1,1,""],make_build_text:[4,1,1,""],merge_dicts:[4,1,1,""],multiply_values_dict:[4,1,1,""],output_lines:[4,1,1,""],parse_binary_c_version_info:[4,1,1,""],recursive_change_key_to_float:[4,1,1,""],recursive_change_key_to_string:[4,1,1,""],remove_file:[4,1,1,""],return_binary_c_version_info:[4,1,1,""],subtract_dicts:[4,1,1,""],temp_dir:[4,1,1,""],update_dicts:[4,1,1,""],verbose_print:[4,1,1,""],write_binary_c_parameter_descriptions_to_rst_file:[4,1,1,""]},"binarycpython.utils.functions.BinaryCEncoder":{"default":[4,3,1,""]},"binarycpython.utils.functions.Capturing":{__enter__:[4,3,1,""],__exit__:[4,3,1,""]},"binarycpython.utils.functions.binarycDecoder":{decode:[4,3,1,""]},"binarycpython.utils.functions.catchtime":{__enter__:[4,3,1,""],__exit__:[4,3,1,""]},"binarycpython.utils.grid":{Population:[5,2,1,""]},"binarycpython.utils.grid.Population":{Moe_di_Stefano_2017:[5,3,1,""],add_grid_variable:[5,3,1,""],evolve:[5,3,1,""],evolve_single:[5,3,1,""],export_all_info:[5,3,1,""],format_ensemble_results:[5,3,1,""],parse_cmdline:[5,3,1,""],return_all_info:[5,3,1,""],return_binary_c_defaults:[5,3,1,""],return_binary_c_version_info:[5,3,1,""],return_population_settings:[5,3,1,""],set:[5,3,1,""],set_moe_di_stefano_settings:[5,3,1,""],write_binary_c_calls_to_file:[5,3,1,""]},"binarycpython.utils.grid_options_defaults":{grid_options_description_checker:[6,1,1,""],grid_options_help:[6,1,1,""],print_option_descriptions:[6,1,1,""],write_grid_options_to_rst_file:[6,1,1,""]},"binarycpython.utils.plot_functions":{color_by_index:[16,1,1,""],dummy:[16,1,1,""],parse_function_hr_diagram:[16,1,1,""],parse_function_masses:[16,1,1,""],parse_function_orbit:[16,1,1,""],plot_HR_diagram:[16,1,1,""],plot_masses:[16,1,1,""],plot_orbit:[16,1,1,""],plot_system:[16,1,1,""]},"binarycpython.utils.run_system_wrapper":{run_system:[18,1,1,""]},"binarycpython.utils.spacing_functions":{"const":[19,1,1,""]},"binarycpython.utils.useful_funcs":{calc_period_from_sep:[21,1,1,""],calc_sep_from_period:[21,1,1,""],maximum_mass_ratio_for_RLOF:[21,1,1,""],minimum_period_for_RLOF:[21,1,1,""],minimum_separation_for_RLOF:[21,1,1,""],ragb:[21,1,1,""],roche_lobe:[21,1,1,""],rzams:[21,1,1,""],zams_collision:[21,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"000":14,"0000":14,"000000000000e":14,"0001":[11,21],"000116989":15,"000121486":15,"000150087":15,"000154349":15,"000157195":15,"000172877":15,"000211219":15,"00028381":15,"000381347":15,"000512406":15,"000610573":15,"000627913":15,"000688507":15,"0007":2,"000925128":15,"001":[0,11],"00124307":15,"00167028":15,"00224431":15,"00498":15,"005444573822104362":15,"00632092":11,"006827156705e":15,"007109286263e":15,"0073157281034221516":15,"009829948023831718":15,"013208238029791246":15,"01344":15,"0141":11,"0144107":15,"015033359333e":15,"0154":15,"017435498578e":15,"027099358410e":15,"041660877905e":12,"041662558619e":12,"041662560111e":12,"041662564579e":12,"04459e":15,"047074050271e":15,"05150046619238191":15,"05150046619238192":15,"05193":15,"054":2,"055645404546e":15,"0587":15,"069363482023e":15,"069567332611e":15,"069626478211e":15,"069627290216e":15,"07011e":15,"074084349384e":15,"075844624794e":15,"07671":15,"0820":[0,11],"08519":15,"08624781646269201":15,"0862478164626921":15,"087296558990e":15,"08861e":15,"08873e":15,"08msun":[0,11],"0902":[0,11],"09216":15,"0x7f163859d0c0":11,"0x7f9265091598":14,"0x7ff3bdf79620":15,"100":[0,2,11],"1000":7,"10328":15,"10417":15,"10433":15,"10446":15,"104706358826e":15,"1048014407228":15,"1085":14,"108751340926e":15,"11003":14,"112":15,"11282":15,"115":2,"11582":14,"117519147635e":15,"119":15,"12303":15,"12325":14,"12457":14,"12460":14,"12461":14,"12462":14,"125":[0,11,15],"12500":0,"126828648362e":15,"12e":[1,12,14,15],"1300":14,"1302":14,"13462":14,"1357":12,"13876":15,"13e3":[0,11],"1403":2,"14057":12,"14059":12,"14462":14,"146421815741e":15,"150":15,"15000":[0,11,12,14,15],"1506841305680684":15,"15343":15,"1564":15,"15854":15,"15875":15,"15msun":2,"1612":14,"1613":14,"1614":14,"1615":14,"1616":14,"1628444120":15,"1628444121":15,"170425790780e":15,"170770422321e":15,"170770599495e":15,"170775828562e":15,"171086983243e":15,"171108213270e":15,"172196856333e":15,"17639":15,"18838":15,"18914e":15,"190":0,"19314":12,"194842917007e":15,"1951":[0,11],"1972":[0,11],"1975":[0,11],"197x":[0,11],"1980":2,"1983":21,"1986":[0,2,11],"1989":[0,11],"1991":2,"1993":[0,11],"1996":21,"1998":[0,2,11],"1999":[0,11],"1ckzg0p9":[9,17],"1e2":[0,11],"1e9":[0,11],"200":[0,11],"2000":[0,11],"2001":2,"2002":[0,11],"2003":[0,2,11],"2004":[0,11],"2005":[0,11],"2009":[0,11],"2010":[0,2,7,11],"2012":[0,2,11],"2013":[0,11],"2014":[0,2,11],"2015":[0,11],"2016":[0,11],"2017":[0,7,11,15],"2018":[0,1,11],"2019":[0,11],"2020":[0,11],"2021":0,"20210807":0,"20484":15,"206771867883e":15,"20787":15,"21331":15,"21473":15,"21673":15,"2174":15,"21805":15,"21878":15,"218786094847e":15,"21892":15,"21893":15,"222715508467e":15,"22723621650191106":15,"22759":15,"230407246199e":15,"232906623449e":15,"234709":15,"23604":15,"2383":14,"2424":14,"24954e":15,"25294":15,"2535":15,"257":21,"25msun":[0,11],"27442":15,"27563":15,"27565":15,"27572":15,"27804":15,"278384712062e":15,"281":21,"28672":15,"29402e":15,"29444":15,"294870923827e":15,"29678":15,"2969346":2,"29746":15,"2983275843337705":15,"29864":15,"29942":15,"29977":15,"29994":15,"2a7732d03e594ef4b5dfe9051b41d9c0":15,"2msun":[0,11],"3000":[0,11],"30145":15,"30149":15,"30197":15,"3032":15,"30337":15,"30504":15,"30e4":[0,11],"31004":15,"315554923168e":15,"3177":15,"32047":15,"3205":15,"32641e":15,"33062":15,"33079":15,"33524":12,"337250536639e":15,"34071e":15,"34281":15,"34903":15,"34922":15,"34937":15,"350021848285e":15,"35209":15,"3552":15,"364277535630e":15,"3678":15,"3680f3882c0a449c944462abffea2447":15,"36979":15,"36m":11,"38004":15,"38063":12,"3836":15,"38403":15,"38887e":15,"3933":15,"3msun":2,"4000":0,"4046":15,"40513":15,"40745":15,"40749":15,"40935":15,"41074":15,"41264":15,"41295e":15,"42148e":15,"42212":15,"42238":15,"42375":15,"42msun":[0,11],"43925":15,"439623364590e":15,"4424":15,"446":12,"449960890183e":15,"44msun":[0,11],"4500":11,"45000000080":15,"4530":[12,14],"458869865939e":15,"459153942631e":15,"45msun":[0,11],"4603":15,"47276":15,"47961":15,"47976e":15,"48488":15,"4e3":[0,11],"500":[0,11],"5102526289471614":15,"513216011269e":15,"522806":14,"523":14,"525":15,"527722847382e":15,"52963":15,"53113":15,"53174":15,"53175":15,"53176":15,"53177":15,"53183":15,"53184":15,"5357":15,"53631":15,"53922":15,"556479830908e":15,"55924":15,"561265707015991":15,"56776":15,"5689":15,"571858031651e":15,"575":15,"577754":14,"59052":15,"59499":15,"5msun":[0,11],"600000":0,"60808":15,"6101":0,"61349":12,"6246354579925537":15,"62486":15,"625":0,"62517":15,"64419":15,"65097":15,"653200958306e":15,"67365":14,"687368550125e":15,"68933e":15,"693213405973e":15,"6944":0,"6e1":2,"6e5":[0,11],"6msun":[0,11],"70319":15,"70668e":15,"71025":15,"71288":15,"7197":15,"721374713429e":15,"723547465714e":15,"723570798020e":15,"72498e":[12,15],"72638":15,"726405299909e":15,"730":[12,15],"73221":15,"733614170983e":15,"733794947644e":15,"733865371895e":15,"7358":[11,12,14],"73856":15,"74037":12,"7431":15,"750574783854e":15,"753837732894e":15,"7619":0,"763":2,"764340254985e":15,"765535914728e":15,"765996194699e":15,"76647":15,"766606588165e":15,"768305081494e":15,"773581245005e":12,"774":14,"7797017097473145":15,"78096":15,"78125":0,"783":14,"78384":15,"79411e":15,"795":2,"797342083485e":15,"802132608769e":15,"80457":15,"806014211040e":15,"806123543037e":15,"807147339697e":15,"80msol":2,"81391":15,"8162e":15,"817":14,"8178":15,"81906":15,"82242e":15,"84162":15,"853070305680e":15,"85486":15,"862081089332e":15,"8628":15,"862942347290e":15,"863377990313e":15,"867655467480e":15,"878236827680e":12,"881529045940e":15,"88566":15,"8955":14,"917420996633e":15,"92267":12,"922967341481e":15,"931266944719e":15,"93135e":15,"933751523833e":15,"94027":15,"941017702765e":15,"9514":14,"9545065608702976":15,"9713":15,"97286e":15,"974759306305e":15,"97823":15,"9791":15,"980988739731e":15,"9863e":15,"990017992944e":15,"99198":12,"99255":15,"99283":15,"99471":15,"boolean":[0,4,5,7,11,16,21],"break":[0,11],"case":[0,4,7,11,15],"catch":[4,7,14,15],"char":7,"class":[4,5],"const":[2,5,15,19],"default":[0,1,2,4,5,6,7,11,12,13,15,18],"export":[4,5,15],"float":[0,2,4,11,13,14,19,21],"function":[0,1,2,3,5,6,7,8,9,10,12,16,17,18,19,21],"import":[4,5,11,12,13,14,15],"int":[0,1,2,4,5,6,7,11,15,19,21],"long":[0,4,5,7,11,15,20],"new":[0,2,4,5,11,14,15],"null":[0,4,11,12,13],"paczy\u0144ski":[0,11],"public":[6,9,15],"return":[1,2,4,5,6,7,11,13,14,15,16,18,19,21],"short":[0,11,20],"super":[0,11],"switch":[0,11],"throw":[9,17],"true":[0,4,5,6,7,11,13,15,16],"try":[0,9,11,14,15,17],"void":12,"while":[0,11],Added:15,Adding:[3,14],And:[6,9,17,21],But:14,Doing:15,For:[0,4,9,11,12,14,16,17],Gas:[0,11],Its:7,NOT:[0,11,18],Not:7,One:[0,11],Pms:16,That:[0,11],The:[0,1,2,3,4,5,7,9,11,12,13,14,15,16,17,18],Then:[4,9,17],There:[2,5,6,7,11,12,13,14,15,16],These:[4,7,11,15,16],Use:[0,5,11,15],Used:[0,7,11,16],Useful:[0,5,6,11,15],Uses:[0,11,19],Using:[3,9],Was:[0,11],Will:[0,4,5,11,15,18],With:6,__arg_begin:11,__attribute__:12,__enter__:4,__exit__:4,_actually_evolve_system:7,_binary_c_bind:[4,11,12,14,21],_binary_c_config_execut:7,_binary_c_dir:7,_binary_c_execut:7,_binary_c_shared_librari:7,_calculate_multiplicity_fract:15,_commandline_input:7,_count:7,_custom_logging_shared_library_fil:7,_end_time_evolut:7,_errors_exceed:7,_errors_found:7,_evolution_type_opt:7,_failed_count:7,_failed_prob:7,_failed_systems_error_cod:7,_generate_grid_cod:7,_grid_vari:7,_loaded_ms_data:7,_main_pid:7,_population_id:7,_probtot:7,_process_run_population_grid:7,_repeat:7,_set:5,_set_ms_grid:7,_start_time_evolut:7,_store_memaddr:7,_system_gener:7,_total_mass_run:7,_total_probability_weighted_mass_run:7,_total_starcount:7,_zero_prob_stars_skip:7,abat:[0,11],abbrevi:20,abl:11,about:[3,4,5,6,15,21],abov:[0,2,4,5,11,12,14,15],abridg:[11,12],absolut:[0,11],abund:[0,11],acceler:[0,11],accept:[4,11,15],access:[2,7,12,14,15],accord:[0,2,11],accordingli:[14,15],account:[0,7,11],accret:[0,11],accretion_limit_dynamical_multipli:[0,11],accretion_limit_eddington_lmms_multipli:[0,11],accretion_limit_eddington_steady_multipli:[0,11],accretion_limit_eddington_wd_to_remnant_multipli:[0,11],accretion_limit_thermal_multipli:[0,11],accretor:[0,11,21],act:[0,7,11,15],activ:[0,9,11,17],actual:[0,4,5,7,9,11,12,14,15,16,17],adam:[0,11],adapt:[0,11],add:[2,4,5,7,12,14,15,16,19,21],add_grid_vari:[5,15],added:[4,14],adding:[14,15],address:[1,7,11,12,21],admittedli:16,adress:[11,12,21],advis:12,affect:[0,11],after:[0,5,7,11,12,15],ag89:[0,11],again:[4,5,7,9,13,14,17],against:16,agb:[0,11],agb_3dup_algorithm:[0,11],agb_core_algorithm:[0,11],agb_core_algorithm_default:0,agb_core_algorithm_hurlei:0,agb_core_algorithm_karaka:0,agb_luminosity_algorithm:[0,11],agb_luminosity_algorithm_default:0,agb_luminosity_algorithm_hurlei:0,agb_luminosity_algorithm_karaka:0,agb_radius_algorithm:[0,11],agb_radius_algorithm_default:0,agb_radius_algorithm_hurlei:0,agb_radius_algorithm_karaka:0,agb_third_dredge_up_algorithm_default:0,agb_third_dredge_up_algorithm_hurlei:0,agb_third_dredge_up_algorithm_karaka:0,agb_third_dredge_up_algorithm_stancliff:0,age:[0,11],aging:[0,11],albedo:[0,11],algorithm:[9,11],algothim:[0,11],all:[0,1,2,4,5,6,7,9,10,11,13,14,15,16,17,18],all_info:5,alloc:11,allow:[0,2,4,7,11,12],allow_nan:4,along:[0,6,7],alpha:[0,11],alpha_c:[0,11],alphacb:[0,11],alreadi:[5,15],also:[0,3,4,5,6,9,11,12,15,17,21],altern:[0,7,11],alwai:[0,2,7,11],amanda:[0,11],amax:2,amin:2,amount:[0,4,5,6,7,11,15,19],amp:11,amt_cor:[7,15],analys:18,analyt:[5,15],analyz:14,andrew:[9,17],andronov:[0,11],angelou_lithium_cheb_decay_tim:[0,11],angelou_lithium_cheb_massfrac:[0,11],angelou_lithium_cheb_tim:[0,11],angelou_lithium_decay_funct:[0,11],angelou_lithium_decay_tim:[0,11],angelou_lithium_eagb_decay_tim:[0,11],angelou_lithium_eagb_massfrac:[0,11],angelou_lithium_eagb_tim:[0,11],angelou_lithium_gb_decay_tim:[0,11],angelou_lithium_gb_massfrac:[0,11],angelou_lithium_gb_tim:[0,11],angelou_lithium_hg_decay_tim:[0,11],angelou_lithium_hg_massfrac:[0,11],angelou_lithium_hg_tim:[0,11],angelou_lithium_lmms_decay_tim:[0,11],angelou_lithium_lmms_massfrac:[0,11],angelou_lithium_lmms_tim:[0,11],angelou_lithium_ms_decay_tim:[0,11],angelou_lithium_ms_massfrac:[0,11],angelou_lithium_ms_tim:[0,11],angelou_lithium_tpagb_decay_tim:[0,11],angelou_lithium_tpagb_massfrac:[0,11],angelou_lithium_tpagb_tim:[0,11],angelou_lithium_vrot_trigg:[0,11],angelou_lithium_vrotfrac_trigg:[0,11],angular:[0,11,16],ani:[0,2,4,5,9,11,14,15,17],anoth:[0,11],ansi:[0,11],anyth:[0,7,11,15],anywai:[5,14,15],anywher:[5,15],api:[0,3,4,9],api_log_filename_prefix:[0,11],append:[1,4,14],appli:[0,11],appropri:[0,7,11],approxim:[0,11],aren:[2,7],arenou2010_binary_fract:2,arg:[2,4,11,13,15,16],arg_dict:4,argopt:[0,11],argpair:[4,13],argstr:[11,12,14],argument:[0,2,4,5,7,11,14,15,18],argument_of_periastron:[0,11],argument_of_periastron_quadrupl:[0,11],argument_of_periastron_tripl:[0,11],around:[0,11,12,14],arrai:[2,4,7,14],artifici:[0,11],artificial_accretion_end_tim:[0,11],artificial_accretion_ignor:0,artificial_accretion_start_tim:[0,11],artificial_angular_momentum_accretion_r:[0,11],artificial_mass_accretion_r:[0,11],artificial_orbital_angular_momentum_accretion_r:[0,11],arxiv:[0,2,11],ask:[0,11,21],asplund:[0,11],assign:[5,15],assum:[0,11,16],ast871:[0,11],astronomi:[0,11],astropi:[9,16,17],atom:4,attempt:[4,5],aug:0,auto:[1,10],autogen_c_logging_cod:[1,12],automat:[0,1,6,9,11,12,17],avaibl:[9,17],avail:[0,4,7,11,12,15,16],avoid:11,awai:[0,11],axi:[0,11,16],b_1:[0,11],b_2:[0,11],b_3:[0,11],b_4:[0,11],b_inclination1:[0,11],b_inclination2:[0,11],b_inclination3:[0,11],b_inclination4:[0,11],back:[0,4,11],backward:[0,11],bagb:[0,11],barn:[0,11],base:[0,2,4,5,9,11,15,16,17,21],base_filenam:[5,15],basic:[5,15],batchmod:[0,11],beasor:[0,11],becaus:[0,2,5,7,9,11,14,17],becom:[0,1,2,4,11,12],been:[0,5,7,11,13],befor:[0,5,7,9,11,15,17],behaviour:[4,15,18],belczynski:[0,11],below:[0,3,7,11,12,15],berro:[0,11],bertolami:[0,11],best:[5,7,9,17],beta:[0,11],beta_reverse_nova:[0,11],beta_reverse_novae_geometri:0,better:[0,4,5,11,15],between:[0,2,11,19],bewar:[5,15],bh_belczynski:0,bh_fryer12_delai:0,bh_fryer12_rapid:0,bh_hurley2002:0,bh_prescript:[0,11],bh_spera2015:0,big:[0,7,11],biinari:15,bin:[0,9,11,17],binari:[2,5,7,9,11,14,15,16,17,21],binary_c2:[9,17],binary_c:[1,2,3,4,5,7,12,14,15,16,18],binary_c_api_funct:12,binary_c_cal:[5,15],binary_c_default:15,binary_c_grid_2a7732d03e594ef4b5dfe9051b41d9c0:15,binary_c_inline_config:1,binary_c_log_cod:[1,12,14],binary_c_macro:[0,11],binary_c_output:4,binary_c_paramet:[0,11,15],binary_c_python:[4,5,11,14,15],binary_c_task_:[0,11],binary_c_write_log_cod:1,binary_grid:[0,11],binary_star:21,binaryc:[1,4,13,18],binaryc_config:1,binaryc_json_seri:4,binarycdecod:4,binarycencod:4,binarycpython3:11,binarycpython:[1,2,3,4,5,6,9,16,17,18,19,21],binarygrid:15,bind:[0,11,12,14],birth:[0,11],bit:2,bivari:[0,11],black:[0,11],black_hol:0,bloecker:[0,11],blog:1,boltzman:16,boltzmann:[0,11],bondi:[0,11],bondi_hoyle_accretion_factor:[0,11],bool:[4,5,6,13,15,16],born:[0,11],bosswissam:4,both:[0,4,11,15],bottom:[0,11,15],bound:[2,19],boundari:2,brake:[0,11],branch:[0,4,11],branch_david:0,branchpoint:[5,15],breakup:[0,11],broken:[0,11],bse:[0,2,11,12,15],bse_opt:[5,14,15],bsf:[0,11],buffer:[0,11],build:[0,1,3,4,11],build_q_tabl:2,built:[0,1,4,9,13,17],burn:[0,11],busso:[0,11],bye:[0,11],c13_eff:[0,11],c5232be5c:0,c_auto_log:7,c_log:0,c_logging_cod:[7,12,14,15],calc_e_integr:2,calc_p_integr:2,calc_period_from_sep:21,calc_sep_from_period:[15,21],calc_total_probden:2,calcul:[0,2,4,5,7,11,15,21],calculate_constants_three_part_powerlaw:2,call:[0,1,4,5,7,11,13,14,15,16,18],call_binary_c_config:4,calls_filenam:15,can:[0,1,2,4,5,7,9,11,12,13,14,15,16,17,18],cannot:[5,12],canon:7,cap:[0,11],capsul:[1,4,11],captur:[0,4,11],carbon:[0,11],carbon_oxygen_white_dwarf:0,carlo:[0,7,11],carrasco:[0,11],carri:[0,11],cast:[4,13],catchtim:4,categor:11,categori:[11,15],categoris:4,caught:[4,14],caus:21,cbdisc:[0,11],cbdisc_albedo:[0,11],cbdisc_alpha:[0,11],cbdisc_eccentricity_pumping_dermin:0,cbdisc_eccentricity_pumping_method:[0,11],cbdisc_eccentricity_pumping_non:0,cbdisc_end_evolution_after_disc:[0,11],cbdisc_fail_ring_inside_separ:[0,11],cbdisc_gamma:[0,11],cbdisc_init_djdm:[0,11],cbdisc_init_dm:[0,11],cbdisc_inner_edge_strip:[0,11],cbdisc_inner_edge_stripping_timescal:[0,11],cbdisc_kappa:[0,11],cbdisc_mass_loss_constant_r:[0,11],cbdisc_mass_loss_fuv_multipli:[0,11],cbdisc_mass_loss_inner_l2_cross_multipli:[0,11],cbdisc_mass_loss_inner_viscous_accretion_method:[0,11],cbdisc_mass_loss_inner_viscous_accretion_method_equ:0,cbdisc_mass_loss_inner_viscous_accretion_method_gerosa_2015:0,cbdisc_mass_loss_inner_viscous_accretion_method_non:0,cbdisc_mass_loss_inner_viscous_accretion_method_young_clarke_2015:0,cbdisc_mass_loss_inner_viscous_angular_momentum_multipli:[0,11],cbdisc_mass_loss_inner_viscous_multipli:[0,11],cbdisc_mass_loss_ism_pressur:[0,11],cbdisc_mass_loss_ism_ram_pressure_multipli:[0,11],cbdisc_mass_loss_xray_multipli:[0,11],cbdisc_max_lifetim:[0,11],cbdisc_minimum_evaporation_timescal:[0,11],cbdisc_minimum_fr:[0,11],cbdisc_minimum_luminos:[0,11],cbdisc_minimum_mass:[0,11],cbdisc_no_wind_if_cbdisc:[0,11],cbdisc_outer_edge_strip:[0,11],cbdisc_outer_edge_stripping_timescal:[0,11],cbdisc_resonance_damp:[0,11],cbdisc_resonance_multipli:[0,11],cbdisc_torquef:[0,11],cbdisc_viscous_l2_coupl:[0,11],cbdisc_viscous_photoevaporative_coupl:[0,11],cbdisc_viscous_photoevaporative_coupling_inst:[0,11],cbdisc_viscous_photoevaporative_coupling_non:[0,11],cbdisc_viscous_photoevaporative_coupling_visc:[0,11],cee:[0,11],cell:[11,15],cemp:[0,11],cemp_cfe_minimum:[0,11],center:[5,15],central_object:[0,11],certain:[7,9,17],cf_amanda_log:[0,11],cflag:[9,17],chabrier:2,chandrasekhar:[0,11],chandrasekhar_mass:[0,11],chang:[0,1,2,4,5,6,7,9,11,12,15,17],chapter:[0,7,10],cheb:[0,11],check:[0,2,4,5,6,11,15,21],check_circular:4,chemic:[0,11],chen:[0,11],child:4,choic:[0,2,11,16],choos:[0,11,12,16],chose:14,chosen:[5,15],circular:[0,11],circumbinari:[0,11],circumstanti:[0,11],claei:[0,11],clark:[0,11],clean:[1,5,9,14,17],clean_up_custom_logging_fil:5,clear:4,clock:4,clone:[9,17],close:[0,11],cloud:[0,11],cls:4,cluster:8,cmdline:5,code:[0,1,5,6,9,11,12,14,15,16,17,18],collaps:[0,11],collapsar:[0,11],collect:21,collid:21,color:16,color_by_index:16,colour:[0,11],colour_log:[0,11],column:[14,15,16],column_nam:14,com:[1,4],combin:[1,4,5,7,12],combine_ensemble_with_thread_join:7,come:[2,9,17,19],comenv_bs:0,comenv_disc_angmom_fract:[0,11],comenv_disc_mass_fract:[0,11],comenv_ejection_spin_method:[0,11],comenv_ejection_spin_method_do_noth:[0,11],comenv_ejection_spin_method_sychron:[0,11],comenv_ejection_spin_method_synchron:0,comenv_merger_spin_method:[0,11],comenv_merger_spin_method_breakup:0,comenv_merger_spin_method_conserve_angmom:[0,11],comenv_merger_spin_method_conserve_omega:[0,11],comenv_merger_spin_method_specif:[0,11],comenv_ms_accret:[0,11],comenv_ms_accretion_fract:[0,11],comenv_ms_accretion_mass:[0,11],comenv_nandez2016:0,comenv_nelemans_tout:0,comenv_ns_accret:[0,11],comenv_ns_accretion_fract:[0,11],comenv_ns_accretion_mass:[0,11],comenv_post_eccentr:[0,11],comenv_prescript:[0,11],comenv_splitmass:[0,11],comenv_undef:0,command:[0,1,5,7,9,11,15,17],commandlin:15,comment:15,commit:4,common:[0,11,12,14,15],compact:15,companion:[0,11],compar:[0,7,11,15],compil:[1,9,12,15,17],compile_shared_lib:1,complet:15,complex:[5,7,12,15,16],compon:[4,16],comput:[0,8,11],condit:[5,12,15],condor:[5,7,8],condor_grid:5,config:[1,4,7,9,17],config_fil:1,configur:[2,5,14,15],conjunct:13,conserv:[0,11],consid:[0,1,2,4,5,7,11,16],constant:[0,2,11,16],construct:[0,1,11,14,15],contain:[0,1,2,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20],content:[3,4,9,11],context:4,continu:[5,15],control:[0,11,15],convect:[0,11],converg:[0,11],convert:[2,4,5],convert_byt:4,cool:[0,11],copi:[0,5,11,21],core:[0,5,7,11,15,16],core_co:12,core_h:12,core_helium_burn:0,core_mass:[0,11,12],correct:[2,5,14,16,21],correctli:[9,14,16,17],correspond:16,corretor:[0,11],cosmic:2,cosmic_sfh_madau_dickinson2014:2,could:[0,4,11,15],count:[4,7],count_keys_recurs:4,counter:7,coupl:[0,11],cours:16,cover:13,coverag:[9,17],cowd:[0,11],cpu:[0,11],cpython:11,crap_paramet:[0,11],creat:[2,4,5,12,14,15],create_and_load_logging_funct:[1,12],create_arg_str:4,create_hdf5:4,creation:11,critic:[0,11],cross:[0,11],ctype:1,cuntz:[0,11],current:[0,4,9,11,12,17],custom:[0,1,3,4,5,7,9,11,14,15,16,18],custom_log:[5,7,14],custom_logging_cod:[1,12,14,18],custom_logging_func_memaddr:[7,11,12],custom_logging_funct:[7,9,10,12,14,15],custom_logging_info:5,custom_logging_memaddr:12,custom_logging_print_stat:14,custom_logging_stat:15,custom_opt:[5,14,15],custom_output_funct:12,custom_sort_dict:4,custom_tmp_dir:1,customis:16,cvode:[0,11],d20a4c74d20a43b881c0c9e5def5f76c:15,dai:[0,2,11,12,14,15,21],damp:[0,11],dat:[0,4,15],data:[0,4,5,7,11,14,15,18],data_dict:2,data_dir:[4,5,7,15],datadir:[5,15],datafram:[14,16],dataset:[4,15],date:5,david:[0,9,11,17],david_logging_funct:[0,11],dd7:[0,11],deactiv:[0,11],deal:[4,14],death:[0,11],debug:[0,7,11,15],decai:[0,11],decid:[0,4,11,12],decod:4,decreas:[0,11],deeper:[5,15],def:[14,15],default_to_metal:[0,11],defaultdict:4,defer:[0,11],defin:[0,1,2,5,11,16],definit:[1,21],degener:[0,11],degre:[0,11],delta_mcmin:[0,11],den:[0,11],densiti:2,depend:[0,2,9,11,16,17],deprec:[0,11],dermin:[0,11],describ:[0,2,7,11],descript:[0,2,4,7,9,10,11,13],design:[5,16],desir:[0,11],destruct:[5,15],detail:[0,4,11,14],detect:[0,11],determin:[0,5,11,12,15,21],deton:[0,11],dev:[0,11],develop:1,deviat:2,dewi:[0,11],dex:[0,11],diagnost:7,diagram:[0,11,16],dickonson:2,dict2:4,dict:[1,2,4,5,6,13,14,15,20],dict_1:4,dict_2:4,dict_kei:[13,14],dictionari:[1,2,3,4,5,6,7,15,16,20],did:[4,9,17],differ:[0,4,5,9,11,15,16,17],dimmer:[0,11],dir:[9,17],direct:[0,5,11],directli:[4,7,14],director:7,directori:[0,3,4,5,7,9,11,15,17],disabl:[0,11,15],disable_debug:[0,11],disable_end_log:[0,11],disable_ev:[0,11],disc:[0,11],disc_legacy_log:[0,11],disc_log2d:[0,11],disc_log:[0,11],disc_log_directori:[0,11],disc_log_dt:[0,11],disc_log_level_non:0,disc_log_level_norm:0,disc_log_level_normal_first_disc_onli:0,disc_log_level_subtimestep:0,disc_log_level_subtimestep_first_disc_onli:0,disc_n_monte_carlo_guess:[0,11],disc_stripping_timescale_infinit:0,disc_stripping_timescale_inst:0,disc_stripping_timescale_orbit:0,disc_stripping_timescale_visc:0,disc_timestep_factor:[0,11],discret:15,discs_circumbinary_from_comenv:[0,11],discs_circumbinary_from_wind:[0,11],disk:[0,5,11],dispers:[0,11],displai:[0,11],dist:[9,17],distefano:2,distribut:[0,2,5,8,11,15],distribution_funct:[9,10,15],divid:8,dlnm1:[5,15],dlog10per:15,dlogp:2,do_dry_run:7,doc:[4,6,9,15,17],doc_fetch:2,docstr:[9,14,16,17],document:[4,6,7,10,15],doe:[0,2,4,5,7,11,12,13,14,15,21],doesn:[5,7],doesnt:6,doing:[0,1,5,6,9,11,17],don:[2,4,7],done:[0,4,5,9,11,15,17],donor:[0,11,21],donor_limit_dynamical_multipli:[0,11],donor_limit_envelope_multipli:[0,11],donor_limit_thermal_multipli:[0,11],donor_rate_algorithm_bs:0,donor_rate_algorithm_claeys2014:0,dont:11,doubl:[12,15],down:15,dphasevol:[5,15],dr2:[0,11],dr3:[0,11],drai:[0,11],dredg:[0,11],drop:14,dry:7,dstep:2,dt_limit:13,dtfac:[0,11],dtlimit:4,dtm:[1,12,15],due:[9,17],dummi:[2,16],dump:[0,4,11,14],dumpvers:[0,11],duquennoi:2,duquennoy1991:2,dure:[0,11],dust:[0,11],dwarf:[0,11],dynam:[0,11],e2_hurley_2002:0,e2_izzard:0,e2_mint:0,e2_prescript:[0,11],each:[0,2,4,5,7,11,15],eagb:[0,11],eagb_wind_beasor_etal_2020:0,eagb_wind_bs:0,eagb_wind_goldman_etal_2017:0,eagbwind:[0,11],eagbwindfac:[0,11],earli:[0,11],early_asymptotic_giant_branch:0,easi:[4,14],easier:[4,15],ecc2:2,ecc3:2,ecc:[2,5,14,15],eccentr:[0,2,11,12,14,15,16,21],eccentric_rlof_model:[0,11],eccentricity_quadrupl:[0,11],eccentricity_tripl:[0,11],echo:[0,11],eddington:[0,11],edg:[0,5,11,15],edit:12,edu:[0,11],effect:[0,2,7,11,12],effective_metal:[0,11],effici:[0,11],egg:[9,17],eggleton:[0,11,21],either:[0,4,5,7,9,11,15,17,18],eject:[0,11],elabor:12,eld:[0,11],eldridg:[0,11],electon:[0,11],electron:[0,11],element:[0,1,4,7,11,13,16],els:12,email:4,emp:[0,11],emp_feh_maximum:[0,11],emp_logg_maximum:[0,11],emp_minimum_ag:[0,11],empti:[4,6,14],enabl:[0,11],encod:4,encount:7,end:[0,2,4,7,11],end_index:2,end_timestamp:15,energi:[0,11],enhanc:[0,11],enlarg:[0,11],enough:2,ensembl:[0,4,5,7,11,13,15],ensemble_def:[0,11],ensemble_dictionari:5,ensemble_dt:[0,11],ensemble_factor_in_probability_weighted_mass:7,ensemble_filter_:[0,11],ensemble_filters_off:[0,11],ensemble_json:4,ensemble_legacy_ensembl:[0,11],ensemble_list:5,ensemble_logdt:[0,11],ensemble_logtim:[0,11],ensemble_macro:[0,11],ensemble_output_:7,ensemble_startlogtim:[0,11],ensure_ascii:4,enter:[0,9,11,17],enthalpi:[0,11],entir:[12,14],entri:[4,5],env:[9,11,16,17],envelop:[0,11],equal:[4,15],equat:[0,11],equation_of_state_algorithm:[0,11],equation_of_state_paczynski:0,equatori:[0,11],equival:7,errno:[9,17],error:[0,4,7,9,11,15,17],errors_exceed:15,errors_found:15,esa:2,escap:[0,11],escape_fract:[0,11],escape_veloc:[0,11],eta:[0,11],etal:[0,11],etc:[0,4,5,8,9,11,14,15,16,17,18],euler:[0,11],evalu:[2,5,15,21],evan:[0,11],evapor:[0,11],evaporate_escaped_orbiting_object:[0,11],even:13,event:[0,11],everi:[0,9,11,17],everyth:[5,7,14,15],everytim:[9,17],evid:[0,11],evolut:[0,1,5,7,11,14,15,16],evolution_split:[0,11],evolution_splitting_maxdepth:[0,11],evolution_splitting_sn_eccentricity_threshold:[0,11],evolution_splitting_sn_n:[0,11],evolution_typ:[7,15],evolutionari:[0,11,14],evolv:[0,3,5,7,11,12],evolve_popul:15,evolve_singl:[5,12,14],exact:[1,4,7],exactli:[0,11],exampl:[1,2,4,5,14,18],example_above_m:12,example_compact_object:15,example_dco:15,example_df:14,example_head:4,example_log:18,example_log_co:[1,12],example_logging_string_co:12,example_logging_string_post_m:12,example_massloss:[12,14],example_output:14,example_parse_output:4,example_pop:[14,15],example_pop_set:15,example_python_population_result:15,example_sn:12,exce:[0,7,11],except:[4,5,6,7,11,15,16],execut:[0,5,7,9,11,15,17],exist:[0,5,6,11,15],exist_ok:[4,15],exit:[0,4,11],exp:[5,15],expand:[15,18],expect:[9,11,17],experiment:[0,4,11],explain:[3,4],explicitli:[0,1,11],explod:[0,11],explos:[0,11],expoenti:[0,11],expon:[0,11],export_all_info:[5,15],express:[0,11],extend:[9,17],extens:11,extern:[0,11],extra:[0,3,5,7,9,11,15,18],extra_text:6,extract:[4,15],extract_ensemble_json_from_str:4,extrapol:[2,7],fabian:[0,11],fabian_imf_log:[0,11],fabian_imf_log_tim:[0,11],fabian_imf_log_timestep:[0,11],factor:[0,2,4,7,11],fade:[0,11],fail:[0,4,7,9,11,17],fail_sil:4,failed_count:15,failed_prob:15,failed_system:7,failed_system_log:7,failed_systems_error_cod:15,failed_systems_threshold:7,failsaf:14,failur:[0,11],fallback:12,fallback_mass:12,fals:[0,4,5,7,11,13,15,16],fancy_parsing_funct:18,far:[0,11],farmer:[0,11],fase:15,fast:[0,11],faster:15,favorit:14,featur:[3,9,15],feed:7,ferguson:[0,11],fetch:14,few:[0,11],field:[0,11],fig:[0,2,11],figur:[7,16],file:[0,1,4,5,6,7,8,9,11,14,15,16,17,18],file_log:[0,11],filehandl:6,filenam:[0,1,4,5,7,11,14,15,18],filenotfounderror:[9,17],filepath:1,fill:14,fill_data:2,filter:[0,4,11,13],filter_arg_dict:4,filter_valu:[4,13],fin:[0,11],find:[4,5,7,9,15,17],finish:[4,15,16],first:[0,2,4,5,9,11,14,15,17,21],first_giant_branch:0,fishlock:[0,11],fit:[0,2,4,5,11,14,21],fix:[0,2,4,5,11,14,15,16],flag:[0,1,4,7,11],flash:[0,11],flat:[2,7],flatsect:[2,15],flaw:5,float_overflow_check:[0,11],flto:[9,17],fold:2,follow:[0,2,4,7,9,11,12,16,17],forc:[0,9,11,17],force_circularization_on_rlof:[0,11],force_corotation_of_primary_and_orbit:[0,11],form:[0,4,5,6,11,15],formal:[0,11],format:[0,2,4,5,11,12,14,15],format_ensemble_result:5,formula:[0,11],forward:[0,11],found:[2,9,15,17],four:[0,11],fpic:1,fraction:[0,2,7,11,15],framework:11,free_persistent_data_memaddr_and_return_json_output:11,free_store_memaddr:11,frequenc:[0,11],friction:[0,11],fring:[0,11],from:[0,2,4,5,7,13,14,15,16,21],from_binary_c_config:1,ftz:[9,17],full:[3,4,7,12],full_path:4,further:[2,15],fuv:[0,11],gaia:[0,2,11],gaia_colour_transform_method:[0,11],gaia_conversion_ubvri_bivariate_jordi2010:[0,11],gaia_conversion_ubvri_riello2020:[0,11],gaia_conversion_ubvri_univariate_evans2018:[0,11],gaia_conversion_ubvri_univariate_jordi2010:[0,11],gaia_conversion_ugriz_bivariate_jordi2010:[0,11],gaia_conversion_ugriz_riello2020:[0,11],gaia_conversion_ugriz_univariate_evans2018:[0,11],gaia_conversion_ugriz_univariate_jordi2010:[0,11],gaia_l_binwidth:[0,11],gaia_teff_binwidth:[0,11],gain:7,galact:[0,11],gallino:[0,11],gamma:[0,11],gap:[0,11],garcia:[0,11],gauss:[0,11],gaussian:2,gaussian_func:2,gaussian_normalizing_const:2,gb_reimers_eta:[0,11],gb_wind_beasor_etal_2020:0,gb_wind_goldman_etal_2017:0,gb_wind_reim:0,gb_wind_schroeder_cuntz_2005:0,gbwind:[0,11],gbwindfac:[0,11],gcc:[1,9,17],gce:[0,11],gener:[0,1,2,4,5,6,7,11,12,14,15,16],general_info:4,generalis:2,geometr:[0,11],gerosa:[0,11],get:[0,2,3,4,5,6,9,12,14,15,17,18,21],get_arg_kei:4,get_default:[4,13],get_help:[4,13],get_help_al:[4,5,13],get_help_sup:[4,13],get_integration_constant_q:2,get_max_multipl:2,get_moe_di_stefano_dataset:4,get_siz:4,giant:[0,11],giant_branch:0,git:[0,4,15],git_branch:4,git_build:4,github:4,gitlab:9,give:[0,2,4,11,21],given:[0,1,2,4,5,7,11,18,21],global:[0,2,11],global_dict:2,gmax:2,gmin:2,gnu:11,goe:[0,4,5,11,12,14,16],gogo:[0,11],going:[9,17],goldman:[0,11],gonna:2,good:[0,7,11,14,15,21],gov:[0,11],gravit:[0,11,15],gravitational_radiation_bs:0,gravitational_radiation_bse_when_no_rlof:0,gravitational_radiation_landau_lifshitz:0,gravitational_radiation_landau_lifshitz_when_no_rlof:0,gravitational_radiation_model:[0,11],gravitational_radiation_modulator_:[0,11],gravitational_radiation_modulator_j:[0,11],gravitational_radiation_non:0,grb:[0,11],great:[0,11],greater:[0,11],grevess:[0,11],grid:[0,3,4,5,9,10,11,12,14],grid_class:[9,10],grid_cod:5,grid_opt:[5,7,14,15],grid_options_default:6,grid_options_defaults_dict:6,grid_options_descript:[6,15],grid_options_description_check:6,grid_options_help:6,grid_vari:[7,15],grid_variable_numb:15,gridcode_filenam:7,gridtyp:[5,15],group:4,gsl:[9,17],gsl_dir:[9,17],guess:[0,2,11],h5py:[9,17],hachisu:[0,11],hachisu_disk_wind:[0,11],hachisu_ignore_qcrit:0,hachisu_qcrit:[0,11],hack:6,had:5,half:[0,11],hall:[0,11],handi:[0,11],handl:[0,3,4,5,7,11,14,18,21],handle_ensemble_string_to_json:4,happen:[0,11],hardcod:[12,15],has:[0,1,4,5,7,11,12,13,15],have:[0,2,3,4,5,6,7,9,11,12,14,15,16,17],hbb:[0,11],hbbtfac:[0,11],hdf5:4,hdf5file:4,header:[1,4,12,14,15],headerlin:15,headlin:7,hegb:0,hehg:0,height:[2,15],helium:[0,11],helium_flash_mass_loss:[0,11],helium_white_dwarf:0,help:[0,3,4,6,11,14,15],help_al:[0,11],hem:0,henc:[0,11],hendrik:[9,17],here:[1,4,5,7,11,12,14,16],hertzsprung:[0,11],hertzsprung_gap:0,hertzstrpung:[0,11],heuvel:[0,11],hewd:[0,11],hewd_hewd_ignition_mass:[0,11],hex:7,high:[0,2,11],higher:[0,2,4,7,9,11,15,17],his:2,histori:2,hold:7,hole:[0,11],home:11,homogen:[0,11],hood:14,hopefulli:[0,11],hot:[0,11],how:[0,4,5,7,11,12,14,15],howev:[0,11,12,15],hoyl:[0,11],hpc:[5,8],hpc_function:[9,10],hr_diagram:16,hrd:[0,11],hrdiag:[0,11],hrdiag_output:[0,11],html:[9,15,17],http:[0,1,2,4,11,15],hurlei:[0,11],hut:[0,11],hybrid:[0,11],hydro:[0,11],hydrogen:[0,11],ibc:[0,11],id_cor:12,idea:[15,16],idum:[0,11],ignit:[0,11],ignor:[0,5,7,9,11,12,14,15,17],iia:[0,11],iloc:14,imf:[0,2,11],imf_chabrier2003:2,imf_scalo1986:2,imf_scalo1998:2,imf_tinsley1980:2,immedi:[0,11],implement:[0,5,7,11],impli:[0,11],impos:15,improv:2,inclin:[0,11],inclination1:[0,11],inclination2:[0,11],inclination3:[0,11],inclination4:[0,11],inclini:[0,11],incliniation_quadrupl:[0,11],incliniation_tripl:[0,11],includ:[0,1,2,4,5,9,11,12,14,15,16,17],include_binary_c_default:[5,15],include_binary_c_help_al:[5,15],include_binary_c_version_info:[5,15],include_default:[5,15],include_popul:15,include_population_set:5,incom:[0,11],increas:[0,11],inde:[0,11],indent:[4,14],index:[0,2,9,11,13,14],indic:[0,2,11],individu:[3,9],individual_nova:[0,11],induc:[0,11],inertia:[0,11],info:[4,5,9,11,13,15,16,17],inform:[0,1,3,4,5,6,12,14,15,16],init:5,init_abund:[0,11],init_abund_dex:[0,11],init_abund_mult:[0,11],init_abunds_onli:[0,11],initi:[0,2,5,11,13,14],initial_abundance_hash:5,initial_abundance_mix:[0,11],initial_abunds_onli:[0,11],initial_mass:14,inner:[0,11],input:[1,2,4,5,7,9,11,13,14,16,21],input_dict:4,insert:[5,15],insid:[0,11],inspect:[4,14,16],inspect_dict:4,inspir:[1,16,21],instabl:[0,11],instanc:[4,14,15],instant:[0,11],instantli:[0,11],instead:[0,4,7,11],integ:[0,5,7,11,21],integr:2,integrals_str:2,interact:[0,6,11],interfac:[4,9,11,17],interfer:[9,17],intern:[0,7,11,13],internal_buff:[0,11],internal_buffering_off:0,internal_buffering_print:0,internal_buffering_stor:0,interpol:[2,5],interpolate_in_mass_izzard2012:2,interpolator_nam:2,intershel:[0,11],interstellar:[0,11],intger:[0,11],intro:[0,11],invers:21,involv:[0,11],inward:[0,11],ipynb:15,is_capsul:4,isfil:15,isn:[4,5],isnt:15,isotop:[0,4,11,13],isotope_hash:5,isotope_list:5,item:1,iter:4,its:[0,4,5,6,9,11,15,16,17,18],itself:[4,7,9,12,14,17],iwamoto:[0,11],izzard2012_period_distribut:2,izzard:[0,9,11,17],jager:[0,11],jaschek:2,jeff:[9,17],jia:[0,11],john:[0,11],join:[11,12,14,15],jordi:[0,11],json:[4,5,7,11,14,15],jsondecod:4,jsonencod:4,jupyt:[9,17],just:[0,2,4,5,7,11,15,21],kap:[0,11],kappa:[0,11],kaps_rentrop:[0,11],karaka:[0,11],keep:[5,15],kei:[1,2,4,5,6,7,13,14,15,16],kelvin:[0,11],keplerian:[0,11],keyword:[16,18],kick:[0,7,11],kick_backward:0,kick_forward:0,kick_inward:0,kick_outward:0,kick_random:0,kick_straight_up:0,kick_velocity_custom:0,kick_velocity_fix:0,kick_velocity_maxwellian:0,kill:[1,12,15],kim:[0,11],kind:[0,11],kippenhahn:[0,11],know:[0,1,5,6,11,13,14],known:[0,2,5,11,14,15,18],kroupa2001:[2,5,15],kroupa:2,ktg93:2,kwarg:[5,16,18],lambda:[0,11],lambda_c:[0,11],lambda_ce_dewi_tauri:0,lambda_ce_klencki_2020:0,lambda_ce_polytrop:0,lambda_ce_wang_2016:0,lambda_enthalpi:[0,11],lambda_ionis:[0,11],lambda_min:[0,11],lambda_mult:[0,11],lambda_multipli:[0,11],lambda_v:2,lamer:[0,11],landau:[0,11],langer:[0,11],larger:[0,11],last:2,lastli:[11,14],latter:[0,11],law:2,law_const:2,lbv:[0,11],ld_library_path:[9,17],lead:[0,11,15,21],learn:12,least:[9,17],leav:[0,11],left:[0,11],legaci:[0,11],legacy_yield:[0,11],len:[14,15],lengthen:[0,11],less:[0,1,2,3,11,14],let:[5,14,15],level:[1,4],li7:[0,11],lib:[9,11,14,17],libbinary_c:7,libcustom_logging_e9c2bec7f15541eb847fc6013e48e7:14,libcustom_logging_eac2dfc438a14e5a9f5be98b1b6b4294:14,libgsl:[9,17],libmemo:[9,17],librari:[0,1,5,7,11,12,18],library_path:[9,17],librinterpol:[9,17],lies:[0,11],lifetim:[0,11,15],lifshitz:[0,11],like:[0,1,4,5,7,9,11,15,16,17,19],limit:[0,11,15,16],line:[1,4,5,7,9,12,14,15,16,17],linear2:7,linear:[0,2,7,11],linear_extrapolation_q:2,linearli:19,linker:1,linspac:19,linux:11,list:[0,1,2,4,7,11,14,15,18,19],list_arg:[0,11],list_of_sub_kei:2,lit:[0,11],lithium:[0,11],lithium_gb_post_1dup:[0,11],lithium_gb_post_heflash:[0,11],lithium_hbb_multipli:[0,11],lithium_t:[0,11],littleton:[0,11],liu:[0,11],llnl:[0,11],lnm1:[5,15],load:[0,1,4,5,7,11,12,14,15,16],load_logfil:4,lobe:[0,11,21],local:2,locat:[0,2,7,9,11,17],lodder:[0,11],log10:[0,2,11,15],log10m1:7,log10p:2,log10per:15,log10pmin:2,log:[0,1,2,3,4,5,7,9,11,14,16,17,18,21],log_arg:7,log_args_dir:7,log_every_timestep:[12,14],log_fil:7,log_filenam:[0,11,14,18],log_runtime_system:7,logarithm:2,logensembletim:[0,11],logfil:[4,9,14,17],logg:[0,11],logger:15,logging_dict:1,logging_lin:12,logic:[1,5,7,12],logmass:2,logp:2,logper:2,logperiod:2,long_spectral_typ:2,longer:[0,11],longnam:[5,15],look:[1,4,9,15,17],lookback:[0,11],loon:[0,11],loop:[5,14,15],loos:16,lose:[0,11],loss:[0,11,14],lost:[0,11],lot:[4,7,15,18],low:[0,2,11],low_mass_m:0,low_mass_main_sequ:0,lower:[0,2,5,11,15,19],lsoda:[0,11],lsun:[0,11,16],lugaro:[0,11],luminos:[0,11,16],luminosity_1:16,luminosity_2:16,lynnett:[0,11],m_1:[0,5,11,12,13,14,15,18],m_2:[0,11,12,14,15],m_3:[0,11],m_4:[0,11],m_max:[2,5,15],m_min:[5,15],maccretor:[0,11],machin:[7,9,17],macro:[0,4,11,13],madau:2,maeder:[0,11],magellan:[0,11],magnet:[0,11],magnetic_braking_algorithm:[0,11],magnetic_braking_algorithm_andronov_2003:0,magnetic_braking_algorithm_barnes_2010:0,magnetic_braking_algorithm_hurley_2002:0,magnetic_braking_algorithm_rappaport_1983:0,magnetic_braking_factor:[0,11],magnetic_braking_gamma:[0,11],magnitud:4,mai:[0,11],main:[0,1,7,9,11,12,15,17],main_sequ:[0,11],mainli:8,major:[0,11],make:[0,1,2,4,5,7,9,11,14,15,16,17,18],make_build_text:4,makedir:[4,15],manag:[4,9,17],mani:[0,5,7,11,13,15],manual:12,manufactur:[0,11],map:7,maria:[0,11],mass:[0,1,2,4,5,7,11,13,14,15,16,18,21],mass_1:[15,16],mass_2:[15,16],mass_accretion_for_eld:[0,11],mass_accretor:21,mass_donor:21,mass_evolut:16,mass_for_hestar_ia_low:[0,11],mass_for_hestar_ia_upp:[0,11],mass_of_pmz:[0,11],mass_str:2,massiv:[0,2,11],massless:[0,11],massless_remn:0,master:[7,16],match:[0,4,11,14,15,16],materi:[0,11],math:[5,15],matplotlib:[9,16,17],matter:[0,11],mattsson:[0,11],mattsson_mass_loss:[0,11],mattsson_orich_tpagbwind:[0,11],max:[0,2,11,12,15],max_bound:[2,19],max_evolution_tim:[0,1,11,12,14,15],max_hewd_mass:[0,11],max_model_numb:[0,11],max_multipl:2,max_neutron_star_mass:[0,11],max_queue_s:7,max_stellar_angmom_chang:[0,11],max_stellar_type_1:[0,11],max_stellar_type_2:[0,11],max_stellar_type_3:[0,11],max_stellar_type_4:[0,11],max_tim:14,max_val:2,maximum:[0,2,7,11,12,21],maximum_mass_ratio_for_instant_rlof:[0,11],maximum_mass_ratio_for_rlof:21,maximum_mcbagb_for_degenerate_carbon_ignit:[0,11],maximum_nuclear_burning_timestep:[0,11],maximum_timestep:[0,11],maximum_timestep_factor:[0,11],maxmimum:[0,11],maxwellian:[0,11],mayb:16,mayor:2,mc13_pocket_multipli:[0,11],mch:[0,11],mcmin:[0,11],mdonor:[0,11],mean:[0,2,4,5,7,9,11,17],meant:7,measur:4,medium:[0,11],mega:2,memaddr:[11,12],memori:[1,5,7,11,12,21],menv:[0,11],merg:[0,2,4,7,11],merge_dict:[4,13],merge_multipl:2,merger:[0,11],merger_angular_momentum_factor:[0,11],merger_mass_loss_fract:[0,11],mesa:[9,17],mesasdk_init:[9,17],mesasdk_root:[9,17],messag:4,mestel:[0,11],met:[5,15],metal:[0,2,11,12,14,15,21],method:[0,5,7,11,12,14,15],meynet:[0,11],might:[4,5,9,15,17],milki:[0,11],miller:[0,11],min:[2,12,15],min_bound:[2,19],min_p:2,min_per:2,min_val:2,minimal_verbos:4,minimum:[0,2,4,7,11,21],minimum_co_core_mass_for_carbon_ignit:[0,11],minimum_co_core_mass_for_neon_ignit:[0,11],minimum_donor_menv_for_comenv:[0,11],minimum_envelope_mass_for_third_dredgeup:[0,11],minimum_helium_ignition_core_mass:[0,11],minimum_mcbagb_for_nondegenerate_carbon_ignit:[0,11],minimum_orbital_period_for_instant_rlof:[0,11],minimum_period_for_rlof:21,minimum_separation_for_instant_rlof:[0,11],minimum_separation_for_rlof:21,minimum_time_between_pn:[0,11],minimum_timestep:[0,11],mint:[0,11],mint_data_cleanup:[0,11],mint_dir:[0,11],mint_disable_grid_load_warn:[0,11],mint_kippenhahn:[0,11],mint_kippenhahn_companion_stellar_typ:[0,11],mint_kippenhahn_stellar_typ:[0,11],mint_maximum_shell_mass:[0,11],mint_metal:[0,11],mint_minimum_shell_mass:[0,11],mint_ms_rejuven:[0,11],mint_nuclear_burn:[0,11],mint_remesh:[0,11],mint_use_zams_profil:[0,11],mira:[0,11],misc:[9,11],miscellan:[4,13],miss:[0,4,6,11],mix:[0,4,7,11],mixtur:[0,11],mmax:2,mmin:[2,7],mnra:21,model:[0,1,7,11,12,14,15],modif:3,modifi:[0,11,12],modul:[0,6,7,10,11,13,15],modulo:7,moe:[2,4,5,9,15],moe_di_stefano_2017:5,moe_di_stefano_2017_multiplicity_fract:2,moe_di_stefano_2017_pdf:2,moment:[0,11,12,15,19],momenta:[0,11,16],momentum:[0,11],mont:[0,7,11],monte_carlo_kick:[0,11],more:[0,1,3,4,5,7,9,11,12,13,14,15,16,17,19],most:[4,11],mostli:[4,6,7,15,16,18],move:[0,11],msun:[0,2,11,12,14],much:[0,4,11,15],multi:7,multipl:[0,2,4,7,11,15],multiplc:[0,11],multipli:[0,4,7,11],multiplicity_arrai:2,multiplicity_fraction_funct:7,multiplicity_model:7,multiplicity_modul:7,multiply_values_dict:[4,13],multiprocess:7,must:[0,2,11,14,15],my_stellar_data:[1,12,15],myr:[0,11,14],n100:[0,11],n100_z0:[0,11],n100h:[0,11],n100l:[0,11],n10:[0,11],n150:[0,11],n1600:[0,11],n1600c:[0,11],n200:[0,11],n20:[0,11],n300c:[0,11],n40:[0,11],naked_helium_star_giant_branch:0,naked_helium_star_hertzsprung_gap:0,naked_main_sequence_helium_star:0,name:[1,4,5,6,11,13,15,18,20],natur:[0,11],nauenberg:[0,11],nearer:[0,11],nebula:[0,11],necessari:[4,5,15],need:[0,2,5,9,11,12,14,15,17],neg:[0,4,11],neither:[0,5,11],neleman:[0,11],nelemans_gamma:[0,11],nelemans_max_frac_j_chang:[0,11],nelemans_minq:[0,11],nelemans_n_comenv:[0,11],nelemans_recalc_eccentr:[0,11],nemp:[0,11],nemp_cfe_minimum:[0,11],nemp_nfe_minimum:[0,11],nenamg:[0,11],neon:[0,11],nest:[4,5,15],network:[0,11,13],neutrn:[0,11],neutron:[0,11,15],neutron_star:0,never:[0,11],newer:[0,2,11],newli:[0,11],newopt:2,newton:[0,11],next:[4,15],nice:[1,5,16],nieuwenhuijzen:[0,11],nieuwenhuijzen_windfac:[0,11],nmax:2,no_thermohaline_mix:[0,11],noecho:[0,11],noechonow:[0,11],noel:[0,11],nolowq:7,nomin:[0,11],non:[0,7,11],nonconservative_angmom_gamma:[0,11],none:[0,1,2,4,5,6,7,11,15,21],nonetyp:15,nonzero:7,nor:[0,11],norm:7,normal:[0,4,11],normalis:[2,7],normalize_dict:2,normalize_multipl:7,notabl:15,note:[0,7,11],notebook:[9,11,12,13,14,15,17],notebook_api_funct:14,notebook_custom_log:[14,15],notebook_individual_system:[12,15],notebook_popul:14,noteworthi:3,noth:[5,7],notifi:18,nova:[0,11],nova_faml_multipli:[0,11],nova_irradiation_multipli:[0,11],nova_retention_algorithm_claeys2014:0,nova_retention_algorithm_const:0,nova_retention_algorithm_hillman2015:0,nova_retention_fract:[0,11],nova_retention_method:[0,11],nova_timestep_accelerator_index:[0,11],nova_timestep_accelerator_max:[0,11],nova_timestep_accelerator_num:[0,11],now:[0,2,4,11,12,14,15],nuclear:[0,11],nuclear_mass_hash:5,nuclear_mass_list:5,nucleosynthesi:[0,4,11],nucleosynthesis_sourc:[4,13],nucreacmult:[0,11],nucsyn:[9,11],nucsyn_angelou_lithium:[0,11],nucsyn_gce_outflow_check:[0,11],nucsyn_hbb:[0,11],nucsyn_metal:[0,11],nucsyn_network:[0,11],nucsyn_network_error:[0,11],nucsyn_s_process:[0,11],nucsyn_solv:[0,11],nucsyn_third_dredge_up:[0,11],nugi:[0,11],number:[0,2,4,5,7,9,11,15,17],numer:4,numpi:[4,9,14,17,19],obj:4,object:[0,3,4,5,7,8,11,16],object_hook:4,object_pairs_hook:4,object_parse_funct:14,obtain:0,obvious:12,occur:[0,11,21],off:[0,11,15],off_m:14,offset:[0,11],ohio:[0,11],old:7,old_solut:[9,17],omega:[0,11],onc:[0,11],one:[0,4,5,7,11,13,15,16],onewd:0,onli:[0,4,5,7,11,12,15,21],onset:[0,11],onto:[0,2,11],opac:[0,11],opacity_algorithm:[0,11],opacity_algorithm_ferguson_op:0,opacity_algorithm_paczynski:0,opacity_algorithm_star:0,opal:[0,11],open:[14,15],opm:2,opt:[2,4,11],option:[0,1,2,4,5,9,10,11,15,17,21],orb:[5,15],orbit:[0,2,11,16,21],orbit_evolut:16,orbital_inclin:[0,11],orbital_inclinationi:[0,11],orbital_period:[0,11,12,14,15,21],orbital_period_quadrupl:[0,11],orbital_period_tripl:[0,11],orbital_phas:[0,11],orbital_phase_quadrupl:[0,11],orbital_phase_tripl:[0,11],orbiting_object:[0,11],orbiting_objects_close_pc_threshold:[0,11],orbiting_objects_log:[0,11],orbiting_objects_tides_multipli:[0,11],orbiting_objects_wind_accretion_multipli:[0,11],order:[3,4,5,15],ordereddict:4,org:[0,2,11],origin:[9,17],other:[0,1,2,4,6,7,9,11,13,14,15,16,17],otherwis:[0,5,6,7,11],out:[4,6,7,12,13],outcom:[0,11],outer:[0,11],outfil:[5,15],outfile_nam:1,outfilenam:15,output:[1,3,4,5,7,9,11,12,13,14,16,17,18,21],output_dict:14,output_dir:[5,14,15],output_fil:[4,6,14],output_filenam:[5,15],output_lin:4,outsid:[0,2,11],outward:[0,11],over:[4,5,13,14,15],overflow:[0,11],overlap:4,overrid:2,overriden:15,overshoot:[0,11],overspin_algorithm:[0,11],overspin_bs:[0,11],overspin_massloss:[0,11],overview:11,own:[5,7,9,12,14,15,17],oxygen:[0,11],oxygen_neon_white_dwarf:0,packag:[4,9,11,15,17,19],paczynski:[0,11],page:[0,9,11,15,17],pair:[0,4,11],panda:[4,9,14,16,17],pane:16,panel:[0,11],paper:[0,11],param_nam:4,paramet:[1,2,3,4,5,6,7,9,11,12,14,15,16,18,19,21],parameter_nam:[4,5,11,13,15],parameter_value_input_typ:[4,13],pars:[3,4,5,14,15,16,18],parse_binary_c_version_info:4,parse_cmdlin:5,parse_const:4,parse_float:4,parse_funct:[5,7,14,15,18],parse_function_hr_diagram:16,parse_function_mass:16,parse_function_orbit:16,parse_int:4,parsec:2,part:[2,5,11,14,15,21],partial:[0,11],particularli:[0,11],pasp:2,pass:[5,7,9,11,12,14,15,16,17,18],path:[4,7,9,14,15,17],patho:[9,17],pdf:[0,2,9,11,17],pend:[0,11],per:[0,4,5,7,11,15,21],percentag:[0,11],peret:[0,11],perform:[0,11],perhap:[0,11],periastron:[0,11],pericent:21,period:[0,2,11,12,14,15,16,21],period_str:2,perl:[1,15],persist:11,persistent_data:11,pgo:[0,11],phase:[0,11],phasevol:[0,11,15],phdi:[0,11],photoevapor:[0,11],php:2,physic:15,pick:16,piec:[5,15],pinnsonneault:[0,11],pisn:[0,11],pkg:[9,17],place:[0,11],placehold:16,plai:[0,11],plan:7,planetari:[0,11],plaw2:7,pleas:[0,4,11,15],plot:[0,11,14,16],plot_funct:[9,10],plot_hr_diagram:16,plot_hr_diagram_singl:16,plot_mass:16,plot_orbit:16,plot_system:16,plot_typ:16,pls:5,plu:[0,11],pms:16,pms_mass_1:16,pms_mass_2:16,pn_comenv_transition_tim:[0,11],pn_fast_wind:[0,11],pn_fast_wind_dm_agb:[0,11],pn_fast_wind_dm_gb:[0,11],pn_fast_wind_mdot_agb:[0,11],pn_fast_wind_mdot_gb:[0,11],pn_hall_fading_time_algorithm:[0,11],pn_hall_fading_time_algorithm_maximum:[0,11],pn_hall_fading_time_algorithm_minimum:[0,11],pn_resolv:[0,11],pn_resolve_maximum_envelope_mass:[0,11],pn_resolve_minimum_effective_temperatur:[0,11],pn_resolve_minimum_luminos:[0,11],pne:[0,11],pogg:[0,11],point:[0,2,4,5,9,11,17],poisson:[2,7],pol:[0,11],polytrop:[0,11],pop:12,pop_macro:12,popul:[0,2,3,5,6,8,9,11,17,19],population_id:7,population_nam:15,population_set:5,posit:[0,2,11],possibl:[0,1,2,4,6,9,11,14,17],post:[0,11,12],post_ce_adaptive_menv:[0,11],post_ce_envelope_dm_eagb:[0,11],post_ce_envelope_dm_gb:[0,11],post_ce_envelope_dm_tpagb:[0,11],post_ce_objects_have_envelop:[0,11],post_sn_orbit_bs:0,post_sn_orbit_method:[0,11],post_sn_orbit_tt98:0,postagb_legacy_log:[0,11],potenti:[0,11],power:[0,2,11],powerlaw:2,powerlaw_const:2,powerlaw_extrapolation_q:2,ppisn:[0,11],ppisn_farmer19:0,ppisn_non:0,ppisn_prescript:[0,11],ppn_envelope_mass:[0,11],pragma:12,pre:[0,11,16],pre_events_stardata:[0,11,12],pre_main_sequ:[0,11],pre_main_sequence_fit_lob:[0,11],precis:4,precod:[5,15],predefin:[2,15],predict:7,predictor:[0,11],prefer:[0,5,11],prefix:[0,11],prepar:2,prepare_dict:2,prescript:[0,11,15],prescrit:[0,11],present:[2,4,5,15],preserv:[0,11],preset:16,pressur:[0,11],prev_stellar_type_1:15,prev_stellar_type_2:15,prevent:[0,7,11],previou:4,previous:[14,15],previous_stardata:[1,12,14,15],primari:[1,2,5,15,21],print:[4,6,7,11,12,13,14,15],print_help:[4,13],print_info:6,print_option_descript:6,print_structur:4,printf:[1,12,14,15],prior:[0,11],privat:[5,6,9],prob_dict:2,probability_weighted_mass:7,probabl:[0,1,2,5,6,7,11,12,15,16],probdist:[5,15],problem:[0,11],process:[0,4,5,7,11,15],profil:[0,11],progenitor:[0,11,15],program:[9,17],project:[0,11],proper:[6,12],properli:[0,11],properti:[0,4,7,16],prot1:[0,11],prot2:[0,11],prot3:[0,11],prot4:[0,11],provid:[0,2,5,7,11,15,18],pseudorandom:[0,11],publicli:12,puls:[0,11,21],pulsat:[0,11],pump:[0,11],purpos:[7,15,16],push_macro:12,put:[1,4,5,7,15,16],py_rinterpol:[9,17],pyenv:[9,11,17],pysiz:4,pytest:[9,17],python3:[9,11,17],python:[4,11,12,15],q_high_extrapolation_method:7,q_interpol:2,q_low_extrapolation_method:7,qcrit_bh:[0,11],qcrit_bs:0,qcrit_cheb:[0,11],qcrit_chen_han_formula:0,qcrit_chen_han_t:0,qcrit_cowd:[0,11],qcrit_degenerate_bh:[0,11],qcrit_degenerate_cheb:[0,11],qcrit_degenerate_cowd:[0,11],qcrit_degenerate_eagb:[0,11],qcrit_degenerate_gb:[0,11],qcrit_degenerate_hegb:[0,11],qcrit_degenerate_hehg:[0,11],qcrit_degenerate_hem:[0,11],qcrit_degenerate_hewd:[0,11],qcrit_degenerate_hg:[0,11],qcrit_degenerate_lmm:[0,11],qcrit_degenerate_m:[0,11],qcrit_degenerate_n:[0,11],qcrit_degenerate_onewd:[0,11],qcrit_degenerate_tpagb:[0,11],qcrit_eagb:[0,11],qcrit_gb:[0,11],qcrit_gb_bs:0,qcrit_gb_chen_han_formula:0,qcrit_gb_chen_han_t:0,qcrit_gb_ge2015:0,qcrit_gb_hjellming_webbink:0,qcrit_gb_q_no_comenv:0,qcrit_gb_temmink2021:0,qcrit_gb_vos2018:0,qcrit_ge2015:0,qcrit_hegb:[0,11],qcrit_hehg:[0,11],qcrit_hem:[0,11],qcrit_hewd:[0,11],qcrit_hg:[0,11],qcrit_hjellming_webbink:0,qcrit_lmm:[0,11],qcrit_m:[0,11],qcrit_n:[0,11],qcrit_onewd:[0,11],qcrit_q_no_comenv:0,qcrit_temmink2021:0,qcrit_tpagb:[0,11],qcrit_vos2018:0,qcrits_:[0,11],qcrits_degenerate_:[0,11],qdata:2,qlimit:2,quad:7,quadrat:[0,11],quadrulpl:[0,11],quadrupl:[0,2,7,11],quantiti:16,queri:14,queue:7,quickli:14,quit:[0,4,11],r_l:21,radi:[0,11],radiat:[0,11],radii:[0,11,21],radiu:[0,1,11,12,15,16,21],radius_1:16,radius_2:16,ragb:21,raghavan2010_binary_fract:2,raghavan:2,rai:[0,11],railton:[0,11],rais:[0,4,7,11,15],ram:[0,11],ran:7,random:[0,7,11],random_count:14,random_se:[0,11,14],random_skip:[0,11],random_system:[0,11],random_systems_se:[0,11],rang:[0,2,5,7,11,14,15,19],rapidli:[0,11],rappaport:[0,11],rate:[0,2,11],rather:[0,4,5,7,9,11,12,14,15,17],ratio:[0,2,11,15,21],raw:[4,5,7,11,16,18],raw_output:4,reach:[0,11],reaction:[0,11],read:[3,4,14,15],real:[5,15],realli:[0,5,6,7,11,15],reason:[0,11],rebuild:[0,9,11,17],rebuilt:[9,17],recalcul:[0,11],receiv:4,recogn:15,recombin:[0,11],recommend:[1,3,5],recompil:[9,15,17],recurs:[4,5],recursive_change_key_to_float:4,recursive_change_key_to_str:4,red:[0,11],redhat:1,redshift:2,reduc:[0,11],reduct:7,regardless:16,region:[0,11],regist:15,reignit:[0,11],reimer:[0,11],reinstal:[9,17],reject:[0,11],rejects_in_log:[0,11],rejuven:[0,11],rel:[0,11],relat:[0,11],releas:[4,9,17],reliabl:11,remain:[0,11],remesh:[0,11],remnant:[0,11],remov:[0,4,5,11,14,15],remove_fil:4,renormalis:2,rentrop:[0,11],repeat:[0,7,11],repo:[9,17],report:[0,11,15],repositori:3,repres:7,represent:[4,5,15],reproduc:[0,11],requir:[0,2,4,11,14,15,16,18],reset:[0,11],reset_pref:[0,11],reset_star:[0,11],reset_stars_default:[0,11],resolut:[0,5,7,11,15],resolv:[0,11],reson:[0,11],respect:[0,2,11],rest:[2,5,15],restructuredtext:4,result:[0,1,2,4,5,7,9,11,14,15,17],result_arrai:2,result_dict:2,retain:[0,11],rethink:4,return_all_info:5,return_arglin:11,return_binary_c_default:5,return_binary_c_version_info:[4,5,13],return_compilation_dict:1,return_help:11,return_help_al:[4,11],return_maximum_mass_ratio_for_rlof:[11,21],return_minimum_orbit_for_rlof:[11,21],return_persistent_data_memaddr:11,return_population_set:5,return_store_memaddr:11,return_version_info:[4,11],revap_in:[0,11],revap_out:[0,11],revers:[0,11,16],reverse_tim:[0,11],revis:[0,4],rewrit:5,rhagavan:7,ri0005:15,rich:[0,11],riello:[0,11],rin:[0,11],ring:[0,11],risk:[5,15],ritter:[0,11],rk2:[0,11],rk4:[0,11],rlof:[0,11,21],rlof_angular_momentum_transfer_model:[0,11],rlof_angular_momentum_transfer_model_bs:0,rlof_angular_momentum_transfer_model_conserv:0,rlof_eccentric_as_circular:[0,11],rlof_entry_threshold:[0,11],rlof_f:[0,11],rlof_interpolation_binary_c:0,rlof_interpolation_bs:0,rlof_interpolation_method:[0,11],rlof_mdot_factor:[0,11],rlof_mdot_modul:[0,11],rlof_method:[0,11],rlof_method_adapt:0,rlof_method_adaptive2:0,rlof_method_bs:0,rlof_method_claei:0,rlof_method_ritt:0,rlof_nonconservative_gamma_donor:0,rlof_nonconservative_gamma_isotrop:0,rlof_radiation_correct:[0,11],rlof_transition_objects_escap:[0,11],rob:[0,2,11,21],robert:[9,17],roch:[0,11,21],roche_lob:21,rochelob:21,rol1:14,rol2:14,room:[5,15],root:[9,17],rotat:[0,2,11],rotation:[0,11],rotationally_enhanced_expon:[0,11],rotationally_enhanced_mass_loss:[0,11],rotationally_enhanced_massloss:[0,11],rotationally_enhanced_massloss_angmom:0,rotationally_enhanced_massloss_langer_formula:[0,11],rotationally_enhanced_massloss_langer_formula_and_angmom:0,rotationally_enhanced_massloss_non:0,rout:[0,11],routin:[0,3,5,9,11,16],row:[14,16],rring:[0,11],rssd:2,rst:[4,6],rsun:16,rubric:5,run:[0,1,3,4,5,7,9,11,17,18],run_popul:11,run_system:[11,12,13,14,16,18],run_system_wrapp:[9,10,12,14],run_wrapp:3,run_zero_probability_system:7,runtim:[1,7],russel:[0,11],rzam:21,s_option:7,safe:15,sai:[0,11],said:[0,11],same:[0,4,7,9,11,14,17],sampl:[0,2,5,11,15,19],sample_valu:2,sampler:9,sana12:[2,15],sana:2,save:[0,1,2,11,12,15],save_pre_events_stardata:[0,11],scalo:2,scanf:0,scheme:[0,11],schneider:[0,11],schroeder:[0,11],script:[3,9,12,17],sdb:[0,11],sdist:[9,17],sdo:[0,11],search:9,second:[0,2,4,11,16],secondari:[2,21],section:[2,4,8,9,11,15,17],see:[0,5,9,11,12,13,14,15,16,17],seed:[0,11],seem:[9,16,17],seen:4,segment:19,seitenzahl2013_model:[0,11],seitenzahl:[0,11],select:[0,4,11,14],selected_head:4,selector:[0,11],self:[5,7,14,15],semi:[0,11],sent:[0,11],sentenc:1,sep:[2,5,14,15,21],sep_max:15,sep_min:15,separ:[0,2,4,5,6,11,12,14,15,16,21],separation_quadrupl:[0,11],separation_tripl:[0,11],separta:[0,11],seper:15,sequenc:[0,11,12],seri:[0,11],serialis:[4,5],serv:4,server:5,set:[0,1,2,3,4,5,6,7,9,12,13,14,16,17],set_moe_di_stefano_set:5,set_opt:2,setup:[9,15,17,18],sever:[6,7,13,15,16,18],sfh:2,shara:[0,11],share:[1,7,14,18],shared_lib_filenam:12,shell:[0,11],shorten:[0,11],should:[0,1,2,5,6,7,9,11,14,15,16,17,18],shouldn:[0,4,11],show:[0,3,7,11,14,15,16],show_plot:16,show_stellar_typ:16,shown:[0,11,16],shrinkagb:14,side:15,siess:[0,11],sigma:2,silent:4,sill:[0,11],simplest:14,simpli:[0,11],simul:[0,1,11,12,15],simulation_:5,sinc:[4,16],singl:[0,2,3,5,7,11,15,16],single_star_lifetim:[11,12,14],sit:[0,11],site:11,situat:11,size:[4,7],skip:[0,4,7,9,11,17],skipkei:4,slightli:11,slope:2,slow:[0,11],slower:[0,11],slurm:[5,7,8],slurm_grid:5,small:[0,11],small_envelope_method:[0,11],small_envelope_method_bs:0,small_envelope_method_miller_bertolami:0,smaller:[0,11],sn_impulse_liu2015:0,sn_impulse_non:0,sn_impulse_wheeler1975:0,sn_kick_companion_a:[0,11],sn_kick_companion_aic_bh:[0,11],sn_kick_companion_bh_bh:[0,11],sn_kick_companion_bh_n:[0,11],sn_kick_companion_ecap:[0,11],sn_kick_companion_grb_collapsar:[0,11],sn_kick_companion_hestaria:[0,11],sn_kick_companion_ia_chand:[0,11],sn_kick_companion_ia_chand_co:[0,11],sn_kick_companion_ia_eld:[0,11],sn_kick_companion_ia_h:[0,11],sn_kick_companion_ia_he_co:[0,11],sn_kick_companion_ia_hybrid_hecowd:[0,11],sn_kick_companion_ia_hybrid_hecowd_sublumin:[0,11],sn_kick_companion_ibc:[0,11],sn_kick_companion_ii:[0,11],sn_kick_companion_iia:[0,11],sn_kick_companion_ns_n:[0,11],sn_kick_companion_phdi:[0,11],sn_kick_companion_pisn:[0,11],sn_kick_companion_ppisn:[0,11],sn_kick_companion_tz:[0,11],sn_kick_companion_wdkick:[0,11],sn_kick_dispersion_aic_bh:[0,11],sn_kick_dispersion_bh_bh:[0,11],sn_kick_dispersion_bh_n:[0,11],sn_kick_dispersion_ecap:[0,11],sn_kick_dispersion_grb_collapsar:[0,11],sn_kick_dispersion_ia_hybrid_hecowd:[0,11],sn_kick_dispersion_ia_hybrid_hecowd_sublumin:[0,11],sn_kick_dispersion_ibc:[0,11],sn_kick_dispersion_ii:[0,11],sn_kick_dispersion_ns_n:[0,11],sn_kick_dispersion_phdi:[0,11],sn_kick_dispersion_pisn:[0,11],sn_kick_dispersion_ppisn:[0,11],sn_kick_dispersion_tz:[0,11],sn_kick_distribution_aic_bh:[0,11],sn_kick_distribution_bh_bh:[0,11],sn_kick_distribution_bh_n:[0,11],sn_kick_distribution_ecap:[0,11],sn_kick_distribution_grb_collapsar:[0,11],sn_kick_distribution_ia_hybrid_hecowd:[0,11],sn_kick_distribution_ia_hybrid_hecowd_sublumin:[0,11],sn_kick_distribution_ibc:[0,11],sn_kick_distribution_ii:[0,11],sn_kick_distribution_ns_n:[0,11],sn_kick_distribution_phdi:[0,11],sn_kick_distribution_pisn:[0,11],sn_kick_distribution_ppisn:[0,11],sn_kick_distribution_tz:[0,11],sn_none:12,sn_type:12,sneia:[0,11],snia:[0,11],snippet:[11,14],solar:[0,2,11,13,21],solver:[0,11],solver_forward_eul:0,solver_predictor_corrector:0,solver_rk2:0,solver_rk4:0,some:[0,1,2,5,7,9,11,12,13,14,15,16,17],someth:[0,5,11,14],sometim:13,somewhat:15,soon:19,sort:4,sort_kei:4,sourc:[1,2,4,5,6,7,10,16,18,19,21],source_file_filenam:7,source_list:5,sourcecod:[9,11,12,17],sourcefile_nam:1,space:[0,5,11,15,19],spacing_funct:[9,10],spacingfunc:[5,15],spacingfunct:[5,15],special:[0,11,15],specif:[0,4,11,13,14,16],specifi:[0,7,11],spectral:2,speed:[0,7,11],speedtest:[0,11],spent:4,spheric:[0,11],spin:[0,11],spinrat:[0,11],split:[0,7,11,14,15],split_lin:14,splitlin:[11,12,14,15],splitpoint:[0,11],spread:5,sqrt:[0,11],src:[9,11,12,17],stabil:[0,11],stabl:[0,11],stancliff:[0,11],standard:[0,2,11],star:[1,2,7,9,11,12,13,14,15,16,21],star_with_no_mass:0,starcount:15,stardata:[0,1,11,12,14,15],stardata_dump_filenam:[0,11],stardata_load_filenam:[0,11],stardata_t:12,start:[0,1,4,5,6,7,11,14,15],start_tim:[0,11],start_timestamp:15,startswith:14,state:[0,11],statement:[1,12,14,15],statist:[0,11],statu:[0,1,11,15],stderr:[0,11],stdout:4,steadi:[0,11],stefan:16,stefano:[4,5,9,15],stellar:[0,2,7,11,16,20],stellar_structure_algorithm:[0,11],stellar_structure_algorithm_external_funct:0,stellar_structure_algorithm_mint:0,stellar_structure_algorithm_modified_bs:0,stellar_structure_algorithm_non:0,stellar_typ:[1,9,10,12,14,15,16],stellar_type_1:[0,11,15,16],stellar_type_2:[0,11,15,16],stellar_type_3:[0,11],stellar_type_4:[0,11],stellar_type_dict:20,stellar_type_dict_short:20,step:[5,12,14,15,16,19],stepsiz:[5,15],stick:7,stiff:[0,11],still:[1,7,12],stop:[0,4,11],stopfil:[0,11],storag:[0,11],store:[0,2,3,4,5,7,9,14,15,17,21],store_capsul:11,store_memaddr:[11,21],str:[1,4,5,6,15,16],straight:5,straightforward:15,straniero:[0,11],strength:[0,11],strict:4,string:[0,1,3,4,5,6,7,11,13,14,15,16,18],strip:[0,11,14],stronger:[0,11],struct:[0,11,12],structur:[0,4,7,11,16],stuff:[4,7,14,15,16],style:[0,11],sub:[0,4,11],subdict:4,subject:[0,11],sublumin:[0,11],submit:9,subroutin:8,subsequ:[0,11],subtract:4,subtract_dict:4,succe:[0,11],suggest:[0,9,11,17],suit:[9,17],sum:[0,11],sundial:[0,11],supercrit:[0,11],supernova:[0,7,11],superwind:[0,11],superwind_mira_switchon:[0,11],sure:[2,5,7,9,14,15,16,17,18],surfac:[0,11],surrei:15,surviv:[0,11],survivor:[0,11],switcher:[0,11],symmetr:[0,11],synchron:[0,11],synonym:[0,11],synthesi:[7,9,15,17],system:[0,3,4,5,7,9,11,12,15,16,17,18],system_gener:[5,15],tabl:[0,2,11],take:[0,2,4,5,7,11,15,18],taken:[0,4,11,12],tar:[9,17],target:[1,6],task:[0,2,4,5,6,8,11,15,16,18,19,21],tauri:[0,11],tbse:[0,11],technic:[12,15],teff:[0,2,11],teff_1:16,teff_2:16,tell:4,temp_dir:[4,15],temperatur:[0,2,11,16],termin:[1,9,12,15,17],test:[0,4,5,7,9,11,14,15,17,21],test_func:11,test_logfil:14,test_pop:15,text:[4,6],than:[0,2,4,7,9,11,15,17],thats:15,thei:[0,2,4,5,7,11,15,16],thelog:[0,11],them:[2,4,5,11,15],themselv:[2,4],thermal:[0,2,11,21],thermally_pulsing_asymptotic_giant_branch:0,thermohalin:[0,11],thesi:[0,11],thi:[0,1,2,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,21],thick:[0,11],thick_disc_end_ag:[0,11],thick_disc_logg_max:[0,11],thick_disc_logg_min:[0,11],thick_disc_start_ag:[0,11],thin:[0,11],thing:[0,2,4,5,6,11,15,18],think:[0,4,5,11],third:[0,2,11],third_dup:[0,11],third_dup_multipli:[0,11],thorn:[0,11],those:[4,5,9,15,17],thread:7,thread_id:7,three:[0,2,11,15],three_part_powerlaw:[2,15],threshold:[0,4,7,11],through:[5,11,14,15,16,18],throughout:[5,15],tidal:[0,11],tidal_strength_factor:[0,11],tide:[0,11],tides_convective_damp:[0,11],tides_hurley2002:[0,11],tides_zahn1989:[0,11],time:[0,1,2,4,5,7,9,11,12,14,15,16,17],timescal:[0,11],timestamp:7,timestep:[0,11,12,14],timestep_limit:[0,11],timestep_log:[0,11],timestep_modul:[0,11],timestep_multipli:[0,11],timestep_solver_factor:[0,11],tinslei:2,titl:6,tmp:[0,4,9,11,14,15,17],tmp_dir:[5,7,15],tmp_tabl:2,todo:[0,1,2,4,5,6,7,11,13,15,16,18,19,21],toler:[0,11],too:[0,4,7,9,11,17,18],took:15,top:15,topic:[0,11],torqu:[0,11],total:[0,2,4,5,7,11,15,16],total_count:15,total_mass_run:15,total_prob:15,total_probability_weighted_mass_run:15,tout:[0,11,21],tpagb:[0,11],tpagb_reimers_eta:[0,11],tpagb_wind_beasor_etal_2020:0,tpagb_wind_bloeck:0,tpagb_wind_goldman_etal_2017:0,tpagb_wind_mattsson:0,tpagb_wind_reim:0,tpagb_wind_rob_cwind:0,tpagb_wind_van_loon:0,tpagb_wind_vw93_karaka:0,tpagb_wind_vw93_karakas_carbon_star:0,tpagb_wind_vw93_orig:0,tpagb_wind_vw93_orig_carbon_star:0,tpagbwind:[0,11],tpagbwindfac:[0,11],traceback:4,track:[7,16],trade:[0,11],transfer:[0,11],transform:[0,4,11],transit:[0,11],treat:[0,11],trigger:[0,11],trio:15,tripl:[0,2,7,11],truli:[0,11],tupl:1,turn:[0,4,11,14,15],two:[0,4,11,12,20,21],txt:[5,14,15,18],type:[0,1,2,4,5,6,7,11,14,15,16,19,20,21],type_chng:14,type_ia_mch_supernova_algorithm:[0,11],type_ia_sub_mch_supernova_algorithm:[0,11],typic:[0,11],ubvri:[0,11],ugriv:[0,11],uncom:[5,14,15],undef:12,under:[14,19],undergo:[0,11],understand:5,undescrib:6,uniform:2,union:[2,4,5,15,19,21],uniqu:[4,5,7,15],unit:[0,11,13,21],univari:[0,11],unknown:18,unless:[1,5,7],unload:5,unpars:11,unrecogn:[9,17],unsign:0,unstabl:[0,11],until:[0,2,4,11],unus:[0,7,11],unweight:15,updat:[2,4,5,9,15,17],update_dict:[4,13],upper:[0,2,11,19],usag:[0,3],use:[0,2,4,5,7,8,9,11,12,13,14,15,16,17,18],use_astropy_valu:16,use_datadir:[5,15],use_fixed_timestep_:[0,11],use_periastron_roche_radiu:[0,11],use_tabular_intershell_abundances_karakas_2012:[0,11],used:[0,1,2,4,5,7,11,12,13,14,15,16],useful:[0,4,5,7,9,11,13,14,15,17,18,21],useful_func:[9,10],user:[1,2,4,5,6,7,12,18],uses:[0,7,11,12,15],using:[0,1,5,9,12,13,14,15,17],usual:[0,2,7,11,15],util:[1,2,4,5,6,11,12,13,14,15,16,18,19,21],val:2,valid:[0,2,4,11,12],valu:[0,1,2,4,5,6,7,11,13,14,15,16],value_lin:14,valueerror:15,valuerang:[5,15],values_arrai:14,van:[0,11],vandenheuvel_log:[0,11],vari:[0,11,15],variabl:[0,3,4,5,7,11],variant:[0,11],variou:[0,11],vassiliadi:[0,11],veloc:[0,2,11],verbos:[1,2,4,7,9,14,15,17],verbose_print:4,veri:[0,5,11,12,14,15,19],versa:21,version:[0,4,5,9,11,13,15,17],version_info:4,version_info_dict:13,version_info_str:4,version_onli:[0,11],via:[3,5,7,11,12,15,16],vice:21,vink:[0,11],virtual:[9,17],virtualenviron:[9,17],viscos:[0,11],viscou:[0,11],visibl:12,visit:9,volum:[0,11],vrot1:[0,11],vrot2:[0,11],vrot3:[0,11],vrot4:[0,11],vrot_breakup:0,vrot_bs:0,vrot_non_rot:0,vrot_sync:0,vw93:[0,11],vw93_eagb_wind_spe:[0,11],vw93_mira_shift:[0,11],vw93_multipli:[0,11],vw93_tpagb_wind_spe:[0,11],vwind:[0,11],vwind_beta:[0,11],vwind_multipli:[0,11],wai:[0,4,5,7,11,14,16],wang:[0,11],want:[0,2,4,5,6,7,11,12,13,15,16],warmup_cpu:[0,11],warn:[0,11,14,15],wave:[0,11,15],wd_accretion_rate_new_giant_envelope_lower_limit_helium_donor:[0,11],wd_accretion_rate_new_giant_envelope_lower_limit_hydrogen_donor:[0,11],wd_accretion_rate_new_giant_envelope_lower_limit_other_donor:[0,11],wd_accretion_rate_novae_upper_limit_helium_donor:[0,11],wd_accretion_rate_novae_upper_limit_hydrogen_donor:[0,11],wd_accretion_rate_novae_upper_limit_other_donor:[0,11],wd_kick:[0,11],wd_kick_at_every_puls:0,wd_kick_at_given_puls:0,wd_kick_direct:[0,11],wd_kick_end_agb:0,wd_kick_first_rlof:0,wd_kick_pulse_numb:[0,11],wd_kick_when:[0,11],wd_sigma:[0,11],wdwd_merger_algorithm:[0,11],wdwd_merger_algorithm_bs:0,wdwd_merger_algorithm_chen2016:0,wdwd_merger_algorithm_perets2019:0,weight:[0,7,11],well:[0,4,7,9,11,12,14,17],were:[4,15],what:[0,1,2,4,5,6,7,9,11,12,14,15,17,18],whatev:[5,9,12,17],wheeler:[0,11],when:[0,1,2,4,5,6,7,9,11,13,14,15,17,18],whenev:[9,17],where:[0,1,2,4,5,6,7,9,11,15,17],whether:[0,2,4,5,6,7,11,13,15,16,21],which:[0,1,2,4,5,6,7,9,11,12,13,14,15,17,18,21],whichev:7,white:[0,11],white_dwarf_cooling_carrasco2014:[0,11],white_dwarf_cooling_mestel:[0,11],white_dwarf_cooling_mestel_modifi:[0,11],white_dwarf_cooling_model:[0,11],white_dwarf_radius_carrasco2014:[0,11],white_dwarf_radius_model:[0,11],white_dwarf_radius_mu:[0,11],white_dwarf_radius_nauenberg1972:[0,11],whole:[5,7,12],width:[0,11],wind:[0,11],wind_algorithm_binary_c_2020:0,wind_algorithm_hurley2002:0,wind_algorithm_non:0,wind_algorithm_schneider2018:0,wind_angmom_loss_bs:0,wind_angmom_loss_lw:0,wind_angmom_loss_lw_hybrid:0,wind_angmom_loss_spherically_symmetr:0,wind_angular_momentum_loss:[0,11],wind_disc_angmom_fract:[0,11],wind_disc_mass_fract:[0,11],wind_djorb_fac:[0,11],wind_gas_to_dust_ratio:[0,11],wind_lbv_luminosity_lower_limit:[0,11],wind_mass_loss:[0,11],wind_multiplier_:[0,11],wind_nieuwenhuijzen_luminosity_lower_limit:[0,11],wind_type_multiplier_:[0,11],within:[0,4,5,9,11,12,13,15,17],without:[2,5,7,12,14],won:[0,11,14],wood:[0,11],work:[0,4,9,11,12,14,16,17],would:[0,4,11,15,16],wouldn:[5,15],wr_wind:[0,11],wr_wind_bs:0,wr_wind_eldridg:0,wr_wind_fac:[0,11],wr_wind_maeder_meynet:0,wr_wind_nugis_lam:0,wrap:[1,12],wrapper:[4,11,12,14,21],write:[1,4,5,6,7,11,12,14,15,18],write_binary_c_calls_to_fil:[5,15],write_binary_c_parameter_descriptions_to_rst_fil:4,write_grid_options_to_rst_fil:6,write_logfil:11,written:[5,6,7,11,14,15,18],written_data:14,wrlof_mass_transf:[0,11],wrlof_method:[0,11],wrlof_non:0,wrlof_q_depend:0,wrlof_quadrat:0,wrong:[9,17],wrwindfac:[0,11],wtts2:[0,11],wtts_log:[0,11],www:[0,2,11],x86_64:11,year:[0,2,11],yet:[0,4,7,11,16],yield:[0,11],you:[0,1,4,5,6,7,9,11,12,14,15,16,17,21],young:[0,11],your:[7,9,12,14,17],yourself:[15,16],zahn:[0,11],zam:[0,2,11,18,21],zams_collis:21,zams_mass:15,zams_mass_1:15,zams_mass_2:15,zero:[0,1,7,11],zero_ag:[12,14,15],zero_prob_stars_skip:15,zone:[0,11],zoom:[0,11],zoomfac_multiplier_decreas:[0,11],zoomfac_multiplier_increas:[0,11],zsolar:2,zytkow:[0,11]},titles:["Binary_c parameters","custom_logging_functions module","distribution_functions module","Example notebooks","functions module","grid_class module","Grid options and descriptions","Population grid code options","hpc_functions module","Welcome to binary_c-python\u2019s documentation!","Binarycpython code","Using the API functionality of binarycpython","Using custom logging routines with binarycpython","Extra features and functionality of binarycpython","Running individual systems with binarycpython","Running populations with binarycpython","plot_functions module","Python module for binary_c","run_system_wrapper module","spacing_functions module","stellar_types module","useful_funcs module"],titleterms:{"function":[4,11,13,14,15],"public":7,Adding:15,Using:[11,12],about:13,after:[9,17],algorithm:0,api:[11,12,14],binari:0,binary_c:[0,9,11,13,17],binarycpython:[10,11,12,13,14,15],build:[9,13,17],code:[7,10],compact:12,custom:12,custom_logging_funct:1,descript:6,dictionari:13,directli:12,distribution_funct:2,document:[9,17],environ:[9,17],evolut:12,evolv:15,exampl:[3,9,11,12,13,15,17],extra:13,faq:[9,17],featur:13,free:11,from:[9,11,12,17],full:15,get:[11,13],grid:[6,7,15],grid_class:5,handl:15,help:13,hpc_function:8,indic:9,individu:14,inform:[11,13],input:0,instal:[9,17],instruct:[9,17],issu:[9,17],log:[12,15],mass:12,misc:0,modif:13,modul:[1,2,4,5,8,9,16,17,18,19,20,21],moe:7,note:[9,17],notebook:3,noteworthi:15,nucsyn:0,object:[12,14,15],option:[6,7],output:[0,15],paramet:[0,13],pars:13,pip:[9,17],plot_funct:16,popul:[7,12,14,15],privat:7,python:[9,17],requir:[9,17],routin:12,run:[12,14,15],run_system_wrapp:18,run_wrapp:14,sampler:7,script:15,section:0,set:[11,15],singl:14,sourc:[9,17],spacing_funct:19,star:0,stefano:7,stellar_typ:20,store:11,string:12,supernova:12,system:14,tabl:9,usag:[9,11,12,17],useful_func:21,using:11,variabl:[9,15,17],via:[9,14,17],welcom:9,when:12}}) \ No newline at end of file +Search.setIndex({docnames:["binary_c_parameters","custom_logging_functions","distribution_functions","example_notebooks","functions","grid","grid_options_defaults","grid_options_descriptions","hpc_functions","index","modules","notebook_api_functionality","notebook_custom_logging","notebook_extra_features","notebook_individual_systems","notebook_population","plot_functions","readme_link","run_system_wrapper","spacing_functions","stellar_types","useful_funcs"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,nbsphinx:3,sphinx:56},filenames:["binary_c_parameters.rst","custom_logging_functions.rst","distribution_functions.rst","example_notebooks.rst","functions.rst","grid.rst","grid_options_defaults.rst","grid_options_descriptions.rst","hpc_functions.rst","index.rst","modules.rst","notebook_api_functionality.ipynb","notebook_custom_logging.ipynb","notebook_extra_features.ipynb","notebook_individual_systems.ipynb","notebook_population.ipynb","plot_functions.rst","readme_link.rst","run_system_wrapper.rst","spacing_functions.rst","stellar_types.rst","useful_funcs.rst"],objects:{"binarycpython.utils":{custom_logging_functions:[1,0,0,"-"],distribution_functions:[2,0,0,"-"],functions:[4,0,0,"-"],grid:[5,0,0,"-"],grid_options_defaults:[6,0,0,"-"],hpc_functions:[8,0,0,"-"],plot_functions:[16,0,0,"-"],run_system_wrapper:[18,0,0,"-"],spacing_functions:[19,0,0,"-"],stellar_types:[20,0,0,"-"],useful_funcs:[21,0,0,"-"]},"binarycpython.utils.custom_logging_functions":{autogen_C_logging_code:[1,1,1,""],binary_c_log_code:[1,1,1,""],binary_c_write_log_code:[1,1,1,""],compile_shared_lib:[1,1,1,""],create_and_load_logging_function:[1,1,1,""],from_binary_c_config:[1,1,1,""],return_compilation_dict:[1,1,1,""]},"binarycpython.utils.distribution_functions":{"const":[2,1,1,""],Arenou2010_binary_fraction:[2,1,1,""],Izzard2012_period_distribution:[2,1,1,""],Kroupa2001:[2,1,1,""],Moe_di_Stefano_2017_multiplicity_fractions:[2,1,1,""],Moe_di_Stefano_2017_pdf:[2,1,1,""],build_q_table:[2,1,1,""],calc_P_integral:[2,1,1,""],calc_e_integral:[2,1,1,""],calc_total_probdens:[2,1,1,""],calculate_constants_three_part_powerlaw:[2,1,1,""],cosmic_SFH_madau_dickinson2014:[2,1,1,""],duquennoy1991:[2,1,1,""],fill_data:[2,1,1,""],flat:[2,1,1,""],flatsections:[2,1,1,""],gaussian:[2,1,1,""],gaussian_func:[2,1,1,""],gaussian_normalizing_const:[2,1,1,""],get_integration_constant_q:[2,1,1,""],get_max_multiplicity:[2,1,1,""],imf_chabrier2003:[2,1,1,""],imf_scalo1986:[2,1,1,""],imf_scalo1998:[2,1,1,""],imf_tinsley1980:[2,1,1,""],interpolate_in_mass_izzard2012:[2,1,1,""],ktg93:[2,1,1,""],linear_extrapolation_q:[2,1,1,""],merge_multiplicities:[2,1,1,""],normalize_dict:[2,1,1,""],number:[2,1,1,""],poisson:[2,1,1,""],powerlaw:[2,1,1,""],powerlaw_constant:[2,1,1,""],powerlaw_extrapolation_q:[2,1,1,""],prepare_dict:[2,1,1,""],raghavan2010_binary_fraction:[2,1,1,""],sana12:[2,1,1,""],set_opts:[2,1,1,""],three_part_powerlaw:[2,1,1,""]},"binarycpython.utils.functions":{BinaryCEncoder:[4,2,1,""],Capturing:[4,2,1,""],binarycDecoder:[4,2,1,""],binaryc_json_serializer:[4,1,1,""],call_binary_c_config:[4,1,1,""],catchtime:[4,2,1,""],convert_bytes:[4,1,1,""],count_keys_recursive:[4,1,1,""],create_arg_string:[4,1,1,""],create_hdf5:[4,1,1,""],custom_sort_dict:[4,1,1,""],example_parse_output:[4,1,1,""],extract_ensemble_json_from_string:[4,1,1,""],filter_arg_dict:[4,1,1,""],format_ensemble_results:[4,1,1,""],get_arg_keys:[4,1,1,""],get_defaults:[4,1,1,""],get_help:[4,1,1,""],get_help_all:[4,1,1,""],get_help_super:[4,1,1,""],get_moe_di_stefano_dataset:[4,1,1,""],get_size:[4,1,1,""],handle_ensemble_string_to_json:[4,1,1,""],imports:[4,1,1,""],inspect_dict:[4,1,1,""],is_capsule:[4,1,1,""],load_logfile:[4,1,1,""],make_build_text:[4,1,1,""],merge_dicts:[4,1,1,""],multiply_values_dict:[4,1,1,""],output_lines:[4,1,1,""],parse_binary_c_version_info:[4,1,1,""],recursive_change_key_to_float:[4,1,1,""],recursive_change_key_to_string:[4,1,1,""],remove_file:[4,1,1,""],return_binary_c_version_info:[4,1,1,""],subtract_dicts:[4,1,1,""],temp_dir:[4,1,1,""],update_dicts:[4,1,1,""],verbose_print:[4,1,1,""],write_binary_c_parameter_descriptions_to_rst_file:[4,1,1,""]},"binarycpython.utils.functions.BinaryCEncoder":{"default":[4,3,1,""]},"binarycpython.utils.functions.Capturing":{__enter__:[4,3,1,""],__exit__:[4,3,1,""]},"binarycpython.utils.functions.binarycDecoder":{decode:[4,3,1,""]},"binarycpython.utils.functions.catchtime":{__enter__:[4,3,1,""],__exit__:[4,3,1,""]},"binarycpython.utils.grid":{Population:[5,2,1,""]},"binarycpython.utils.grid.Population":{Moe_di_Stefano_2017:[5,3,1,""],add_grid_variable:[5,3,1,""],evolve:[5,3,1,""],evolve_single:[5,3,1,""],export_all_info:[5,3,1,""],parse_cmdline:[5,3,1,""],return_all_info:[5,3,1,""],return_binary_c_defaults:[5,3,1,""],return_binary_c_version_info:[5,3,1,""],return_population_settings:[5,3,1,""],set:[5,3,1,""],set_moe_di_stefano_settings:[5,3,1,""],write_binary_c_calls_to_file:[5,3,1,""]},"binarycpython.utils.grid_options_defaults":{grid_options_description_checker:[6,1,1,""],grid_options_help:[6,1,1,""],print_option_descriptions:[6,1,1,""],write_grid_options_to_rst_file:[6,1,1,""]},"binarycpython.utils.plot_functions":{color_by_index:[16,1,1,""],dummy:[16,1,1,""],parse_function_hr_diagram:[16,1,1,""],parse_function_masses:[16,1,1,""],parse_function_orbit:[16,1,1,""],plot_HR_diagram:[16,1,1,""],plot_masses:[16,1,1,""],plot_orbit:[16,1,1,""],plot_system:[16,1,1,""]},"binarycpython.utils.run_system_wrapper":{run_system:[18,1,1,""]},"binarycpython.utils.spacing_functions":{"const":[19,1,1,""]},"binarycpython.utils.useful_funcs":{calc_period_from_sep:[21,1,1,""],calc_sep_from_period:[21,1,1,""],maximum_mass_ratio_for_RLOF:[21,1,1,""],minimum_period_for_RLOF:[21,1,1,""],minimum_separation_for_RLOF:[21,1,1,""],ragb:[21,1,1,""],roche_lobe:[21,1,1,""],rzams:[21,1,1,""],zams_collision:[21,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"000":14,"0000":14,"000000000000e":14,"0001":[11,21],"000116989":15,"000121486":15,"000150087":15,"000154349":15,"000157195":15,"000172877":15,"000211219":15,"00028381":15,"000381347":15,"000512406":15,"000610573":15,"000627913":15,"000688507":15,"0007":2,"000925128":15,"001":[0,11],"00124307":15,"00167028":15,"00224431":15,"00498":15,"005444573822104362":15,"00632092":11,"006827156705e":15,"007109286263e":15,"0073157281034221516":15,"009829948023831718":15,"013208238029791246":15,"01344":15,"0141":11,"0144107":15,"015033359333e":15,"0154":15,"017435498578e":15,"027099358410e":15,"041660877905e":12,"041662558619e":12,"041662560111e":12,"041662564579e":12,"04459e":15,"047074050271e":15,"05150046619238191":15,"05150046619238192":15,"05193":15,"054":2,"055645404546e":15,"0587":15,"069363482023e":15,"069567332611e":15,"069626478211e":15,"069627290216e":15,"07011e":15,"074084349384e":15,"075844624794e":15,"07671":15,"0820":[0,11],"08519":15,"08624781646269201":15,"0862478164626921":15,"087296558990e":15,"08861e":15,"08873e":15,"08msun":[0,11],"0902":[0,11],"09216":15,"093caf0e9":0,"0x7f163859d0c0":11,"0x7f9265091598":[],"0x7fb4d41ebbf8":14,"0x7ff3bdf79620":15,"100":[0,2,11],"1000":[0,7],"10328":15,"10417":15,"10433":15,"10446":15,"104706358826e":15,"1048014407228":15,"1085":14,"108751340926e":15,"11003":14,"112":15,"11282":15,"115":2,"11582":14,"117519147635e":15,"119":15,"120000":0,"12303":15,"12325":14,"12457":14,"12460":14,"12461":14,"12462":[],"125":[0,11,15],"12500":0,"126828648362e":15,"12e":[1,12,14,15],"1300":[],"1301":14,"1302":14,"13461":14,"13462":[],"1357":12,"13876":15,"13e3":[0,11],"1403":2,"14057":12,"14059":12,"14461":14,"14462":[],"146421815741e":15,"150":15,"15000":[0,11,12,14,15],"1506841305680684":15,"15343":15,"1564":15,"15854":15,"15875":15,"15msun":2,"1612":[],"1613":[],"1614":[],"1615":[],"1616":[],"1617":14,"1618":14,"1619":14,"1620":14,"1621":14,"1628444120":15,"1628444121":15,"170425790780e":15,"170770422321e":15,"170770599495e":15,"170775828562e":15,"17089":14,"171086983243e":15,"171108213270e":15,"172196856333e":15,"17639":15,"18838":15,"18914e":15,"190":0,"19314":12,"194842917007e":15,"1951":[0,11],"1972":[0,11],"1975":[0,11],"197x":[0,11],"1980":2,"1983":21,"1986":[0,2,11],"1989":[0,11],"1991":2,"1992":0,"1993":[0,11],"1996":21,"1998":[0,2,11],"1999":[0,11],"1ckzg0p9":[9,17],"1e2":[0,11],"1e9":[0,11],"200":[0,11],"2000":[0,11],"2001":2,"2002":[0,11],"2003":[0,2,11],"2004":[0,11],"2005":[0,11],"2009":[0,11],"2010":[0,2,7,11],"2012":[0,2,11],"2013":[0,11],"2014":[0,2,11],"2015":[0,11],"2016":[0,11],"2017":[0,7,11,15],"2018":[0,1,11],"2019":[0,11],"2020":[0,11],"2021":0,"20210807":[],"20210825":0,"20484":15,"206771867883e":15,"20787":15,"21331":15,"21473":15,"21673":15,"2174":15,"21805":15,"21878":15,"218786094847e":15,"21892":15,"21893":15,"222715508467e":15,"22723621650191106":15,"22759":15,"230407246199e":15,"232906623449e":15,"234709":15,"23604":15,"2383":[],"2424":14,"24954e":15,"25294":15,"2535":15,"255":0,"257":21,"25msun":[0,11],"27442":15,"27563":15,"27565":15,"27572":15,"27804":15,"278384712062e":15,"281":21,"28672":15,"29402e":15,"29444":15,"294870923827e":15,"29678":15,"2969346":2,"29746":15,"2983275843337705":15,"29864":15,"29942":15,"29977":15,"29994":15,"2a7732d03e594ef4b5dfe9051b41d9c0":15,"2msun":[0,11],"3000":[0,11],"30145":15,"30149":15,"30197":15,"3032":15,"30337":15,"30504":15,"30e4":[0,11],"31004":15,"315554923168e":15,"3177":15,"32047":15,"3205":15,"32641e":15,"33062":15,"33079":15,"33524":12,"337250536639e":15,"34071e":15,"34281":15,"34903":15,"34922":15,"34937":15,"350021848285e":15,"35209":15,"3552":15,"364277535630e":15,"3678":15,"3680f3882c0a449c944462abffea2447":15,"36979":15,"36m":11,"38004":15,"38063":12,"3836":15,"38403":15,"38887e":15,"3933":15,"3msun":2,"4000":0,"4046":15,"40513":15,"40745":15,"40749":15,"40935":15,"41074":15,"41264":15,"41295e":15,"42148e":15,"42212":15,"42238":15,"42375":15,"42msun":[0,11],"43925":15,"439623364590e":15,"4424":15,"446":12,"449960890183e":15,"44msun":[0,11],"4500":11,"45000000080":15,"4530":[12,14],"458869865939e":15,"459153942631e":15,"45msun":[0,11],"4603":15,"47276":15,"47961":15,"47976e":15,"4838":14,"48488":15,"4e3":[0,11],"500":[0,11],"5102526289471614":15,"513216011269e":15,"517749":14,"518":14,"522806":[],"523":[],"525":15,"527722847382e":15,"52963":15,"53113":15,"53174":15,"53175":15,"53176":15,"53177":15,"53183":15,"53184":15,"5357":15,"53631":15,"53922":15,"546683":14,"556479830908e":15,"55924":15,"561265707015991":15,"56776":15,"5689":15,"571858031651e":15,"575":15,"577754":[],"59052":15,"59499":15,"5msun":[0,11],"6000":0,"600000":0,"60808":15,"6101":[],"61349":12,"6162":0,"6246354579925537":15,"62486":15,"625":0,"62517":15,"635":0,"64419":15,"65097":15,"653200958306e":15,"67365":[],"687368550125e":15,"68933e":15,"693213405973e":15,"6944":0,"6e1":2,"6e5":[0,11],"6msun":[0,11],"70319":15,"70668e":15,"71025":15,"71288":15,"716":14,"7197":15,"721374713429e":15,"723547465714e":15,"723570798020e":15,"72498e":[12,15],"72638":15,"726405299909e":15,"730":[12,15],"73221":15,"733614170983e":15,"733794947644e":15,"733865371895e":15,"7358":[11,12],"73856":15,"74037":12,"7431":15,"750574783854e":15,"753837732894e":15,"7619":0,"763":2,"764340254985e":15,"765535914728e":15,"765996194699e":15,"76647":15,"766606588165e":15,"768305081494e":15,"773581245005e":12,"774":[],"7797017097473145":15,"78096":15,"78125":0,"783":14,"78384":15,"79411e":15,"795":2,"797342083485e":15,"802132608769e":15,"80457":15,"806014211040e":15,"806123543037e":15,"807147339697e":15,"80msol":2,"81391":15,"8162e":15,"817":14,"8178":15,"81906":15,"82242e":15,"84162":15,"853070305680e":15,"85486":15,"862081089332e":15,"8628":15,"862942347290e":15,"863377990313e":15,"867655467480e":15,"878236827680e":12,"881529045940e":15,"88566":15,"8955":[],"917420996633e":15,"92267":12,"922967341481e":15,"931266944719e":15,"93135e":15,"933751523833e":15,"94027":15,"941017702765e":15,"9458":14,"9514":[],"9545065608702976":15,"9713":15,"97286e":15,"974759306305e":15,"97823":15,"9791":15,"980988739731e":15,"9863e":15,"990017992944e":15,"99198":12,"99255":15,"99283":15,"9947":14,"99471":15,"9983":14,"boolean":[0,4,5,7,11,16,21],"break":[0,11],"case":[0,4,7,11,15],"catch":[4,7,14,15],"char":7,"class":[4,5],"const":[2,5,15,19],"default":[0,1,2,4,5,6,7,11,12,13,15,18],"export":[4,5,15],"float":[0,2,4,11,13,14,19,21],"function":[0,1,2,3,5,6,7,8,9,10,12,16,17,18,19,21],"import":[4,5,11,12,13,14,15],"int":[0,1,2,4,5,6,7,11,15,19,21],"krtickov\u00e1":0,"kub\u00e1t":0,"long":[0,4,5,7,11,15,20],"new":[0,2,4,5,11,14,15],"null":[0,4,11,12,13],"paczy\u0144ski":[0,11],"public":[6,9,15],"return":[1,2,4,5,6,7,11,13,14,15,16,18,19,21],"short":[0,11,20],"super":[0,11],"switch":[0,11],"throw":[9,17],"true":[0,4,5,6,7,11,13,15,16],"try":[0,9,11,14,15,17],"void":12,"while":[0,11],Added:15,Adding:[3,14],And:[6,9,17,21],But:14,Doing:15,For:[0,4,9,11,12,14,16,17],Gas:[0,11],Its:7,NOT:[0,11,18],Not:7,One:[0,11],Pms:16,That:[0,11],The:[0,1,2,3,4,5,7,9,11,12,13,14,15,16,17,18],Then:[4,9,17],There:[2,5,6,7,11,12,13,14,15,16],These:[4,7,11,15,16],Use:[0,5,11,15],Used:[0,7,11,16],Useful:[0,5,6,11,15],Uses:[0,11,19],Using:[3,9],Was:[0,11],Will:[0,4,5,11,15,18],With:6,__arg_begin:11,__attribute__:12,__enter__:4,__exit__:4,_actually_evolve_system:7,_binary_c_bind:[4,11,12,14,21],_binary_c_config_execut:7,_binary_c_dir:7,_binary_c_execut:7,_binary_c_shared_librari:7,_calculate_multiplicity_fract:15,_commandline_input:7,_count:7,_custom_logging_shared_library_fil:7,_end_time_evolut:7,_errors_exceed:7,_errors_found:7,_evolution_type_opt:7,_failed_count:7,_failed_prob:7,_failed_systems_error_cod:7,_generate_grid_cod:7,_grid_vari:7,_loaded_ms_data:7,_main_pid:7,_population_id:7,_probtot:7,_process_run_population_grid:7,_repeat:7,_set:5,_set_ms_grid:7,_start_time_evolut:7,_store_memaddr:7,_system_gener:7,_total_mass_run:7,_total_probability_weighted_mass_run:7,_total_starcount:7,_zero_prob_stars_skip:7,a173:0,abat:[0,11],abbrevi:20,abl:11,about:[3,4,5,6,15,21],abov:[0,2,4,5,11,12,14,15],abridg:[11,12],absolut:[0,11],abund:[0,11],acceler:[0,11],accept:[4,11,15],access:[2,7,12,14,15],accord:[0,2,11],accordingli:[14,15],account:[0,7,11],accret:[0,11],accretion_limit_dynamical_multipli:[0,11],accretion_limit_eddington_lmms_multipli:[0,11],accretion_limit_eddington_steady_multipli:[0,11],accretion_limit_eddington_wd_to_remnant_multipli:[0,11],accretion_limit_thermal_multipli:[0,11],accretor:[0,11,21],act:[0,7,11,15],activ:[0,9,11,17],actual:[0,4,5,7,9,11,12,14,15,16,17],adam:[0,11],adapt:[0,11],add:[0,2,4,5,7,12,14,15,16,19,21],add_grid_vari:[5,15],added:[4,14],adding:[14,15],address:[1,7,11,12,21],admittedli:16,adress:[11,12,21],advis:12,affect:[0,11],after:[0,5,7,11,12,15],ag89:[0,11],again:[4,7,9,13,14,17],against:16,agb:[0,11],agb_3dup_algorithm:[0,11],agb_core_algorithm:[0,11],agb_core_algorithm_default:0,agb_core_algorithm_hurlei:0,agb_core_algorithm_karaka:0,agb_luminosity_algorithm:[0,11],agb_luminosity_algorithm_default:0,agb_luminosity_algorithm_hurlei:0,agb_luminosity_algorithm_karaka:0,agb_radius_algorithm:[0,11],agb_radius_algorithm_default:0,agb_radius_algorithm_hurlei:0,agb_radius_algorithm_karaka:0,agb_third_dredge_up_algorithm_default:0,agb_third_dredge_up_algorithm_hurlei:0,agb_third_dredge_up_algorithm_karaka:0,agb_third_dredge_up_algorithm_stancliff:0,age:[0,11],aging:[0,11],albedo:[0,11],algorithm:[9,11],algothim:[0,11],all:[0,1,2,4,5,6,7,9,10,11,13,14,15,16,17,18],all_info:5,alloc:11,allow:[0,2,4,7,11,12],allow_nan:4,along:[0,6,7],alpha:[0,11],alpha_c:[0,11],alphacb:[0,11],alreadi:[5,15],also:[0,3,4,5,6,9,11,12,15,17,21],altern:[0,7,11],alwai:[0,2,7,11],amanda:[0,11],amax:2,amin:2,amount:[0,4,5,6,7,11,15,19],amp:11,amt_cor:[7,15],analys:18,analyt:[5,15],analyz:14,andrew:[9,17],andronov:[0,11],angelou_lithium_cheb_decay_tim:[0,11],angelou_lithium_cheb_massfrac:[0,11],angelou_lithium_cheb_tim:[0,11],angelou_lithium_decay_funct:[0,11],angelou_lithium_decay_tim:[0,11],angelou_lithium_eagb_decay_tim:[0,11],angelou_lithium_eagb_massfrac:[0,11],angelou_lithium_eagb_tim:[0,11],angelou_lithium_gb_decay_tim:[0,11],angelou_lithium_gb_massfrac:[0,11],angelou_lithium_gb_tim:[0,11],angelou_lithium_hg_decay_tim:[0,11],angelou_lithium_hg_massfrac:[0,11],angelou_lithium_hg_tim:[0,11],angelou_lithium_lmms_decay_tim:[0,11],angelou_lithium_lmms_massfrac:[0,11],angelou_lithium_lmms_tim:[0,11],angelou_lithium_ms_decay_tim:[0,11],angelou_lithium_ms_massfrac:[0,11],angelou_lithium_ms_tim:[0,11],angelou_lithium_tpagb_decay_tim:[0,11],angelou_lithium_tpagb_massfrac:[0,11],angelou_lithium_tpagb_tim:[0,11],angelou_lithium_vrot_trigg:[0,11],angelou_lithium_vrotfrac_trigg:[0,11],angular:[0,11,16],ani:[0,2,4,5,9,11,14,15,17],anoth:[0,11],ansi:[0,11],ansi_colour:0,anyth:[0,7,11,15],anywai:[5,14,15],anywher:[5,15],api:[0,3,4,9],api_log_filename_prefix:[0,11,14],append:[1,4,14],appli:[0,11],apply_darwin_radau_correct:0,appropri:[0,7,11],approxim:[0,11],aren:[2,7],arenou2010_binary_fract:2,arg:[2,4,11,13,15,16],arg_dict:4,argopt:[0,11],argpair:[4,13],argstr:[11,12,14],argument:[0,2,4,5,7,11,14,15,18],argument_of_periastron:[0,11],argument_of_periastron_quadrupl:[0,11],argument_of_periastron_tripl:[0,11],around:[0,11,12,14],arrai:[2,4,7,14],arrow:0,artifici:[0,11],artificial_accretion_end_tim:[0,11],artificial_accretion_ignor:0,artificial_accretion_start_tim:[0,11],artificial_angular_momentum_accretion_r:[0,11],artificial_mass_accretion_r:[0,11],artificial_orbital_angular_momentum_accretion_r:[0,11],arxiv:[0,2,11],ask:[0,11,21],asplund:[0,11],assign:[5,15],assum:[0,11,16],ast871:[0,11],astronomi:[0,11],astropi:[9,16,17],atom:4,attempt:[4,5],aug:0,auto:[1,10],autogen_c_logging_cod:[1,12],automat:[0,1,6,9,11,12,17],avaibl:[9,17],avail:[0,4,7,11,12,15,16],avoid:11,awai:[0,11],axi:[0,11,16],b_1:[0,11],b_2:[0,11],b_3:[0,11],b_4:[0,11],b_inclination1:[0,11],b_inclination2:[0,11],b_inclination3:[0,11],b_inclination4:[0,11],back:[0,4,11],backward:[0,11],bagb:[0,11],barn:[0,11],base:[0,2,4,5,9,11,15,16,17,21],base_filenam:[5,15],basic:[5,15],batchmod:[0,11],beasor:[0,11],becaus:[0,2,5,7,9,11,14,17],becom:[0,1,2,4,11,12],been:[0,5,7,11,13],befor:[0,5,7,9,11,15,17],behaviour:[4,15,18],belczynski:[0,11],below:[0,3,7,11,12,15],berro:[0,11],bertolami:[0,11],best:[5,7,9,17],beta:[0,11],beta_reverse_nova:[0,11],beta_reverse_novae_geometri:0,better:[0,4,5,11,15],between:[0,2,11,19],bewar:[5,15],bh_belczynski:0,bh_fryer12_delai:0,bh_fryer12_rapid:0,bh_fryer12_startrack:0,bh_hurley2002:0,bh_prescript:[0,11],bh_spera2015:0,big:[0,7,11],biinari:15,bin:[0,9,11,17],binari:[2,5,7,9,11,14,15,16,17,21],binary_c2:[9,17],binary_c:[1,2,3,4,5,7,12,14,15,16,18],binary_c_api_funct:12,binary_c_cal:[5,15],binary_c_default:15,binary_c_grid_2a7732d03e594ef4b5dfe9051b41d9c0:15,binary_c_inline_config:1,binary_c_log_cod:[1,12,14],binary_c_macro:[0,11],binary_c_output:4,binary_c_paramet:[0,11,15],binary_c_python:[4,5,11,14,15],binary_c_task_:[0,11],binary_c_write_log_cod:1,binary_grid:[0,11],binary_star:21,binaryc:[1,4,13,18],binaryc_config:1,binaryc_json_seri:4,binarycdecod:4,binarycencod:4,binarycpython3:11,binarycpython:[1,2,3,4,5,6,9,16,17,18,19,21],binarygrid:15,bind:[0,11,12,14],birth:[0,11],bit:2,bivari:[0,11],black:[0,11],black_hol:0,bloecker:[0,11],blog:1,boltzman:16,boltzmann:[0,11],bondi:[0,11],bondi_hoyle_accretion_factor:[0,11],bool:[4,5,6,13,15,16],born:[0,11],bosswissam:4,both:[0,4,11,15],bottom:[0,11,15],bound:[2,19],boundari:2,brake:[0,11],branch:[0,4,11],branch_david:0,branchpoint:[5,15],breakup:[0,11],broken:[0,11],bse:[0,2,11,12,15],bse_opt:[5,14,15],bsf:[0,11],buffer:[0,11],build:[0,1,3,4,11],build_q_tabl:2,built:[0,1,4,9,13,17],burn:[0,11],busso:[0,11],bye:[0,11],c13_eff:[0,11],c5232be5c:[],c_auto_log:7,c_log:0,c_logging_cod:[7,12,14,15],calc_e_integr:2,calc_p_integr:2,calc_period_from_sep:21,calc_sep_from_period:[15,21],calc_total_probden:2,calcul:[0,2,4,5,7,11,15,21],calculate_constants_three_part_powerlaw:2,call:[0,1,4,5,7,11,13,14,15,16,18],call_binary_c_config:4,calls_filenam:15,can:[0,1,2,4,5,7,9,11,12,13,14,15,16,17,18],cannot:[5,12],canon:7,cap:[0,11],capsul:[1,4,11],captur:[0,4,11],carbon:[0,11],carbon_oxygen_white_dwarf:0,carlo:[0,7,11],carrasco:[0,11],carri:[0,11],cast:[4,13],catchtim:4,categor:11,categori:[11,15],categoris:4,caught:[4,14],caus:21,cbdisc:[0,11],cbdisc_albedo:[0,11],cbdisc_alpha:[0,11],cbdisc_eccentricity_pumping_dermin:0,cbdisc_eccentricity_pumping_method:[0,11],cbdisc_eccentricity_pumping_non:0,cbdisc_end_evolution_after_disc:[0,11],cbdisc_fail_ring_inside_separ:[0,11],cbdisc_gamma:[0,11],cbdisc_init_djdm:[0,11],cbdisc_init_dm:[0,11],cbdisc_inner_edge_strip:[0,11],cbdisc_inner_edge_stripping_timescal:[0,11],cbdisc_kappa:[0,11],cbdisc_mass_loss_constant_r:[0,11],cbdisc_mass_loss_fuv_multipli:[0,11],cbdisc_mass_loss_inner_l2_cross_multipli:[0,11],cbdisc_mass_loss_inner_viscous_accretion_method:[0,11],cbdisc_mass_loss_inner_viscous_accretion_method_equ:0,cbdisc_mass_loss_inner_viscous_accretion_method_gerosa_2015:0,cbdisc_mass_loss_inner_viscous_accretion_method_non:0,cbdisc_mass_loss_inner_viscous_accretion_method_young_clarke_2015:0,cbdisc_mass_loss_inner_viscous_angular_momentum_multipli:[0,11],cbdisc_mass_loss_inner_viscous_multipli:[0,11],cbdisc_mass_loss_ism_pressur:[0,11],cbdisc_mass_loss_ism_ram_pressure_multipli:[0,11],cbdisc_mass_loss_xray_multipli:[0,11],cbdisc_max_lifetim:[0,11],cbdisc_minimum_evaporation_timescal:[0,11],cbdisc_minimum_fr:[0,11],cbdisc_minimum_luminos:[0,11],cbdisc_minimum_mass:[0,11],cbdisc_no_wind_if_cbdisc:[0,11],cbdisc_outer_edge_strip:[0,11],cbdisc_outer_edge_stripping_timescal:[0,11],cbdisc_resonance_damp:[0,11],cbdisc_resonance_multipli:[0,11],cbdisc_torquef:[0,11],cbdisc_viscous_l2_coupl:[0,11],cbdisc_viscous_photoevaporative_coupl:[0,11],cbdisc_viscous_photoevaporative_coupling_inst:[0,11],cbdisc_viscous_photoevaporative_coupling_non:[0,11],cbdisc_viscous_photoevaporative_coupling_visc:[0,11],cee:[0,11],cell:[11,15],cemp:[0,11],cemp_cfe_minimum:[0,11],center:15,centr:5,central_object:[0,11],certain:[7,9,17],cf_amanda_log:[0,11],cflag:[9,17],chabrier:2,chandrasekhar:[0,11],chandrasekhar_mass:[0,11],chang:[0,1,2,4,5,6,7,9,11,12,15,17],chapter:[0,7,10],cheb:[0,11],check:[0,2,4,5,6,11,15,21],check_circular:4,chemic:[0,11],chen:[0,11],child:4,choic:[0,2,11,16],choos:[0,11,12,16],chose:14,chosen:[5,15],circular:[0,11],circumbinari:[0,11],circumstanti:[0,11],claei:[0,11],clark:[0,11],clean:[1,5,9,14,17],clean_up_custom_logging_fil:5,clear:4,clock:4,clone:[9,17],close:[0,11],cloud:[0,11],cls:4,cluster:8,cmdline:5,code:[0,1,5,6,9,11,12,14,15,16,17,18],collaps:[0,11],collapsar:[0,11],collect:21,collid:21,color:16,color_by_index:16,colour:[0,11],colour_log:[0,11],column:[14,15,16],column_nam:14,com:[1,4],combin:[1,4,5,7,12],combine_ensemble_with_thread_join:7,come:[2,9,17,19],comenv_bs:0,comenv_disc_angmom_fract:[0,11],comenv_disc_mass_fract:[0,11],comenv_ejection_spin_method:[0,11],comenv_ejection_spin_method_do_noth:[0,11],comenv_ejection_spin_method_sychron:[0,11],comenv_ejection_spin_method_synchron:0,comenv_merger_spin_method:[0,11],comenv_merger_spin_method_breakup:0,comenv_merger_spin_method_conserve_angmom:[0,11],comenv_merger_spin_method_conserve_omega:[0,11],comenv_merger_spin_method_specif:[0,11],comenv_ms_accret:[0,11],comenv_ms_accretion_fract:[0,11],comenv_ms_accretion_mass:[0,11],comenv_nandez2016:0,comenv_nelemans_tout:0,comenv_ns_accret:[0,11],comenv_ns_accretion_fract:[0,11],comenv_ns_accretion_mass:[0,11],comenv_post_eccentr:[0,11],comenv_prescript:[0,11],comenv_splitmass:[0,11],comenv_undef:0,command:[0,1,5,7,9,11,15,17],commandlin:15,comment:15,commit:4,common:[0,11,12,14,15],compact:15,companion:[0,11],compar:[0,7,11,15],compil:[1,9,12,15,17],compile_shared_lib:1,complet:15,complex:[5,7,12,15,16],compon:[4,16],comput:[0,8,11],condit:[5,12,15],condor:[5,7,8],condor_grid:5,config:[1,4,7,9,17],config_fil:1,configur:[2,5,14,15],conjunct:13,conserv:[0,11],consid:[0,1,2,4,5,7,11,16],constant:[0,2,11,16],construct:[0,1,11,14,15],contain:[0,1,2,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20],content:[3,4,9,11],context:4,continu:[5,15],control:[0,11,15],convect:[0,11],converg:[0,11],convert:[2,4,5],convert_byt:4,cool:[0,11],copi:[0,5,11,21],core:[0,5,7,11,15,16],core_co:12,core_h:12,core_helium_burn:0,core_mass:[0,11,12],correct:[0,2,5,14,16,21],correctli:[9,14,16,17],correspond:16,corretor:[0,11],cosmic:2,cosmic_sfh_madau_dickinson2014:2,could:[0,4,11,15],count:[4,7],count_keys_recurs:4,counter:7,coupl:[0,11],cours:16,cover:13,coverag:[9,17],cowd:[0,11],cpu:[0,11],cpython:11,crap_paramet:[0,11],creat:[2,4,5,12,14,15],create_and_load_logging_funct:[1,12],create_arg_str:4,create_hdf5:4,creation:11,critic:[0,11],cross:[0,11],ctype:1,cuntz:[0,11],current:[0,4,9,11,12,17],custom:[0,1,3,4,5,7,9,11,14,15,16,18],custom_log:[5,7,14],custom_logging_cod:[1,12,14,18],custom_logging_func_memaddr:[7,11,12],custom_logging_funct:[7,9,10,12,14,15],custom_logging_info:5,custom_logging_memaddr:12,custom_logging_print_stat:14,custom_logging_stat:15,custom_opt:[5,14,15],custom_output_funct:12,custom_sort_dict:4,custom_tmp_dir:1,customis:16,cvode:[0,11],d20a4c74d20a43b881c0c9e5def5f76c:15,dai:[0,2,11,12,14,15,21],damp:[0,11],darwin:0,dat:[0,4,15],data:[0,4,5,7,11,14,15,18],data_dict:2,data_dir:[4,5,7,15],datadir:[5,15],datafram:[14,16],dataset:[4,15],date:5,david:[0,9,11,17],david_logging_funct:[0,11],dd7:[0,11],deactiv:[0,11],deal:[4,14],death:[0,11],debug:[0,7,11,15],decai:[0,11],decid:[0,4,11,12],decod:4,decreas:[0,11],deeper:[5,15],def:[14,15],default_to_metal:[0,11],defaultdict:4,defer:[0,11],defin:[0,1,2,5,11,16],definit:[1,21],degener:[0,11],degre:[0,11],delai:0,delta_mcmin:[0,11],den:[0,11],densiti:2,depend:[0,2,9,11,16,17],deprec:[0,11],dermin:[0,11],describ:[0,2,7,11],descript:[0,2,4,7,9,10,11,13],design:[5,16],desir:[0,11],destruct:[5,15],detail:[0,4,11,14],detect:[0,11],determin:[0,5,11,12,15,21],deton:[0,11],dev:[0,11],develop:1,deviat:2,dewi:[0,11],dex:[0,11],diagnost:7,diagram:[0,11,16],dickonson:2,dict2:4,dict:[1,2,4,5,6,13,14,15,20],dict_1:4,dict_2:4,dict_kei:[13,14],dictionari:[1,2,3,4,5,6,7,15,16,20],did:[4,9,17],differ:[0,4,5,9,11,15,16,17],dimmer:[0,11],dir:[9,17],direct:[0,5,11],directli:[4,7,14],director:7,directori:[0,3,4,5,7,9,11,15,17],disabl:[0,11,15],disable_debug:[0,11],disable_end_log:[0,11],disable_ev:[0,11],disc:[0,11],disc_legacy_log:[0,11],disc_log2d:[0,11],disc_log:[0,11],disc_log_directori:[0,11],disc_log_dt:[0,11],disc_log_level_non:0,disc_log_level_norm:0,disc_log_level_normal_first_disc_onli:0,disc_log_level_subtimestep:0,disc_log_level_subtimestep_first_disc_onli:0,disc_n_monte_carlo_guess:[0,11],disc_stripping_timescale_infinit:0,disc_stripping_timescale_inst:0,disc_stripping_timescale_orbit:0,disc_stripping_timescale_visc:0,disc_timestep_factor:[0,11],discret:15,discs_circumbinary_from_comenv:[0,11],discs_circumbinary_from_wind:[0,11],disk:[0,5,11],dispers:[0,11],displai:[0,11],dist:[9,17],distefano:2,distribut:[0,2,5,8,11,15],distribution_funct:[9,10,15],divid:8,dlnm1:[5,15],dlog10per:15,dlogp:2,do_dry_run:7,doc:[4,6,9,15,17],doc_fetch:2,docstr:[9,14,16,17],document:[4,6,7,10,15],doe:[0,2,4,5,7,11,12,13,14,15,21],doesn:[5,7],doesnt:6,doing:[0,1,5,6,9,11,17],don:[2,4,7],done:[0,4,5,9,11,15,17],donor:[0,11,21],donor_limit_dynamical_multipli:[0,11],donor_limit_envelope_multipli:[0,11],donor_limit_thermal_multipli:[0,11],donor_rate_algorithm_bs:0,donor_rate_algorithm_claeys2014:0,dont:11,doubl:[12,15],down:15,dphasevol:[5,15],dr2:[0,11],dr3:[0,11],drai:[0,11],dredg:[0,11],drop:14,dry:7,dstep:2,dt_limit:13,dtfac:[0,11],dtlimit:4,dtm:[1,12,15],due:[9,17],dummi:[2,16],dump:[0,4,11,14],dumpvers:[0,11],duquennoi:2,duquennoy1991:2,dure:[0,11],dust:[0,11],dwarf:[0,11],dynam:[0,11],e2_hurley_2002:0,e2_izzard:0,e2_mint:0,e2_prescript:[0,11],each:[0,2,4,5,7,11,15],eagb:[0,11],eagb_wind_beasor_etal_2020:0,eagb_wind_bs:0,eagb_wind_goldman_etal_2017:0,eagbwind:[0,11],eagbwindfac:[0,11],earli:[0,11],early_asymptotic_giant_branch:0,easi:[4,14],easier:[4,15],ecc2:2,ecc3:2,ecc:[2,5,14,15],eccentr:[0,2,11,12,14,15,16,21],eccentric_rlof_model:[0,11],eccentricity_quadrupl:[0,11],eccentricity_tripl:[0,11],echo:[0,11],eddington:[0,11],edg:[0,5,11,15],edit:12,edu:[0,11],effect:[0,2,7,11,12],effective_metal:[0,11],effici:[0,11],egg:[9,17],eggleton:[0,11,21],either:[0,4,5,7,9,11,15,17,18],eject:[0,11],elabor:12,eld:[0,11],eldridg:[0,11],electon:[0,11],electron:[0,11],element:[0,1,4,7,11,13,16],els:12,email:4,emp:[0,11],emp_feh_maximum:[0,11],emp_logg_maximum:[0,11],emp_minimum_ag:[0,11],empti:[4,6,14],enabl:[0,11],encod:4,encount:7,end:[0,2,4,7,11],end_index:2,end_timestamp:15,energi:[0,11],enhanc:[0,11],enlarg:[0,11],enough:2,ensembl:[0,4,7,11,13],ensemble_def:[0,11],ensemble_dictionari:4,ensemble_dt:[0,11],ensemble_factor_in_probability_weighted_mass:7,ensemble_filter_:[0,11],ensemble_filters_off:[0,11],ensemble_json:4,ensemble_legacy_ensembl:[0,11],ensemble_list:5,ensemble_logdt:[0,11],ensemble_logtim:[0,11],ensemble_macro:[0,11],ensemble_output_:7,ensemble_startlogtim:[0,11],ensure_ascii:4,enter:[0,9,11,17],enthalpi:[0,11],entir:[12,14],entri:[4,5],env:[9,11,16,17],envelop:[0,11],equal:[0,4,15],equat:[0,11],equation_of_state_algorithm:[0,11],equation_of_state_paczynski:0,equatori:[0,11],equival:7,errno:[9,17],error:[0,4,7,9,11,15,17],errors_exceed:15,errors_found:15,esa:2,escap:[0,11],escape_fract:[0,11],escape_veloc:[0,11],eta:[0,11],etal:[0,11],etc:[0,4,5,8,9,11,14,15,16,17,18],euler:[0,11],evalu:[2,5,15,21],evan:[0,11],evapor:[0,11],evaporate_escaped_orbiting_object:[0,11],even:13,event:[0,11],everi:[0,9,11,17],everyth:[5,7,14,15],everytim:[9,17],evid:[0,11],evolut:[0,1,5,7,11,14,15,16],evolution_split:[0,11],evolution_splitting_maxdepth:[0,11],evolution_splitting_sn_eccentricity_threshold:[0,11],evolution_splitting_sn_n:[0,11],evolution_typ:[7,15],evolutionari:[0,11,14],evolv:[0,3,5,7,11,12],evolve_popul:15,evolve_singl:[5,12,14],exact:[1,4,7],exactli:[0,11],exampl:[1,2,4,5,14,18],example_above_m:12,example_compact_object:15,example_dco:15,example_df:14,example_head:4,example_log:18,example_log_co:[1,12],example_logging_string_co:12,example_logging_string_post_m:12,example_massloss:[12,14],example_output:14,example_parse_output:4,example_pop:[14,15],example_pop_set:15,example_python_population_result:15,example_sn:12,exce:[0,7,11],except:[4,5,6,7,11,15,16],execut:[0,5,7,9,11,15,17],exist:[0,5,6,11,15],exist_ok:[4,15],exit:[0,4,11],exp:[5,15],expand:[15,18],expect:[9,11,17],experiment:[0,4,11],explain:[3,4],explicitli:[0,1,11],explod:[0,11],explos:[0,11],expoenti:[0,11],expon:[0,11],export_all_info:[5,15],express:[0,11],extend:[0,9,17],extens:11,extern:[0,11],extra:[0,3,5,7,9,11,15,18],extra_text:6,extract:[4,15],extract_ensemble_json_from_str:4,extrapol:[2,7],fabian:[0,11],fabian_imf_log:[0,11],fabian_imf_log_tim:[0,11],fabian_imf_log_timestep:[0,11],factor:[0,2,4,7,11],fade:[0,11],fail:[0,4,7,9,11,17],fail_sil:4,failed_count:15,failed_prob:15,failed_system:7,failed_system_log:7,failed_systems_error_cod:15,failed_systems_threshold:7,failsaf:14,failur:[0,11],fallback:[0,12],fallback_mass:12,fals:[0,4,5,7,11,13,15,16],fancy_parsing_funct:18,far:[0,11],farmer:[0,11],fase:15,fast:[0,11],faster:15,favorit:14,featur:[3,9,15],feed:7,ferguson:[0,11],fetch:14,few:[0,11],field:[0,11],fig:[0,2,11],figur:[7,16],file:[0,1,4,5,6,7,8,9,11,14,15,16,17,18],file_log:[0,11],filehandl:6,filenam:[0,1,4,5,7,11,14,15,18],filenotfounderror:[9,17],filepath:1,fill:14,fill_data:2,filter:[0,4,11,13],filter_arg_dict:4,filter_valu:[4,13],fin:[0,11],find:[4,5,7,9,15,17],finish:[4,15,16],first:[0,2,4,5,9,11,14,15,17,21],first_giant_branch:0,fishlock:[0,11],fit:[0,2,4,5,11,14,21],fix:[0,2,4,5,11,14,15,16],flag:[0,1,4,7,11],flash:[0,11],flat:[2,7],flatsect:[2,15],flaw:5,float_overflow_check:[0,11],flto:[9,17],fold:2,follow:[0,2,4,7,9,11,12,16,17],forc:[0,9,11,17],force_circularization_on_rlof:[0,11],force_corotation_of_primary_and_orbit:[0,11],form:[0,4,5,6,11,15],formal:[0,11],format:[0,2,4,5,11,12,14,15],format_ensemble_result:4,formula:[0,11],forward:[0,11],found:[2,9,15,17],four:[0,11],fpic:1,fraction:[0,2,7,11,15],framework:11,free_persistent_data_memaddr_and_return_json_output:11,free_store_memaddr:11,frequenc:[0,11],friction:[0,11],fring:[0,11],from:[0,2,4,5,7,13,14,15,16,21],from_binary_c_config:1,fryer:0,ftz:[9,17],full:[3,4,7,12],full_path:4,further:[2,15],fuv:[0,11],gaia:[0,2,11],gaia_colour_transform_method:[0,11],gaia_conversion_ubvri_bivariate_jordi2010:[0,11],gaia_conversion_ubvri_riello2020:[0,11],gaia_conversion_ubvri_univariate_evans2018:[0,11],gaia_conversion_ubvri_univariate_jordi2010:[0,11],gaia_conversion_ugriz_bivariate_jordi2010:[0,11],gaia_conversion_ugriz_riello2020:[0,11],gaia_conversion_ugriz_univariate_evans2018:[0,11],gaia_conversion_ugriz_univariate_jordi2010:[0,11],gaia_l_binwidth:[0,11],gaia_teff_binwidth:[0,11],gain:7,galact:[0,11],gallino:[0,11],gamma:[0,11],gap:[0,11],garcia:[0,11],gauss:[0,11],gaussian:2,gaussian_func:2,gaussian_normalizing_const:2,gb_reimers_eta:[0,11],gb_wind_beasor_etal_2020:0,gb_wind_goldman_etal_2017:0,gb_wind_reim:0,gb_wind_schroeder_cuntz_2005:0,gbwind:[0,11],gbwindfac:[0,11],gcc:[1,9,17],gce:[0,11],gener:[0,1,2,4,5,6,7,11,12,14,15,16],general_info:4,generalis:2,geometr:[0,11],gerosa:[0,11],get:[0,2,3,4,5,6,9,12,14,15,17,18,21],get_arg_kei:4,get_default:[4,13],get_help:[4,13],get_help_al:[4,5,13],get_help_sup:[4,13],get_integration_constant_q:2,get_max_multipl:2,get_moe_di_stefano_dataset:4,get_siz:4,giant:[0,11],giant_branch:0,git:[0,4,15],git_branch:4,git_build:4,github:4,gitlab:9,give:[0,2,4,11,21],given:[0,1,2,4,5,7,11,18,21],global:[0,2,11],global_dict:2,gmax:2,gmin:2,gnu:11,goe:[0,4,5,11,12,14,16],gogo:[0,11],going:[9,17],goldman:[0,11],gonna:2,good:[0,7,11,14,15,21],gov:[0,11],gravit:[0,11,15],gravitational_radiation_bs:0,gravitational_radiation_bse_when_no_rlof:0,gravitational_radiation_landau_lifshitz:0,gravitational_radiation_landau_lifshitz_when_no_rlof:0,gravitational_radiation_model:[0,11],gravitational_radiation_modulator_:[0,11],gravitational_radiation_modulator_j:[0,11],gravitational_radiation_non:0,grb:[0,11],great:[0,11],greater:[0,11],grevess:[0,11],grid:[0,3,4,5,9,10,11,12,14],grid_class:[9,10],grid_cod:5,grid_opt:[5,7,14,15],grid_options_default:6,grid_options_defaults_dict:6,grid_options_descript:[6,15],grid_options_description_check:6,grid_options_help:6,grid_vari:[7,15],grid_variable_numb:15,gridcode_filenam:7,gridtyp:[5,15],group:4,gsl:[9,17],gsl_dir:[9,17],guess:[0,2,11],h5py:[9,17],hachisu:[0,11],hachisu_disk_wind:[0,11],hachisu_ignore_qcrit:0,hachisu_qcrit:[0,11],hack:6,had:5,half:[0,11],hall:[0,11],handi:[0,11],handl:[0,3,4,5,7,11,14,18,21],handle_ensemble_string_to_json:4,happen:[0,11],hardcod:[12,15],has:[0,1,4,5,7,11,12,13,15],have:[0,2,3,4,5,6,7,9,11,12,14,15,16,17],hbb:[0,11],hbbtfac:[0,11],hdf5:4,hdf5file:4,header:[1,4,12,14,15],headerlin:15,headlin:7,hegb:0,hehg:0,height:[2,15],helium:[0,11],helium_flash_mass_loss:[0,11],helium_white_dwarf:0,help:[0,3,4,6,11,14,15],help_al:[0,11],hem:0,henc:[0,11],hendrik:[9,17],here:[1,4,5,7,11,12,14,16],hertzsprung:[0,11],hertzsprung_gap:0,hertzstrpung:[0,11],heuvel:[0,11],hewd:[0,11],hewd_hewd_ignition_mass:[0,11],hex:7,high:[0,2,11],higher:[0,2,4,7,9,11,15,17],his:2,histori:2,hold:7,hole:[0,11],home:11,homogen:[0,11],hood:14,hopefulli:[0,11],hot:[0,11],how:[0,4,5,7,11,12,14,15],howev:[0,11,12,15],hoyl:[0,11],hpc:[5,8],hpc_function:[9,10],hr_diagram:16,hrd:[0,11],hrdiag:[0,11],hrdiag_output:[0,11],html:[9,15,17],http:[0,1,2,4,11,15],hurlei:[0,11],hut:[0,11],hybrid:[0,11],hydro:[0,11],hydrogen:[0,11],ibc:[0,11],id_cor:12,idea:[15,16],idum:[0,11],ignit:[0,11],ignor:[0,5,7,9,11,12,14,15,17],iia:[0,11],iloc:14,imf:[0,2,11],imf_chabrier2003:2,imf_scalo1986:2,imf_scalo1998:2,imf_tinsley1980:2,immedi:[0,11],implement:[0,5,7,11],impli:[0,11],impos:15,improv:2,inclin:[0,11],inclination1:[0,11],inclination2:[0,11],inclination3:[0,11],inclination4:[0,11],inclini:[0,11],incliniation_quadrupl:[0,11],incliniation_tripl:[0,11],includ:[0,1,2,4,5,9,11,12,14,15,16,17],include_binary_c_default:[5,15],include_binary_c_help_al:[5,15],include_binary_c_version_info:[5,15],include_default:[5,15],include_popul:15,include_population_set:5,incom:[0,11],increas:[0,11],inde:[0,11],indent:[4,14],index:[0,2,9,11,13,14],indic:[0,2,11],individu:[3,9],individual_nova:[0,11],induc:[0,11],inertia:[0,11],info:[4,5,9,11,13,15,16,17],inform:[0,1,3,4,5,6,12,14,15,16],init:5,init_abund:[0,11],init_abund_dex:[0,11],init_abund_mult:[0,11],init_abunds_onli:[0,11],initi:[0,2,5,11,13,14],initial_abundance_hash:5,initial_abundance_mix:[0,11],initial_abunds_onli:[0,11],initial_mass:14,inner:[0,11],input:[1,2,4,5,7,9,11,13,14,16,21],input_dict:4,insert:[5,15],insid:[0,11],inspect:[4,14,16],inspect_dict:4,inspir:[1,16,21],instabl:[0,11],instanc:[4,14,15],instant:[0,11],instantli:[0,11],instead:[0,4,7,11],integ:[0,5,7,11,21],integr:2,integrals_str:2,interact:[0,6,11],interfac:[4,9,11,17],interfer:[9,17],intern:[0,7,11,13],internal_buff:[0,11],internal_buffering_off:0,internal_buffering_print:0,internal_buffering_stor:0,interpol:[2,5],interpolate_in_mass_izzard2012:2,interpolator_nam:2,intershel:[0,11],interstellar:[0,11],intger:[0,11],intro:[0,11],invers:21,involv:[0,11],inward:[0,11],ipynb:15,is_capsul:4,isfil:15,isn:[4,5],isnt:15,isotop:[0,4,11,13],isotope_hash:5,isotope_list:5,item:1,iter:4,its:[0,4,5,6,9,11,15,16,17,18],itself:[4,7,9,12,14,17],iwamoto:[0,11],izzard2012_period_distribut:2,izzard:[0,9,11,17],jager:[0,11],jaschek:2,jeff:[9,17],jia:[0,11],john:[0,11],join:[11,12,14,15],jordi:[0,11],json:[4,5,7,11,14,15],jsondecod:4,jsonencod:4,jupyt:[9,17],just:[0,2,4,5,7,11,15,21],kap:[0,11],kappa:[0,11],kaps_rentrop:[0,11],karaka:[0,11],keep:[5,15],kei:[1,2,4,5,6,7,13,14,15,16],kelvin:[0,11],keplerian:[0,11],keyword:[16,18],kick:[0,7,11],kick_backward:0,kick_forward:0,kick_inward:0,kick_outward:0,kick_random:0,kick_straight_up:0,kick_velocity_custom:0,kick_velocity_fix:0,kick_velocity_maxwellian:0,kill:[1,12,15],kim:[0,11],kind:[0,11],kippenhahn:[0,11],know:[0,1,5,6,11,13,14],known:[0,2,5,11,14,15,18],kroupa2001:[2,5,15],kroupa:2,krticka:0,ktg93:2,kwarg:[5,16,18],lambda:[0,11],lambda_c:[0,11],lambda_ce_dewi_tauri:0,lambda_ce_klencki_2020:0,lambda_ce_polytrop:0,lambda_ce_wang_2016:0,lambda_enthalpi:[0,11],lambda_ionis:[0,11],lambda_min:[0,11],lambda_mult:[0,11],lambda_multipli:[0,11],lambda_v:2,lamer:[0,11],landau:[0,11],langer:[0,11],larger:[0,11],last:2,lastli:[11,14],latter:[0,11],law:2,law_const:2,lbv:[0,11],ld_library_path:[9,17],lead:[0,11,15,21],learn:12,least:[9,17],leav:[0,11],left:[0,11],legaci:[0,11],legacy_yield:[0,11],len:[14,15],lengthen:[0,11],less:[0,1,2,3,11,14],let:[5,14,15],level:[1,4],li7:[0,11],lib:[9,11,14,17],libbinary_c:7,libcustom_logging_5d7779e8190e4b79b10c7e6a44cb0e7:14,libcustom_logging_8967553693ac4e11a49c42d4eef773e8:14,libcustom_logging_e9c2bec7f15541eb847fc6013e48e7:[],libcustom_logging_eac2dfc438a14e5a9f5be98b1b6b4294:[],libgsl:[9,17],libmemo:[9,17],librari:[0,1,5,7,11,12,18],library_path:[9,17],librinterpol:[9,17],lies:[0,11],lifetim:[0,11,15],lifshitz:[0,11],like:[0,1,4,5,7,9,11,15,16,17,19],limit:[0,11,15,16],line:[1,4,5,7,9,12,14,15,16,17],linear2:7,linear:[0,2,7,11],linear_extrapolation_q:2,linearli:19,linker:1,linspac:19,linux:11,list:[0,1,2,4,7,11,14,15,18,19],list_arg:[0,11],list_of_sub_kei:2,lit:[0,11],lithium:[0,11],lithium_gb_post_1dup:[0,11],lithium_gb_post_heflash:[0,11],lithium_hbb_multipli:[0,11],lithium_t:[0,11],littleton:[0,11],liu:[0,11],llnl:[0,11],lnm1:[5,15],load:[0,1,4,5,7,11,12,14,15,16],load_logfil:4,lobe:[0,11,21],local:2,locat:[0,2,7,9,11,17],lodder:[0,11],log10:[0,2,11,15],log10m1:7,log10p:2,log10per:15,log10pmin:2,log:[0,1,2,3,4,5,7,9,11,14,16,17,18,21],log_arg:7,log_args_dir:7,log_arrow:0,log_every_timestep:[12,14],log_fil:7,log_filenam:[0,11,14,18],log_runtime_system:7,logarithm:2,logensembletim:[0,11],logfil:[4,9,14,17],logg:[0,11],logger:15,logging_dict:1,logging_lin:12,logic:[1,5,7,12],logmass:2,logp:2,logper:2,logperiod:2,long_spectral_typ:2,longer:[0,11],longnam:[5,15],look:[1,4,9,15,17],lookback:[0,11],loon:[0,11],loop:[5,14,15],loos:16,lose:[0,11],loss:[0,11,14],lost:[0,11],lot:[4,7,15,18],low:[0,2,11],low_mass_m:0,low_mass_main_sequ:0,lower:[0,2,5,11,15,19],lsoda:[0,11],lsun:[0,11,16],lugaro:[0,11],luminos:[0,11,16],luminosity_1:16,luminosity_2:16,lynnett:[0,11],m_1:[0,5,11,12,13,14,15,18],m_2:[0,11,12,14,15],m_3:[0,11],m_4:[0,11],m_max:[2,5,15],m_min:[5,15],maccretor:[0,11],machin:[7,9,17],macro:[0,4,11,13],madau:2,maeder:[0,11],magellan:[0,11],magnet:[0,11],magnetic_braking_algorithm:[0,11],magnetic_braking_algorithm_andronov_2003:0,magnetic_braking_algorithm_barnes_2010:0,magnetic_braking_algorithm_hurley_2002:0,magnetic_braking_algorithm_rappaport_1983:0,magnetic_braking_factor:[0,11],magnetic_braking_gamma:[0,11],magnitud:4,mai:[0,11],main:[0,1,7,9,11,12,15,17],main_sequ:[0,11],mainli:8,major:[0,11],make:[0,1,2,4,5,7,9,11,14,15,16,17,18],make_build_text:4,makedir:[4,15],manag:[4,9,17],mani:[0,5,7,11,13,15],manual:12,manufactur:[0,11],map:7,maria:[0,11],mass:[0,1,2,4,5,7,11,13,14,15,16,18,21],mass_1:[15,16],mass_2:[15,16],mass_accretion_for_eld:[0,11],mass_accretor:21,mass_donor:21,mass_evolut:16,mass_for_hestar_ia_low:[0,11],mass_for_hestar_ia_upp:[0,11],mass_of_pmz:[0,11],mass_str:2,massiv:[0,2,11],massless:[0,11],massless_remn:0,master:[7,16],match:[0,4,11,14,15,16],materi:[0,11],math:[5,15],matplotlib:[9,16,17],matter:[0,11],mattsson:[0,11],mattsson_mass_loss:[0,11],mattsson_orich_tpagbwind:[0,11],max:[0,2,11,12,15],max_bound:[2,19],max_evolution_tim:[0,1,11,12,14,15],max_hewd_mass:[0,11],max_model_numb:[0,11],max_multipl:2,max_neutron_star_mass:[0,11],max_queue_s:7,max_stellar_angmom_chang:[0,11],max_stellar_type_1:[0,11],max_stellar_type_2:[0,11],max_stellar_type_3:[0,11],max_stellar_type_4:[0,11],max_tim:14,max_val:2,maximum:[0,2,7,11,12,21],maximum_mass_ratio_for_instant_rlof:[0,11],maximum_mass_ratio_for_rlof:21,maximum_mcbagb_for_degenerate_carbon_ignit:[0,11],maximum_nuclear_burning_timestep:[0,11],maximum_timestep:[0,11],maximum_timestep_factor:[0,11],maxmimum:[0,11],maxwellian:[0,11],mayb:16,mayor:2,mc13_pocket_multipli:[0,11],mch:[0,11],mcmin:[0,11],mdonor:[0,11],mean:[0,2,4,5,7,9,11,17],meant:7,measur:4,medium:[0,11],mega:2,memaddr:[11,12],memori:[1,5,7,11,12,21],menv:[0,11],merg:[0,2,4,7,11],merge_dict:[4,13],merge_multipl:2,merger:[0,11],merger_angular_momentum_factor:[0,11],merger_mass_loss_fract:[0,11],mesa:[9,17],mesasdk_init:[9,17],mesasdk_root:[9,17],messag:4,mestel:[0,11],met:[5,15],metal:[0,2,11,12,14,15,21],method:[0,5,7,11,12,14,15],meynet:[0,11],might:[4,5,9,15,17],milki:[0,11],miller:[0,11],min:[2,12,15],min_bound:[2,19],min_p:2,min_per:2,min_val:2,minimal_verbos:4,minimum:[0,2,4,7,11,21],minimum_co_core_mass_for_carbon_ignit:[0,11],minimum_co_core_mass_for_neon_ignit:[0,11],minimum_donor_menv_for_comenv:[0,11],minimum_envelope_mass_for_third_dredgeup:[0,11],minimum_helium_ignition_core_mass:[0,11],minimum_mcbagb_for_nondegenerate_carbon_ignit:[0,11],minimum_orbital_period_for_instant_rlof:[0,11],minimum_period_for_rlof:21,minimum_separation_for_instant_rlof:[0,11],minimum_separation_for_rlof:21,minimum_time_between_pn:[0,11],minimum_timestep:[0,11],mint:[0,11],mint_data_cleanup:[0,11],mint_dir:[0,11],mint_disable_grid_load_warn:[0,11],mint_fallback_to_test_data:0,mint_hard_max_nshel:0,mint_hard_min_nshel:0,mint_kippenhahn:[0,11],mint_kippenhahn_companion_stellar_typ:[0,11],mint_kippenhahn_stellar_typ:[0,11],mint_maximum_nshel:0,mint_maximum_shell_mass:[0,11],mint_metal:[0,11],mint_minimum_nshel:0,mint_minimum_shell_mass:[0,11],mint_ms_rejuven:[0,11],mint_nshel:0,mint_nuclear_burn:[0,11],mint_remesh:[0,11],mint_use_zams_profil:[0,11],mira:[0,11],misc:[9,11],miscellan:[4,13],miss:[0,4,6,11],mix:[0,4,7,11],mixtur:[0,11],mmax:2,mmin:[2,7],mnra:21,model:[0,1,7,11,12,14,15],modif:3,modifi:[0,11,12],modul:[0,6,7,10,11,13,15],modulo:7,moe:[2,4,5,9,15],moe_di_stefano_2017:5,moe_di_stefano_2017_multiplicity_fract:2,moe_di_stefano_2017_pdf:2,moment:[0,11,12,15,19],momenta:[0,11,16],momentum:[0,11],mont:[0,7,11],monte_carlo_kick:[0,11],more:[0,1,3,4,5,7,9,11,12,13,14,15,16,17,19],most:[4,11],mostli:[4,6,7,15,16,18],move:[0,11],msun:[0,2,11,12,14],much:[0,4,11,15],multi:7,multipl:[0,2,4,7,11,15],multiplc:[0,11],multipli:[0,4,7,11],multiplicity_arrai:2,multiplicity_fraction_funct:7,multiplicity_model:7,multiplicity_modul:7,multiply_values_dict:[4,13],multiprocess:7,must:[0,2,11,14,15],my_stellar_data:[1,12,15],myr:[0,11,14],n100:[0,11],n100_z0:[0,11],n100h:[0,11],n100l:[0,11],n10:[0,11],n150:[0,11],n1600:[0,11],n1600c:[0,11],n200:[0,11],n20:[0,11],n300c:[0,11],n40:[0,11],naked_helium_star_giant_branch:0,naked_helium_star_hertzsprung_gap:0,naked_main_sequence_helium_star:0,name:[1,4,5,6,11,13,15,18,20],natur:[0,11],nauenberg:[0,11],nearer:[0,11],nebula:[0,11],necessari:[4,5,15],need:[0,2,5,9,11,12,14,15,17],neg:[0,4,11],neither:[0,5,11],neleman:[0,11],nelemans_gamma:[0,11],nelemans_max_frac_j_chang:[0,11],nelemans_minq:[0,11],nelemans_n_comenv:[0,11],nelemans_recalc_eccentr:[0,11],nemp:[0,11],nemp_cfe_minimum:[0,11],nemp_nfe_minimum:[0,11],nenamg:[0,11],neon:[0,11],nest:[4,5,15],network:[0,11,13],neutrn:[0,11],neutron:[0,11,15],neutron_star:0,never:[0,11],newer:[0,2,11],newli:[0,11],newopt:2,newton:[0,11],next:[4,15],nice:[1,5,16],nieuwenhuijzen:[0,11],nieuwenhuijzen_windfac:[0,11],nmax:2,no_thermohaline_mix:[0,11],noecho:[0,11],noechonow:[0,11],noel:[0,11],nolowq:7,nomin:[0,11],non:[0,7,11],nonconservative_angmom_gamma:[0,11],none:[0,1,2,4,5,6,7,11,15,21],nonetyp:15,nonzero:7,nor:[0,11],norm:7,normal:[0,4,11],normalis:[2,7],normalize_dict:2,normalize_multipl:7,notabl:15,note:[0,7,11],notebook:[9,11,12,13,14,15,17],notebook_api_funct:14,notebook_custom_log:[14,15],notebook_individual_system:[12,14,15],notebook_popul:14,noteworthi:3,noth:[5,7],notifi:18,nova:[0,11],nova_faml_multipli:[0,11],nova_irradiation_multipli:[0,11],nova_retention_algorithm_claeys2014:0,nova_retention_algorithm_const:0,nova_retention_algorithm_hillman2015:0,nova_retention_fract:[0,11],nova_retention_method:[0,11],nova_timestep_accelerator_index:[0,11],nova_timestep_accelerator_max:[0,11],nova_timestep_accelerator_num:[0,11],now:[0,2,4,11,12,14,15],nuclear:[0,11],nuclear_mass_hash:5,nuclear_mass_list:5,nucleosynthesi:[0,4,11],nucleosynthesis_sourc:[4,13],nucreacmult:[0,11],nucsyn:[9,11],nucsyn_angelou_lithium:[0,11],nucsyn_gce_outflow_check:[0,11],nucsyn_hbb:[0,11],nucsyn_metal:[0,11],nucsyn_network:[0,11],nucsyn_network_error:[0,11],nucsyn_s_process:[0,11],nucsyn_solv:[0,11],nucsyn_third_dredge_up:[0,11],nugi:[0,11],num_ansi_colour:0,number:[0,2,4,5,7,9,11,15,17],numer:4,numpi:[4,9,14,17,19],obj:4,object:[0,3,4,5,7,8,11,16],object_hook:4,object_pairs_hook:4,object_parse_funct:14,obtain:0,obvious:12,occur:[0,11,21],off:[0,11,15],off_m:14,offset:[0,11],ohio:[0,11],old:7,old_solut:[9,17],omega:[0,11],onc:[0,11],one:[0,4,5,7,11,13,15,16],onewd:0,onli:[0,4,5,7,11,12,15,21],onset:[0,11],onto:[0,2,11],opac:[0,11],opacity_algorithm:[0,11],opacity_algorithm_ferguson_op:0,opacity_algorithm_paczynski:0,opacity_algorithm_star:0,opal:[0,11],open:[14,15],opm:2,opt:[2,4,11],option:[0,1,2,4,5,9,10,11,15,17,21],orb:[5,15],orbit:[0,2,11,16,21],orbit_evolut:16,orbital_inclin:[0,11],orbital_inclinationi:[0,11],orbital_period:[0,11,12,14,15,21],orbital_period_quadrupl:[0,11],orbital_period_tripl:[0,11],orbital_phas:[0,11],orbital_phase_quadrupl:[0,11],orbital_phase_tripl:[0,11],orbiting_object:[0,11],orbiting_objects_close_pc_threshold:[0,11],orbiting_objects_log:[0,11],orbiting_objects_tides_multipli:[0,11],orbiting_objects_wind_accretion_multipli:[0,11],order:[3,4,5,15],ordereddict:4,org:[0,2,11],origin:[9,17],other:[0,1,2,4,6,7,9,11,13,14,15,16,17],otherwis:[0,5,6,7,11],out:[4,6,7,12,13],outcom:[0,11],outer:[0,11],outfil:[5,15],outfile_nam:1,outfilenam:15,output:[1,3,4,5,7,9,11,12,13,14,16,17,18,21],output_dict:14,output_dir:[5,14,15],output_fil:[4,6,14],output_filenam:[5,15],output_lin:4,outsid:[0,2,11],outward:[0,11],over:[4,5,13,14,15],overflow:[0,11],overlap:4,overrid:2,overriden:15,overshoot:[0,11],overspin_algorithm:[0,11],overspin_bs:[0,11],overspin_massloss:[0,11],overview:11,own:[5,7,9,12,14,15,17],oxygen:[0,11],oxygen_neon_white_dwarf:0,packag:[4,9,11,15,17,19],paczynski:[0,11],page:[0,9,11,15,17],pair:[0,4,11],panda:[4,9,14,16,17],pane:16,panel:[0,11],paper:[0,11],param_nam:4,paramet:[1,2,3,4,5,6,7,9,11,12,14,15,16,18,19,21],parameter_nam:[4,5,11,13,15],parameter_value_input_typ:[4,13],pars:[3,4,5,14,15,16,18],parse_binary_c_version_info:4,parse_cmdlin:5,parse_const:4,parse_float:4,parse_funct:[5,7,14,15,18],parse_function_hr_diagram:16,parse_function_mass:16,parse_function_orbit:16,parse_int:4,parsec:2,part:[2,5,11,14,15,21],partial:[0,11],particularli:[0,11],pasp:2,pass:[5,7,9,11,12,14,15,16,17,18],path:[4,7,9,14,15,17],patho:[9,17],pdf:[0,2,9,11,17],pend:[0,11],per:[0,4,5,7,11,14,15,21],percentag:[0,11],peret:[0,11],perform:[0,11],perhap:[0,11],periastron:[0,11],pericent:21,period:[0,2,11,12,14,15,16,21],period_str:2,perl:[1,15],persist:11,persistent_data:11,pgo:[0,11],phase:[0,11],phasevol:[0,11,15],phdi:[0,11],photoevapor:[0,11],php:2,physic:15,pick:16,piec:[5,15],pinnsonneault:[0,11],pisn:[0,11],pkg:[9,17],place:[0,11],placehold:16,plai:[0,11],plan:7,planetari:[0,11],plaw2:7,pleas:[0,4,11,15],plot:[0,11,14,16],plot_funct:[9,10],plot_hr_diagram:16,plot_hr_diagram_singl:16,plot_mass:16,plot_orbit:16,plot_system:16,plot_typ:16,pls:5,plu:[0,11],pms:16,pms_mass_1:16,pms_mass_2:16,pn_comenv_transition_tim:[0,11],pn_fast_wind:[0,11],pn_fast_wind_dm_agb:[0,11],pn_fast_wind_dm_gb:[0,11],pn_fast_wind_mdot_agb:[0,11],pn_fast_wind_mdot_gb:[0,11],pn_hall_fading_time_algorithm:[0,11],pn_hall_fading_time_algorithm_maximum:[0,11],pn_hall_fading_time_algorithm_minimum:[0,11],pn_resolv:[0,11],pn_resolve_maximum_envelope_mass:[0,11],pn_resolve_minimum_effective_temperatur:[0,11],pn_resolve_minimum_luminos:[0,11],pne:[0,11],pogg:[0,11],point:[0,2,4,5,9,11,17],poisson:[2,7],pol:[0,11],polytrop:[0,11],pop:12,pop_macro:12,popul:[0,2,3,5,6,8,9,11,17,19],population_id:7,population_nam:15,population_set:5,posit:[0,2,11],possibl:[0,1,2,4,6,9,11,14,17],post:[0,11,12],post_ce_adaptive_menv:[0,11],post_ce_envelope_dm_eagb:[0,11],post_ce_envelope_dm_gb:[0,11],post_ce_envelope_dm_tpagb:[0,11],post_ce_objects_have_envelop:[0,11],post_sn_orbit_bs:0,post_sn_orbit_method:[0,11],post_sn_orbit_tt98:0,postagb_legacy_log:[0,11],postagb_wind_gi:0,postagb_wind_krticka2020:0,postagb_wind_non:0,postagb_wind_use_gi:0,postagbwind:0,potenti:[0,11],power:[0,2,11],powerlaw:2,powerlaw_const:2,powerlaw_extrapolation_q:2,ppisn:[0,11],ppisn_farmer19:0,ppisn_non:0,ppisn_prescript:[0,11],ppn_envelope_mass:[0,11],pragma:12,pre:[0,11,16],pre_events_stardata:[0,11,12],pre_main_sequ:[0,11],pre_main_sequence_fit_lob:[0,11],precis:4,precod:[5,15],predefin:[2,15],predict:7,predictor:[0,11],prefer:[0,5,11],prefix:[0,11],prepar:2,prepare_dict:2,prescrib:0,prescript:[0,11,15],prescrit:[0,11],present:[2,4,5,15],preserv:[0,11],preset:16,pressur:[0,11],prev_stellar_type_1:15,prev_stellar_type_2:15,prevent:[0,7,11],previou:4,previous:[14,15],previous_stardata:[1,12,14,15],primari:[1,2,5,15,21],pringl:0,print:[4,6,7,11,12,13,14,15],print_help:[4,13],print_info:6,print_option_descript:6,print_structur:4,printf:[1,12,14,15],prior:[0,11],privat:[5,6,9],prob_dict:2,probability_weighted_mass:7,probabl:[0,1,2,5,6,7,11,12,15,16],probdist:[5,15],problem:[0,11],process:[0,4,5,7,11,15],profil:[0,11],progenitor:[0,11,15],program:[9,17],project:[0,11],proper:[6,12],properli:[0,11],properti:[0,4,7,16],prot1:[0,11],prot2:[0,11],prot3:[0,11],prot4:[0,11],provid:[0,2,5,7,11,15,18],pseudorandom:[0,11],publicli:12,puls:[0,11,21],pulsat:[0,11],pump:[0,11],purpos:[7,15,16],push_macro:12,put:[1,4,5,7,15,16],py_rinterpol:[9,17],pyenv:[9,11,17],pysiz:4,pytest:[9,17],python3:[9,11,17],python:[4,11,12,15],q_high_extrapolation_method:7,q_interpol:2,q_low_extrapolation_method:7,qcrit_bh:[0,11],qcrit_bs:0,qcrit_cheb:[0,11],qcrit_chen_han_formula:0,qcrit_chen_han_t:0,qcrit_cowd:[0,11],qcrit_degenerate_bh:[0,11],qcrit_degenerate_cheb:[0,11],qcrit_degenerate_cowd:[0,11],qcrit_degenerate_eagb:[0,11],qcrit_degenerate_gb:[0,11],qcrit_degenerate_hegb:[0,11],qcrit_degenerate_hehg:[0,11],qcrit_degenerate_hem:[0,11],qcrit_degenerate_hewd:[0,11],qcrit_degenerate_hg:[0,11],qcrit_degenerate_lmm:[0,11],qcrit_degenerate_m:[0,11],qcrit_degenerate_n:[0,11],qcrit_degenerate_onewd:[0,11],qcrit_degenerate_tpagb:[0,11],qcrit_eagb:[0,11],qcrit_gb:[0,11],qcrit_gb_bs:0,qcrit_gb_chen_han_formula:0,qcrit_gb_chen_han_t:0,qcrit_gb_ge2015:0,qcrit_gb_hjellming_webbink:0,qcrit_gb_q_no_comenv:0,qcrit_gb_temmink2021:0,qcrit_gb_vos2018:0,qcrit_ge2015:0,qcrit_hegb:[0,11],qcrit_hehg:[0,11],qcrit_hem:[0,11],qcrit_hewd:[0,11],qcrit_hg:[0,11],qcrit_hjellming_webbink:0,qcrit_lmm:[0,11],qcrit_m:[0,11],qcrit_n:[0,11],qcrit_onewd:[0,11],qcrit_q_no_comenv:0,qcrit_temmink2021:0,qcrit_tpagb:[0,11],qcrit_vos2018:0,qcrits_:[0,11],qcrits_degenerate_:[0,11],qdata:2,qlimit:2,quad:7,quadrat:[0,11],quadrulpl:[0,11],quadrupl:[0,2,7,11],quantiti:16,queri:14,queue:7,quickli:14,quit:[0,4,11],r_l:21,radau:0,radi:[0,11],radiat:[0,11],radii:[0,11,21],radiu:[0,1,11,12,15,16,21],radius_1:16,radius_2:16,ragb:21,raghavan2010_binary_fract:2,raghavan:2,rai:[0,11],railton:[0,11],rais:[0,4,7,11,15],ram:[0,11],ran:7,random:[0,7,11],random_count:14,random_se:[0,11,14],random_skip:[0,11],random_system:[0,11],random_systems_se:[0,11],rang:[0,2,5,7,11,14,15,19],rapid:0,rapidli:[0,11],rappaport:[0,11],rate:[0,2,11],rather:[0,4,5,7,9,11,12,14,15,17],ratio:[0,2,11,15,21],raw:[4,5,7,11,16,18],raw_output:4,reach:[0,11],reaction:[0,11],read:[3,4,14,15],real:[5,15],realli:[0,5,6,7,11,15],reason:[0,11],rebuild:[0,9,11,17],rebuilt:[9,17],recalcul:[0,11],receiv:4,recogn:15,recombin:[0,11],recommend:[1,3,5],recompil:[9,15,17],recurs:[4,5],recursive_change_key_to_float:4,recursive_change_key_to_str:4,red:[0,11],redhat:1,redshift:2,reduc:[0,11],reduct:7,regardless:16,region:[0,11],regist:15,reignit:[0,11],reimer:[0,11],reinstal:[9,17],reject:[0,11],rejects_in_log:[0,11],rejuven:[0,11],rel:[0,11],relat:[0,11],releas:[4,9,17],reliabl:11,remain:[0,11],remesh:[0,11],remnant:[0,11],remov:[0,4,5,11,14,15],remove_fil:4,renormalis:2,rentrop:[0,11],repeat:[0,7,11],repo:[9,17],report:[0,11,15],repositori:3,repres:7,represent:[4,5,15],reproduc:[0,11],requir:[0,2,4,11,14,15,16,18],reset:[0,11],reset_pref:[0,11],reset_star:[0,11],reset_stars_default:[0,11],resolut:[0,5,7,11,15],resolv:[0,11],reson:[0,11],respect:[0,2,11],rest:[2,5,15],restructuredtext:4,result:[0,1,2,4,5,7,9,11,14,15,17],result_arrai:2,result_dict:2,retain:[0,11],rethink:4,return_all_info:5,return_arglin:11,return_binary_c_default:5,return_binary_c_version_info:[4,5,13],return_compilation_dict:1,return_help:11,return_help_al:[4,11],return_maximum_mass_ratio_for_rlof:[11,21],return_minimum_orbit_for_rlof:[11,21],return_persistent_data_memaddr:11,return_population_set:5,return_store_memaddr:11,return_version_info:[4,11],revap_in:[0,11],revap_out:[0,11],revers:[0,11,16],reverse_tim:[0,11],revis:[0,4],rewrit:5,rhagavan:7,ri0005:15,rich:[0,11],riello:[0,11],rin:[0,11],ring:[0,11],risk:[5,15],ritter:[0,11],rk2:[0,11],rk4:[0,11],rlof:[0,11,21],rlof_angular_momentum_transfer_model:[0,11],rlof_angular_momentum_transfer_model_bs:0,rlof_angular_momentum_transfer_model_conserv:0,rlof_eccentric_as_circular:[0,11],rlof_entry_threshold:[0,11],rlof_f:[0,11],rlof_interpolation_binary_c:0,rlof_interpolation_bs:0,rlof_interpolation_method:[0,11],rlof_mdot_factor:[0,11],rlof_mdot_modul:[0,11],rlof_method:[0,11],rlof_method_adapt:0,rlof_method_adaptive2:0,rlof_method_bs:0,rlof_method_claei:0,rlof_method_ritt:0,rlof_nonconservative_gamma_donor:0,rlof_nonconservative_gamma_isotrop:0,rlof_radiation_correct:[0,11],rlof_transition_objects_escap:[0,11],rob:[0,2,11,21],robert:[9,17],roch:[0,11,21],roche_lob:21,rochelob:21,rol1:14,rol2:14,room:[5,15],root:[9,17],rotat:[0,2,11],rotation:[0,11],rotationally_enhanced_expon:[0,11],rotationally_enhanced_mass_loss:[0,11],rotationally_enhanced_massloss:[0,11],rotationally_enhanced_massloss_angmom:0,rotationally_enhanced_massloss_langer_formula:[0,11],rotationally_enhanced_massloss_langer_formula_and_angmom:0,rotationally_enhanced_massloss_non:0,rout:[0,11],routin:[0,3,5,9,11,16],row:[14,16],rring:[0,11],rssd:2,rst:[4,6],rsun:16,rubric:5,run:[0,1,3,4,5,7,9,11,17,18],run_popul:11,run_system:[11,12,13,14,16,18],run_system_wrapp:[9,10,12,14],run_wrapp:3,run_zero_probability_system:7,runtim:[1,7],russel:[0,11],rzam:21,s_option:7,safe:15,sai:[0,11],said:[0,11],same:[0,4,7,9,11,14,17],sampl:[0,2,5,11,15,19],sample_valu:2,sampler:9,sana12:[2,15],sana:2,save:[0,1,2,11,12,15],save_pre_events_stardata:[0,11],scalo:2,scanf:0,scheme:[0,11],schneider:[0,11],schroeder:[0,11],script:[3,9,12,17],sdb:[0,11],sdist:[9,17],sdo:[0,11],search:9,second:[0,2,4,11,16],secondari:[2,21],section:[2,4,8,9,11,15,17],see:[0,5,9,11,12,13,14,15,16,17],seed:[0,11],seem:[9,16,17],seen:4,segment:19,seitenzahl2013_model:[0,11],seitenzahl:[0,11],select:[0,4,11,14],selected_head:4,selector:[0,11],self:[5,7,14,15],semi:[0,11],sent:[0,11],sentenc:1,sep:[2,5,14,15,21],sep_max:15,sep_min:15,separ:[0,2,4,5,6,11,12,14,15,16,21],separation_quadrupl:[0,11],separation_tripl:[0,11],separta:[0,11],seper:15,sequenc:[0,11,12],seri:[0,11],serialis:[4,5],serv:4,server:5,set:[0,1,2,3,4,5,6,7,9,12,13,14,16,17],set_moe_di_stefano_set:5,set_opt:2,setup:[9,15,17,18],sever:[6,7,13,15,16,18],sfh:2,shara:[0,11],share:[1,7,14,18],shared_lib_filenam:12,shell:[0,11],shellular:0,shorten:[0,11],should:[0,1,2,5,6,7,9,11,14,15,16,17,18],shouldn:[0,4,11],show:[0,3,7,11,14,15,16],show_plot:16,show_stellar_typ:16,shown:[0,11,16],shrinkagb:14,side:15,siess:[0,11],sigma:2,silent:4,sill:[0,11],simplest:14,simpli:[0,11],simul:[0,1,11,12,15],simulation_:5,sinc:[4,16],singl:[0,2,3,5,7,11,15,16],single_star_lifetim:[11,12,14],sit:[0,11],site:11,situat:11,size:[4,7],skip:[0,4,7,9,11,17],skipkei:4,slightli:11,slope:2,slow:[0,11],slower:[0,11],slurm:[5,7,8],slurm_grid:5,small:[0,11],small_envelope_method:[0,11],small_envelope_method_bs:0,small_envelope_method_miller_bertolami:0,smaller:[0,11],sn_impulse_liu2015:0,sn_impulse_non:0,sn_impulse_wheeler1975:0,sn_kick_companion_a:[0,11],sn_kick_companion_aic_bh:[0,11],sn_kick_companion_bh_bh:[0,11],sn_kick_companion_bh_n:[0,11],sn_kick_companion_ecap:[0,11],sn_kick_companion_grb_collapsar:[0,11],sn_kick_companion_hestaria:[0,11],sn_kick_companion_ia_chand:[0,11],sn_kick_companion_ia_chand_co:[0,11],sn_kick_companion_ia_eld:[0,11],sn_kick_companion_ia_h:[0,11],sn_kick_companion_ia_he_co:[0,11],sn_kick_companion_ia_hybrid_hecowd:[0,11],sn_kick_companion_ia_hybrid_hecowd_sublumin:[0,11],sn_kick_companion_ibc:[0,11],sn_kick_companion_ii:[0,11],sn_kick_companion_iia:[0,11],sn_kick_companion_ns_n:[0,11],sn_kick_companion_phdi:[0,11],sn_kick_companion_pisn:[0,11],sn_kick_companion_ppisn:[0,11],sn_kick_companion_tz:[0,11],sn_kick_companion_wdkick:[0,11],sn_kick_dispersion_aic_bh:[0,11],sn_kick_dispersion_bh_bh:[0,11],sn_kick_dispersion_bh_n:[0,11],sn_kick_dispersion_ecap:[0,11],sn_kick_dispersion_grb_collapsar:[0,11],sn_kick_dispersion_ia_hybrid_hecowd:[0,11],sn_kick_dispersion_ia_hybrid_hecowd_sublumin:[0,11],sn_kick_dispersion_ibc:[0,11],sn_kick_dispersion_ii:[0,11],sn_kick_dispersion_ns_n:[0,11],sn_kick_dispersion_phdi:[0,11],sn_kick_dispersion_pisn:[0,11],sn_kick_dispersion_ppisn:[0,11],sn_kick_dispersion_tz:[0,11],sn_kick_distribution_aic_bh:[0,11],sn_kick_distribution_bh_bh:[0,11],sn_kick_distribution_bh_n:[0,11],sn_kick_distribution_ecap:[0,11],sn_kick_distribution_grb_collapsar:[0,11],sn_kick_distribution_ia_hybrid_hecowd:[0,11],sn_kick_distribution_ia_hybrid_hecowd_sublumin:[0,11],sn_kick_distribution_ibc:[0,11],sn_kick_distribution_ii:[0,11],sn_kick_distribution_ns_n:[0,11],sn_kick_distribution_phdi:[0,11],sn_kick_distribution_pisn:[0,11],sn_kick_distribution_ppisn:[0,11],sn_kick_distribution_tz:[0,11],sn_none:12,sn_type:12,sneia:[0,11],snia:[0,11],snippet:[11,14],solar:[0,2,11,13,21],solver:[0,11],solver_forward_eul:0,solver_predictor_corrector:0,solver_rk2:0,solver_rk4:0,some:[0,1,2,5,7,9,11,12,13,14,15,16,17],someth:[0,5,11,14],sometim:13,somewhat:15,soon:19,sort:4,sort_kei:4,sourc:[1,2,4,5,6,7,10,16,18,19,21],source_file_filenam:7,source_list:5,sourcecod:[9,11,12,17],sourcefile_nam:1,space:[0,5,11,15,19],spacing_funct:[9,10],spacingfunc:[5,15],spacingfunct:[5,15],special:[0,11,15],specif:[0,4,11,13,14,16],specifi:[0,7,11],spectral:2,speed:[0,7,11],speedtest:[0,11],spent:4,spera:0,spheric:[0,11],spin:[0,11],spinrat:[0,11],split:[0,7,11,14,15],split_lin:14,splitlin:[11,12,14,15],splitpoint:[0,11],spread:5,sqrt:[0,11],src:[0,9,11,12,17],stabil:[0,11],stabl:[0,11],stancliff:[0,11],standard:[0,2,11],star:[1,2,7,9,11,12,13,14,15,16,21],star_with_no_mass:0,starcount:15,stardata:[0,1,11,12,14,15],stardata_dump_filenam:[0,11],stardata_load_filenam:[0,11],stardata_t:12,start:[0,1,4,5,6,7,11,14,15],start_tim:[0,11],start_timestamp:15,startrack:0,startswith:14,state:[0,11],statement:[1,12,14,15],statist:[0,11],statu:[0,1,11,15],stderr:[0,11],stdout:4,steadi:[0,11],stefan:16,stefano:[4,5,9,15],stellar:[0,2,7,11,16,20],stellar_structure_algorithm:[0,11],stellar_structure_algorithm_external_funct:0,stellar_structure_algorithm_mint:0,stellar_structure_algorithm_modified_bs:0,stellar_structure_algorithm_non:0,stellar_typ:[1,9,10,12,14,15,16],stellar_type_1:[0,11,15,16],stellar_type_2:[0,11,15,16],stellar_type_3:[0,11],stellar_type_4:[0,11],stellar_type_dict:20,stellar_type_dict_short:20,step:[4,5,12,14,15,16,19],stepsiz:[5,15],stick:7,stiff:[0,11],still:[1,7,12],stop:[0,4,11],stopfil:[0,11],storag:[0,11],store:[0,2,3,4,5,7,9,14,15,17,21],store_capsul:11,store_memaddr:[11,21],str:[1,4,5,6,15,16],straight:5,straightforward:15,straniero:[0,11],strength:[0,11],strict:4,string:[0,1,3,4,5,6,7,11,13,14,15,16,18],strip:[0,11,14],stronger:[0,11],struct:[0,11,12],structur:[0,4,7,11,16],stuff:[4,7,14,15,16],style:[0,11],sub:[0,4,11],subdict:4,subject:[0,11],sublumin:[0,11],submit:9,subroutin:8,subsequ:[0,11],subtract:4,subtract_dict:4,succe:[0,11],suggest:[0,9,11,17],suit:[9,17],sum:[0,11],sundial:[0,11],supercrit:[0,11],supernova:[0,7,11],superwind:[0,11],superwind_mira_switchon:[0,11],sure:[2,5,7,9,14,15,16,17,18],surfac:[0,11],surrei:15,surviv:[0,11],survivor:[0,11],switcher:[0,11],symmetr:[0,11],synchron:[0,11],synonym:[0,11],synthesi:[7,9,15,17],system:[0,3,4,5,7,9,11,12,15,16,17,18],system_gener:[5,15],tabl:[0,2,11],take:[0,2,4,5,7,11,15,18],taken:[0,4,11,12],tar:[9,17],target:[1,6],task:[0,2,4,5,6,8,11,15,16,18,19,21],tauri:[0,11],tbse:[0,11],technic:[12,15],teff:[0,2,11],teff_1:16,teff_2:16,teff_postagb_max:0,teff_postagb_min:0,tell:4,temp_dir:[4,14,15],temperatur:[0,2,11,16],termin:[1,9,12,15,17],test:[0,4,5,7,9,11,14,15,17,21],test_data:0,test_func:11,test_logfil:14,test_pop:15,text:[4,6],than:[0,2,4,7,9,11,15,17],thats:15,thei:[0,2,4,5,7,11,15,16],thelog:[0,11],them:[2,4,5,11,15],themselv:[2,4],thermal:[0,2,11,21],thermally_pulsing_asymptotic_giant_branch:0,thermohalin:[0,11],thesi:[0,11],thi:[0,1,2,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,21],thick:[0,11],thick_disc_end_ag:[0,11],thick_disc_logg_max:[0,11],thick_disc_logg_min:[0,11],thick_disc_start_ag:[0,11],thin:[0,11],thing:[0,2,4,5,6,11,15,18],think:[0,4,5,11],third:[0,2,11],third_dup:[0,11],third_dup_multipli:[0,11],thorn:[0,11],those:[4,5,9,15,17],thread:7,thread_id:7,three:[0,2,11,15],three_part_powerlaw:[2,15],threshold:[0,4,7,11],through:[5,11,14,15,16,18],throughout:[5,15],tidal:[0,11],tidal_strength_factor:[0,11],tide:[0,11],tides_convective_damp:[0,11],tides_hurley2002:[0,11],tides_zahn1989:[0,11],time:[0,1,2,4,5,7,9,11,12,14,15,16,17],timescal:[0,11],timestamp:7,timestep:[0,11,12,14],timestep_limit:[0,11],timestep_log:[0,11],timestep_modul:[0,11],timestep_multipli:[0,11],timestep_solver_factor:[0,11],tinslei:2,titl:6,tmp:[0,4,9,11,14,15,17],tmp_dir:[5,7,14,15],tmp_tabl:2,todo:[0,1,2,4,5,6,7,11,13,15,16,18,19,21],toler:[0,11],too:[0,4,7,9,11,17,18],took:15,top:15,topic:[0,11],torqu:[0,11],total:[0,2,4,5,7,11,15,16],total_count:15,total_mass_run:15,total_prob:15,total_probability_weighted_mass_run:15,tout:[0,11,21],tout_pringle_1992_multipli:0,tpagb:[0,11],tpagb_reimers_eta:[0,11],tpagb_wind_beasor_etal_2020:0,tpagb_wind_bloeck:0,tpagb_wind_goldman_etal_2017:0,tpagb_wind_mattsson:0,tpagb_wind_reim:0,tpagb_wind_rob_cwind:0,tpagb_wind_van_loon:0,tpagb_wind_vw93_karaka:0,tpagb_wind_vw93_karakas_carbon_star:0,tpagb_wind_vw93_orig:0,tpagb_wind_vw93_orig_carbon_star:0,tpagbwind:[0,11],tpagbwindfac:[0,11],traceback:4,track:[7,16],trade:[0,11],transfer:[0,11],transform:[0,4,11],transit:[0,11],treat:[0,11],trigger:[0,11],trio:15,tripl:[0,2,7,11],truli:[0,11],tupl:1,turn:[0,4,11,14,15],two:[0,4,11,12,20,21],txt:[5,14,15,18],type:[0,1,2,4,5,6,7,11,14,15,16,19,20,21],type_chng:14,type_ia_mch_supernova_algorithm:[0,11],type_ia_sub_mch_supernova_algorithm:[0,11],typic:[0,11],ubvri:[0,11],ugriv:[0,11],unavail:0,uncom:[5,14,15],undef:12,under:[14,19],undergo:[0,11],understand:5,undescrib:6,uniform:2,union:[2,4,5,15,19,21],uniqu:[4,5,7,15],unit:[0,11,13,21],univari:[0,11],unknown:18,unless:[1,5,7],unload:5,unpars:11,unrecogn:[9,17],unsign:0,unstabl:[0,11],until:[0,2,4,11],unus:[0,7,11],unweight:15,updat:[2,4,5,9,15,17],update_dict:[4,13],upper:[0,2,11,19],usag:[0,3],use:[0,2,4,5,7,8,9,11,12,13,14,15,16,17,18],use_astropy_valu:16,use_datadir:[5,15],use_fixed_timestep_:[0,11],use_periastron_roche_radiu:[0,11],use_tabular_intershell_abundances_karakas_2012:[0,11],used:[0,1,2,4,5,7,11,12,13,14,15,16],useful:[0,4,5,7,9,11,13,14,15,17,18,21],useful_func:[9,10],user:[1,2,4,5,6,7,12,18],uses:[0,7,11,12,15],using:[0,1,5,9,12,13,14,17],usual:[0,2,7,11,15],util:[1,2,4,5,6,11,12,13,14,15,16,18,19,21],val:2,valid:[0,2,4,11,12],valu:[0,1,2,4,5,6,7,11,13,14,15,16],value_lin:14,valueerror:15,valuerang:[5,15],values_arrai:14,van:[0,11],vandenheuvel_log:[0,11],vari:[0,11,15],variabl:[0,3,4,5,7,11],variant:[0,11],variou:[0,11],vassiliadi:[0,11],veloc:[0,2,11],verbos:[1,2,4,7,9,14,15,17],verbose_print:4,veri:[0,5,11,12,14,15,19],versa:21,version:[0,4,5,9,11,13,15,17],version_info:4,version_info_dict:13,version_info_str:4,version_onli:[0,11],via:[3,5,7,11,12,15,16],vice:21,vink:[0,11],virtual:[9,17],virtualenviron:[9,17],viscos:[0,11],viscou:[0,11],visibl:12,visit:9,volum:[0,11],vrot1:[0,11],vrot2:[0,11],vrot3:[0,11],vrot4:[0,11],vrot_breakup:0,vrot_bs:0,vrot_non_rot:0,vrot_sync:0,vw93:[0,11],vw93_eagb_wind_spe:[0,11],vw93_mira_shift:[0,11],vw93_multipli:[0,11],vw93_tpagb_wind_spe:[0,11],vwind:[0,11],vwind_beta:[0,11],vwind_multipli:[0,11],wai:[0,4,5,7,11,14,16],wang:[0,11],want:[0,2,4,5,6,7,11,12,13,15,16],warmup_cpu:[0,11],warn:[0,11,14,15],wave:[0,11,15],wd_accretion_rate_new_giant_envelope_lower_limit_helium_donor:[0,11],wd_accretion_rate_new_giant_envelope_lower_limit_hydrogen_donor:[0,11],wd_accretion_rate_new_giant_envelope_lower_limit_other_donor:[0,11],wd_accretion_rate_novae_upper_limit_helium_donor:[0,11],wd_accretion_rate_novae_upper_limit_hydrogen_donor:[0,11],wd_accretion_rate_novae_upper_limit_other_donor:[0,11],wd_kick:[0,11],wd_kick_at_every_puls:0,wd_kick_at_given_puls:0,wd_kick_direct:[0,11],wd_kick_end_agb:0,wd_kick_first_rlof:0,wd_kick_pulse_numb:[0,11],wd_kick_when:[0,11],wd_sigma:[0,11],wdwd_merger_algorithm:[0,11],wdwd_merger_algorithm_bs:0,wdwd_merger_algorithm_chen2016:0,wdwd_merger_algorithm_perets2019:0,weight:[0,7,11],well:[0,4,7,9,11,12,14,17],were:[4,15],what:[0,1,2,4,5,6,7,9,11,12,14,15,17,18],whatev:[0,5,9,12,17],wheeler:[0,11],when:[0,1,2,4,5,6,7,9,11,13,14,15,17,18],whenev:[9,17],where:[0,1,2,4,5,6,7,9,11,15,17],whether:[0,2,4,5,6,7,11,13,15,16,21],which:[0,1,2,4,5,6,7,9,11,12,13,14,15,17,18,21],whichev:7,white:[0,11],white_dwarf_cooling_carrasco2014:[0,11],white_dwarf_cooling_mestel:[0,11],white_dwarf_cooling_mestel_modifi:[0,11],white_dwarf_cooling_model:[0,11],white_dwarf_radius_carrasco2014:[0,11],white_dwarf_radius_model:[0,11],white_dwarf_radius_mu:[0,11],white_dwarf_radius_nauenberg1972:[0,11],whole:[5,7,12],width:[0,11],wind:[0,11],wind_algorithm_binary_c_2020:0,wind_algorithm_hurley2002:0,wind_algorithm_non:0,wind_algorithm_schneider2018:0,wind_angmom_loss_bs:0,wind_angmom_loss_lw:0,wind_angmom_loss_lw_hybrid:0,wind_angmom_loss_spherically_symmetr:0,wind_angular_momentum_loss:[0,11],wind_disc_angmom_fract:[0,11],wind_disc_mass_fract:[0,11],wind_djorb_fac:[0,11],wind_gas_to_dust_ratio:[0,11],wind_lbv_luminosity_lower_limit:[0,11],wind_mass_loss:[0,11],wind_multiplier_:[0,11],wind_nieuwenhuijzen_luminosity_lower_limit:[0,11],wind_type_multiplier_:[0,11],within:[0,4,5,9,11,12,13,15,17],without:[2,5,7,12,14],won:[0,11,14],wood:[0,11],work:[0,4,9,11,12,14,16,17],would:[0,4,11,15,16],wouldn:[5,15],wr_wind:[0,11],wr_wind_bs:0,wr_wind_eldridg:0,wr_wind_fac:[0,11],wr_wind_maeder_meynet:0,wr_wind_nugis_lam:0,wrap:[1,12],wrapper:[4,11,12,14,21],write:[1,4,5,6,7,11,12,14,15,18],write_binary_c_calls_to_fil:[5,15],write_binary_c_parameter_descriptions_to_rst_fil:4,write_grid_options_to_rst_fil:6,write_logfil:11,written:[5,6,7,11,14,15,18],written_data:14,wrlof_mass_transf:[0,11],wrlof_method:[0,11],wrlof_non:0,wrlof_q_depend:0,wrlof_quadrat:0,wrong:[9,17],wrwindfac:[0,11],wtts2:[0,11],wtts_log:[0,11],www:[0,2,11],x86_64:11,year:[0,2,11],yet:[0,4,7,11,16],yield:[0,11],you:[0,1,4,5,6,7,9,11,12,14,15,16,17,21],young:[0,11],your:[7,9,12,14,17],yourself:[15,16],zahn:[0,11],zam:[0,2,11,18,21],zams_collis:21,zams_mass:15,zams_mass_1:15,zams_mass_2:15,zero:[0,1,7,11],zero_ag:[12,14,15],zero_prob_stars_skip:15,zone:[0,11],zoom:[0,11],zoomfac_multiplier_decreas:[0,11],zoomfac_multiplier_increas:[0,11],zsolar:2,zytkow:[0,11]},titles:["Binary_c parameters","custom_logging_functions module","distribution_functions module","Example notebooks","functions module","grid_class module","Grid options and descriptions","Population grid code options","hpc_functions module","Welcome to binary_c-python\u2019s documentation!","Binarycpython code","Using the API functionality of binarycpython","Using custom logging routines with binarycpython","Extra features and functionality of binarycpython","Running individual systems with binarycpython","Running populations with binarycpython","plot_functions module","Python module for binary_c","run_system_wrapper module","spacing_functions module","stellar_types module","useful_funcs module"],titleterms:{"function":[4,11,13,14,15],"public":7,Adding:15,Using:[11,12],about:13,after:[9,17],algorithm:0,api:[11,12,14],binari:0,binary_c:[0,9,11,13,17],binarycpython:[10,11,12,13,14,15],build:[9,13,17],code:[7,10],compact:12,custom:12,custom_logging_funct:1,descript:6,dictionari:13,directli:12,distribution_funct:2,document:[9,17],environ:[9,17],evolut:12,evolv:15,exampl:[3,9,11,12,13,15,17],extra:13,faq:[9,17],featur:13,free:11,from:[9,11,12,17],full:15,get:[11,13],grid:[6,7,15],grid_class:5,handl:15,help:13,hpc_function:8,indic:9,individu:14,inform:[11,13],input:0,instal:[9,17],instruct:[9,17],issu:[9,17],log:[12,15],mass:12,misc:0,modif:13,modul:[1,2,4,5,8,9,16,17,18,19,20,21],moe:7,note:[9,17],notebook:3,noteworthi:15,nucsyn:0,object:[12,14,15],option:[6,7],output:[0,15],paramet:[0,13],pars:13,pip:[9,17],plot_funct:16,popul:[7,12,14,15],privat:7,python:[9,17],requir:[9,17],routin:12,run:[12,14,15],run_system_wrapp:18,run_wrapp:14,sampler:7,script:15,section:0,set:[11,15],singl:14,sourc:[9,17],spacing_funct:19,star:0,stefano:7,stellar_typ:20,store:11,string:12,supernova:12,system:14,tabl:9,usag:[9,11,12,17],useful_func:21,using:11,variabl:[9,15,17],via:[9,14,17],welcom:9,when:12}}) \ No newline at end of file diff --git a/docs/build/html/spacing_functions.html b/docs/build/html/spacing_functions.html index 7135c33d0..f9d19b5a8 100644 --- a/docs/build/html/spacing_functions.html +++ b/docs/build/html/spacing_functions.html @@ -221,7 +221,7 @@ <dd class="field-even"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></p> </dd> <dt class="field-odd">Returns</dt> -<dd class="field-odd"><p>np.linspace(min_bound, max_bound, steps)</p> +<dd class="field-odd"><p>np.linspace(min_bound, max_bound, steps+1)</p> </dd> </dl> </dd></dl> @@ -262,9 +262,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/stellar_types.html b/docs/build/html/stellar_types.html index 08e2cbbc5..c10033199 100644 --- a/docs/build/html/stellar_types.html +++ b/docs/build/html/stellar_types.html @@ -243,9 +243,9 @@ provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/build/html/useful_funcs.html b/docs/build/html/useful_funcs.html index a4282e5c1..c2e0dcaca 100644 --- a/docs/build/html/useful_funcs.html +++ b/docs/build/html/useful_funcs.html @@ -441,9 +441,9 @@ determine if two stars collide on the ZAMS</p> provided by <a href="https://readthedocs.org">Read the Docs</a>. <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. diff --git a/docs/source/_templates/footer.html b/docs/source/_templates/footer.html index 60cba1cd1..614d6567d 100644 --- a/docs/source/_templates/footer.html +++ b/docs/source/_templates/footer.html @@ -2,8 +2,8 @@ {%- block extrafooter %} <br><br> -Generated on binarycpython git branch: development_version/2.1.7 git revision b3e29831acaa0f53ec69dc9f97f9d49b48d0c6c9 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/development_version/2.1.7">git url</a>. +Generated on binarycpython git branch: master git revision cac51a6dc71daeeb943b70d5598350ab43901299 url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c-python/-/tree/master">git url</a>. <br><br> -Using binary_c with bit branch branch_david: git revision: "6101:20210807:c5232be5c" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. +Using binary_c with bit branch branch_david: git revision: "6162:20210825:093caf0e9" url: <a href="https://gitlab.eps.surrey.ac.uk/ri0005/binary_c/-/tree/branch_david">git url</a>. {% endblock %} \ No newline at end of file diff --git a/docs/source/binary_c_parameters.rst b/docs/source/binary_c_parameters.rst index 96a16995f..9d05193ac 100644 --- a/docs/source/binary_c_parameters.rst +++ b/docs/source/binary_c_parameters.rst @@ -4,7 +4,7 @@ The following chapter contains all the parameters that the current version of bi This information was obtained by the following binary_c build: - **binary_c git branch**: branch_david **binary_c git revision**: 6101:20210807:c5232be5c **Built on**: Aug 7 2021 17:32:06 + **binary_c git branch**: branch_david **binary_c git revision**: 6162:20210825:093caf0e9 **Built on**: Aug 25 2021 18:02:39 Section: stars @@ -300,6 +300,22 @@ Section: stars | **Default value**: 0 | **Macros**: ['GB_WIND_REIMERS = 0', 'GB_WIND_SCHROEDER_CUNTZ_2005 = 1', 'GB_WIND_GOLDMAN_ETAL_2017 = 2', 'GB_WIND_BEASOR_ETAL_2020 = 3'] +| **Parameter**: postagbwind +| **Description**: Apply special post-(A)GB prescription. Default is POSTAGB_WIND_USE_GIANT which means we just use whatever is prescribed on the giant branch. Other options include: POSTAGB_WIND_NONE = 1 (no wind on the post (A)GB), POSTAGB_WIND_KRTICKA2020 = 2 which uses Krticka, Kubát and Krticková (2020, A&A 635, A173). +| **Parameter input type**: Integer +| **Default value**: 0 +| **Macros**: ['POSTAGB_WIND_GIANT = 0', 'POSTAGB_WIND_NONE = 1', 'POSTAGB_WIND_KRTICKA2020 = 2'] + +| **Parameter**: Teff_postAGB_min +| **Description**: The minimum temperature for which we apply post-(A)GB winds. See also Teff_postAGB_max. (6000 K) +| **Parameter input type**: Float +| **Default value**: 6000 + +| **Parameter**: Teff_postAGB_max +| **Description**: The maximum temperature for which we apply post-(A)GB winds. See also Teff_postAGB_min. (120000 K) +| **Parameter input type**: Float +| **Default value**: 120000 + | **Parameter**: mattsson_Orich_tpagbwind | **Description**: Experimental: turns on Mattsson's TPAGB wind when the star is oxygen rich. Requires MATTSSON_MASS_LOSS. | **Parameter input type**: Integer @@ -398,6 +414,11 @@ Section: stars | **Parameter input type**: Float | **Default value**: 1 +| **Parameter**: Tout_Pringle_1992_multiplier +| **Description**: Multiplier for the Tout & Pringle (1992) magnetic wind. (0.0) +| **Parameter input type**: Float +| **Default value**: 0 + | **Parameter**: artificial_mass_accretion_rate%d | **Description**: Constant mass accretion rate for star <n>. | **Parameter input type**: Float(scanf) @@ -442,10 +463,10 @@ Section: stars | **Default value**: 1 | **Parameter**: BH_prescription -| **Description**: Black hole mass prescrition: relates the mass of a newly formed black hole to its progenitor's (CO) core mass. 0=Hurley et al 2000/2002, 1=Belczynski (early 2000s). +| **Description**: Black hole mass prescrition: relates the mass of a newly formed black hole to its progenitor's (CO) core mass. BH_HURLEY2002 = 0 = Hurley et al 2000/2002, BH_BELCZYNSKI = 1 = Belczynski (early 2000s), BH_SPERA2015 = Spera+ 2015, BH_FRYER12_DELAYED = 3 = Fryer et al. (2012) delayed prescription, BH_FRYER12_RAPID = 4 = Fryer et al. (2012) rapid prescription, BH_FRYER12_STARTRACK = 5 = Fryer et al. (2012) startrack prescription. | **Parameter input type**: Integer | **Default value**: 0 -| **Macros**: ['BH_HURLEY2002 = 0', 'BH_BELCZYNSKI = 1', 'BH_SPERA2015 = 2', 'BH_FRYER12_DELAYED = 3', 'BH_FRYER12_RAPID = 4'] +| **Macros**: ['BH_HURLEY2002 = 0', 'BH_BELCZYNSKI = 1', 'BH_SPERA2015 = 2', 'BH_FRYER12_DELAYED = 3', 'BH_FRYER12_RAPID = 4', 'BH_FRYER12_STARTRACK = 5'] | **Parameter**: PPISN_prescription | **Description**: (Pulsational) Pair-Instability Supernova prescription: Relates initial helium core mass of star to whether the star undergoes PPISN or PISN. Requires PPISN flag to be True (see binary_c_parameters.h). 0=no ppisn, 1=Farmer et al 2019. @@ -1105,6 +1126,16 @@ Section: stars | **Parameter input type**: Float | **Default value**: 600000 +| **Parameter**: colour%d +| **Description**: Sets colour %d (0 to NUM_ANSI_COLOURS-1) to the extended ANSI set colour you choose (1-255, 0 means ignore). The colour numbers are defined in src/logging/ansi_colours.h +| **Parameter input type**: Int(scanf) +| **Default value**: NULL + +| **Parameter**: apply_Darwin_Radau_correction +| **Description**: Apply Darwin-Radau correction to the moment of inertia to take rotation into account? +| **Parameter input type**: True|False +| **Default value**: False + Section: binary --------------- @@ -2459,6 +2490,12 @@ Section: output | **Default value**: /tmp/c_log.dat | **Extra**: +| **Parameter**: log_arrows +| **Description**: Add arrows to the output log to show whether values are increasing or decreasing. +| **Parameter input type**: True|False +| **Default value**: False +| **Extra**: + | **Parameter**: stopfile | **Description**: File which, when it exists, will stop the current binary_c repeat run. | **Parameter input type**: String @@ -2572,6 +2609,12 @@ Section: input | **Default value**: NULL | **Extra**: +| **Parameter**: MINT_fallback_to_test_data +| **Description**: If TRUE, use the MINT test_data directory as a fallback when data is unavailable. (FALSE) +| **Parameter input type**: True|False +| **Default value**: NULL +| **Extra**: + | **Parameter**: MINT_disable_grid_load_warnings | **Description**: Use this to explicitly disable MINT's warnings when loading a grid with, e.g., missing or too much data. | **Parameter input type**: True|False @@ -2584,6 +2627,24 @@ Section: input | **Default value**: NULL | **Extra**: +| **Parameter**: MINT_nshells +| **Description**: Set the initial number of shells MINT uses in each star when doing nuclear burning. Note: remeshing can change this. If MINT_nshells is 0, shellular burning and other routines that require shells will not be available. (200) +| **Parameter input type**: Integer +| **Default value**: NULL +| **Extra**: + +| **Parameter**: MINT_maximum_nshells +| **Description**: Set the maximum number of shells MINT uses in each star when doing nuclear burning. Note that this will be limited to MINT_HARD_MAX_NSHELLS. (1000) +| **Parameter input type**: Integer +| **Default value**: NULL +| **Extra**: + +| **Parameter**: MINT_minimum_nshells +| **Description**: Set the minimum number of shells MINT uses in each star when doing nuclear burning. Note that this will be greater than or equal to MINT_HARD_MIN_NSHELLS, which is 0 by default. (0) +| **Parameter input type**: Integer +| **Default value**: NULL +| **Extra**: + | **Parameter**: MINT_Kippenhahn_stellar_type | **Description**: Stellar type selector for Kippenhahn plots. Set to -1 to ignore, otherwise the stellar type number for which Kippenhahn plot data should be output. | **Parameter input type**: Integer diff --git a/docs/source/notebook_individual_systems.ipynb b/docs/source/notebook_individual_systems.ipynb index 19c2d29fb..21d49016f 100644 --- a/docs/source/notebook_individual_systems.ipynb +++ b/docs/source/notebook_individual_systems.ipynb @@ -28,6 +28,18 @@ { "cell_type": "code", "execution_count": 1, + "id": "e32dcdee", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from binarycpython.utils.functions import temp_dir\n", + "TMP_DIR = temp_dir(\"notebooks\", \"notebook_individual_systems\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "id": "425efed3-d8e3-432d-829e-41d8ebe05162", "metadata": {}, "outputs": [], @@ -38,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "b2abab48-433d-4936-8434-14804c52c9f6", "metadata": {}, "outputs": [ @@ -46,7 +58,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "SINGLE_STAR_LIFETIME 1 12462\n", + "SINGLE_STAR_LIFETIME 1 12461.9\n", "\n" ] } @@ -66,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "029fc3f2-f09a-49af-a32b-248505738f2e", "metadata": {}, "outputs": [ @@ -74,24 +86,25 @@ "name": "stdout", "output_type": "stream", "text": [ - " TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=67365 RANDOM_COUNT=0\n", - " 0.0000 1.000 0.000 1 15 -1 -1.00 0.000 0.000 \"INITIAL \"\n", - " 11003.1302 1.000 0.000 2 15 -1 -1.00 0.000 0.000 \"OFF_MS\"\n", - " 11003.1302 1.000 0.000 2 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 11582.2424 1.000 0.000 3 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12325.1085 0.817 0.000 4 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12457.1300 0.783 0.000 5 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12460.8955 0.774 0.000 6 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 12460.8955 0.774 0.000 6 15 -1 -1.00 0.000 0.000 \"shrinkAGB\"\n", - " 12461.9514 0.523 0.000 11 15 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", - " 15000.0000 0.523 0.000 11 15 -1 -1.00 0.000 0.000 \"MAX_TIME\"\n", + " TIME M1 M2 K1 K2 SEP PER ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=17089 RANDOM_COUNT=0\n", + " 0.0000 1.000 0.000 1 15 -1 -1 -1.00 0.000 0.000 \"INITIAL \"\n", + " 11003.1302 1.000 0.000 2 15 -1 -1 -1.00 0.000 0.000 \"OFF_MS\"\n", + " 11003.1302 1.000 0.000 2 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 11582.2424 1.000 0.000 3 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12325.1085 0.817 0.000 4 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12457.1301 0.783 0.000 5 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12460.9983 0.716 0.000 6 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 12460.9983 0.716 0.000 6 15 -1 -1 -1.00 0.000 0.000 \"shrinkAGB\"\n", + " 12461.9458 0.518 0.000 11 15 -1 -1 -1.00 0.000 0.000 \"TYPE_CHNGE\"\n", + " 15000.0000 0.518 0.000 11 15 -1 -1 -1.00 0.000 0.000 \"MAX_TIME\"\n", "\n" ] } ], "source": [ - "output = run_system(M_1=1, log_filename='/tmp/test_logfile.txt')\n", - "with open('/tmp/test_logfile.txt', 'r') as f:\n", + "log_filename = os.path.join(TMP_DIR, 'test_logfile.txt')\n", + "output = run_system(M_1=1, log_filename=log_filename, api_log_filename_prefix=TMP_DIR)\n", + "with open(log_filename, 'r') as f:\n", " print(f.read())" ] }, @@ -105,7 +118,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "e6a23b55-ca42-440d-83ac-e76a24a83a67", "metadata": { "tags": [] @@ -115,7 +128,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "['EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1', 'EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1', 'EXAMPLE_MASSLOSS 1.000000000000e-06 1 1 1', 'EXAMPLE_MASSLOSS 2.000000000000e-06 1 1 1']\n" + "EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 1 1 1\n", + "EXAMPLE_MASSLOSS 1.000000000000e-06 1 1 1\n", + "EXAMPLE_MASSLOSS 2.000000000000e-06 1 1 1\n" ] } ], @@ -137,8 +153,8 @@ "# Generate entire shared lib code around logging lines\n", "custom_logging_code = binary_c_log_code(custom_logging_print_statement)\n", "\n", - "output = run_system(M_1=1, custom_logging_code=custom_logging_code)\n", - "print(output.splitlines()[:4])" + "output = run_system(M_1=1, custom_logging_code=custom_logging_code, api_log_filename_prefix=TMP_DIR)\n", + "print('\\n'.join(output.splitlines()[:4]))" ] }, { @@ -151,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "3822721f-217a-495b-962e-d57137b9e290", "metadata": {}, "outputs": [ @@ -201,7 +217,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "654a07ed-2a88-46ff-9da0-b7759580f9f3", "metadata": {}, "outputs": [ @@ -216,13 +232,13 @@ "4 2e-06 1 1 1\n", "5 3e-06 1 1 1\n", "... ... ... ... ...\n", - "1612 12461.8 0.577754 1 6\n", - "1613 12462 0.522806 1 11\n", - "1614 13462 0.522806 1 11\n", - "1615 14462 0.522806 1 11\n", - "1616 15000 0.522806 1 11\n", + "1617 12461.8 0.546683 1 6\n", + "1618 12461.9 0.517749 1 11\n", + "1619 13461.9 0.517749 1 11\n", + "1620 14461.9 0.517749 1 11\n", + "1621 15000 0.517749 1 11\n", "\n", - "[1616 rows x 4 columns]\n" + "[1621 rows x 4 columns]\n" ] } ], @@ -252,7 +268,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "4a98ffca-1b72-4bb8-8df1-3bf3187d882f", "metadata": {}, "outputs": [], @@ -271,7 +287,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "bff1cc2e-6b32-4ba0-879f-879ffbabd223", "metadata": {}, "outputs": [ @@ -279,11 +295,12 @@ "name": "stdout", "output_type": "stream", "text": [ + "adding: api_log_filename_prefix=/tmp/binary_c_python/notebooks/notebook_individual_systems to BSE_options\n", "adding: M_1=10 to BSE_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "SINGLE_STAR_LIFETIME 10 27.7358\n", + "SINGLE_STAR_LIFETIME 10 28.4838\n", "\n" ] } @@ -294,7 +311,8 @@ "\n", "# Set some parameters\n", "example_pop.set(\n", - " verbosity=1\n", + " verbosity=1,\n", + " api_log_filename_prefix=TMP_DIR\n", ")\n", "example_pop.set(\n", " M_1=10\n", @@ -315,7 +333,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "id": "dd748bab-b57e-4129-8350-9ea11fa179d0", "metadata": { "scrolled": true, @@ -338,10 +356,13 @@ ");\n", " to grid_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_eac2dfc438a14e5a9f5be98b1b6b4294.so\n", - "['EXAMPLE_MASSLOSS 0.000000000000e+00 10 0 10 1', 'EXAMPLE_MASSLOSS 0.000000000000e+00 10 10 10 1', 'EXAMPLE_MASSLOSS 1.000000000000e-06 10 10 10 1', 'EXAMPLE_MASSLOSS 2.000000000000e-06 10 10 10 1']\n" + "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_8967553693ac4e11a49c42d4eef773e8.so\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 10 0 10 1\n", + "EXAMPLE_MASSLOSS 0.000000000000e+00 10 10 10 1\n", + "EXAMPLE_MASSLOSS 1.000000000000e-06 10 10 10 1\n", + "EXAMPLE_MASSLOSS 2.000000000000e-06 10 10 10 1\n" ] } ], @@ -362,7 +383,7 @@ "\n", "# get output and print\n", "output = example_pop.evolve_single()\n", - "print(output.splitlines()[:4])" + "print('\\n'.join(output.splitlines()[:4]))" ] }, { @@ -377,7 +398,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "id": "fec39154-cce6-438c-8c2c-509d76b00f34", "metadata": {}, "outputs": [], @@ -428,7 +449,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "id": "57347512-fd4a-434b-b13c-5e6dbd3ac415", "metadata": { "scrolled": true, @@ -439,12 +460,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "adding: parse_function=<function object_parse_function at 0x7f9265091598> to grid_options\n", - "<<<< Warning: Key does not match previously known parameter: adding: output_dir=/tmp/ to custom_options >>>>\n", + "adding: parse_function=<function object_parse_function at 0x7fb4d41ebbf8> to grid_options\n", + "<<<< Warning: Key does not match previously known parameter: adding: output_dir=/tmp/binary_c_python/notebooks/notebook_individual_systems to custom_options >>>>\n", + "adding: api_log_filename_prefix=/tmp/binary_c_python/notebooks/notebook_individual_systems to BSE_options\n", "Creating and loading custom logging functionality\n", - "Running binary_c M_1 10\n", + "Running binary_c M_1 10 api_log_filename_prefix /tmp/binary_c_python/notebooks/notebook_individual_systems\n", "Cleaning up the custom logging stuff. type: single\n", - "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_e9c2bec7f15541eb847fc6013e48e7ed.so\n", + "Removed /tmp/binary_c_python/custom_logging/libcustom_logging_5d7779e8190e4b79b10c7e6a44cb0e7e.so\n", "[['time', 'mass', 'initial_mass', 'stellar_type'], [0.0, 10.0, 0.0, 10.0, 1.0], [0.0, 10.0, 10.0, 10.0, 1.0], [1e-06, 10.0, 10.0, 10.0, 1.0]]\n", "dict_keys(['time', 'mass', 'initial_mass', 'stellar_type'])\n" ] @@ -453,7 +475,8 @@ "source": [ "example_pop.set(\n", " parse_function=object_parse_function,\n", - " output_dir='/tmp/'\n", + " output_dir=TMP_DIR,\n", + " api_log_filename_prefix=TMP_DIR\n", ")\n", "output = example_pop.evolve_single()\n", "print(output[:4])\n", @@ -488,7 +511,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "id": "ec48125c-6bf5-48f4-9357-8261800b5d8b", "metadata": {}, "outputs": [ @@ -496,7 +519,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "SINGLE_STAR_LIFETIME 15 14.2383\n", + "SINGLE_STAR_LIFETIME 15 14.9947\n", "\n" ] } @@ -510,10 +533,11 @@ "eccentricity = 0.0\n", "metallicity = 0.02\n", "max_evolution_time = 15000 # Myr. You need to include this argument.\n", + "api_log_filename_prefix = TMP_DIR\n", "\n", "# Here we set up the argument string that is passed to the bindings\n", "argstring = \"\"\"\n", - "binary_c M_1 {M_1} M_2 {M_2} separation {separation} orbital_period {orbital_period} eccentricity {eccentricity} metallicity {metallicity} max_evolution_time {max_evolution_time}\n", + "binary_c M_1 {M_1} M_2 {M_2} separation {separation} orbital_period {orbital_period} eccentricity {eccentricity} metallicity {metallicity} max_evolution_time {max_evolution_time} api_log_filename_prefix {api_log_filename_prefix}\n", "\"\"\".format(\n", " M_1=M_1,\n", " M_2=M_2,\n", @@ -522,6 +546,7 @@ " eccentricity=eccentricity,\n", " metallicity=metallicity,\n", " max_evolution_time=max_evolution_time,\n", + " api_log_filename_prefix=TMP_DIR\n", ").strip()\n", "\n", "from binarycpython import _binary_c_bindings\n", diff --git a/docs/source/notebook_population.ipynb b/docs/source/notebook_population.ipynb index 56f3b153c..b6a37baa8 100644 --- a/docs/source/notebook_population.ipynb +++ b/docs/source/notebook_population.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "id": "bbbaafbb-fd7d-4b73-a970-93506ba35d71", - "metadata": {}, + "metadata": { + "tags": [] + }, "source": [ "# Running populations with binarycpython\n", "This notebook will show you how to evolve a population of stars\n", @@ -27,15 +29,6 @@ "# help(Population) # Uncomment to see the public functions of this object" ] }, - { - "cell_type": "markdown", - "id": "a081ab23-7822-4971-aa82-991548534714", - "metadata": {}, - "source": [ - "- running ensemble\n", - "- using M&S grid" - ] - }, { "cell_type": "markdown", "id": "f268eff3-4e08-4f6b-8b59-f22dba4d2074", @@ -329,7 +322,7 @@ ], "source": [ "# Add grid variables\n", - "resolution = {\"M_1\": 20, \"q\": 20, \"per\": 40}\n", + "resolution = {\"M_1\": 20}\n", "\n", "# Mass\n", "example_pop.add_grid_variable(\n", @@ -1125,7 +1118,7 @@ ")\n", "\n", "# Add grid variables\n", - "resolution = {\"M_1\": 5, \"q\": 5, \"per\": 5}\n", + "resolution = {\"M_1\": 3, \"q\": 3, \"per\": 3}\n", "\n", "# Mass\n", "example_pop.add_grid_variable(\n", -- GitLab