From 96d7a4af65df4d4c87e356eebdd995d867bb1c60 Mon Sep 17 00:00:00 2001 From: bpuchala Date: Sun, 18 Aug 2024 23:48:56 -0400 Subject: [PATCH] libcasm-composition 2.0a4 --- docs/libcasm/composition/2.0/.buildinfo | 2 +- .../2.0/.doctrees/environment.pickle | Bin 744752 -> 1065068 bytes ...CompositionCalculator.allowed_occs.doctree | Bin 0 -> 7467 bytes ...n.CompositionCalculator.components.doctree | Bin 6855 -> 6877 bytes ....composition.CompositionCalculator.doctree | Bin 33011 -> 38701 bytes ...on.CompositionCalculator.from_dict.doctree | Bin 0 -> 9298 bytes ...ion.CompositionCalculator.n_sublat.doctree | Bin 6218 -> 6228 bytes ...tion.CompositionCalculator.to_dict.doctree | Bin 0 -> 7757 bytes ...ompositionCalculator.vacancy_names.doctree | Bin 0 -> 6871 bytes ...m.composition.CompositionConverter.doctree | Bin 62434 -> 68632 bytes ...sitionConverter.end_member_formula.doctree | Bin 7315 -> 7369 bytes ...Converter.independent_compositions.doctree | Bin 6628 -> 6730 bytes ...ionConverter.mol_component_formula.doctree | Bin 7572 -> 7580 bytes ...onConverter.param_chem_pot_formula.doctree | Bin 7334 -> 11291 bytes ...nConverter.param_component_formula.doctree | Bin 7616 -> 7624 bytes ...onEnergyCalculator.composition_ref.doctree | Bin 0 -> 5760 bytes ...position.FormationEnergyCalculator.doctree | Bin 0 -> 30764 bytes ...rmationEnergyCalculator.energy_ref.doctree | Bin 0 -> 5545 bytes ...nEnergyCalculator.formation_energy.doctree | Bin 0 -> 13972 bytes ...ormationEnergyCalculator.from_dict.doctree | Bin 0 -> 9862 bytes ...sition.FormationEnergyCalculator.h.doctree | Bin 0 -> 5537 bytes ...alculator.independent_compositions.doctree | Bin 0 -> 5602 bytes ...nEnergyCalculator.reference_energy.doctree | Bin 0 -> 10458 bytes ....FormationEnergyCalculator.to_dict.doctree | Bin 0 -> 8251 bytes .../_autosummary/libcasm.composition.doctree | Bin 18486 -> 26664 bytes ...composition.make_composition_space.doctree | Bin 24344 -> 24344 bytes ..._normalized_origin_and_end_members.doctree | Bin 0 -> 13903 bytes ...sition.make_null_composition_space.doctree | Bin 24503 -> 24503 bytes ...asm.composition.make_standard_axes.doctree | Bin 0 -> 35089 bytes ...ke_standard_origin_and_end_members.doctree | Bin 24489 -> 25428 bytes .../libcasm.composition.pretty_json.doctree | Bin 0 -> 5648 bytes ...asm.composition.print_axes_summary.doctree | Bin 0 -> 15433 bytes ...bcasm.composition.print_axes_table.doctree | Bin 0 -> 18246 bytes .../composition/2.0/_modules/index.html | 6 +- .../_formation_energy_calculator.html | 679 +++++++++++++++ .../libcasm/composition/_methods.html | 772 ++++++++++++++++++ ...CompositionCalculator.allowed_occs.rst.txt | 6 + ...on.CompositionCalculator.from_dict.rst.txt | 6 + ....composition.CompositionCalculator.rst.txt | 4 + ...tion.CompositionCalculator.to_dict.rst.txt | 6 + ...ompositionCalculator.vacancy_names.rst.txt | 6 + ...onEnergyCalculator.composition_ref.rst.txt | 6 + ...rmationEnergyCalculator.energy_ref.rst.txt | 6 + ...nEnergyCalculator.formation_energy.rst.txt | 6 + ...ormationEnergyCalculator.from_dict.rst.txt | 6 + ...sition.FormationEnergyCalculator.h.rst.txt | 6 + ...alculator.independent_compositions.rst.txt | 6 + ...nEnergyCalculator.reference_energy.rst.txt | 6 + ...position.FormationEnergyCalculator.rst.txt | 39 + ....FormationEnergyCalculator.to_dict.rst.txt | 6 + ..._normalized_origin_and_end_members.rst.txt | 6 + ...asm.composition.make_standard_axes.rst.txt | 6 + .../libcasm.composition.pretty_json.rst.txt | 6 + ...asm.composition.print_axes_summary.rst.txt | 6 + ...bcasm.composition.print_axes_table.rst.txt | 6 + .../_autosummary/libcasm.composition.rst.txt | 6 + .../2.0/_static/documentation_options.js | 2 +- docs/libcasm/composition/2.0/genindex.html | 83 +- docs/libcasm/composition/2.0/index.html | 4 +- .../libcasm/composition/2.0/installation.html | 4 +- docs/libcasm/composition/2.0/objects.inv | Bin 1184 -> 1598 bytes docs/libcasm/composition/2.0/py-modindex.html | 4 +- ...on.CompositionCalculator.allowed_occs.html | 606 ++++++++++++++ ...tion.CompositionCalculator.components.html | 38 +- ...ition.CompositionCalculator.from_dict.html | 617 ++++++++++++++ ...asm.composition.CompositionCalculator.html | 50 +- ...ionCalculator.mean_num_each_component.html | 30 +- ...sition.CompositionCalculator.n_sublat.html | 26 +- ...positionCalculator.num_each_component.html | 24 +- ...on.CompositionCalculator.species_frac.html | 30 +- ...osition.CompositionCalculator.to_dict.html | 614 ++++++++++++++ ...n.CompositionCalculator.vacancy_names.html | 606 ++++++++++++++ ...composition.CompositionConverter.axes.html | 24 +- ...ition.CompositionConverter.components.html | 24 +- ...CompositionConverter.dmol_composition.html | 24 +- ...mpositionConverter.dparam_composition.html | 24 +- ...ition.CompositionConverter.end_member.html | 24 +- ...mpositionConverter.end_member_formula.html | 26 +- ...sition.CompositionConverter.from_dict.html | 24 +- ...casm.composition.CompositionConverter.html | 85 +- ...ionConverter.independent_compositions.html | 26 +- ...position.CompositionConverter.matrixQ.html | 24 +- ...position.CompositionConverter.matrixR.html | 24 +- ...sitionConverter.mol_component_formula.html | 26 +- ....CompositionConverter.mol_composition.html | 24 +- ...tion.CompositionConverter.mol_formula.html | 24 +- ...mposition.CompositionConverter.origin.html | 24 +- ...n.CompositionConverter.origin_formula.html | 24 +- ...n.CompositionConverter.param_chem_pot.html | 24 +- ...itionConverter.param_chem_pot_formula.html | 37 +- ...tionConverter.param_component_formula.html | 26 +- ...ompositionConverter.param_composition.html | 24 +- ...on.CompositionConverter.param_formula.html | 24 +- ...position.CompositionConverter.to_dict.html | 34 +- ...ationEnergyCalculator.composition_ref.html | 607 ++++++++++++++ ....FormationEnergyCalculator.energy_ref.html | 606 ++++++++++++++ ...tionEnergyCalculator.formation_energy.html | 627 ++++++++++++++ ...n.FormationEnergyCalculator.from_dict.html | 620 ++++++++++++++ ...mposition.FormationEnergyCalculator.h.html | 597 ++++++++++++++ ...composition.FormationEnergyCalculator.html | 658 +++++++++++++++ ...gyCalculator.independent_compositions.html | 605 ++++++++++++++ ...tionEnergyCalculator.reference_energy.html | 623 ++++++++++++++ ...ion.FormationEnergyCalculator.to_dict.html | 626 ++++++++++++++ .../libcasm.composition.get_occupant.html | 24 +- .../_autosummary/libcasm.composition.html | 46 +- ....composition.make_chemical_subsystems.html | 24 +- ...sm.composition.make_composition_space.html | 26 +- .../libcasm.composition.make_end_members.html | 24 +- ...tion.make_exchange_chemical_potential.html | 30 +- ...ake_normalized_origin_and_end_members.html | 625 ++++++++++++++ ...mposition.make_null_composition_space.html | 38 +- ...ibcasm.composition.make_standard_axes.html | 634 ++++++++++++++ ....make_standard_origin_and_end_members.html | 45 +- .../libcasm.composition.pretty_json.html | 601 ++++++++++++++ ...ibcasm.composition.print_axes_summary.html | 626 ++++++++++++++ .../libcasm.composition.print_axes_table.html | 619 ++++++++++++++ .../libcasm.composition.set_occupant.html | 30 +- .../2.0/reference/libcasm/index.html | 24 +- docs/libcasm/composition/2.0/search.html | 4 +- docs/libcasm/composition/2.0/searchindex.js | 2 +- 120 files changed, 13796 insertions(+), 163 deletions(-) create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.pretty_json.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.print_axes_summary.doctree create mode 100644 docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.doctree create mode 100644 docs/libcasm/composition/2.0/_modules/libcasm/composition/_formation_energy_calculator.html create mode 100644 docs/libcasm/composition/2.0/_modules/libcasm/composition/_methods.html create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.pretty_json.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.print_axes_summary.rst.txt create mode 100644 docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.rst.txt create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.pretty_json.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.print_axes_summary.html create mode 100644 docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.html diff --git a/docs/libcasm/composition/2.0/.buildinfo b/docs/libcasm/composition/2.0/.buildinfo index 815b6e86..a2295e65 100644 --- a/docs/libcasm/composition/2.0/.buildinfo +++ b/docs/libcasm/composition/2.0/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 0221eb9ffb84369745ebcbe39f0579e7 +config: db966483419dbcaf3a15763310fef0c3 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/libcasm/composition/2.0/.doctrees/environment.pickle b/docs/libcasm/composition/2.0/.doctrees/environment.pickle index 531fd90c3b71cb47d5f19f77a56c123c67a0561d..6750b8cbd2dbf09a63179890fa533d2e37e1a7e8 100644 GIT binary patch literal 1065068 zcmeFa37A|*buX@UdSCcxfe-e zFn?FIsbu;k@E-WT5YLP$bFfRN;SWCub5FU!lqzC*$bYry<}=Tz0bx9-+` zZ+B~Co3VBK-dlA~Rh>F@&Z$$UPQ7yZn^KDwFQPwdeZ875luwKqv6g15)z+jnJYC5(YKAdgsI{z(5=OI8D2`>S*+#xtm}*&r znS+hm-FRv}jSm-(x2)y&*Ns{oDO1&EE}t!C@hVrDHt=fozMBr-nK`yAQ?E2@IRkZ| z7nGPORi>Lo%Cp9PRh>imc(Y9Wq)=WiTQ9Y&6}d{OTB#Qrg-W?)E!{PCMavo*la;Nv z8m)U<)=jqG>mc`m8`c8137jtoM?IT_g zqZ*=9XbGW2^;@cD6pd^hjaZI;%j*cwVzyq-P>q;YmrYebVb(@Uk{HU&8f74* zVYE(K=ege(KpVA&F`X$Hr75Dslhzhh;Y>YWIi3-~Rq`q8Y}p%`#$46FKxx!7GnHB? zi$*NR2Q~a|6ZDa3){RWF{Ae>cnJjf3d-Z*Gvhc4ta@&24;(uscf;8zunrGZ#1g)iShAjtxzx3M{_`kQ5zH8 zJXWZT+XOAf%eX}QxBxK@td6%PU(Pk^}=j9+i2E|OtDbL#VF6B2M=ttRyT}N zwTOPJGZW#FF`ThqwyY<{nSqQe_Ax$ItmLxAaS+3Fb{s6M&P{gM2(@@z6o2K|&Yk06 z48~|Rn>$Kl014CCMm8g8H`B-)C1YG%gHo7Q%Rq4*w7p8OsZ6~&GgCN0{jzMVR&TT> z>(+27TSqq#3P2=<@-z*YpzvDX$`bI0i$68S+0dwd#YDj+C8Wzvf+1k;TwZ&gRhElkc zCe?73#EbYEdFP5Wv`+{=wO*yt7bAz<2BDyS!1XW~LwsM1QAf zprED3T z9pXQ04dEVbBq_?kF)lg)au{H;2Nn~6btt${o~aOvaM!XkK>0_IkF}%pKDV;7>drzv zXA~iHjY^YLovd}fE!<9kL^6;}KqARbuvr7*kq6Oar3}K}FhRU<;)tNZ33_=1q%~Ek zU`TDBz~>W3=plWb%rRAL6w0IY%E*>Sk7bKZqrMlPq~xns{x_{<_tlzy*z^(^m*18x zl5pRsm&|Xe=wbo<6satd?TXP``WSi?v5!rjWPXkGr4X*vDE(u+MB0E5ysi94pg$H! zAMqAKZ>f-(Vud8Vw-A0!g+N663&BgI4MHvzvr|;ZvnFPm<(%CDl|Y#wj%q3sZcBD1 zl|Y&5#-mN6Ogiyd6Iv#ffK02wD2PdeG(nhX`iQ4ckqlZN({tk6VH#G`5}}uPzbh7@ zvXM*}bF$&1A*o}LygFO2mYsrZ%d@pw7Aos1ro=IbY4My=cll4F{HmQmkDO(+SU8Fn zE71J;1gAg-93}b@`S_`o|15eHh|Qul7Ykw)kLl}NU)IOOOQzEm_kzV&N(UhmsT@&1 zV*6l6TGA#|FW`OtAFTnTU>t+>N)i@8@CwzV#Bvt$L{G#kLJQ|?St}=?^-Ub%rz5SV zbuQn5Eo3mD3K)?(yhFRHaquQLxxVdZ|W1RTtD(1hYi~UlM zU=E|ySz-mLy69@)_Mo^+UjjKZfNap#Ftl$g%#QJ^!b_? z*RnOJMI`hf7&zyl{KNU5(I;2sujWtk*W@R}x63h;0`=ve5syRsn3*X-PZK$>%@AMFs1qOw;7S8frFXMz0=){w*q(&*YDYylV?(zka#o^2=58 zS56x<*=Dhkse#=~cfD{79fO~8n)u=5@@#4C|4Rr24cxTu{i@ud=?y1pvPLtb2*_-E1X%Y zrG{CT+T|ou4YXeZoB< zGsm;FvY70NcC4#6t5xnPraG9-X(7_-)rD#i$xy|N6G4iF?}^OKWQ-dgbv zG^{KZkGD8sC4>#DK^fA!#fX9dpwOrma!2P{r#RDU`JBO|uL34=SbV!te~pfu#WYDK z4hYtydUJ#1RNzjy%S;e>wjZyV?S&$~2(m zvjmF3UFC3DD&UG%&}-NsB|osU)`1+fZ5P_+t_7G+hUfVM!pTBMT-3v(nael<_}I{yAR z=8)jFWKx6LG7O_i;W3)G7wszKv-v5>w^=!1npG25PRJYi8Od-(4kk|PvY_cAnI%&g_Sm@I{vMj{Bp$|I~LLZsw#`DszJm0UA9@0S86|5W~I(SWb#zaehkkbk4d zzlQUJlh?9ZTdhr;03D-|X;z_j!h9*TByNOI9_t|6sVw*kR2zORK7ta!*7j^s&WTm> z28JnQ4E1v%$1IOO6%}zbLXaZ8&woGv0|8su3tSW;UQ2XVi?E;y(mCZ$puw#c5ClZ2 zdonQ!eTXzrS)8?*tLVH}<~$hl8f5U|x{7vCRWLfrbt7BLRFL{T9cdg@y#_C*2} z=1CCXxIzvul9fGM)Q1ewq8xlHZ2mHXO-{%lWVB2Wlpv>eb`J@~yV7h_o1}RuJ#abe zfwFnR`bQ=Kh#t(Q>X2U&sOVrJc1d1JW2d!bEG<741<1PE{8*wuwv-X(V)_DcqFB|+ z98?1^>t}?Zk==s%9OzJ37~Q=l+DhVy^bXY%=P~YR62fy3vJ@KSic_Y+g&E)ylQ zREO#aNr{rBz-Gw1GsHgdQj!+boJQURucL*nmUXQ%^5v$>V`hEYC>D;@#>z%xyj(4f z%e*&UId0TnI1a^sv{WjN=BRGSEV0H)2tjlylU%jcswl}YNrEqVc%+5P_Ld>4Z+|>p zs6%+qv6x@-@FB`{SY@&Sfg(t6kv*cm-9^hM0q?K$zE_hMNgl0}<~rb!#Nk?%L=z>N z0Jzdts(zTm^h$>H6eWYswUZon(!eT|0cuo=@mVSl^C>k=A_K%Zx7~lo z9qGxN?z}a9-K}@twEvD9Z@T4{dv85>aBs^le3SFFSe3%ULKZ8A8}GPj^7i|0x*eb1 zamS5Cw%fWsTPaP9B?3 z)}*$G6yho3u7tT2CdI{OsSL8?JkpR!d0;G@hCVIcpCi6#RAB$Y+5s2^Ym79(ljUv{ zIeeVg4b~-{my|2AS{uZNoJNX0lwlJ2+|ak>-!97EEHb&+zO8t00qbP_$S@#hT13W! zFbf`q)d1?i5E@#k)hfrakRo8Nkl(Owm4BCbDQhDnvumVqDH6B3*ya>z6NWJ6IWzG> z`2~0}n^H3NR79j~A?6}dlrE)2ITIg$?#je7d2ps0t$qXhED>edHY8G7iE{bR zGUh?d=8Y^X>8g6`+*!mF8B-ko+LhEOlwjPY*@QRcc%^ofl>P(DeM#AJ4*Caib^hpV zrzDw@u@Pb|d1M>r{G2ZxmX9V#JmuRiGM?vTq(xV7-V(&Ks_N}G);`7)1c6PikM7Hy~;#av7gx0ApGMm{zwZN$tT%ZiCnXQiA&3msM0dixYszF~K)=K+$M zn!j0easHkI8wCNeIXu-1$=d>NY_K08^Eo55f=TmJON1sN78M!Jv~i3qL8MJs%Z>6Vma*(?XZxTiON6y}r;}~9 zlZ~y+f#n>XBFpM@lh%H~o7s2By*4{4{7vk##lk385udWP%T9Auzh;!kD5cDM8LcAq9NR zPQM5Xtqv-;I3JN(O>P@t1Y{!tZ*VH+>KHqlus0rdU~P6_@w^SQ387A}8E@8W<5Pw5 zc)mdXW6mco#MyAgH|y+gRD$zW+9?P$%t{FO5L_mRe6d&w^0l$D7W5|QSFJ6BcwzeG zm%O&{OZm47slXE*&Koe-a}r4ss%etaxgUj+;$FXoIZaF*Wde;FVZD}Ltdt3?+|XK4 zrJOycCS2|`@BATuZT>njjM*CsN{n=L%76i5LSwDW7Gd|BGN5ac2N83-vq%}ItgJ3M z%mM|M3MY(dZ#K0O;L^w#&K3m+u*3qZ3zn25PPMQ~gqa#l4y}PI;wyzZgg6%9M z>v6Fv#?AyjYFmpkV$J~bDcN>CxS%i88aSzi%mHuA-z2haR)D2J9>!7Vs5L1B^ZTT2 z^c?o&In(!+lez3UVZfYKMJI6vNIAU&_U63UhDr0{>@=3g*!aj(65~Xc z{907KT@?t(Ov{IM&P$`fx)gND1J-HT(I&DL@$g=+r9e@Hg+XFXPpT0!Qb`-NucX4P z5*@coa2#kYu%dzevuH@1;pVTJ7?88tdfU!-`;FkUn>oI|3r($+{t`;kh;{sUz200ckv9s_@Mmj#jZXy&7OGFi58 z{vqDXZgL_64^Y{ZO*SaEADz-6ET>YOEUhVTkQ&Ap@?VtHWJ7T|_ehIV3%OZ-Z4Jug z-bBFJn$0O|m9XK08sSV0!_Q)CgZ4(uzk!?d$Ys)#{<7^@jDyvXd?hDc{`jlKV!{~M zi*V3S-7W9zjSTjtiLLN3dGIx`n_^*-JQ0K}Q%Z0CL2D3*WStgm8nF)9BTPBLj%Qq2 zhl3_0t+!&T~9`0rR+*C~Lvt{i|03K=* zyyUYd;HfL!>{b@a80GLM<%JgOkpw`a`U__FOcicqHjUoiqXJsiuK18z*1`B6h42g} zMX_hYy0>RgXKEF=Ar;7aba&5yVu~R^cFTDjj(IGbgRyB&ZYi?v?^#`0JqLNt)Uw#) z@=%v>ZB{uQz(4Nk6>wLlJ=iOln12+7I8yAcThg_0L6Gh7n1sb+tD%dnTBriWu&t!_d+Kt~@*P(e4{I2~QWHW9Kc_;fg0W)@DoN*QdgA%=@|!UwIlLp^kl zOf;ou^aUr4TH(Y!$+XY#n$w=u**T#$+?oIhD@HS9eG?4n?u<|6*J)%b(P2@%Xu1Ge~N=DbwI8fp- z33kI%pg%GcdD>(w`)TMXo zqczE7UC90>wpa)Bd$&5c&0a*6i6gUB;l2c@2p?Fs2GwJkd2g%hS(uFgXN0!iXszW1 zB3h=A#wXb3M&M0C3+}ux-~1*P!z^rba^}(E{om31Eq?5|KK&2Ml0*x1)0(3QxfLu? zhi_26lXtOt3BUM+CEX6zZPdi%S116_A9-1e1{DF9P;I z6YOqn2o6FtqlYNrU#Ns`Ej2ddA=x9~ewpBQJFslH-eLQFf}X@Y>BhMY-D|24E%*YJ z(KB2#J+-WtZE&C~#ZQ#-6KX@ZtjF#R4-fr30q>TF+Q7qROrjy* zqq2HurV?{u0s7zi0Qz15dVo3^zNWp=_X6i;qM#p88@gSzvb(}ANNE3}h#ylC-HLmy z2&o1N@LweGJ)0W~%awrq*95s+PHk6QUlQKqs+sg-^R!1CVwC(2c;#XQ`Yd3@N-E$I>W@_;)HI33ClEf;f`fR45Aie^gKs z1`<(_vVe&aen=%GVSeEyBQu@3n(oM?X0D+-GI*J5>5i;Z<~q6~1CqI(?#S$8ZlF7|&zKwOj;tx> zCb}c5hq;;V$WCFNMR#OVFwdqtn)#dO&>hXr&2#CFX42*sy3lObJdf^ZYHDt!JDNC} z=hGd{^UMqAj;3X1nl3bNGPltkO>fK#>5gV1=0$WzGY9ixx+4wWyoByZ6E`oVJJOWR z%jk|2S#yLgq-~np>5kMw^K!b7HfO$o?nwDEchDWFN9HKqkrrc)(H*H7<~ZGvI$&Nw zcO<^eopeWX)!apQB>2oL>5fE|xts1tsF*LL3&{j?58V+PH?N`#@m}+4x+At}UPE`p z;mirTBQ|7SOLxRJ%v&z%DjQ@XgruV(jAeqc@y0cS(-P~9Z{9J z4|nA5X-7vU%l2C7uqpPa*2i+K152&5y)St^2gFLgp=Ws$rTZ+Usp!)-G=%s*Fl2}I zR5oDb9M-wFaPJ^_%P}ahMnCD{aw6z-F@YcZ0i5Uo8 z!W-?t#eP$G6Y=W#)KWt{5tp7%o&5jA6LISK)KhN|PsFX~ zQ@`~N@kE?%KJ`m~w1Hs~|DI1h{#o%vJbXTN(-*`O@$vc8vhRu~;^p(Hqf0jOcf`-< zQ~$U|JP}WyPmP`@o`|o{r~YI_JP~i7Pu;&qJQ07NPknQrcp@H;^6n8&#OLQzw>=`B zh}X}jt|^Nr;`j5ZhaVG9#PjDMBp2pWAO5^}BH1vX zdh|QuiR8n4>d)3}=A0xW&?`5JCz2EMsXOl$Pb4emQy+UoJdwPZPaQfgo=8%lee>dp zq{Vz{&wm$BBr$;9zZFj;HRe%+iYK}KhrLvv2G^tjE?}F;xRiv<)2-LwbOoXBkmvu| zyfXpu#wjLB2D{>DZ<&ZVzEw-&h~Mt?H?j;Q7?rWHaqs`UyE$pdce(2spWE9F#xvNG zhy80Au;A7kS*co}qKW4$P|?KT7N}_ArVCUwvF-&bn&iX+6-`2Efr=&xxIjgdxLu&4 zNwzOg(WFQ$P|>8dEKt#;A}vtSq>n97(WLw>P|>7mE>O{=)-F)dq(d)I(WJ01P|-9y zSfHY5DzZRD)4XSail#}{0u@a&x&hmXif4n#?p*^sBw|dd&2DKeZ=YrrQqzA^Por0zBO(JJA_b9Wqp%LDeBk z*%?$FGS!_y)gfEq8B`rIR-QrCA#3RwR2?$coVppBlJ1 zLkDuvSsJv)kATv2PF0>x|HK-d2!e?OU*d>;c<~zPxdC5>G6e$0+8;jPlS{GcCl7`n zs%4MMxR&{6aQtN+r%)j_I9B)JQbE}f+!tp^itm@RH--JN`4iOMdg<6$n%_@Mq_qV? z*V^E4Iz0hjg9&kZGOaAq8$N$%BE9E|E9i*>$W5dx<>DMpk(|vphFj)OQ2_i5hMiDw z?CY_#z=6pTfn1)iM|qqNah%q25y}kj2XSPQ^FX1r;Z`BM7f>UFs^tTn`2YxOxi}HY zT8b)Rd9+z8w9Ln;jl+n@Gff9O0*k=^;>*SRdecfZvWSdMXG<+wj*J83r-I;I=8x&K zA?h80aPeY5qT0%MkHqGX$lhbH?SsI@A>-nhY|820qm1*g>7e^@6gAGiKJ42@2eBeL z>SS}uT#Sl|-WDD9NLYt?S9Ig{8ht-(_nJ9?a>B595I zStoKV?WkW~0R)?8P(PSk?Yr~o?gF}`aUtyd3>os@ zR^x#&lz&DN-Uz4S)LK3QO3Pzy2#Cb32v&Ty>^_9B#$XA~`kL0Oh?YeyucjL5wVYHn z%myPe5O=cqdk7pi|4Kh#r}+m~$@W`Aw6B9hb9x5%5B-QPCWkpUh=|m=?KV3;f_7X-*u-@%+fH2q~RNf_}qwn50AIBawx`I+aV&&(G?`+n)^{- z*Pu7ERDZ!vO-6na;2MH+{YUV6f#3{EYEC5>2ZyPOJPsc6SJoK^#0DNg1{c1p>pi%q zu#kj#L}5Q}7-i6RF%6lJ<_%E>A`9i*ePPqNw;N7SJ>1>UWjR`pJmzm?uStG`K<6=( zbh>-w5v@n0J&?MD_>X%WRAy+f@X5byL#*!@77U0-4u>s6ba3sPx=U<%y3BgGpXJ(w z!eg?(MQOD1WdCVpqo9@7^`BOZ7$VXd5R4gG+-OV6%LfS=9_B82k1jx)Q{JM2g?mQJ4I;1=b?<78cyQP-z#(a!Hk|^b~9OrYY#+ETeULb0=uj@wz~#VcVc{(Xj@RE*TVViErzT z<}~~*sa!q>PMkzT0bJ6#8e%5FpBWlBO2>)t^)ZF`5g~oYW3~!Tnl5$m<9;mK-6M3* zA=`J{qf;!WIYma*MpR}Qz0*thR744J1hKV@Cr6ej!WuxeXjWy7DMxtVxn8P|=72W1 z!q4I`g67m%p~5pEp6Os(Qy*6Y^%GPr7U+ZmYY;yAmEtk@s2^Ai(qSI@)EU_K9e19W zyXb7h4B!`LkYc(;;7A{A0b}b)p8N7Rz#agMnd$V@9FL+0vSkd8TKWMDquE-eS>2Hq zd)GkKbLnh@Gu>Y<@FtDM91VgyF{TQ$_>R<~T(d^=;IO>=5MUF7tz5{a4&kESXp~4X6x5YlJM7A5g>WFu1FZa8Kte zC4)|gOkc-bVDFKPjd01A&W{G8Gl~C9H zWtsm$-o+rXBKHwJ8Mv()^61RzVcZ?lwPnZm#vr5s#{+!9EnF)90=J<~v%Bm%XH9HT4b~5N~z3cSgWX zqT8rKc(__GRGN*{WiT@x*OVMbwQ)^a{R$4Z-ex(012_sn-XW$BDxJ?nh@VTu0M;on zU>1}DiSc;xj$T(n;-O2F-ucj7b&IsQ^WP{~kF>)Ay2uwMwn$3fbZn zcD`h-LV{pBGw?wwcngn`;E1SDY1VR3S7~k2+KA8sWtH-y%CGbuFwnCIzkCM2_QNqj5v^A*1!YVViP=H z$tY_8+C8Ed;P_$EZYT4foV12`HNAne9}y;Dg{Zy=OfYE;%SS$v*;)nGix>* zcroCJ=?2b~x7Mrk+g*tWF0qP29ngstA|e9btQH4qL%!lbcRoXHi+H0>krxM6DrbU8 zI=Gxp;C5cD6vv3FSP4tKp%d2O$am$zW#-YFiR7X0?XpO)v!ZpBNh9wRlsM(kqy}D&>^`v+} zm>W~n*#fTr>+|#k&&SqU`&4q^rijMChs77=VMEQx;SggSw(HuUK4}ez^%=s06R-pB zC*Bwy=0ik|tEO?rAkM#(!9IXae!+(y;(TZdv$2NXFh!H`!+BM$8_nrT=0vH8Tx*RJ z)e6FRxW8oD$Tc#@3W(rWsSzwXMV$|2wQHGDBS8$Wm2`G7Rs#hS0J%`$60A4jXg#6n zM1;~<0S(2DtO43wM6&kHO*IpJBNkof6VjdyPY@&A@wF4ss2aw|&Rk*0Y z=LPRaFS%kjhN3@^h#r!}%n_g=L}$Vvm?m{>(0l7{Nb|HmlIs`~ggeiINS=8Nb0HO+2Ap%!jGG zSb<%Ff}-HeM?~#`VVRB%#yA7j*!C7-@gY^#+yn`cwbs$`2v9)5{}3+)nl5_>t=HZP z-y=8;0p^T)7?IK%`nJiYc7kV;eao=x|HZ*(&Za;`6^vLOP9Z)%NOYKueda=A%Y~13ne2J!8*loPBDyA{QW8Z_9TCI zvdR8Dl$p!q^)W7!t<78}&lb5%)_%FnzfxtI|G)*WvY9u~!i`$xIvP~Ip^!c*AG>Vv zS>x&r*}wQLD77@j2X9px;(%cIeQor-v~v%s@A=yyRVqKNcb7=~yv9+OHhE#m6i89< zuUw@`ix(}kK@^zUCm)|iPqAy?YAjEI>)^QfI&80^9Gg|SUyFI*YH{F(O0b2f?waJC zH#jpuHWgg?A{;ebBY~L~RGYp~Gc{gFt6#uX+EM3}bx`O=#~~Z)NqjEYh|N=<20(;P zsHAmIpOWGjUlELGv9*j3aexIpSGHBpYW!bU2O+ZA%&h=4`2 z6s%}?nq-mW+0K*)qkW||#WjC~Zggqt4rV*ILFjX6rO$HD=t-Id;%#V%s91~cdbjHO z7C&HXre7Y2yzyj?cwqyhj^ppJOIInIyX#>3#MOH;dv>Qs_JfHO zx9>=cx7k{WUfxv25_I}t0p_(z8Hslk%FPq+QZ3z% zN2jSiTEBeEkG^jD#aS>T!Bd_U`k1(-SVP40& zXpl_??!@pU!%`g&7A(6S$HKSAJFkZ=2M+-w9Tzy>?{4p*lK~XFC?Yb&rucGoau}J2~#Iuzd6BLC#i3gnCxhE zu3GR}R#X%sn?`_~@vz6vMd$`i1}ORO=3s$2v>qH71bW!G*<*pa)DPIz(Dk5s zuUYrfgK8yS@&ocw#0-9l=ML%FW?|a!FUJq6uXLmBMt|`(AN3h+w;qWqQ6C`ZhG*4l za9%_W;z(Gv6dzTvSXaA0o|Tl`9O@KqPU0BRMG+oUHV;vL*%K_tv50XSZAFeke;liw z6gfd+O!`jhbQUm(H)w-cjuNj~Qe_gu*v^!AAQOFeK9JXvONrePm0DdVIe)S?gm3N< zq4`v~8~lJ>L-_1|58=E0#h>OO{9r^4`Z9#g9Vk)ugR^SGh=?9Mx~T@&#I4NobWzXtgccXWpUyY=PGYNwUJk2 z2V#ZD)nU%!iS$U*QRPxX)Z&Q`cMHDamDKChY5Vy>Wa6|vfME6}TMjE>kr}r9ahq3q zx?LFwy{z7O@9$1)mlC1vm*ed6<#=^aAYHn`x<5cht%XV6Ax{zj-da-*hbTo3t^T4G zYUwOm%>?WAG6j!?$6LH^|M83jy=c}Wb&b*`HDKk4#W`)W7HjX{gJG2Hsz1Q*0R+M4 zANRtX`6IlVG=I$3|HRdN1{Z0nT8ycHv%F?5;m4(XUB=htxS9iWN#Sx}u{kJyhVV0K z4)b*dUsqDX5_1*(EH_t+pEaDcmapq@J!!7Tm7|cG8|ZE$T{h8WGhNQI-j96{ylVAM35U2R_ll-&Rz=iX0<-&PR z%7wFH%Y`!|;lgWn;jd7IoBxGt@PKI7gW~5Q`~X`Ii=Rit&k^x6C4Q#G&kTOh7qj%U z$jsx%G;tAjd9#dLz^U@jh*`&PpxM_mm2>RDY|p(s*wWtC!2XwLS(gU(KO^MC<2YUe zyJ?}-j(MHw2H`UUx4<{wf%EuQ5#T|bNT)zQ2ymsPU`cynwK`{l1y=1;A&taC*w z!ea17d@V8m%w(gLm0HR}LO%__sx!Iturq5nFHE?IgEx}zAbm_8!BQ714Jrm7<~p7^ zd@>LkgM$g3v-BxvrUR9-1trkXlXYfiz9$%B%i zxA&HKZjEfk2D=p$K7*aI*TQ|KSQ|xq{-{b?@9MYunEdb_>Vi8@# z*cJUucpa07ClTREp`V8B^cK!k;B6{Hn!22<4x|3 z^otMPHAx*H zMqtlX6p#Hj1=ZmmM0?uYg$Y2wa7K;);o*b8H+C{Jb8vSxMxu`)*rJmoL47wwzmt1D zc`vliplt3gqeVe_7nyg5K#Cy)uqCJ{y)uW@Y|Li+72H7p)$tQJZB16rLt*7G0+u(X zD${e(?O$4}9FNSwMyL?vc$L#@CaQB2l__)Lh@1VVuM5zu#@spf9(B@ z0-k^f(`#q`5}{NsEDQas2-X8Ki^#`n)=GDY`uga*31++r6MRCsa@G>W;Y1+0xly#c zWdu6P$xeDFmBQ-QFXJwzDS%=zKzVHOsa+NYj1Xrlw#@edn3ci{;e)r7>S3+GGyJFF zhy)kqlblRm?Qr28LKle%iWBNgo1(xUc}|4)gF7u1B)3jmK?<_gjY`>h8#R>t9G(@5 z4NOklDQ}M5Dc;$O`A5`nR+%Ntr<1~D%P&{!4GhA33O|92!#4&K>st00bUxlL?qsg3^Y6|+(OC7R)Y5pv;p zSFVA;|e!N$-aE37S zn{8)MIE#{Kr#IQKE`j}no%8TT(Gh3PQvH!+CL8TWa2Ml9XvoH;tH#(FQ?~MHdAfZbmiRkMygt3=&#@^PoB7(iQ{WgNh-%7LTi!tCK0UuJ^<@hE1w8u_3iQatY-N8V)ulP;m;81xOMd# zlfrZu{`Cx^bB6!M$urEONtY^TUiCE5b&PuO`7XNZy`tJPM0CBxBf0{8>!RdU;0F;x z>a9dYAwtTX#zJa~5K@6<=#uGI;uB{VlIiWSsUSi!y%)f`l}u`viQirn>@E51_O*FS zZ1nrY(T9j$+~TN}6s9ANo@5Z6i=#VTHvjHDR&`m@W7wJ?_;bSD^IZ`9Nw4VT3=ssk z>ViOd9#E5zU0KeRmqO{q@ZDHPAY@|89H=?1I~WCw5myaQmMCShw8% z($IN`jB?t5=-fOh5RGl0 zPuO_Av+XTFLYJl|K>=q7+b)E#?chBr0wFeibGyB`( z(`^^beqU??iD34316a4r{_6J3J_L);YW9Ca?0)dE|0yCIw~l{ZQkV|=zlK3{&i-G- z?7s(_x>|2qvdJa_R*lVmoLcsLXS09YtKK|A*sNnoacy{38>j;} zv-c3;s%M ztovB-@G1`r{$f&?4h#MqgXo+E-+y;M!V>7byH90kO#fWM<@25Cp9LgzX@?Q?bA~W| z$F1JQJvhomn1XGG-QZji4F7tfmk@^UPGg3@)?2*J?r)AydtI>m8)A2I1iQZjz`AAk zfo}Caj6JKF{k5@i?ql|k5Rtg`?W>c*beR1M8ARvI{)LguJ}fkh&dd|S(3o|ZaPfR+ z)<=8Q|7QrZb^^_~BMAjFYIlwZCjBJQNeGj6r!kXW=?1DZ=r_lww=Nj;)3G}?fVWQO8=l&DD45iO90{|wTDBth_GRCK;W!WL^NyR3_o$=ddY@ma?pv8@T}G* zSIEaS#RC-49kUS;9`fH6l{BIN2YzqvqgvfU--%l0=$Ts_6pGaDUlD|IjjO6SCnz+2 z=WCsK`#+&*z|ScD-g&S!^R0k^!0pxz6i};%bC(U}sn<3hv>qGFI*nHYAkKdW_XQh>_4gq^io)=RpE z6SAOe?M(pLy^@iriLUvXw4$~W(VPp8U`~lfrKXG+=96N8PnyeDFIw~j&b%LxzbW}U zD1V3K@38z`A%9oO-&OK=wftQpf7i<2b^L3XZ%2VI{u%zvci?W){AIqrhpQpE;S+ce z-0+971(}bvexIanN37Mn4P4k284RZ*BP?hghafA)$r^zDRuk@*p?N(N?wv+;z7#<< zAJD6vh|eD(0hGl>cEPhLVDs*S2NrpO>OO2Lv8Q zh-Z#pi_pQhmW|r%oT{H*R}tiv;x-$Ui$Y1y7LK80icw5acd2Zf?@>rz9Qx{(lsBe0J8wG~VR?4pGemHRy-bL-+f=C_*Ae=D`U4>S5R zEO2l%4ZXQn{T*kTFUime?s`~|Ob>#)?hj6^Q99k;fz_N->sABv54AG7`^A`~~X{$Ns=4zvC( z2GKdQesS+KWSx`u60pYRzeQMkzO(tS_li=^5H^3%X7i!5tYBUrnmvNyuU!+)@ZD+5 z@XrY?LFf9L2xvUA?1JmBM``gKULv^u1pwA9*AF^iZY&&i&uZ4cIyUlstbZp_i<|YY zND9+o{eujmbJl;Oqo>a((?&9@1rL<&!D(#%Cc;p>@f0{W^`U+*$qzT`_x1|)J>aDY zKsf7j!hjM7MELsLzDNP{O_*^zS&X|O63Qx^%7XJwwd1;d7USr}IJ+~k7-#+fwQ^aE z9phOq*WO-a8}B+_dvnhjY+F;yy1h$KwjyoakpNOSb9Svmyb5E3)**gD{=S-jW3C%C zVh=DM6-2KaxT(NP{v+mvFeqB;pjwqqm9nnTN$1?9BD&v*okNW{z z?>S=*tqqj*p5wqbVsv#f3N`8E8GqVQ-~)9WP*}vV%DV%LPmkni?VJul4KU7aZ&@)` zSb`1>59krQtHm+L%chNbm}}IC$g-NUWa@?4au$c-8u|%})&~O{Hc~f=GZR6L8pDCg zwxAyi{Fu%uM;1O*m0;8xhj5PRVVqcAELM)wNw&FMT_)J6NIsU$Wy`s_3>^`QbhvQv zcj@cXFT3o4n=adtzU)|*t`B4{dwjbxipfT<;YMc586SQ@DCVI_t>}>Wq4|}IIRj1 zW#CyG>CZ&K4_QXE79WRV6*K{m^5iE3lZQLizB%Pp>!M_nPka2X4eZG5-J292C0H^P;hBn z6s%_yNXHVRM%=_h6z@9IIhkSs8n?Dv? z4+P5+ue1SlTYRdq7MG*B)-5(++=x3h05)>(Q)R2oa<0(~;{1yz^a|rytL;mY)V3O3 z+xxw>{VBMkOE0n7G5(qOl`@C$O^2Lc;_y~{;jYzzK9H5^IqB239Z7QE>^=k<)QS_K z1H^Z)7~10r@ERmbts$qT=I5b6OX2!5g3m1c1nxklFZZB$Pj`bZ&|f=-BmyP_CiKCabfGWd!FwTeL+vQ}}`0xLnS zVyFeOR$jH>T$={$8}Lw44_(C2IRoxY^1eGkQ-elA`w7~w2ntE2$NWY=su{?HMK$9v zfzz!ZyiFj|H`LlF2!ELXg)xSjtW~e+^PdvbIvIWbgFtIC`ut`;su@V1qMFY^`W#%} zR|PgUeRiT7o|B-?$*6NPN=m4}j`X9FfwULZ*s5U|prGLpU#;HdU&@xN*`z-OE@&&w*{@))(txRaf;2p7x{95kL*n2O z;K2fXWYSK>PEe~D#9I`#imhTNs8t*lThz*{Vy^~KxadN4?MTF;iB}(3itp8Tf+YBj zMhNdt(72#+(1B7d+L@%1ztN9M28xAW;Y!9~0I^hR#(!6KjkgIb`bJhejXD7aV~i|W ztIjp*PBfN(N>Jxyr1=j5seaOIZx{S#KPnkWnxc|@BuzB7FQnN1_;s}wSEBtLE+?40+L%!M zUK_tsar_-*t$qdvGV}ddPJX)OUJ70B_b${?7?eT7>5Jo6pM1n-vdv;6b1YkI8X@?# zHq@KdYNgi5)Jxe~E*fLZ61(56DBSSTAA+ldK} z@XJyj?N`(48dFPKKQ~_`z63`a^A~4M-)j*ch-~yqBDobA_&>5lv-oSDqy}#chWY0kqVVzBG^fDji>H< z9iND(V~F#Gdp|JNI!DD?XE3eEzI-Qb>R=-M1(cU`NAQo9$_3f!N-0|?x6C&JSb#Ij z3fg9NqFOBE3Jv(7r0{q=TPwFtnIEBgFzx*T-4OwrAH$us%|=pKm-`Qo?xjPnKn@X1 zJRf3-UnjE8d#FF%+eVMm3)^D^W5qiFV#c!3Xe;Ko8k_$gTE)8FcwwWUmyXg)M8EiO z=neX}e3C_ph8y`#YxD2+w#`n!KfQ*6ZGO-uh2;U=K7Us(*Q~OSr;1LuBYotE6SMBf z5o|H287h$i!r}A=V-|7gz#I!Xd|IAOAI}$ZdB#x@~x*VE1e8}mtLqua4kfU+p@ZlYL&vpSvAWO91tLU!!RGc1n zltF7bA{OL~)~WoJ*1+9!jXZYJSgZ4e*?bZI8kuZuw%&SNNtQ1Y#j(QUpm8V!jb0`` za6FGl%l1eT)TLf(egEU$(zVTYO{dbULMr`IUG;J)Wsm474_*mf-0cXF9yxM^wBAE} z;Z^e^N48I-u{m7wn&uSZaW)XR5+h2oEO4x0I)junOK_zb*FGvmQs6#mrlz@c0}RUs zGB!LsnkJq;f%kymgyXcc)QMY`GvXVf(xOq;{6DrIIbs7r?UCxx?RNUW{`m6ru}ZO7 zGKk|IIil_n43zm}-WX21YS1hf8tI%-Eb=}%svRaZ2B@r9999Eh#3$q*Ur=m1^npli;A8C@0?0xYCdR-T583F2ofT17oFVUH^3)2&q9R>UB(<>1xrM{w*9#)p#V`|8>o860c|JJKAWV+{u#SrU>ymFee7h5_>0_Ga z>8pey7^wmeh>~^EI21t|J{l!~*^$UmB@1?WaVHP6Y=edfdmF{zm9rO5dc(uyKMEw<(@6*XxyB0nyT@)5i|`=kY*2RgDV2;`qviZmm-_mZh76>!Xj3UybTdkHOSh&ON7! z5o~brln(IMBLF5C8V--6nkpW538pUXsYkC^td_zM;!w;H+lDQg473#*16`pC1SAJWam|B|ADX`67AWY#)IOl5N4pG=wJHP zk^h%5l3*MJVfh?^<-bb`)8Xo$VGut4y;CUzvALs9LA)X^D7(8oOvrqO`o_I#vm*`% z*ZXut%bG%|2-Fv(LRqQJX3K@gjOk%07LG+L&8F5ml!poYOXKg5 zG+kYh9vvOsn|`^>oZhLP$MBav9AQ*?q`y_Q2MhDKeix=0Nw@cQ2nEsqd4m2gK}k>m zz5=VPdsX_f4tqz(QO94o4cu3u21yOvlGKAN*W29f>-F$)jLj5K)oVO>`aZW+G+obU zt45lROyY4P4lC6`HnG<9C6@{X6`=?YB81$=D+k8; zfCX9mvpdQo=&fHo6Dn)hj)&TrQ6+6a-qrsBd66L413VxTC^L>g3Ybo61RG~GbR?>z zP4>99w1a`M8?Fs*uCis@wsf^t$r(7HZaO_RN6QM;Im8u9Z`-DmKx9rg_b7DFJ+35I z3^oSp4e-wQuR@D>`EYoqU=*i?88PQ;|_mKw68opZ`ux8Xe zXZg7kG$MUdYd%Ys;jiv-j%&VQtnlIqq&gj+4V&FEww#>&loBC0_Ej_EzwHn!SwhUptz zT04^<;gWtKVOw`d2pm}g2}wtm`CT$ZMKQr(ytDX1Byk<;_Wfy z9)Gbs{rOiu?ODwuh+$k<2-s_qs~4Kwiz+Ej_e-wFGkez2-iju~8=5{l(VH2BcRFip z2R@zbG2M^G*2?S~Xi)4c#rj!0UnxgrtNY!f*pbSa9oun$N6dGl(r&S`zMiCY z%cH%eRYyrHF|!C!(kL;M>^hehx~Adfm3nHJJ~kgwl{m_jBq~P_d4drT2Sj^)?9~FP z-rawCOOxT@SNnyBcXo$|K&c_{5QlBJ^|828M|ddJmg`_-CHcSlcwVQxRkFny|6FUHk(`h|yYbcct)aV79@y2jPN6KeWDu2!EF zE^OkkXCH@;J+8V|?Jw+CQ_ctAcuG`zVYP)}`UX|kNVv9NNVuvyBm|BqfrQgFqOK>@ zbUmVOqj9N8Do^Oihx*k6A)>Qwg=YI)p}-jzRW?+K4V`hd|LV@(P8c+GKdSUNMCzM` znX#o&*R!y9X#s`OIP1q9g@&hI2aSfd|3q#{Y2>pFtWH*%MJ&dU@jO?V<)wT0fyv{0 z3Pycw_$F+qJCQT0${nDVEztT+VJ2OwV1pjOl(Ff~a3*l%Gk{$%;sBtCxtb^5kv7;o zX|LzwO{;)eF1WG@FggA_)n|a!w5NbM?ev;-rozQ-s_QihnfUHoQ5#@^d z<7o#*lq-?N5x>#+$q)P0l>g|Cm;xth|IRRbuTQQ!JDk16;R(L^!72dmLa7cMQ3464 zYea1z)O0RbD-Ua`PRhc>{YsvC!heEOahdw_@NdkJd6 zds5i;|8!E@|C3~lvt2wAZO?nT4Pq{7EsonD0vvFhBN$JEH&F>AuuEUWPQ8ilg`VjR zS6k8AMKL3=i*v6L_Q6%r!8z+vgk_yDwX$&1LYU;@x3L6oDqv;;WL8 zEob27m!YbP^9$)DSpsLDJ4@3|xd#!E1mGc9D8WPP7$%eyRA5-`ULJ-=IgWg#g;;0D zqO&GQ)$O3529A_1N&v&dd|a4O&&<@aIbWS*BHESB(cE{3@P0q^K$e33UNLsX@NlCd zv2(A1^Fr(7As>bvG}40`ZQ_o)$P;osJuh=Pvunp=%`E7Y<&4B~NWzF&4@ogQAH3FJ zu2MW+m~P}-2ZrVNtpTi%ByR&_0@3%loQJ~7ITg~L5%cw-DNlu@_*S^@qM&F9xi)dc zJyz4#1)clnB4}q!jJdzt>uh=ROm55%6E_dpZsks6g)Cwn`w!zw1$Q{L0fbXSb3+2} z$u4j<l48rVq6yDMc(WpEB^#-J- zkbR3VwY6uSoOTyH2k7wYy`q@}v!vJAg6aK&?0O&;4%lKLM_LRiH1#+_!TBmeB&e#*G69+qq zoZRAIMN*iKI2dFQor{B;SR8aSuhC^e58!En;3mRRydf7Ax$(Iq2=?}hTFwwbu-_I0 z_Cz_39I!u%5ChXhO(8P_cN&XxC4!vU4fmAW`za z=hB>DDt71igurWvn%qJllN6>S1RiD(oeP28Nz73?-%kcYWA$$$O#GbHyA7Ud?)g-& zXyOcE^@h#rLrj`+7=H+e2r=-xL}?*nz@5fo;H(h%x={E?eB$jwD10b3JwynFKLM~_ z2nDEqQ@L!t{?D0o1ws zI)V|89=qV~t5I6d3_n`{tQXvUSLfW_#^H02oe#(E8y`C#C1P^3^Hfrp4m)4QAUbE~ z7qnUZ)wy`v+#2(~p4u00usmN(HWR(-=`)0RA99$t&nqDo8~1%3!O)KoeT8W6?lflT z>-}B~I%_xLQ)?HjeJVBqL@4eR0P6*7kFf$DfX(M1lYb<3FZr1KtB9=JO#V<(m=2SF zkU@0Lxa_uYKT4gm$NyYo_g^9m{G8nfvHQ>WiWbfgc7Lm_%S%7p zIGkR762asLw}dl!cN#PKl!T}A_f-TU9x-;o--l6J&#W+K0a!2i`_9g-FbajwLDoJH zyK8)`eLK;To3$@Z3e#cjix@=btbJE}KX;wECjp?b_iG3X@kZ41#Zz?PL z%jH9{JIKfOA18`(v;CJOh3T;U`xr#$Z2$5Edy{ym#Q9KT^RJ^;_kqouPm!Cx8=dpL zLT3-SW&#i=ZU1($@hT1oYZ*3j)msOaNTMs*u-+2svH#6gI377ds^-5d_Mbc*31yYo zCAvoZtP?-`s0z2>BCC|Ms}!&|*y&8#X88lu$`uLJ*$nsEfslmGx4fBe1&qV35$k^J zU&2Y(<(x4t+1z->wd+&8?7*SKy)&$39qbw0oV_KXW!>8|sE$vhb);uN!+dJ2dwN!c zy|8N?>K#nq(od_0bfFo!th;+wYc;vD9_SfJU3?qnlVXrentuhJ`b2Be{Dl1dr2PGq z{QYbB`)T?6H}dyyfG_?T{>*paZqoc^zP^WxkqqJqJP2;{F?(6zYqXtS7jC9=vc}@jI1D2qWb5)=5eGGfY|=EhUOnyJ&J8jwK*iNl!@wj9dh7EFgg#c zZf9CkuBdk^A3>t>pgc5ilzi)yM8sG0<}*q@PVZ>jr5*3Vi(zXMb2f2!N6y}L-pcB6 z2Ewyxf<{y&|83DBd{CXIL!6igOX5+LHBhfKYdIWgz#zT{0;Qk`Kfv#SMdlCrrzuhK z!)0jpkML^J{4rnu6Ib&YT%;shj9rtH<{m;!{*#mD5`J9D*JXTNj;qOA&ZfI_ z=yEPyw$SA~T=Kikt@xQV&*$p}^y(QijUV$NYV9_DeIZ{j;_JnHy@aoq^7S&lj^HYA zxSgLbr{@>YWd|-N%~4#@;4%E%x%M)19KVz16}Xy5sGyy6w~H=Ua>{PH%~8q=ad%+Q zd;uDH%G^V*ucFJCX8&Ezri zB^oH-#-(XKAhJFvejdUPN_$xRJR*LMh@UC(GcA5*@PoF@($69@j~~;-<#CuU?`@f7 z+yYKj{Ja4_lja-6!&CfVkCWz9f7BN9M?h_$CbtXYAShwPyh=|=a8Az->H}`urF5t9 zqBvXJ<;bQXE11i6KVa*Bp5Xya93^rLA^b%s6HF7P%#F~;gL)uN_=pq<2t<}_L7_Ik z08+MYaLOCmPUkyy=#`x=aloAIEi2h3&-^o!jaF95f`>x8%a%#zS5e!b=8u@)(o?LX z`=Bo7QUevo;6ULVY04 zB?!x;O~~)|Q?ZSfkl`_6ZbNm<3vn?5XNx}lYa``nec%p%an{WU9D(LSm7r**Z4r0( z+`eoTfou#h8RK2rl9HifnU{G`<=#TAOo7*95NoVNLrKP8$Mz_>lA5@?bCg^fg%a}- zs)Dd)ph?$wnsi+^Bxcjd4IZfX2&jRS)wWXtzfwhwn74Y$T1I85WI?UsmDUl>_#I*1 zgOZ|b80Ia=AZYPXfCqLT@YHSbgkCW`YqffHf?7?rtJVG9TK&|+cNV8TwelQw^JIcr z4YjM)Pf!UBSKfX+5ZLeCQA>^21!uOliXkL=PnEnNg{5r3kY|1AL)gX~@H1L*#$ zAUHRI4#tWhYM8!@KLPob%iL+Hx_kv@6d z<^agEw}QLJoB+m<*Rocf(`P4Y2>~H7>rGtanR;)cgfekNc<;k=BD#?UpcqqTV=%^F- zT)p}gs_cJ|$@`sj_dWaW`?x!0{(!GP?&E(NQ0@$Sa*ut(U(TKsCQvdx+da=NCE;+9}Orgym=Gf*BJHgF$BMWC- zL>U)x#zn4-nuPo`^#?PIzoa{jMTOY|A|#}<0QE^fVCzF?_ySajYtU&~jk+VG@PtcK zJqR)sv`!V!tM=+cjCHE71S_s#DClNIVTU}ufMV%SPze6&+*o-!TdQT~4v8m(c(`)c zq0)}@&clayq@CFQ8Fo&YNZ-Y0&}EB*EHuiPHjfC+rSZPy=f~!KBWCiYv;fSR%cu&W zOKDG?d4%s!^qIdxwo~WtkkrGj-~5JtZHdmmr%PLsp91j!wyW9Nm#4h2^s~SOhAD# z{4#z~wB5JP)5b63%?WB1gX_y$#pU|{H9@UnaD7=TZ=a4z{W~sgbiRs}k|pRQW53nt z<@XZcAQ|)i9YH!?=DkY8gI;A%npW{Y?MKA}S*@se9Oe;g_0`kJsI{(RXmjK;>~9Jj z`-W$mW!Nt!z-5f#DQnd^0WW7xsndddr_sRo64W~x@qSkz)=RuAT-;o*u9l)zdf5fB z=UsuT1e&@ONVuZXeIs10i3>rt=>(YUC)qA8=`?_6t>@JJM<2II063R6J%U9$4pSG7;28>?(8{s7JH7>3$vMGp<&dr zMY6$98MW5aE!UE|wRoook2`fdJ{G^m7P>srxA+9XopV!{GWa~o2|)oEiKrJ{`~ImYrQ~JRx$DNCu=PJ zw-a6tN6Iu@4;1PgX(Pw>UMu9 z#;gtXX0=+WH8S;5w$^yGS!rNTwsM_(KShAxDT+X381)A6mbTh*GGHMaiP|sbe+iCd z?kV4enweMno`kuJbk4wSqqeq|XTQ~m|HBEoG6>b}^|9YWNdau!W9ikZ>`Buq{ulkI zcpzgJ6^}zIv2-*~BfDbozb$a=(~H`ey1$YDmofArS*sWXEXRP(w^Qn^Mh8DkQ1@g6 z{5^qO?}S43pQ>CC0jo5v;;C)%Rpho64R_z4W{$@yGH9RXGFsXfuEAnT^c~If8hpO< zeVUygFRN)Zoqwh&JHMZRZi57#Z`Wm?{LJMR%-_|j4g8+ir13UaRENhyQ+`2Dv4-!? z*0R`rXw>Sug6mGuu=gpg8eQ+mc@-)o=;yBpFmC~NNQ=~kr}Qe@%`{)C@AkD5M$AV- zQcUj#;deXkd+Cudx34|BZ6^}iIYBOg*ouKI7NhC=@g^xLSU8^|l;8_Vnn6*^ogb3(3Cs~Pob1s@=i*HpG%s59U()hi?ByLCKRZVy9k zShy3kuKPxByY5|f*L?+m(Not`WUwXa5#6LkiD6r~Vl3#`CIi*h4}0+8%fQvK-)fjx zc42s(!n|1{SitYwm{%W}w>qQ-R%(xt`aR(2Ew&lwM(vk>g3z zP_(sQC_1M*6a^~o0!2O z5%Tuivs-Z|)6){mlgy2g?=&jAw_gpK?2gI;2jT&S=?nMbxYsghM;*pwawguk#BZC-sY*8tpuwl+m9VN5qrG3 zj3nN%=1LMw!{gQXEB$K3+X&TDapYxt%lumyrf-b7+8DR_AM982KhRzC14of){^=S; zzelL)b`)7lc6h>T(hH4|eYRg+5Pujsj*UJ#a+1U_^7uS{qi>Dqj*bFF)fXA2e;7G! z^fcf6yCt9nP51D$f7wNS;)ROe<+|-q?40mLo-oFd z%M!$4(sUTa=fs?|V?)X>d7X08BPuS1`la|3_+N#nume?$ruWaJ%asOu0Pjf4sHV~? zQmR%&$oI4~l<-MFGX-PX6$u0OmEl^pJZq#6U9lsrPB&`6^s+s|e&Tl&*4UpvS?jz* zy(N9emhuwjh9R~TN(`m_&L?k!s!u}aZ~h!S7M<4`G8z%pN!z>8| zd(A0M(-awaB&6lf5rvc2^$RDby2DAJxD+^v!*tyClem+&HxOz%7ngEGc)Fv#vE+UI z>H%4y&c~bP=j~~Sr6n>&@f&S`eXL(i`EYl{6sUXt9>etMo?1JTAmQ)(g@n&^hlIcp zC6I8sM$|tNYPua!){?{Ci5y;Nboj%5bwTVQH6ZkdPyyym=YgeOYHeC|akxy4BYC6_ zTRvJpZ}>_Nt;UhJ8} zMCx(;MbI3k{Z|k7Rh8C;O;ly#^oVcva$jt295Q=JP>Toc3D7?$okKlouLaVAc4*|^ zz(pz9keAya{#;DMI$zIE-761;P@I5?$$qQ#V6C@9-C4=65a2i~`QByu{W+WymMNfir0%o6D#99UWiA3+-YPbGmBO($!j_RA?MC(mA78bWQ($whRjl12`(Hf>Ss3 z-Oj_8UoHx~{Bm2K2o5P;>oV|EZ_)Nz0>^XiS4RLA^TAu#ut9c;Zcw5TK~$j$1`vlJ z=hnOut%)c7B=tK3i0J5a513Yp?DDw!9k-`&69tNXAt^w3(lq78#IJ}qPGbD zO9ID4`=_{zN3`wj4gZ^A`cyWL?}fqleCt zhL?U_NrLBl7OG#~qyF+y>WMy3YBQKp+qLn@9<{MOO^OPhCYlsp2%XzlG|}%_EsrEb zK{)CQH@l6~Qb{4sr01ioiX;%?&ZLKQ{+>*F5;WwvZFtZ(8|YsCr{nCWKL>sH?Cht2 z#+ZKw%Zk{(vNaL5owJ|xeJ|eW8cx*?>4*`rY}U!yPvjga&VKqFje9=(iSLr1{lxx^ zJm=vvGiZ`&AIspau*KVnMloL;CELrWZF@mLH_gRbWTcRCe5#8xqeRAtQ=zynTTuhY z%hLQ;+D(+ky90?&g<=ptKNYI0Q=u4#&-GKGzD|ScE4bLFLeU%7sZf+=@;ISgfhKJx zT-Z~gXvE-DsC#J3Ld_`WjB$CU@^~iOY*gya5~7#Psh8r!Md3#?w$Cx9?#mW)&0@Au zsf{V8nN}~3ff~XYP{JR`o`bNw9V#zU?==N`X z8G$-yUW4P>-L}8$x*;n?PNw&?ihBgqK#C3;bwb&SV)Cjee@NA3RF+B>OHJaH))9x} zcSM{cKwb*)z^*R}L7S5+jwYy8jMxaWR&k?S%q6H*jOZ4!R^HI52l_xQG0cx4XG3dt zwvap;p}jr<@`Cqxw%c0!Uj)s0eL<5RHKesPDG&`6@8}0A{(ttq1Wc}~O1Kk3mX44> z0xD}IAgMs7vkk7P_meE9rjejjC$s2yq)1aB5tz(HTVrWn2-LQAbBq zW^{0ObVeE6W*nV`-vyO%K}7t|x%a;1+~vJ@?|ZM(^pFo;RloP@+;h)8+db#pd$rjf zP6~PIN9T8R5=XK<7tet7x_QlP%as~2J2>eNJdZto<5g_D4JOoHS=mra*_`w<4D@@ zj+Lab&c=w1_X+4}tdx9}QPCtN@%$)4qT$XviJYhqVkI>12bK!ndFME-!Hmp?*;YH9 z%Ya}8!_^ACR)24uQan)IW;ziElgFZ06K({zDE($S$HOFL9ov~iR7H*Mj;xhw1SL`2 z&r5upn4`r&i5zF@EO3s~{oJM-Vy~RT2%bQ`wXi!w)Mr0>$r7j(8->kT8nBe8Zy!H- z7v?;rB}=Fy9Q!6G4j-};pv~Mu*0cjWsJs+A#bzOkjX~wOvcfQAO}UFhkFcN-dYSK( zktSrl4w3!!(Qr8%zp;=t`{o|9X2BsAvS#4|5+;(B2#Dnh5rXnni6BixU}J;QtTh^x z@|L1hW(!I)5Wkt-(XoHB?EMZtFYWLiV;|!}bv`x=8u>lk+Uz~fu77~5_as~d1J9U) z&oIihdElQmdo$Ue2eIocc0Cxb-fXcyt({i9(-)}I@xtTyFLRS%=8YykAuBK z`NsnGXd$~E2G?7>!{O>31s%W>>oRsN!<7%ibPq~junc;-5iUVc z8t+7c()i3{l7I%&Lpyt5gVHE55R~4LUr<`jBjpjEUJQ0|CreQ6jAW?D+znspV6SvU zULmG%1j*0z!vKCG+Q`Or5>g)qt@o;cTOXV1L2G5C+7iCLNX;}l2C~=dLTUy-PU-8U zE~Kp)#vp8I5z_u)S|l90|nYhB_TPgmJ33`H-KLeYn- z0^!q_yZgEqh+4Z##XXr+?$LG)sk}Q81!J`Rwk*;1V))!Aarr3_#Q$6S@wJJI{SAP3 z2;%>v16CG6e1Vm15dU8su(Al^3#_JT5dUEZ;^{(5q(V^}^!qQ)b5l2n|GOecp$#o^ zQpl6xX%@u)4>sNgyKS$mY^W8+-G$p82Jt`0xlm5yo)zve431TQrCzV>qb?EitoSYA zWN|Mmv?{WOh;HyprY+G2#HycIwx6t69Klrr@D5skjRRH|T3=vgtM$)wz{*1F3#{ZZ zUE#8LYbH zCz)NTkBJ`N>@XY_RJ;VhJIt|mI$&kNx&kX(<>NVEWubfoR`ML{Foh+2XVPX{lQhL- zFLvmkP7soVUpI5MkX_I;NWP{BB(-*(BWa@ntmaCI6>o_%qzO(%TQ+{50|hPESYV~t zg`0i0<#V7JH&ci56AoBeh`b}M9&o_Qo>u8+lj%+u|5pdB-30kt&=Tl(S&-AA`QJsL zsTF08W?rJ)562iYQEyi2duq+e7VmB*FP-zJ2}65}YpWFIo?NJ7Eo|EVU5syM9T}u1N@fuLuOStjQ59j5V_cvrT$5A(;I;2m0AFq^%!$ z@F|7*+=5oN!R$p2SXl(KO(U2P%wFPvmHh}R_BjEomF>XFMi>>hI$YA2=mRV5+zQ1( z{yLMNJVt7K`Ml@PNsSyh(didF9vwjh zPhD@0HY-Co>*%Z1{ka8?l*PVDJeX|`?5MM2VtyAcbj-gFTr7FKf?x~;oPf>zA`t>u zaK(#g%3k{81Uj#%)GNcaX06_!l#D(ggc~4eWL_2%?uA}Mz_`jLQXh_!t=kOU^j-k( z>id74;fW`oLvUAEyjLol3bamN8x-%IzIMkj7VoXzwF}lhtYC|9VMmr)WOYU9hRV=* zt-($$fTa^~MqL9lRio^@yUNhe=#8)*l{Y)mY;=lK@2aEqdaW^r2gQ%+gg6IvnKh@4iV^G=YN@u!BpkQ*nPe;KanHp*oC(g)&DnT>%Ufxc>miaM-R=+!yH|B zBtRh};GbVm<}s8{7BvDwj3kNh5)pc!V1&3mlg`#eWQ`L__6yzFn#sTF!*llvp3M`( z9EXw(=SE{ttj6GGYyVDw*oAHr1F?^R@KQ%o{!*^bEtUNpBm7U?IRgIkH;>@Ox-5)x z@$S;dXp`0Pc9rV!8C~AB%8#S~-#;MURA^R+n##+c2sb@%Ym{>oK{X#c~N&eN& zLS1PhHgU+~ zeL{Z@Ki*u*<_CAl2+r%y)oTw^`LhwQO)6i`%XhO9kDd`f#~!WtD8Y8ucuHM~O%6wD zBhAPh?-n>*F;WxInt$@i0@TST2Z28(UvtELYTu5_mn5$ObohMws2IR}u2(Mo=p}Dp z6$MGXC4(3T*g*ioqb{Eb7~4&~gd~RofPBzy0hrGPpw!$qR-+?Mo)8*7H)e1g^iU`W z=Of@Og77?TQHnT)nwO=BKXycqhK_#c(Lb8i&VA z?_x}5Gfc@P7uy+3#mkcFB}lKOXN13Q$f@rHajiqd5x0^14Da(h-6v>SL;{}y9d`iP9&w{sdf zg=@dbI4obT{W^oG=v>-8!nE`e>G@A`>UlEHaOq zf;*NGIpg@hh^kwgo(c{L=Q-P~b(sJW&U4Vs&t;zD(2*O1SOHxiKr8dxaX!*6;P2ed zN78i0t3WV>?;C%t6Sc$hk?3L+d4>jOz#0ak%oR5SlF@8Q$6Xl+rkHo&YpO3`O zAz|71y||bL=as?M{W8KWT-mb%<0LDBILV~HLdicVNw@kZ_RJ)P!Lb-43(iFGZbn?P zoteZyJbh+TrZbZm4VTYBmN*%%-YIzLg3B%53b?`{QQh!y*}`SsO8DIDt%9r9i-$9< z#&2uzaw>bW7Qa^U$!YNI(z)I#uzAI;-syPz47{8Pms`BE@aqu1whq4C>YdH5>){G* zox}dv09S7(zH%=6`#iYb;%&t51CMWp6(i@v*UjE0xWeke=fcPSN$(>5aWVh6oPTWL zANx_1UWj_e+ZNu5oSB5rJSH8uBG1ExdA}0jzWqF7RUL2Y1B3ptjq(!1YKZ z!foM6LGocp&!F!`6&HO(DD+(w(_{*{AAqDGjQ1Tx;pqdAy0u*IGrhWf>nuDO%74sd zg5M(J`%C-rwK-GdX8;~N7iIf{bri7~>u6B>Ne8SfHf0c4*>0=xj8(vhmNwjCdp3cU zyiMz++Huz%(8teagqrNZ(UEv=v52@D4tge`MZ-IU(Uv$6Pq&De#B;O(r{ka{;5j*< zueIM6Bx3;;S0IEGtBN3nHnhb_AmPng<~5 za^OIVtwLYGCD2yu?{&b+LhB2xY_`cvxwq}Mpmz)gAoIcFVNdCR%; zsP`&8BdYeTMIf$KwH$F9dzV6=V-G-j6{oQxo(X$Ke$s)K z7UC(eO214X?VgcecEH<>dB4C3D>HAnXF>V{kiJs{(ptvlNEgPqr1J-YZGYoH$s*Y{ zvN)f)l=1@n*{khm8E)))5VWLml#>uVq6h@FtjQ59j5VR7g)n5oo{_5^=x5K6wr>ZIYPVJ?iqQR16CG$MhdJHOPH`b;|>R`>_^ZRtHE|)WfDf~*?|d=PL@%!<>q?Z2V&f3R<1umLYlZ&=OZLK z%Wl972OuRU?BxTHmhy#oV%ggcx-1X3i{2H?zA`PpV_r_M=8i;#|H5G?b)-&q$6gIB zX|%W$vL?w?=@~)%jv^4(>UEB|4XaqWXi_ILIcu-vG*;ZAgmCsJ9B66b7747JI{ocG+H+a!No-&sAW!$U}4OeHLz{cs0o4XRSxvCXGmM0a)Sd_7Cxn* zm2F`A`3_iF1h!2h7`RrvAaI7iK1^(xy4?XQ`w>(ubploc?ZC=L7!?;gJPaw(A6DA= z2PhQsml_p(7}8R0DIqOa=f@zu3`lM~28osn`v)MMm<(KZ^iia`m)Ayrp45JV8c%=p z(W(dvc=VB|crM}U4=jr8D&08P94PI$x`NxPuIgSzt5EHKPJEk|1Doocvgn#iTqlxi zWwGSj`%#WZ!iT03Y>T4iAS~cdT;%-_l^0^73Ez&v$yAjZBlqFKBj03{umO=AkoY>M zu3 zemqhfN;aGujXts6lRjoW#S$QPp{v6{e1w5``go)!9K^PM=WP=JxH4Lvo|3TlE0Q5ExEa<5fBKamp4+&E%hVS@kp;Lsw=H*%%t@_ zZ)GqQ-!n52-dhwA{yG~Gv=YUM&@PF3KawV^M5Q<$>5D}Tfwf4<2mZ)XB|m4bq<@pd zM}AOLpT3igt+cZBAcLvMmftZyyzfqp-xfuUN3&5wD`cD+?Gm!bkTljprk%sY`f=VLGQ?0^lP|r( zvy-;P0Ok>m)7jZc_EaGF$2H?1E8z~~R{;KYi2%Vep{yXwv|Colc}c$IWXhL3AvAnZ z%ur>LnVS%B7MYnoCn>!-UmAyJ(Y%o{nawaIM-$$_U@8uoR9Zo}OL|85>w`Joq;YPid6PUYE(n(7AEQfHIvW`PO-9veSVH4aXBlxWtoNQQ6sK}6e zzrhG$1A;Jtb~^DjPFy(_COFhzDxu?E{~77~|I4ZG1aU3*a>U!ry?&pwaxV|DBlAv~ zlavlU!z@WQET?d7Cjhqd4aneYxpoeNspwqk?4am|bMz76*%NZ=IYC>?vmEVq@ht7K zBg-l$DdnVbBWZY9*G3+3oiClF^t_zLOX1WD3gFa@dQMI1agx#- zfxmM*NlDWg@68Z5$>$^`y0%50p~an~#FAoZPEx`b`AJG2K)GipDY0+vCn>RVMV82C z=T_jnGB^W3=A4!v@>s!+T=5q+`DZBkPx%Qcv8N}oR*xm+lHSK~ZBVw;lNgAnPfyBp zdJ?1IbU!`m<0w9VgSy2(JqhnbPEW#T9+L=M!sp@2zXN-E5=so5o^(;h)00L=Zm89p zwR$e+B`uDG88?NHqwci+72;O^5J}B+!FTZ+(LfFpitzNLAE<-DX* zb)!})SBEN%Mrm-Qq&alvvG*Wf3O8V3riQg2#z^~PmgrDZo%@OpJ++5YAJD%G<0zY97#mcMjzKdj(;0uG96 zt=X~ugl27`xvsQ~jm@$RU8VK?wMMn4F}SCvF;=P8)|G-+O3OBE2$ouxMRg&xiqL5?zbs_lT>V3#=^OeiVqxz4{In*Vg%V$1>@-Z!$c+NIuGHu})e}$;WB`V&5=oo06?iefm=~Wssc_l<4IHXBFdrGh3NhDDJ3hCxbmu|YBMU~vm zvldcuybq6DLLJdptu%(ancfh`@fZ)9nKEj|=en{dpILG_@0O0Wow^#fB=5+Y?#!y^ z+Vg?UF)$keJk-o8yHq5cS+&gpD~r7|1Xi}{x8i`6h58j($>Vr&?!02LxLdDDY?aLo z4usRK>LyV$Z2-E#`AtrnoR&$pxb1L+LA35GiXenGq|FH-M-*~9t;&%YF1^eKH*_i=WrI375_2Jf<-)E-}^-e*sR4n!=L#tadwP8AUyUF z2OhK7x%FP&JzI@_zXMhl8eL#ztI@yifR%+t7g)&}eIX9Le)!W@uFpaMlqL8r!VEul z=%AbC{UPTIS@Wht^U)&E)apf!rj4kR;)ueKsv^=cLOdlM!Nbd^?GF=4S0#V7HMB+*w}dlB456A zsmB!`sc*#p0UssPOGH8k9EQ$<;{9AK6;Gk(v>{jdn4x`S*=TToMgHxJtN%yo+1#}s(OyNjjFM7L!?e- zQu?=X8Y?oI;E#OXftD6BDzLI(;Gjk@nlIB=ihkPxcQ*$9XHHxL18Y&1N}1HNuzaxJu^6O#l4y&@3Q ziU~)sI58P1MofZsMpNS>|!kn@D>?59EU(ISx48U>D|jRLTm znX=Ai@}9oWsi-L6g!$;9XBX`>F%w764g?GI2x@2~U8e1Orw zliu}6y*Nzx=PM_@rvFGRh5H$n?y`L@O87pnKjpQ&ewVGKzCPHubM@+;zVX4K=HN)9JGe92=hdpsUZ49!Vf7pVgwEve zjo~@D#I4oshJbhHJW`hGeF7VeMvxasxKkYeE(S+KR=(`LAKGlq9NWjLpH}dq@><-s zL~n;5@R9mBv}d`fdp0a_fx7HT@4E*LZi4dY?u-7>|7xzcIeMA3L)oAd+dwCj}S28Gndem}jv#rw#IpU3q(Sohg%y z2XQ!~lJS1L5iF(w$&fcpxB^$0^Ur@dVJvZs~Gs4(L5xH6(Q3Y%ZIV zn_CADRr+c}@MZSM=#BNt80fZ5sF*H*i%<%W<8Uyg5Dv_2!@$T&VfKv!wR%lrIsYc% zrbE|9^-F%j7~!U87?6GeDB%eEfHT3(URmCIyfwZKnPgqBV2R#!r7JV3Ql$hO+Z<)ua;P@42hJN5O*MLhjpP)SdtlKidrS;xAxR_w zTp-bjD)c#meAIzho-YF|LvU>Q`3dk1>=jET?ksY|Xn(NT&|p%A_R8=u!g8&7!Dv%b z&1g`dXU70Fcv*4ol%7a4x@n_vJyHDnm;=ugCnMA+hw`C1o(+{lM|RU33s1yoS zz-His>!`H1-V^23iTy&R^^QrLpziJM>fAGU!{EpsW@=eAJ9lSFm7!6%8)^do_5|2$ zP>>^~VC{8(sX2;2@8orDQMF=L15ddglokFb3Ihg#N�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℘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

h!PM`<}2Wek(#aqHb0 z?XGu^&N@#iw_f}t`o6Nr!OI86e-rir#=pkI+}olkO`kz`*Pvkr#Xlnm{%|A4*sI{F zZ;VZWYtV_|$Yb~s05r*C*o&VL-;ek)Xd>cA453H*5nqG&3N#a_(CmK1W6;Y7g@D%A z+jtOAh?3aZI<+luAW+~Wp%uH;myE(b&A`pANY!?p%X4_iLL+C&j62Uh$v~e<=h=5y z&$*GNoM-o7!?dXW8vcrPp6%0UcDd86FCYlrYc>n2GGTqti?1gx(!1lSR7#2dzC z9w)Y`@P?fZ#9mmDIm2K=v$~(tM5rV)u85^n4QcDx)~lidgUsp;!*``O>`MGa-Z1** z?hT_AEqTLenZnk#I`cELWhq-%`(~N%Ba1h15?yBmO<>PRG`<)~I-l!|nt0lEmdkZU zINa4;XV)TIt%ghBI>S35*BL${HK5x9ogv92@Z7_dekFUWPacd-3AjPoul{%rK4O!w7=! zJrjC8wL=nEz^8Yi7g*yT`E}ukYwdPztN&57+8R4SnduMqgyHY2_V}}@o9_HM( z_Sz2}pt7jF=0Rm!d+k97s4Qx)c~I%K*Y-3|zs0u0NLCct6v16a57WO_j3vQ59mb5M zCnag5rf?+yyPynUjk!t^Sbb$CGP-3%S~a#km}ZUmVKzh4l91CW$XvOX98b${<%GZ=DT2f!NK%TUV9=tdX}Q zur_2Bc6k=aTjCfPb8p`G))hmewN7Vpl}EH{FYFnF*Em*6CR(qtp92ZXC{jAP?u=Cg zmt?p8L&XGfq3j_*6%#ZdAh6vc)&k+9{w7qw9Rnu7h= zab+qk7&0s+#k>`8pqBZ-;MwDj$DUmq9hw-$>VjQ}Kn6Cqe*hKKPOF6@kXrE3{&Qwk zOd>Xm^G^f;g1^Egl((zk7KTwEg}7Y>Rf}x}eU}6qTmn@{=2!Ruo7i_UFmgMdRFw2> z*f2#&6&IjN)3z7{djW(N61{56^l8&VORq}RH=~0s2|=mB@M{p0Z#C-`DCjrVYS+UD zC|0f*fl7j7wXIk|uvS?<+(*kXjN*4jYUA~l)lL12fw9Kh^$ujfHJTgYEw5-`r`w(w zf}{QF{n&D?a@=sm|F|#sxT$>|KCQmLa{Wjh;Ms)L41t0BGNuqz&fh?=dfmata3ay> z2JBAir)B`wiP5fC;1D(|)!GB{lK?{f6BwcV1gkJEkB+0+A3neDPAIk%+KAg@3(<^A z)K3&kW2y?`N1$OKDWdR56-0a(C$jR`hk60PU>U}+5!_|m_U#0iY>X056RUEF-ylrb zG?Bi(`>MpQZi9w5p7=x7abkK$$|1F(h;McJU0IlUFdt@&2Cu|S#KOtAn6%vZBL0A= z35EF4p0N+{hj~RWkeJ9SG;gK?iRoXx33H`(QsK9jjD@4n|U52|C6iaH#aJ?KG z&SALr&JEUPUhL8@(iq$it=Vub*JzGUbi;Bo^$6vlC9em)Zew&s%W$`;Slp@VjT;jh zmS);XLG{L944JUO;7{r%7vBs6{7%VVif@p7rkZb9!A8bA>%U2hSNo5p?th1C+#200H>+au&UzFZTzuePXDGQB^ zILbL<`Di-jg#72R$0!HN-p_tZOlPIu7a{uv*>K`Ebe-o*XQd{dPG`-P&Pq7k)zew` zLpIt6E=m+jNBT>4*(t z*HiEp6BZ8oQYEjR8g01uo~J9x`BdOy+Weka_d?RYY= zPf#icQ$M6PI534RZiBmQVS8N^dFgZIo=|F-D>05B#3q!^fK&m09CN_P*)~}f^WZO> z)}0VRP{~uCHGT@7DNH6>ItV*s9?D_yxfMP^sIx3lv3cWG=_iJ92Q#f3sp4vwlPOF; zxeZA`o@EKY64OrtGWN4hGD$xV8>(1li0C9)tVR$5wG7rl_GFV&F7u<{lxz|^Qx*Lv zzksmGbL-v=8RKM4dTq%CVzx%6FSIp=~BoODdPkMD{knkz<-B_LaNxs;VUYu=>a}mee3{Kw1vys{>l-R%lN67mF3}%v~QNjd~=-n z8+bjwpW`FntnHVu*PHeB#;p;skHgkX@XGfCP^s7Gd&hY}gy22GLiD}k!|$!_+vdxw zs-Aw-`==#KkRFyS@uN4{gna={caB@(POPb&v1MtlGpCR5Nq(2w;5Skm&|dh>i{=kup- zGr%8Y&2hkERwhZoTNB{(q&e|L))N4J|Gq3W?5ayaggz~xN)k}SOi!a2HC&}=6f=f; zjFGuJL#g$eco-OE`^fRVIr7YRI9U{KZ1WHQybt~%O&29A`phinDv4;7_<0yu&e%3u zSx(^)l@szoYQiEXghjBKiOHU@Ieg|1;-$HRP*i5-q1bQ^GqX3(KPEj8?%9hy@e{Z8 zYES$rsa|=DVdm6gF{2{cCqu(_)WyQW#!XNsP@9oRcD9jTQqV{ln8xU}1k;8$!_jNY zY|x%J`cT~Zc9d9mD=Zs0Ru-}V(^;!;>08_L;}kfyrw3e4qoR9UK0*?_2Bhe zk!kLPOAx%qJE7n;J`=H;hF@akCb;-tGP~+ah*M(v z&*3j7U>qz?6$1Z4wBg>r>7l?KR=)``9YU9fEkqXL%170d#KE7J4Hm5E)M&!qz~PC} zdc_d=(Ny;rC?b@3lQ@wjB$P+rSAYYF^rQZvi_TBcT;kzq0F`D3_xju)RN1< zHrWo(|%|z|Ej`0=x&%s@fV!h*r59gcdqc!Q;k%4 zdRAPc{#NC*f=~OK8}NIS9`v}E*aYlvKLIwCWA=gOK}Fk^fjZIwDvL5u9#pnvppJ8Z z%AyRE2i1-(1NB^oF`CMsF!zViOLLAS4Skz%umPI+?1HlT;_RMU91m(>3d?%_5)Shzs^#XVYDC>fm7`|wW7QdSb zU-(a@;G;W?P+salD3?N>R4pmybxx2-^*3@Xwo>jE2dFHhoClSyl)J+LDhny+L8VK% zKALU11e2NF#XXyUNJgZ0kI}&g9LDA*-QFijLYHn?0sV9tfEp#61k{G9tt6W_;Do|< z;yM^>q5%6>!es#h%#kC0;V>EY9B~W}i}$9l3>bmv8UD>^`Hv1zoeX^>%CsdIR3wL| zBd(_Z$l9P6_P9D6n_t#>B3 zd#dhzkk$}Jr45Uv>P@%CV#+6`uZnhT`NZW8v*sqX2cRcduIN%bus$=`q|Ye>Sfk{Y zz}irPmE_J|nlxR4FCo0fNpRC#ML0l}PfRD*qSMxo8kBy&&N9#VUKYxvT;}^-CVR6X zsj@LVDQ2KXn*;ve%(Dg7n5C<@C#hstT!p_E4;Wv2NAk}Ur7 z<&&Zdk9yT?{vT86!jLyb3cm-K=M0!Ddp7xNR{5^@a8_ui(rH0o0R;?4 zTU2yyTvoAbH-^F=^wqXNEwiCk8w!|>!%+N-w4N%%|xZbTbMms>0@N+{0s1n{$C;3(7 z%5)Ys#?83DV*v07kX~-Cw==SiK*7Z^|f|$ za=Z9A!a;Hn6Jl10PvSt#Sn~LRGGZvDYdd0!9LTffP;g3tlE`X5G?6+O!zNKeL?zhd z5=Q`x5PcE*Il`qv8L@>QumOJx5w{4_X9@{^s&u=%v0<7UrH*h$Vs~|14M2n#CMYgi z71zc*iO7k6GrQ#D%8#B21x35<#+J(UjqZrlGZbs?udLZzAG)ErZ4mY~z%D7&KpPtE z4%T@ZofvCYAV%5;G17_*Cx`W1C-iOQ7}?Hs+Xfq6Gkxv)SPcXdXiC{sSUTOQmFtX) z9k7Xwdx=f*4~m^+RmAhVAufv)@x+I5q@_#M&}^p~{(8Ymo0Y-C2{6S-)FjcVig^Bk zFk#a~x_AD6BzAR#uo^g?M$vI%dWU3T_yMDly?z`&Tfwkyn>!6w)bL-1O|PDeRw&vH zda%?k;bTRO>o18S8_68jQI`3eVs98hxSFR@R$+xiuA4At=p{Q78G~lYRI)SutApbO z8n-JFo6_q??(J2~3}m8KM{<7ffOm2#BC9yfqAF-6LQm*B-a%}0;1m1MF|P+0P7 z*xE0^R`?~}`9(Vpa|b6VDkd(H5M;xS;gtG-9ZUZ%DbB*=%?fM6W7U zKh$-_#TUxr6hyxWk)2F1bQO!8K9X|ui&R=At%!3wu3bc-NMn5|tb@hDy2gob^KI-=|G zVH~qdBYd8ZUry_ZA8Ns;-ZNL=w$2snZVKYBwa(ba(boFf=m1QcVl{p7^>+wfc=0t8 zUgv=H5=Ic{Kd$z|YpuECTbCkmlNpy4ezgMrIyP*x0@mDK zR~-wsw#tN#NzlbD?qK(|h8r6ipq64*z;dBGK;;qSE1>W~OWMU)>Y&-`_W2FTS7R2r zm1<{VeW!li1RS;DFJu>!BJ)27|8O7az?yXC4mUbo(xuW(T(5zS4EgUtb0)fn`_Rp7 z%*7M}a1tnURyEdUj3vyN=qQwT&-ayobWFFYjf{7>0=bHAA!w$nk z!G`J`^eL?0TA{OOA!VU**kM5^k(62Do02Z2UVJ%Vp|B0fhQSCG$~w{s+iF8H&r8sS zV$z0WBI$V>CYnPSKmHhhAej%N+falTr8X;@J?t$Gd>f&U_GQPr0jjtebswznH*rFhK*Gh%huy(1rAh|p(OW#vZjpNj1BV;Xq4>RjIUZY zecChw@U_v=*7fz_K}e(PtbmQvo$hM7z{#j*m=c z{Xfy}dhgO1x`guM{=R4XP12k>)GlCsL-amT!uID*dcaICu&J2wQ)?-jXQQ)WD#UaI zA$Ftln|5MG^>H2DNnMRX9f%lT%#fr}P3Sw%b`LkY_(hn&4VRi zyQA<~4p3R_DD8A4a}>`0MqC`l3?06HJJP8d@w3hbUErTl2eedyU=03^jQ+K5#C$P zXMg%?ZYNJT;M9WmJgAB$*q1v%?MARKm1uP%*xSkg(@3xq%pFItq60%s+z#tVpYL-( zVVU$f6ZA6YD7wSM>8BiEcB9U_p(jwdI(23N@@r)PX{1dFWNEZXgH4d7?xY#4bfjH1 zeJvNAzj45zJ!wV+dJ0sJPX$zQlW9?XLfSuZ4Vl;>vbj=~XeK7&WgcJ!$h{g)(hgdZ?raL~`Jmryn)_kPg4gUNlg15_5Y>p^8}a-Zk` zm4(UeL8Y7AM*>--QieaREKJQr1bT|`KmX_U#-=@K+A6;T9H6on=n-6{D8Hi|pei3%$2&k} zkE`s$Wfm@rxD_F9u|>`~4p6&^mouR!lk&?1=H+F8X%sLL%%TL$a79Zvlv9w)=^>S0 z9E27NdB?Thgu`4|5V{AIZF#zvIzVMnp3V_hw>Us$k1M@AT{hOg!vVJZ#pxs>{w&)$j3AqwrOV8O#`&84R}SMe@k6@9=srmvQHN1FkdKrB zq*2jIAZ-MJrNapG`*(wyOr7!i5NsG6n%v%-4=FpcwBBU;BJ-ybixKNIWs$k?7o}SA z9#q-wz%1*xqa0v%BhAC1CxaE31;`W10MbaB637xs6C#nNkY>sv^AZOPTF8HoG;QVo zwGL2O$p1JtPFZA*IzUxEu3qQ>l|8Pq3zuw`<|`ebb`vi*Lr(_rk`2r^mI0$dIg0w;1cc(gC*o+EXIZhQI8!XF2C?z10C<7V7fN(7c1Xe7^%!7E4JF zDqD5=Ne8Gb=-z`$SC>N9;Il@+JE_8s(LTftW>Tn0B>~W=Q&8+8c9qRyHe!VGCX~SZv zdeg13m~*$%H|gr{iddqMA(rbGypB#|*2>90|-$+fJyK;qIiBDc)}hZgpi2UT_=-OpItffH@aJB)~5?pGh!FrkN@<~m!+zMLD4}f zu4g(+HdL@mmY02y6&M4tmHjN)lP-cj`o!^15;3*$E*l7WO@Wvac1n zlRz6tk3W?e2~>lS@z;W1#k0K)b9m@g{IxqYY+0f`d}6AxX5oBlGg4%WkJJqhi_5~p zQTgy-Q*1MsE}q##(o%GXDXDjq zHI%pJBP1h3-AQdm7>bS41quIA77{+54+%zYl1P{;Zu&H$CKorIw?DKHK4e!fG5O=N zupeWFrULYvoeiMJN(M+8~K>L*hN(95~wW zbLq$1(3)rtP?_*gtP0L2nu$BFC-jf9~xTV<045De!$4>lw$ctIrL6|hGQLi_%K#9 zW_L2oCRz$cs#`AFV<~dwCkzLdCP3pLJCvW{BEo@96X|}u=S#fmemrfguBZ@Yp<+Wm zR2U68i3%H`7@>bmxX<6p31GF zPAY3C$3eq(E3I_1ZyB{2VW`|lxVS7NT#ye5MsAWwm@00%6j76ln^GNR&9bm>wm>uJ z%o|FED7y*D>nLfqbdNtJ{V#7Z3*a?njiv_;7tP|^sm%zB^O3sY;hkmS;h*#2!N}zj z4^zeE??%+*;qu;$wYnh+Hy9cIS6S${R+@99H!U!nb#l_56Jz-|*_eJ%)|kGVkED#| z=(niN2y6KR^P?;7*m$@sZ2Tb~HjE4=u`yK)_6VZJiouBJrfbm@B=uOAA$?(rrlfz> zxdPm(Q|wgc(jgH>Jx;Rcy0AxDi;*NGZXWhvJo+3~O)5T;2tCb9PxqVu^hN(Dz2iT9 z(e1h$oU&!h^qn&ymIS;Fe?)>U%dOXvd4nyzyIJ{gLryd=LTw1IT(0d9sL*NjGPSrf z(wZ0@uB=C18ES28HeLwn%(aepaD4+(jVotDa`TpJD32Lg8)!Lj@5(=np_m9ak8Z>oOJWy#Hh6;PHd!7o@mDl5jEMg zw#N;c@s#dLdVN{g_W;VyYg9kq7c1I0dh8*|oM^fIcb7Gkx91}yqcQweYBORCvvIm0 z;Xlhl!YA_~!N^S#2~)*QpGDM^%S}Hk3;Pb-6gvDmN=TuH9yh@qrnmoG)=>VKkC2Sq z^gC+Pz)hiXx*%b}Z{p1e8)X{_bL$%L`^PkN_EUGD+~K(WtqW; zbXv&}W!IL)c}*@YYfKkG!#QZ&$mq|fHY1E)95zH**w~N{8%BtMtYeZk$GU#6+{vg*43;?xXgTLxV5C zLow89x9gp8*lGZ7Axu4ZT}H#xx0tBrO5 zzG#;$W3{%$&}E<3<%V`^jM6|`?Z!sT2nBG^>C$c2$Lf_jWUP+W$JPTZ9jC^ z=sGQtJz{lQ>Q`4C45IgGp&BbxnFvV2rVTkoRPLSDRGwGm_FmNm9b4Tn+NyO?)n0s| z+qyFhnlMEJ#)oyty^2M?xvtxRjo6&akRC*HaY;)rb2^np3k=Hh+`4F z@P5LX@Hz+NxP%eJ;H@g&4gJWP7<0$BE=Axb%~iHMY~BIy%Y8)ygw2?Sg{fo;uMoz> z@M+MPDjCq5MSz$}3S3`nHz&92wK&8laTxoXkvi#tPL(>S>e0=($*%$%qAoa4jwMVP zx~xu|-&k3l{?*nib{Kmyc1waZmmJ*Nnm}UYpaT?F1>4_lcilmE3)XF+9duYOYht|v z6gLJvQ&s9Ae6i`d9Z_W;GlcGA4X_nA8t@Q$md-e7CW%8&pU!_WW55vv* z1ukWsunS?o9j^3DZ;&d)MW){*>l#;^0miS6*)dtw_fqyQTe3s}y<|zHx?*Uw*6FNR z7lt4h^13Wz4xrFbDsIC$k&2)yZa$LHQ*TcWNYDt0sXhfGR~&CFmVRCVKuN}VJv1Dv zaPeWR!qxTWGmq)BH>NNiPU44M)&>A}${KWcI1r!Ts-lEU4b7L%yLK>|My^?;`HJxFi0#(G3O zy@r~Ih=W^}Eb*la2`rQdB(h9I?2E2-Ty`bCnl8lp_JI9t_Kzj(!eP6DM74IL(`LCDVQ^=bR+!TyI`^*Z4+U*LvZ@-lD{b4#um?wMVdz z@N&RhADfv8k0rnrgOXfg?P0=HOv|=nZPx!3A=b=TN|0)YNU0W{^u2&lQLOn^#?(*# zp@0k9$$tiZvk0Z(=YIkh6p2Ck<(MhTHTefaf0n_#Iqmv};nvWk!1~c_by(eLCjans z(VLwf3esmDjeg&n-D32a4OrscNKzrkEG@ju3b)7Pj~#J%pprVLHQ9F8(W+$~u5Joh z*4ZG;8_4y+%8=KZ=8P#$;9j8KA%`7S8E?0S>K%08t>0Q{PK=Fj1*WMSc37Y*NHrzC zDb<1$Z6m;2o%Jyyz$m37mFkZVd_so72<2?)cf$4rR)42C=hfErh3WLz)~m8=#Jmj? z%^?gb#@OXzF?i4ERq>}o;Md=v$b2aH^)UR}F8)l{N9g(}T_22{yxy7khI$t%>#!98OD3JTzz8G^{H0XZU*o;E(=Hcu05zM7ekrZmklJ z(e-h-iYMXXxk0AS#b+m>IvV-PDlvopIg_rl=sFv&Vh&#B!sUYLVxIgnAO5ToeRSQ8 zuDj!d8DbCoGh6H_|LjGN7SMHXxZW)GfvdnkiP#r^EyT-yc-bE>2L$&H#9s&D9$5wert8`DeZSGc5mXfIl#njreDp7=b@Rz-1d~ z=F28U6MjNF6cB&mlG=MTO+I24`}+_p1kSthR~DnqD6u_eL@tx^;62fXd;hQuqC)M?vi0K- z{;7@DmJPLr>z!q1pLzL3gPV^Vlsr%W#0P_8t>KAL?>XHVQtrKF<6FBUt>!XNOv}Ki ztGDYAgj(i#=a&uECc3T8#MoG^z16=t5c+yR;)?Jw00qY;11TjIa($?Zn9cF%2nu-+Wee3v~Chy};C58tSmRxKf2A4LLff+_ioP0yJUh7Ekt`X}BE*dUE8+ zRo%&&CxWkuMR{O=i(dj5WiURgk2>rFc44IP*!XD)w8zn(Qq!0qwso z*VE=#7)9O_C7fUsF*Zb190s6>!{K6%EJf^zh4?<{%dbVd>zxf$C2P5%kJmIRcAnlP zThFeIcYsvc3`vp#lR+G<;c2%Jf;oEF6NZ(aN5M?T%JDeL6S8CFSxHzCKSK~mo8zFK ztqrPAQA#kTGqiX1RPTg^R8{CFbj#ozTY$=23@4A-<3w1TwEi$O4+D)H`?Mk$-%1b# zz3D6Xa%|r308N$>)#5NJ4=UR;4fl6|%Hm8z4=Q~g=ixMmr&@PT1>&_DNuZs@z9Ur2 zTZ{&daTu2|aGYAmzY0A8Ip`@;*}z;;2AH8W@eK=nc_zWsZT>`cHJ`j9W3>jD4d;VF zr+oX7!umZq+=LT!&8KAbAYviikdv!CQ$d|-aU@|jMz-5?tj*XXisAGCk$)iekAuoY zL#nZu!>i*EGjv79>ZFO?D_i1;F~gYP6L?7Y1DP=mM8`|@_2 zX#A&tUfv!dBgu47UdS4ehTNC2tw8UBq|Sa&-l3P!(g}?8MzdRa{^b|1!pt>k0S1|7 z(tu5Vl`+`A7DT(=&Pyu&S;1&EB^jVl!kPkrm?LLZwB71dVtluta zEvvkOoU~-?A^MALy(-h*vUvr+f#8x?@SFIHyn^)0-782-dRpbsYMd?Zbq4QwYmcR5 zcKMv{y93$6B+(B@eFkhOadkJcWYaJZ}c0e^tZ^F6o(en7kv@&n>C zLHvL!O`s;+v3@}07!bLCD98`EkhItuN()&t=sCgol2yJkjb51+yuy^%oZka(h>fS= zFD5!{Y!FX*DZk*%Xv4ibb|SwZSOA0?ePiu5Nlv=g*bJlXFkW58FpS;k2%noMUd@7a(K4l_6rVBS%_N?DqC^;9S5i^#H|OFE^g=H)Z_ny z8OYH69fXovdec`1JV3Mz|7L{T?*P@w&_^xFPrM|^9(Bak z3J0j{adp0itJ$=O=J@jNF`PZm0lF(=an{?nGci66=OYewAUUgh-9)Pkc~X8t>-!-3 zETcIRl{Oq^uS1V$q5nYo4Vd=;kD2s52tIzIs&poN?LU<|lWZ>)DGdwVcHVba+(cO9Uz$CZVpj7otc(r~cQ0}fETG4}n? z6Ucs@vH7V$(x4~E8B;%62AD>smSC2~)N;7FEM-ZbaS+;TV_Ttc$RA6!ls&y?Ybh^w zfXc#B_Mo!G)yWP}SqKFWD&11f##84yz-DVF-!^j^Sjg~S)L@pd$C0r~#-tj|ZjHs{ zKBmV@mVK5j=7RJ_VX^ZftniNtHjsGUMc8fXZJ05G{KF$^MzF-5R-7_{f-(G-?3hd|1Vxen4B{?pHxlTm#wi0oIUdT=jz zn>OX0f-T4(l^oO&cq0h)gHFkwICteGlrdMsEz4uIE*yGa@e&Sjl%JssNM zT*Inw-3FHKfx4t4tp?PPgKt=Q98zB;^}+PvRtMfSu~Z~g?_GLk!@y_@YUBVVHiv7= z>dnoO-A_QP-rlC;2bM2ihGk@zj@O1Z)i%OTs3bxjfDG&OeJdW-!%h`F(ZSyXC5d7) z!w3+CUe;r;bGOvS#z$e&Cc5LWj^?IOtA5(N|xv5ELErNo!GFZKXCo=+PG0>E^Vd| zql=hrA$_e9iFlQ_r0_BoLAwG9v4uGEZ2yCbEc{lvzR|@>q~7skvUVKPLRE1mA7ihm zOoq=DJ6Wm<>8GJ#m>W``Gb&ZS+{cG;Bx2$0N{(RbHKLQ>CP2-vFzWts0_bs}js!KW z&MNypA9cf&2= zTgFElLyhj__JsXx;&DVxsMx^r_ zOJO+rI2`;n9DIB+xi)YkXuUQzP&r2`1v>7hv$ZqO=?;f-0HWePONPKZkQf)CE-Yl9 zjS}#0B_zkJ0q|j5uNG^7qR-v^j|8x6B(g^?N~nLFkYUqAx={a!M6fQ@i^j?K%EHOF z^5MiN$R$o}ghL)d{(VGEHbL%jgQi>4&mw-bEbMy#Wsg7m$r*8Gg8rN|kbjfO^*tVn zXMP(NiE!C`XxOsOUuxBrIn-t(%KQ^9K7B&vghYcftNo-6Ne^n7RdH5^C@ulaM zg?@VmTS+?yW7jGAfu54VypI@zT~pSWUXYKZjKx_lr#7PuRv0!qWnrV04;w}Xlh~Ll z2Ae?CSTPt8oxT!DwC3mwlk+M4t3wj(U+z;*Z0pCj@Q~Z?>y+`VPNO0?`_vQO!9NvC zL_Y$Mr1L2WavL&;EOPF&Hm_n9ISx>$qlrG^>Yh_ItTFNvTj3-rFaE~;d?dfk6$(|u zn#ZGgU~4L>)qE8Q&^4&&O{}V6Z5T`_biKq0+p1a(&*#vCc1bm?$&r$+S`EG`tJU0( ztVz{s=$Cu78d?C8Q<-WLu#yux6ZGVEaH?Is)UR>jC)@Z%YfM|l6KmHH1dG^WTr3RI zWt?kRQxi|uuE|xqhH$v6*RJ^;veIu*()cy3@lL3A4L%dZ9hh7uFdc2j)~-R0fiS|i z3#wfsIo7XT)2*!^)l#nI3x4Gq`2w@O4|*8zLM*&5{$fJJVR5VK*6bf`xOcmr-L(Vj zSqJG{gp?_%T60_|iHv&9QnThrFNZB$@H(80Cg;>t-r6t&LGqOFV5tKEv#tcCJ3!;PWtYH%6%I~KfI3unRa@VYiDqtqVYI);t%)U|nbw7cFr zbmrO#Qzs>{s**2yrSAngtp(l%TJA(2Gg)?F6f5bI;9k+jFbU!U1R=Jf&HJBvoa0YG zRp=EJZZZspM1d)L%yiFZeqR8P3^2WDx(6o;_$O}aTNL+Tfcfvq$d2}mk9H1&6 zS4TNOWsj@uB5f9$lw1nSTTEn~1b#8Y`0p}?VPrZvjMA9yDP*JG?|^e_ zHjP8HMNJjyIEib>M9c|QEv}I(E#2`~ei^vgkJ#JZ7D$>7%{zGF_H}^Df(AUOY(@29 z4p3Q$Y7Z*i6Srf^z@6kURuj#qd(DoQB%)jFdKxXc75tlQadB=Lpc;j=1l5M+Sq`~& z5L=!yaH%%ZGKp1N60bSn(t^Z2s3Ly6l%;sf0V)e|;E1bj4p7(pIY8~k z*sp}143=3oFmEpdOe0fEFiT_V^fGW6c{vV3du?nh6z+DI3kyQ`^qy@QxGys_JisK?M025p10R?fD6*g;jq;AZ7Kp10IE6_)ow3TR7R(OUCl67OC2Ap>z(J z{(cfRxCk>|Fj)lW51w$)sQN=$Exbc(1~Lk%raesmxvS2-?92-*=Usf+MOR*UX5Z4KOZ`_2Kj9WsS3A~!qf$9b z{XCO?o(aX)&Z;h7N;TY;>rd(5@|!d1rL*95?kRl=z$>R(;(rB9i0g)j%vIFXtj~#= z^&L`0?UG`t{KfkLZPUhvi?Cs;qNXGa^ryWr(o---0w$f@- zf-LBTX1CU8!oiIZ6){kO3K%tdy`L(xQ4(c+xNlQ^Yo}6c*Xd@X2|>|%$FGEeL-Ibv zU@7~s68^9cAJd(LLOohq9TSk+GbSE46-zj(n!`qD80dujGm(mJ_%KcbT2yo3DOB24 z`5u2tfXG`60WV7cB_?k;X$zUE;P4_sfK3zWPO)tgsk&2)kJJqhx0i*7H{`>Ead9s3 z5V2rOs&NCFHoD2R1)(reK}kX-X16mZ};WHn~`TF-duTBd>BBoD4F#jq9zZ|W~c-) z|FL*2W+V5#WxG-xW+~E}abtxW=y-!M(g7tylwFMQ%qpGy`BSNyDPxR{roXJwRH5Ob z%f1{%ZAQcbAE_H2&MgZMXXe9$kS%N=IN?=xGd~jt7euDrjrtTNE}6X z7(;C-Ybf1(gk;pS*HN1hhGOG%LBcI%A>r@yA;HK^5(!hqO}8Ry@^DjcM!&A2;0B|? z_m+izYj)ZZ7Taga8vTFdBR(SseuCPJaNv%>+Yiga+xPO}&B(M8Z&SszKStE#VOnwC z{?LNl%W2*p^1o$a-{VVB4_Tf z^|H=uVlBqosEHaik-hZ!PFu!y@#FF2<*;~Dj?bf@;aJBfK8z*m?5nGyOSYbs0G0zX z)JpbrLWWHf=}yp7C4zM)Xwf)XT^3IMPd=O&RgT1ojc{Noh?dTkwTPN*D#zmn%}`HY zb-l1G?0W!Z=QTgM)Yp*OP*Cbb!5u)?tMr?Rl| zyL{L%GML21R594Yh#D&fGcHjQt-07GO8QsX%h)EiRYV!vXFd^cu-ce)-a(3)ElS5sy7DNJI{B8LY1-QS#3OjZYs*yUJ3;0 zn$_h^tSVz`7)&US?+7Pst1`AcHC4}=N-ASZ_II{2w)m^PZNo8#5mwOposyj)m zdn#DSDp2Z7(32J5WEopoOwP|4_KVm?Ys4j%u%+G?`3b!eYe!>}FXdJ`m$0QKo-SdV ztAs7#a91y3dmXY-6Qzt_!WQp@O4#BvL7agZ@&a?}cWen;nfN}@n+Hc@*M@7|+N9V# z3n055EKlmreHObQ|5#dS`OmWK}$f6>m=lK3n`^`u7v?wmPzqtd)JeN~cRh zIq+WeMtc9=glJmtp!cyVEjY!#lMch~=Qlgu+URJl+h{de=kLhb`Mv3#`v?e^dSx(t zFeeO;ro*sbxY%NC6px$lw%QDePvwN-H|bF90aMVrzCJu{ur)N)VZDDPXYb!n@4b%* zunEVA^RB<2v+EyZ=z2rDH8yQ9l#L=u|5rJ?{%v~K2anZj&1r+p3FyCG8ycAgM@Wy2 zw-60%0v^r@%Khn}%m+9+6YGKWSkE*6Hy{6hIlbqFsl#886Nn$D1F=VEygt;Zccu+) zXxD}q3Kr$;{fFtj&+E1f1h^z;$3IH%c+btXp;~ijE6`wV4Ah47UP}5uIcN9ZOYhzs zSPlbmPEH{1O9x_BZHqSYOLKPmaC)b4^6uK4UH>e->%E7^TBDw%k!Q)XY2TC+f}f;A zuB$qB<;G>(!jpWW(BP<3PVvGsMXYX3H8-%q5Ee_^O^5IC*&7^r+U z39row#81DUgIvfiW90n2e=u8 z{U&GUUrXNXN-OK2FpocqWui%?ZM+bY$%5fnegs z=jH7Fm+2TV8{b#v?D(7M9UpWaXnyi~oZGCoH*P)Ky!Kz86OwPGL$V-bh)o-8*EcW{ zXypXp_vrwDHHH|7_I+c{zW+OtIJH?E0ScuBVT% z!QPd#$Nx$1F{APK-kgv;o({?0K$y*X4jPW;DnLNGgB@|i`?7jky|_4J|dv9S)u zA2|9Z#%r3d>DxJbpO!xCgU4!{0Ovzs2Q-FiuoeZ!6P&8rt&i~qz|V7n^1tbbIM4${ zX+MBwyf##4Z1MY?fcz>QkbNW|p_L)W#gjQf_)9tnM|dD?85*fIH?j!=V-1!IjoK(f z%Wi+kXEQ#K4%0CbrY4H$(Z&nOJx#_loUexq_*i@$m=m^{>16y254MR>?oKgL&`~+T znVt^LLJ1DUQkuiHHsB`W*E%jI5MN23uf;kL{+c6sw$8{2*{{k&5FIVd zbYafU|B&AKLaGnqp9$$71{-#CUY!#NI^HtbvmjS7dV2-AY|-Z`$Z?7uP(f}?bVCaAC8AeQkZTXUa)MlI=qD58>_X3#Aommc zjs!V?(1|0+6N4TVL2eOratQKNpu0hk&j8o`f)?+%?iRFo#&xft#Vam91+5`*B`9b) zhf6a->nmIu30mLa8b#1T16K@!%zm`o1)1MyNDH!t(ZCgCrJ{i;$Vx;*Pmr~SmX{#& z39TSOrVJV(f-DKN0tBgYRK|idDyl$1dJGkgAgzJ2UXZ{>fh$OAqJR@5rBK=k5*f(y z@>p8rJVES(Tp);)ksc>{v$`z^#s<;+t7D@1)%g86e+JFb+Zz{nwW01HF10tdYvUu6 zw@w<<0=^Q{gWM+L4k7B^FI!-;ldl5!V%eGr-&X~Cnh z`sB!yUT)Wy0YE9Q-hdc#$xV1YBAL>kCS99Y8$fXjH4%^he}Lx>nC?4sJsh!GIs44Z zFJd;=C!o1f5Zv4Ch#Gdebg0%D^UE?SWPj8ZQwrH1a&4k?WY4`2>U1?bTp|3VG)&Js zV$|y|LeoEV#gRhuy{=7UMsrm-67?SEw1y_eU?maF^_ewodP#J>=MlrK*9gw1L)SUw z$diO~5htF-E9L}3z}t4~C1V|ea^&UkRLp^2DCg(FUpT!jp|X_}U6kE*3x4@pyu1M~ zZ^X-+;BvtX@sIFlmADZ8^$xne8Lk&h6L-=--U3%~7hEP}^5roy8}pfgbUVZq zH!3k&;zmy^O&Xv#LpnV=G=Wg~S!l77b1l4NlF-g%9-q;6RzXybX?1Dp@eJ3gQ=;TF zY9f}b6RZwL0kOB23s}M6bmfw*mz>X(U#%?k_4YZUA+r#dV$Vy*w~jZWI`G>37+vk! zgkpxPpLx~}{Gdn+m`D(haZ>$&TSid-TquDad|a(L}3 zEC28Jy;t?B`c-$=t7>}YzxjOfYF>5K@BOa#eZP0qdqu2+Pz4)`e_v9qX~n-gDTzkK zCu{^{nnj$d*(7mR}>##Ll-~7D}c^2hr*CIWbRCn5s9uOp2v`C$e zv_w>O=u!kpBGNjFe=)wg@Jaj=!PQn3Xo*P5!S6DX+N!>r61~jdN~WIz)?U5LW9@bP zs|9OQ_`NA>32KCn@1#i*kkFOtTS*;5RVp!<*1bvYUOJ5jQ12+pxqS@bZKVV?Ra=-Ur*2qlQP0~_`H zVqler(a^59XY1(7?)+q?k{jmNGyIZ(>shB1WsRF>SyNUdbR|7gkmzt%RsihRj`L9L zTl}j9ihUoyN1&KwEdc~+6q7X|0ST?3XD8LMLNPHB&^;7u@xjlVAW0_%87Waa^r|P- zns)AK>6zB5OVCwn4PMWStmgyj%PR33`zW0_&B`t##sSx82+ z=ll_S9%BOAE!LC`V0(X35*j_E2c|-gYtwLnF)lHAXk7&ok8w5ofaOt$(Fy3FIPIY0 z;iM|l(D4gFqG{mM$!VR|(9shO9h|ol-vd?}fa9oxZS`yb$1;$xiyNbX!!T9-3=81U z5}L5F*q+0fu(8mZvH=_OlakP|A-yjZZ2UB79Z*4sSZUBj*l66fVh=0j#FNiNj8*ph#YBvLYsv;<^d%*s5kq=jD#Tcn zh6^BuSQFhn#Av^1O%(!lA{e1y?ZD%zq{`FaQ4}QR0C=3z1U%ZsA#b(Tw*ezJS*tM` zMhuhH*V({`A*l%{H`;R=6HsojrfdMp^+`!+K#|^<3Q%^Z;R1jnKCS2;ptRV4>OM%) z2_&IJ?U3Z|q*~KRa;G3M2au%6Y>e9JOKkMj5Q_ZXTGIxG{Ki^=(HLSF%W5_zD5HrU zkJ2chQ((*r~qOBJNP)nQ*b)p1qiGvCW#Y0T&k~ zC86O$`duoxSeb?kz=il`vwLvSYTL)RL6lBJ8x*M>Xv`#4n~pZ#EJ(}&&^R#~G}H#0 za(~T+aO3Z-Rc%1Wr>!*@4IPHH>MyW>j*yThfPBiH$(R6gn>A$vKt7t3ga#1lgQ)=I zjcK?5fQV1My9XfcH*Wne2-FD}p_Do!40_*Z{8ASnDksxC|TB2Vw)45Y0rdzp!U5 zCVK6+rfi_s-lQZnL`Z*21raYz!v!EhY+hsS@Eu>{`bCJ*380`j?SSHQNmZtS;-3VG zrm;=;*0_citNB1N+-!;KkFC{gz{P)BYcCou3`@mWtQH}l2^!zCXD}vcJZMeX0F4Kd zlF*Sg{6iWp02*SStL}kDo8uLpH@`F3L8;nd#|bFQF3MLfpt0k*g2Wuaj*}yU z3?5|>JVl}*;5gS>*#?4awANuXf*AIy55^BT8pSkmu}fa}aHQ=aDX)h-orppxS34wmZBpH7Bzct}F$a*OFB(b2CiE?^@3l62oHk7g=D5A*hKa@3v<&CYts&QRMrA#2i48=)MfLqgH21HAEtZFR)d!fgXo}gk3Zj zjUI-jZ2B@eK8fBoRx+Pz=_z}yL)ib?3|lhAVw!*5Q@_dMBblNWg0}@ zBS_2v5D9%};}19bpT;&|$5*YjY+%Q~S}QLaI}Ag`_|C?Z&xDLG+4C0@GCprj*?^4C zCMBUELwa5+$arTOE&v(g41n%IM$FTq79QRi1fg{85M(~evWvr&D`*5cM39&R2on18 z*RNrL<5`0PB8}6zr?yr4&EGlZpn3d<4Xu}9mLHcR#l=9DUTdXBBa30c7@q*QmD>cG z6YbfJ2{b*{lntOcJ}C(eG}1v+0nNNLTmWdq5hL9Ln#hxYUC7Xhz=X22gO#zQ`qHp6 zB1p^uSb1*b5UVljx+{MI-Ypf|7 zSn=wlBs5k?uS>D_lghE8AwWod^MUrDMjjTK)OB<46)Y;VAd zhplyNV8t)2RTqsFhMDZKV!Ihv{M4Sim{{>6Ysv;z{2(a_jTO@CQenjx(r^K+5XY2t z4=bLbPr5JS;G5`kzWWz;20JKQJM8E~St+|OCkYaB06Y4l;|y<22o>IBAa$#?#tkId zY^}&>Br%Luf3Zc>5hbgME9cwu8WUGGSyMJ}WkXUD8ds!8roxpKX}AEch(iy%hbzl9 zu2k~e`#ZF)@C^{A6Tt|DY6mFSCsmvdMy?Yi<^Z6a)EZEvrW=Bik6Y{7fRbCSRTvE= zhPmo5OaLXypA?t6Bl979E@Oho2dpU@AoAX%Bs7RfFH8j@uS>%PKt!CE+C30iEI9co?RNv5j+-gl6=y$ezQPz_GxZvH={2CMBVPLwa8-;P`RUIzTP}9O8K8?g7Vq zd8~T~GPXgHoq!CA(hf2%N@_F>85al=a{w})6B%+deeyUVL@UJAVz4b5x)tRnr;$j+-bZE`T6^LT$6J1c^VwT`s;?n3owI&rQtBOqQyl zpyS9RIs+jTsvU$ZMOk)%w((mp2?UHa*8!&142$tN^*tW|Dc%A2h<8I381)#_)*@6bdGYhueA z?U{{8mV6p6fGr1O{e*p`NF1K{*y8PC5sfYPK&nn)3#Ds^ zE#FM4L5(e67bNV}*zq_ebaJlW3sBX~Q+X3``K`6i4RCqfT9wh@VwkPI-WpsQr8Uvz z5qoZ9qRT_plnr$Gc~TM@U8Gm0LYJ?m;R5J#Pj@4iqrAw4#*diiJ$-R!V1;6}gOxQX zD`od*K#-UNu+rNqWYM~A=mA}Bt!)EPF0oc(G@uv;tDl(&P@2v4UTn{2Oeoo6P1%5w z3zL%2P$E4s6_lKsh6_N+q1_EsmMSQTn(e(AqI4oUp-Amu7ZnsuoG=vz&igCh3w2WpX@(Ft$W5UPBtSKAt@sXq?G<--8Oa&kH zG+Y2ae%9ScB>IGj-$95@00)I>2OPgnsxS>4j|viV063yQkcmEE;+acqb!geA zAjckSwM8R`VWKAcEjM=@#hP9$Qn6<(CTvVvQ#N2@LXdbWc8h=X4sW;k-}0{(yT$(j zzensA|J1Q|_t!nv?&n`ESbGq^H)SmWQfjc3l{5hfy;aoKq~=#(`>pPR?ebwgU@e9~O2<2&qBfTiguDha)uW{r=L857_*1bLNpVz#4NmUyVvc+1{283K_t-xpqF^tvZ zd!kq}8t8GJJ(n@j;~Z|*5oti__CVA z&bQd}8WU08Z%x@il=mbhp%F!TWGY0tCJh%rl>h23qBPqw@?nV42`HgB?V#irNmZty zn?a4G#&~+wnB%Uzzj;!4l_0^96}HfEmX% zuTEhFPg*P3K#B=#y+tF1VWTFWC$sXBoil&&3e+?rH_8aX~BNX!A`SlhgMHQQr0gxGgk>)im9Z&<4{ z8c+<=)z7mWO>HW%firj5^BfarzG6+;z?m;6C82Rf`e!Pf`9K;jfHQyWF3uc@X_;I( zR~*ho4vZ{c-WhzMRPFF(3CgmI#gz+ad|4z&%mI99F)-pQJbGYct+mDtWLagc$Y^9S zjAlJB(kQFhx9PX%H726;SyMI;<)ow}G@?k4Oob>5(r^JpIjpCy9J3k03<7#2P)Bv@@}$Lw1FQtTI(+wKMY&d|I9KnX}U7+274A`!p8O1 zlnvOpE-48O8`A$$!NzzRE&v;McQ+7OGM2+0w58$U+GMsE-b&$aNYV-HphWGkrQrgIFt59T#Iq){yU{D*_A2?|Y++ueQX8u5t5kCnl~7;&v?DtM z4-~H*Jgi1pDf=iZ1&KKT4?@4bdIQ>RfQrkk^=m-Ic5AgoLxo|Y`pQVCpyxzMX2Qlc zd(L9Q#zoeY4cNFKDG3c5(%VwO#wlsI0BrnEcLRxMD%c3FJ*`Y;hjSs&n1N88h$$#s zJJ5J@QU&Um;*EmD8~_cW-Qd|<8KK(-$oRCib`8k*l(o{LA;U0G{nQqap`Av`Wdg=+ z_I$+zjE`DVHUQ(pNl9qHke-$bFy4@c3joH?y9*dcNx;C#uk+Lq+2Q!&w-BcjP(iWU zLB-=qRi~li5kX=OK!wmN206Wh#~V-Sd&W_=dNn}eX&_-2jzxonVVe4h%|Rj{kqHk+ z+H({W9+p~DHsIliq$D&vNbgDo4-X~vadH88c(S|jutLGZ-r@0VaV*p!!B&Jg$R(dG zghGqUq2*5C1?6mq7ndZpsK$$n1&KL;7d;|s&nZ3Y@ZHyPLy)o8TF(Z4)U4GPjUR@o zn(R>DPC^q;%Jv+_#FLUWWdlzNNl9otk=~aIPqw7t0(kO^?&8U*5>JX;kY32YB8RBM z+lo5N5Tt1w^0$z)6SzWo+u_RXNp-4m* zRMALg%ZN&{dvoDYk$n)T6VV6-YX=*9k}6NbMn#aA1F#`9oADGY^xDv`d55)T4Yc@6 zYlTIlg<+if$<4<_LNb{kakD*7F+t)j)|3s9cvDgm8YHBLr2>h`G+Y2A?(A+)rmqns z;`L+x9a44zIVf#AmKZTE&JRZl&Q2 z;WMAs833U`?EvHjC@W=;YtwK6IC#9faPYLra=wTaqU?xpDcHnBw!AMi z@AB6Ws1tDo1#1TjZ%?W`9ap?nkeCCoAT=u#>*=)t9X@NVSpyyZ(OO~A=wKM9NsmN$ zOGqXYB>v8xrLrkhs6QAaPU(B&yk=LU`5J|3I8h zKm^5V2N8crsyYo3zZWFt07OW=%IYMv+5iy8A7iUm10bFa5_W-BG(Z@pX|j|f01(no z6i51_`eW@miU|)-x29~s!_i4eXn2s`l?onylhnt_1>oVw-GzrGm8RdAyd3)M1Ts*f zcF3?JsqHi}Tp>uz0c2PTl{Wjvul9XO#nw(M#ZKk4pH9O?ZKzgXRxJ%@ zinR%>C#jb6m?@(YAA;F8AL@QvUcST2LGFL^ad+oewTtyN?T3=i2WMG9<5Mat)H4@DvjM`f<4R z4JLOo`6iRQnB2|e9wzrPxerOsrDyQ1cWuV4cQbhpllL-tACvbp`2dp-GP#AxhnRer z$w!#n%H*R=KE~wZOm1WH2_~Op@+l^_BgqMiv&6^lz^%ub{F=#cnB2qN_U~nKACqq( z$q7RMTwV`E$kyu1NArbTC4(=$%ekRizAz%{4i)?+5M>>@QD|D{sA=Y?`5T4Gb&k5% zIT}IdXbqjCS#*x}(K#AQ=V&pVqv>>xHq<#9Q|D+^ouhemj&{~L8eHdSaOMaVHww$^ z99=-?=nFbWr_ecihtAPWbdLU_b95Y?qvJ3~N4imXkj~MSbdElyb9649qnGI%-A(7{ zcREK0)H!;h&e0`xj=rgLbW)w8x9S|-R_ExyI!8y=IeN6t(Y1AsKCW|gcAcZMGe@|) zQFy)1(fxIf^+4xXA#{#4L+4mUbdGgJ=U7>oBZ%Ett1lTVl!j1e1VmM4-ZWD`Qeszb zBy@MtNNFOA?VYmKEUQ)hpkZ-2qFgFfGnIW4L#4uudp;nvKK~M#yJ<#+2+u|{zqP)& zk{>GMi(~7DN_%oMI=>-TC|!;GVfhg>dHCaqk=$@0TNX#_AiH3sG+fM1;1$;qgqGzi z+jGHZrt1r_#2fV;n-9(GoT)FtddyOBqrOucsxK%Fxw+vgG1@(sKtHcmUnrO1BTyHj zEKu3tBZm*?tCA7OtX{->>ZU;aC0>r3obyhte#r3TBuTpGJpG_~?q(F{Zo*$-g}4{s z)>ijIruBtF_-*BFlaP2RzDu6ONkX}cp#^-Q3|)D5)|bbScP|pJZV{uV7B9p}wFo&;S7j8o0;?$z8D!@TwXS_a^|DtOz>rzykzc zm!StT=Rcbn1|Z1%%V(Kk7=p~Np2G}-5oA`M#0*0cWUfD%83rcEd~p>s3{Q|5|2#7c zQji(@A~Ui|RJ$G0%U;02ktZexZa3^Gq_XNG|cGDDX$!*B+f zpIpHVgBoN$`!Z%2+8}fJmCP`}LFNlPnPHfN%;H_lFxcT^L(DMbLFVicW*GP&^MNsD z82%vhygV}uf{=O9Ze|z?A#+QC83shiES+SAVG%O*3Ns9jkl9mXh9MF%5AJ1#ff6z= zdj&JZ4`dd7nHdI6$P9ji8HP^C?7EW~22jXUzsU^4C}i%sml+0A$Q15ph9MO)Z~8Vf z46KlO?*q&*yh7$>4>H3b3z={2XNI8`GApiOh5;8c_f9jzunU>%ZeoVP7c%evD`psi zA@lR^GQ&U&nd{%p48t*Ge)$7t7?dG%=0})eXok$!A7O?88ZtePF~cwonKORJ41+af zw%yJQ(QfBVtyVwSWqs&%FF_qaytZJXG*Uy zQ^I?vgxgLFf1MJJIxReOO1S2f@X0CRj8no3r-b`W3BQ{b4mTw{ZA!SA~}DLdUP`L)_fIgNMk_ z$^G#%Pc3C1Ex1`lxd85_tJ&|so<#s)W)8O0?#f$q0~#_nDK zujKOdC@!N(ign#ZGz30DV!C@C5Z!$zz*`bLEk40fZ=Y?CK{gBSm%*F+EC9Qtw?00- ziCnfQd&Sw|aj9vt>rrPr<30>V-5;FjQC}OMdXYO;puzRXv88fXp`CKiMEfL}eUSw@ z_TD4;WUJ>+gQij3I%{XgNFV@yfQ-{Q{`DA4R(;d0i8qS8rP^=8L5ib&IH*qWlOg)5^d2CIxmWI!xpRsu2o{xsfv@egUa>jGQx8I2$Js6h^uU+*Iz(; z^cbYMS&(wyhS1EGPfaf~iqGP3Ag4!{@t*r*kaSCk@+9517~xyV05nF7?mvN&y8v;b zB-a+ud~!|q$yF}J5Y)X4gxv}PPf2}sY-1sQDd+dT#FLyMtowP;asMfkl-PEU7(-z9 z2n4|H0tCL2v$NuJ=J_VkyU{`nsNKsz)qQN(BmDw<(v>_9W%c-FVD7$n1j(Nx9GCpI zZ5e$#u`V_E5rcd8{h;OEH|`N!6`M=B)YfB;eFJv|dIs*pu1Bja-1^L^WxEahv5VoJ zi4KPQQgke&!0~CSYL1PvGWb~9&6h}f%i7otz;K7>&uN$J8U z1q!o@4iaWAc)VT)8?C7Wkq0b`k&W@XsA8H@3P$wexH%;Nd&2Gu(GPZyy3-RN5>%Q~ z4xC}9h_XlRWFLgI>8L9a()_kZugV+0A#q z33Bdp(Ycp2BO$9f&2f)EjuN=LLB`$iZI9Nuc9v?__;KvPeIuy5mtn*qk#>#UqLtw| zlHtAwRNci7dZZ)6$mW`8sA?PzabF5z?mNEgQFNm85!!Q7vBTjL_dZln_ukifFZV~i zEWTv$wl56qujg5XLoaU6HAr5M0T-#VQ<@Vp_NG$&aL~rR2Nc{FV5mltd0ta8I@a>L zjU4E4uf@CW<$vW7h-__zKrJ@t@C4&vk^4T-a?ix5kmM*5zy-m!U*>ycIqc;A3(Szh_1=w?DX{j$o0+BT_(%0}&AnBO z`H5j9_tW^he#90r`WG=~H2$aYKM9pp{L!dG$`vtDpoR|h{Yq8LG}e!pESJVglZ-ya zc%m9&oL|TeWwEC<-LpSK#XI zM^axb1$Tl3=2vpr@-Tq@^@6jAw~n|(JmFl-xWfyWz3Xt^5sy>$K*I{SYI%d9}@Fb z^=C`n4VSp4VrT&OtGT_raK;!K-H;zThZ9>j&D0mxs-r7ku(FaL1C9F2S6x=Y%>JsO z$r@&d3fWb|B~0M2+PMCbEtx%QGnG=UJe(6*{*ZyvIhd?(h|ax?9aqVL%2k-oTE&?n z7C+;@9g>Lh&m|`}&7Ain>Kp$Zn7I}MmX-Rl$$f%Z3NnWkGIwQ3$-SAW*F@(7OQ7}u`$7*mz+dJk`(!KBjC;c}@`fe084sBsMLLzLlJjr4P)*;=9My(t$9eGE@xp#3&+ zsV^Im&tyik!_^W-ZQZL`=ppzx1Dv6xB@_8##w)Edv-x05^Z~506I_gqiN2**V}Eaq zgrYAgmdb2(M;4&Q3x1Aj;O7#|@_7?*^+U00ql&ps#R=Bkpa!9i9SxiKs?Ch&ve4X& z`y{zqNaw)>C~kOUyhTrH36xs#1pY@VrjxUUm_I4XsZ9xP9;AA|9$K7SDJF*H)aSY2Q*j|C zfrE3N?q>WLdn&U5bZhnb`3ay9{QC$6pmcXs4%Q>8__AXDD(!r|?g1E))81kkNPT$$ zNS!Iws+f_^4OI4wp|-hy5qjhp@d&mo*xm44jbxsLR@^6$+=#j5k%CxxGUNUpH|k5y zDP3JGl(Hjar6Rqhew1vhvxSV{J5wv?S=$zJVmBi|3b`X>rGiiIWlK|k8r+nSjFm%} zw9QoWRXI~te@6HRmhR2;){hDQHj$m2#H>5X9T)yZkjn&qe`ff1%rgXvY*PMbX~m1&R&gyuwyhKLliE>Nj2e^7v7CtauohYo3EbD%| z|MQG{D^@~OXX?v*Nr=RNre1f&GvS!eLsGw?i=4~iquExhDV}Tf1+a$l_}=<4z68E> z1DiL5hoi;8it`V%B4spVO$CpB z+|xy+emHa?0uTXt&-RV0YU;UYpsE`qP~%-)6h4BN26-c%@IA&JVkqH)RVryww5(l$W6>OSrtz)Wc9fBn#P{Sx*5{UXugQS zn4tIGI?GlS9L11Ra_&hP7~hNVUVOYzHf?(QEKBNh6+>G8*_b|@FJhpi!LqYmUlmWW zq?O!z);*!64;R_v47%`#XW6i1D29}RZ%@S5)wG=Bm`_l~*{-I7qZmR;&OIqx8?u6J zphH5=wjs$-3>gLAo`|gtxhGr5kA!5LZ9@u+SysIlqN@QrSv%WY#ErBl5J;zrWqgH(tU7kDyBf6PEVPtS zJhhcmbMM)*mB&WK1hZQ&TSf#SjfCTYz)Y~=u|_oTfmwCf=CMFPzEC94sydo+!0cAX z7EwSzyl@QA%6LWuFuTTU-u?%q3$^~OjAyp}vunH-Eq_3~P`i&&11uOA6qDa#Y)-EU z2;%3(9jJ2NVgmt!{&E4#8|bwH!6Gl|K#_r!2ddQYQUeqoS~Bp|mmj$X0c?279fBNe z?SKa4l${bjv|^%))d>q|d(2r0%d3wugB)z>00&}jPBG9ps|CRq=ZjcDRFEr7LUHt^ z9VuKB_dEd04s?OwV2$;JScuJi9bnU%10_q;+#w`7-JV{_v;10ekhVh!>avo2j>$tAm(l*o)aXJ9c1JWb|goFa_@q@#yI;@(Ah9x0g;4Yc)}J z6-3K6&g90A}$Wz zqqA;IAz$Rk$s1-_PBrtRTy%jq5tLR`ZxA9FKg_nMiYHH0k41>OK8;n)F_h_9wyEGq ziFuf04?=EABcvXR2wHR&mhl8DU=63oB5Zqh8rvE} zDpRxUzy6@gO#M*7T-qvXj;qXe71bjv==)0c(wfm2T$yb%`ok+QqhKzr8O;%v**2pd zV}ThZdl2%4mbFn2$AtQlujzg@)SM_pU8L_2Qf(Vb{dQ#VGYjT3Ir8FxKn^kX(4tZ>&^?-BeNFr#-S%?6lc!~^nQaG&_Nd!fmU8ijx z>YSC_X^lYV+FAA4s4yo*l{AB#*{zb%Ax;YO83E4hnlCE6Nnt)SxS3t^MTa)eFl(O} z(hmhLnWv;$1*Z;<-tK+2;&|IN^&vi~)vm*5iO1vvAMWIfd$8D(U-04c8rQ+cC%pFX zOO%tCoXn&TNzFY4DSzzetpO&hn5<#4mdWWzYVH|G@uA@JdFO>lD(;}T)9b#7x6Wen zVkYaEY+!N@lTA#{LsE0kN6L~e`*E6|+$s3ux8A;833sSx?!&`4-@|R5B!Q`)*ypzehn7o(C`9Kkns%c0V&SU60(krPUTGGrd>5^*QtA=wzMY@lt*` z=afbrAB`N$;#G5%fklE63c_Q9+$(c%*X~^_NAg(l&2MS41t*{kM;sI1FJAE;K6TA5 zgQ}A)=Wz3?S{~mjJJpgilH)hs_&n38j_1VdV&5Fzt$4+bXIA$++B5eygUlT z39)a0Gn^|FbfHu{MdrW!sDtm2do>>eg5f^rgmumuZ7V)n&gLsQ=kjc!mfKV=m&(08 z`YmUoR;fBeIS9Pw9KZtnp{K90kbrvWJb{wdwkxUO)j)A;&Ej^W7B{>g%i6J8+Z-Eq z@HsdIJ}1u>#s;KmGQ8j0@ODU&VyOyM@a1*R?lye;8le98Z?va@w3K8#y9Yo)qTI2# zKq!?Py3>csrK>AWFHoqj-_eGX^hj~2Rz;&w18R`My8TQKgda2nXy8JshZ4b2o!!8{ zHGzuCq737=l0>+WV7cGf55GUq7j_1!Q2S1>aF*QPzG(e&K!1LzD6pR;`r0RkVNPTu zH;L_!5cLKd{tBF6xBn!n1_F&ifd<+Ffmef$<#0Qofe?&|k{Xn2dSkFS4WP2rz{_?R zWP?8@&jF3D3)rR=rwMTg4P3=1tKov4?qg+NSgR|XD}kx|a|fVG**x#q%K&0;W^F%O zjsgC)d*{HV&e`~R|C+(wx^Z9O7q!CK;p8%F=*&Cue+L|m?>fDL_TB@THGQDKJL(BM z!ooCUND6D^@9QEctPN8*TTocjKp{|q;DO}SJ^rcxkxNkEZ;d>NN);`ItZz~hMF9a8 zDENxFLc-oSBE#X`y}fWiY{OXT?G@F&A2lC16YxR-)m4B>1%Y#}x35owiSYJuNlu|? zrBv9H>%F2s;6wU(2C|L*o;EcNTV-sn`x+|nBInjoO^`9)qNLOizpy&NtPTSHi4r1I8Boe9_o?=J zBt%EF-Qmgz1)|r2U5KiTx)IXgQV5XjXDL}{?TBpn@p6cwU#p9KVM;2DE$#|%*YAWP zYV-_b7#*S*6PcY07=W$u*a9JJ_O%D6c8v7H3+IO))%qSUt8MTf7q)9@HTp3zBq}vAmDYq74RU1 zm9e+?cUiFG$jXcm32m_Yd(GfZKx%-7?kM=Z&@^?59LTyG6j630`eN5NpA}C7BJK`# zu>#6}N^9JjSoN(v~MQLq|>il#dJhXabCr9+sJN0jL8bUJh3I6K=Oe+HcV?Fo{#UO$Hp4YvM z=n9e8Xpbwq6b6BzC3-QQA-1AwQN9->-K<-9AUQv3$l zYZ(J7RDDtgrD{uJQKM5oF>QH{fh7RXNZr1CCHd3W&_^gNWh09)uX=-JQ!#B7jm`tjR&@AnH^Q zzl13IxLwFsssV&0@0<2!arPSOYUmAgn>Y=yatOP$?#8I1)KvHxzP&&67Vq$1(7Px? z&!Dp-@b zAizcQ>Mdrhn&3&im{}L@YmwS~N>GK^K~%}@#qmnmPL?C47=88?-xOp*tOe{wz+vnm zyS4&koJ(?;+2P)FgS!-3?_v-pVA(4;L=Qh=6ghxS?SR;u>nfE8o0}$7L~Cuz12g>> zA{@G@1L#2!8ZDq1dgMBU=^_9T9=5}%2Rr+MJ|A{5=^(YsuVu5Uwfr0KP*615x8J z9LU{Duq$AvpdeUOoJvWCgdBXVVJ_Lp7D{5&P!05AiZ}Rzz^d$CKsjdhF$jkvfkrTI zUIG@&qkX-BOsv_+iCIlSloOgnZ1#U~rebYUY`w3LSKzi-SuwaPO8*kYu~s3A&DJqW zie(E}CX1O;%sVR*4K1EO(Y#Xd+g`yw1g}?9zIrS|zTEGPn~2$m;(^R+&iu<21EYDI zS^#~B$z-es@QGpe%9+UV-1?vjv4lbmL-@3~fPph6R~^XYcPX+y6>JHIJ<(Z-LPInm zZxEaP4(|GkXs_7i)4H@&z_A7xQ4kFyTa7HXe=ZdV9PGg_8ewR5B*?9pG;=E0n&0d? zM7xNiZgUL@7o6Y}f|bSG7%aXgr_2>>XM>}udO|#7XEPkjFq($|yP{v)8F|;7b;dc&gMOqSLEVZEu=72HQ?pdc#2<^R&`sI@pU9YUHWg`eO zg&kyd<589kT5nm!e44Db@v0ib1TVnY0sx8Dlpw4Ww9eVGV-Wol8H1xabn>jj@Sm|< zFJ|Mm$YGToYjy^jdW^Ynx)=dSzA{|k3>5yv;+$SVE5FlOsY=GImFN&;;mGUoKR|=5 zwjY7$xu7W4b~ce@FkLJfh)WfSW%jxT# zEb5^r3XO=XP>>QUQK2EJKOjX{g$zgsFCykvuolOItN3D#Akzg`! zr|PQ{a#3e-3h&GZfF}D*MBinp4~cfAb=xojaxFfHPaNyE)}3b<_ZDsBH8G zbl-ASSsOj2$Zm7%);z3bUmFeT)&mEKj2(fm@&ID=$8)HVYSmY`cmzM<+-C+fB23vQ zYmYd&m@n$t5w;3g*NCPa{(SX#-otNUThRoNAv8&dR~ky!%PvLb^qp~+j*R4K6qrmc z2ErwOp_&N2CeduGWtFmJ_Fc;-sLnE$O#45_@;sjg<>ZploDjw*qGcz%h}&|NuE(U9 zjuk#k75e0S0x~vGI)a!aBlRiQM&Z`3prv;Sf_w@tk6_5B*i*r3-rPu!m?M^)XdB4i zVAjcT91sNyg5*9mQ_Qj(U-GFkaEW40F5Ol9@&T#bxK-4re@TPqJL0$wX~@cWsa6=_ z_((Z7TpBAPX2+a(#gT=9f`3LLsb?U=uQ|epqwRDPr_$W*BfElbF-KU z!c3{bLdZ`ei}p#X&W!AX3fIh!(dy{vQ1w;r)7&H~lv)iz?f;VSJUIL%4?YNY*!(6! zcR1FEbgl_FfuS$2l@KkdYB!_Ed#%hajqMkq1`@(sKJE_!dIg1eqVo!~GdLE1tXSck z<1dUyUz2BSRn$+qCdrrJmNnzGm76C zo#GjzyzrxZ+<0UF#}lCg)4NxV)Zs%6Ztt5x3f6O68;mF+uu#~q1*3k9EuIyM+~s3Q zW!IpyU*`@C1S0NH1OQ^el57G*YfreOv2+xz7NrWsiKPuEOTa#v6^(xe)ZGZ;l8Psi zngf?60LHOcts2cF1U2*{#1%ngV8&g)($5wr&^rOR>L0lV*K2`vc{D@t86itI$z>%!rm)+=Hb<4Lcjp zuw#XP<}`b?cSp~jETWN~%VoMAgXI!DG9Lak8Qg$x#u;SPBmY{z>-3+p&p<5%;bvVh zqaQ&l#lE+^A+-jf{gz()K@8r*^Q|!lK#9J(5|C@rGhjdgv};$YZ*;X>HqgGT!)Gb} zAoWJSW$L8zLdIVg$^{kbTU~@nXdZm7gB*H|n`V&8&}NOaFdvB?$63e1w4M22h`}g! z`H;4SwH;)ur@G3$+7!gkKv&rtA;&3`Sh}AP$I(im<%A@`YX{dl_&sKhtD@5)eh__R zp+I?ZqCr6@R)I@0i_4CC^nyPmsgOji-pgJ7u>8ZkhZ(FU( zm8bI80YpAB-XYt&FpD#Q%~U}LU!T!Eya7aS8V3DTpq2`FfE;+z1WDcmH2SmzCAt^8 zH)ZrzFd)PgER#-!Lq59$`r9cW0)OyDrB6UC*+WSKSC=vK(Cd-#{{W}>bW!N2 zvQAyq(s=z=&y_`fhazThqMJOXtFvwU z1?OF`Rs1QEtVqw>v~|<=^%ptkZri@)vWwRH_QR0A_h`hQxaB|TIIF!U9cP37bG`U; zeQ&mJL+_fES&d2#)|UGJr-hkI&MBZ;*ZySu++>FjE+u6~VXuU!Y40giu z@K14~t(?8_+aviUl3cLPQspp&@VK0wKH?$4VkC*t5~gJ^{v=vOX8D#H$6z@j0#5Kn zpE1D>e~~r0mB;z-Y>S5tQr8|f00shabV$c?=r9nPhJFP|><0|>=KBVnJ))B5`|$^A zc@C?i;o7Lzp%?npG8+W~M4}#eEQ2rUusymb2FXE;JsuJakr@DBOjLRUY!RHq=HYx+ zyfnay6nuoeg+c}e zrSN^FA*h;48Bk#afdv!p#`>p5mc7>|N(J%BeZxBk{IVzp%;;-Vn=+`^fbPk(5M_sW zhwYVo5?xrVHQ;QjUt(Tso67SHAzt@_Zi(ZfofoTN*6~TMRu*9e!YXmqZG(RUHDn$B zN3;hDb7j;bLNqy?g<$~fae&cCEDwr8dl`>mDx*-tLFRj~rc;g3%MmM~vsU#Iv-`4< z^uw1XErH*?Qp0S@s%qF>l!HlH42QyOn49*uAxPO;D70-@GN9Xa8P5WpVbj$EXPiRS zWs1G)`y9*)@`mW3;?4%FV!(%O5?AOD0c|#tlLYYfvmi(4=L_rRbx_2U^hE)KRG*wZC+((RIOCg5?RUD2(H<;*7B4DKWH}r^ z3Bch2zd-$-3~I?l;9kIonlj0a21I#61!AOzpOd!cjSYhTd=k!rnvAHBzJO1KMwPE? zw%Psi(0ZNzvrp<-Y*lkoypayIT5tL04Op#rRCt_+N>;yb+WaB>zBt%9R=?c3`OEla zd1JRk{rZ*7zbD-v6i2$Dnp6UjkX;pd+D7?Q_%Z|m=n S+>gI%ZtZ(q^;g4j@c$2XgU+7- literal 744752 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 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.doctree new file mode 100644 index 0000000000000000000000000000000000000000..44ba8286a8887905288ae26ecb5d47c9215e9190 GIT binary patch literal 7467 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 delta 30 icmca>dfb$yfpzMhjVwR-8O7%Q6t>qmj%RI@#Q7ysx=sa&L$O4fw2cF;qVm(IQIZyjN^I9z+v|93$Lo04 z2~jB_5>%;V(ME3(6@oxH6c9?H%GXlhz$F)c4jhUoB&4BIg=mC0At7dW$GeW51C{V$ zXXm|d-hT7VH_v}AP%EpH^>ypp?eAQ-er9=iY@p)+(=o#;&oQ=e)ADXbEM}{&E62Us z5~}j-UfXeAj@yEAyfI&Qu48wq@DStjnGZqp_|W{*l*xqfk4>e7SuPq9A`uax6fa7C z^&v{xV9>|B80VNYJH?5N5Mv0I!Ps1eO-mvZ6S54)M&gW^3#V8~;v<|Fp@=Y*5z-t6 zkcvt%t(K6Da#>spJ_&WTAQa0AQ=upykq|mAq%kZPkr=~a9L zJ6t2ULW}dy{2z)J5B$N4)m5G!)J$v>f=+e`ZUh2QA9h1uuo2FL*P-R?uO#bDt$zGpYgw1Fd z{21+rH`2FAG$$;0_;OFph zSWDg0%1~Pf+(+8svS@SKXk4Z3q&eQ2*g(KWJ=ARk`RJq2mp(}~(ZG7Tjqg+SI1u%i zZ^KpL>t>&_w1R+-hSxG~>KLsuc#2jT4ALqCewxTg9iepweuF`;TAu2rRR+Ijb5ydN zL0pGyG_=8&!gICH>h>WQUNKLV_O4jx&|7=*EJkrZw2_7Ko3bWjYXUU-mo@tDtMtuJ zDvm2w*8GOAE0s6)vS#e%qDJ(Bx)*16c@KK5q6ZZnSpjXUgc?M@C>Q94{#_za<0)OB z(k7=gr@qpFcyvOe@V#!P%{`S`ja-h7LiJ;)M6JC_67`=HZq*NN2N2)+WCh$dcb;U96tY<>yc`%lz(OWU=a ze?bYt-vQbp=T9r|$Xo1BQsHVYZKm?0N|^Q*?Uf%>=B#&@I5L;F;lHLV&xvwS?i^0M zjCHvn4=2XS=qF=0fQq09Q`BbXeWWQ+t z$s0$EB9Y1I8K)*Q6+eWUqLtObCi$!E%6L$%xFcT5he^q#C)08=kjIB~Lab;4xkBE`u|swE~{6al>yuRXb- zhj;S6nzc}Uzlu91bJdkjzFK0!n#IYera!;=AwdVN4#lVmuo%M6FVvhV| zd20@)?_86g_x1~E0+sb}q@)%nmsA#{PRY{b-rUh=&&-s@z4_$CN6hLrK=~|7AW_`I gnU|QG3Q|=(rFKddNTRbiL$P*>22g(UrK!=30E6(=@Bjb+ diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fddf57435bb755875c6be0e65ef1485dc28dfa6b GIT binary patch literal 9298 zcmb_i&2J<}6}P=Rw#Ogi^(Jc(dA(^X32U3!1~z=iTCK9OB0yHGC?6mJq3P+aneKK^ zchg<%^&A3;AYzS*1KLIqq<|1Ngb)`b4nV{ozyTtWaOFZIjvNA9;P%J^0@39c*%7U-`o>h>>#5>pGBmIvMjWFN&o$rZsHbTw3CowJVID-RMKp<+;zpagQhUK( zw&(2Y_9c5o{9^m1m__k+GfYg|@QiJfbhy2H_l0Nm!;kBVBl$`ldMB_FFYA{LX3z

|R4Xvc43 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 literal 0 HcmV?d00001 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d72aeb1b4b2ecfeb88c0656582e30e92df7a9777 GIT binary patch literal 6871 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 literal 0 HcmV?d00001 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.doctree index b58d015a8dea3534f9dda3f5336908bd98f2c461..35e6c890fe5c8129a739c593c9fb74cfe1da3470 100644 GIT binary patch literal 68632 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 RzETarj^P5j?@nd<{{e)lk2(MV delta 8718 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 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member_formula.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member_formula.doctree index 4e8eeb62bcfdcab9c2a0f61e6cd11d4d26e41d7f..3d6ca1cb8815747265384208f0cb0099a79d834d 100644 GIT binary patch delta 107 zcmbPidD4=lfpzM>jVzjijBbk-8wz4@l#E-nD9jU~hY delta 53 zcmX?UIoXn>fpu!fMixy$Mw7{Ug8GbwlM4h>#kj3<6H79z5(?up6Q*Ra$4tQb3 J%rCTy3jn|15XS%j diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.independent_compositions.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.independent_compositions.doctree index f6764e6716ef4e007ae35ff62addc24cf97b865d..e12caaaf66540c3dccb84a22db009d456a9cf5e2 100644 GIT binary patch delta 143 zcmaE2e9DBifpx0A)JE21KE|xctN3(nta1}eGOQA^6Z8~9GBS%5fT$!RRUxl5Hz~D9 xAwNx_Ah9ShH?^cFGg%=yKer&iII|=(KTjdCBDHw(e7++lCS+*boWkG01pq$-Gt~e9 delta 41 xcmX?Q^2C_6fpzLl$&IYZe2nIk@ABz#TID8|WLPC+CrrM?cZ88~^C|uYE&x0D4$=Ss diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_component_formula.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_component_formula.doctree index 7ef22b98300f8f336337424417eaf0920089cf4d..95ef40f8de39c77f9aff8d56210de04e74c1bbc9 100644 GIT binary patch delta 66 zcmbPYJ;$1*fpzM{jV!)`!U;jCC8b4q3TgR8xurRYAbN6wV7Rb3R&mwMuLW0f0{{~> B7zY3V delta 58 zcmbPZJ;j=(fpu!#)BCwB@O@f)LxZ$2k@jvD}F C2o;+E diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot_formula.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot_formula.doctree index 16fe378c206e72243e9a7ab0ab7540dd25347217..52de68e3cf4f221132ea55af355eda06d393ae1f 100644 GIT binary patch delta 2693 zcmbVOTWs4@7;fyQ&86urBc*AYy4vUx)~#L9HkeeHU`#?qEko0W1W|Ajr?%z9nJ-%_ z*wTR}t&$(8j=4zVvIi(aJfTXXXb*r80&$UessQb2FTBFTK!P#x|HpOgG^G!dk{sv1 ze&_$c{~WJAa`n03Qt=Qd#MLNFkEQ;r|m+T96Mhsf1t?~RZZLu>4Ru>x95zm_H#DwJ+UACRD zLvoq?6it)&BKHO5LZGdUoQ&=X7*u9QUD?MVdj(_<4N)7j;7b%j82BZFU8CuCd~y>y zf4o$0lHa=z6RRscVM8W}@>v7!j()4)_gKItlRYPb)Q~(Kn+m)}>apx5Xax8z0zBpd zY_s}Gf?mw)(tKX62^w#xnoaCR!oakP5}rJWKSPjV&I+hDFFug7#l7&&=4?~kCvN~| z(J27Ie7|A7X*XZk>X536R2BS5g0$amqRoF^vcE9dF)LOQ%Dkx`sv+q1GUBY%{SI4^vLq;_ydvp_uTWwK(ihZ0s&3I_JkKg$ zX)1B#8D0aCA!xc=XTRvO9dU{NDn(XDWS0=qkbDuBVKFDBXON8zbOp7v*n$Dn(SoTc zg0Ve%#2ChXQ*4W#w&T<(A4TYBqDbsBdokiw>O2`d*9jKHCSL<35($} zK8m9l`ymd`is@NkNV;n*(Ps6!afM1vrMu5 zj9J(aMJj)RHt7Cqi~EM-o{jzjF~xOg#5xl5!Ce+pTePjHCX|JRnj#e?!(Jv6vHK_G zo8UqfdQB)wWvOUivBI^*qZPGeDuOK|eXS4(iVCj-@|DoQ84SJ#!5d`=WOt|nlqtyF zS|Z%eHb-cu4(-?}Z@`;NP0q%-Xc>?KsCS$iq$nM)I?*RWZWz|zOyd9tmh`CNGMi^nc02-w zG%LauAH6|E`2!!$rn`mC^8Z~o!)z1#$ldNCKW7I)y$xqkyoIx=xi0^PJ=VFkvs(4g z3XvTYi>LK~7}(ixUnekLArVaJ!W5_m+6BCGm`t*f$>&ES(SePbm2|^HG;i zf{Xk&Xs^isz%QK#`3^q)3qS58G>Y3a30rHs-6U*dbJ}B<;JoN;p$gLLUfAXJq&cg9 zd=gHHQZYQ08sh^+O4AO$0h@*)Be38_N3B*I*+o2R9IKZd$>OHfAjUfH$lN>2IU~sr z{YB;)^dLT#d>1l9XwN`Chc4-vB;pJ4)L%SCZuSg@cf%_g?HRcd=SFGsI@N+~EY{%2 z`V<0LA$&)1|F7MNA7`1{?Aqf4x7fYkVN1V(AKeP$rH58Jyb8*wSk}c+I1NC*HZ$~m F;6HSUadiLy delta 392 zcmbOovCNXSfpzL^nT@P|%#7ue7cz-VRuGez+`#O-`7Sdv6QlFwhpf(B}e4KZb$GBVt)QyQn#PSMDa&e{vKT$2N2&u*ZxlQ*)2@h|~}cYrLF$zY!BsFcil z4#+8q#BYTvzWJ@-ZEgUL C_!hPR diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.doctree new file mode 100644 index 0000000000000000000000000000000000000000..14798b3962dfdd5315beeded7d95ce34d7541f1c GIT binary patch literal 5760 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 literal 0 HcmV?d00001 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d4140fb564bea2f3f0f848bf5f00c2dcba8062a4 GIT binary patch literal 5545 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 E3o2AvJOBUy literal 0 HcmV?d00001 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2096cd66a0f383ffd37cd5ae51e7bc44afe2e8b5 GIT binary patch literal 13972 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 literal 0 HcmV?d00001 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ec02d9e1607f3610009d5a981d293d4c444b7bc6 GIT binary patch literal 9862 zcmd^F-ESOM6}KI)?e)hxP8zGlaha$}V~2RRAADL-pbDu}MYXCnDT20|%+B21nept* zbmorZ1y!^U6|rCMSMY$S zlzQjRx#ynmbM86wX6>EtJU$`+6U%XEJN|ytuq;2YSe%MED=?ED^Lctd-Fz#3Bi#`7 z$haE^No2BAOaQ{P9nXrGpT3rg27z%Jk0?_m=woj+4cN6N}+o_^uCNyv|U{^$4FG#gdiJ6ST9Wm`WK1+9! zwjt&X&LgLtaBxPPoN}y~sGc=FBaX3%-!f$%%Zr}4inQhJfmfj3|rTqdFgq5?O8-V3b6%ihZcGw6ju z?2x!xVV~Rh1D0Aim4Qi~20AL_LG>-0)e{?O!)M zGw}=_L`{;f6k#)pA+|?vP9<%7Lew1JV*3?MC?(mSg_!IM(8FW+cM<gO20}Bx2qV80o{wqyQxt%021#@bZXLO1CUi9QQz-*+maE)i7;Ytk3E*s z-siCQM&>tv9rl~17np_z_wg;G#r(ZPJ_OUqJml%-lTWtbGi(du+BLfHr`$^_4$;y( zxku-CZz!`Dw9Bjr2vvgRl6oWGa5~< zu5lox9)r<(+z<;e@GYo9o-US%7#aQKGplOPcI{nKRj*W)?GyuqB5#fk8BN)DkEHC3qzs7x^5rb@90a`Jwn#p7_DI z6T`zNzMq|VOJ#f5<%nqU^U;XyJ4eO}V&vTd?HtLokSRpE7&7023+nsGcoiMw^}>W$ ztwQJ&9%Qntz#_aCrNe6WP|D(uV@R$hw|a?M%pqz8-X61L*!lyc^Lw!IQNhO81ONUh z4xGGPJ!xEUg_x|MXE=T;roujQG8TA0L>{h5mrhZtVa15LjHj6}!~&M$keN=$G1CK4 zNAOdHNGi@A5%?%>_qP?g9f}4YLIS@+F*O+U-#eu6%yLK5pNE$p0^$8b2rKF!K=DW~ z@wlT?EvFZbibweNJtFG|z>?*YJV=SNSv89s+uU>5T`ICtv7G6rn02D!RLBPz8vJ z8372DI7R57?V_|#2U3QZ8EZ@KBu){JjN}@|)=4~1MpXAQ!OrVEFiGJ&PTem)Xm=&o zd=JJi_o_s4apak0;kdCW9q+omt}F=R_!{|dC2J!t@akQtdYP${S#~2Mv?~@RzHmKa z24|X~jif*$T?60+S@O#QGLPh+a(5B&+-FIx@^+$BI^?z$FC!!PIzg|C|Cf4f%3gDy z$pi!?*Kxyim}jY|QdSIk{=t1!zOSgae3fk-E(Ydb$jgv8*J*XBRFrWdMd<{+=DsTR zC9QR$%0N4?`iH1=ZveVTTYsV|Mcc@8@TRu4rQNdG7%Mg6K^tvqI{^%v+Xlz~*nFkj z))1&PC)U_L5)EgT#sjSl(8%y(+;G*xE@L49s)#19e*;Kj&GB)fx>}+pk9kvji2+L> z@2|LEc7ljbE{>VU0u&2cuhDr(xtZ{Dw5 z<`3K5s`%;uhJ%k|v~V7=yxqY)X!}kU4(_P%S{JjK+f=;8{R`O_brV-by$BzbWBxYQ z{x-z4ypd!@cG%ydlLreQ%AOw+mNoa!_%p7YE$TV<3Ls^Pp4prGPg*DpOiasjq(u!G z;9Vo~(*yT6fR|R~{+51ynB&V!{@ILKS=W4Mue-MZfgAjEW?5Nvvnn1L9ZSm;H5|!C zI}u4k))H&(>o{?oGzc^xs#G=`*G(eOZz<4kNUZKF_>)JNESkD^Dr;i)MTSWs zSd@zu+kWaq{5?U?YwneyO>mq|8DPdokc{+FxWjmkWip#M{Fo*~diW2U%z`o*O}CGE0*I^=5*I+revq%_aD<7@iy7zW>!t@} zX4ho0rJ-r2w^G?c_HVXi2Uqr+Xd0mw)zsI>$B%?)9{rh9Ds$Uc)F5+o050ai_7(Av zyoX{Oig}z4)99kZtLDKqjxn8=-bCLihe6->=0rm0O^Sw@L^N&ACb{X3Sj<<{j9JWO ztYUD!0uxh{aI|-*YlME^%*%$CU}l>47Q{@D@G#-&j=j7i>RlR5(UcaL>$smX%=mgC z9v0N-n7W_4c%083lgPu<5_QOEI!$kJa7~F{oaqDs$J~)sUf!G(OEi#&59s@JTTZdk zpvhN=cDnSP7%11&3iB9wQ>@>0xUJ_ia-5iL$cE++L&U-$;=0H77{oUv<}v;*9&2KS z?K_YfCYDK@1Jy*$V(p}h;~G@XQsWI?c^m3p-nGL5Q3Ep4y-To4UZ5m%N1$dr2cX#j9Fp@ zI_9;2I*scF+BAA~r?e82>w6BStA$m>^H}U6BUlNUwg?iCK zB4#i{3SsY{ot#5FY;zvQ+pQLsA=EsDULGV|??$_16>lbqqnBmCx!?ms4{k+I4(@0(zi$ zxNslZwHYQ(2jZLws9l|5M&;@FricQqBzqa;Ag7J%f7gV?@+&tT+xq^+y=jYKR}wI|Unp*^Hh3XV`KC6Cr#M_8dfIl~kD|>@9hY(^02?dB$ESQ1k zLDG;Z(#Y)fZ2dmu@OJtl+yMg)I2Obj({~o+!Dos{GO)Z*EK40OIKJs6_~OY6y0mNF NqF|TB1=WLS{u`@EOI82? literal 0 HcmV?d00001 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c20be748d744981ba1966015d9a8c3ac40ff498a GIT binary patch literal 5537 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 PU8@lVyD~2L>aYDdd#!zo literal 0 HcmV?d00001 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.doctree new file mode 100644 index 0000000000000000000000000000000000000000..300c8bd8dce3a9bd7da9b3a487c1aea217bb027f GIT binary patch literal 10458 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 literal 0 HcmV?d00001 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.doctree index 9e7cc1c8ff47bdf22686c6ae8cfe304a2bac32ce..f98ab0e9aaac5c9683f5702fc8387ed0c2a8daf6 100644 GIT binary patch delta 4138 zcmb_eYitx%6zQy$+$RRdX+n+ba)8B8)VGJ@8TnZxmq^g&m;vDZC*DZ(&JYG#q9O zSW!k&dP4okA|WosP`}EBb}q|a3ey*6pRkk6Zf7MXJYhE!DEVI2mo}tlzPl(X<(wz< z$JX2b@p38={)_YvH!tZlp#gUfi zNQ>CVw``3dS$YK{RdDLS7M~~EY6-v(w0D+&(#k9KCGf!Kgp%@eL<{8Sl~{c6Tu#Xm z4LO{eyQ_Y58rc|odfAxZGJ6u7EB>Eg*z~WW{psO=oAYk!tel=7gD}m(ai16dpex{^ z?;LzxenX!ftJnpV^G-vu^15z0P!%KEpw8#E{ERt4${3sjLN+GByM zgdYnuX??8hT|IPe^{!a+^uAAn*y*~znRqR+J5kBO-_?z<*EOmmYN+Xg@q%io_3bQT zY#AA&F^Rwu(+0KjsZ5RaEbPR&|lm>6c+muLD<{i&Gw)*s9h9O zYW=9I&9w0@3chVvNv@|5x7ES)W%FABLi9+Pxd&SYt*|Yx(>Gq ztTZ(8JQK!uNJW&KPUD%?FQjM@&Ei!dbQvBBZD$1<-@A>wro;}i5-XsKCt_b=T0p9Hn6Oq5ydqL)8l5n064{DL18XffxtXph_akS|soKYL67pT~hx)wr0Sirhme$Y&} z!4zym#ZLEJ$4BTJL}}jX_QK1{^2u!!yt1s&lY`tC&WBRI0{vI@B!;;K+&;8)NK34` z+Co~7jo9YhXt{AS;~ZE^zLbLTWdYJpL22tzGTwn}&)}n_WcfuXMo*$L$e%z=jGs2f=JYB_R>QSb!K*!Xdcf0&-ef5JKuj9c}K>t66u08 zR9rhMrCNv&3oLa)hoFTlhY2jQ4MQo-s7P(qy3*p5hrJ$~)|53)OxI<-AsB9s_I}}T z0?pC77pqCMWXYQ(nz5`iiQcjIC((+$=Sg(YiV+jV2j_Xb_9%F}(t&{NAq>9aJY1FC z*zY1dP35LxryydxELVruPu zc#9`ZBxTikOsA(IyQ%`ys~k91wG_)r#!z1U%*?n~+KJwpBe=WTCn)D|!n+sU>m1sh zEdv4xVs81`YqFiH(I(x+Os<3qUp`SWx^*2Isx#3Sux_|W=gsR;gY1%NdraGF+RLWx zGi|?V2Pl3A%2PY|uVQB>DPnd9LUk!Z8^xizN)khCbqPMzStVzCtI~#2$%BRU_lOtc z^$tt)aT@!;ULt5k@Ot z3T268tEh*_7sR}7iB0Jm2J=d>e%D@`UnltgeZPo@y9!A;XE4SttQQRpHKL*6;_gXP zLz!r3X!@tYmw2cY*_A8sdCwzqh?97;*o0nXLgs;F%IIddz^1q)m-K+kk8>{{@h#S+ z>;=zmZ*5WX^?o>cZ(JdjDHP7o65&~L2J_Jz%5)}(gYB&>!Y?ITs95xp*eShGK9V%n z&ApH+M{A9BX|TbvFHjw3(F7c14|xgtevBA4%&zmmwm0KpGjkz^ z^#&LVk=@2)ie1T2mMc`r;{|K3<_STV6}9P>S?ZbK#Ox_QBGJ^NEl0v9Pah9Q_`I1O b=!+;$UMi2{TX>r&OI-GL8q+==+)4fdZLCnn diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.make_composition_space.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.make_composition_space.doctree index 63ad41c284b1ad2c65a7a58b1862bb4c511d18ab..7050c4828494d12c721d0246144ef66b3d9dde56 100644 GIT binary patch delta 116 zcmbQSk8#F6#trq%d|{62ItuD#i6Am8adR(oClk7u3fpR4bg{d_!EBnSdev*EWU$9h S$q?%is#Zsp+8imh-vt1L*&xpV delta 116 zcmbQSk8#F6#trq%d}WF1ItuDx5YlmTFLNgox|j;vYF>1)yTZY2ny7l!Yo}ze$4k+C}N0r(fDYf4P0FfCW&j0`b diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6eb7c08204d63877d0f165758526e70dcb00ba51 GIT binary patch literal 13903 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 SB}1%7s9GIWYIBE_zAFHu;~-rC delta 116 zcmdnKpK<$s#trkC`N|U2brjUYAf)5wwahb^(8Yq;R`a5Z@rVSoX`<>?ubq;?9y=vN QtVgI?9aU;`hm^i60Iwq;T>t<8 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..64ffda3eefd56ffbcf88c000ce76ca2ad1179aa1 GIT binary patch literal 35089 zcmeHQeT*bWb>F?a-MyW=+xzhOFupsx&&2lL<#yL5Hdu!Z*oQ5g!)JmIu&~c_Ju|)A z-PbccO!w^Vf^8Whz=tY^$U_juF@z*aAS5B;Baoo*Pl5d>F_D7s?R0fjy;tx3-m8zUSM|u$d!{c=@c*&hLDzOVYl~*9)$v$6CLGv%*=#*w-`>imBd$-gZJyJy2B-TClhw>H>^Y5o2s+fd ztxhYTmdrFgGYF7~-%}m4Eq-lp^}F(+VK&eAtYym6XEUL>Lazq)Zu_9U(>`QxwGXoo zEWI|cdcjho+i%*YXD&5Ku1hCxz2~m_>I>_FBmPJ)>TSQ(_oDYaq3O4~e&CP@m%8hr zjX!A85~x~eWYb#moJP|O+Dmn_ANoPR-8OscapIyS~Yu@^u}SDf0?Z`c!T z%IUPMHANXhPxh6NihTqMcme*q8vk93|BjM`AmpCIZ;yPN(7xWy=LDtL%(-ia9ggl-&wVKp@rsiizKn`>A_OrgO;q$>X5mjZILnl(&F{kFTp&m z1yDI}uE2DohNHN&+9&H!?)nLsFSHM9G5qB`V^~Zw4}+4db&?}}mJ2>B^?i9o z$ax-Md9S3z&*>z-og^;Ay`9JoOWMBAzMsVUfE25JHsN(2=M`QV8UuXDid3k)|L54! z5}*tJk+ebOe}0(%#9PE3gX~>e4F@ebBkmH^x^}8{#paSuluCQJSZQpsGcZ+KAniN| z?W}S1?B^OG2D<%DGwhq0E}BiAh>7Eur1&l!#qKc0UrQ(^{%uUtry^PpiD3$S(B&lk5vthPwK^>rV|@)>s-lT_kTSszs5#(Skv%Id3@4~36^14r zq|E-TxE-p3*sQFYZHKS&y;ZBloz+q`wfwf} zbOvlocO9buB!uf-c-SfKh6flQBE{^jSmA&MT96Fefux{oHJxRrIk?DX;ReNMV8AZP z=_trsub&XrohIad91{3rNZ_$V0+aW}^2RSI?C)sW{=|?$5Im{cPsG*6S|3x=Kh;oE zM@oun?Z2k>kVbzrwnp6=Mkp0X{ewbkJeAttlKQltDW^&M+f}vZUZZbcCBIgIW6urmenN`?n530TpI|%mT%(x#Yi-!KZqroF}_0bGKnFVkt z&fBtcs>zCCn5sz(MtS*pjC`q?z5u~ zTI0E$15W>BejB z^Yk=F!f!vyr@A98wQH(TO8_XSZ5V(f2Zp&lQj9xQDfNm=qZlW z;;XY-)X-{Fqm}4T(AuyLH{?VV73TN;59=GLRpCev#q^bH?OfqJ-$Om2uY6;i|GvI* zE$13!Z=~F<`9D;mCPje);KZWvX52d5_g=*9ibPH=#bD>d^g0w8 zXFhS8zVdw67gatIF0a;Co^JzD<#Impd`LH6z+80my49eqC>RTv|CVC4^vo$x$e%eL?NxP8m+`b3R=Zr9eWZ%OMJy^d-+4S2Sh`aUNnCQ_ilY7^Pv<~uIcDB!>ZrX zQyi(nr$ozC6&9{ReXJU-M1_LZv!Ft7_$;U}e+c&_eIvCh9O(_dp|3pO8w`Ule+c(& zedQbD{D=C=wVZ2^t?m3~wrRWCk=Wjb^5YNT4pgI-pj%KYk8by$F#t&~TUQ&w37ljY z&~}X@@p_Y9Ciz+yy_fqFG)u0wc9J3eC#0lvXfoFUwv9hXF@99fjH2EA@z#fh zL}h0!2*e+8Gt~aP8nwis32Ma%9CO4acr4vt|1NK9dLxYwWr ztv4GN&Og?YDDY;YayRYGXrESW^V|4?#OchGuH&uZ%>)a@SSt2r&y!opQv1nJut@qb1-uqh?m0Tw+; zQT~dap^+}^w2-QFVI%0Bt41$zVuD^V@Wymv5tpUC*e~o3;_M~L5>HZDf1_1a zdPA4ob|$}Qe;MUdv%L}YzFCc4;#mZ}VhxY$S%e%)dzLSX=8jyF`kB6&`Q1}gxkj0n z=5EoBm0R#uDtp(oZiF#f*)^0;DZ7ATG&C-FEBQH8jh_Szf}ah8;YB$c3l~T4j4!_$ zHjJL*vF;|1E8kOY(#u7Qo{@u_JM@+3_hh4?sohHOdOgjNN7xYyS(qShT=VI==kMzf`^QVnIjaJNFCJs}2p$u&O6w z5fSsZxawFJC>(CUcE>;K2&uAD-?2x+^3gYTEqo^&|y zI1CIU$xw|HRYN^zX-vM-GrP7r%6`#Z2ueiwoQU=mF?Ax?(V)OjW7+Q+CI!q#N0@3o`_=~5SGi|D|(Wz zqM{rnvM8&)Iu7oNf^`q1lBB$^DkX1&avyXLbFp*S(Rd+gK*MjX4{?dtI~oAH6&5#e zmZpVuMD4YQio4Sw7JsL>_gd^VRU@*D`MbLm{9}6YUmg?6w|>(<{71A0{OnnTX)YLd z0K%5pw2h$OKHBNyCe${#8FV!g1A_fCg-|Jc3fWn>- zvIx#X8-b_^(Halyv4TZDnBbAN9t7JnJ-Cma-&s*4%+i5uQGcIKlu)_76jV+MsJsk+ z0FeW1i!rYZy(w7@pwaE|*dD7^438$*p146)yK9?)lUgUp%p4v)L||DGjFt{wa^DPg(j%`&)gUz93FbsExdKjU zq2))OxldLRQv_Gdz+Fy>(p<=NfL%ODmHkN-UjDF*%Hk+C_anTNf;Y)n35LH|h2hVa zVK~8FV;-8^r;s5sJ~fch{Z~pa zYjv9hr~j(L%a2hA=WA#pN%IySf5=O16ix@WR}kJl6dIf11WtnCO@Py7VCUI`(~VUm zG8#_FX1cVkC&}|C7Gj>aAu;*K<2qdQ$b$^vA5&`q6Xwr9WHi0Lr6QIb~qqPNSx->K2i+I*tnN$jCmx53>2-SMc@Jiu$s{W<=3m>v zw3GisX9wZ`;shUc!g-t@H$?j#&qhZNi35oEG?XTeJ?o8qD+n<=Olp>sNt$W$R>3o~Zaw9acV`SdnhsHV(&Q>?5wt5%0tAtEHIXqM`}LXkdG8Wm$! zO_I>~$5LpGW~5(7p_~~hC95#g%}A%X-Z^jSo=bTFzY;x3et(dmQ9Kw^W^Ui-{1#`; zpLTvvv{KoMQjzDm*|c1W8Butyp-}muo8YdDh6`)8dvv4M`P(>mU z>NFF}@`IsUt1xm)8Pz01w-db7hK6o$sKV{*%5a+u-2}Ir0HpiDPH7;qEyt4smFTDR z2kTWtG8##hX8ey;;pLrW)RTbe9lVqRrb-O|UKNIay9~n#o&>|2fTs_Gozi$JbWESG zB9YN>D({%SQH7DOl~GNCrLXc*3YN-q`yW-f{kJmQCO{J0ZUT^g0Cvg)sc6o(uU4VY z&*?&oJ>QkpDd+}fGK?kFl{1-+VVQW4UigM8yj+JuV~=nWv@Y;c3R)#&B^bV|3d47n zVK@P-V0aS%dpFoA4Oq72tn5kgQ|i#GB9hUrZ(2;)az^^<8(=DalpMXK3P%r>QBs1c zH}O&ms$ydp2{oG&vN8`3eAXDGT7WXb=IG(0Tq4Y{i{;ykJf*(96+utyT0)BBTtG|gr^_* z&Fpf)rmrzbtIV=mj6P*C>F-9&z)LSCvCpMWh{)N*kUkP2XZh%!%oZGjc7V`60_+6{ zY`^cdj0T~y>92Hff_2L_)704pyZU{YNpxpi~6v4 zOuqvenIIY8x+6_&tOb$(=8P9-&0oa%nP{$D#F6||Wd2YU<}X8`vBx@zdl$?X8(8Jl zoGZYN-n|Q$qNz+TJNF>6c24=~@Bq=WN@vZO-k-Mufa;l7Kk^#djc`0SUkgzp2 zw{{h7TV=RSfF!ux1R%L!=h*|&JE}-z93VwUmSj~^c#_Hct1$B3GO9^{G~lIDKq|}a zC#rD!u`=8yKoZ<;0+2ohcFF^(X!iZpDiXAAqYFUN=FX_sTPqN5GEWl_tPRxzZur&+-30q0lEt z3(3l^SoMmhzkLL@N_%?t7!GkU=Hr82&fNVfu@T7k5S@XW<9Kitc{Q`=AiQJIz(sW} z@_)++2T|Rf2*nC;f1OzGA(u|kT)51s=QL9}qhwro#~0Z;erKU$tsux`)yj36nsa78 zTgpHqNBL=Z{ zZG*ew)Mel}(N@Yk4QV0AJLTkAKl7XcTUvgWudyuulOq&2Wcm79ZzKU9bYF-+Iyg|R z*NLnYU)OKwYdt8kUdFS!hwvv}^N)f9-6KjGn|V!iq)G(*=Ii-nS+>Q@q_PN-6v{%8kvw_>;4Jl9E;M z$aMmCgH8m=%~5LcL`qO}!|{W{*Z zbPZ}eT@rIX?6F%Ys(9@9>b0D3xO|uG{wMKS&|0vF8`lz7eYvWJtB>*>?jtNl(Rx-> zdN(5?tm96CD8FQckQDED6VIA9lV3k}EVeXmyksfdeDhEeoAJ4{9c#0WHt1UVf5TSB z-um1#$+?<$PeO#TU9i1FY{dq?DGxJH%f){POVTe z^ut=c z1+v6F*(NFE^W!Vz3(ulL{<6A4zVaL?Dr2HC_XY1oIOTgNf!Yx?bW z`rs3G@W>IP+w+?i?vTgch;^gWZ+F*mfQ)hENbE(mdBi{&1TUSNmY?*lx0fBR5a9=P&k^jGy-+M|8+ckYw83@#C~OAJs(k@bx>y znl!(t#eOO8Mh@CLW6eo*i_5VW;!bUW55xK4JLIQxug*5@YY`!N^ems()^HfkR?$n@ z$1%Cxq60I=(SE;&E6MHSY=4NQm;lFuK%#ZPWd-;C27`xi=Fe2sH`#6@PgZpSiU8mX3IECMdbDC|B8XpXB`;Xu3hmIF4Vzrx&=xGhu^y}!B z8+nukoA&!*w;v8p+q+M**%hl3-4lcdEC(QL%xrfDr*Zo_CrIaPp2uS?dhGW+Jnf=$ zg&MdBo!)}*lu!uUx9t022Y2QuFHcRfT>%b3fnC(saL!MAfRs5359`t)ePmAosyrxC zEDy`^NU2|NLc7j~)nFbJqXM1@JEMf1IIM*3>G7;p3*y_tYPN|xeWJ%Hw%1y7Ahpm8 z`+-cIYFUl`3X0Fsa2b%H!%Hl)jg(o4ziCmU29L5irvn+)tqu;OB4DxEez?4F(*i%B z=}`J*-RkxHUL9XHT3B&|#EI1=E=<`iB(2mk#cLU`!}5SV7okgcIo5RdPtlO*Vac?t(Nsb3~_ z1FPTi>uYU-)E=C?;0G3BN@Yook|r){a`2@HM}VQOddmsShDQyFxSWYi17@}pjS1ih z#5LzYO_Z&^?09G#O#A@-0+GP#aa*)HR9g!w-_bKKKvm)q5Z%j9nDwmA3V`T2ZJaxD z*Pd(HT-WN#&{&Q{N@o!H&JF{U?RsLKNo;R)OZ!E(Cs^-<=33o$R%{Rd@jJcgSRb~NUxihV?!tN$=e5bJ zvFe_WB>*AX!}!t$exN>KZ;&z>^?gmtmj$$_&MOaWRU{446f6=LMR*}haN z-z!PUsBJlUpygPn#k0>)qWJB;3^wlGjDG?)OUb++Lt*~nVqhOZ@4(-qBfHtYz0Y>3 z+T+#j!eKa~O92UyLPi?r6MU;Fge;y4ZMPe~mjHq%?$0D9xo1-~&c;-Ep?#_P;ct5( zIrvMnbwzK`&B28<5jsq=W;>cbPVnM-K{qmUGD?3Oa(LU|H82N!Xn?m9bN%x>FdbDiy>+{v|q!lF#gyXdyAmqb%n*DuDw-IblyGVt~w zAuU}vQxqgY&_h&^OfM2q4-xdxL(of4p&^D3MlZn-Fm3wDpz*Yw(U#POn!>?f6Y>G7-u7Sd@gw zim2Gt*B3cQde(Fg{eJ9>1cPe6CiCrDuF`8UncU;ru$C)ZTRNz$Br##DB#9o6-e2j4 z%s{}93zKk64FvFEMGP*YtJ1S}f;X9DhcZrYda$wtU>xsN)xa$l#O!K*JBti-%l0_r zYZKZp6_$^m4zB0Oa# z=FBjXLt((xK29fnT<1#h5#N^X#i8o^@X45iuZD+ty`{zmkb$!eZai?%B3Nt&*JMLq znG=0EcJ4cmnOS+@peaRcQM^gQI(*(Y$J!-L18h);|qgZE$ z;&hSYNf9`Tck7CviD}ShS7QtMoIHki*>KY9w6B(+T_y0DcRy#f;gUBWE~K*ulWb14 z;ic>oaK(VD20Y;N{2l7Tm%hym{N8s2o}_~xC&BOthwBUBwZVO4a2x!2kiap&olEdI zQXt`?f2UcYs1N=sSV~7NCQ-HpY80L049@y1IJ1CXj^$GG*JGAlfCY+<*Z=XLJ=Ny) z4Mk7X?>O^_hE?O3t$InYq##?6=^>|iUwJxiH#g6w>ty=?r^?pjNYf2#sXz%hp6S3B zn|V$t!NTV4aER_C5eJ*wHn!4m+}1n|fL6NAsQ#jVcNw#D#EI Yh_D=${!tVbm{esK-Q|j+*L9qMpW(W?1poj5 delta 859 zcmaKqO=uHA6vs1@gxwrcR%kbxG@DkdCNW7PO{^e|Mh&fzO*XNK{jii+Bg&p+Kk9?m{sa`xIN-N`y5puDOSf;@Y=Fbat}TX2-N>Q+I9tS)JTjT!8TM#* z62l0V##HnG)|0`WGGj8yE~P}bUfC?WQ?iiK1}?-AD#7(+60MT7$U&oi`>M=WP^kK- zTCSF=Uj02ZqC+qsuA#TIF1Qm6+JM7}AcRxj&{rC>eQC0`8IaBkAbEIPXP}DUKS!*f!_-vz11K!-VZC;F3S%22P|iK7;^JC zWnd+B)+k{)AbH7)=Zw73P96u&@&B+QP0nEM1b%E_Jk%Lw@a9JFOJn_VyZ)bC@W5^# zIMBCuV)J;>TG}BohZcYeJs;Rm|S{fZ9 z4MIKRg79$*xJ3qkqBigmlSpD1e3Q?S1GXlQI(uxoA&ZulA(bV16fO<|n!2|yMC1y4 zt*Fl3y1Q7cDk1IZRKbjHXpNcg<|A>UDlxLC7285#zDRRaVo`+(E2`X2+^WR1Uxh2^ EFZ2%*n*aa+ diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.pretty_json.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.pretty_json.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6d7c2d5ecd4a00e37e10c72a05ef3c1f9ab544db GIT binary patch literal 5648 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 literal 0 HcmV?d00001 diff --git a/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.doctree b/docs/libcasm/composition/2.0/.doctrees/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4b03d633c95f38605ab531523ad453eca204810d GIT binary patch literal 18246 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 - Overview: module code — libcasm-composition 2.0a3 documentation + Overview: module code — libcasm-composition 2.0a4 documentation @@ -38,7 +38,7 @@ - + @@ -384,6 +384,8 @@

All modules for which code is available

diff --git a/docs/libcasm/composition/2.0/_modules/libcasm/composition/_formation_energy_calculator.html b/docs/libcasm/composition/2.0/_modules/libcasm/composition/_formation_energy_calculator.html new file mode 100644 index 00000000..a665d9da --- /dev/null +++ b/docs/libcasm/composition/2.0/_modules/libcasm/composition/_formation_energy_calculator.html @@ -0,0 +1,679 @@ + + + + + + + + + + libcasm.composition._formation_energy_calculator — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for libcasm.composition._formation_energy_calculator

+import numpy as np
+
+from ._composition import pretty_json
+
+
+
+[docs] +class FormationEnergyCalculator: + R"""Calculate formation energies given a choice of reference states. + + For a :math:`k`-dimensional composition space, + :math:`k+1` reference states are required to determine the + parameters :math:`h_0, h_1, \dots, h_k` needed to calculate + energy references according to: + + .. math:: + + \newcommand{\config}{{\mathbb{C}}} + e(\config_i) = h_0 + \sum_{j=1}^{k} h_i x_j(\config_i), + + where :math:`e(\config_i)` is the reference energy of configuration + :math:`i`, and :math:`x_j(\config_i)` is the :math:`j`-th element of the + composition of configuration :math:`i`. + + """ + + def __init__( + self, + composition_ref: np.ndarray, + energy_ref: np.ndarray, + ): + """ + + .. rubric:: Constructor + + Parameters + ---------- + composition_ref: np.ndarray[np.float[k, k+1]] + The compositions of the :math:`k+1` reference states + as column vectors of a shape=(k,k+1) matrix. + energy_ref: np.ndarray[np.float[k]] + The reference state energies, normalized per primitive cell. + """ + if len(energy_ref.shape) != 1: + raise ValueError("energy_ref must be a 1D array") + if len(composition_ref.shape) != 2: + raise ValueError("composition_ref must be a 2D array") + k = composition_ref.shape[0] + rank = np.linalg.matrix_rank(composition_ref) + if not rank == k: + raise ValueError( + f"composition_ref must have rank equal to number of rows ({k}), " + f"but found rank={rank}" + ) + if not composition_ref.shape == (k, k + 1): + raise ValueError(f"composition_ref must have shape ({k}, {k+1})") + if not energy_ref.shape == (k + 1,): + raise ValueError(f"energy_ref must have shape ({k+1},)") + + self.independent_compositions = k + """int: The number of independent composition axes.""" + + self.composition_ref = composition_ref + """np.ndarray: The compositions of the :math:`k+1` reference states + as column vectors of a shape=(k,k+1) matrix.""" + + self.energy_ref = energy_ref + """np.ndarray: The reference state energies, normalized per primitive cell, as + a 1D array of shape=(k,).""" + + # \vec{e} = h_0 + [x_1, x_2, ..., x_k].T @ h_{1:k} + # + # [ e_1 ] [ 1, ... (\vec{x}_1).T ... ] [ h_0 ] + # [ e_2 ] = [ 1, ... (\vec{x}_2).T ... ] @ [ h_1 ] + # [ ... ] [ 1, ... ] [ ... ] + # [ e_{k+1}] [ 1, ... (\vec{x}_{k+1}).T ...] [ h_k ] + + X = np.hstack((np.ones((k + 1, 1)), composition_ref.transpose())) + self.h = np.linalg.solve(X, energy_ref) + R"""np.ndarray: The parameters :math:`h_0, h_1, \dots, h_k` needed to calculate + energy references.""" + +
+[docs] + def reference_energy( + self, + composition: np.ndarray, + ) -> np.ndarray: + """Calculate the reference energy at a composition. + + Parameters + ---------- + composition: np.ndarray + The composition of one or more structures. This may be a 1d + array of shape=(k,) representing a single structure, or a 2d array of + shape=(k,n) representing :math:`n` structures, where :math:`k` is the + number of independent composition axes. If a 1d array is provided, the + result in a scalar. If a 2d array is provided, the result is a 1d array of + shape=(n,). + + Returns + ------- + reference_energy: np.ndarray + The reference energy at the input composition(s). + """ + return self.h[0] + self.h[1:] @ composition
+ + +
+[docs] + def formation_energy( + self, + composition: np.ndarray, + energy: np.ndarray, + ) -> np.ndarray: + """Calculate the formation energy of a configuration. + + Parameters + ---------- + composition: np.ndarray + The composition of 1 or more structures. This may be a 1d array of + shape=(k,) representing a single structure, where :math:`k` is + the number of independent composition axes, or a 2d array of shape=(k,n) + with the composition of :math:`n` structures as columns. + energy: Union[float, np.ndarray] + The energy of 1 or more structures. This may be a scalar + with the energy of a single structure, or a 1d array of shape=(n,) + with the energy of :math:`n` structures. + + Returns + ------- + formation_energy: np.ndarray + The formation energy of the configuration(s). + """ + if isinstance(energy, float): + if composition.shape != (self.independent_compositions,): + raise ValueError( + "If energy is a scalar, composition must be a 1D array " + f"with shape ({self.independent_compositions},)" + ) + else: + if energy.shape != (self.independent_compositions,): + raise ValueError( + "If energy is an array, " + f"it must have shape ({self.independent_compositions},)" + ) + if composition.shape[0] != self.independent_compositions: + raise ValueError( + "If energy is an array," + "composition must be a 2d array with shape " + f"({self.independent_compositions}, n)" + ) + return energy - self.reference_energy(composition)
+ + +
+[docs] + def to_dict(self): + """Represent the FormationEnergyCalculator as a Python dict + + Returns + ------- + data: dict + The FormationEnergyCalculator as a Python dict. Note that the + composition_ref is transposed to keep reference state compositions in + a single list. + + Example: + + .. code-block:: Python + + { + "composition_ref": [ + [0.0, 0.0], # Reference state 1 composition + [0.0, 1.0], # Reference state 2 composition + [1.0, 0.0], # Reference state 3 composition + ], + "energy_ref": [ + 2.0, # Reference state 1 energy + 1.0, # Reference state 2 energy + 0.0, # Reference state 3 energy + ] + } + """ + return { + "composition_ref": self.composition_ref.transpose().tolist(), + "energy_ref": self.energy_ref.tolist(), + }
+ + +
+[docs] + @staticmethod + def from_dict(data: dict): + """Create a FormationEnergyCalculator from a Python dict + + Parameters + ---------- + data: dict + The FormationEnergyCalculator as a Python dict. Note that the + composition ref is expected to be transposed to keep reference state + compositions in a single list. See :func:`to_dict` for the expected + format. + + Returns + ------- + calculator: FormationEnergyCalculator + The FormationEnergyCalculator object + """ + return FormationEnergyCalculator( + composition_ref=np.array(data["composition_ref"]).transpose(), + energy_ref=np.array(data["energy_ref"]), + )
+ + + def __repr__(self): + return pretty_json(self.to_dict())
+ +
+ +
+ + + + + +
+ +
+
+
+ +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_modules/libcasm/composition/_methods.html b/docs/libcasm/composition/2.0/_modules/libcasm/composition/_methods.html new file mode 100644 index 00000000..52d67984 --- /dev/null +++ b/docs/libcasm/composition/2.0/_modules/libcasm/composition/_methods.html @@ -0,0 +1,772 @@ + + + + + + + + + + libcasm.composition._methods — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for libcasm.composition._methods

+import sys
+from typing import Optional, TextIO, Union
+
+import numpy as np
+from tabulate import tabulate
+
+import libcasm.casmglobal
+
+from ._composition import (
+    CompositionCalculator,
+    CompositionConverter,
+    make_standard_origin_and_end_members,
+)
+
+
+
+[docs] +def make_normalized_origin_and_end_members( + origin_and_end_members: np.ndarray, + tol: float = libcasm.casmglobal.TOL, +) -> np.ndarray: + R"""Normalize compositions so that one unit along a parametric composition + axis corresponds to a change of one site per unit cell in the occupation. + + See :class:`CompositionConverter` for details on definitions. + + Parameters + ---------- + origin_and_end_members: np.ndarray + A matrix with the origin, :math:`\vec{n}_0`, as the first column and + end member compositions, :math:`\vec{n}_0 + \vec{q}_i` as the + remaining columns. + tol: float = :data:`~libcasm.casmglobal.TOL` + Tolerance for comparison. Used to find composition axes such that the + parametric composition parameters are non-negative. + + Returns + ------- + normalized_origin_and_end_members: np.ndarray + A modified `origin_and_end_members` matrix. The origin (first column) is not + modified. The end member compositions (subsequent columns) are modified so + that a unit distance along each composition axis corresponds to a change of + one site per unit cell in the occupation. + """ + M = origin_and_end_members + origin = M[:, 0] + for i in range(1, M.shape[1]): + if not np.isclose(np.sum(M[:, i] - origin), 0.0, atol=tol): + raise ValueError( + "Invalid origin_and_end_members: " + f"sum of column {i} sum does not match sum of origin (column 0)." + ) + if np.allclose(M[:, i], M[:, 0], atol=tol): + raise ValueError( + "Invalid origin_and_end_members: " + f"column {i} is the same as the origin (column 0)." + ) + delta = M[:, i] - origin + inc_sum = 0.0 + dec_sum = 0.0 + for dx_i in delta: + if dx_i > tol: + inc_sum += dx_i + elif dx_i < -tol: + dec_sum += dx_i + + M[:, i] = origin + delta / inc_sum + return M
+ + + +
+[docs] +def make_standard_axes( + allowed_occs: list[list[str]], + components: Union[str, list[str], None] = None, + vacancy_names: Optional[set[str]] = None, + normalize: bool = True, + tol: float = libcasm.casmglobal.TOL, +) -> tuple[CompositionCalculator, list[CompositionConverter]]: + """Make standard composition axes for a set of components + + Parameters + ---------- + allowed_occs: Optional[list[list[str]]] + For each sublattice, a vector of components allowed to occupy the sublattice. + The order in which components are listed on each sublattice determines the + `occupation_index` in occupation vectors correpsonding to that component + species. + components: Union[str, list[str], None] = None + The requested component order in the composition vectors. If None, the + components are listed in the order found in `allowed_occs`. If the string + "sorted", the components are sorted alphabetically. If a list, the components + are listed in the order given in the list. + vacancy_names: Optional[set[str]] = None + Set of component names that should be recognized as vacancies. An exception is + raised if more than one component is a vacancy. + normalize: bool = True + If True, normalize the composition axes so that going one unit along the + composition axis corresponds to a change of one site per unit cell in the + occupation. If False, one unit along the composition axis corresponds to a + change from the origin to an extreme end member composition. + tol: float = :data:`~libcasm.casmglobal.TOL` + Tolerance for comparison. Used to find composition axes such that the + parametric composition parameters are non-negative. + + Returns + ------- + calculator: :class:`CompositionCalculator` + A composition calculator object + standard_axes: list[:class:`CompositionConverter`] + List of :class:`CompositionConverter` for the standard composition axes + """ + + ## Determine defaults + + # components + unique_components = [] + for sublattice in allowed_occs: + for x in sublattice: + if x not in unique_components: + unique_components.append(x) + + invalid_value_error = ValueError( + f"Invalid value for `components`: {components}. " + f"May be None, or a list of " + f"components, or 'sorted' to sort components alphabetically." + ) + + if components is None: + components = unique_components + elif isinstance(components, str): + if components == "sorted": + components = sorted(unique_components) + else: + raise invalid_value_error + elif isinstance(components, list): + if sorted(components) != sorted(unique_components): + raise ValueError( + f"Given `components` ({components}) do not match the components " + f"found in `allowed_occs`: ({unique_components})" + ) + else: + raise invalid_value_error + + # vacancy_names + if vacancy_names is None: + vacancy_names = set(["va", "Va", "VA"]) + + _standard_origin_and_end_members = make_standard_origin_and_end_members( + components=components, + allowed_occs=allowed_occs, + tol=tol, + ) + if normalize: + _standard_origin_and_end_members = [ + make_normalized_origin_and_end_members(axes) + for axes in _standard_origin_and_end_members + ] + + calculator = CompositionCalculator( + components=components, + allowed_occs=allowed_occs, + vacancy_names=vacancy_names, + ) + standard_axes = [ + CompositionConverter( + components=components, + origin_and_end_members=axes, + vacancy_names=vacancy_names, + ) + for axes in _standard_origin_and_end_members + ] + return (calculator, standard_axes)
+ + + +def _print_table( + data: list[dict], + columns: list[str], + headers: list[str], + out: Optional[TextIO] = None, +): + """Print table from data in a list of dict + + Parameters + ---------- + data: list[dict] + Data to print + columns: list[str] + Keys of data to print, in order + headers: list[str] + Header strings + out: Optional[stream] = None + Output stream. Defaults to `sys.stdout`. + """ + tabulate_in = [] + if out is None: + out = sys.stdout + for record in data: + tabulate_in.append([record[col] for col in columns]) + out.write(tabulate(tabulate_in, headers=headers)) + out.write("\n") + + + + + + + + +
+ +
+ + + + + +
+ +
+
+
+ +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.rst.txt new file mode 100644 index 00000000..887b55cf --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.rst.txt @@ -0,0 +1,6 @@ +allowed\_occs +============= + +.. currentmodule:: libcasm.composition + +.. automethod:: CompositionCalculator.allowed_occs \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.rst.txt new file mode 100644 index 00000000..4e2afd44 --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.rst.txt @@ -0,0 +1,6 @@ +from\_dict +========== + +.. currentmodule:: libcasm.composition + +.. automethod:: CompositionCalculator.from_dict \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.rst.txt index ef87c28d..dfea2893 100644 --- a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.rst.txt +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.rst.txt @@ -15,11 +15,15 @@ CompositionCalculator :toctree: :template: custom-function-template.rst + ~CompositionCalculator.allowed_occs ~CompositionCalculator.components + ~CompositionCalculator.from_dict ~CompositionCalculator.mean_num_each_component ~CompositionCalculator.n_sublat ~CompositionCalculator.num_each_component ~CompositionCalculator.species_frac + ~CompositionCalculator.to_dict + ~CompositionCalculator.vacancy_names diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict.rst.txt new file mode 100644 index 00000000..e8b6409e --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict.rst.txt @@ -0,0 +1,6 @@ +to\_dict +======== + +.. currentmodule:: libcasm.composition + +.. automethod:: CompositionCalculator.to_dict \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.rst.txt new file mode 100644 index 00000000..68c7913a --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.rst.txt @@ -0,0 +1,6 @@ +vacancy\_names +============== + +.. currentmodule:: libcasm.composition + +.. automethod:: CompositionCalculator.vacancy_names \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.rst.txt new file mode 100644 index 00000000..be91a598 --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.rst.txt @@ -0,0 +1,6 @@ +composition\_ref +================ + +.. currentmodule:: libcasm.composition + +.. autoattribute:: FormationEnergyCalculator.composition_ref \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.rst.txt new file mode 100644 index 00000000..c203b9a2 --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.rst.txt @@ -0,0 +1,6 @@ +energy\_ref +=========== + +.. currentmodule:: libcasm.composition + +.. autoattribute:: FormationEnergyCalculator.energy_ref \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.rst.txt new file mode 100644 index 00000000..afa1b995 --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.rst.txt @@ -0,0 +1,6 @@ +formation\_energy +================= + +.. currentmodule:: libcasm.composition + +.. automethod:: FormationEnergyCalculator.formation_energy \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.rst.txt new file mode 100644 index 00000000..11a44d53 --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.rst.txt @@ -0,0 +1,6 @@ +from\_dict +========== + +.. currentmodule:: libcasm.composition + +.. automethod:: FormationEnergyCalculator.from_dict \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.rst.txt new file mode 100644 index 00000000..c0d3a7ac --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.rst.txt @@ -0,0 +1,6 @@ +h += + +.. currentmodule:: libcasm.composition + +.. autoattribute:: FormationEnergyCalculator.h \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions.rst.txt new file mode 100644 index 00000000..184bbeab --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions.rst.txt @@ -0,0 +1,6 @@ +independent\_compositions +========================= + +.. currentmodule:: libcasm.composition + +.. autoattribute:: FormationEnergyCalculator.independent_compositions \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.rst.txt new file mode 100644 index 00000000..007915ac --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.rst.txt @@ -0,0 +1,6 @@ +reference\_energy +================= + +.. currentmodule:: libcasm.composition + +.. automethod:: FormationEnergyCalculator.reference_energy \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.rst.txt new file mode 100644 index 00000000..d5778558 --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.rst.txt @@ -0,0 +1,39 @@ +FormationEnergyCalculator +========================= + +.. currentmodule:: libcasm.composition + +.. autoclass:: FormationEnergyCalculator + :show-inheritance: + + + + .. rubric:: Methods + + .. autosummary:: + :nosignatures: + :toctree: + :template: custom-function-template.rst + + ~FormationEnergyCalculator.formation_energy + ~FormationEnergyCalculator.from_dict + ~FormationEnergyCalculator.reference_energy + ~FormationEnergyCalculator.to_dict + + + + + + .. rubric:: Attributes + + .. autosummary:: + :nosignatures: + :toctree: + :template: custom-attr-template.rst + + ~FormationEnergyCalculator.independent_compositions + ~FormationEnergyCalculator.composition_ref + ~FormationEnergyCalculator.energy_ref + ~FormationEnergyCalculator.h + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict.rst.txt new file mode 100644 index 00000000..9481279f --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict.rst.txt @@ -0,0 +1,6 @@ +to\_dict +======== + +.. currentmodule:: libcasm.composition + +.. automethod:: FormationEnergyCalculator.to_dict \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.rst.txt new file mode 100644 index 00000000..310cc0ff --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.rst.txt @@ -0,0 +1,6 @@ +make\_normalized\_origin\_and\_end\_members +=========================================== + +.. currentmodule:: libcasm.composition + +.. autofunction:: make_normalized_origin_and_end_members \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.rst.txt new file mode 100644 index 00000000..b30411b5 --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.rst.txt @@ -0,0 +1,6 @@ +make\_standard\_axes +==================== + +.. currentmodule:: libcasm.composition + +.. autofunction:: make_standard_axes \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.pretty_json.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.pretty_json.rst.txt new file mode 100644 index 00000000..37856893 --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.pretty_json.rst.txt @@ -0,0 +1,6 @@ +pretty\_json +============ + +.. currentmodule:: libcasm.composition + +.. autofunction:: pretty_json \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.print_axes_summary.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.print_axes_summary.rst.txt new file mode 100644 index 00000000..7d0f4d2a --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.print_axes_summary.rst.txt @@ -0,0 +1,6 @@ +print\_axes\_summary +==================== + +.. currentmodule:: libcasm.composition + +.. autofunction:: print_axes_summary \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.rst.txt new file mode 100644 index 00000000..540034ce --- /dev/null +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.rst.txt @@ -0,0 +1,6 @@ +print\_axes\_table +================== + +.. currentmodule:: libcasm.composition + +.. autofunction:: print_axes_table \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.rst.txt b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.rst.txt index 00d5e0b8..3dc24182 100644 --- a/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.rst.txt +++ b/docs/libcasm/composition/2.0/_sources/reference/libcasm/_autosummary/libcasm.composition.rst.txt @@ -21,8 +21,13 @@ make_composition_space make_end_members make_exchange_chemical_potential + make_normalized_origin_and_end_members make_null_composition_space + make_standard_axes make_standard_origin_and_end_members + pretty_json + print_axes_summary + print_axes_table set_occupant @@ -38,6 +43,7 @@ CompositionCalculator CompositionConverter + FormationEnergyCalculator diff --git a/docs/libcasm/composition/2.0/_static/documentation_options.js b/docs/libcasm/composition/2.0/_static/documentation_options.js index eae931a0..f2a74f02 100644 --- a/docs/libcasm/composition/2.0/_static/documentation_options.js +++ b/docs/libcasm/composition/2.0/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '2.0a3', + VERSION: '2.0a4', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/libcasm/composition/2.0/genindex.html b/docs/libcasm/composition/2.0/genindex.html index 3b67d6c6..34a1795c 100644 --- a/docs/libcasm/composition/2.0/genindex.html +++ b/docs/libcasm/composition/2.0/genindex.html @@ -7,7 +7,7 @@ - Index — libcasm-composition 2.0a3 documentation + Index — libcasm-composition 2.0a4 documentation @@ -38,7 +38,7 @@ - + @@ -366,18 +366,25 @@

Index

| E | F | G + | H | I | L | M | N | O | P + | R | S | T + | V

A

+
@@ -429,9 +440,21 @@

E

F

+

G

@@ -442,8 +465,20 @@

G

+

H

+ + +
+

I

+ - + +
+ +

R

+ +
@@ -559,7 +612,21 @@

S

T

+
+ +

V

+ +
diff --git a/docs/libcasm/composition/2.0/index.html b/docs/libcasm/composition/2.0/index.html index 5db4c90c..43d32e3c 100644 --- a/docs/libcasm/composition/2.0/index.html +++ b/docs/libcasm/composition/2.0/index.html @@ -8,7 +8,7 @@ - libcasm-composition — libcasm-composition 2.0a3 documentation + libcasm-composition — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + diff --git a/docs/libcasm/composition/2.0/installation.html b/docs/libcasm/composition/2.0/installation.html index dbead3c3..cb58ff64 100644 --- a/docs/libcasm/composition/2.0/installation.html +++ b/docs/libcasm/composition/2.0/installation.html @@ -8,7 +8,7 @@ - Installation — libcasm-composition 2.0a3 documentation + Installation — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + diff --git a/docs/libcasm/composition/2.0/objects.inv b/docs/libcasm/composition/2.0/objects.inv index e25f7708401b4e9f35857afde1cedeb5c8f12f53..6f1855438cde44130a5a2dbfc994eebe4c41c1f9 100644 GIT binary patch delta 1483 zcmV;+1vL7g3BC-Fg@2mMvZFQ-hWGsxU6tATOtPKrR8o~iswU0@P%_9i8Eyr5<~UCu zFvdtAFc$rv9kfLE*8+6?llTy-Dt!y{w8*Qtj`NI*>z6c-E{Wz}xztBp>MYcsldk6H zKwav*x}>Qpuf5TH{Ow$)$uFIQ-6!6WtIpTq`m0L9OQPz$Y<~lXiK;68%_pwYXGilA z#+yo#{HKnBJPfN_W9a&vN0Lxx1Rug%jZ9}Xh;Q)kLw79mG>GD`#=t$?`>>^2WkGgH z1Fgby@W>NGIup!?I}57Ip}E9>_TIh7KBzHe+OaBh80#uHmMX+>nh|^m>m2y++@1Sy z{ZOIG!fTMJRDXlI9V^6o#ytC>%UVm0AHB=hA>P!xZ1Y%-J$NuuIE!@A z<}J|_i^*A)1b&P9kv}}Gb6M;-J$%MKcpX;iM5Ry*cVC6 z)jA*eR`qX7z-n~tdztEw23@sRzh}BUUBz|_XZ?EOn6-k2r^QosGyESewU$O4#qveg zHv^n@2!G=XdhAPr&ezt@aeX9jVyV@`iV(hxXXsl$`(iCEZ(y{3%ba-LoGQmF1+;&{oz+mz4?*z~si9jEHMzRkenrhg&Z)0OI4)jF-VGt7Bj!(&VvszQZY zie~J01pQR=$B2LD#wI(Zw8;p|z| zxPO^xwXGQ3{YeBL`&`XXt3#qi32q*j<5!|%Q{^0+PC9F+w(nfk(U(LWbkdI1z4ca) z|7OW*W1!e$5Q~sjslXJt#0I-pML?fvxp$NCrA<#VHKMe0tloaX^alldAKKe z85JZ0dvk&xw}ci~L9$sAa`8+diL0|9saeu5?(YaF+rp$V^Ky{y#nO@?lA1`#*tC$e zDh!f?x$DFC8^S2YApBEJ8e1k3+Qt!tw|0iuRYH=QGz9r$dByD&$&1wx(6~{1UVktL zNW-a@SQI*pyNK%he%doX?)yfz<&$6T2!)5 zSuKyPgiy%Ba*`TREm7q**omT&O$!O?BR7IB$}V}Xl*A;JBKS@f9lOg&K!+&-Jr=U@ z*h&C_rU>{G{U<-GMKDdLM0)Flqr9#z$*My|@|)M4@v^#1?= delta 1066 zcmV+_1l9Y#44?^+g@2jPj+-zL#_xWLk=kpv?X}mQdZ^T<4}iSJNl-B$4AtiC3rkq+ zU|3@2>n;An%x}i=82shgvy#?4snS%X&6=z%sJebNW!mPNK2xnvy4Ho#pYmbmr$n|* zX`wYhA{x_7K{X@4z!iSZk>InX?WG0Z4* z(b(5i=;l(UoJf=X7&@b6krb^-v{aYm%@ziA!C4G+s zK8IzUoij}82Gh|@(4_e;A{cMy=0%&NDlrAycd?rhnt#u*t9a)BQim3N?V|?PB93>p z!3I97@wseD+&j?C_BvJaz~#+>`}Su01=54?^H0_T^Ed0}kLED>SvN_kR9ng6PU6%S z>UAqcVY=4Vm)poc`n7UpO6L8|ioM!K8@r!j$?_JSsUxwKRGN$C-tGpL>Dz`YCyvD} z{$JEZ7Jp|amE953)$2^=Ts+GjHt-c~p2HR_YU45Gw<=8V4c*w1TsVt*F?(~sxU4JT3*p}>IPIx2VaEg!!W z91;LE1QNpC%_vQ6fmTT%@vJE_v@j^xWfn+io`yqXO91s3Oc)D`gIpI+6hZ_w(}c+F z5lk=5jOgBbIE6+8rzC_Rf0LT1|0VdfA_O$9-Y)A^fG~n`72Wp=oaO`xDtuc)^M1iE z0)HU_x|6|ZY73l-g$=~JC8Bx1VAsA7@%X|Ty)^||5JLpBD!$Rus9+Y=5Rtih9o-tt z+(#Vu(d9l0s1yf@Vo~#>;E(_bc+l9~a|U&Kx^f~Ymf7lXugOhx1mHWGBMrX=Ml!^~ z`|0=l1V*nz1QSp%$?p?b@ev=Czf$2b0e==Nfl-F5^}?WliJagF-I|U2H1K6tSVV!9 z;$ELoo(06By@%thfb!5}_zK;Nrf zbl)ogsw4~eJEAAOH%stpnjA5$sHLj*zw}th8mO*r}=R3}z - Python Module Index — libcasm-composition 2.0a3 documentation + Python Module Index — libcasm-composition 2.0a4 documentation @@ -38,7 +38,7 @@ - + diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.html new file mode 100644 index 00000000..7bb5a660 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.html @@ -0,0 +1,606 @@ + + + + + + + + + + + allowed_occs — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

allowed_occs#

+
+
+CompositionCalculator.allowed_occs( + +
+
self: CompositionCalculator,
+
+ +) list[list[str]]#
+

list[list[str]]: The names of allowed occupants for each sublattice.

+
+ +
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.components.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.components.html index e1caddf1..d3ee8d9f 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.components.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.components.html @@ -8,7 +8,7 @@ - components — libcasm-composition 2.0a3 documentation + components — libcasm-composition 2.0a4 documentation @@ -39,14 +39,14 @@ - + - - + + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -465,7 +485,7 @@

    components) list[str]# -

    The order of components in composition vector results.

    +

    list[str]: The order of components in composition vector results.

    @@ -481,20 +501,20 @@

    components

    previous

    -

    CompositionCalculator

    +

    allowed_occs

    next

    -

    mean_num_each_component

    +

    from_dict

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.html new file mode 100644 index 00000000..4b8db9df --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.html @@ -0,0 +1,617 @@ + + + + + + + + + + + from_dict — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    from_dict#

    +
    +
    +static CompositionCalculator.from_dict( + +
    +
    data: json,
    +
    + +) CompositionCalculator#
    +

    Construct a CompositionCalculator from a Python dict

    +
    +
    Parameters:
    +

    data (dict) – A Python dict representing the CompositionCalculator.

    +
    +
    Returns:
    +

    calculator – A CompositionCalculator constructed from the dict.

    +
    +
    Return type:
    +

    CompositionCalculator

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.html index aad6f229..77b87490 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.html @@ -8,7 +8,7 @@ - CompositionCalculator — libcasm-composition 2.0a3 documentation + CompositionCalculator — libcasm-composition 2.0a4 documentation @@ -39,13 +39,13 @@ - + - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -459,7 +479,7 @@

    CompositionCalculatorself: CompositionCalculator,
    components: list[str],
    allowed_occs: list[list[str]],
    -
    vacancy_names: set[str] = {'va', 'Va', 'VA'},
    +
    vacancy_names: set[str] = {'VA', 'va', 'Va'},
    )# @@ -511,14 +531,20 @@

    CompositionCalculatorMethods

    - - + + + + + + + + - + @@ -526,6 +552,12 @@

    CompositionCalculator

    + + + + + +

    components

    The order of components in composition vector results.

    allowed_occs

    list[list[str]]: The names of allowed occupants for each sublattice.

    components

    list[str]: The order of components in composition vector results.

    from_dict

    Construct a CompositionCalculator from a Python dict

    mean_num_each_component

    Composition as number per primitive cell

    n_sublat

    The number of sublattices.

    int: The number of sublattices.

    num_each_component

    Composition as total number

    species_frac

    Composition as species fraction, with [Va] = 0.0

    to_dict

    Represent a CompositionCalculator as a Python dict

    vacancy_names

    set[str]: The names of vacancy components.

    @@ -552,11 +584,11 @@

    CompositionCalculator

    next

    -

    components

    +

    allowed_occs

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.mean_num_each_component.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.mean_num_each_component.html index efd7c59a..84f89015 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.mean_num_each_component.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.mean_num_each_component.html @@ -8,7 +8,7 @@ - mean_num_each_component — libcasm-composition 2.0a3 documentation + mean_num_each_component — libcasm-composition 2.0a4 documentation @@ -39,14 +39,14 @@ - + - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -499,12 +519,12 @@

    mean_num_each_component

    previous

    -

    components

    +

    from_dict

    - n_sublat — libcasm-composition 2.0a3 documentation + n_sublat — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -465,7 +485,7 @@

    n_sublat ) int# -

    The number of sublattices.

    +

    int: The number of sublattices.

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.num_each_component.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.num_each_component.html index c29b74b2..dab15b9e 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.num_each_component.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.num_each_component.html @@ -8,7 +8,7 @@ - num_each_component — libcasm-composition 2.0a3 documentation + num_each_component — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.species_frac.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.species_frac.html index b0947e83..256512b5 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.species_frac.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.species_frac.html @@ -8,7 +8,7 @@ - species_frac — libcasm-composition 2.0a3 documentation + species_frac — libcasm-composition 2.0a4 documentation @@ -39,13 +39,13 @@ - + - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -508,11 +528,11 @@

    species_frac

    next

    -

    CompositionConverter

    +

    to_dict

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict.html new file mode 100644 index 00000000..55e808f8 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict.html @@ -0,0 +1,614 @@ + + + + + + + + + + + to_dict — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    to_dict#

    +
    +
    +CompositionCalculator.to_dict( + +
    +
    self: CompositionCalculator,
    +
    + +) json#
    +

    Represent a CompositionCalculator as a Python dict

    +
    +
    Returns:
    +

    data – A Python dict representing the CompositionCalculator.

    +
    +
    Return type:
    +

    dict

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.html new file mode 100644 index 00000000..d0d2bb27 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.html @@ -0,0 +1,606 @@ + + + + + + + + + + + vacancy_names — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    vacancy_names#

    +
    +
    +CompositionCalculator.vacancy_names( + +
    +
    self: CompositionCalculator,
    +
    + +) set[str]#
    +

    set[str]: The names of vacancy components.

    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.axes.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.axes.html index 5156f6d5..608af60e 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.axes.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.axes.html @@ -8,7 +8,7 @@ - axes — libcasm-composition 2.0a3 documentation + axes — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.components.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.components.html index 6e29b00b..7f91ad62 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.components.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.components.html @@ -8,7 +8,7 @@ - components — libcasm-composition 2.0a3 documentation + components — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dmol_composition.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dmol_composition.html index 1b850dbc..6c9fd34f 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dmol_composition.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dmol_composition.html @@ -8,7 +8,7 @@ - dmol_composition — libcasm-composition 2.0a3 documentation + dmol_composition — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dparam_composition.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dparam_composition.html index c8db2792..3e5bdca9 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dparam_composition.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dparam_composition.html @@ -8,7 +8,7 @@ - dparam_composition — libcasm-composition 2.0a3 documentation + dparam_composition — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member.html index 6a6ef139..c734e750 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member.html @@ -8,7 +8,7 @@ - end_member — libcasm-composition 2.0a3 documentation + end_member — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member_formula.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member_formula.html index 57c8a3cd..50baa8ab 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member_formula.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member_formula.html @@ -8,7 +8,7 @@ - end_member_formula — libcasm-composition 2.0a3 documentation + end_member_formula — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -467,7 +487,7 @@

    end_member_formula) str# -

    Return formula for the i-th end member, \(q_i\).

    +

    Return formula for the i-th end member, \(\vec{n}_0 + \vec{q}_i\).

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.from_dict.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.from_dict.html index 694eb1dc..f7b95470 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.from_dict.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.from_dict.html @@ -8,7 +8,7 @@ - from_dict — libcasm-composition 2.0a3 documentation + from_dict — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.html index ce01d1ac..5fa4309e 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.html @@ -8,7 +8,7 @@ - CompositionConverter — libcasm-composition 2.0a3 documentation + CompositionConverter — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -47,7 +47,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -460,7 +480,7 @@

    CompositionConverterself: CompositionConverter,
    components: list[str],
    origin_and_end_members: numpy.ndarray[numpy.float64[m, n]],
    -
    vacancy_names: set[str] = {'va', 'Va', 'VA'},
    +
    vacancy_names: set[str] = {'VA', 'va', 'Va'},
    )# @@ -471,22 +491,51 @@

    CompositionConverter

    where:

      -
    • \(\vec{n}\): The mol composition as number of each component species per unit cell, a vector of length \(s\).

    • -
    • \(\vec{x}\): The parametric composition, a vector of length \(k\), giving the composition along each composition axis when referenced to the origin composition.

    • -
    • \(\vec{n}_0\): The origin in composition space, a vector of length \(s\), as the number of each component species per unit cell.

    • +
    • \(\vec{n}\): The mol composition as number of each component species +per unit cell, a vector of length \(s\).

    • +
    • \(\vec{x}\): The parametric composition, a vector of length \(k\), +giving the composition along each composition axis when referenced to the +origin composition.

    • +
    • \(\vec{n}_0\): The origin in composition space, a vector of length +\(s\), as the number of each component species per unit cell.

    • \(s\): The number of component species (n_components).

    • \(k\): The number of independent composition axes (k).

    • -
    • \(Q\): Matrix of shape=(\(s\), \(k\)), with columns representing the end member compositions, as number of each component species per unit cell, for each independent composition axes.

    • -
    • \(R\): Matrix of shape=(\(s\), \(k\)), with columns forming the dual-spanning basis of Q, such that \(\mathbf{R}^{\mathsf{T}}\mathbf{Q} = \mathbf{Q}^{\mathsf{T}}\mathbf{R} = \mathbf{I}\).

    • +
    • \(Q\): Matrix of shape=(\(s\), \(k\)), with columns representing +the change in composition per unit cell along each independent composition axis.

    • +
    • \(R\): Matrix of shape=(\(s\), \(k\)), with columns forming the +dual-spanning basis of Q, such that +\(\mathbf{R}^{\mathsf{T}}\mathbf{Q} = \mathbf{Q}^{\mathsf{T}}\mathbf{R} = \mathbf{I}\).

    • +
    +

    The “parametric composition axes” are the columns of \(Q\), +\(\vec{q}_i\). Due to preservation of the number of sites per +unit cell, \(\sum_{i} Q_{ij} = 0\) (vacancies are included as a +component). If \(\sum_{i} |Q_{ij}| = 2\), the parametric composition +axis can be said to be normalized in the sense that a unit distance along +that axis corresponds to a change in occupation of one site per unit cell.

    +

    Notes:

    +
      +
    • The term “endmember” usually refers to the extreme compositions in a +solid solution. In the context of CompositionConverter, the term +“end member composition” is used to mean the composition one unit +distance along a parametric composition axis, +\(\vec{n}_0 + \vec{q}_i\).

    • +
    • When printing formulas, the characters “a”, “b”, “c”, etc. are used to +represent the parametric compositions, \(x_1\), \(x_2\), +\(x_3\), etc.

    • +
    • When referring to parametric composition axes, the characters “a”, “b”, +“c”, etc. are used to represent the parametric composition axes, +\(\vec{q}_1\), \(\vec{q}_2\), \(\vec{q}_3\), etc.

    Parameters:
    @@ -466,7 +486,7 @@

    independent_compositions) int# -

    The dimensionality of the composition space, \(k\).

    +

    The dimensionality of the composition space, \(k\). This is the number of parametric composition axes.

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixQ.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixQ.html index 2e053ba0..031c7595 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixQ.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixQ.html @@ -8,7 +8,7 @@ - matrixQ — libcasm-composition 2.0a3 documentation + matrixQ — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixR.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixR.html index e6ac230f..86d48598 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixR.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixR.html @@ -8,7 +8,7 @@ - matrixR — libcasm-composition 2.0a3 documentation + matrixR — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_component_formula.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_component_formula.html index b2780c6c..e4bd7d06 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_component_formula.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_component_formula.html @@ -8,7 +8,7 @@ - mol_component_formula — libcasm-composition 2.0a3 documentation + mol_component_formula — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -467,7 +487,7 @@

    mol_component_formula ) str# -

    Return formula the i-th mol composition component, \(n_i\), in terms of \(\vec{x}\).

    +

    Return formula for the i-th mol composition component, \(n_i\), in terms of \(\vec{x}\).

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_composition.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_composition.html index d87300a1..98bc16ed 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_composition.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_composition.html @@ -8,7 +8,7 @@ - mol_composition — libcasm-composition 2.0a3 documentation + mol_composition — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_formula.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_formula.html index 6a86648c..8c8a2c1a 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_formula.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_formula.html @@ -8,7 +8,7 @@ - mol_formula — libcasm-composition 2.0a3 documentation + mol_formula — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin.html index 82c8fabb..31764010 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin.html @@ -8,7 +8,7 @@ - origin — libcasm-composition 2.0a3 documentation + origin — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin_formula.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin_formula.html index 0ad5f5ec..4951f3cf 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin_formula.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin_formula.html @@ -8,7 +8,7 @@ - origin_formula — libcasm-composition 2.0a3 documentation + origin_formula — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot.html index 8a8cedbd..e3aafe7e 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot.html @@ -8,7 +8,7 @@ - param_chem_pot — libcasm-composition 2.0a3 documentation + param_chem_pot — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot_formula.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot_formula.html index 7fb8a53c..21cafa11 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot_formula.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot_formula.html @@ -8,7 +8,7 @@ - param_chem_pot_formula — libcasm-composition 2.0a3 documentation + param_chem_pot_formula — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -463,10 +483,21 @@

    param_chem_pot_formula
    self: CompositionConverter,
    i: int,
    +
    include_va: bool = False,
    ) str# -

    Return formula the parametric composition conjugate potential in terms of the chemical potentials.

    +

    Return formula for the parametric composition conjugate potential in terms +of the chemical potentials.

    +
    +
    Parameters:
    +
      +
    • i (int) – The parametric composition axis index, starting from 0.

    • +
    • include_va (bool = False) – If True, include chem_pot(Va) in output. If False (default), +assume chem_pot(Va) is 0.

    • +
    +
    +
    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_component_formula.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_component_formula.html index f61bd3bf..cc006faf 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_component_formula.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_component_formula.html @@ -8,7 +8,7 @@ - param_component_formula — libcasm-composition 2.0a3 documentation + param_component_formula — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -467,7 +487,7 @@

    param_component_formula ) str# -

    Return formula the i-th parametric composition component, \(x_i\), in terms of \(\vec{n}\).

    +

    Return formula for the i-th parametric composition component, \(x_i\), in terms of \(\vec{n}\).

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_composition.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_composition.html index 71dcdd2a..c535058f 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_composition.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_composition.html @@ -8,7 +8,7 @@ - param_composition — libcasm-composition 2.0a3 documentation + param_composition — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_formula.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_formula.html index 017a723f..3be246bd 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_formula.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_formula.html @@ -8,7 +8,7 @@ - param_formula — libcasm-composition 2.0a3 documentation + param_formula — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.to_dict.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.to_dict.html index d766ee93..e27d57a1 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.to_dict.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.to_dict.html @@ -8,7 +8,7 @@ - to_dict — libcasm-composition 2.0a3 documentation + to_dict — libcasm-composition 2.0a4 documentation @@ -39,12 +39,13 @@ - + + @@ -351,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -488,6 +509,15 @@

    to_dict#<

    param_formula

    + +
    +

    next

    +

    FormationEnergyCalculator

    +
    + +
    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.html new file mode 100644 index 00000000..92c3a3e6 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.html @@ -0,0 +1,607 @@ + + + + + + + + + + + composition_ref — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    composition_ref#

    +
    +
    +FormationEnergyCalculator.composition_ref#
    +

    The compositions of the \(k+1\) reference states +as column vectors of a shape=(k,k+1) matrix.

    +
    +
    Type:
    +

    np.ndarray

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.html new file mode 100644 index 00000000..1104269d --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.html @@ -0,0 +1,606 @@ + + + + + + + + + + + energy_ref — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    energy_ref#

    +
    +
    +FormationEnergyCalculator.energy_ref#
    +

    The reference state energies, normalized per primitive cell, as +a 1D array of shape=(k,).

    +
    +
    Type:
    +

    np.ndarray

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.html new file mode 100644 index 00000000..ce26cd2f --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.html @@ -0,0 +1,627 @@ + + + + + + + + + + + formation_energy — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    formation_energy#

    +
    +
    +FormationEnergyCalculator.formation_energy( + +
    +
    composition: ndarray,
    +
    energy: ndarray,
    +
    + +) ndarray[source]#
    +

    Calculate the formation energy of a configuration.

    +
    +
    Parameters:
    +
      +
    • composition (np.ndarray) – The composition of 1 or more structures. This may be a 1d array of +shape=(k,) representing a single structure, where \(k\) is +the number of independent composition axes, or a 2d array of shape=(k,n) +with the composition of \(n\) structures as columns.

    • +
    • energy (Union[float, np.ndarray]) – The energy of 1 or more structures. This may be a scalar +with the energy of a single structure, or a 1d array of shape=(n,) +with the energy of \(n\) structures.

    • +
    +
    +
    Returns:
    +

    formation_energy – The formation energy of the configuration(s).

    +
    +
    Return type:
    +

    np.ndarray

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.html new file mode 100644 index 00000000..5961aa23 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.html @@ -0,0 +1,620 @@ + + + + + + + + + + + from_dict — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    from_dict#

    +
    +
    +static FormationEnergyCalculator.from_dict( + +
    +
    data: dict,
    +
    + +)[source]#
    +

    Create a FormationEnergyCalculator from a Python dict

    +
    +
    Parameters:
    +

    data (dict) – The FormationEnergyCalculator as a Python dict. Note that the +composition ref is expected to be transposed to keep reference state +compositions in a single list. See to_dict() for the expected +format.

    +
    +
    Returns:
    +

    calculator – The FormationEnergyCalculator object

    +
    +
    Return type:
    +

    FormationEnergyCalculator

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.html new file mode 100644 index 00000000..fd7e2c6b --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.html @@ -0,0 +1,597 @@ + + + + + + + + + + + h — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    h#

    +
    +
    +FormationEnergyCalculator.h#
    +

    The parameters \(h_0, h_1, \dots, h_k\) needed to calculate +energy references.

    +
    +
    Type:
    +

    np.ndarray

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.html new file mode 100644 index 00000000..78a1f086 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.html @@ -0,0 +1,658 @@ + + + + + + + + + + + FormationEnergyCalculator — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    FormationEnergyCalculator#

    +
    +
    +class libcasm.composition.FormationEnergyCalculator( + +
    +
    composition_ref: ndarray,
    +
    energy_ref: ndarray,
    +
    + +)[source]#
    +

    Bases: object

    +

    Calculate formation energies given a choice of reference states.

    +

    For a \(k\)-dimensional composition space, +\(k+1\) reference states are required to determine the +parameters \(h_0, h_1, \dots, h_k\) needed to calculate +energy references according to:

    +
    +\[\newcommand{\config}{{\mathbb{C}}} +e(\config_i) = h_0 + \sum_{j=1}^{k} h_i x_j(\config_i),\]
    +

    where \(e(\config_i)\) is the reference energy of configuration +\(i\), and \(x_j(\config_i)\) is the \(j\)-th element of the +composition of configuration \(i\).

    +

    Constructor

    +
    +
    Parameters:
    +
      +
    • composition_ref (np.ndarray[np.float[k, k+1]]) – The compositions of the \(k+1\) reference states +as column vectors of a shape=(k,k+1) matrix.

    • +
    • energy_ref (np.ndarray[np.float[k]]) – The reference state energies, normalized per primitive cell.

    • +
    +
    +
    +

    Methods

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

    formation_energy

    Calculate the formation energy of a configuration.

    from_dict

    Create a FormationEnergyCalculator from a Python dict

    reference_energy

    Calculate the reference energy at a composition.

    to_dict

    Represent the FormationEnergyCalculator as a Python dict

    +

    Attributes

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

    independent_compositions

    The number of independent composition axes.

    composition_ref

    The compositions of the \(k+1\) reference states as column vectors of a shape=(k,k+1) matrix.

    energy_ref

    The reference state energies, normalized per primitive cell, as a 1D array of shape=(k,).

    h

    The parameters \(h_0, h_1, \dots, h_k\) needed to calculate energy references.

    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions.html new file mode 100644 index 00000000..4e328073 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions.html @@ -0,0 +1,605 @@ + + + + + + + + + + + independent_compositions — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    independent_compositions#

    +
    +
    +FormationEnergyCalculator.independent_compositions#
    +

    The number of independent composition axes.

    +
    +
    Type:
    +

    int

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.html new file mode 100644 index 00000000..2a109805 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.html @@ -0,0 +1,623 @@ + + + + + + + + + + + reference_energy — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    reference_energy#

    +
    +
    +FormationEnergyCalculator.reference_energy( + +
    +
    composition: ndarray,
    +
    + +) ndarray[source]#
    +

    Calculate the reference energy at a composition.

    +
    +
    Parameters:
    +

    composition (np.ndarray) – The composition of one or more structures. This may be a 1d +array of shape=(k,) representing a single structure, or a 2d array of +shape=(k,n) representing \(n\) structures, where \(k\) is the +number of independent composition axes. If a 1d array is provided, the +result in a scalar. If a 2d array is provided, the result is a 1d array of +shape=(n,).

    +
    +
    Returns:
    +

    reference_energy – The reference energy at the input composition(s).

    +
    +
    Return type:
    +

    np.ndarray

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict.html new file mode 100644 index 00000000..68882630 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict.html @@ -0,0 +1,626 @@ + + + + + + + + + + + to_dict — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    to_dict#

    +
    +
    +FormationEnergyCalculator.to_dict()[source]#
    +

    Represent the FormationEnergyCalculator as a Python dict

    +
    +
    Returns:
    +

    data – The FormationEnergyCalculator as a Python dict. Note that the +composition_ref is transposed to keep reference state compositions in +a single list.

    +

    Example:

    +
    {
    +    "composition_ref": [
    +        [0.0, 0.0], # Reference state 1 composition
    +        [0.0, 1.0], # Reference state 2 composition
    +        [1.0, 0.0], # Reference state 3 composition
    +    ],
    +    "energy_ref": [
    +        2.0, # Reference state 1 energy
    +        1.0, # Reference state 2 energy
    +        0.0, # Reference state 3 energy
    +    ]
    +}
    +
    +
    +

    +
    +
    Return type:
    +

    dict

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.get_occupant.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.get_occupant.html index b6b43f92..21332064 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.get_occupant.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.get_occupant.html @@ -8,7 +8,7 @@ - get_occupant — libcasm-composition 2.0a3 documentation + get_occupant — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.html index b1500940..44bc1330 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.html @@ -8,7 +8,7 @@ - libcasm.composition — libcasm-composition 2.0a3 documentation + libcasm.composition — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -467,13 +487,28 @@

    make_exchange_chemical_potential

    Make the exchange chemical potential matrix

    -

    make_null_composition_space

    +

    make_normalized_origin_and_end_members

    +

    Normalize compositions so that one unit along a parametric composition axis corresponds to a change of one site per unit cell in the occupation.

    + +

    make_null_composition_space

    Return the null space of the species fraction space as a column vector matrix

    +

    make_standard_axes

    +

    Make standard composition axes for a set of components

    +

    make_standard_origin_and_end_members

    Make the possible standard choices of origin and end member compositions

    -

    set_occupant

    +

    pretty_json

    +

    Pretty-print JSON to string.

    + +

    print_axes_summary

    +

    Print a formatted summary of the composition formulas for a particular choice of axes

    + +

    print_axes_table

    +

    Print a formatted summary of several composition axes

    + +

    set_occupant

    Set by name the species on a particular site

    @@ -487,6 +522,9 @@

    CompositionConverter

    Convert between number of species per unit cell and parametric composition

    +

    FormationEnergyCalculator

    +

    Calculate formation energies given a choice of reference states.

    + diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_chemical_subsystems.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_chemical_subsystems.html index e6017e77..dfd93654 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_chemical_subsystems.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_chemical_subsystems.html @@ -8,7 +8,7 @@ - make_chemical_subsystems — libcasm-composition 2.0a3 documentation + make_chemical_subsystems — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_composition_space.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_composition_space.html index 4bed673b..ca3fe432 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_composition_space.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_composition_space.html @@ -8,7 +8,7 @@ - make_composition_space — libcasm-composition 2.0a3 documentation + make_composition_space — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -458,7 +478,7 @@

    make_composition_space
    components: list[str],
    allowed_occs: list[list[str]],
    -
    vacancy_names: set[str] = {'va', 'Va', 'VA'},
    +
    vacancy_names: set[str] = {'VA', 'va', 'Va'},
    tol: float = 1e-05,
    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_end_members.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_end_members.html index f4757c75..9a5ffb49 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_end_members.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_end_members.html @@ -8,7 +8,7 @@ - make_end_members — libcasm-composition 2.0a3 documentation + make_end_members — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_exchange_chemical_potential.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_exchange_chemical_potential.html index 2b79505d..a70e5475 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_exchange_chemical_potential.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_exchange_chemical_potential.html @@ -8,7 +8,7 @@ - make_exchange_chemical_potential — libcasm-composition 2.0a3 documentation + make_exchange_chemical_potential — libcasm-composition 2.0a4 documentation @@ -39,14 +39,14 @@ - + - + @@ -353,15 +353,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -501,11 +521,11 @@

    make_exchange_chemical_potential

    next

    -

    make_null_composition_space

    +

    make_normalized_origin_and_end_members

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.html new file mode 100644 index 00000000..0fa8a6eb --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.html @@ -0,0 +1,625 @@ + + + + + + + + + + + make_normalized_origin_and_end_members — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    make_normalized_origin_and_end_members#

    +
    +
    +libcasm.composition.make_normalized_origin_and_end_members( + +
    +
    origin_and_end_members: ndarray,
    +
    tol: float = 1e-05,
    +
    + +) ndarray[source]#
    +

    Normalize compositions so that one unit along a parametric composition +axis corresponds to a change of one site per unit cell in the occupation.

    +

    See CompositionConverter for details on definitions.

    +
    +
    Parameters:
    +
      +
    • origin_and_end_members (np.ndarray) – A matrix with the origin, \(\vec{n}_0\), as the first column and +end member compositions, \(\vec{n}_0 + \vec{q}_i\) as the +remaining columns.

    • +
    • tol (float = TOL) – Tolerance for comparison. Used to find composition axes such that the +parametric composition parameters are non-negative.

    • +
    +
    +
    Returns:
    +

    normalized_origin_and_end_members – A modified origin_and_end_members matrix. The origin (first column) is not +modified. The end member compositions (subsequent columns) are modified so +that a unit distance along each composition axis corresponds to a change of +one site per unit cell in the occupation.

    +
    +
    Return type:
    +

    np.ndarray

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_null_composition_space.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_null_composition_space.html index aa4a38c5..48416f56 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_null_composition_space.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_null_composition_space.html @@ -8,7 +8,7 @@ - make_null_composition_space — libcasm-composition 2.0a3 documentation + make_null_composition_space — libcasm-composition 2.0a4 documentation @@ -39,14 +39,14 @@ - + - - + + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -458,7 +478,7 @@

    make_null_composition_spacecomponents: list[str],
    allowed_occs: list[list[str]],
    -
    vacancy_names: set[str] = {'va', 'Va', 'VA'},
    +
    vacancy_names: set[str] = {'VA', 'va', 'Va'},
    tol: float = 1e-05,
    @@ -495,20 +515,20 @@

    make_null_composition_space

    previous

    -

    make_exchange_chemical_potential

    +

    make_normalized_origin_and_end_members

    next

    -

    make_standard_origin_and_end_members

    +

    make_standard_axes

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.html new file mode 100644 index 00000000..6f6bd1b2 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.html @@ -0,0 +1,634 @@ + + + + + + + + + + + make_standard_axes — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    make_standard_axes#

    +
    +
    +libcasm.composition.make_standard_axes( + +
    +
    allowed_occs: list[list[str]],
    +
    components: str | list[str] | None = None,
    +
    vacancy_names: set[str] | None = None,
    +
    normalize: bool = True,
    +
    tol: float = 1e-05,
    +
    + +) tuple[CompositionCalculator, list[CompositionConverter]][source]#
    +

    Make standard composition axes for a set of components

    +
    +
    Parameters:
    +
      +
    • allowed_occs (Optional[list[list[str]]]) – For each sublattice, a vector of components allowed to occupy the sublattice. +The order in which components are listed on each sublattice determines the +occupation_index in occupation vectors correpsonding to that component +species.

    • +
    • components (Union[str, list[str], None] = None) – The requested component order in the composition vectors. If None, the +components are listed in the order found in allowed_occs. If the string +“sorted”, the components are sorted alphabetically. If a list, the components +are listed in the order given in the list.

    • +
    • vacancy_names (Optional[set[str]] = None) – Set of component names that should be recognized as vacancies. An exception is +raised if more than one component is a vacancy.

    • +
    • normalize (bool = True) – If True, normalize the composition axes so that going one unit along the +composition axis corresponds to a change of one site per unit cell in the +occupation. If False, one unit along the composition axis corresponds to a +change from the origin to an extreme end member composition.

    • +
    • tol (float = TOL) – Tolerance for comparison. Used to find composition axes such that the +parametric composition parameters are non-negative.

    • +
    +
    +
    Returns:
    +

    +

    +
    +
    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_standard_origin_and_end_members.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_standard_origin_and_end_members.html index fc422feb..3760169d 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_standard_origin_and_end_members.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.make_standard_origin_and_end_members.html @@ -8,7 +8,7 @@ - make_standard_origin_and_end_members — libcasm-composition 2.0a3 documentation + make_standard_origin_and_end_members — libcasm-composition 2.0a4 documentation @@ -39,14 +39,14 @@ - + - - + + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -469,7 +489,9 @@

    make_standard_origin_and_end_members
  • Does the current choice of K end members span the full space?

  • -
  • Try each of the chosen K end members as the origin, and let remaining define composition axes. Does this result in only positive parametric composition parameters?

  • +
  • Try each of the chosen K end members as the origin, and let remaining +define composition axes. Does this result in only positive parametric +composition parameters?

  • If (1) and (2) are satisfied, that choice of origin and end members are included in the results.

    @@ -484,11 +506,14 @@

    make_standard_origin_and_end_membersReturns: -

    standard_origin_and_end_members – A list of matrices representing origin and end member compositions +

    standard_origin_and_end_members – A list of matrices representing origin and end member compositions for the set of standard composition axes. The composition of the origin is the first column of each matrix, and the subsequent columns are the compositions of the end members. Rows are ordered according to the order requested by components.

    +

    These “end member compositions” are the extreme compositions allowed +by allowed_occs.

    +

    Return type:

    list[numpy.ndarray[numpy.float64[n_components, n_composition_axes+1]]]

    @@ -509,20 +534,20 @@

    make_standard_origin_and_end_members

    previous

    -

    make_null_composition_space

    +

    make_standard_axes

    next

    -

    set_occupant

    +

    pretty_json

    diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.pretty_json.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.pretty_json.html new file mode 100644 index 00000000..42ff9995 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.pretty_json.html @@ -0,0 +1,601 @@ + + + + + + + + + + + pretty_json — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    pretty_json#

    +
    +
    +libcasm.composition.pretty_json( + +
    +
    data: json,
    +
    + +) str#
    +

    Pretty-print JSON to string.

    +
    + +
    + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.print_axes_summary.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.print_axes_summary.html new file mode 100644 index 00000000..ae792d72 --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.print_axes_summary.html @@ -0,0 +1,626 @@ + + + + + + + + + + + print_axes_summary — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + +
    + +
    + + +
    +
    + + + + + +
    + + + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.html new file mode 100644 index 00000000..fc7230af --- /dev/null +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.print_axes_table.html @@ -0,0 +1,619 @@ + + + + + + + + + + + print_axes_table — libcasm-composition 2.0a4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    +
    +
    +
    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + + + +
    + +
    + + +
    +
    + + + + + +
    + + + + +
    + + + + + + + +
    + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.set_occupant.html b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.set_occupant.html index b2077807..d9f0c882 100644 --- a/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.set_occupant.html +++ b/docs/libcasm/composition/2.0/reference/libcasm/_autosummary/libcasm.composition.set_occupant.html @@ -8,7 +8,7 @@ - set_occupant — libcasm-composition 2.0a3 documentation + set_occupant — libcasm-composition 2.0a4 documentation @@ -39,14 +39,14 @@ - + - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • @@ -491,12 +511,12 @@

    set_occupant

    previous

    -

    make_standard_origin_and_end_members

    +

    print_axes_table

    - libcasm package — libcasm-composition 2.0a3 documentation + libcasm package — libcasm-composition 2.0a4 documentation @@ -39,7 +39,7 @@ - + @@ -352,15 +352,24 @@
  • make_composition_space
  • make_end_members
  • make_exchange_chemical_potential
  • +
  • make_normalized_origin_and_end_members
  • make_null_composition_space
  • +
  • make_standard_axes
  • make_standard_origin_and_end_members
  • +
  • pretty_json
  • +
  • print_axes_summary
  • +
  • print_axes_table
  • set_occupant
  • CompositionCalculator
  • CompositionConverter
  • +
  • FormationEnergyCalculator +
  • diff --git a/docs/libcasm/composition/2.0/search.html b/docs/libcasm/composition/2.0/search.html index 9cdd30e8..10033b78 100644 --- a/docs/libcasm/composition/2.0/search.html +++ b/docs/libcasm/composition/2.0/search.html @@ -6,7 +6,7 @@ - Search - libcasm-composition 2.0a3 documentation + Search - libcasm-composition 2.0a4 documentation @@ -37,7 +37,7 @@ - + diff --git a/docs/libcasm/composition/2.0/searchindex.js b/docs/libcasm/composition/2.0/searchindex.js index 25b0a694..6796740e 100644 --- a/docs/libcasm/composition/2.0/searchindex.js +++ b/docs/libcasm/composition/2.0/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index", "installation", "reference/libcasm/_autosummary/libcasm.composition", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.components", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.mean_num_each_component", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.n_sublat", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.num_each_component", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.species_frac", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.axes", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.components", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dmol_composition", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dparam_composition", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.from_dict", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.independent_compositions", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixQ", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixR", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_component_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_composition", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_component_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_composition", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.to_dict", "reference/libcasm/_autosummary/libcasm.composition.get_occupant", "reference/libcasm/_autosummary/libcasm.composition.make_chemical_subsystems", "reference/libcasm/_autosummary/libcasm.composition.make_composition_space", "reference/libcasm/_autosummary/libcasm.composition.make_end_members", "reference/libcasm/_autosummary/libcasm.composition.make_exchange_chemical_potential", "reference/libcasm/_autosummary/libcasm.composition.make_null_composition_space", "reference/libcasm/_autosummary/libcasm.composition.make_standard_origin_and_end_members", "reference/libcasm/_autosummary/libcasm.composition.set_occupant", "reference/libcasm/index"], "filenames": ["index.rst", "installation.rst", "reference/libcasm/_autosummary/libcasm.composition.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.components.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.mean_num_each_component.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.n_sublat.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.num_each_component.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.species_frac.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.axes.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.components.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dmol_composition.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dparam_composition.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.from_dict.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.independent_compositions.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixQ.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixR.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_component_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_composition.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_component_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_composition.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.to_dict.rst", "reference/libcasm/_autosummary/libcasm.composition.get_occupant.rst", "reference/libcasm/_autosummary/libcasm.composition.make_chemical_subsystems.rst", "reference/libcasm/_autosummary/libcasm.composition.make_composition_space.rst", "reference/libcasm/_autosummary/libcasm.composition.make_end_members.rst", "reference/libcasm/_autosummary/libcasm.composition.make_exchange_chemical_potential.rst", "reference/libcasm/_autosummary/libcasm.composition.make_null_composition_space.rst", "reference/libcasm/_autosummary/libcasm.composition.make_standard_origin_and_end_members.rst", "reference/libcasm/_autosummary/libcasm.composition.set_occupant.rst", "reference/libcasm/index.rst"], "titles": ["libcasm-composition", "Installation", "libcasm.composition", "CompositionCalculator", "components", "mean_num_each_component", "n_sublat", "num_each_component", "species_frac", "CompositionConverter", "axes", "components", "dmol_composition", "dparam_composition", "end_member", "end_member_formula", "from_dict", "independent_compositions", "matrixQ", "matrixR", "mol_component_formula", "mol_composition", "mol_formula", "origin", "origin_formula", "param_chem_pot", "param_chem_pot_formula", "param_component_formula", "param_composition", "param_formula", "to_dict", "get_occupant", "make_chemical_subsystems", "make_composition_space", "make_end_members", "make_exchange_chemical_potential", "make_null_composition_space", "make_standard_origin_and_end_members", "set_occupant", "libcasm package"], "terms": {"packag": 0, "i": [0, 1, 3, 9, 14, 15, 20, 26, 27, 32, 33, 35, 36, 37], "thi": [0, 3, 9, 32, 34, 37], "includ": [0, 37], "method": [0, 3, 9, 32, 34, 37], "construct": [0, 16, 37], "standard": [0, 37], "ax": [0, 2, 9, 16, 23, 30, 37], "convert": [0, 9, 12, 13, 21, 25, 28], "between": [0, 9], "mol": [0, 9, 11, 14, 20, 23], "parametr": [0, 9, 12, 13, 21, 26, 27, 28, 35, 37], "calcul": [0, 2, 3], "configur": 0, "sublattic": [0, 3, 5, 6, 7, 8, 31, 32, 33, 34, 36, 37, 38], "part": 0, "open": 0, "sourc": 0, "softwar": 0, "which": [0, 3, 35], "design": 0, "perform": 0, "first": [0, 9, 37], "principl": 0, "statist": 0, "mechan": 0, "studi": 0, "multi": 0, "compon": [0, 3, 5, 7, 9, 20, 27, 31, 32, 33, 34, 36, 37, 38], "crystallin": 0, "solid": 0, "develop": 0, "van": 0, "der": 0, "ven": 0, "group": 0, "origin": [0, 9, 24, 37], "univers": 0, "michigan": 0, "current": [0, 37], "california": 0, "santa": 0, "barbara": 0, "For": [0, 3, 31, 32, 33, 34, 36, 37, 38], "more": [0, 3, 9, 33, 36], "inform": 0, "see": [0, 1], "homepag": 0, "gnu": 0, "lesser": 0, "gener": 0, "public": 0, "lgpl": 0, "pleas": 0, "file": 0, "avail": 0, "github": 0, "instal": 0, "from": [0, 3, 16, 34], "pypi": 0, "contributor": 0, "refer": [0, 16, 30], "casm": [1, 2], "built": 1, "maco": 1, "x86_64": 1, "intel": 1, "arm64": 1, "appl": 1, "silicon": 1, "linux": 1, "aarch64": 1, "The": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 14, 16, 17, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38], "latest": 1, "releas": 1, "libcasm": [1, 3, 9, 31, 32, 33, 34, 35, 36, 37, 38], "composit": [1, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 16, 17, 20, 21, 23, 24, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38], "can": [1, 3], "pip": 1, "contribut": 1, "guid": 1, "convers": [2, 9], "function": 2, "class": [2, 3, 9], "self": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], "list": [3, 4, 9, 10, 11, 31, 32, 33, 34, 36, 37, 38], "str": [3, 4, 9, 10, 11, 15, 20, 22, 24, 26, 27, 29, 31, 32, 33, 34, 36, 37, 38], "allowed_occ": [3, 31, 32, 33, 34, 36, 37, 38], "vacancy_nam": [3, 9, 33, 36], "set": [3, 9, 32, 33, 36, 37, 38], "va": [3, 8, 9, 33, 36], "base": [3, 9], "pybind11_object": [3, 9], "occup": [3, 5, 7, 8, 31, 34, 37, 38], "vector": [3, 4, 9, 11, 31, 32, 33, 34, 36, 37, 38], "note": 3, "ar": [3, 9, 34, 37], "integ": [3, 34], "indic": [3, 5, 7, 8, 31, 32, 38], "each": [3, 5, 7, 9, 31, 32, 33, 34, 36, 37, 38], "site": [3, 5, 7, 8, 31, 38], "period": 3, "crystal": [3, 34, 37], "accord": [3, 9, 33, 36, 37], "occupant_nam": [3, 31, 38], "b": [3, 10, 22, 32], "site_index": [3, 31, 38], "where": [3, 9], "name": [3, 9, 31, 33, 36, 38], "allow": [3, 5, 7, 8, 31, 32, 33, 34, 36, 37, 38], "occupi": [3, 31, 32, 33, 34, 36, 37, 38], "th": [3, 14, 15, 20, 27], "number": [3, 5, 6, 7, 9, 12, 13, 21, 28, 34, 37], "n_sublat": 3, "len": [3, 34], "volum": 3, "being": 3, "unit": [3, 9, 12, 13, 21, 28, 37], "cell": [3, 5, 9, 12, 13, 21, 28, 37], "supercel": 3, "index": [3, 31, 38], "associ": 3, "particular": [3, 31, 32, 38], "determin": [3, 34], "definit": 3, "consist": 3, "organ": [3, 32], "block": 3, "sublat": 3, "0": [3, 5, 7, 8, 29, 32], "1": [3, 5, 7, 8, 9, 12, 13, 14, 21, 22, 23, 25, 28, 31, 32, 35, 37, 38], "shape": [3, 9], "order": [3, 4, 9, 11, 32, 33, 34, 36, 37], "within": 3, "doe": [3, 37], "matter": 3, "purpos": 3, "paramet": [3, 5, 7, 8, 9, 31, 32, 33, 34, 35, 36, 37, 38], "request": [3, 9, 32, 33, 34, 36, 37], "should": [3, 9, 33, 36], "recogn": [3, 9, 33, 36], "vacanc": [3, 9, 33, 36], "an": [3, 9, 32, 33, 36], "except": [3, 9, 33, 36], "rais": [3, 9, 33, 36], "than": [3, 9, 33, 36], "one": [3, 9, 32, 33, 36], "compositioncalcul": [4, 5, 6, 7, 8], "result": [4, 37], "numpi": [5, 7, 8, 9, 12, 13, 14, 18, 19, 21, 23, 25, 28, 31, 33, 34, 35, 36, 37, 38], "ndarrai": [5, 7, 8, 9, 12, 13, 14, 18, 19, 21, 23, 25, 28, 31, 33, 34, 35, 36, 37, 38], "int32": [5, 7, 8, 31, 34, 38], "m": [5, 7, 8, 9, 12, 13, 14, 18, 19, 21, 23, 25, 28, 31, 33, 34, 35, 36, 37, 38], "sublattice_index": [5, 7, 8], "int": [5, 6, 7, 8, 14, 15, 17, 20, 26, 27, 31, 32, 38], "none": [5, 7, 8, 38], "float64": [5, 7, 8, 9, 12, 13, 14, 18, 19, 21, 23, 25, 28, 33, 34, 35, 36, 37], "per": [5, 9, 12, 13, 21, 28, 37], "primit": 5, "int64": [5, 7, 8, 31, 38], "valu": [5, 7, 8, 31, 35, 38], "correspond": [5, 7, 8, 31, 33, 36, 38], "basi": [5, 7, 8, 9, 31, 38], "option": [5, 7, 8], "If": [5, 7, 8, 37], "return": [5, 7, 8, 15, 18, 19, 20, 22, 24, 26, 27, 29, 31, 32, 33, 34, 35, 36, 37], "specifi": [5, 7, 8, 31, 32, 37, 38], "rang": [5, 7, 8], "n_sublattic": [5, 7, 8], "comp_n": 5, "primitv": 5, "type": [5, 7, 8, 31, 32, 33, 34, 35, 36, 37], "n_compon": [5, 7, 8, 9, 33, 34, 35, 36, 37], "total": 7, "total_n": 7, "speci": [8, 9, 31, 33, 36, 38], "fraction": [8, 33, 36], "origin_and_end_memb": 9, "n": [9, 12, 13, 18, 19, 21, 22, 24, 27, 28, 29, 33, 34, 35, 36, 37], "handl": 9, "form": 9, "vec": [9, 12, 13, 20, 21, 22, 24, 27, 28, 29, 35], "_0": [9, 24], "mathbf": [9, 35], "q": [9, 18, 35], "x": [9, 12, 13, 20, 21, 22, 28, 29, 35], "r": [9, 19], "mathsf": [9, 19, 35], "t": [9, 19, 35], "length": 9, "": 9, "k": [9, 10, 17, 37], "give": 9, "along": 9, "axi": 9, "when": 9, "referenc": 9, "space": [9, 17, 33, 34, 36, 37], "independ": [9, 32], "matrix": [9, 18, 19, 33, 34, 35, 36, 37], "column": [9, 33, 34, 36, 37], "repres": [9, 30, 37], "end": [9, 14, 15, 34, 37], "member": [9, 14, 15, 34, 37], "dual": 9, "span": [9, 37], "n_composition_ax": [9, 33, 35, 36, 37], "A": [9, 10, 22, 32, 34, 35, 37], "choic": [9, 37], "subsequ": [9, 37], "row": [9, 33, 34, 36, 37], "compositionconvert": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 35], "size": 10, "dx": [12, 25], "chang": [12, 13], "d": [12, 13, 32], "dn": [13, 25], "parameter": [14, 23], "formula": [15, 20, 22, 24, 26, 27, 29], "q_i": 15, "static": 16, "arg0": 16, "json": [16, 30], "python": [16, 30], "dict": [16, 30], "document": [16, 30], "expect": 16, "format": [16, 30], "dimension": 17, "n_i": 20, "term": [20, 22, 26, 27, 29], "ex": [22, 29], "chem_pot": 25, "dg": 25, "conjug": [26, 35], "potenti": [26, 35], "chemic": [26, 32, 35], "x_i": 27, "5": [29, 32], "5a": 29, "5b": 29, "get": 31, "linear": [31, 38], "tupl": 32, "find": [32, 37], "subsystem": 32, "compris": 32, "overal": 32, "system": 32, "share": 32, "least": 32, "exampl": 32, "c": 32, "e": 32, "f": 32, "sort": 32, "2": [32, 37], "3": 32, "4": 32, "chemical_subsystem": 32, "sublattice_typ": 32, "sublattice_type_multipl": 32, "multipl": 32, "so": 32, "system_index": 32, "sublattice_type_index": 32, "occ": 32, "tol": [33, 36, 37], "float": [33, 36, 37], "1e": [33, 36, 37], "05": [33, 36, 37], "doubl": [33, 36], "point": [33, 36], "toler": [33, 36, 37], "composition_spac": 33, "orthogon": [33, 36], "make": [34, 35, 37], "extrem": 34, "possibl": [34, 37], "given": [34, 35, 37], "end_memb": 34, "whose": 34, "equal": 34, "depend": 34, "param_chem_pot": 35, "composition_convert": 35, "exchang": 35, "tild": 35, "mu": 35, "instanc": 35, "exchange_chemical_potenti": 35, "m_": 35, "ij": 35, "mu_i": 35, "mu_j": 35, "null": 36, "null_composition_spac": 36, "iter": 37, "over": 37, "check": 37, "full": 37, "try": 37, "chosen": 37, "let": 37, "remain": 37, "defin": 37, "onli": 37, "posit": 37, "satisfi": 37, "comparison": 37, "us": 37, "non": 37, "neg": 37, "standard_origin_and_end_memb": 37, "matric": 37, "modul": 0}, "objects": {"libcasm": [[2, 0, 0, "-", "composition"]], "libcasm.composition": [[3, 1, 1, "", "CompositionCalculator"], [9, 1, 1, "", "CompositionConverter"], [31, 3, 1, "", "get_occupant"], [32, 3, 1, "", "make_chemical_subsystems"], [33, 3, 1, "", "make_composition_space"], [34, 3, 1, "", "make_end_members"], [35, 3, 1, "", "make_exchange_chemical_potential"], [36, 3, 1, "", "make_null_composition_space"], [37, 3, 1, "", "make_standard_origin_and_end_members"], [38, 3, 1, "", "set_occupant"]], "libcasm.composition.CompositionCalculator": [[4, 2, 1, "", "components"], [5, 2, 1, "", "mean_num_each_component"], [6, 2, 1, "", "n_sublat"], [7, 2, 1, "", "num_each_component"], [8, 2, 1, "", "species_frac"]], "libcasm.composition.CompositionConverter": [[10, 2, 1, "", "axes"], [11, 2, 1, "", "components"], [12, 2, 1, "", "dmol_composition"], [13, 2, 1, "", "dparam_composition"], [14, 2, 1, "", "end_member"], [15, 2, 1, "", "end_member_formula"], [16, 2, 1, "", "from_dict"], [17, 2, 1, "", "independent_compositions"], [18, 2, 1, "", "matrixQ"], [19, 2, 1, "", "matrixR"], [20, 2, 1, "", "mol_component_formula"], [21, 2, 1, "", "mol_composition"], [22, 2, 1, "", "mol_formula"], [23, 2, 1, "", "origin"], [24, 2, 1, "", "origin_formula"], [25, 2, 1, "", "param_chem_pot"], [26, 2, 1, "", "param_chem_pot_formula"], [27, 2, 1, "", "param_component_formula"], [28, 2, 1, "", "param_composition"], [29, 2, 1, "", "param_formula"], [30, 2, 1, "", "to_dict"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "titleterms": {"libcasm": [0, 2, 39], "composit": [0, 2], "The": [], "casm": 0, "modul": [], "about": 0, "licens": 0, "document": 0, "instal": 1, "from": 1, "pypi": 1, "sourc": 1, "For": 1, "contributor": 1, "compositioncalcul": 3, "compon": [4, 11], "mean_num_each_compon": 5, "n_sublat": 6, "num_each_compon": 7, "species_frac": 8, "compositionconvert": 9, "ax": 10, "dmol_composit": 12, "dparam_composit": 13, "end_memb": 14, "end_member_formula": 15, "from_dict": 16, "independent_composit": 17, "matrixq": 18, "matrixr": 19, "mol_component_formula": 20, "mol_composit": 21, "mol_formula": 22, "origin": 23, "origin_formula": 24, "param_chem_pot": 25, "param_chem_pot_formula": 26, "param_component_formula": 27, "param_composit": 28, "param_formula": 29, "to_dict": 30, "get_occup": 31, "make_chemical_subsystem": 32, "make_composition_spac": 33, "make_end_memb": 34, "make_exchange_chemical_potenti": 35, "make_null_composition_spac": 36, "make_standard_origin_and_end_memb": 37, "set_occup": 38, "packag": 39}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinxcontrib.bibtex": 9, "sphinx.ext.intersphinx": 1, "sphinx": 60}, "alltitles": {"libcasm-composition": [[0, "libcasm-composition"]], "About CASM": [[0, "about-casm"]], "License": [[0, "license"]], "Documentation": [[0, "documentation"]], "Installation": [[1, "installation"]], "Install from PyPI": [[1, "install-from-pypi"]], "Install from source": [[1, "install-from-source"]], "For contributors": [[1, "for-contributors"]], "libcasm.composition": [[2, "module-libcasm.composition"]], "CompositionCalculator": [[3, "compositioncalculator"]], "components": [[4, "components"], [11, "components"]], "mean_num_each_component": [[5, "mean-num-each-component"]], "n_sublat": [[6, "n-sublat"]], "num_each_component": [[7, "num-each-component"]], "species_frac": [[8, "species-frac"]], "CompositionConverter": [[9, "compositionconverter"]], "axes": [[10, "axes"]], "dmol_composition": [[12, "dmol-composition"]], "dparam_composition": [[13, "dparam-composition"]], "end_member": [[14, "end-member"]], "end_member_formula": [[15, "end-member-formula"]], "from_dict": [[16, "from-dict"]], "independent_compositions": [[17, "independent-compositions"]], "matrixQ": [[18, "matrixq"]], "matrixR": [[19, "matrixr"]], "mol_component_formula": [[20, "mol-component-formula"]], "mol_composition": [[21, "mol-composition"]], "mol_formula": [[22, "mol-formula"]], "origin": [[23, "origin"]], "origin_formula": [[24, "origin-formula"]], "param_chem_pot": [[25, "param-chem-pot"]], "param_chem_pot_formula": [[26, "param-chem-pot-formula"]], "param_component_formula": [[27, "param-component-formula"]], "param_composition": [[28, "param-composition"]], "param_formula": [[29, "param-formula"]], "to_dict": [[30, "to-dict"]], "get_occupant": [[31, "get-occupant"]], "make_chemical_subsystems": [[32, "make-chemical-subsystems"]], "make_composition_space": [[33, "make-composition-space"]], "make_end_members": [[34, "make-end-members"]], "make_exchange_chemical_potential": [[35, "make-exchange-chemical-potential"]], "make_null_composition_space": [[36, "make-null-composition-space"]], "make_standard_origin_and_end_members": [[37, "make-standard-origin-and-end-members"]], "set_occupant": [[38, "set-occupant"]], "libcasm package": [[39, "libcasm-package"]]}, "indexentries": {"libcasm.composition": [[2, "module-libcasm.composition"]], "module": [[2, "module-libcasm.composition"]], "compositioncalculator (class in libcasm.composition)": [[3, "libcasm.composition.CompositionCalculator"]], "components() (libcasm.composition.compositioncalculator method)": [[4, "libcasm.composition.CompositionCalculator.components"]], "mean_num_each_component() (libcasm.composition.compositioncalculator method)": [[5, "libcasm.composition.CompositionCalculator.mean_num_each_component"]], "n_sublat() (libcasm.composition.compositioncalculator method)": [[6, "libcasm.composition.CompositionCalculator.n_sublat"]], "num_each_component() (libcasm.composition.compositioncalculator method)": [[7, "libcasm.composition.CompositionCalculator.num_each_component"]], "species_frac() (libcasm.composition.compositioncalculator method)": [[8, "libcasm.composition.CompositionCalculator.species_frac"]], "compositionconverter (class in libcasm.composition)": [[9, "libcasm.composition.CompositionConverter"]], "axes() (libcasm.composition.compositionconverter method)": [[10, "libcasm.composition.CompositionConverter.axes"]], "components() (libcasm.composition.compositionconverter method)": [[11, "libcasm.composition.CompositionConverter.components"]], "dmol_composition() (libcasm.composition.compositionconverter method)": [[12, "libcasm.composition.CompositionConverter.dmol_composition"]], "dparam_composition() (libcasm.composition.compositionconverter method)": [[13, "libcasm.composition.CompositionConverter.dparam_composition"]], "end_member() (libcasm.composition.compositionconverter method)": [[14, "libcasm.composition.CompositionConverter.end_member"]], "end_member_formula() (libcasm.composition.compositionconverter method)": [[15, "libcasm.composition.CompositionConverter.end_member_formula"]], "from_dict() (libcasm.composition.compositionconverter static method)": [[16, "libcasm.composition.CompositionConverter.from_dict"]], "independent_compositions() (libcasm.composition.compositionconverter method)": [[17, "libcasm.composition.CompositionConverter.independent_compositions"]], "matrixq() (libcasm.composition.compositionconverter method)": [[18, "libcasm.composition.CompositionConverter.matrixQ"]], "matrixr() (libcasm.composition.compositionconverter method)": [[19, "libcasm.composition.CompositionConverter.matrixR"]], "mol_component_formula() (libcasm.composition.compositionconverter method)": [[20, "libcasm.composition.CompositionConverter.mol_component_formula"]], "mol_composition() (libcasm.composition.compositionconverter method)": [[21, "libcasm.composition.CompositionConverter.mol_composition"]], "mol_formula() (libcasm.composition.compositionconverter method)": [[22, "libcasm.composition.CompositionConverter.mol_formula"]], "origin() (libcasm.composition.compositionconverter method)": [[23, "libcasm.composition.CompositionConverter.origin"]], "origin_formula() (libcasm.composition.compositionconverter method)": [[24, "libcasm.composition.CompositionConverter.origin_formula"]], "param_chem_pot() (libcasm.composition.compositionconverter method)": [[25, "libcasm.composition.CompositionConverter.param_chem_pot"]], "param_chem_pot_formula() (libcasm.composition.compositionconverter method)": [[26, "libcasm.composition.CompositionConverter.param_chem_pot_formula"]], "param_component_formula() (libcasm.composition.compositionconverter method)": [[27, "libcasm.composition.CompositionConverter.param_component_formula"]], "param_composition() (libcasm.composition.compositionconverter method)": [[28, "libcasm.composition.CompositionConverter.param_composition"]], "param_formula() (libcasm.composition.compositionconverter method)": [[29, "libcasm.composition.CompositionConverter.param_formula"]], "to_dict() (libcasm.composition.compositionconverter method)": [[30, "libcasm.composition.CompositionConverter.to_dict"]], "get_occupant() (in module libcasm.composition)": [[31, "libcasm.composition.get_occupant"]], "make_chemical_subsystems() (in module libcasm.composition)": [[32, "libcasm.composition.make_chemical_subsystems"]], "make_composition_space() (in module libcasm.composition)": [[33, "libcasm.composition.make_composition_space"]], "make_end_members() (in module libcasm.composition)": [[34, "libcasm.composition.make_end_members"]], "make_exchange_chemical_potential() (in module libcasm.composition)": [[35, "libcasm.composition.make_exchange_chemical_potential"]], "make_null_composition_space() (in module libcasm.composition)": [[36, "libcasm.composition.make_null_composition_space"]], "make_standard_origin_and_end_members() (in module libcasm.composition)": [[37, "libcasm.composition.make_standard_origin_and_end_members"]], "set_occupant() (in module libcasm.composition)": [[38, "libcasm.composition.set_occupant"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["index", "installation", "reference/libcasm/_autosummary/libcasm.composition", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.components", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.mean_num_each_component", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.n_sublat", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.num_each_component", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.species_frac", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.axes", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.components", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dmol_composition", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dparam_composition", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.from_dict", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.independent_compositions", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixQ", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixR", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_component_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_composition", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_component_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_composition", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_formula", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.to_dict", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict", "reference/libcasm/_autosummary/libcasm.composition.get_occupant", "reference/libcasm/_autosummary/libcasm.composition.make_chemical_subsystems", "reference/libcasm/_autosummary/libcasm.composition.make_composition_space", "reference/libcasm/_autosummary/libcasm.composition.make_end_members", "reference/libcasm/_autosummary/libcasm.composition.make_exchange_chemical_potential", "reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members", "reference/libcasm/_autosummary/libcasm.composition.make_null_composition_space", "reference/libcasm/_autosummary/libcasm.composition.make_standard_axes", "reference/libcasm/_autosummary/libcasm.composition.make_standard_origin_and_end_members", "reference/libcasm/_autosummary/libcasm.composition.pretty_json", "reference/libcasm/_autosummary/libcasm.composition.print_axes_summary", "reference/libcasm/_autosummary/libcasm.composition.print_axes_table", "reference/libcasm/_autosummary/libcasm.composition.set_occupant", "reference/libcasm/index"], "filenames": ["index.rst", "installation.rst", "reference/libcasm/_autosummary/libcasm.composition.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.allowed_occs.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.components.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.from_dict.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.mean_num_each_component.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.n_sublat.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.num_each_component.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.species_frac.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.to_dict.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionCalculator.vacancy_names.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.axes.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.components.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dmol_composition.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.dparam_composition.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.end_member_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.from_dict.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.independent_compositions.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixQ.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.matrixR.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_component_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_composition.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.mol_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.origin_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_chem_pot_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_component_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_composition.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.param_formula.rst", "reference/libcasm/_autosummary/libcasm.composition.CompositionConverter.to_dict.rst", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.rst", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.composition_ref.rst", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.energy_ref.rst", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.formation_energy.rst", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.from_dict.rst", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.h.rst", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.independent_compositions.rst", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.reference_energy.rst", "reference/libcasm/_autosummary/libcasm.composition.FormationEnergyCalculator.to_dict.rst", "reference/libcasm/_autosummary/libcasm.composition.get_occupant.rst", "reference/libcasm/_autosummary/libcasm.composition.make_chemical_subsystems.rst", "reference/libcasm/_autosummary/libcasm.composition.make_composition_space.rst", "reference/libcasm/_autosummary/libcasm.composition.make_end_members.rst", "reference/libcasm/_autosummary/libcasm.composition.make_exchange_chemical_potential.rst", "reference/libcasm/_autosummary/libcasm.composition.make_normalized_origin_and_end_members.rst", "reference/libcasm/_autosummary/libcasm.composition.make_null_composition_space.rst", "reference/libcasm/_autosummary/libcasm.composition.make_standard_axes.rst", "reference/libcasm/_autosummary/libcasm.composition.make_standard_origin_and_end_members.rst", "reference/libcasm/_autosummary/libcasm.composition.pretty_json.rst", "reference/libcasm/_autosummary/libcasm.composition.print_axes_summary.rst", "reference/libcasm/_autosummary/libcasm.composition.print_axes_table.rst", "reference/libcasm/_autosummary/libcasm.composition.set_occupant.rst", "reference/libcasm/index.rst"], "titles": ["libcasm-composition", "Installation", "libcasm.composition", "CompositionCalculator", "allowed_occs", "components", "from_dict", "mean_num_each_component", "n_sublat", "num_each_component", "species_frac", "to_dict", "vacancy_names", "CompositionConverter", "axes", "components", "dmol_composition", "dparam_composition", "end_member", "end_member_formula", "from_dict", "independent_compositions", "matrixQ", "matrixR", "mol_component_formula", "mol_composition", "mol_formula", "origin", "origin_formula", "param_chem_pot", "param_chem_pot_formula", "param_component_formula", "param_composition", "param_formula", "to_dict", "FormationEnergyCalculator", "composition_ref", "energy_ref", "formation_energy", "from_dict", "h", "independent_compositions", "reference_energy", "to_dict", "get_occupant", "make_chemical_subsystems", "make_composition_space", "make_end_members", "make_exchange_chemical_potential", "make_normalized_origin_and_end_members", "make_null_composition_space", "make_standard_axes", "make_standard_origin_and_end_members", "pretty_json", "print_axes_summary", "print_axes_table", "set_occupant", "libcasm package"], "terms": {"packag": 0, "i": [0, 1, 3, 13, 18, 19, 21, 24, 30, 31, 35, 38, 39, 42, 43, 45, 46, 48, 49, 50, 51, 52, 54], "thi": [0, 3, 13, 21, 38, 42, 45, 47, 52], "includ": [0, 13, 30, 52, 54], "method": [0, 3, 13, 35, 45, 47, 52], "construct": [0, 6, 20, 52], "standard": [0, 51, 52], "ax": [0, 2, 13, 20, 21, 27, 34, 38, 41, 42, 49, 51, 52, 54, 55], "convert": [0, 13, 16, 17, 25, 29, 32], "between": [0, 13], "mol": [0, 13, 15, 18, 24, 27], "parametr": [0, 13, 16, 17, 21, 25, 30, 31, 32, 48, 49, 51, 52, 54], "calcul": [0, 2, 3, 6, 35, 38, 39, 40, 42, 51], "configur": [0, 35, 38], "sublattic": [0, 3, 4, 7, 8, 9, 10, 44, 45, 46, 47, 50, 51, 52, 56], "part": 0, "open": 0, "sourc": [0, 35, 38, 39, 42, 43, 49, 51, 54, 55], "softwar": 0, "which": [0, 3, 48, 51], "design": 0, "perform": 0, "first": [0, 13, 49, 52], "principl": 0, "statist": 0, "mechan": 0, "studi": 0, "multi": 0, "compon": [0, 3, 7, 9, 12, 13, 24, 31, 44, 45, 46, 47, 50, 51, 52, 56], "crystallin": 0, "solid": [0, 13], "develop": 0, "van": 0, "der": 0, "ven": 0, "group": 0, "origin": [0, 13, 28, 49, 51, 52, 55], "univers": 0, "michigan": 0, "current": [0, 52], "california": 0, "santa": 0, "barbara": 0, "For": [0, 3, 35, 44, 45, 46, 47, 50, 51, 52, 56], "more": [0, 3, 13, 38, 42, 46, 50, 51], "inform": 0, "see": [0, 1, 39, 49], "homepag": 0, "gnu": 0, "lesser": 0, "gener": [0, 55], "public": 0, "lgpl": 0, "pleas": 0, "file": 0, "avail": 0, "github": 0, "instal": 0, "from": [0, 3, 6, 20, 30, 39, 47, 51], "pypi": 0, "contributor": 0, "refer": [0, 13, 20, 34, 35, 36, 37, 39, 40, 42, 43], "casm": [1, 2], "built": 1, "maco": 1, "x86_64": 1, "intel": 1, "arm64": 1, "appl": 1, "silicon": 1, "linux": 1, "aarch64": 1, "The": [0, 1, 3, 4, 5, 7, 8, 9, 10, 12, 13, 15, 18, 20, 21, 27, 30, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 56], "latest": 1, "releas": 1, "libcasm": [1, 3, 13, 35, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], "composit": [1, 3, 5, 7, 9, 10, 13, 15, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30, 31, 32, 34, 35, 36, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56], "can": [1, 3, 13], "pip": 1, "contribut": 1, "guid": 1, "convers": [2, 13], "function": 2, "class": [2, 3, 13, 35], "self": [3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34], "list": [3, 4, 5, 13, 14, 15, 39, 43, 44, 45, 46, 47, 50, 51, 52, 55, 56], "str": [3, 4, 5, 12, 13, 14, 15, 19, 24, 26, 28, 30, 31, 33, 44, 45, 46, 47, 50, 51, 52, 53, 55, 56], "allowed_occ": [3, 44, 45, 46, 47, 50, 51, 52, 56], "vacancy_nam": [3, 13, 46, 50, 51], "set": [3, 12, 13, 45, 46, 50, 51, 52, 56], "va": [3, 10, 13, 30, 46, 50, 54], "base": [3, 13, 35], "pybind11_object": [3, 13], "occup": [3, 4, 7, 9, 10, 13, 44, 47, 49, 51, 52, 56], "vector": [3, 5, 13, 15, 35, 36, 44, 45, 46, 47, 50, 51, 52, 56], "note": [3, 13, 39, 43], "ar": [3, 13, 35, 47, 49, 51, 52, 55], "integ": [3, 47], "indic": [3, 7, 9, 10, 44, 45, 55, 56], "each": [3, 4, 7, 9, 13, 44, 45, 46, 47, 49, 50, 51, 52, 56], "site": [3, 7, 9, 10, 13, 44, 49, 51, 56], "period": 3, "crystal": [3, 47, 52], "accord": [3, 13, 35, 46, 50, 52], "occupant_nam": [3, 44, 56], "b": [3, 13, 14, 26, 45, 54, 55], "site_index": [3, 44, 56], "where": [3, 13, 35, 38, 42], "name": [3, 4, 12, 13, 44, 46, 50, 51, 56], "allow": [3, 4, 7, 9, 10, 44, 45, 46, 47, 50, 51, 52, 56], "occupi": [3, 44, 45, 46, 47, 50, 51, 52, 56], "th": [3, 18, 19, 24, 31, 35], "number": [3, 7, 8, 9, 13, 16, 17, 21, 25, 32, 38, 41, 42, 47, 52], "n_sublat": 3, "len": [3, 47], "volum": 3, "being": 3, "unit": [3, 13, 16, 17, 25, 32, 49, 51, 52], "cell": [3, 7, 13, 16, 17, 25, 32, 35, 37, 49, 51, 52], "supercel": 3, "index": [3, 30, 44, 56], "associ": 3, "particular": [3, 44, 45, 54, 56], "determin": [3, 35, 47, 51], "definit": [3, 49], "consist": 3, "organ": [3, 45], "block": 3, "sublat": 3, "0": [3, 7, 9, 10, 13, 30, 33, 43, 45, 54, 55], "1": [3, 7, 9, 10, 13, 16, 17, 18, 25, 26, 27, 29, 32, 35, 36, 38, 43, 44, 45, 48, 52, 54, 55, 56], "shape": [3, 13, 35, 36, 37, 38, 42], "order": [3, 5, 13, 15, 45, 46, 47, 50, 51, 52], "within": 3, "doe": [3, 52], "matter": 3, "purpos": 3, "paramet": [3, 6, 7, 9, 10, 13, 30, 35, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56], "request": [3, 13, 45, 46, 47, 50, 51, 52], "should": [3, 13, 46, 50, 51], "recogn": [3, 13, 46, 50, 51], "vacanc": [3, 12, 13, 46, 50, 51, 54], "an": [3, 13, 45, 46, 50, 51], "except": [3, 13, 46, 50, 51], "rais": [3, 13, 46, 50, 51], "than": [3, 13, 46, 50, 51], "one": [3, 13, 42, 45, 46, 49, 50, 51], "compositioncalcul": [4, 5, 6, 7, 8, 9, 10, 11, 12, 51], "result": [5, 42, 52], "numpi": [7, 9, 10, 13, 16, 17, 18, 22, 23, 25, 27, 29, 32, 44, 46, 47, 48, 50, 52, 56], "ndarrai": [7, 9, 10, 13, 16, 17, 18, 22, 23, 25, 27, 29, 32, 35, 36, 37, 38, 40, 42, 44, 46, 47, 48, 49, 50, 52, 56], "int32": [7, 9, 10, 44, 47, 56], "m": [7, 9, 10, 13, 16, 17, 18, 22, 23, 25, 27, 29, 32, 44, 46, 47, 48, 50, 52, 56], "sublattice_index": [7, 9, 10], "int": [7, 8, 9, 10, 18, 19, 21, 24, 30, 31, 41, 44, 45, 56], "none": [7, 9, 10, 51, 54, 55, 56], "float64": [7, 9, 10, 13, 16, 17, 18, 22, 23, 25, 27, 29, 32, 46, 47, 48, 50, 52], "per": [7, 13, 16, 17, 25, 32, 35, 37, 49, 51, 52], "primit": [7, 35, 37], "int64": [7, 9, 10, 44, 56], "valu": [7, 9, 10, 44, 48, 56], "correspond": [7, 9, 10, 13, 44, 46, 49, 50, 51, 56], "basi": [7, 9, 10, 13, 44, 56], "option": [7, 9, 10, 51, 54, 55], "If": [7, 9, 10, 13, 30, 42, 51, 52, 54, 55], "return": [6, 7, 9, 10, 11, 19, 22, 23, 24, 26, 28, 30, 31, 33, 38, 39, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52], "specifi": [7, 9, 10, 44, 45, 52, 56], "rang": [7, 9, 10], "n_sublattic": [7, 9, 10], "comp_n": [7, 54], "primitv": 7, "type": [6, 7, 9, 10, 11, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52], "n_compon": [7, 9, 10, 13, 46, 47, 48, 50, 52], "total": 9, "total_n": 9, "speci": [10, 13, 44, 46, 50, 51, 56], "fraction": [10, 46, 50], "origin_and_end_memb": [13, 49], "n": [13, 16, 17, 19, 22, 23, 25, 26, 28, 31, 32, 33, 38, 42, 46, 47, 48, 49, 50, 52], "handl": 13, "form": 13, "vec": [13, 16, 17, 19, 24, 25, 26, 28, 31, 32, 33, 48, 49], "_0": [13, 19, 28, 49], "mathbf": [13, 48], "q": [13, 19, 22, 48, 49], "x": [13, 16, 17, 24, 25, 26, 32, 33, 48], "r": [13, 23], "mathsf": [13, 23, 48], "t": [13, 23, 48], "length": 13, "": [13, 38, 42], "k": [13, 14, 21, 35, 36, 37, 38, 42, 52], "give": 13, "along": [13, 49, 51], "axi": [13, 30, 49, 51], "when": 13, "referenc": 13, "space": [13, 21, 35, 46, 47, 50, 52], "independ": [13, 38, 41, 42, 45], "matrix": [13, 22, 23, 35, 36, 46, 47, 48, 49, 50, 52], "column": [13, 35, 36, 38, 46, 47, 49, 50, 52], "repres": [6, 11, 13, 34, 38, 42, 43, 52], "end": [13, 18, 19, 47, 49, 51, 52], "member": [13, 18, 19, 47, 49, 51, 52], "dual": 13, "span": [13, 52], "n_composition_ax": [13, 46, 48, 50, 52], "A": [6, 11, 13, 14, 26, 45, 47, 48, 49, 51, 52, 54, 55], "choic": [13, 35, 52, 54], "subsequ": [13, 49, 52], "row": [13, 46, 47, 50, 52], "compositionconvert": [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 48, 49, 51, 54, 55], "size": 14, "dx": [16, 29], "chang": [13, 16, 17, 49, 51], "d": [16, 17, 45], "dn": [17, 29], "parameter": [18, 27], "formula": [13, 19, 24, 26, 28, 30, 31, 33, 54, 55], "q_i": [], "static": [6, 20, 39], "arg0": 20, "json": [6, 11, 20, 34, 53], "python": [6, 11, 20, 34, 39, 43], "dict": [6, 11, 20, 34, 39, 43, 55], "document": [20, 34], "expect": [20, 39], "format": [20, 34, 35, 38, 39, 54, 55], "dimension": [21, 35], "n_i": 24, "term": [13, 24, 26, 30, 31, 33], "ex": [26, 33], "chem_pot": [29, 30, 54], "dg": 29, "conjug": [30, 48], "potenti": [30, 48, 54], "chemic": [30, 45, 48, 54], "x_i": 31, "5": [33, 45, 54], "5a": 33, "5b": 33, "get": 44, "linear": [44, 56], "tupl": [45, 51], "find": [45, 49, 51, 52], "subsystem": 45, "compris": 45, "overal": 45, "system": 45, "share": 45, "least": 45, "exampl": [43, 45, 54, 55], "c": [13, 35, 45], "e": [35, 45], "f": 45, "sort": [45, 51], "2": [13, 43, 45, 52], "3": [43, 45], "4": 45, "chemical_subsystem": 45, "sublattice_typ": 45, "sublattice_type_multipl": 45, "multipl": 45, "so": [45, 49, 51], "system_index": 45, "sublattice_type_index": 45, "occ": 45, "tol": [46, 49, 50, 51, 52], "float": [35, 38, 46, 49, 50, 51, 52], "1e": [46, 49, 50, 51, 52], "05": [46, 49, 50, 51, 52], "doubl": [46, 50], "point": [46, 50], "toler": [46, 49, 50, 51, 52], "composition_spac": 46, "orthogon": [46, 50], "make": [47, 48, 51, 52], "extrem": [13, 47, 51, 52], "possibl": [47, 52], "given": [35, 47, 48, 51, 52], "end_memb": 47, "whose": 47, "equal": 47, "depend": 47, "param_chem_pot": [48, 54], "composition_convert": [48, 54], "exchang": 48, "tild": 48, "mu": 48, "instanc": 48, "exchange_chemical_potenti": 48, "m_": 48, "ij": [13, 48], "mu_i": 48, "mu_j": 48, "null": 50, "null_composition_spac": 50, "iter": 52, "over": 52, "check": 52, "full": 52, "try": 52, "chosen": 52, "let": 52, "remain": [49, 52], "defin": 52, "onli": 52, "posit": 52, "satisfi": 52, "comparison": [49, 51, 52], "us": [13, 49, 51, 52], "non": [49, 51, 52], "neg": [49, 51, 52], "standard_origin_and_end_memb": 52, "matric": 52, "modul": 0, "data": [6, 11, 39, 43, 53], "_i": [13, 19, 49], "due": 13, "preserv": 13, "sum_": [13, 35], "q_": 13, "said": 13, "normal": [13, 35, 37, 49, 51], "sens": 13, "distanc": [13, 49], "endmemb": 13, "usual": 13, "solut": 13, "In": 13, "context": 13, "mean": 13, "print": [13, 53, 54, 55], "charact": 13, "etc": 13, "x_1": 13, "x_2": 13, "x_3": 13, "_1": 13, "_2": 13, "_3": 13, "include_va": [30, 54], "bool": [30, 51, 54], "fals": [30, 51, 54], "start": 30, "true": [30, 51, 54], "output": [30, 54, 55], "default": [30, 54, 55], "assum": [30, 54], "composition_ref": [35, 43], "energy_ref": [35, 43], "object": [35, 39, 51, 54], "energi": [35, 37, 38, 40, 42, 43], "state": [35, 36, 37, 39, 43], "requir": 35, "h_0": [35, 40], "h_1": [35, 40], "dot": [35, 40], "h_k": [35, 40], "need": [35, 40], "newcommand": 35, "config": 35, "mathbb": 35, "config_i": 35, "j": 35, "h_i": 35, "x_j": 35, "element": 35, "constructor": 35, "np": [35, 36, 37, 38, 40, 42, 49], "attribut": 35, "formationenergycalcul": [36, 37, 38, 39, 40, 41, 42, 43], "1d": [37, 38, 42], "arrai": [37, 38, 42], "structur": [38, 42], "mai": [38, 42], "singl": [38, 39, 42, 43], "2d": [38, 42], "union": [38, 51], "scalar": [38, 42], "creat": 39, "ref": 39, "transpos": [39, 43], "keep": [39, 43], "to_dict": 39, "provid": 42, "input": 42, "detail": 49, "normalized_origin_and_end_memb": 49, "modifi": 49, "occupation_index": 51, "correpsond": 51, "found": 51, "string": [51, 53], "alphabet": 51, "go": 51, "standard_ax": 51, "These": 52, "pretti": 53, "out": [54, 55], "textio": [54, 55], "summari": [54, 55], "comp": 54, "zero": 54, "stream": [54, 55], "sy": [54, 55], "stdout": [54, 55], "possible_ax": 55, "sever": 55, "kei": 55, "contain": 55}, "objects": {"libcasm": [[2, 0, 0, "-", "composition"]], "libcasm.composition": [[3, 1, 1, "", "CompositionCalculator"], [13, 1, 1, "", "CompositionConverter"], [35, 1, 1, "", "FormationEnergyCalculator"], [44, 4, 1, "", "get_occupant"], [45, 4, 1, "", "make_chemical_subsystems"], [46, 4, 1, "", "make_composition_space"], [47, 4, 1, "", "make_end_members"], [48, 4, 1, "", "make_exchange_chemical_potential"], [49, 4, 1, "", "make_normalized_origin_and_end_members"], [50, 4, 1, "", "make_null_composition_space"], [51, 4, 1, "", "make_standard_axes"], [52, 4, 1, "", "make_standard_origin_and_end_members"], [53, 4, 1, "", "pretty_json"], [54, 4, 1, "", "print_axes_summary"], [55, 4, 1, "", "print_axes_table"], [56, 4, 1, "", "set_occupant"]], "libcasm.composition.CompositionCalculator": [[4, 2, 1, "", "allowed_occs"], [5, 2, 1, "", "components"], [6, 2, 1, "", "from_dict"], [7, 2, 1, "", "mean_num_each_component"], [8, 2, 1, "", "n_sublat"], [9, 2, 1, "", "num_each_component"], [10, 2, 1, "", "species_frac"], [11, 2, 1, "", "to_dict"], [12, 2, 1, "", "vacancy_names"]], "libcasm.composition.CompositionConverter": [[14, 2, 1, "", "axes"], [15, 2, 1, "", "components"], [16, 2, 1, "", "dmol_composition"], [17, 2, 1, "", "dparam_composition"], [18, 2, 1, "", "end_member"], [19, 2, 1, "", "end_member_formula"], [20, 2, 1, "", "from_dict"], [21, 2, 1, "", "independent_compositions"], [22, 2, 1, "", "matrixQ"], [23, 2, 1, "", "matrixR"], [24, 2, 1, "", "mol_component_formula"], [25, 2, 1, "", "mol_composition"], [26, 2, 1, "", "mol_formula"], [27, 2, 1, "", "origin"], [28, 2, 1, "", "origin_formula"], [29, 2, 1, "", "param_chem_pot"], [30, 2, 1, "", "param_chem_pot_formula"], [31, 2, 1, "", "param_component_formula"], [32, 2, 1, "", "param_composition"], [33, 2, 1, "", "param_formula"], [34, 2, 1, "", "to_dict"]], "libcasm.composition.FormationEnergyCalculator": [[36, 3, 1, "", "composition_ref"], [37, 3, 1, "", "energy_ref"], [38, 2, 1, "", "formation_energy"], [39, 2, 1, "", "from_dict"], [40, 3, 1, "", "h"], [41, 3, 1, "", "independent_compositions"], [42, 2, 1, "", "reference_energy"], [43, 2, 1, "", "to_dict"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "titleterms": {"libcasm": [0, 2, 57], "composit": [0, 2], "The": [], "casm": 0, "modul": [], "about": 0, "licens": 0, "document": 0, "instal": 1, "from": 1, "pypi": 1, "sourc": 1, "For": 1, "contributor": 1, "compositioncalcul": 3, "compon": [5, 15], "mean_num_each_compon": 7, "n_sublat": 8, "num_each_compon": 9, "species_frac": 10, "compositionconvert": 13, "ax": 14, "dmol_composit": 16, "dparam_composit": 17, "end_memb": 18, "end_member_formula": 19, "from_dict": [6, 20, 39], "independent_composit": [21, 41], "matrixq": 22, "matrixr": 23, "mol_component_formula": 24, "mol_composit": 25, "mol_formula": 26, "origin": 27, "origin_formula": 28, "param_chem_pot": 29, "param_chem_pot_formula": 30, "param_component_formula": 31, "param_composit": 32, "param_formula": 33, "to_dict": [11, 34, 43], "get_occup": 44, "make_chemical_subsystem": 45, "make_composition_spac": 46, "make_end_memb": 47, "make_exchange_chemical_potenti": 48, "make_null_composition_spac": 50, "make_standard_origin_and_end_memb": 52, "set_occup": 56, "packag": 57, "allowed_occ": 4, "vacancy_nam": 12, "formationenergycalcul": 35, "composition_ref": 36, "energy_ref": 37, "formation_energi": 38, "h": 40, "reference_energi": 42, "make_normalized_origin_and_end_memb": 49, "make_standard_ax": 51, "pretty_json": 53, "print_axes_summari": 54, "print_axes_t": 55}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinxcontrib.bibtex": 9, "sphinx.ext.intersphinx": 1, "sphinx": 60}, "alltitles": {"libcasm-composition": [[0, "libcasm-composition"]], "About CASM": [[0, "about-casm"]], "License": [[0, "license"]], "Documentation": [[0, "documentation"]], "Installation": [[1, "installation"]], "Install from PyPI": [[1, "install-from-pypi"]], "Install from source": [[1, "install-from-source"]], "For contributors": [[1, "for-contributors"]], "libcasm.composition": [[2, "module-libcasm.composition"]], "CompositionCalculator": [[3, "compositioncalculator"]], "allowed_occs": [[4, "allowed-occs"]], "components": [[5, "components"], [15, "components"]], "from_dict": [[6, "from-dict"], [20, "from-dict"], [39, "from-dict"]], "mean_num_each_component": [[7, "mean-num-each-component"]], "n_sublat": [[8, "n-sublat"]], "num_each_component": [[9, "num-each-component"]], "species_frac": [[10, "species-frac"]], "to_dict": [[11, "to-dict"], [34, "to-dict"], [43, "to-dict"]], "vacancy_names": [[12, "vacancy-names"]], "CompositionConverter": [[13, "compositionconverter"]], "axes": [[14, "axes"]], "dmol_composition": [[16, "dmol-composition"]], "dparam_composition": [[17, "dparam-composition"]], "end_member": [[18, "end-member"]], "end_member_formula": [[19, "end-member-formula"]], "independent_compositions": [[21, "independent-compositions"], [41, "independent-compositions"]], "matrixQ": [[22, "matrixq"]], "matrixR": [[23, "matrixr"]], "mol_component_formula": [[24, "mol-component-formula"]], "mol_composition": [[25, "mol-composition"]], "mol_formula": [[26, "mol-formula"]], "origin": [[27, "origin"]], "origin_formula": [[28, "origin-formula"]], "param_chem_pot": [[29, "param-chem-pot"]], "param_chem_pot_formula": [[30, "param-chem-pot-formula"]], "param_component_formula": [[31, "param-component-formula"]], "param_composition": [[32, "param-composition"]], "param_formula": [[33, "param-formula"]], "FormationEnergyCalculator": [[35, "formationenergycalculator"]], "composition_ref": [[36, "composition-ref"]], "energy_ref": [[37, "energy-ref"]], "formation_energy": [[38, "formation-energy"]], "h": [[40, "h"]], "reference_energy": [[42, "reference-energy"]], "get_occupant": [[44, "get-occupant"]], "make_chemical_subsystems": [[45, "make-chemical-subsystems"]], "make_composition_space": [[46, "make-composition-space"]], "make_end_members": [[47, "make-end-members"]], "make_exchange_chemical_potential": [[48, "make-exchange-chemical-potential"]], "make_normalized_origin_and_end_members": [[49, "make-normalized-origin-and-end-members"]], "make_null_composition_space": [[50, "make-null-composition-space"]], "make_standard_axes": [[51, "make-standard-axes"]], "make_standard_origin_and_end_members": [[52, "make-standard-origin-and-end-members"]], "pretty_json": [[53, "pretty-json"]], "print_axes_summary": [[54, "print-axes-summary"]], "print_axes_table": [[55, "print-axes-table"]], "set_occupant": [[56, "set-occupant"]], "libcasm package": [[57, "libcasm-package"]]}, "indexentries": {"libcasm.composition": [[2, "module-libcasm.composition"]], "module": [[2, "module-libcasm.composition"]], "compositioncalculator (class in libcasm.composition)": [[3, "libcasm.composition.CompositionCalculator"]], "allowed_occs() (libcasm.composition.compositioncalculator method)": [[4, "libcasm.composition.CompositionCalculator.allowed_occs"]], "components() (libcasm.composition.compositioncalculator method)": [[5, "libcasm.composition.CompositionCalculator.components"]], "from_dict() (libcasm.composition.compositioncalculator static method)": [[6, "libcasm.composition.CompositionCalculator.from_dict"]], "mean_num_each_component() (libcasm.composition.compositioncalculator method)": [[7, "libcasm.composition.CompositionCalculator.mean_num_each_component"]], "n_sublat() (libcasm.composition.compositioncalculator method)": [[8, "libcasm.composition.CompositionCalculator.n_sublat"]], "num_each_component() (libcasm.composition.compositioncalculator method)": [[9, "libcasm.composition.CompositionCalculator.num_each_component"]], "species_frac() (libcasm.composition.compositioncalculator method)": [[10, "libcasm.composition.CompositionCalculator.species_frac"]], "to_dict() (libcasm.composition.compositioncalculator method)": [[11, "libcasm.composition.CompositionCalculator.to_dict"]], "vacancy_names() (libcasm.composition.compositioncalculator method)": [[12, "libcasm.composition.CompositionCalculator.vacancy_names"]], "compositionconverter (class in libcasm.composition)": [[13, "libcasm.composition.CompositionConverter"]], "axes() (libcasm.composition.compositionconverter method)": [[14, "libcasm.composition.CompositionConverter.axes"]], "components() (libcasm.composition.compositionconverter method)": [[15, "libcasm.composition.CompositionConverter.components"]], "dmol_composition() (libcasm.composition.compositionconverter method)": [[16, "libcasm.composition.CompositionConverter.dmol_composition"]], "dparam_composition() (libcasm.composition.compositionconverter method)": [[17, "libcasm.composition.CompositionConverter.dparam_composition"]], "end_member() (libcasm.composition.compositionconverter method)": [[18, "libcasm.composition.CompositionConverter.end_member"]], "end_member_formula() (libcasm.composition.compositionconverter method)": [[19, "libcasm.composition.CompositionConverter.end_member_formula"]], "from_dict() (libcasm.composition.compositionconverter static method)": [[20, "libcasm.composition.CompositionConverter.from_dict"]], "independent_compositions() (libcasm.composition.compositionconverter method)": [[21, "libcasm.composition.CompositionConverter.independent_compositions"]], "matrixq() (libcasm.composition.compositionconverter method)": [[22, "libcasm.composition.CompositionConverter.matrixQ"]], "matrixr() (libcasm.composition.compositionconverter method)": [[23, "libcasm.composition.CompositionConverter.matrixR"]], "mol_component_formula() (libcasm.composition.compositionconverter method)": [[24, "libcasm.composition.CompositionConverter.mol_component_formula"]], "mol_composition() (libcasm.composition.compositionconverter method)": [[25, "libcasm.composition.CompositionConverter.mol_composition"]], "mol_formula() (libcasm.composition.compositionconverter method)": [[26, "libcasm.composition.CompositionConverter.mol_formula"]], "origin() (libcasm.composition.compositionconverter method)": [[27, "libcasm.composition.CompositionConverter.origin"]], "origin_formula() (libcasm.composition.compositionconverter method)": [[28, "libcasm.composition.CompositionConverter.origin_formula"]], "param_chem_pot() (libcasm.composition.compositionconverter method)": [[29, "libcasm.composition.CompositionConverter.param_chem_pot"]], "param_chem_pot_formula() (libcasm.composition.compositionconverter method)": [[30, "libcasm.composition.CompositionConverter.param_chem_pot_formula"]], "param_component_formula() (libcasm.composition.compositionconverter method)": [[31, "libcasm.composition.CompositionConverter.param_component_formula"]], "param_composition() (libcasm.composition.compositionconverter method)": [[32, "libcasm.composition.CompositionConverter.param_composition"]], "param_formula() (libcasm.composition.compositionconverter method)": [[33, "libcasm.composition.CompositionConverter.param_formula"]], "to_dict() (libcasm.composition.compositionconverter method)": [[34, "libcasm.composition.CompositionConverter.to_dict"]], "formationenergycalculator (class in libcasm.composition)": [[35, "libcasm.composition.FormationEnergyCalculator"]], "composition_ref (libcasm.composition.formationenergycalculator attribute)": [[36, "libcasm.composition.FormationEnergyCalculator.composition_ref"]], "energy_ref (libcasm.composition.formationenergycalculator attribute)": [[37, "libcasm.composition.FormationEnergyCalculator.energy_ref"]], "formation_energy() (libcasm.composition.formationenergycalculator method)": [[38, "libcasm.composition.FormationEnergyCalculator.formation_energy"]], "from_dict() (libcasm.composition.formationenergycalculator static method)": [[39, "libcasm.composition.FormationEnergyCalculator.from_dict"]], "h (libcasm.composition.formationenergycalculator attribute)": [[40, "libcasm.composition.FormationEnergyCalculator.h"]], "independent_compositions (libcasm.composition.formationenergycalculator attribute)": [[41, "libcasm.composition.FormationEnergyCalculator.independent_compositions"]], "reference_energy() (libcasm.composition.formationenergycalculator method)": [[42, "libcasm.composition.FormationEnergyCalculator.reference_energy"]], "to_dict() (libcasm.composition.formationenergycalculator method)": [[43, "libcasm.composition.FormationEnergyCalculator.to_dict"]], "get_occupant() (in module libcasm.composition)": [[44, "libcasm.composition.get_occupant"]], "make_chemical_subsystems() (in module libcasm.composition)": [[45, "libcasm.composition.make_chemical_subsystems"]], "make_composition_space() (in module libcasm.composition)": [[46, "libcasm.composition.make_composition_space"]], "make_end_members() (in module libcasm.composition)": [[47, "libcasm.composition.make_end_members"]], "make_exchange_chemical_potential() (in module libcasm.composition)": [[48, "libcasm.composition.make_exchange_chemical_potential"]], "make_normalized_origin_and_end_members() (in module libcasm.composition)": [[49, "libcasm.composition.make_normalized_origin_and_end_members"]], "make_null_composition_space() (in module libcasm.composition)": [[50, "libcasm.composition.make_null_composition_space"]], "make_standard_axes() (in module libcasm.composition)": [[51, "libcasm.composition.make_standard_axes"]], "make_standard_origin_and_end_members() (in module libcasm.composition)": [[52, "libcasm.composition.make_standard_origin_and_end_members"]], "pretty_json() (in module libcasm.composition)": [[53, "libcasm.composition.pretty_json"]], "print_axes_summary() (in module libcasm.composition)": [[54, "libcasm.composition.print_axes_summary"]], "print_axes_table() (in module libcasm.composition)": [[55, "libcasm.composition.print_axes_table"]], "set_occupant() (in module libcasm.composition)": [[56, "libcasm.composition.set_occupant"]]}}) \ No newline at end of file