From c22ef7b81c3d8a173285200d15892a288445f08f Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Tue, 30 Apr 2024 08:59:57 -0600 Subject: [PATCH 1/3] add markdown files for introduction --- book/challenges.md | 92 +++++++++++++++++++++++++++++++++++++++ book/images/workflow.png | Bin 0 -> 186140 bytes book/introduction.md | 2 + 3 files changed, 94 insertions(+) create mode 100644 book/challenges.md create mode 100644 book/images/workflow.png create mode 100644 book/introduction.md diff --git a/book/challenges.md b/book/challenges.md new file mode 100644 index 0000000..5427453 --- /dev/null +++ b/book/challenges.md @@ -0,0 +1,92 @@ +# Challenges for workflow frameworks +Over the recent years a number of simulation frameworks have been developed which address various aspects of the development of simulation protocols. The general challenges are: + +* Interface with the simulation codes**: While some modern simulation codes already provide Python bindings, the majority require simulation code-specific input files, have specific variable names and the internal unit system used by a given simulation code might differ depending on the community it was developed for. +* **Access to high-performance computing (HPC) resources**: Traditional queuing systems like the Simple Linux Utility for Resource Management (SLURM) handle the execution of compute-intensive tasks. Still in the context of up-scaling simulation protocols or parameter studies the tracking of which parameters lead to a successful calculation and which calculations failed remains a manual task. +* **Efficient Data storage**: The input and output files of many simulation codes in the scientific community were intended to be human readable first and the machine readability was only a secondary concern. This resulted in a wide range of different formats of plain text files which are inefficient when the number of calculations increases. + +In the following, we compare the implementation of the same workflow in four different simulation frameworks, namely AiiDA, jobflow, pyiron and Simstack. All four of these frameworks are released as open-source software and developed in the Python programming language + +## Example Workflow +![workflow](images/workflow.png) +The comparison is focused on highlighting the implementation of a new simulation code and a simulation workflow in the four workflow frameworks. The calculation of a structure optimization followed by the calculation of the bulk modulus from fitting an energy volume curve with the quantum espresso open-source density functional theory (DFT) simulation code is chosen as an example workflow. The workflow consists of the following four steps: + +* Create a face-centred-cubic Aluminium supercell with 4 atoms and a lattice constant of 4.15A. +* Use the quantum espresso simulation code to optimize both the lattice constant and the positions in the crystal structure. +* Apply five strains ranging from -10% to +10% on the optimized structure to generate five strained structures. +* Evaluate these five structures with Quantum Espresso to calculate the energy. +* Plot the resulting energy volume curve. + +This workflow covers both a serial dependence of tasks as well as parallel execution of tasks. Rather than using the already existing framework-specific parsers to write the input files and parse the output files for the quantum espresso simulation code the same parser is implemented in all frameworks. This also highlights how new parsers can be developed in a general way to simplify the integration in existing simulation frameworks and enhance the parser's transferability. + +## Implementation +The challenge is to develop a workflow in a way that is can be easily integrated in a number of workflow frameworks, to give the users the option to choose the workflow framework which best suits their needs. + +### Python Function +For the case of python functions, integrating the function should ideally be as simple as setting a python decorator: +```python +@job_decorator +def my_function(*args, **kwargs): + ... +``` + +The generation of the strained structures can be represented as such a python function. It takes a single structure and a list of strains as an input and returns a list of strained structures as an output: +```python +def generate_structures(structure, strain_lst): + structure_lst = [] + for strain in strain_lst: + structure_strain = structure.copy() + structure_strain.set_cell( + structure_strain.cell * strain**(1/3), + scale_atoms=True + ) + structure_lst.append(structure_strain) + return structure_lst +``` + +In the same way, the plotting of the resulting energy volume curve can be represented as python functions: +```python +def plot_energy_volume_curve(volume_lst, energy_lst): + plt.plot(volume_lst, energy_lst) + plt.xlabel("Volume") + plt.ylabel("Energy") + plt.savefig("evcurve.png") +``` + +### External Executable +For the case of interfacing with an external executable three steps are required. The writing of the input files, the calling of the executable and the parsing of the output files. For interfacing with the quantum espresso DFT simulation code, the function to write the input files could be written as: +```python +def write_input(input_dict, working_directory="."): + filename = os.path.join(working_directory, 'input.pwi') + os.makedirs(working_directory, exist_ok=True) + write( + filename=filename, + images=input_dict["structure"], + Crystal=True, + kpts=input_dict["kpts"], + input_data={ + 'calculation': input_dict["calculation"], + 'occupations': 'smearing', + 'degauss': input_dict["smearing"], + }, + pseudopotentials=input_dict["pseudopotentials"], + tstress=True, + tprnfor=True + ) +``` + +Here all quantum espresso-specific inputs are defined by the `input_dict` and the additional `working_directory` specifies the directory in which the input should be written. In analogy, the function to collect the output of the quantum espresso calculation also receives the `working_directory` as input and returns the output as a python dictionary: +```python +def collect_output(working_directory="."): + output = parse_pw(os.path.join(working_directory, "pwscf.xml")) + return { + "structure": output["ase_structure"], + "energy": output["energy"], + "volume": output["ase_structure"].get_volume(), + } +``` + +By choosing to define both the input as well as the output as python dictionary, the interface is very flexible as it can be extended by additional elements. + +### Universal Interface +By following this recommendation of using python functions as well as external executables which are interfaced by one function to write the input and another function to parse the output any simulation workflow can be integrated in any of the four frameworks. This is demonstrated below for the workflow of calculating the energy volume curve with quantum espresso. diff --git a/book/images/workflow.png b/book/images/workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..a72dc35c158831e1e8ff10fad909caa8a399b5a0 GIT binary patch literal 186140 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 {kby$Jq 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 Date: Tue, 30 Apr 2024 11:25:11 -0600 Subject: [PATCH 2/3] continous integration --- .github/workflows/book.yml | 28 ++++++++++++++++++++++++++++ .github/workflows/delpoy.yml | 35 +++++++++++++++++++++++++++++++++++ book/_config.yml | 17 +++++++++++++++++ book/_toc.yml | 8 ++++++++ book/environment.yml | 4 ++++ book/logo_dark.png | Bin 0 -> 66938 bytes 6 files changed, 92 insertions(+) create mode 100644 .github/workflows/book.yml create mode 100644 .github/workflows/delpoy.yml create mode 100644 book/_config.yml create mode 100644 book/_toc.yml create mode 100644 book/environment.yml create mode 100644 book/logo_dark.png diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml new file mode 100644 index 0000000..ec37da0 --- /dev/null +++ b/.github/workflows/book.yml @@ -0,0 +1,28 @@ +name: Jupyterbook + +on: + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: conda-incubator/setup-miniconda@v2 + with: + auto-update-conda: true + python-version: "3.11" + environment-file: book/environment.yml + auto-activate-base: false + - name: Install Jupyterbook + shell: bash -l {0} + run: | + cp book/logo_dark.png . + cp book/_config.yml . + cp book/_toc.yml . + cp book/*.md . + cp -r book/images . + jupyter-book build . --path-output public + - run: mv public/_build/html public_html + - run: touch public_html/.nojekyll diff --git a/.github/workflows/delpoy.yml b/.github/workflows/delpoy.yml new file mode 100644 index 0000000..a2f1238 --- /dev/null +++ b/.github/workflows/delpoy.yml @@ -0,0 +1,35 @@ +name: Deploy + +on: + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: conda-incubator/setup-miniconda@v2 + with: + auto-update-conda: true + python-version: "3.11" + environment-file: book/environment.yml + auto-activate-base: false + - name: Install Jupyterbook + shell: bash -l {0} + run: | + cp book/logo_dark.png . + cp book/_config.yml . + cp book/_toc.yml . + cp book/*.md . + cp -r book/images . + jupyter-book build . --path-output public + - run: mv public/_build/html public_html + - run: touch public_html/.nojekyll + - name: Deploy 🚀 + uses: JamesIves/github-pages-deploy-action@3.7.1 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH: gh-pages # The branch the action should deploy to. + FOLDER: public_html # The folder the action should deploy. + CLEAN: true diff --git a/book/_config.yml b/book/_config.yml new file mode 100644 index 0000000..6e9fb3a --- /dev/null +++ b/book/_config.yml @@ -0,0 +1,17 @@ +title: ADIS2023 +author: pyiron +logo: logo_dark.png + +execute: + execute_notebooks : off + +html: + extra_navbar : Powered by pyiron + +repository: + url : https://github.com/materialdigital/ADIS2023 + path_to_book : "" + +launch_buttons: + notebook_interface : jupyterlab + binderhub_url : https://mybinder.org diff --git a/book/_toc.yml b/book/_toc.yml new file mode 100644 index 0000000..2baa69b --- /dev/null +++ b/book/_toc.yml @@ -0,0 +1,8 @@ +format: jb-book +root: README +chapters: +- file: introduction.md +- file: challenges.md +- file: aiida.ipynb +- file: jobflow.ipynb +- file: pyiron_base.ipynb diff --git a/book/environment.yml b/book/environment.yml new file mode 100644 index 0000000..a3fb454 --- /dev/null +++ b/book/environment.yml @@ -0,0 +1,4 @@ +channels: +- conda-forge +dependencies: +- jupyter-book diff --git a/book/logo_dark.png b/book/logo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a601086e5383ad7bc0f903191f2918ce1022d9c2 GIT binary patch literal 66938 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
  • f8j^3>jdO8{sq(Xm7 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
    *oLK*y`ay)wEI=9t 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

    Xq z;EtQ#fB!AKkXcHIsE_{e-9+OWq~y|x%GJN-xO;=}YAiT3(47vgJqRIn@8(_@yNtaP zO+N7P-a*gL&1!*xw`uaTJq8D(|2NPS&jzWjs!I$Eq#@ydAe-&GvR~LMN2w1ySqyM6 zn0`rHN7PhaVG@JHvyG$AdC6oPHeItvH7(S?W&@$IYNZc(E|~bcx`p#@%$LKgSF$^;h~HCe+Lq=1_%^a zQVe7J{!YgaO*bBV$t+;0^!0_hl`XhWmuOc77VntY5#HS*e@H%ZV6%2+8_knx;)5ulT{-sanOJEm#GJRt|oXh8Ik( zFE*Om{pQ09qax9wP*DF;Fn`36lq~T2dlFG~5(sN6shLKF_UD)4$Vg>3GS7t}Q8oUG z>Nz-uC!wq_s4Mp(JV@{kG%Lp!`SU6WSKlc1hzlCH0=MS{qT=Tg34tY&1!i9tv9Z%z z2DYRss`2I-Hw!k?BjUoFE~upVhfT&`b&}hWY17SO*SYU+N!syae6r@87ZuP6M5i03#(g;#0U{zcNWaoujX}egza!B;(D=)lm4P8$ zc_kA&7J`hkftuqoQGm4Svl2G;95B&)5F1;uVT%pU9zGYY1dqJFBSq{MQ(Jeg2Ye``dfCF)@GGaYXt(A z$c93+s{CImJO*u0d*EW{_#o-F7SM~*?ZDA|Wh63cy@PIUrI&A;Eg|wrL)lfyDd4BQ zZxD!MP#Ta1JyMN0lDMgKUYq^hN}~!M>=Uj}@~eUNwZt>>fxFf(Ctuu|kqy}y3)9LI z;6=nkxYw#0q%6DwytG0`TX2VPra2{^fqD(43w)eF-)s*1Qo_4HCAQn=1XprCCybl_ z-=|(?R&L`wxPm!)<60QJkR#eO30oH};z1yGYpm36q?n#)`R%V8p?~!am69N+EP*jp zEoUyt>K87Mh0bBNP<%ausm6uZf!qBO_WS)H(`!thlwPRmzPj;J=6T8e4rSyoP*TyN zcen0$?4h(SSKsmO_pR4$w-iYJEO~dd{_dGr!}gOwdA-5~ z1VS6){}~6Q8u5uko_xGgRG#;}`s(P+zAY#L&z+WtbU^|Uo$QV?b30i}+5M3xn9zd^ zVjimX(=IH1hCsj}ZKi*ck|Fp(Nb~#T`9_KTsKTl1`c~tMd;44t9Kh$aZ#=4c-nbo< z={Z=RzPngJ<56UREzhcCY^IL;=C~yjg64?zJkYg#b{pk`dU?6t!21M$owYSAYQQIV zLc8^?$4`^X_25WfVm-*SyBn3RLzSyW{Kj>4Lwy>AF+PI=yuWY#yNcg%%zseAA*$FWYZj-_*a9)yr$YYuk)TRC;6<+U07ChObLwRWEL~gAvx?J7j2TX<)Wu%zE_uJ(e>uW^pK)W z|9xT0@LSPdh12$~ygmx(UT1H85s<44cryls-4{d&$vjAzB{MDBO&m*(|Ympmncyl`{YS2jcOBuVK-qUEh{EZiCE$phdtc4lC z5tz?MySk~8?&+~w=J_GKe0=tH-HE-rCVAGChAaJPpTXPGq{TEe2BsgosM);`b*u99 zehz)W#1W$QB42oVm)-pM9ea-TZQ0`&l<}9Im>3D{qTJ<8=ozlvHve-vw|ac?vj<|? z6Fw+PtZqE#j$)t|g;fkr+@k>m0^_@39~?N(jlqdWs~fH;T@?6y4_dXbr3J-T-W2+- z>?9?f2+^?*cQdCMfLT7fYx&FwbsdXu`OIwDNEeCWfvok+ZSa6Ymck+z+)!LD1CN5o z=(d{=;{bQOydpMFyt+{mK*B(+hvS3y0QW{n4vrQRwXE&EA^EwJe~KWQ1}p^O#_a~n zy{Qg|Vq3j6=ypICB@Y+FJZBq>nodP;uN<56;MZOO9{bBnF)!>`;BorH44`4YKRDqx zzuk!+h$=u0$f;2A@bx8s{gT&3(qakL`~@pDI1!u2Yj@8L?zZR<)bkcQ)ro%yd!YQS ziV|*!;sl72JF^l-Tq`QODHE+K#USY>DPq%qz;YYIEQ%um^G8n0g4?#Wajj=sSU1aO z&3TW^kXF9wVBM@YIqftgIqOMwUU(i1aIZ_-uHxF#Q~$$CKo$Oi zBU76GinX@ov&E3E^rIZ%tG zWUEfW^EmU8^Oc3`QQff`sX_xj_;ET06lW~o-r)>{CWO$1*f{P^Wh{G;iE@6E?=?o~ z%t8j)UMdS^B-}U%4SoXO$-epVt#;{h=76-V84;-)qmV%H600z=@P_;f2S?%-1<(5}?8n@WzB&mxFFbJv`ZOn zX9nVb17G2!r?n0=tT!k{Or;@iRs){7yiJ4#{^{)Q@|6}dVv>*Y&3xuwujPF$_jMbWyb$0XH7t3-)w}S^#H_Ro6`mRX7iWT@FSx3sp~Dl1 zfQdX*4b{s|=9c}j-rX+c+UqlEs+oRE!JE}P8ojyUQ-4pLk4;K=7!i<5bbq4ZMvqO` zxAe$?#tlkd+@@{Ji+#wxe4j=1;yYWm70S>Ym(m_wDSjlvnD$38_aaT0iHzwruy14cZn}WZS&n@6mqFn&+**WId7hX7^U`Mt*Dhc01$Td8Ur` zpw*C%me%{WMignhoruWr+Pf*tAQ7G(?;7{~BTL}i^E}f;Th}K4!WBT207$rwSg95c zT;$80Cm(~w5S~;kqJs%cAP*dlJEZ*Nq5AfEJ*kLFBQWrA|LIupdgRya^F#hene(e~ znK-r9Xm#E>chf^NcGe|2CB5zQXBbpacptn1l-Us^5v(YA8^t1vr;S_%b*B-<0a9rd z+r@VM{V{eBR5dQ2id%VbJD>3B6mS4B|CvGN?_PsdVjI`0G$^DDv7VS@v-DY{J^4&# zQ1I?d9M~)>8b3KFGZD3^hsTmkUy#2-dHUnsEc7(3NVYhOi{T}$I;ZQI{F3|3-lb?i z@3f))v@wn&i{#v=%IDs*V#4Ok!I8R_(dArP`na>oiE?~eoRYZG5czIvLS$VWO-A&j zxHDZumNkRjZ}U&(JtsWOwSAmv!S^%eSthwo`Q5i5pjlMALQqU;ty02rwA+lK+B;j6 zR2;00MgiKbx9_XOx>??Rz_gA|NxyD*i6|{n^v2S{qOwO@L0d5Hd#%@Tt;Y-ak&1#- zf-js6D^Wy$!dz3eOfMO(q>UmIk+Pj7d^ByFWUo{FtPvYSVHXu?ryix~kezR%FhMXX zy0i!2!AoU!sg1%8!$n>4DZNnHB^xIPN2rdiiPB~8ZC|$lL z0@wGvk!n$Mj6f&ReBXh3LHsO2juCcAG*GADi#w0ls+>cSlzQ)>vZf$ENIy}&yjn4t zPY3VXmD?yJk*kP(Y_)6iYd~Dt_^c=7L|TGO>x*auJrTk&#|Rya0k)bp7{$UIM%r$& zHVO~SZun$Ca<7F4jr1WEF6#;Bd}h!efBay8fiSpMIDsITjoGmbC-fGYU#T3I`5mg>b~&!P|_>i}3SbV`qIs zmCT2g*_Qv-;Z;yDdSn}yMerlsvmd%1|1YOTFiWb%3xkS1%((ydt-;D2)0K7`$A~!G z@K2tBcU~n6MNr)*PJiVH!2=VL5yak6;Yz%C3}>k(>lh)8tuBQ5q)n6J{o%lNJP7<| z?z7LQG2-Zy!cby28yD+WgxlQ|n-|*$R~7k@isfu&V#qsYDd+NP56 zNszI%hra`iWB@n5vmg49L0}Z0@{bYV6Srkli%tqgCIy zZ!OE~i{94Wo~#u;ObXMN8{Dam5M*H%HE*LpA;>Curqel(#a9`Y}Qg(3eF}C)}M|;wLrCNottSF`@=e zYcdwjs$)YaPt0TYbI>(-e|8wrGgX1D8d#*;C>lr-r_Z0w zraT5CfgfpUiUh!XdTz-8>P2=!fwL>4Z0rCV3Z=pss*mc)fe^gWn)ReLi=aesbkKpK zfRCJ!?eZ>Rt5~~v#l%?MQZycqFs3rT*hj55K)20xb~sC|;*KT@DL0S(vxiLpa-QtX z+6f)2uT17*=$$4NJ`ocun0hcBACNIxMWpeLh6;81 zv>0^w18ntqQqiM_XN&|MMp@zBt9dy_;NcV9KA6$8o@ZyP7tqWSK{4fJFT%lpZmAGI z@^bYoKmSkTK5C&E7u+ewh(4$cm(~XHqK|;)Hb7GzJ{70EV~N_MlZJwSwrpiB3A@60dgZdUPtoLts{qmgCf(%L*0h2MRT@8O zl{mL0zgIC?KL{7VR%a@@+zyEWlfAe{M&nBzJG-Z0WeEt^HIl`56nJJO%9ahPA!u1G z=sC#Fx&JHNCa6kkT@lI4!MZn)_2eD&xTXxdcSO^cjpaIncRYF%M2QlJ5}+W`t6kwa z7{(-;nspe52B~3;RLc%d8k!#b4coQi;b1+tL`&K(-RrkFp9(I~CY}}EelMkdADaG2 z8h9)Rs}J8;)svv48CM#j4&m0^k_@T+qRNaM?O~dLFaA6>XBLr+$O+ z!w?J$%6ur3bcqE|r6MgX_tBpz?JmSIK40nZumO-o=e|hVF#lF@THb$!D}NWbMx|HE zf9uX7FgQk70mVHehrtYL0L7uBye>g0kI-J66n;ci!R0udKmsfMnQPR?7YGSdG$-rQ z3e2|@=35j8A|sl-WE;=qVe;8c|vNP_B!j-X~zg>QsZT_aK2qoYh`7M zHoO6o0cH78Ldf@M0`z6YVjt#nNIOdd1aotny<{#OV^clbTQ;EJ^Q%A4IQPQM!X$;t z<(iyoyu!Vm3`<~08R2cAsTc}ICZ1uDFFnY*W83efT5Rwmzd;K=9-WHvvrsix*vVkb1eICr`GK)!|w9X{SOR_9qOoMy#~L< zV|=B8Mz3i08>Q4$Tg&5{;edGdidri~D5j}eMOQ~v z*D0U#8)z-wkw{=3^PhZRVJ*A-;nVl;&;BgRMnQMq8Uv+`6&7^ys)t9v*A5wZuQ`H% zXsp2r;Aq+?=H~GAOleAh_o|Kn1%)A2fUu|Mr3rL%OS%B5isZ^(w4=L~Q>1Txb_pCR ztMGc_(p?*{zYz* zO@f6(1{4yw$wgMd$-38_r52Q_xd!<`pBaDDh|%fHaewTgAY7VTvILk0d#yV)Fff2# z?_#{WyR7{A=8;Nf zdu24HJ?MiS480Si!ix>HvLX7!3^0hCphZvtw(@i)6ZvOLgwBB6JF0Ub=Vu#NgS5}B zJN~D^V1LzopaTBR`sa)KYqvQ0dQQU?v3y{=?J@|YLmIH|h_vu~IpcXs#M;Hwue=GHpBT-xYD>cn1@0G})(>7<40K4z({CTMc1hnW_+ z1E{-d2oUuQC>hFx@JVt|Grnbybsuvm_#EAu*nK!eSMAb0Q`PBtX8s+mnSxAG>a9hD zKUqj3&4n#)ZNU}D=&O1NqJqVn@mnkUgiVi5lnb}g!v+-t%?@4R2UGTk_p;mv5A6?o z3Y(|j4(CuxfI=J2jxL=*uTO+g#qM=uLxv7)*9@ z4|8WmcqjRH?&02?joWSCg#?+rVrG_dZlWL&*Z~EvO~c}fa*=41imCwAj5+<%B6dFp zT|?3{zeyX#6F}gYl(IUDo;{HlvPnNFC3qbs6VObd&B^Ms4qNR>nu>#AB_Hvew=C!d z*)6gl1(z6-ja8Zz!BIB$?Mmug3sdBC3yC66z-# z)hM6+oJF8=L>g7;+ko)XH}mX_5NgcOG5Pabig)`FdQ)a@=>)8ipbD0&tMxv}gL_~* zfnSK`vys3ai;;k!sWjo9!xO0%2H=xzkk1cKI7Ym}kQ)L(hKQ;=ZUKOWMTq-l|i42|1u!%nX4J^v(+3Vr)c?(a1m*nWj06 zGPZh4&PBTE!^0psPa=irdv4-F zuo-XY!{?G{^1#f(!KP}!YOuot!2SJGfY=@VsyTy9mV+v&&vrmclci+F-uMH&d;`uu>+TfRIop7jIof_E2BTLg*sBV*b z?!4F}@_XCKJ4{XdR3q*gq5J%-jP4s?>R=B0=}&{fs7omxGY~tM2sd zFw@8pE=9>r{t@!yjOo#|>C2v+Q&4HTNH3dQmYf%WA_z>~qkCaOM{OcOfbEU>v;D=Z zkzl9*1VSrV9yZc-*W%iFQv@IMJo28l&Xllx*&J#M+`j;ae1CJ3VQME2&c>gk#e|w3 zO`rZ^B!G zP$LG^u9cj`=P9R{sFo+6O8)%ab)u02#ZyJ?nPy0|Aqq*8aQ+0(poRYIt= zQndwDW4LDzjdnWRtMqjIhCx(r6BFc|a8WXyTtfR9-YAs|JvHRvhglEyObp8*TNeO56A zah7ts6uoIS=U%>gwn~40U7UoL(gb{k8n*|koM;b-G4_9xUq>X#u6$l7*lr+R>%Mvd@J;AGK+8l zymSCVZCKAUeN=ReAgA`Sk!$m3BXf}O&PHznjsbLjvkP1X;k9e!ec;FTaAaBq=Xl+8 z{QC2kf5I;PebwOEE!Dn#=-~aUpQ8~J!72R#q;laY!QVxo$I1||C{!*84|f4W4)ln; zpH7lecRFq9D?}8m3}013;uJ})aED3tB3JPE=@WhgyNN->h1+j9zPzTFf&cfJN53>j zYdqLxK2N?rldJG{t_9`w#ADR=z0>yKxWB5pudm?oNu?ERh)TQ$i`RnB#=J$@FR50O zTK~-)?Q91}LZd~Qo9k)I^MbjrtgP*C=&({xYXM0u;>w?=9Yejv)keFPbflw}(qsQ~}l!B0|c+F3cyDS`JUmE!i&kyan{10nSaQQj39W zxa7b6;MFn!?sKns{OUPd^Xb#4hr_}?%=g$!1>UW{wRpj6A~DD7KoyR~Z55QiI}K9g zcE$UIQgat=(^t*t&COFs^r}FZzOFfm)y~S$w+tyBy2WxF$fE}!-c?E^vN!9wI-e1T z2msUCYrib^^q-YwlZpJa70J!}^t+vxN1Z=yPv-VuVqvmEDkUwOlv{sYL`CgX^dkCj zKg{uP->7BCEpcm-x1%tn2?E;&eG6{y$wkd!m8X5`ckaW=%6PLA!n~4Y+7xhcxK}W* zAo%hIxCDT83(gA9Q#4Xv#nj+Gwq)YEbE{2?`vy2BuM2X*i-H8RwO~(3=8t}5=kM~s zNI{#`P>}J_qeoBxjE7`Js7GFHVb~e-Y!DBaf0{E4e~*|om;U)oGT+rP6p_e~$> zQ19t=Z&i)Sw6eiE=#^or%}dLq7JPiC8cO+JK%o3676NLZZ>N8!B`Z;5e_**+6=OBe z(tdE6afkCqlPFi~6dwWL&S@^c}6S%Y^bsNsF&` z1;9^#?WXVg#u(b`Tf

    7#~E@`@+RZlt@vbB#I<{dUuoFn{013nullZCjqUd<#T3 zpb9e`UnzeOb~Y^*f?aJX`5K1@ynW4w?MVs(Pl4Cu;SiVnQe_BG=f#{0zelO^ zzTB)Mwl+)q%zu8aKQV`WFIRTMEIX0Ln5v#UH`pajyAyFp;pu~S<5Z6a>o*Q|p#@is zD{iW$ro|*+M6lKMITeQNtb0cS6ymSA+k>Sw7K-| z4cL0zik`Y9#>)%+rOLLRBahj{vv-s0ucWB#oZA}TvatBch8UH1anZEAq@M|*{jm^vVVctveL z?B~!q!V!Y^dB%?+C@eDii}IQvhPf$?$faVNB?NXL#2-NIWWBvs-8S#9PdxPY)d{@Y-afY z|FtQRwm%@fgLl)o(Pu*u_=hSLX{gRiBmay|H zLeC`?o)Y2j44k?@p|msKX_|2YaW&1@TF1t`afF=$&spQ0Li2KH1Q z)(P3THK7BQ&bV(@r!gcg&tSPZoz$6glTvm2FlhKOR6&1sk(IjlCd7AsiFr9l8TWl#s7nz|zl-gZXb|r}GoEbpoeMuj z8;=1xaZ@IIg+V)>w%iC+u(O*}Ocl%*W-97Qq{)UFJ+eu|%gR`xOLjExL|WX;}zqb>NTN8xk7V4>}685(>o>8Hc~fD=I^-hAOB(O-_S= z@fi^)d0GWNRnAXYppTpgO8o(A%i>RR(3_5v>VgNbL545{W}+g$+n!PWwGWW?CjaMK z$n)pl`oeY1jdCtLnA~6S`kLQ-@>j3RuiKGFBVq8R0#jrO$3TwaeCn?ZDR*1}|HdE~ zI%fgxHvGk#&9XrikM%9jqZs1KW?{T=3?lsf)`X=IMVfGyauCn) ztKQ0eB}1Ba^)cuR>5H~noEK%!3z`W{7(RuxzhbSqp>7@nOW|Vj>Tee^~#DQ@@gy#=lYrVgp?H1** zv9)|52Y)jSvt@EGGK|D@=yNCWSDh}@PMX=au^&PC-r1hA1GF0W z@R^o=D~9aDyY1;5o4T{T)>lmi;VdzJT%rrzEF~A^{7KV-bRnZ&uH; zgzen4X?oD$G*yAym_MYS`AeKfUa8kZHJZk;2NoDMOVRKE#E0-oFd>K8U!cTQi|G|ewJtNzUYMlz~wUwxX9 zb!2G)n``=u=u8}Ih;Nh zH1;eJyJYHs^-kr!O5Xd$t|wu1@}a0>#L=n#mg`N`58s92ys*^|pt$gwqv0j8y%eHz zbj0x8PW;%tMJJMxb^nTnAR8czKtgy);B?%z`&Wf&v9s7^o6lOBM@SPgM_omYf$2!( z*52!*(BL>Hye$fn`WIpsjCq#rLbPAr>RGeA-UT;6vlF;*oYnoyj=&3zJHLWnHXqzu zdee8o!s5A?_%oN@qJ^tIJ*xAgwSpY})LZjE^pLlxn7aMU`mU3p ze`l*NZt`3Hdy{;mi=2xNI9`zd+%e3RA$&t4jw!iyYaNrIarLz?UL;oz+MEqX0Gk0v6=s=$uI5L=DyOjduJjvNbPmT63yOsd0YFJlv=^yhVjv>r zT1X@#D$vJ4(|md=`$(uG%fTGv zX?^T?zD?AOT?KsJd-UC0O0DShlvND(;3G6%KF-c>0weCr**x#wnp=f7({NTx2!ypRG_H`^mOn((UjIhckOdM1 zl!;W8UQ$EjF8Sk7d*H!v(5juUV`Kni=&7wv@UDFpkc8~7{u>hGYTFw#uWv}4W|1Xr zs#o_;{e*l22|}EBuW*JBTz#^Lp(m=g_H4{~#=Dg&=hKU%g>R8J(w(qbdh0*pq==WF z6J(IT$$R?DhL7;4YIhs%iuZ#lI=mr|A=8R2=&u$|GPm06SkU#fI+Ck)zUDPciM5ju zzwF&TF>ko6$;tif)b?N|?5pOdtS4a4dB>-0)K2V(K&qVHiNGIZZ*KLB=}?HW8f5gZ zt#yU~%DM)S?l<#OD!D;<#s2nb{yW8BA=*$~r5{_yc7eg)V@Cdz0>qEjHqzdfZST2= z(#ti!+;s70pR=B%d)F^i1nkuJyc)lE0{yiG>)pysVp$b_-MH+t*H1$ci)YpqTUoN* zqc*hzxI1oY2`@=r&=OT5*W8jOC|U)#lY*DQ@|y(1JeJpyy8TTwz!9@sZ4^38c@)AIN7Iq7)8{&bi5c<-CaLLEN zRNJh?hc#OnROgvkI$fFE# z+wEjQDJkDybfhqfwS7p+otYcbT8c;I#^rY(k>*0$2|e<;Ur&Z_nv?UXgP+wCc`yy! z8^lJEYOmm(CJxpmgKhsC2HmDs-|BtOfLZDf#~dXYl)Oz8e83|pC|UsC5y(kj81kat z-wFAeY2Q}tN-Q76Ec$dk*7X6MFPACjvih4_V-QYk&|EjH^+=H?<#%%EwjnY91>P5ujltwOfpS`g`EPY z@fx?QQ*V^)#vkwk7aeuwYQ`Hon@1_x}-Sx zONrs?3O32f9r~ zE6Tx*6D6kK!K5UCYlF%;&grtU8s~=Pnja#nBT>#>*?*I*tTM!3%p^#*L3ixXT@tzwY{|6M%SKW$ z#Q2{)oIP;IMj!QSzZd9DH>lgX(61H?i30-RwIOq-1UTS=*CYjkz91w|#K2vD4cqwi z6ri%ot_wNUaDuUNf77;#^q2I13)SLoaz+4nFCav?_USmQRe&K@F3C_hEz;hmRa*U^ z_(g{%$;b72U{pTn%_S3%8K$N2-?)}^1vdDc;_9+#Ju+v6FL)yiQTcVO8Wpk^YHY6p|ecC9< zru+nq1hxmdZ!J9U)c#uBQn!S~j4 z{8xjs#%RrAZ*f;WX@I^%9$GmU$}@NGK&>U$jY!_w;(~$*ApLJ~obsi$)lV&K<{sp4em$wtpo1~ka zAP+efK-_!GQ=o?D_i>+aj`x0xOlL}|3weu8#ck|DFsMqQf?O7i-!+Ik78JTtROF%Y zW#JFb0wF=vJ`6(}JaQ1^Ox@JrYL3%HJg2;dSOFdeRHu0a zl13&h6kT4xg&)PH7O(yqS%hA12#xQR%EE6ywuh@m=Vb+6WL{@NxU4SGk z3VJ{M3Q1l;@J=ed;dls3>RPVQ(^;lu_4foA%r>Y1`bk+<2CD2`BSD@n)C9#fvU`dy z&A+iakgn55O<7HStK=g70n~?O2kR|^nCI$RUmK3zC{2$IhMADJ3b(2Q%)a*g>7|Zy zIBEiUYg@}Me#9wMAWpXwQdQKK2-y8re`?ng=b3JN%py3QB<2cS&p>37AKv+w|E$BUGwcSuF zaif3_t+oJ2Vr8^FtK0>w+)uevx*KmV^tY+$Jn6M=i|rC&&Z31ionQVp<<=|*+1ABU@cFWk^CDd2T}0s4IMS2On446oO&e~PTg?i_ z=6T>DZ7>25Vn281Ank+=(oRO<`eRt>SX~R5q)Ib-oRq@hN%`!*3@0ZcQ@I`db_U`3 zJNW4q7gBiS41^A9#Qwdmr&sdg1$az!!n-hbA#-tYlaNfl_CI#ldsarZwjVO{^CayU z*?yZ0X_c7v5hp~AqO@2ZyYSLLMlmTj}1eq=uZ&l3R2LNngzd^RH=n! zG%@v2(G|L@|I^$5t?G%No=!ng-dt!=?y@F?T&uhy-k<49iZB!4vnNQfc)R>F-kzn9 zGdE%T*M5?eiWz-FTt%IDPP!BYHmpz1C5TLs z%w!jzUNTu0cu7GfJoO|5ELkSLR+g@c-9F1E_d!0VC_3if+hRfioKyGamXe?hw-4z} z{D>=#My-5R?8P14${0A(L3(<0=Ve+2a7OUb8+b{rjiLnE{TKh6{Qq`*lHM{ayW2<2 zh|Jl>S8=W)R3Swdd;mSY;&e0*jjhA-^erusF#yE+SV{I(2jpwQlV+CDP&#G$MEZAQ z>6CfvMOKnY(gUsw4N&teO?M9Ox3jN@t0KB*8ScSxQTPEr$k{xidsLmFfFT*^B4dzl zM?n5kkj%$FsLi#?y`X3f^t(53?G7Y8EFxXVbB?)w zp*xG1pTTw=bu}V2&ul{vxf8f-^&JuIl$6wzSgU))3dJBH5k82LO@Qt?4L$@|wvH%ZR&-`X? z|Gl*EU9o|dXhN7{es~*kfZ7XzS9~bow2r2xemZ1g@~5-EL(_YbOHA!9)0o;&>`kV6 z9y?5^gJLPMxT^>tCZh)kQPP7PufAJ`>~f;?}9PdeR!aKDu#W z3Y+)Y2NsCzPtkT4ImQuVtNii|e91zp?-Hwv9Va_6b!We`VH2M>bteS&B5jydWR5xR z*{k=}c9^N{!z<@$hqdQO=Yn~fABtChxHVv?A8X|r&qD2f8}*@y zk$hxG@Z4oQi^C|aZt=eqLa3PrhiEhflV1_J38*XNVZ{G_Mydg$DQH!{iT6aDSW#@( z$IipiIe17li(+-hPSDG2ao-T~TlucIIHLeZLz&Yq|68%?S&B(AE67_QE%_1BNmAyx z9Em3Kmu)MMng|am9|y+SRSchLW2@o7U+mF`q@7{mvI}wwImLFjfA8=+k&b@BfaIF>Qg)-FNS(C&_v`hzRm2Oaen`iL$NnEN)dha?#|#9( zbx8m3&rr`dVB*pA3szDi{?z}^HvimS z&iG3$HJm(E_o;3wI^+2IkujCENF57R)IZyRp)9KKYY<<6Cp}JDeXMuSiO}fG}AM3{5FI`u>6f z?#cmT@3s%MUV4!(8+CfokA5dB^894{YuxR{a}6gIq6GEK1ZgSs%*w7&TxI1(Zrc-< zd-w$P(hF=(>ZYe#WR5K0&O|!C!AZmGN^&vqx*X~CjswbV3&J9=Y34{K(%wE@P?Uqz z{LKNUL8J*)HYW4%EU^tU^hi)oKbL5Q+~GOkeirT|F!At z>>MyyE%yB#bhK9Mkaa5lsV97R-J8FJ2dN5oCTv z=hC07H!xh7q^Q=wtA#mX-GBdr5B`7tZ%5U}2jR;0^RELdVGzd+H|~{(d$1|hP+cLU z`zqlnjmbktWj-ugDK-n1mp}h5j|dT>N=QOEEnU- zG0hZy6g5}c9cc;rgkH)N1Gc?&@C%094?6jc{5r7KU9__B(Du*uMGE8UcWKW)GM~FITmwtbVx1zw!i)<`s<^9|R zTAo_O1&g+YlmfMOigttX%J zN_QJcv{}97l~v#-i(Jv%B6F)aXt#}y{)IK!db+q%HUFdj>#O*rB3EmRq;+Z+ZL>GL*b0%BA11A zuf#(KR6H~%=#);LZ2biHG;EQnt}$%h(i)gxmtz`c9A>REbuSQlcjEcNM2?D0<_Jei zpp4Lt<)xq=JG64NXO7VkJf#YKFmn5vowKLZz||_XZ}C6>5}I(#EmFp}vZuJ(_lp8m z>dp|465?=4?fZMIcd3Y>go{SfdqzI&u2#n^8)Ut8y%Q@2oczAt4ZUvqHt1VOMcrb6 zfcR(_a+OkLdW_;!nV(|)-MKrsi+UAx6PHwrb_p9_>c56^aXVWbwcNGFB}6#xnb zIk-^bXxBm@HjUe43r7|M(p*?9PZY?;qr~EeB5S zHqpVaC93@;{;J+2KV})kG(K6Odk8GrC;Q|0QOgF7@vYk9YbC1H53g!j3pSQXR96>% zcv&1eKSk#A3{LPlzm5|wcs4ri9rD;)-8-)oh=>e#R<2Fd_wl&LyXLy*-?_+Q$YXlx zRk6aE-;U9E!8~4)=8?5|!Im?pNe*rxqV(<_mT^oY3maE8?p$x_40kN~VG*<1BYsTj zl)`70K>kSbjG{JSEeoqYAWLUg$2bME{Ud5JVRPU zfm=RhaMT~GSTSqb#?uNP@BT5U;icV6^t5d&Zb>U{3HRx2vHu>{-1G2s*=8}WHeBFw zMa90+ywyTTCFlrPjhP#;8fkNp=L1#b(pOHEDi^E^{wT&BUkfHaRpJ$VhplvtJ~sa3 znd@&l=P=CV6t2AR;>({3gm3jd0$C$e|2aX(@7v$%vpbRyBq_wl}*f@aZy@z&zJGu7AhQrnPA z7Rziv#+2Jq;~j$HllI7bRMU@`O1NQoITW`QZma2{hf~JzZb-Wpl{$w%d7L>HiIn5W z`of5Itf9U1^Y6)b4RiZn=umy*Uvj8!V;q4ncIQvB5~+Ge57toxp&mYd5T8`rVK~}? zYD1hwxyrnWNa=!=vCWl~ZWW*14#q@=0^h}iuOAll^UFyK*oGTQDDyq`vN)SE!r3ZJ zX{LH18Tn@aTK##P6fCrGH%f0g*E4%+0OyG5E36jl+4K>S7JPU9ru@#rd`b#ls{Kf)&4@ zWt*5zSj_HnkG!_rqZRz_)zf8u2K6&GyvK8$G>UI*sDr%feI&Ok^!}Ja_56sMoyD?e zk9t3Jj3T_i^%YbLu4vULg-H3pd|j_F32#Np48A8^V^b)#zI7^*Jy(V39* z&|l@sb&A`hnqc9+L6=80rmXOhItE~euTSjBQL81?h`GT+Lw;$)bqKIr^Hu8g`cpA3#FE^m!IM$hB_ zW*YinL1BSFP~tUQURwi@LD8t7&`zEIqH~F>hYz_=KOQ(!eflr-7P_}ergy9yeba!j zj~m^wG`kWaTcXIbThpUn{1uNY+411*?XOh(_7%jb5yp#*kvjQYf*)CO=eoLC`{wyB zq8+ZMNB#n7hXXG8#5yUk3`;3|yz&Z}cbr>;^}*h+NMKj`V9sGNg@gbGqTU>T)Nr_` zSM!Cjkoj3HUGon}_3CLhoWCAAaN}j2Jh4lOx9CFZTA+_XT?sfPOUy@EsZw z-Y%}vz$bMPM#@<~b*Dtz#ioFJ-q?9qLgBO7pWXNr;rE5}c;q$K|22E?F<}cS8ILbW zTVcckkCFD4i!fi{X7}l7sYCcl*NfxHuQZ3{6+UldI|ndV@}3oM-yUb)4#;CP+r6aH z5sr&2yqHLgsQ)Sv$M7^x?=FdoY*Ka&Mv^L61SHQ^^iFnNlTg^hCnKfzN@e~~B{*(n^;NGw zy8aQhe-e;gm$dbwgCXVYrQ{4H7IhbAhIW4jAOb6h3MIltRQ! zj@Wl9LOWwp!Jui51YGw?W}dLm97!qouPIn3Z5#@tL!r~NwuB4@B%Y&*O3NUS;qrR; ziZ%e9zA^Lqy53^16LYyU0VAmybGg6>(>?o_APG9=XOh}ETZ?;PA6tB@B}#!Nb8)p~ zCb9T}WADU?j|$vMZUmIiUNe(*E_w?#*p<>Gj0ybGuSfmWkj#hM;mwqxEWlZwhO*{2 za^_DWv<6g|0t{h<*8owj{%?c`5XtTHOq>ZPwu4RImL4nY{Z6GdU_5ZAJ6jTLrnc)r zgmqAar~lhlno3n~W1kG6dRk)7`~wa^23ae~x7~~dx~_8O_gnFvKsE|0#I*e)!?h=r z1Zh+}vSY#&As35FabwkN;Fjh*69i#LD52s~Ie&y<~2 zWW@{k5CsTqEEAsKx2a8&|KA-`uiRPQ%aWKqtp3V(Ljf-8gi=p+*u?!GVP2o>u_HApG@ z=T3lB>)Ty(JpVp^Wf%}=B>6LEyK^9w#g+0MYMMms5qn4EYQwP7)A^E!8cM%w-Hyiz z885IQX6FcnKrZk9q0?Kr2Pionxg6Dya*0NKedr-|u>`vx4n1K3^kQG&^7a)i?n-QQvukj3}vQ_TqWQQ_4_k zFk{Yn-vvVkkUDTAWhG;!nkR!BVP7R6PDVa+l}%&ge4ld7Ii zRHHW}eC#WN`np<%?<$#!tT1a0cwPe&y+^(1e$_l8I}}u1>WG(an4vX$Fqzyt*J#Ig z>|8?KD6j&xw$!&gAKc5OxgEYM+eK{XQD^H|Z^^*<&#&kkM)Hzx!EB#B2u?eAUhkDQ zfhs|VkAn4T>XT{;kb^qF-Y1zxj(3~h&gR}=M0+644`*~-Y30b+b;^nXWJAfNlK?hU ziGSx$bV6|!%lh6YVD^vcH9MHT%^?fwc|@~YRaFtGdkC|6^U}B>yugj|$!?``moaLB zo(?pxW4fdT$>Lkb%t>==wF)er%gJyoJuf20^yY^2)st7r8_DI$T%()gsR7Q8_Hy(2 zojvPeUTA_^>6Q6VL^TOu(iz7%Uz2JW*^NwjeA5-Mr{h9~N6Bod?_;4|vXHhTQIowP z^ugGb-3m;J`w(@^F=0(|jkC2O!Gb#v}1W51K% zB_C>6J`{ysVMyA_hgDUrM<@hHGp#;4M)DOhL0{Q08c&oGsNwI~&fB*2Gu)X~8-kRm zUXSLi*wBvk9N~?{R?{E<&ddU7syRemJOw5HY@8)8T10{v8B%O0) zd~L0{#CA|w{95*0Bng?8yGDzUg&ogzByW`IMy2F@LpNhQQ(fE`IEI=$lKxl{jC~&~ zS4&i{CN6H(OH`j(JQpPC?LtU<*}QFdV-xh#E?MOK2?HOV@%T52Frfu{@gS><_JT?b zb;rH0`s4}i&=T(V@XdaFgkx4S&9q_VE|#b^$Heq@UDNIH1o{V^eC0Dz{nuWe=ZMpU z%m**c7>;MI(H?zts+zUkf4Ffn!FAssd+Oc33rp<^*b)H4E&$GoJ1St4*HRq>V!P#q zdBF<(IL{>g>su8(eVK<2{_5h>tGMkDE9hVk*-%H?BRg#3RdTC8sXJ!k?ZgE#WT zzoF3|>KZwQ-4nZI88Umvb9=W#cV)yF`GREhfOUIcdK|nbH399=e^^G`RF#4ewQt+>1E0940PBo|7-x=#S z^Z$H{W5qnQHrYErKE{zW`C{?hu7gkP#=>OKrpWtad2H1B@sts>BRx1)b44MCi(oFw z`cyNU+4J1<2Iw>90)wkSFd&M5BKPxfBvrE1a1%&FV{0QnTROZ}GbT%2mGVINe)S5p zOyiwD58G%r8z!{e=P^OPWSu#}TNs&WVCT$RVtYFDx=+SN!0oX9{I8*$_DTCRc zqaAZO^Pni9y^r2MhpGY)PvM0>$H9zZ_5MMz_Of3V)2$PeC1s6BdD*!XRuCz8YJjZF zn%o5B^g!HEaaM31cVl)_J%5K}Jy>m@CDwl}{yBUTu_J!*kTcgYTs(XfK*B4R@F#)) zS9@O?4rTxLKMTf^LCTh~6ct&r##plt;%?GnSHe9h%WVqTW+EgaTZKj$6osU0DPt*> zhEP$qX=A9ELUx{Wx_{5{fBS#&9M7xg6-UiA*LOM3^Lu`l>++BAZs3lVi{c$E`Zlcd ze;0~Y#&_bsJAR6C$oF5EE{;@fX^b}L#%yVP@bhhP_{i!*#?6`)s><`4NvP_Ja(948 zSngw{6PP7r@kz6dxZ`?IF;^!WG_3=qKW=Aa(Jfz5ru+SBpU^!H{FY&5vPFgJ)Aqgq zBw!pF+P9%u6n88WijnlNPg7P=&0Wj;gHjR^I-E6blJIiQ14VN`yAYTkIkM%p12dQ4 z5KhBt`8pv@H{rJKFRL_-IP2-(0qx*EE)Q;uU5F&-iqX7Xemv_@EFJnrN2?tM8XRMa zyY7p`sHk!&1Ibau$R^w|Jy>&l)&=r-;;peYApgR+L0VU9EWYrkV>8?ht3LK^nXvl0 zz7AQ2+keJ%IQBqVzr(GQ-9O8Bme=0MkITplf9LnRnk^~@1%YQ_OQZT8l?J`xCTaEV zGKM4+)W0_4e2_vs$^cGgSo4fgW-Ft;rUl8_W^MIPDI)-Hb7NzaVQ= z!tmNh0djmNaR!o{NPBLY7R$d9MNYPQY=CF*3x^ybC))vZLCMNq_e}tzY0fP&a>M|w zJl0Pbx9fOhgUP5I-($^;-vQ<4J6jYvA`oo|@G!1!VEEUjKg3Ly^dDlzna6AQea_)$p+y~PoAMwEV14zbeLBWDK>~rQ;R+Hn zdC+zK)7~5>cJJGXB-e9*ARg)C+fx@cI1kyP7tUIcDPmX%;8eD#3frM7AalexVTU#5 zs)c-Ir&@`x=;5t7EpPHA4?ZH0`30b!4a#uOlC6NpWLaf^yzPEyu<&}!d#E)Pe8)yV zhAmXw<+=5u+aCrq$Ij&XF3+&^yn;jLT7>6x%xO~BebsH>`st@)FK1efD;nSTep*su zq=9EhmFQxQ=CctSfn7P{DP(+8ey2hI5?x?)GhDH(dEeViujBP8fopt##a`VDTW=mk zos_v6kljfghm_oV_|s(k=?2U_cXBeX6Y^3r_Ht3IoP~Y!9(Tkt{QuU&=+Shnmd%cy zQ+oC-wLM5BNQCeBT6v}0T|#!>j6dh=Sc{)u{-KbB7)|98XeiUD>5uaB+n8_VxV&RO zG!d`&Ku@WQw<;pK$8gG}-9DKJO!IZ6VXMtk2EB;~=R3l>5@JQaO!OF@g<^XSw&!g= z9bH^ZN|fvozHR@)Ww-~b-5>G<7>pNrY4cwu@0iNsd=o|y!Kqj+x^d*ugg=bCJk*Lp zbdcwfbU1P_m$>3qTT1!kP;#^`Zo=N&q1RPY8Yok%lRgzg)3{eg>q=aurRfR>cGgr)dT@CBB zIBd4)flux|$n6R_sFuzDj=v|r2wi-elo)_2ya;2Ei!`;HD1z7B`A6V6J6U;9YBNvO zm;}oG8emJ&qqi)$kdviPLr=cG1!{x}u5CWB*Qk6q0V;%@+f0<4IL=4VgSS8mcMR2) zihW&U{?|r`r$8s=iVF>8hN>X#O+nro!q*#f(t8Zw`7zsQ{Q0NEaK5Mdkx6GQ813~j zM~CG^aX!>N{}L}M|7;rm>&d2}y4xS#@b#9CwZ|^MxJ&TkJ@=p0$=d@7*~k_ZSk@S} z`sm{52XE@uZ3{;Sr*&1=ewV28rJKmX24r))z$|DrPD;$z90_Va&meiz+Jj%#SpCLnU8j9nrLOdyz#H92+NuxsVyHQHi;Cmo5UVdNg z-0%IG&8A6s-JnmgaySKRXfiDEQSZ_(Vt0Qfx>E0%gj|8T)QG+MHOq%+5IgXnV6^TV z6?oTMz}@{aO;H3iqMj`ItzJfh6aIJKhczc(@p?556SpBJ8~RXpe+ViLyZ%|QA!kvf zcOV{nFMv$3x_;F`vFbF^eMvlzlu!N2fYK)63r! z`_Ma_*(P#MFYwT^pJbRaXNWBt)`~j%V9*-F_QXW*z_;suOLAUQz}srR*sCL8_ciYr zk$8lvpxgq4SnI_a;VbqN+HZA4Z6d@ti*L_Xr=1y$Pn!x!e|xq;_~%&TE64yXKxQ@$ zB?ZPH170kG^V+3WtN7RHoV@i5*xg4Z_=&(R)od*>S?$}JGg@;^RTMG<$FXAV5Ra=) z+jEq;ji&wcifdvGr5~bYTUo(=TAs@x1%q`TW1@;^kT_0Zf6Wt=;(7RUP~1Edasp0i znr`WM6FxKqI3wRSN$M7Gs;KWG1v)SKU2Dd-JwG$#m#JCpp$T0lbPQpiCSxP(f_CN@ zJ?%1+N}opeTO}dZdb6Z#^5(cjg4i8Q$>S}H7NzN%p*51RJ&z*Elu!uNDynTS6D9TN z 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 literal 0 HcmV?d00001 From 97703b79bbd216ec2c524a59ddabf34191f3d64d Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Tue, 30 Apr 2024 11:45:43 -0600 Subject: [PATCH 3/3] update notebooks --- .github/workflows/delpoy.yml | 2 +- aiida.ipynb | 2 +- jobflow.ipynb | 2 +- pyiron_base.ipynb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/delpoy.yml b/.github/workflows/delpoy.yml index a2f1238..977d318 100644 --- a/.github/workflows/delpoy.yml +++ b/.github/workflows/delpoy.yml @@ -1,7 +1,7 @@ name: Deploy on: - pull_request: + push: branches: [ main ] jobs: diff --git a/aiida.ipynb b/aiida.ipynb index c7641b7..78a042f 100644 --- a/aiida.ipynb +++ b/aiida.ipynb @@ -1 +1 @@ -{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3 (ipykernel)","language":"python"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.11.0"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Setup for running Quantum ESPRESSO","metadata":{}},{"cell_type":"code","source":"import subprocess","metadata":{"tags":[],"trusted":true},"execution_count":1,"outputs":[]},{"cell_type":"code","source":"try: \n subprocess.check_output([\"verdi\", \"profile\", \"setup\", \"core.sqlite_dos\", \"-n\", \"--profile\", \"test\", \"--email\", \"no@email.com\"])\nexcept: \n pass","metadata":{"tags":[],"trusted":true},"execution_count":2,"outputs":[{"name":"stderr","text":"/srv/conda/envs/notebook/lib/python3.11/site-packages/aiida/manage/configuration/settings.py:59: UserWarning: Creating AiiDA configuration folder `/home/jovyan/.aiida`.\n warnings.warn(f'Creating AiiDA configuration folder `{path}`.')\n","output_type":"stream"}]},{"cell_type":"code","source":"from pathlib import Path\nfrom ase.build import bulk\n\nfrom aiida import orm, engine, load_profile\nfrom aiida.common.exceptions import NotExistent\n\nload_profile()","metadata":{"tags":[],"trusted":true},"execution_count":3,"outputs":[{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}]},{"cell_type":"code","source":"try:\n localhost = orm.load_computer('localhost')\nexcept NotExistent:\n localhost = orm.Computer(\n label='localhost',\n hostname='localhost',\n transport_type='core.local',\n scheduler_type='core.direct',\n workdir=Path('workdir').absolute().as_posix()\n ).store()\n localhost.configure()\n\ntry:\n pw_code = orm.load_code('pw@localhost')\nexcept NotExistent:\n pw_code = orm.InstalledCode(\n label='pw',\n computer=localhost,\n filepath_executable='pw.x',\n default_calc_job_plugin='aiida_qe_basic.pw',\n prepend_text='export OMP_NUM_THREADS=1'\n ).store()","metadata":{"tags":[],"trusted":true},"execution_count":4,"outputs":[{"name":"stderr","text":"/srv/conda/envs/notebook/lib/python3.11/site-packages/aiida/orm/nodes/data/code/legacy.py:42: AiidaDeprecationWarning: The `Code` class is deprecated. To create an instance, use the `aiida.orm.nodes.data.code.installed.InstalledCode` or `aiida.orm.nodes.data.code.portable.PortableCode` for a \"remote\" or \"local\" code, respectively. If you are using this class to compare type, e.g. in `isinstance`, use `aiida.orm.nodes.data.code.abstract.AbstractCode`. (this will be removed in v3)\n warn_deprecation(\n","output_type":"stream"}]},{"cell_type":"code","source":"from aiida_qe_basic.pw import PwCalculation\n\nbuilder = PwCalculation.get_builder()\n\nbuilder.code = pw_code\nbuilder.structure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))\nbuilder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\nbuilder.parameters = orm.Dict(\n {\n 'CONTROL': {\n 'calculation': 'scf',\n # 'pseudo_dir': Path('files').absolute().as_posix(),\n },\n 'SYSTEM': {\n 'occupations': 'smearing',\n 'smearing': 'cold',\n 'degauss': 0.02\n }\n }\n)\nbuilder.metadata.options.resources = {\n 'num_machines': 1,\n 'num_mpiprocs_per_machine': 1\n}","metadata":{"tags":[],"trusted":true},"execution_count":5,"outputs":[]},{"cell_type":"code","source":"! rabbitmq-server -detached","metadata":{"trusted":true},"execution_count":6,"outputs":[]},{"cell_type":"code","source":"! sleep 5","metadata":{"trusted":true},"execution_count":7,"outputs":[]},{"cell_type":"code","source":"results = engine.run(builder)","metadata":{"tags":[],"trusted":true},"execution_count":8,"outputs":[]},{"cell_type":"code","source":"results","metadata":{"trusted":true},"execution_count":9,"outputs":[{"execution_count":9,"output_type":"execute_result","data":{"text/plain":"{'structure': ,\n 'properties': ,\n 'remote_folder': ,\n 'retrieved': }"},"metadata":{}}]},{"cell_type":"code","source":"results['properties'].get_dict()","metadata":{"trusted":true},"execution_count":10,"outputs":[{"execution_count":10,"output_type":"execute_result","data":{"text/plain":"{'energy': -1074.9272223013, 'volume': 66.430124128914}"},"metadata":{}}]},{"cell_type":"markdown","source":"# Equation of State curve - basic QE\n\nRunning an EOS without all the fancy features in the `aiida-quantumespresso` plugin.","metadata":{}},{"cell_type":"code","source":"from pathlib import Path\n\nfrom aiida import orm, engine, load_profile\n\nload_profile()","metadata":{"trusted":true},"execution_count":11,"outputs":[{"execution_count":11,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}]},{"cell_type":"markdown","source":"## Importing a structure","metadata":{}},{"cell_type":"code","source":"from ase.build import bulk\n\nstructure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))","metadata":{"trusted":true},"execution_count":12,"outputs":[]},{"cell_type":"markdown","source":"## Relaxing the geometry","metadata":{}},{"cell_type":"code","source":"resources = {\n 'num_machines': 1,\n 'num_mpiprocs_per_machine': 1\n}\n\nrelax_params = {\n 'CONTROL': {\n 'calculation': 'vc-relax',\n # 'pseudo_dir': Path('files').absolute().as_posix(),\n },\n 'SYSTEM': {\n 'occupations': 'smearing',\n 'smearing': 'cold',\n 'degauss': 0.02\n }\n}","metadata":{"trusted":true},"execution_count":13,"outputs":[]},{"cell_type":"code","source":"from aiida_qe_basic.pw import PwCalculation\n\nbuilder = PwCalculation.get_builder()\n\nbuilder.code = orm.load_code('pw@localhost')\nbuilder.structure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))\nbuilder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\nbuilder.parameters = orm.Dict(relax_params)\nbuilder.metadata.options.resources = resources","metadata":{"trusted":true},"execution_count":14,"outputs":[]},{"cell_type":"code","source":"results = engine.run(builder)\nrelaxed_structure = results['structure']\nrelaxed_structure","metadata":{"trusted":true},"execution_count":15,"outputs":[{"execution_count":15,"output_type":"execute_result","data":{"text/plain":""},"metadata":{}}]},{"cell_type":"markdown","source":"## Calc function to rescale structures\n\nThe `calcfunction` below takes an input structure and rescales it to different volumes.","metadata":{}},{"cell_type":"code","source":"from aiida_qe_basic.pw import PwCalculation\n\n@engine.calcfunction\ndef rescale_list(structure: orm.StructureData, factor_list: orm.List):\n\n scaled_structure_dict = {}\n\n for index, scaling_factor in enumerate(factor_list.get_list()):\n\n ase_structure = structure.get_ase()\n\n new_cell = ase_structure.get_cell() * scaling_factor\n ase_structure.set_cell(new_cell, scale_atoms=True)\n\n scaled_structure_dict[f'structure_{index}'] = orm.StructureData(ase=ase_structure)\n\n return scaled_structure_dict","metadata":{"trusted":true},"execution_count":16,"outputs":[]},{"cell_type":"markdown","source":"Typically, you'd just run it by calling the function as you would a regular Python function:","metadata":{}},{"cell_type":"code","source":"rescaled_structures = rescale_list(relaxed_structure, orm.List(list=[0.9, 0.95, 1.0, 1.05, 1.1]))","metadata":{"trusted":true},"execution_count":17,"outputs":[]},{"cell_type":"code","source":"rescaled_structures","metadata":{"trusted":true},"execution_count":18,"outputs":[{"execution_count":18,"output_type":"execute_result","data":{"text/plain":"{'structure_0': ,\n 'structure_1': ,\n 'structure_2': ,\n 'structure_3': ,\n 'structure_4': }"},"metadata":{}}]},{"cell_type":"markdown","source":"## EOS: Work function version","metadata":{}},{"cell_type":"code","source":"scf_inputs = {\n 'CONTROL': {\n 'calculation': 'scf',\n # 'pseudo_dir': Path('files').absolute().as_posix(),\n },\n 'SYSTEM': {\n 'occupations': 'smearing',\n 'smearing': 'cold',\n 'degauss': 0.02\n }\n}","metadata":{"trusted":true},"execution_count":19,"outputs":[]},{"cell_type":"code","source":"@engine.workfunction\ndef run_eos_wf(code: orm.Code, structure: orm.StructureData, scale_factors: orm.List):\n \"\"\"Run an equation of state of a bulk crystal structure for the given element.\"\"\"\n\n properties = {}\n\n for label, rescaled_structure in rescale_list(structure, scale_factors).items():\n\n builder = PwCalculation.get_builder()\n builder.code = code\n builder.structure = rescaled_structure\n builder.parameters = orm.Dict(scf_inputs)\n builder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n builder.metadata.options.resources = resources\n\n results = engine.run(builder)\n properties[label] = results['properties']\n\n return properties","metadata":{"trusted":true},"execution_count":20,"outputs":[]},{"cell_type":"code","source":"results = run_eos_wf(\n code=orm.load_code('pw@localhost'),\n structure=relaxed_structure,\n scale_factors=[0.9, 0.95, 1.0, 1.05, 1.1]\n)","metadata":{"trusted":true},"execution_count":21,"outputs":[]},{"cell_type":"code","source":"results","metadata":{"trusted":true},"execution_count":22,"outputs":[{"execution_count":22,"output_type":"execute_result","data":{"text/plain":"{'structure_0': ,\n 'structure_1': ,\n 'structure_2': ,\n 'structure_3': ,\n 'structure_4': }"},"metadata":{}}]},{"cell_type":"code","source":"volumes = []\nenergies = []\n\nfor result in results.values():\n volumes.append(result['volume'])\n energies.append(result['energy'])","metadata":{"trusted":true},"execution_count":23,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\n\nplt.plot(volumes, energies)","metadata":{"trusted":true},"execution_count":24,"outputs":[{"execution_count":24,"output_type":"execute_result","data":{"text/plain":"[]"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
    ","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjYAAAGsCAYAAADOo+2NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJoklEQVR4nO3deVxU9f4/8NcsMOyDiuybO4KAO0uW1S3UNBUtM5WsbpZ6u6231NutrG5ZfX+3W91uWtpqVla4Z6Te1EoERUVQUVxQEBhAkGGTbebz+wOhCJBFhjNz5vV8POYPzpzDvD990nl5zvmct0IIIUBEREQkA0qpCyAiIiLqLgw2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2V7366quIjo6Gg4MDXF1dO3SMEALLly+Ht7c37O3tcfPNN+P48eNN758/fx4KhaLV17ffftvi99XU1GD48OFQKBRITU3tVP0rV65EWFgYXFxc4OLigqioKPzwww+d+h1ERESWjsHmqtraWtx9991YtGhRh49588038dZbb+G9997DwYMH4enpidtvvx3l5eUAAD8/P+Tn5zd7vfTSS3B0dMSkSZNa/L5nn30W3t7eXarf19cXr7/+OlJSUpCSkoJbb70V06ZNaxa0iIiIZE9QM5988onQarXt7mc0GoWnp6d4/fXXm7ZVV1cLrVYrVq1a1eZxw4cPFw8++GCL7du3bxdBQUHi+PHjAoA4cuRIs/ePHz8uJk2aJBwdHYW7u7uYN2+eKCoqumaNvXr1EmvWrGl3LERERHLBMzZdlJWVBZ1Oh5iYmKZtGo0G48ePR2JiYqvHHDp0CKmpqfjzn//cbHtBQQEWLFiAtWvXwsHBocVx+fn5GD9+PIYPH46UlBQkJCSgoKAAs2bNavVzDAYDvv76a1RWViIqKuo6RklERGRZ1FIXYKl0Oh0AwMPDo9l2Dw8PXLhwodVjPvroIwwdOhTR0dFN24QQuP/++7Fw4UKMHj0a58+fb3HcypUrMXLkSLz22mtN2z7++GP4+fkhMzMTgwcPBgCkp6cjKioK1dXVcHJywsaNGxEcHHy9QyUiIrIYsj5js3z58jZv3m18paSkXNdnKBSKZj8LIVpsA4ArV67gyy+/bHG25j//+Q/KysqwbNmyNj/j0KFD2L17N5ycnJpeQUFBAICzZ8827TdkyBCkpqYiKSkJixYtwvz583HixInrGR4REZFFkfUZm0cffRSzZ8++5j6BgYFd+t2enp4AGs7ceHl5NW0vLCxscRYHAL777jtUVVXhvvvua7b9p59+QlJSEjQaTbPto0ePxty5c/HZZ5/BaDTizjvvxBtvvNHi9/7+s21tbTFw4MCm4w8ePIh33nkHH3zwQZfGSEREZGlkHWzc3Nzg5uZmkt/dr18/eHp6YufOnRgxYgSAhpVVe/fubTWAfPTRR5g6dSr69u3bbPu7776Lf/7zn00/5+XlYcKECVi/fj0iIiIAACNHjkR8fDwCAwOhVnd8yoQQqKmp6crwiIiILJKsg01nZGdno6SkBNnZ2TAYDE3PkRk4cCCcnJwAAEFBQVixYgViY2OhUCjwxBNP4LXXXsOgQYMwaNAgvPbaa3BwcMCcOXOa/e4zZ87g559/xvbt21t8rr+/f7OfGz9rwIAB8PX1BQD85S9/werVq3HvvffimWeegZubG86cOYOvv/4aq1evhkqlwt///ndMmjQJfn5+KC8vx9dff409e/YgISGhu/9TERERmS0Gm6teeOEFfPbZZ00/N56F2b17N26++WYAwKlTp6DX65v2efbZZ3HlyhUsXrwYly9fRkREBHbs2AFnZ+dmv/vjjz+Gj49PsxVUneHt7Y19+/ZhyZIlmDBhAmpqahAQEICJEydCqWy4TaqgoABxcXHIz8+HVqtFWFgYEhIScPvtt3fpM4mIiCyRQgghpC6CiIiIqDvIelUUERERWRcGGyIiIpIN2d1jYzQakZeXB2dn51afJ0NERETmRwiB8vJyeHt7N90/2hWyCzZ5eXnw8/OTugwiIiLqgpycnKZVwV0hu2DTuCIpJycHLi4uEldDREREHVFWVgY/P78WK4s7S3bBpvHyk4uLC4MNERGRhbne20h48zARERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGg00H6a/UYc0v57DkuzSpSyEiIqI2MNh0UHWdAa9tz8D6lBxcKK6UuhwiIiJqBYNNB3m42OGGgW4AgE1H8iSuhoiIiFrDYNMJsSN8AACbUnMhhJC4GiIi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hx4SEyZMkKjC6/P78bUmLy9P2NjYiPj4+B6urOtsbGxEVFRUs21//etfRWRkpBBCWPw8tje+1ljiPDaKiYkRU6ZMafrZ0ufvj/44vtZY4vx99dVXwtfXV3z11VciLS1NfP7556J3797i008/FUJY/jy2N77WWOI8njlzRtx0000CgFCpVGLMmDFi7ty5YujQod02h7wU1cMcHR0RGhqK06dPN60e0ul0zfYpLCyEh4eHFOVdt9+PrzVeXl4ICAho831z5OXlheDg4Gbbhg4diuzsbACw+Hlsb3xtHWNp8wgAFy5cwK5du/DQQw81bbP0+fu91sbXGkucv2eeeQZLly7F7NmzERoairi4ODz55JNYsWIFAMufx/bG1xpLnMcBAwZg7969qKioQE5ODg4cOIC6ujr069ev2+aQwaaH1dTUICMjA15eXk0TuXPnzqb3a2trsXfvXkRHR0tYZdf9fnytKS4uRk5OTpvvm6MbbrgBp06darYtMzMTAQEBAGDx89je+FpjifMIAJ988gnc3d0xefLkpm2WPn+/19r4WmOJ81dVVQWlsvlXlkqlaloObenz2N74WmOJ89jI0dERXl5euHz5Mn788UdMmzat++awu08zUXNPP/202LNnjzh37pxISkoSU6ZMEc7OzuL8+fNCiIalbVqtVmzYsEGkp6eLe++912KWJwpx7fGVl5eLp59+WiQmJoqsrCyxe/duERUVJXx8fCxmfEIIceDAAaFWq8Wrr74qTp8+LdatWyccHBzEF1980bSPJc9je+OTyzwaDAbh7+8vlixZ0uI9S56/Rm2NTy7zN3/+fOHj49O0HHrDhg3Czc1NPPvss037WPI8tjc+ucxjQkKC+OGHH8S5c+fEjh07RHh4uBg7dqyora0VQnTPHDLYmFjjGnwbGxvh7e0tZsyYIY4fP970vtFoFC+++KLw9PQUGo1G3HTTTSI9PV3CijvnWuOrqqoSMTExom/fvsLGxkb4+/uL+fPni+zsbImr7rytW7eKYcOGCY1GI4KCgsSHH37Y7H1Ln8drjU8u8/jjjz8KAOLUqVMt3rP0+ROi7fHJZf7KysrE448/Lvz9/YWdnZ3o37+/eO6550RNTU3TPpY8j+2NTy7zuH79etG/f39ha2srPD09xV/+8hdRWlra9H53zKFCCCG6/RwTERERkQR4jw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREcnG/wci5SF28bFkygAAAABJRU5ErkJggg=="},"metadata":{}}]},{"cell_type":"markdown","source":"## Work chain version","metadata":{}},{"cell_type":"code","source":"@engine.calcfunction\ndef create_eos_dictionary(**kwargs) -> orm.Dict:\n eos = {\n label: (result['volume'], result['energy'])\n for label, result in kwargs.items()\n }\n return orm.Dict(eos)","metadata":{"trusted":true},"execution_count":25,"outputs":[]},{"cell_type":"code","source":"create_eos_dictionary(**results).get_dict()","metadata":{"trusted":true},"execution_count":26,"outputs":[{"execution_count":26,"output_type":"execute_result","data":{"text/plain":"{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}"},"metadata":{}}]},{"cell_type":"code","source":"class EquationOfState(engine.WorkChain):\n \"\"\"WorkChain to compute Equation of State using Quantum ESPRESSO.\"\"\"\n\n @classmethod\n def define(cls, spec):\n \"\"\"Specify inputs and outputs.\"\"\"\n super().define(spec)\n spec.input(\"code\", valid_type=orm.Code)\n spec.input(\"structure\", valid_type=orm.StructureData)\n spec.input(\"scale_factors\", valid_type=orm.List)\n\n spec.outline(\n cls.run_eos,\n cls.results,\n )\n spec.output(\"eos_dict\", valid_type=orm.Dict)\n\n def run_eos(self):\n\n calcjob_dict = {}\n\n for label, rescaled_structure in rescale_list(self.inputs.structure, self.inputs.scale_factors).items():\n\n builder = PwCalculation.get_builder()\n builder.code = self.inputs.code\n builder.structure = rescaled_structure\n builder.parameters = orm.Dict(scf_inputs)\n builder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n builder.metadata.options.resources = resources\n\n calcjob_dict[label] = self.submit(builder)\n\n self.ctx.labels = list(calcjob_dict.keys())\n\n return calcjob_dict\n\n def results(self):\n\n self.report(self.ctx)\n\n eos_results = {\n label: self.ctx[label].outputs['properties'] for label in self.ctx.labels\n }\n eos_dict = create_eos_dictionary(**eos_results)\n self.out('eos_dict', eos_dict)\n","metadata":{"trusted":true},"execution_count":27,"outputs":[]},{"cell_type":"code","source":"engine.run(EquationOfState, code=orm.load_code('pw@localhost'),\n structure=relaxed_structure,\n scale_factors=orm.List([0.9, 0.95, 1.0, 1.05, 1.1]))","metadata":{"trusted":true},"execution_count":28,"outputs":[{"name":"stderr","text":"04/04/2024 05:40:39 PM <83> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [71|EquationOfState|results]: AttributeDict({'labels': ['structure_0', 'structure_1', 'structure_2', 'structure_3', 'structure_4'], 'structure_0': , 'structure_1': , 'structure_2': , 'structure_3': , 'structure_4': })\n","output_type":"stream"},{"execution_count":28,"output_type":"execute_result","data":{"text/plain":"{'eos_dict': }"},"metadata":{}}]},{"cell_type":"markdown","source":"## Using the `builder`","metadata":{}},{"cell_type":"code","source":"builder = EquationOfState.get_builder()","metadata":{"trusted":true},"execution_count":29,"outputs":[]},{"cell_type":"code","source":"builder.structure = relaxed_structure","metadata":{"trusted":true},"execution_count":30,"outputs":[]},{"cell_type":"code","source":"builder","metadata":{"trusted":true},"execution_count":31,"outputs":[{"execution_count":31,"output_type":"execute_result","data":{"text/plain":"Process class: EquationOfState\nInputs:\nmetadata: {}\nstructure: Al\n"},"metadata":{}}]},{"cell_type":"code","source":"builder.scale_factors = orm.List([0.9, 0.95, 1.0, 1.05, 1.1])\nbuilder.code = orm.load_code('pw@localhost')","metadata":{"trusted":true},"execution_count":32,"outputs":[]},{"cell_type":"code","source":"results, node = engine.run_get_node(builder)","metadata":{"trusted":true},"execution_count":33,"outputs":[{"name":"stderr","text":"04/04/2024 05:41:05 PM <83> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [116|EquationOfState|results]: AttributeDict({'labels': ['structure_0', 'structure_1', 'structure_2', 'structure_3', 'structure_4'], 'structure_0': , 'structure_1': , 'structure_2': , 'structure_3': , 'structure_4': })\n","output_type":"stream"}]},{"cell_type":"code","source":"results['eos_dict'].get_dict()","metadata":{"trusted":true},"execution_count":34,"outputs":[{"execution_count":34,"output_type":"execute_result","data":{"text/plain":"{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}"},"metadata":{}}]},{"cell_type":"code","source":"eos = node.outputs.eos_dict.get_dict()","metadata":{"trusted":true},"execution_count":35,"outputs":[]},{"cell_type":"code","source":"eos","metadata":{"trusted":true},"execution_count":36,"outputs":[{"execution_count":36,"output_type":"execute_result","data":{"text/plain":"{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}"},"metadata":{}}]},{"cell_type":"code","source":"plt.plot(\n [v[0] for v in eos.values()],\n [v[1] for v in eos.values()],\n)","metadata":{"tags":[],"trusted":true},"execution_count":37,"outputs":[{"execution_count":37,"output_type":"execute_result","data":{"text/plain":"[]"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
    ","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjYAAAGsCAYAAADOo+2NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJoklEQVR4nO3deVxU9f4/8NcsMOyDiuybO4KAO0uW1S3UNBUtM5WsbpZ6u6231NutrG5ZfX+3W91uWtpqVla4Z6Te1EoERUVQUVxQEBhAkGGTbebz+wOhCJBFhjNz5vV8POYPzpzDvD990nl5zvmct0IIIUBEREQkA0qpCyAiIiLqLgw2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2V7366quIjo6Gg4MDXF1dO3SMEALLly+Ht7c37O3tcfPNN+P48eNN758/fx4KhaLV17ffftvi99XU1GD48OFQKBRITU3tVP0rV65EWFgYXFxc4OLigqioKPzwww+d+h1ERESWjsHmqtraWtx9991YtGhRh49588038dZbb+G9997DwYMH4enpidtvvx3l5eUAAD8/P+Tn5zd7vfTSS3B0dMSkSZNa/L5nn30W3t7eXarf19cXr7/+OlJSUpCSkoJbb70V06ZNaxa0iIiIZE9QM5988onQarXt7mc0GoWnp6d4/fXXm7ZVV1cLrVYrVq1a1eZxw4cPFw8++GCL7du3bxdBQUHi+PHjAoA4cuRIs/ePHz8uJk2aJBwdHYW7u7uYN2+eKCoqumaNvXr1EmvWrGl3LERERHLBMzZdlJWVBZ1Oh5iYmKZtGo0G48ePR2JiYqvHHDp0CKmpqfjzn//cbHtBQQEWLFiAtWvXwsHBocVx+fn5GD9+PIYPH46UlBQkJCSgoKAAs2bNavVzDAYDvv76a1RWViIqKuo6RklERGRZ1FIXYKl0Oh0AwMPDo9l2Dw8PXLhwodVjPvroIwwdOhTR0dFN24QQuP/++7Fw4UKMHj0a58+fb3HcypUrMXLkSLz22mtN2z7++GP4+fkhMzMTgwcPBgCkp6cjKioK1dXVcHJywsaNGxEcHHy9QyUiIrIYsj5js3z58jZv3m18paSkXNdnKBSKZj8LIVpsA4ArV67gyy+/bHG25j//+Q/KysqwbNmyNj/j0KFD2L17N5ycnJpeQUFBAICzZ8827TdkyBCkpqYiKSkJixYtwvz583HixInrGR4REZFFkfUZm0cffRSzZ8++5j6BgYFd+t2enp4AGs7ceHl5NW0vLCxscRYHAL777jtUVVXhvvvua7b9p59+QlJSEjQaTbPto0ePxty5c/HZZ5/BaDTizjvvxBtvvNHi9/7+s21tbTFw4MCm4w8ePIh33nkHH3zwQZfGSEREZGlkHWzc3Nzg5uZmkt/dr18/eHp6YufOnRgxYgSAhpVVe/fubTWAfPTRR5g6dSr69u3bbPu7776Lf/7zn00/5+XlYcKECVi/fj0iIiIAACNHjkR8fDwCAwOhVnd8yoQQqKmp6crwiIiILJKsg01nZGdno6SkBNnZ2TAYDE3PkRk4cCCcnJwAAEFBQVixYgViY2OhUCjwxBNP4LXXXsOgQYMwaNAgvPbaa3BwcMCcOXOa/e4zZ87g559/xvbt21t8rr+/f7OfGz9rwIAB8PX1BQD85S9/werVq3HvvffimWeegZubG86cOYOvv/4aq1evhkqlwt///ndMmjQJfn5+KC8vx9dff409e/YgISGhu/9TERERmS0Gm6teeOEFfPbZZ00/N56F2b17N26++WYAwKlTp6DX65v2efbZZ3HlyhUsXrwYly9fRkREBHbs2AFnZ+dmv/vjjz+Gj49PsxVUneHt7Y19+/ZhyZIlmDBhAmpqahAQEICJEydCqWy4TaqgoABxcXHIz8+HVqtFWFgYEhIScPvtt3fpM4mIiCyRQgghpC6CiIiIqDvIelUUERERWRcGGyIiIpIN2d1jYzQakZeXB2dn51afJ0NERETmRwiB8vJyeHt7N90/2hWyCzZ5eXnw8/OTugwiIiLqgpycnKZVwV0hu2DTuCIpJycHLi4uEldDREREHVFWVgY/P78WK4s7S3bBpvHyk4uLC4MNERGRhbne20h48zARERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGg00H6a/UYc0v57DkuzSpSyEiIqI2MNh0UHWdAa9tz8D6lBxcKK6UuhwiIiJqBYNNB3m42OGGgW4AgE1H8iSuhoiIiFrDYNMJsSN8AACbUnMhhJC4GiIi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hx4SEyZMkKjC6/P78bUmLy9P2NjYiPj4+B6urOtsbGxEVFRUs21//etfRWRkpBBCWPw8tje+1ljiPDaKiYkRU6ZMafrZ0ufvj/44vtZY4vx99dVXwtfXV3z11VciLS1NfP7556J3797i008/FUJY/jy2N77WWOI8njlzRtx0000CgFCpVGLMmDFi7ty5YujQod02h7wU1cMcHR0RGhqK06dPN60e0ul0zfYpLCyEh4eHFOVdt9+PrzVeXl4ICAho831z5OXlheDg4Gbbhg4diuzsbACw+Hlsb3xtHWNp8wgAFy5cwK5du/DQQw81bbP0+fu91sbXGkucv2eeeQZLly7F7NmzERoairi4ODz55JNYsWIFAMufx/bG1xpLnMcBAwZg7969qKioQE5ODg4cOIC6ujr069ev2+aQwaaH1dTUICMjA15eXk0TuXPnzqb3a2trsXfvXkRHR0tYZdf9fnytKS4uRk5OTpvvm6MbbrgBp06darYtMzMTAQEBAGDx89je+FpjifMIAJ988gnc3d0xefLkpm2WPn+/19r4WmOJ81dVVQWlsvlXlkqlaloObenz2N74WmOJ89jI0dERXl5euHz5Mn788UdMmzat++awu08zUXNPP/202LNnjzh37pxISkoSU6ZMEc7OzuL8+fNCiIalbVqtVmzYsEGkp6eLe++912KWJwpx7fGVl5eLp59+WiQmJoqsrCyxe/duERUVJXx8fCxmfEIIceDAAaFWq8Wrr74qTp8+LdatWyccHBzEF1980bSPJc9je+OTyzwaDAbh7+8vlixZ0uI9S56/Rm2NTy7zN3/+fOHj49O0HHrDhg3Czc1NPPvss037WPI8tjc+ucxjQkKC+OGHH8S5c+fEjh07RHh4uBg7dqyora0VQnTPHDLYmFjjGnwbGxvh7e0tZsyYIY4fP970vtFoFC+++KLw9PQUGo1G3HTTTSI9PV3CijvnWuOrqqoSMTExom/fvsLGxkb4+/uL+fPni+zsbImr7rytW7eKYcOGCY1GI4KCgsSHH37Y7H1Ln8drjU8u8/jjjz8KAOLUqVMt3rP0+ROi7fHJZf7KysrE448/Lvz9/YWdnZ3o37+/eO6550RNTU3TPpY8j+2NTy7zuH79etG/f39ha2srPD09xV/+8hdRWlra9H53zKFCCCG6/RwTERERkQR4jw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREcnG/wci5SF28bFkygAAAABJRU5ErkJggg=="},"metadata":{}}]}]} \ No newline at end of file +{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3 (ipykernel)","language":"python"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.11.0"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Aiida","metadata":{}},{"cell_type":"code","source":"import subprocess","metadata":{"tags":[]},"execution_count":1,"outputs":[]},{"cell_type":"code","source":"try: \n subprocess.check_output([\"verdi\", \"profile\", \"setup\", \"core.sqlite_dos\", \"-n\", \"--profile\", \"test\", \"--email\", \"no@email.com\"])\nexcept: \n pass","metadata":{"tags":[]},"execution_count":2,"outputs":[{"name":"stderr","text":"/srv/conda/envs/notebook/lib/python3.11/site-packages/aiida/manage/configuration/settings.py:59: UserWarning: Creating AiiDA configuration folder `/home/jovyan/.aiida`.\n warnings.warn(f'Creating AiiDA configuration folder `{path}`.')\n","output_type":"stream"}]},{"cell_type":"code","source":"from pathlib import Path\nfrom ase.build import bulk\n\nfrom aiida import orm, engine, load_profile\nfrom aiida.common.exceptions import NotExistent\n\nload_profile()","metadata":{"tags":[]},"execution_count":3,"outputs":[{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}]},{"cell_type":"code","source":"try:\n localhost = orm.load_computer('localhost')\nexcept NotExistent:\n localhost = orm.Computer(\n label='localhost',\n hostname='localhost',\n transport_type='core.local',\n scheduler_type='core.direct',\n workdir=Path('workdir').absolute().as_posix()\n ).store()\n localhost.configure()\n\ntry:\n pw_code = orm.load_code('pw@localhost')\nexcept NotExistent:\n pw_code = orm.InstalledCode(\n label='pw',\n computer=localhost,\n filepath_executable='pw.x',\n default_calc_job_plugin='aiida_qe_basic.pw',\n prepend_text='export OMP_NUM_THREADS=1'\n ).store()","metadata":{"tags":[]},"execution_count":4,"outputs":[{"name":"stderr","text":"/srv/conda/envs/notebook/lib/python3.11/site-packages/aiida/orm/nodes/data/code/legacy.py:42: AiidaDeprecationWarning: The `Code` class is deprecated. To create an instance, use the `aiida.orm.nodes.data.code.installed.InstalledCode` or `aiida.orm.nodes.data.code.portable.PortableCode` for a \"remote\" or \"local\" code, respectively. If you are using this class to compare type, e.g. in `isinstance`, use `aiida.orm.nodes.data.code.abstract.AbstractCode`. (this will be removed in v3)\n warn_deprecation(\n","output_type":"stream"}]},{"cell_type":"code","source":"from aiida_qe_basic.pw import PwCalculation\n\nbuilder = PwCalculation.get_builder()\n\nbuilder.code = pw_code\nbuilder.structure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))\nbuilder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\nbuilder.parameters = orm.Dict(\n {\n 'CONTROL': {\n 'calculation': 'scf',\n # 'pseudo_dir': Path('files').absolute().as_posix(),\n },\n 'SYSTEM': {\n 'occupations': 'smearing',\n 'smearing': 'cold',\n 'degauss': 0.02\n }\n }\n)\nbuilder.metadata.options.resources = {\n 'num_machines': 1,\n 'num_mpiprocs_per_machine': 1\n}","metadata":{"tags":[]},"execution_count":5,"outputs":[]},{"cell_type":"code","source":"! rabbitmq-server -detached","metadata":{},"execution_count":6,"outputs":[]},{"cell_type":"code","source":"! sleep 5","metadata":{},"execution_count":7,"outputs":[]},{"cell_type":"code","source":"results = engine.run(builder)","metadata":{"tags":[]},"execution_count":8,"outputs":[]},{"cell_type":"code","source":"results","metadata":{},"execution_count":9,"outputs":[{"execution_count":9,"output_type":"execute_result","data":{"text/plain":"{'structure': ,\n 'properties': ,\n 'remote_folder': ,\n 'retrieved': }"},"metadata":{}}]},{"cell_type":"code","source":"results['properties'].get_dict()","metadata":{},"execution_count":10,"outputs":[{"execution_count":10,"output_type":"execute_result","data":{"text/plain":"{'energy': -1074.9272223013, 'volume': 66.430124128914}"},"metadata":{}}]},{"cell_type":"markdown","source":"## Equation of State curve - basic QE\n\nRunning an EOS without all the fancy features in the `aiida-quantumespresso` plugin.","metadata":{}},{"cell_type":"code","source":"from pathlib import Path\n\nfrom aiida import orm, engine, load_profile\n\nload_profile()","metadata":{},"execution_count":11,"outputs":[{"execution_count":11,"output_type":"execute_result","data":{"text/plain":"Profile"},"metadata":{}}]},{"cell_type":"markdown","source":"### Importing a structure","metadata":{}},{"cell_type":"code","source":"from ase.build import bulk\n\nstructure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))","metadata":{},"execution_count":12,"outputs":[]},{"cell_type":"markdown","source":"### Relaxing the geometry","metadata":{}},{"cell_type":"code","source":"resources = {\n 'num_machines': 1,\n 'num_mpiprocs_per_machine': 1\n}\n\nrelax_params = {\n 'CONTROL': {\n 'calculation': 'vc-relax',\n # 'pseudo_dir': Path('files').absolute().as_posix(),\n },\n 'SYSTEM': {\n 'occupations': 'smearing',\n 'smearing': 'cold',\n 'degauss': 0.02\n }\n}","metadata":{},"execution_count":13,"outputs":[]},{"cell_type":"code","source":"from aiida_qe_basic.pw import PwCalculation\n\nbuilder = PwCalculation.get_builder()\n\nbuilder.code = orm.load_code('pw@localhost')\nbuilder.structure = orm.StructureData(ase=bulk('Al', a=4.05, cubic=True))\nbuilder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\nbuilder.parameters = orm.Dict(relax_params)\nbuilder.metadata.options.resources = resources","metadata":{},"execution_count":14,"outputs":[]},{"cell_type":"code","source":"results = engine.run(builder)\nrelaxed_structure = results['structure']\nrelaxed_structure","metadata":{},"execution_count":15,"outputs":[{"execution_count":15,"output_type":"execute_result","data":{"text/plain":""},"metadata":{}}]},{"cell_type":"markdown","source":"### Calc function to rescale structures\n\nThe `calcfunction` below takes an input structure and rescales it to different volumes.","metadata":{}},{"cell_type":"code","source":"from aiida_qe_basic.pw import PwCalculation\n\n@engine.calcfunction\ndef rescale_list(structure: orm.StructureData, factor_list: orm.List):\n\n scaled_structure_dict = {}\n\n for index, scaling_factor in enumerate(factor_list.get_list()):\n\n ase_structure = structure.get_ase()\n\n new_cell = ase_structure.get_cell() * scaling_factor\n ase_structure.set_cell(new_cell, scale_atoms=True)\n\n scaled_structure_dict[f'structure_{index}'] = orm.StructureData(ase=ase_structure)\n\n return scaled_structure_dict","metadata":{},"execution_count":16,"outputs":[]},{"cell_type":"markdown","source":"Typically, you'd just run it by calling the function as you would a regular Python function:","metadata":{}},{"cell_type":"code","source":"rescaled_structures = rescale_list(relaxed_structure, orm.List(list=[0.9, 0.95, 1.0, 1.05, 1.1]))","metadata":{},"execution_count":17,"outputs":[]},{"cell_type":"code","source":"rescaled_structures","metadata":{},"execution_count":18,"outputs":[{"execution_count":18,"output_type":"execute_result","data":{"text/plain":"{'structure_0': ,\n 'structure_1': ,\n 'structure_2': ,\n 'structure_3': ,\n 'structure_4': }"},"metadata":{}}]},{"cell_type":"markdown","source":"## EOS: Work function version","metadata":{}},{"cell_type":"code","source":"scf_inputs = {\n 'CONTROL': {\n 'calculation': 'scf',\n # 'pseudo_dir': Path('files').absolute().as_posix(),\n },\n 'SYSTEM': {\n 'occupations': 'smearing',\n 'smearing': 'cold',\n 'degauss': 0.02\n }\n}","metadata":{},"execution_count":19,"outputs":[]},{"cell_type":"code","source":"@engine.workfunction\ndef run_eos_wf(code: orm.Code, structure: orm.StructureData, scale_factors: orm.List):\n \"\"\"Run an equation of state of a bulk crystal structure for the given element.\"\"\"\n\n properties = {}\n\n for label, rescaled_structure in rescale_list(structure, scale_factors).items():\n\n builder = PwCalculation.get_builder()\n builder.code = code\n builder.structure = rescaled_structure\n builder.parameters = orm.Dict(scf_inputs)\n builder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n builder.metadata.options.resources = resources\n\n results = engine.run(builder)\n properties[label] = results['properties']\n\n return properties","metadata":{},"execution_count":20,"outputs":[]},{"cell_type":"code","source":"results = run_eos_wf(\n code=orm.load_code('pw@localhost'),\n structure=relaxed_structure,\n scale_factors=[0.9, 0.95, 1.0, 1.05, 1.1]\n)","metadata":{},"execution_count":21,"outputs":[]},{"cell_type":"code","source":"results","metadata":{},"execution_count":22,"outputs":[{"execution_count":22,"output_type":"execute_result","data":{"text/plain":"{'structure_0': ,\n 'structure_1': ,\n 'structure_2': ,\n 'structure_3': ,\n 'structure_4': }"},"metadata":{}}]},{"cell_type":"code","source":"volumes = []\nenergies = []\n\nfor result in results.values():\n volumes.append(result['volume'])\n energies.append(result['energy'])","metadata":{},"execution_count":23,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\n\nplt.plot(volumes, energies)","metadata":{},"execution_count":24,"outputs":[{"execution_count":24,"output_type":"execute_result","data":{"text/plain":"[]"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
    ","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjYAAAGsCAYAAADOo+2NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJoklEQVR4nO3deVxU9f4/8NcsMOyDiuybO4KAO0uW1S3UNBUtM5WsbpZ6u6231NutrG5ZfX+3W91uWtpqVla4Z6Te1EoERUVQUVxQEBhAkGGTbebz+wOhCJBFhjNz5vV8POYPzpzDvD990nl5zvmct0IIIUBEREQkA0qpCyAiIiLqLgw2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2V7366quIjo6Gg4MDXF1dO3SMEALLly+Ht7c37O3tcfPNN+P48eNN758/fx4KhaLV17ffftvi99XU1GD48OFQKBRITU3tVP0rV65EWFgYXFxc4OLigqioKPzwww+d+h1ERESWjsHmqtraWtx9991YtGhRh49588038dZbb+G9997DwYMH4enpidtvvx3l5eUAAD8/P+Tn5zd7vfTSS3B0dMSkSZNa/L5nn30W3t7eXarf19cXr7/+OlJSUpCSkoJbb70V06ZNaxa0iIiIZE9QM5988onQarXt7mc0GoWnp6d4/fXXm7ZVV1cLrVYrVq1a1eZxw4cPFw8++GCL7du3bxdBQUHi+PHjAoA4cuRIs/ePHz8uJk2aJBwdHYW7u7uYN2+eKCoqumaNvXr1EmvWrGl3LERERHLBMzZdlJWVBZ1Oh5iYmKZtGo0G48ePR2JiYqvHHDp0CKmpqfjzn//cbHtBQQEWLFiAtWvXwsHBocVx+fn5GD9+PIYPH46UlBQkJCSgoKAAs2bNavVzDAYDvv76a1RWViIqKuo6RklERGRZ1FIXYKl0Oh0AwMPDo9l2Dw8PXLhwodVjPvroIwwdOhTR0dFN24QQuP/++7Fw4UKMHj0a58+fb3HcypUrMXLkSLz22mtN2z7++GP4+fkhMzMTgwcPBgCkp6cjKioK1dXVcHJywsaNGxEcHHy9QyUiIrIYsj5js3z58jZv3m18paSkXNdnKBSKZj8LIVpsA4ArV67gyy+/bHG25j//+Q/KysqwbNmyNj/j0KFD2L17N5ycnJpeQUFBAICzZ8827TdkyBCkpqYiKSkJixYtwvz583HixInrGR4REZFFkfUZm0cffRSzZ8++5j6BgYFd+t2enp4AGs7ceHl5NW0vLCxscRYHAL777jtUVVXhvvvua7b9p59+QlJSEjQaTbPto0ePxty5c/HZZ5/BaDTizjvvxBtvvNHi9/7+s21tbTFw4MCm4w8ePIh33nkHH3zwQZfGSEREZGlkHWzc3Nzg5uZmkt/dr18/eHp6YufOnRgxYgSAhpVVe/fubTWAfPTRR5g6dSr69u3bbPu7776Lf/7zn00/5+XlYcKECVi/fj0iIiIAACNHjkR8fDwCAwOhVnd8yoQQqKmp6crwiIiILJKsg01nZGdno6SkBNnZ2TAYDE3PkRk4cCCcnJwAAEFBQVixYgViY2OhUCjwxBNP4LXXXsOgQYMwaNAgvPbaa3BwcMCcOXOa/e4zZ87g559/xvbt21t8rr+/f7OfGz9rwIAB8PX1BQD85S9/werVq3HvvffimWeegZubG86cOYOvv/4aq1evhkqlwt///ndMmjQJfn5+KC8vx9dff409e/YgISGhu/9TERERmS0Gm6teeOEFfPbZZ00/N56F2b17N26++WYAwKlTp6DX65v2efbZZ3HlyhUsXrwYly9fRkREBHbs2AFnZ+dmv/vjjz+Gj49PsxVUneHt7Y19+/ZhyZIlmDBhAmpqahAQEICJEydCqWy4TaqgoABxcXHIz8+HVqtFWFgYEhIScPvtt3fpM4mIiCyRQgghpC6CiIiIqDvIelUUERERWRcGGyIiIpIN2d1jYzQakZeXB2dn51afJ0NERETmRwiB8vJyeHt7N90/2hWyCzZ5eXnw8/OTugwiIiLqgpycnKZVwV0hu2DTuCIpJycHLi4uEldDREREHVFWVgY/P78WK4s7S3bBpvHyk4uLC4MNERGRhbne20h48zARERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGg00H6a/UYc0v57DkuzSpSyEiIqI2MNh0UHWdAa9tz8D6lBxcKK6UuhwiIiJqBYNNB3m42OGGgW4AgE1H8iSuhoiIiFrDYNMJsSN8AACbUnMhhJC4GiIi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hx4SEyZMkKjC6/P78bUmLy9P2NjYiPj4+B6urOtsbGxEVFRUs21//etfRWRkpBBCWPw8tje+1ljiPDaKiYkRU6ZMafrZ0ufvj/44vtZY4vx99dVXwtfXV3z11VciLS1NfP7556J3797i008/FUJY/jy2N77WWOI8njlzRtx0000CgFCpVGLMmDFi7ty5YujQod02h7wU1cMcHR0RGhqK06dPN60e0ul0zfYpLCyEh4eHFOVdt9+PrzVeXl4ICAho831z5OXlheDg4Gbbhg4diuzsbACw+Hlsb3xtHWNp8wgAFy5cwK5du/DQQw81bbP0+fu91sbXGkucv2eeeQZLly7F7NmzERoairi4ODz55JNYsWIFAMufx/bG1xpLnMcBAwZg7969qKioQE5ODg4cOIC6ujr069ev2+aQwaaH1dTUICMjA15eXk0TuXPnzqb3a2trsXfvXkRHR0tYZdf9fnytKS4uRk5OTpvvm6MbbrgBp06darYtMzMTAQEBAGDx89je+FpjifMIAJ988gnc3d0xefLkpm2WPn+/19r4WmOJ81dVVQWlsvlXlkqlaloObenz2N74WmOJ89jI0dERXl5euHz5Mn788UdMmzat++awu08zUXNPP/202LNnjzh37pxISkoSU6ZMEc7OzuL8+fNCiIalbVqtVmzYsEGkp6eLe++912KWJwpx7fGVl5eLp59+WiQmJoqsrCyxe/duERUVJXx8fCxmfEIIceDAAaFWq8Wrr74qTp8+LdatWyccHBzEF1980bSPJc9je+OTyzwaDAbh7+8vlixZ0uI9S56/Rm2NTy7zN3/+fOHj49O0HHrDhg3Czc1NPPvss037WPI8tjc+ucxjQkKC+OGHH8S5c+fEjh07RHh4uBg7dqyora0VQnTPHDLYmFjjGnwbGxvh7e0tZsyYIY4fP970vtFoFC+++KLw9PQUGo1G3HTTTSI9PV3CijvnWuOrqqoSMTExom/fvsLGxkb4+/uL+fPni+zsbImr7rytW7eKYcOGCY1GI4KCgsSHH37Y7H1Ln8drjU8u8/jjjz8KAOLUqVMt3rP0+ROi7fHJZf7KysrE448/Lvz9/YWdnZ3o37+/eO6550RNTU3TPpY8j+2NTy7zuH79etG/f39ha2srPD09xV/+8hdRWlra9H53zKFCCCG6/RwTERERkQR4jw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREcnG/wci5SF28bFkygAAAABJRU5ErkJggg=="},"metadata":{}}]},{"cell_type":"markdown","source":"## Work chain version","metadata":{}},{"cell_type":"code","source":"@engine.calcfunction\ndef create_eos_dictionary(**kwargs) -> orm.Dict:\n eos = {\n label: (result['volume'], result['energy'])\n for label, result in kwargs.items()\n }\n return orm.Dict(eos)","metadata":{},"execution_count":25,"outputs":[]},{"cell_type":"code","source":"create_eos_dictionary(**results).get_dict()","metadata":{},"execution_count":26,"outputs":[{"execution_count":26,"output_type":"execute_result","data":{"text/plain":"{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}"},"metadata":{}}]},{"cell_type":"code","source":"class EquationOfState(engine.WorkChain):\n \"\"\"WorkChain to compute Equation of State using Quantum ESPRESSO.\"\"\"\n\n @classmethod\n def define(cls, spec):\n \"\"\"Specify inputs and outputs.\"\"\"\n super().define(spec)\n spec.input(\"code\", valid_type=orm.Code)\n spec.input(\"structure\", valid_type=orm.StructureData)\n spec.input(\"scale_factors\", valid_type=orm.List)\n\n spec.outline(\n cls.run_eos,\n cls.results,\n )\n spec.output(\"eos_dict\", valid_type=orm.Dict)\n\n def run_eos(self):\n\n calcjob_dict = {}\n\n for label, rescaled_structure in rescale_list(self.inputs.structure, self.inputs.scale_factors).items():\n\n builder = PwCalculation.get_builder()\n builder.code = self.inputs.code\n builder.structure = rescaled_structure\n builder.parameters = orm.Dict(scf_inputs)\n builder.pseudopotentials = orm.Dict({\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n builder.metadata.options.resources = resources\n\n calcjob_dict[label] = self.submit(builder)\n\n self.ctx.labels = list(calcjob_dict.keys())\n\n return calcjob_dict\n\n def results(self):\n\n self.report(self.ctx)\n\n eos_results = {\n label: self.ctx[label].outputs['properties'] for label in self.ctx.labels\n }\n eos_dict = create_eos_dictionary(**eos_results)\n self.out('eos_dict', eos_dict)\n","metadata":{},"execution_count":27,"outputs":[]},{"cell_type":"code","source":"engine.run(EquationOfState, code=orm.load_code('pw@localhost'),\n structure=relaxed_structure,\n scale_factors=orm.List([0.9, 0.95, 1.0, 1.05, 1.1]))","metadata":{},"execution_count":28,"outputs":[{"name":"stderr","text":"04/04/2024 05:40:39 PM <83> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [71|EquationOfState|results]: AttributeDict({'labels': ['structure_0', 'structure_1', 'structure_2', 'structure_3', 'structure_4'], 'structure_0': , 'structure_1': , 'structure_2': , 'structure_3': , 'structure_4': })\n","output_type":"stream"},{"execution_count":28,"output_type":"execute_result","data":{"text/plain":"{'eos_dict': }"},"metadata":{}}]},{"cell_type":"markdown","source":"## Using the `builder`","metadata":{}},{"cell_type":"code","source":"builder = EquationOfState.get_builder()","metadata":{},"execution_count":29,"outputs":[]},{"cell_type":"code","source":"builder.structure = relaxed_structure","metadata":{},"execution_count":30,"outputs":[]},{"cell_type":"code","source":"builder","metadata":{},"execution_count":31,"outputs":[{"execution_count":31,"output_type":"execute_result","data":{"text/plain":"Process class: EquationOfState\nInputs:\nmetadata: {}\nstructure: Al\n"},"metadata":{}}]},{"cell_type":"code","source":"builder.scale_factors = orm.List([0.9, 0.95, 1.0, 1.05, 1.1])\nbuilder.code = orm.load_code('pw@localhost')","metadata":{},"execution_count":32,"outputs":[]},{"cell_type":"code","source":"results, node = engine.run_get_node(builder)","metadata":{},"execution_count":33,"outputs":[{"name":"stderr","text":"04/04/2024 05:41:05 PM <83> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [116|EquationOfState|results]: AttributeDict({'labels': ['structure_0', 'structure_1', 'structure_2', 'structure_3', 'structure_4'], 'structure_0': , 'structure_1': , 'structure_2': , 'structure_3': , 'structure_4': })\n","output_type":"stream"}]},{"cell_type":"code","source":"results['eos_dict'].get_dict()","metadata":{},"execution_count":34,"outputs":[{"execution_count":34,"output_type":"execute_result","data":{"text/plain":"{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}"},"metadata":{}}]},{"cell_type":"code","source":"eos = node.outputs.eos_dict.get_dict()","metadata":{},"execution_count":35,"outputs":[]},{"cell_type":"code","source":"eos","metadata":{},"execution_count":36,"outputs":[{"execution_count":36,"output_type":"execute_result","data":{"text/plain":"{'structure_0': [48.283007573324, -1073.9421694118],\n 'structure_1': [56.785519366503, -1074.7251942208],\n 'structure_2': [66.231834805659, -1074.9273047095],\n 'structure_3': [76.671627766898, -1074.7863009779],\n 'structure_4': [88.154572126333, -1074.451028786]}"},"metadata":{}}]},{"cell_type":"code","source":"plt.plot(\n [v[0] for v in eos.values()],\n [v[1] for v in eos.values()],\n)","metadata":{"tags":[]},"execution_count":37,"outputs":[{"execution_count":37,"output_type":"execute_result","data":{"text/plain":"[]"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
    ","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjYAAAGsCAYAAADOo+2NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJoklEQVR4nO3deVxU9f4/8NcsMOyDiuybO4KAO0uW1S3UNBUtM5WsbpZ6u6231NutrG5ZfX+3W91uWtpqVla4Z6Te1EoERUVQUVxQEBhAkGGTbebz+wOhCJBFhjNz5vV8POYPzpzDvD990nl5zvmct0IIIUBEREQkA0qpCyAiIiLqLgw2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2V7366quIjo6Gg4MDXF1dO3SMEALLly+Ht7c37O3tcfPNN+P48eNN758/fx4KhaLV17ffftvi99XU1GD48OFQKBRITU3tVP0rV65EWFgYXFxc4OLigqioKPzwww+d+h1ERESWjsHmqtraWtx9991YtGhRh49588038dZbb+G9997DwYMH4enpidtvvx3l5eUAAD8/P+Tn5zd7vfTSS3B0dMSkSZNa/L5nn30W3t7eXarf19cXr7/+OlJSUpCSkoJbb70V06ZNaxa0iIiIZE9QM5988onQarXt7mc0GoWnp6d4/fXXm7ZVV1cLrVYrVq1a1eZxw4cPFw8++GCL7du3bxdBQUHi+PHjAoA4cuRIs/ePHz8uJk2aJBwdHYW7u7uYN2+eKCoqumaNvXr1EmvWrGl3LERERHLBMzZdlJWVBZ1Oh5iYmKZtGo0G48ePR2JiYqvHHDp0CKmpqfjzn//cbHtBQQEWLFiAtWvXwsHBocVx+fn5GD9+PIYPH46UlBQkJCSgoKAAs2bNavVzDAYDvv76a1RWViIqKuo6RklERGRZ1FIXYKl0Oh0AwMPDo9l2Dw8PXLhwodVjPvroIwwdOhTR0dFN24QQuP/++7Fw4UKMHj0a58+fb3HcypUrMXLkSLz22mtN2z7++GP4+fkhMzMTgwcPBgCkp6cjKioK1dXVcHJywsaNGxEcHHy9QyUiIrIYsj5js3z58jZv3m18paSkXNdnKBSKZj8LIVpsA4ArV67gyy+/bHG25j//+Q/KysqwbNmyNj/j0KFD2L17N5ycnJpeQUFBAICzZ8827TdkyBCkpqYiKSkJixYtwvz583HixInrGR4REZFFkfUZm0cffRSzZ8++5j6BgYFd+t2enp4AGs7ceHl5NW0vLCxscRYHAL777jtUVVXhvvvua7b9p59+QlJSEjQaTbPto0ePxty5c/HZZ5/BaDTizjvvxBtvvNHi9/7+s21tbTFw4MCm4w8ePIh33nkHH3zwQZfGSEREZGlkHWzc3Nzg5uZmkt/dr18/eHp6YufOnRgxYgSAhpVVe/fubTWAfPTRR5g6dSr69u3bbPu7776Lf/7zn00/5+XlYcKECVi/fj0iIiIAACNHjkR8fDwCAwOhVnd8yoQQqKmp6crwiIiILJKsg01nZGdno6SkBNnZ2TAYDE3PkRk4cCCcnJwAAEFBQVixYgViY2OhUCjwxBNP4LXXXsOgQYMwaNAgvPbaa3BwcMCcOXOa/e4zZ87g559/xvbt21t8rr+/f7OfGz9rwIAB8PX1BQD85S9/werVq3HvvffimWeegZubG86cOYOvv/4aq1evhkqlwt///ndMmjQJfn5+KC8vx9dff409e/YgISGhu/9TERERmS0Gm6teeOEFfPbZZ00/N56F2b17N26++WYAwKlTp6DX65v2efbZZ3HlyhUsXrwYly9fRkREBHbs2AFnZ+dmv/vjjz+Gj49PsxVUneHt7Y19+/ZhyZIlmDBhAmpqahAQEICJEydCqWy4TaqgoABxcXHIz8+HVqtFWFgYEhIScPvtt3fpM4mIiCyRQgghpC6CiIiIqDvIelUUERERWRcGGyIiIpIN2d1jYzQakZeXB2dn51afJ0NERETmRwiB8vJyeHt7N90/2hWyCzZ5eXnw8/OTugwiIiLqgpycnKZVwV0hu2DTuCIpJycHLi4uEldDREREHVFWVgY/P78WK4s7S3bBpvHyk4uLC4MNERGRhbne20h48zARERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGg00H6a/UYc0v57DkuzSpSyEiIqI2MNh0UHWdAa9tz8D6lBxcKK6UuhwiIiJqBYNNB3m42OGGgW4AgE1H8iSuhoiIiFrDYNMJsSN8AACbUnMhhJC4GiIi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hx4SEyZMkKjC6/P78bUmLy9P2NjYiPj4+B6urOtsbGxEVFRUs21//etfRWRkpBBCWPw8tje+1ljiPDaKiYkRU6ZMafrZ0ufvj/44vtZY4vx99dVXwtfXV3z11VciLS1NfP7556J3797i008/FUJY/jy2N77WWOI8njlzRtx0000CgFCpVGLMmDFi7ty5YujQod02h7wU1cMcHR0RGhqK06dPN60e0ul0zfYpLCyEh4eHFOVdt9+PrzVeXl4ICAho831z5OXlheDg4Gbbhg4diuzsbACw+Hlsb3xtHWNp8wgAFy5cwK5du/DQQw81bbP0+fu91sbXGkucv2eeeQZLly7F7NmzERoairi4ODz55JNYsWIFAMufx/bG1xpLnMcBAwZg7969qKioQE5ODg4cOIC6ujr069ev2+aQwaaH1dTUICMjA15eXk0TuXPnzqb3a2trsXfvXkRHR0tYZdf9fnytKS4uRk5OTpvvm6MbbrgBp06darYtMzMTAQEBAGDx89je+FpjifMIAJ988gnc3d0xefLkpm2WPn+/19r4WmOJ81dVVQWlsvlXlkqlaloObenz2N74WmOJ89jI0dERXl5euHz5Mn788UdMmzat++awu08zUXNPP/202LNnjzh37pxISkoSU6ZMEc7OzuL8+fNCiIalbVqtVmzYsEGkp6eLe++912KWJwpx7fGVl5eLp59+WiQmJoqsrCyxe/duERUVJXx8fCxmfEIIceDAAaFWq8Wrr74qTp8+LdatWyccHBzEF1980bSPJc9je+OTyzwaDAbh7+8vlixZ0uI9S56/Rm2NTy7zN3/+fOHj49O0HHrDhg3Czc1NPPvss037WPI8tjc+ucxjQkKC+OGHH8S5c+fEjh07RHh4uBg7dqyora0VQnTPHDLYmFjjGnwbGxvh7e0tZsyYIY4fP970vtFoFC+++KLw9PQUGo1G3HTTTSI9PV3CijvnWuOrqqoSMTExom/fvsLGxkb4+/uL+fPni+zsbImr7rytW7eKYcOGCY1GI4KCgsSHH37Y7H1Ln8drjU8u8/jjjz8KAOLUqVMt3rP0+ROi7fHJZf7KysrE448/Lvz9/YWdnZ3o37+/eO6550RNTU3TPpY8j+2NTy7zuH79etG/f39ha2srPD09xV/+8hdRWlra9H53zKFCCCG6/RwTERERkQR4jw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREcnG/wci5SF28bFkygAAAABJRU5ErkJggg=="},"metadata":{}}]}]} \ No newline at end of file diff --git a/jobflow.ipynb b/jobflow.ipynb index 567dd3d..7778775 100644 --- a/jobflow.ipynb +++ b/jobflow.ipynb @@ -1 +1 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.11.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import subprocess\nimport os\nfrom pydantic import BaseModel, Field","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:39.230259Z","start_time":"2024-04-04T12:23:39.139154Z"},"trusted":true},"execution_count":1,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy as np","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:39.812727Z","start_time":"2024-04-04T12:23:39.233298Z"},"trusted":true},"execution_count":2,"outputs":[]},{"cell_type":"code","source":"from ase.build import bulk\nfrom ase.io import write","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.064521Z","start_time":"2024-04-04T12:23:39.815771Z"},"trusted":true},"execution_count":3,"outputs":[]},{"cell_type":"code","source":"from adis_tools.parsers import parse_pw","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.342218Z","start_time":"2024-04-04T12:23:40.067769Z"},"trusted":true},"execution_count":4,"outputs":[]},{"cell_type":"markdown","source":"# Functions","metadata":{}},{"cell_type":"code","source":"def generate_structures(structure, strain_lst): \n structure_lst = []\n for strain in strain_lst:\n structure_strain = structure.copy()\n structure_strain.set_cell(\n structure_strain.cell * strain**(1/3), \n scale_atoms=True\n )\n structure_lst.append(structure_strain)\n return structure_lst","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.349810Z","start_time":"2024-04-04T12:23:40.344659Z"},"trusted":true},"execution_count":5,"outputs":[]},{"cell_type":"code","source":"def plot_energy_volume_curve(volume_lst, energy_lst):\n plt.plot(volume_lst, energy_lst)\n plt.xlabel(\"Volume\")\n plt.ylabel(\"Energy\")\n plt.savefig(\"evcurve.png\")","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.354972Z","start_time":"2024-04-04T12:23:40.351547Z"},"trusted":true},"execution_count":6,"outputs":[]},{"cell_type":"code","source":"def write_input(input_dict, working_directory=\".\"):\n filename = os.path.join(working_directory, 'input.pwi')\n os.makedirs(working_directory, exist_ok=True)\n write(\n filename=filename, \n images=input_dict[\"structure\"], \n Crystal=True, \n kpts=input_dict[\"kpts\"], \n input_data={\n 'calculation': input_dict[\"calculation\"],\n 'occupations': 'smearing',\n 'degauss': input_dict[\"smearing\"],\n }, \n pseudopotentials=input_dict[\"pseudopotentials\"],\n tstress=True, \n tprnfor=True\n )","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.361062Z","start_time":"2024-04-04T12:23:40.356433Z"},"trusted":true},"execution_count":7,"outputs":[]},{"cell_type":"code","source":"def collect_output(working_directory=\".\"):\n output = parse_pw(os.path.join(working_directory, 'pwscf.xml'))\n return {\n \"structure\": output['ase_structure'],\n \"energy\": output[\"energy\"],\n \"volume\": output['ase_structure'].get_volume(),\n }","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.365984Z","start_time":"2024-04-04T12:23:40.362667Z"},"trusted":true},"execution_count":8,"outputs":[]},{"cell_type":"code","source":"from pymatgen.io.core import InputSet, InputGenerator\nfrom pymatgen.io.ase import MSONAtoms\nfrom typing import Any, Optional, Union\nQE_CMD= \"mpirun -np 1 pw.x -in input.pwi > output.pwo\"\ndef run_qe(qe_cmd=QE_CMD):\n subprocess.check_output(qe_cmd, shell=True, universal_newlines=True)\n\nclass QETaskDoc(BaseModel):\n structure: Optional[MSONAtoms] = Field(None, description=\"ASE structure\")\n energy: Optional[float] = Field(None, description=\"DFT energy in eV\")\n volume: Optional[float] = Field(None, description=\"volume in Angstrom^3\")\n \n @classmethod\n def from_directory(cls, working_directory):\n output=collect_output(working_directory=working_directory)\n # structure object needs to be serializable, i.e., we need an additional transformation\n return cls(structure=MSONAtoms(output[\"structure\"]), energy=output[\"energy\"], volume=output[\"volume\"])\n\nclass QEInputSet(InputSet):\n \"\"\"\n Writes an input based on an input_dict\n \"\"\"\n def __init__(self, input_dict):\n self.input_dict = input_dict\n\n def write_input(self, working_directory=\".\"):\n write_input(self.input_dict, working_directory=working_directory)\n\nfrom dataclasses import dataclass, field\n\n\n\n@dataclass\nclass QEInputGenerator(InputGenerator):\n pseudopotentials: dict = field(default_factory=lambda: {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n kpts: tuple = (3,3,3)\n calculation: str = \"vc-relax\"\n smearing: float = 0.02\n \n\n def get_input_set(self, structure) -> QEInputSet:\n\n input_dict={\"structure\":structure,\n \"pseudopotentials\":self.pseudopotentials, \n \"kpts\": self.kpts,\n \"calculation\": self.calculation,\n \"smearing\": self.smearing,\n }\n return QEInputSet(input_dict=input_dict)\n\n@dataclass\nclass QEInputStaticGenerator(QEInputGenerator):\n calculation: str = \"scf\"\n\n \ndef write_qe_input_set(structure, input_set_generator=QEInputGenerator(), working_directory=\".\"):\n qis = input_set_generator.get_input_set(structure=structure)\n qis.write_input(working_directory=working_directory)\n \n ","metadata":{"collapsed":false,"jupyter":{"outputs_hidden":false},"ExecuteTime":{"end_time":"2024-04-04T12:23:40.992461Z","start_time":"2024-04-04T12:23:40.368632Z"},"trusted":true},"execution_count":9,"outputs":[]},{"cell_type":"code","source":"from dataclasses import dataclass, field\nfrom jobflow import job, Maker\n\n\n@dataclass\nclass BaseQEMaker(Maker):\n \"\"\"\n Base QE job maker.\n\n Parameters\n ----------\n name : str\n The job name.\n input_set_generator : .QEInputGenerator\n A generator used to make the input set.\n \"\"\"\n\n name: str = \"base qe job\"\n input_set_generator: QEInputGenerator = field(default_factory=QEInputGenerator)\n\n @job(output_schema=QETaskDoc)\n def make(\n self, structure\n ) -> QETaskDoc:\n \"\"\"\n Run a QE calculation.\n\n Parameters\n ----------\n structure : MSONAtoms|Atoms\n An Atoms or MSONAtoms object.\n \n Returns\n -------\n Output of a QE calculation\n \"\"\"\n # copy previous inputs\n\n # write qe input files\n write_qe_input_set(\n structure=structure, input_set_generator=self.input_set_generator)\n\n # qe\n run_qe()\n\n # parse qe outputs\n task_doc=QETaskDoc.from_directory(\".\")\n \n return task_doc\n\n@dataclass\nclass StaticQEMaker(BaseQEMaker):\n \"\"\"\n Base QE job maker.\n\n Parameters\n ----------\n name : str\n The job name.\n input_set_generator : .QEInputGenerator\n A generator used to make the input set.\n \"\"\"\n\n name: str = \"static qe job\"\n input_set_generator: QEInputGenerator = field(default_factory=QEInputStaticGenerator)\n\n\n\nfrom jobflow import job, Response, Flow, run_locally\n\n@job\ndef get_ev_curve(structure, strain_lst):\n structures=generate_structures(structure,strain_lst=strain_lst)\n jobs = []\n volumes = []\n energies = []\n for istructure in range(len(strain_lst)):\n new_job = StaticQEMaker().make(structures[istructure])\n jobs.append(new_job)\n volumes.append(new_job.output.volume)\n energies.append(new_job.output.energy)\n return Response(replace=Flow(jobs, output={\"energies\": energies, \"volumes\": volumes}))\n \n@job\ndef plot_energy_volume_curve_job(volume_lst, energy_lst):\n plot_energy_volume_curve(volume_lst=volume_lst, energy_lst=energy_lst)\n\nstructure = bulk('Al', a=4.15, cubic=True)\nrelax = BaseQEMaker().make(structure=MSONAtoms(structure))\nev_curve = get_ev_curve(relax.output.structure, strain_lst=np.linspace(0.9, 1.1, 5))\nplot = plot_energy_volume_curve_job(volume_lst=ev_curve.output[\"volumes\"], energy_lst=ev_curve.output[\"energies\"])\njobs = [relax, ev_curve, plot]\nrun_locally(Flow(jobs), create_folders=True)","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:26:08.108635Z","start_time":"2024-04-04T12:24:48.120617Z"},"trusted":true},"execution_count":10,"outputs":[{"name":"stdout","text":"2024-04-04 15:55:32,815 INFO Started executing jobs locally\n2024-04-04 15:55:32,892 INFO Starting job - base qe job (72ab2547-8a66-4dd0-a95a-b6255a668cd8)\n","output_type":"stream"},{"name":"stderr","text":"[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00139] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:56:37,395 INFO Finished job - base qe job (72ab2547-8a66-4dd0-a95a-b6255a668cd8)\n2024-04-04 15:56:37,396 INFO Starting job - get_ev_curve (87ad6b9b-9f34-463e-b705-1ab7cdcf9aee)\n2024-04-04 15:56:37,404 INFO Finished job - get_ev_curve (87ad6b9b-9f34-463e-b705-1ab7cdcf9aee)\n2024-04-04 15:56:37,406 INFO Starting job - static qe job (b0759785-155b-4e79-9b72-c626067d81e1)\n","output_type":"stream"},{"name":"stderr","text":"[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00149] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:56:45,563 INFO Finished job - static qe job (b0759785-155b-4e79-9b72-c626067d81e1)\n2024-04-04 15:56:45,564 INFO Starting job - static qe job (514079e9-d6ae-4369-8b80-bf8ca7860540)\n","output_type":"stream"},{"name":"stderr","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00159] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:56:53,979 INFO Finished job - static qe job (514079e9-d6ae-4369-8b80-bf8ca7860540)\n2024-04-04 15:56:53,980 INFO Starting job - static qe job (6e3c5a28-4edb-4244-9e35-0b8733b946c4)\n","output_type":"stream"},{"name":"stderr","text":"[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00169] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:57:03,600 INFO Finished job - static qe job (6e3c5a28-4edb-4244-9e35-0b8733b946c4)\n2024-04-04 15:57:03,600 INFO Starting job - static qe job (980b72a5-fbea-445c-9075-a880322c8261)\n","output_type":"stream"},{"name":"stderr","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00179] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:57:14,907 INFO Finished job - static qe job (980b72a5-fbea-445c-9075-a880322c8261)\n2024-04-04 15:57:14,908 INFO Starting job - static qe job (a44a935f-6bd2-4279-bbcb-53d5ed890a99)\n","output_type":"stream"},{"name":"stderr","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00189] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:57:27,174 INFO Finished job - static qe job (a44a935f-6bd2-4279-bbcb-53d5ed890a99)\n2024-04-04 15:57:27,174 INFO Starting job - store_inputs (87ad6b9b-9f34-463e-b705-1ab7cdcf9aee, 2)\n2024-04-04 15:57:27,176 INFO Finished job - store_inputs (87ad6b9b-9f34-463e-b705-1ab7cdcf9aee, 2)\n2024-04-04 15:57:27,176 INFO Starting job - plot_energy_volume_curve_job (9987ab9f-1ae9-4172-8e31-b2c9920d4791)\n2024-04-04 15:57:27,256 INFO Finished job - plot_energy_volume_curve_job (9987ab9f-1ae9-4172-8e31-b2c9920d4791)\n2024-04-04 15:57:27,256 INFO Finished executing jobs locally\n","output_type":"stream"},{"execution_count":10,"output_type":"execute_result","data":{"text/plain":"{'72ab2547-8a66-4dd0-a95a-b6255a668cd8': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[4.045218941837687, 4.045218941837687, 4.045218941837687]), energy=-1074.9365272693506, volume=66.1951387021735), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n '87ad6b9b-9f34-463e-b705-1ab7cdcf9aee': {1: Response(output=None, detour=None, addition=None, replace=Flow(name='Flow', uuid='0e46d480-7699-4e03-889b-b4ba65fe3d38')\n 1. Job(name='static qe job', uuid='b0759785-155b-4e79-9b72-c626067d81e1')\n 2. Job(name='static qe job', uuid='514079e9-d6ae-4369-8b80-bf8ca7860540')\n 3. Job(name='static qe job', uuid='6e3c5a28-4edb-4244-9e35-0b8733b946c4')\n 4. Job(name='static qe job', uuid='980b72a5-fbea-445c-9075-a880322c8261')\n 5. Job(name='static qe job', uuid='a44a935f-6bd2-4279-bbcb-53d5ed890a99')\n 6. Job(name='store_inputs', uuid='87ad6b9b-9f34-463e-b705-1ab7cdcf9aee'), stored_data=None, stop_children=False, stop_jobflow=False),\n 2: Response(output={'energies': [OutputReference(b0759785-155b-4e79-9b72-c626067d81e1, .energy), OutputReference(514079e9-d6ae-4369-8b80-bf8ca7860540, .energy), OutputReference(6e3c5a28-4edb-4244-9e35-0b8733b946c4, .energy), OutputReference(980b72a5-fbea-445c-9075-a880322c8261, .energy), OutputReference(a44a935f-6bd2-4279-bbcb-53d5ed890a99, .energy)], 'volumes': [OutputReference(b0759785-155b-4e79-9b72-c626067d81e1, .volume), OutputReference(514079e9-d6ae-4369-8b80-bf8ca7860540, .volume), OutputReference(6e3c5a28-4edb-4244-9e35-0b8733b946c4, .volume), OutputReference(980b72a5-fbea-445c-9075-a880322c8261, .volume), OutputReference(a44a935f-6bd2-4279-bbcb-53d5ed890a99, .volume)]}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n 'b0759785-155b-4e79-9b72-c626067d81e1': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[3.9056159296787105, 3.9056159296787105, 3.9056159296787105]), energy=-1074.8451830762128, volume=59.575624050752516), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n '514079e9-d6ae-4369-8b80-bf8ca7860540': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[3.9766426435887574, 3.9766426435887574, 3.9766426435887574]), energy=-1074.9158947387848, volume=62.88538094246082), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n '6e3c5a28-4edb-4244-9e35-0b8733b946c4': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[4.045218924156295, 4.045218924156295, 4.045218924156295]), energy=-1074.936525208987, volume=66.19513783416937), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n '980b72a5-fbea-445c-9075-a880322c8261': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[4.111545777030954, 4.111545777030954, 4.111545777030954]), energy=-1074.9194989203452, volume=69.50489472587755), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n 'a44a935f-6bd2-4279-bbcb-53d5ed890a99': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[4.175799058074337, 4.175799058074337, 4.175799058074337]), energy=-1074.8741797823543, volume=72.81465161758611), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n '9987ab9f-1ae9-4172-8e31-b2c9920d4791': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)}}"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
    ","image/png":"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SkrKOT+rb++nhnH+41Hf3k8thmEYZoxoiYiIiDgDzVkSERERqYTKkoiIiEglVJZEREREKqGyJCIiIlIJlSURERGRSqgsiYiIiFRCZUlERESkEipLIiIiIpVQWRKRei0iIoLXX3/d7Bgi4sBUlkTEaQ0dOpT+/ftX+LPVq1djsVjYuHGjnVOJSF2jsiQiTuvee+/lxx9/ZN++fef87IMPPqBLly5069bNhGQiUpeoLImI0xoyZAhBQUHMmjWr3ON5eXl8/vnn3HvvvcyfP5+oqCg8PT2JiIhgxowZ532+tLQ0LBYLiYmJZY+dPHkSi8XCihUrAFixYgUWi4WlS5fStWtXvL29ueaaazhy5AjffvstHTp0wN/fn9tuu428vLyy5zEMg5deeolWrVrh7e1NTEwM8+bNq8nDISK1RGVJRJyWm5sbd911F7NmzeL31wSfO3cuhYWFxMbGMnr0aG699Va2bNnC1KlTmTJlyjnlqjqmTp3Km2++yapVqzhw4ACjR4/m9ddf59NPP+Wbb75h2bJl/Pvf/y7b/sknn2TmzJm8/fbbbNu2jQkTJnDnnXfy008/XXIWEaldFuP37zAiIk5mx44ddOjQgR9//JGrr74agCuvvJJmzZphsVg4evQo3333Xdn2jz/+ON988w3btm0DSid4P/zwwzz88MOkpaXRsmVLNm3aRJcuXYDSkaWGDRuyfPlyrrrqKlasWMHVV1/N999/z7XXXgvA9OnTmTRpErt376ZVq1YAPPDAA6SlpREfH09ubi6BgYH8+OOPxMbGlmW57777yMvL49NPP7XHoRKRatLIkog4tcjISPr06cMHH3wAwO7du/nll1+45557SE5Opm/fvuW279u3Lzt37qSkpOSSfm90dHTZ/w8ODsbHx6esKJ197MiRIwBs376d/Px8rrvuOvz8/MpuH374Ibt3776kHCJS+9zMDiAicqnuvfdexo8fz//93/8xc+ZMwsPDufbaazEMA4vFUm7bygbTXVxcztmmqKiowm3d3d3L/r/FYil3/+xjNpsNoOx/v/nmG5o1a1ZuO09Pzwu9PBExmUaWRMTpjR49GldXVz799FNmz57N2LFjsVgsdOzYkV9//bXctqtWraJdu3a4urqe8zxNmjQBID09veyx30/2rq6OHTvi6enJ/v37adOmTblb8+bNL/n5RaR2aWRJRJyen58ft9xyC5MnTyY7O5sxY8YA8Oijj3LZZZfx7LPPcsstt7B69WrefPNN3nrrrQqfx9vbm969ezN9+nQiIiI4duwYTz755CXna9CgAY899hgTJkzAZrPRr18/cnJyWLVqFX5+ftx9992X/DtEpPZoZElE6oR7772XrKws+vfvT4sWLQDo1q0bX3zxBXPmzKFTp0489dRT/POf/ywrUxX54IMPKCoqokePHvztb3/jueeeq5F8zz77LE899RTTpk2jQ4cODBw4kMWLF9OyZcsaeX4RqT36NpyIiIhIJTSyJCIiIlIJlSURERGRSqgsiYiIiFRCZUlERESkEipLIiIiIpVQWRIRERGphMqSiIiISCVUlkREREQqobIkIiIiUgmVJREREZFKqCyJiIiIVEJlSURERKQS/w+KFmKjiKyciAAAAABJRU5ErkJggg=="},"metadata":{}}]},{"cell_type":"code","source":"","metadata":{"collapsed":false,"ExecuteTime":{"end_time":"2024-04-04T12:23:49.409448Z","start_time":"2024-04-04T12:23:49.404281Z"},"jupyter":{"outputs_hidden":false}},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"collapsed":false,"ExecuteTime":{"end_time":"2024-04-04T12:23:49.414721Z","start_time":"2024-04-04T12:23:49.411543Z"},"jupyter":{"outputs_hidden":false}},"execution_count":null,"outputs":[]}]} +{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.11.0","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# jobflow","metadata":{}},{"cell_type":"code","source":"import subprocess\nimport os\nfrom pydantic import BaseModel, Field","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:39.230259Z","start_time":"2024-04-04T12:23:39.139154Z"}},"execution_count":1,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy as np","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:39.812727Z","start_time":"2024-04-04T12:23:39.233298Z"}},"execution_count":2,"outputs":[]},{"cell_type":"code","source":"from ase.build import bulk\nfrom ase.io import write","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.064521Z","start_time":"2024-04-04T12:23:39.815771Z"}},"execution_count":3,"outputs":[]},{"cell_type":"code","source":"from adis_tools.parsers import parse_pw","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.342218Z","start_time":"2024-04-04T12:23:40.067769Z"}},"execution_count":4,"outputs":[]},{"cell_type":"code","source":"def generate_structures(structure, strain_lst): \n structure_lst = []\n for strain in strain_lst:\n structure_strain = structure.copy()\n structure_strain.set_cell(\n structure_strain.cell * strain**(1/3), \n scale_atoms=True\n )\n structure_lst.append(structure_strain)\n return structure_lst","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.349810Z","start_time":"2024-04-04T12:23:40.344659Z"}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":"def plot_energy_volume_curve(volume_lst, energy_lst):\n plt.plot(volume_lst, energy_lst)\n plt.xlabel(\"Volume\")\n plt.ylabel(\"Energy\")\n plt.savefig(\"evcurve.png\")","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.354972Z","start_time":"2024-04-04T12:23:40.351547Z"}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":"def write_input(input_dict, working_directory=\".\"):\n filename = os.path.join(working_directory, 'input.pwi')\n os.makedirs(working_directory, exist_ok=True)\n write(\n filename=filename, \n images=input_dict[\"structure\"], \n Crystal=True, \n kpts=input_dict[\"kpts\"], \n input_data={\n 'calculation': input_dict[\"calculation\"],\n 'occupations': 'smearing',\n 'degauss': input_dict[\"smearing\"],\n }, \n pseudopotentials=input_dict[\"pseudopotentials\"],\n tstress=True, \n tprnfor=True\n )","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.361062Z","start_time":"2024-04-04T12:23:40.356433Z"}},"execution_count":7,"outputs":[]},{"cell_type":"code","source":"def collect_output(working_directory=\".\"):\n output = parse_pw(os.path.join(working_directory, 'pwscf.xml'))\n return {\n \"structure\": output['ase_structure'],\n \"energy\": output[\"energy\"],\n \"volume\": output['ase_structure'].get_volume(),\n }","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:23:40.365984Z","start_time":"2024-04-04T12:23:40.362667Z"}},"execution_count":8,"outputs":[]},{"cell_type":"code","source":"from pymatgen.io.core import InputSet, InputGenerator\nfrom pymatgen.io.ase import MSONAtoms\nfrom typing import Any, Optional, Union\nQE_CMD= \"mpirun -np 1 pw.x -in input.pwi > output.pwo\"\ndef run_qe(qe_cmd=QE_CMD):\n subprocess.check_output(qe_cmd, shell=True, universal_newlines=True)\n\nclass QETaskDoc(BaseModel):\n structure: Optional[MSONAtoms] = Field(None, description=\"ASE structure\")\n energy: Optional[float] = Field(None, description=\"DFT energy in eV\")\n volume: Optional[float] = Field(None, description=\"volume in Angstrom^3\")\n \n @classmethod\n def from_directory(cls, working_directory):\n output=collect_output(working_directory=working_directory)\n # structure object needs to be serializable, i.e., we need an additional transformation\n return cls(structure=MSONAtoms(output[\"structure\"]), energy=output[\"energy\"], volume=output[\"volume\"])\n\nclass QEInputSet(InputSet):\n \"\"\"\n Writes an input based on an input_dict\n \"\"\"\n def __init__(self, input_dict):\n self.input_dict = input_dict\n\n def write_input(self, working_directory=\".\"):\n write_input(self.input_dict, working_directory=working_directory)\n\nfrom dataclasses import dataclass, field\n\n\n\n@dataclass\nclass QEInputGenerator(InputGenerator):\n pseudopotentials: dict = field(default_factory=lambda: {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"})\n kpts: tuple = (3,3,3)\n calculation: str = \"vc-relax\"\n smearing: float = 0.02\n \n\n def get_input_set(self, structure) -> QEInputSet:\n\n input_dict={\"structure\":structure,\n \"pseudopotentials\":self.pseudopotentials, \n \"kpts\": self.kpts,\n \"calculation\": self.calculation,\n \"smearing\": self.smearing,\n }\n return QEInputSet(input_dict=input_dict)\n\n@dataclass\nclass QEInputStaticGenerator(QEInputGenerator):\n calculation: str = \"scf\"\n\n \ndef write_qe_input_set(structure, input_set_generator=QEInputGenerator(), working_directory=\".\"):\n qis = input_set_generator.get_input_set(structure=structure)\n qis.write_input(working_directory=working_directory)\n \n ","metadata":{"collapsed":false,"jupyter":{"outputs_hidden":false},"ExecuteTime":{"end_time":"2024-04-04T12:23:40.992461Z","start_time":"2024-04-04T12:23:40.368632Z"}},"execution_count":9,"outputs":[]},{"cell_type":"code","source":"from dataclasses import dataclass, field\nfrom jobflow import job, Maker\n\n\n@dataclass\nclass BaseQEMaker(Maker):\n \"\"\"\n Base QE job maker.\n\n Parameters\n ----------\n name : str\n The job name.\n input_set_generator : .QEInputGenerator\n A generator used to make the input set.\n \"\"\"\n\n name: str = \"base qe job\"\n input_set_generator: QEInputGenerator = field(default_factory=QEInputGenerator)\n\n @job(output_schema=QETaskDoc)\n def make(\n self, structure\n ) -> QETaskDoc:\n \"\"\"\n Run a QE calculation.\n\n Parameters\n ----------\n structure : MSONAtoms|Atoms\n An Atoms or MSONAtoms object.\n \n Returns\n -------\n Output of a QE calculation\n \"\"\"\n # copy previous inputs\n\n # write qe input files\n write_qe_input_set(\n structure=structure, input_set_generator=self.input_set_generator)\n\n # qe\n run_qe()\n\n # parse qe outputs\n task_doc=QETaskDoc.from_directory(\".\")\n \n return task_doc\n\n@dataclass\nclass StaticQEMaker(BaseQEMaker):\n \"\"\"\n Base QE job maker.\n\n Parameters\n ----------\n name : str\n The job name.\n input_set_generator : .QEInputGenerator\n A generator used to make the input set.\n \"\"\"\n\n name: str = \"static qe job\"\n input_set_generator: QEInputGenerator = field(default_factory=QEInputStaticGenerator)\n\n\n\nfrom jobflow import job, Response, Flow, run_locally\n\n@job\ndef get_ev_curve(structure, strain_lst):\n structures=generate_structures(structure,strain_lst=strain_lst)\n jobs = []\n volumes = []\n energies = []\n for istructure in range(len(strain_lst)):\n new_job = StaticQEMaker().make(structures[istructure])\n jobs.append(new_job)\n volumes.append(new_job.output.volume)\n energies.append(new_job.output.energy)\n return Response(replace=Flow(jobs, output={\"energies\": energies, \"volumes\": volumes}))\n \n@job\ndef plot_energy_volume_curve_job(volume_lst, energy_lst):\n plot_energy_volume_curve(volume_lst=volume_lst, energy_lst=energy_lst)\n\nstructure = bulk('Al', a=4.15, cubic=True)\nrelax = BaseQEMaker().make(structure=MSONAtoms(structure))\nev_curve = get_ev_curve(relax.output.structure, strain_lst=np.linspace(0.9, 1.1, 5))\nplot = plot_energy_volume_curve_job(volume_lst=ev_curve.output[\"volumes\"], energy_lst=ev_curve.output[\"energies\"])\njobs = [relax, ev_curve, plot]\nrun_locally(Flow(jobs), create_folders=True)","metadata":{"ExecuteTime":{"end_time":"2024-04-04T12:26:08.108635Z","start_time":"2024-04-04T12:24:48.120617Z"}},"execution_count":10,"outputs":[{"name":"stdout","text":"2024-04-04 15:55:32,815 INFO Started executing jobs locally\n2024-04-04 15:55:32,892 INFO Starting job - base qe job (72ab2547-8a66-4dd0-a95a-b6255a668cd8)\n","output_type":"stream"},{"name":"stderr","text":"[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00139] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:56:37,395 INFO Finished job - base qe job (72ab2547-8a66-4dd0-a95a-b6255a668cd8)\n2024-04-04 15:56:37,396 INFO Starting job - get_ev_curve (87ad6b9b-9f34-463e-b705-1ab7cdcf9aee)\n2024-04-04 15:56:37,404 INFO Finished job - get_ev_curve (87ad6b9b-9f34-463e-b705-1ab7cdcf9aee)\n2024-04-04 15:56:37,406 INFO Starting job - static qe job (b0759785-155b-4e79-9b72-c626067d81e1)\n","output_type":"stream"},{"name":"stderr","text":"[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00149] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:56:45,563 INFO Finished job - static qe job (b0759785-155b-4e79-9b72-c626067d81e1)\n2024-04-04 15:56:45,564 INFO Starting job - static qe job (514079e9-d6ae-4369-8b80-bf8ca7860540)\n","output_type":"stream"},{"name":"stderr","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00159] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:56:53,979 INFO Finished job - static qe job (514079e9-d6ae-4369-8b80-bf8ca7860540)\n2024-04-04 15:56:53,980 INFO Starting job - static qe job (6e3c5a28-4edb-4244-9e35-0b8733b946c4)\n","output_type":"stream"},{"name":"stderr","text":"[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00169] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:57:03,600 INFO Finished job - static qe job (6e3c5a28-4edb-4244-9e35-0b8733b946c4)\n2024-04-04 15:57:03,600 INFO Starting job - static qe job (980b72a5-fbea-445c-9075-a880322c8261)\n","output_type":"stream"},{"name":"stderr","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00179] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:57:14,907 INFO Finished job - static qe job (980b72a5-fbea-445c-9075-a880322c8261)\n2024-04-04 15:57:14,908 INFO Starting job - static qe job (a44a935f-6bd2-4279-bbcb-53d5ed890a99)\n","output_type":"stream"},{"name":"stderr","text":"Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n[jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2d4ksucf2d:00189] mca_base_component_repository_open: unable to open mca_btl_openib: librdmacm.so.1: cannot open shared object file: No such file or directory (ignored)\nNote: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG\n","output_type":"stream"},{"name":"stdout","text":"2024-04-04 15:57:27,174 INFO Finished job - static qe job (a44a935f-6bd2-4279-bbcb-53d5ed890a99)\n2024-04-04 15:57:27,174 INFO Starting job - store_inputs (87ad6b9b-9f34-463e-b705-1ab7cdcf9aee, 2)\n2024-04-04 15:57:27,176 INFO Finished job - store_inputs (87ad6b9b-9f34-463e-b705-1ab7cdcf9aee, 2)\n2024-04-04 15:57:27,176 INFO Starting job - plot_energy_volume_curve_job (9987ab9f-1ae9-4172-8e31-b2c9920d4791)\n2024-04-04 15:57:27,256 INFO Finished job - plot_energy_volume_curve_job (9987ab9f-1ae9-4172-8e31-b2c9920d4791)\n2024-04-04 15:57:27,256 INFO Finished executing jobs locally\n","output_type":"stream"},{"execution_count":10,"output_type":"execute_result","data":{"text/plain":"{'72ab2547-8a66-4dd0-a95a-b6255a668cd8': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[4.045218941837687, 4.045218941837687, 4.045218941837687]), energy=-1074.9365272693506, volume=66.1951387021735), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n '87ad6b9b-9f34-463e-b705-1ab7cdcf9aee': {1: Response(output=None, detour=None, addition=None, replace=Flow(name='Flow', uuid='0e46d480-7699-4e03-889b-b4ba65fe3d38')\n 1. Job(name='static qe job', uuid='b0759785-155b-4e79-9b72-c626067d81e1')\n 2. Job(name='static qe job', uuid='514079e9-d6ae-4369-8b80-bf8ca7860540')\n 3. Job(name='static qe job', uuid='6e3c5a28-4edb-4244-9e35-0b8733b946c4')\n 4. Job(name='static qe job', uuid='980b72a5-fbea-445c-9075-a880322c8261')\n 5. Job(name='static qe job', uuid='a44a935f-6bd2-4279-bbcb-53d5ed890a99')\n 6. Job(name='store_inputs', uuid='87ad6b9b-9f34-463e-b705-1ab7cdcf9aee'), stored_data=None, stop_children=False, stop_jobflow=False),\n 2: Response(output={'energies': [OutputReference(b0759785-155b-4e79-9b72-c626067d81e1, .energy), OutputReference(514079e9-d6ae-4369-8b80-bf8ca7860540, .energy), OutputReference(6e3c5a28-4edb-4244-9e35-0b8733b946c4, .energy), OutputReference(980b72a5-fbea-445c-9075-a880322c8261, .energy), OutputReference(a44a935f-6bd2-4279-bbcb-53d5ed890a99, .energy)], 'volumes': [OutputReference(b0759785-155b-4e79-9b72-c626067d81e1, .volume), OutputReference(514079e9-d6ae-4369-8b80-bf8ca7860540, .volume), OutputReference(6e3c5a28-4edb-4244-9e35-0b8733b946c4, .volume), OutputReference(980b72a5-fbea-445c-9075-a880322c8261, .volume), OutputReference(a44a935f-6bd2-4279-bbcb-53d5ed890a99, .volume)]}, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n 'b0759785-155b-4e79-9b72-c626067d81e1': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[3.9056159296787105, 3.9056159296787105, 3.9056159296787105]), energy=-1074.8451830762128, volume=59.575624050752516), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n '514079e9-d6ae-4369-8b80-bf8ca7860540': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[3.9766426435887574, 3.9766426435887574, 3.9766426435887574]), energy=-1074.9158947387848, volume=62.88538094246082), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n '6e3c5a28-4edb-4244-9e35-0b8733b946c4': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[4.045218924156295, 4.045218924156295, 4.045218924156295]), energy=-1074.936525208987, volume=66.19513783416937), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n '980b72a5-fbea-445c-9075-a880322c8261': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[4.111545777030954, 4.111545777030954, 4.111545777030954]), energy=-1074.9194989203452, volume=69.50489472587755), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n 'a44a935f-6bd2-4279-bbcb-53d5ed890a99': {1: Response(output=QETaskDoc(structure=MSONAtoms(symbols='Al4', pbc=True, cell=[4.175799058074337, 4.175799058074337, 4.175799058074337]), energy=-1074.8741797823543, volume=72.81465161758611), detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)},\n '9987ab9f-1ae9-4172-8e31-b2c9920d4791': {1: Response(output=None, detour=None, addition=None, replace=None, stored_data=None, stop_children=False, stop_jobflow=False)}}"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
    ","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABYnElEQVR4nO3deVzUdeLH8ddwXzKoCIgoeKMoeKWidptHqWmpnZRWbu2utVlZq5tl26EdVtv269i21E7Lq7QMs9IOFW/wQvDCE/BCUJBzvr8/SDYSERHmOwPv5+Mxj90Zvt/hPd9o5t3n+5nP12IYhoGIiIiIVMjF7AAiIiIijkxlSURERKQSKksiIiIilVBZEhEREamEypKIiIhIJVSWRERERCqhsiQiIiJSCZUlERERkUqoLImIiIhUQmVJREREpBIqSyZ5/vnn6dOnDz4+PgQEBFRpH8MwmDp1KqGhoXh7e3PVVVexbdu2sp+npaVhsVgqvM2dO/ec5ysoKKBLly5YLBYSExMvKv/bb79NdHQ0/v7++Pv7Exsby7fffntRzyEiIuIMVJZMUlhYyKhRo/jzn/9c5X1eeuklXn31Vd58803WrVtHSEgI1113HadOnQKgefPmpKenl7s988wz+Pr6Mnjw4HOe7/HHHyc0NLRa+cPCwpg+fTrr169n/fr1XHPNNdx4443lypuIiEidYIipZs6caVit1gtuZ7PZjJCQEGP69Ollj+Xn5xtWq9V45513zrtfly5djHvuueecx5csWWJERkYa27ZtMwBj06ZN5X6+bds2Y/DgwYavr68RFBRk3HnnncbRo0crzdiwYUPjv//97wVfi4iIiDPRyJKT2Lt3LxkZGQwYMKDsMU9PT6688kpWrVpV4T4bNmwgMTGRe++9t9zjmZmZjBs3jo8++ggfH59z9ktPT+fKK6+kS5curF+/nvj4eDIzMxk9enSFv6ekpIQ5c+aQm5tLbGzsJbxKERERx+NmdgCpmoyMDACCg4PLPR4cHMy+ffsq3Of999+nQ4cO9OnTp+wxwzAYM2YMDzzwAD169CAtLe2c/d5++226devGCy+8UPbYBx98QPPmzUlNTaVdu3YAbNmyhdjYWPLz8/Hz82PhwoV07NjxUl+qiIiIQ9HIUg2aOnXqeSdYn72tX7/+kn6HxWIpd98wjHMeAzhz5gyffvrpOaNK//73v8nJyWHSpEnn/R0bNmxg+fLl+Pn5ld0iIyMB2L17d9l27du3JzExkYSEBP785z9z9913s3379kt5eSIiIg5HI0s1aPz48dx6662VbhMREVGt5w4JCQFKR5iaNm1a9viRI0fOGW0CmDdvHnl5edx1113lHv/xxx9JSEjA09Oz3OM9evTgjjvuYPbs2dhsNoYOHcqLL754zvP+/nd7eHjQpk2bsv3XrVvHv/71L959991qvUYRERFHpLJUgwIDAwkMDKyV527ZsiUhISEsW7aMrl27AqXfqPvpp58qLDXvv/8+w4YNo0mTJuUef+ONN3juuefK7h8+fJiBAwfy+eef06tXLwC6devG/PnziYiIwM2t6n8ihmFQUFBQnZcnIiLisFSWTLJ//35OnDjB/v37KSkpKVvnqE2bNvj5+QEQGRnJtGnTGDFiBBaLhYcffpgXXniBtm3b0rZtW1544QV8fHy4/fbbyz33rl27+Pnnn1myZMk5v7dFixbl7p/9Xa1btyYsLAyAv/71r7z33nvcdtttTJw4kcDAQHbt2sWcOXN47733cHV1ZfLkyQwePJjmzZtz6tQp5syZw4oVK4iPj6/pQyUiImIqlSWTPPXUU8yePbvs/tnRouXLl3PVVVcBkJKSQnZ2dtk2jz/+OGfOnOEvf/kLWVlZ9OrVi++++44GDRqUe+4PPviAZs2alfvm3MUIDQ1l5cqVPPHEEwwcOJCCggLCw8MZNGgQLi6l09wyMzOJi4sjPT0dq9VKdHQ08fHxXHfdddX6nSIiIo7KYhiGYXYIEREREUelb8OJiIiIVEJlSURERKQSmrNUA2w2G4cPH6ZBgwYVrnkkIiIijscwDE6dOkVoaGjZnNyKqCzVgMOHD9O8eXOzY4iIiEg1HDhwoOwb4RVRWaoBZ7+NduDAAfz9/U1OIyIiIlWRk5ND8+bNz/lW+R+pLNWAs6fe/P39VZZERESczIWm0GiCt4iIiEglVJZEREREKqGyJCIiIlIJlSURERGRSqgsiYiIiFRCZUlERESkEipLIiIiIpVQWRIRERGphMqSiIiISCVUlkREREQqobIkIiIiUgmVJREREZFKqCw5MMMwWLPnOGcKS8yOIiIiUm+pLDmwP3+8kVv+k8DCTYfMjiIiIlJvqSw5sB4RDQGYtWovhmGYnEZERKR+UllyYKMva46vhyupmadZueu42XFERETqJZUlB+bv5c7I7mEAzFy51+Q0IiIi9ZPKkoO7u08EAD+mHCHtWK65YUREROohlSUH16qJH1e3b4JhwKxVaWbHERERqXdUlpzA2L4tAZi34SCn8otMTiMiIlK/qCw5gcvbBtImyI/TBcXMXX/Q7DgiIiL1isqSE7BYLIz5be7S7NVplNi0jICIiIi9qCw5iZu6NcPfy419x/NYvuOI2XFERETqDZUlJ+Hj4cZtPVsAMHOVlhEQERGxF5UlJxIXG46LBVbuOk5Kximz44iIiNQLKktOJKyhDwOjQoDSS6CIiIhI7VNZcjJnlxFYsPEQWbmFJqcRERGp+1SWnMxlEQ2JCvWnoNjGZ+v2mx1HRESkzlNZcjIWi6VsdOmj1fsoKrGZnEhERKRuU1lyQkNjmhLo50F6dj7fbcs0O46IiEidprLkhDzdXLn97DICKzXRW0REpDapLDmpO3uH4+5qYf2+LLYczDY7joiISJ2lsuSkgvy9uKFzU0CjSyIiIrVJZcmJnZ3ovXjzYY6cyjc5jYiISN2ksuTEYpoH0K1FAEUlBp8kaBkBERGR2qCy5OTOji59smYfBcUlJqcRERGpe1SWnNygTiGE+Htx7HQhXyelmx1HRESkzlFZcnLuri7ExYYDMHPVXgzDMDmRiIhI3aKyVAfc3rMFnm4ubD2Uw/p9WWbHERERqVNUluqAhr4ejOjaDNAyAiIiIjVNZamOGNM3AoCl2zI5dPKMuWFERETqEJWlOiIyxJ8+rRtTYjP4cHWa2XFERETqDJWlOuTsMgJz1h4gr7DY5DQiIiJ1g8pSHXJNZBAtGvmQfaaIhZsOmR1HRESkTlBZqkNcXSzc3ScCgFkr07SMgIiISA1QWapjRvUIw9fDlZ1HTvPrrmNmxxEREXF6Kkt1jL+XO6N6NAdg5so0c8OIiIjUASpLddDZU3E/7jjC3mO55oYRERFxcipLdVDLQF+ubt8EgNmr0swNIyIi4uRUluqos8sIzNtwkFP5RSanERERcV4qS3XU5W0DaRPkx+mCYuauP2h2HBEREaelslRHWSwWxvw2d2n26jRKbFpGQEREpDpUluqwm7o1w9/LjX3H81i+44jZcURERJySylId5uPhxm09WwAwc9Vek9OIiIg4J5WlOi4uNhwXC6zcdZyUjFNmxxEREXE6Kkt1XFhDHwZGhQAwS6NLIiIiF01lqR44u4zAgo2HyMotNDmNiIiIc1FZqgcui2hIVKg/BcU2Plu33+w4IiIiTkVlqR6wWCxlo0sfrd5HUYnN5EQiIiLOQ2Wpnhga05RAPw/Ss/NZui3D7DgiIiJOQ2WpnvB0c+X2XuEAzFyZZm4YERERJ6KyVI/c2bsF7q4WNuzLYvPBk2bHERERcQoqS/VIUAMvhkSHAhpdEhERqSqVpXpmbN8IAL7efJgjOfnmhhEREXECTlOWsrKyiIuLw2q1YrVaiYuL4+TJk5Xuc/r0acaPH09YWBje3t506NCBt99++5ztVq9ezTXXXIOvry8BAQFcddVVnDlzppZeibmiwwLoHt6QohKDj9doGQEREZELcZqydPvtt5OYmEh8fDzx8fEkJiYSFxdX6T4TJkwgPj6ejz/+mOTkZCZMmMCDDz7IV199VbbN6tWrGTRoEAMGDGDt2rWsW7eO8ePH4+LiNIfmop0dXfp0zT4KikvMDSMiIuLgLIZhGGaHuJDk5GQ6duxIQkICvXr1AiAhIYHY2Fh27NhB+/btK9yvU6dO3HLLLUyZMqXsse7du3P99dfz7LPPAtC7d2+uu+66svvVkZOTg9VqJTs7G39//2o/j70Uldi4/MXlZOTk88qoGEZ2DzM7koiIiN1V9fPbKYZPVq9ejdVqLStKUFpyrFYrq1atOu9+/fr1Y9GiRRw6dAjDMFi+fDmpqakMHDgQgCNHjrBmzRqCgoLo06cPwcHBXHnllfz666+V5ikoKCAnJ6fczZm4u7oQF3t2GYG9OEFfFhERMY1TlKWMjAyCgoLOeTwoKIiMjPMvsPjGG2/QsWNHwsLC8PDwYNCgQbz11lv069cPgD179gAwdepUxo0bR3x8PN26dePaa69l586d533eadOmlc2dslqtNG/e/BJfof3d3rMFnm4ubDucw/p9WWbHERERcVimlqWpU6disVgqva1fvx4ovWTHHxmGUeHjZ73xxhskJCSwaNEiNmzYwIwZM/jLX/7C999/D4DNVnrZj/vvv5+xY8fStWtXXnvtNdq3b88HH3xw3uedNGkS2dnZZbcDBw5cymEwRUNfD0Z0bQaUji6JiIhIxdzM/OXjx4/n1ltvrXSbiIgINm/eTGZm5jk/O3r0KMHBwRXud+bMGSZPnszChQu54YYbAIiOjiYxMZFXXnmF/v3707RpUwA6duxYbt8OHTqwf//5vynm6emJp6dnpbmdwZi+EcxZd4Cl2zI5dPIMzQK8zY4kIiLicEwtS4GBgQQGBl5wu9jYWLKzs1m7di09e/YEYM2aNWRnZ9OnT58K9ykqKqKoqOicb7W5urqWjShFREQQGhpKSkpKuW1SU1MZPHhwdV6SU4kM8adP68as2n2cD1enMWlwB7MjiYiIOBynmLPUoUMHBg0axLhx40hISCAhIYFx48YxZMiQct+Ei4yMZOHChQD4+/tz5ZVXMnHiRFasWMHevXuZNWsWH374ISNGjABKT+1NnDiRN954g3nz5rFr1y6mTJnCjh07uPfee015rfY2tm9LAOasPUBeYbHJaURERByPqSNLF+OTTz7hoYceYsCAAQAMGzaMN998s9w2KSkpZGdnl92fM2cOkyZN4o477uDEiROEh4fz/PPP88ADD5Rt8/DDD5Ofn8+ECRM4ceIEMTExLFu2jNatW9vnhZnsmsggWjTyYf+JPBZuOsQdv11sV0REREo5xTpLjs7Z1ln6o/d/3cuzX2+nbZAf3024otJJ8yIiInVFnVpnSWrXqB5h+Hq4svPIaX7ddczsOCIiIg5FZUnw93JnVI/StaJmrkwzN4yIiIiDUVkSAO7uE4HFAj/uOMLeY7lmxxEREXEYKksCQMtAX65uX7pK+uxVaeaGERERcSAqS1JmbN8IAOauP0BOfpG5YURERByEypKU6dcmkLZBfuQWljB3/UGz44iIiDgElSUpY7FYGPPb6NLsVWmU2LSqhIiIiMqSlDOiazOs3u7sP5HHjzuOmB1HRETEdCpLUo6Phxu3XnZ2GYG9JqcRERExn8qSnCMuNhwXC6zafZwdGTlmxxERETGVypKcI6yhDwOjQgCYpUUqRUSknlNZkgqN7dsSgIWbDpGVW2hyGhEREfOoLEmFLotoSFSoPwXFNj5bt9/sOCIiIqZRWZIKWSyWstGlj1bvo6jEZnIiERERc6gsyXkNjWlKoJ8H6dn5LN2WYXYcERERU6gsyXl5urlye69wAGZqoreIiNRTKktSqTt7t8Dd1cKGfVlsPnjS7DgiIiJ2p7IklQpq4MWQ6FBAo0siIlI/qSzJBY397XpxX28+zJGcfHPDiIiI2JnKklxQdFgA3cMbUlRi8PEaLSMgIiL1i8qSVMnZ0aVP1+yjoLjE3DAiIiJ2pLIkVTIwKoSmVi+OnS5kcVK62XFERETsRmVJqsTd1YW42LPLCOzFMAyTE4mIiNiHypJU2W2XtcDL3YVth3NYl5ZldhwRERG7UFmSKmvo68GIrs2A0tElERGR+kBlSS7KmD6l14tbui2Dg1l5JqcRERGpfSpLclHahzSgT+vG2IzSC+yKiIjUdSpLctHG9i0dXfps7X7yCotNTiMiIlK7VJbkol0TGUSLRj7k5BezYOMhs+OIiIjUKpUluWiuLhbu7hMBwKxVaVpGQERE6jSVJamWUT3C8PVwZdeR0/y665jZcURERGqNypJUi7+XO6N6NAdg5so0c8OIiIjUIpUlqba7+0RgscCPO46w91iu2XFERERqhcqSVFvLQF+ubh8EwOxVaeaGERERqSUqS3JJxvaNAGDu+gPk5BeZG0ZERKQWqCzJJenXJpC2QX7kFpYwd/1Bs+OIiIjUOJUluSQWi4Uxv40uzV6VRolNywiIiEjdorIkl+ymrmFYvd3ZfyKPH3ccMTuOiIhIjVJZkkvm7eHKrT3PLiOw1+Q0IiIiNUtlSWrEXbERuLpYWLX7ODsycsyOIyIiUmNUlqRGNAvwZmBUMACztEiliIjUISpLUmPG9m0JwMJNhziRW2hyGhERkZqhsiQ1pkd4Qzo186eg2MZna/ebHUdERKRGqCxJjbFYLIztUzq69NHqfRSV2ExOJCIiculUlqRGDYlpSqCfBxk5+cRvzTA7joiIOLmth7KZumgbeYXFpmVQWZIa5enmyu29wgEtIyAiIpemoLiEx+YmMWtVGi9+u8O0HCpLUuPu7N0Cd1cLG/efJOnASbPjiIiIk3rjh53syDhFY18PHrq2rWk5VJakxgU18GJIdCig0SUREameTfuzeHvFbgCeH9GJxn6epmVRWZJaMfa368V9syWdIzn55oYRERGnkl9UwqNzk7AZcGOXUAZ1ampqHpUlqRXRYQF0D29IUYnBxwn7zI4jIiJO5JWlKew5mktQA0+eGRZldhyVJak9Z0eXPlmzn4LiEnPDiIiIU1i79wTv/zaFY/rNnQnw8TA5kcqS1KKBUSE0tXpxPLeQxUnpZscREREHl1dYzMR5SRgGjO4RxjWRwWZHAlSWpBa5u7oQF/u/ZQQMwzA5kYiIOLLp3+5g3/E8Qq1ePDmko9lxyqgsSa267bIWeLm7sO1wDuvSssyOIyIiDmrlrmN8uLp0jutLI2Pw93I3OdH/qCxJrWro68GIrs0ALSMgIiIVO5VfxOPzNgOla/X1axtocqLyVJak1o357XpxS7dlcDArz+Q0IiLiaJ7/JplDJ8/QopEPkwZ3MDvOOVSWpNa1D2lA3zaNsRmlF9gVERE5a/mOI8xZdwCLBV4eGY2vp5vZkc6hsiR2Mfa30aXP1u439WKIIiLiOLLzivj7gtLTb2P7tKRXq8YmJ6qYypLYxTWRQYQ39iEnv5gFGw+ZHUdERBzA1MXbyMwpoFWgL48Pam92nPNSWRK7cHGxcHdsBACzVqVpGQERkXpu6bYMFm46hIsFXhkdg5e7q9mRzktlSexmVI8wfD1c2XXkNL/sPGZ2HBERMcmJ3EL+sXALAPdf2ZpuLRqanKhyKktiNw283BnVozmgZQREROqzKV9u5djpQtoHN+Dh/m3NjnNBKktiV3f3icBigeUpR9lz9LTZcURExM4WJx3mmy3puLlYmDE6Bk83xz39dpbTlKWsrCzi4uKwWq1YrVbi4uI4efJkpfucPn2a8ePHExYWhre3Nx06dODtt98ut01GRgZxcXGEhITg6+tLt27dmDdvXi2+kvqtZaAvV7cPAmD2qjRzw4iIiF0dOZXPlK+2AvDXq9vQqZnV5ERV4zRl6fbbbycxMZH4+Hji4+NJTEwkLi6u0n0mTJhAfHw8H3/8McnJyUyYMIEHH3yQr776qmybuLg4UlJSWLRoEVu2bOGmm27illtuYdOmTbX9kuqtsX0jAJi34SA5+UXmhhEREbswDIPJC7ZyMq+IqFB/xl/TxuxIVeYUZSk5OZn4+Hj++9//EhsbS2xsLO+99x5ff/01KSkp591v9erV3H333Vx11VVERETwpz/9iZiYGNavX19umwcffJCePXvSqlUrnnzySQICAti4caM9Xlq91K9NIG2D/MgtLOGLdQfMjiMiInYwf+Mhvk/OxN219PSbu6tTVBDAScrS6tWrsVqt9OrVq+yx3r17Y7VaWbVq1Xn369evH4sWLeLQoUMYhsHy5ctJTU1l4MCB5bb5/PPPOXHiBDabjTlz5lBQUMBVV1113uctKCggJyen3E2qzmKxMOa30aXZq9MosWkZARGRuiw9+wzPLN4GwMP92xEZ4m9yoovjFGUpIyODoKCgcx4PCgoiIyPjvPu98cYbdOzYkbCwMDw8PBg0aBBvvfUW/fr1K9vm888/p7i4mMaNG+Pp6cn999/PwoULad269Xmfd9q0aWVzp6xWK82bN7+0F1gP3dQ1DKu3OwdOnOGH5Eyz44iISC0xDIPH523mVH4xMc0DuP+KVmZHumimlqWpU6disVgqvZ09ZWaxWM7Z3zCMCh8/64033iAhIYFFixaxYcMGZsyYwV/+8he+//77sm2efPJJsrKy+P7771m/fj2PPPIIo0aNYsuWLed93kmTJpGdnV12O3BAp5IulreHK7f2PLuMQJq5YUREpNZ8tvYAv+w8hqebCzNGxeDmRKffzrIYJi6lfOzYMY4dq3xxwoiICD799FMeeeSRc779FhAQwGuvvcbYsWPP2e/MmTNYrVYWLlzIDTfcUPb4fffdx8GDB4mPj2f37t20adOGrVu3EhUVVbZN//79adOmDe+8806VXkdOTg5Wq5Xs7Gz8/Z1raNFMh06e4YqXllNiM4h/+HKnG5YVEZHKHTiRx6DXfya3sIQnb+jAfZc71qhSVT+/Tb20b2BgIIGBgRfcLjY2luzsbNauXUvPnj0BWLNmDdnZ2fTp06fCfYqKiigqKsLFpXyDdXV1xWazAZCXlwdQ6TZSe5oFeDMwKpglWzKYtTKN6TdHmx1JRERqiM1mMHFeErmFJfSMaMTYvi3NjlRtTjEW1qFDBwYNGsS4ceNISEggISGBcePGMWTIENq3/9+F9yIjI1m4cCEA/v7+XHnllUycOJEVK1awd+9eZs2axYcffsiIESPKtm/Tpg33338/a9euZffu3cyYMYNly5YxfPhwM15qvXP2X56Fmw5xIrfQ5DQiIlJTPlydRsKeE3i7u/LyqGhcXc4/bcbROUVZAvjkk0/o3LkzAwYMYMCAAURHR/PRRx+V2yYlJYXs7Oyy+3PmzOGyyy7jjjvuoGPHjkyfPp3nn3+eBx54AAB3d3eWLFlCkyZNGDp0KNHR0Xz44YfMnj2b66+/3q6vr77qEd6QTs38KSi28dna/WbHERGRGrD3WC7T43cAMPn6SMIb+5qc6NKYOmeprtCcpUszf8NBHp2bRIi/F788cbVTrb0hIiLlldgMRr+7mg37sujbpjEf3dMLFwcdVarq57c+lcR0Q2KaEujnSUZOPvFbz78UhIiIOL7//rKHDfuy8PN046WRMQ5blC6GypKYztPNlTt6tQBg5sq9JqcREZHq2pl5ihnLUgGYMqQDzQK8TU5UM1SWxCHc0bsF7q4WNu4/SdKBk2bHERGRi1RcYuPRuUkUFtu4un0TRveoOws2qyyJQwhq4MXQ6FBAo0siIs7o7RW72XwwG38vN6bfHF3potHORmVJHMbZZQS+2ZLOkZx8k9OIiEhVbT+cwxs/7gTgmRujCPb3MjlRzVJZEofROcxK9/CGFJUYfJywz+w4IiJSBYXFNh75IpGiEoOBUcEM79LM7Eg1TmVJHMrYvhEAfLJmP/lFJeaGERGRC/r3jzvZkXGKRr4ePD+ic506/XaWypI4lIFRITS1enE8t5DFSYfNjiMiIpVIOnCSt1bsBuC54Z0I9PM0OVHtUFkSh+Lu6kJcbDgAM1emoTVTRUQcU35RCY/OTaLEZjA0JpTrOzc1O1KtUVkSh3PbZS3wcndhe3oOa/eeMDuOiIhU4NVlqew6cpomDTz557Aos+PUKpUlcTgNfT0Y0bV0guDMlWnmhhERkXOsTzvBe7/sAWDaiM409PUwOVHtqlZZys3NrekcIuWM6VO6jMB32zM4cCLP5DQiInJWXmExj81NwjDg5m5h9O8YbHakWletshQcHMw999zDr7/+WtN5RABoH9KAvm0aYzPgIy0jICLiMF6KTyHteB4h/l48NbSj2XHsolpl6bPPPiM7O5trr72Wdu3aMX36dA4f1jeXpGaN/W10ac7a/eQVFpucRkREVu0+xqxVaQC8ODIaq7e7uYHspFplaejQocyfP5/Dhw/z5z//mc8++4zw8HCGDBnCggULKC7WB5tcumsigwhv7ENOfjELNh4yO46ISL12uqCYx+dtBuD2Xi24sl0TkxPZzyVN8G7cuDETJkwgKSmJV199le+//56RI0cSGhrKU089RV6e5ppI9bm4WLg7NgKAWau0jICIiJme/yaZg1lnCGvozeTrO5gdx64uqSxlZGTw0ksv0aFDB/7+978zcuRIfvjhB1577TUWLlzI8OHDayim1FejeoTh5+nGriOn+WXnMbPjiIjUSz+lHuWztfsBeHlkDH6ebiYnsq9qvdoFCxYwc+ZMli5dSseOHfnrX//KnXfeSUBAQNk2Xbp0oWvXrjWVU+qpBl7ujOwexqxVacxcuZcr6tGwr4iII8g+U8QTv51+G9MngtjWjU1OZH/VGlkaO3YsoaGhrFy5ksTERMaPH1+uKAG0atWKf/zjHzWRUeq5MX0isFhgecpR9hw9bXYcEZF65ZnF28jIyadloC9PDIo0O44pqjWylJ6ejo+PT6XbeHt78/TTT1crlMjvRQT6ck37IH7YcYTZq9J45sZOZkcSEakXlm3PZMHGQ7hY4JVR0Xh7uJodyRTVGlkqLi4mJyfnnNupU6coLCys6YwijO1buozAvA0HyckvMjmNiEjdl5VbyKQFWwAYd3kruoc3MjmReapVlgICAmjYsOE5t4CAALy9vQkPD+fpp5/GZrPVdF6pp/q2aUy7YD9yC0v4Yt0Bs+OIiNR5U77ayrHTBbQN8mPCde3MjmOqapWlWbNmERoayuTJk/nyyy9ZuHAhkydPplmzZrz99tv86U9/4o033mD69Ok1nVfqKYvFUnYJlNmr0yixaRkBEZHa8s3mdL7enI6ri4UZo2Pwcq+fp9/OqtacpdmzZzNjxgxGjx5d9tiwYcPo3Lkz7777Lj/88AMtWrTg+eefZ/LkyTUWVuq3EV2b8WL8Dg6cOMMPyZkMiAoxO5KISJ1z9FQBT35Zevrtr1e1JjoswNxADqBaI0urV6+ucFmArl27snr1agD69evH/v37Ly2dyO94e7hya8/mAMxcmWZuGBGROsgwDP6xcAtZeUV0bOrP+Gvamh3JIVSrLIWFhfH++++f8/j7779P8+alH2bHjx+nYcOGl5ZO5A/uio3A1cXC6j3HSU7PMTuOiEid8mXiIb7bnom7a+npNw+3S1q7us6o1mm4V155hVGjRvHtt99y2WWXYbFYWLduHTt27GDevHkArFu3jltuuaVGw4o0C/BmYFQwS7ZkMGtlGi+OjDY7kohInZCRnc/TX20D4G/XtqVDU3+TEzkOi1HNC27t27ePd955h5SUFAzDIDIykvvvv5+IiIgajuj4cnJysFqtZGdn4++vP67ati7tBKPeWY2nmwurJ11LI18PsyOJiDg1wzAYM3MdP6UeJSbMyvw/98HNte6PKlX18/uiR5aKiooYMGAA7777LtOmTbukkCLV0SO8IZ2a+bP1UA6frd3PX69uY3YkERGn9vm6A/yUehQPNxdmjI6pF0XpYlz00XB3d2fr1q1YLJbayCNyQRaLhbG/LSPw0ep9FJVoPS8Rkeo6mJXHc98kA/DYgHa0CWpgciLHU63qeNddd1U4wVvEXobENCXQz5OMnHy+3ZphdhwREadksxk8Pm8zpwuK6RHekHv7tTI7kkOq1gTvwsJC/vvf/7Js2TJ69OiBr69vuZ+/+uqrNRJO5Hw83Vy5o1cL/vXDTmau3MuwmFCzI4mIOJ2P1+xj1e7jeLm78PKoGFxddNaoItUqS1u3bqVbt24ApKamlvuZTs+JvdzRuwVvrdjFpv0nSTxwki7NA8yOJCLiNNKO5TJtyQ4AJg3uQMtA3wvsUX9VqywtX768pnOIXLSgBl4MjQ5lwaZDzFq5l9dvPXehVBEROVeJzWDivCTOFJUQ26oxcb3DzY7k0C5puvuuXbtYunQpZ86cAUq/eihiT2P7lk70/mZLOkdy8k1OIyLiHGau3Mu6tCx8PVx5aWQ0Ljr9VqlqlaXjx49z7bXX0q5dO66//nrS09MBuO+++3j00UdrNKBIZTqHWekR3pCiEoOPE/aZHUdExOHtOnKKl5amAPDkkI40b+RjciLHV62yNGHCBNzd3dm/fz8+Pv87yLfccgvx8fE1Fk6kKs6OLn2yZj/5RSUmpxERcVzFJTYe/SKJwmIbV7Zrwq2XNTc7klOoVln67rvvePHFFwkLCyv3eNu2bdm3T/91L/Y1MCqYUKsXx3MLWZx02Ow4IiIO692f95B0MJsGXm5Mv7mzvpRVRdUqS7m5ueVGlM46duwYnp6elxxK5GK4uboQFxsBwMyVaZo7JyJSgeT0HF7/vvQb7FOHRtHU6m1yIudRrbJ0xRVX8OGHH5bdt1gs2Gw2Xn75Za6++uoaCydSVbf1bI6Xuwvb03NYu/eE2XFERBxKYXHp6beiEoP+HYK5qVszsyM5lWotHfDyyy9z1VVXsX79egoLC3n88cfZtm0bJ06cYOXKlTWdUeSCAnw8GNG1GZ+tPcDMlWn0atXY7EgiIg7jzeW72J6eQ4CPOy/c1Emn3y5StUaWOnbsyObNm+nZsyfXXXcdubm53HTTTWzatInWrVvXdEaRKhnz2/XivtuewYETeSanERFxDFsOZvN/y3cB8NzwTgQ18DI5kfOp1sgSQEhICM8880xNZhG5JO1DGtC3TWNW7jrORwn7mHx9B7MjiYiYqqC4hEfnJlJiM7ghuilDonVpqOqodlk6efIka9eu5ciRI9hs5a/6ftddd11yMJHqGNunJSt3HWfO2v083L8tPh7V/hMXEXF6ry3bSWrmaQL9PHj2xk5mx3Fa1fokWbx4MXfccQe5ubk0aNCg3LlPi8WisiSmuSYyiPDGPuw7nsf8jYe0hL+I1Fsb9mXxn593A/DCiM408vUwOZHzqtacpUcffZR77rmHU6dOcfLkSbKysspuJ07om0hiHhcXC3f/tozArJV7sdm0jICI1D9nCkt4bG4SNgNu6tqMAVEhZkdyatUqS4cOHeKhhx6qcK0lEbON6hGGn6cbu4/m8suuY2bHERGxu5eW7mDvsVyC/T15emiU2XGcXrXK0sCBA1m/fn1NZxGpEQ283BnZvXR1+Zkr95qcRkTEvhL2HGfmyjQAXrw5GquPu7mB6oBqzVm64YYbmDhxItu3b6dz5864u5f/BzFs2LAaCSdSXWP6RDB7dRorUo6y++hpWjfxMzuSiEityy0oZuK8JABuvaw5V7UPMjlR3WAxqnFtCBeX8w9IWSwWSkrq18VMc3JysFqtZGdn4+/vb3Yc+c29s9bxw44j3BUbzj/1LRARqQf+sXALn6zZT7MAb+IfvpwGXhpVqkxVP7+rdRrOZrOd91bfipI4rrF9SxepnLfhINlnikxOIyJSu37ZeZRP1uwH4OWR0SpKNeiiytL1119PdnZ22f3nn3+ekydPlt0/fvw4HTt2rLFwIpeib5vGtAv2I6+whLnrD5gdR0Sk1uTkF/H4vM0A3B0bTp82gSYnqlsuqiwtXbqUgoKCsvsvvvhiuaUCiouLSUlJqbl0IpfAYrGUXQJl9uo0SrSMgIjUUc8u3k56dj4RjX14YnCk2XHqnIsqS3+c3lSN6U4idjWiazMCfNw5cOIMPyRnmh1HRKTG/ZCcydwNB7FY4JVRMbpyQS2o1pwlEWfh7eHKrZe1ACj7Kq2ISF2RlVvI3xdsAeC+fi3pEdHI5ER100WVJYvFUu7SJmcfE3Fkd8WG4+piYfWe4ySn55gdR0Skxjy9aBtHTxXQuokvjw5ob3acOuuixuoMw2DMmDF4enoCkJ+fzwMPPICvry9AuflMIo4iNMCbQVEhfLMlnVkr03hxZLTZkURELtm3W9JZlHQYFwvMGN0FL3dXsyPVWRdVlu6+++5y9++8885zttFFdMURje0bwTdb0vky8RBPDI7UBSVFxKkdO13AP77cCsCfr2pNl+YB5gaq4y6qLM2cObO2cojUqu7hDenUzJ+th3L4bO1+/np1G7MjiYhUi2EYPLlwKydyC4kMacBD17Y1O1KdpwneUi9YLBbG/raMwEer91FUYjM5kYhI9SxKOkz8tgzcXCzMGB2Dp5tOv9U2lSWpN4bENCXQz5OMnHy+3ZphdhwRkYuWmZPPU19tA+Cha9sSFWo1OVH9oLIk9Yanmyt39Dq7jMBek9OIiFwcwzCYtGAL2WeK6NzMyp+vam12pHrDacpSVlYWcXFxWK1WrFYrcXFx5S61UpHMzEzGjBlDaGgoPj4+DBo0iJ07d5bbpqCggAcffJDAwEB8fX0ZNmwYBw8erMVXIma6o3cL3F0tbNp/ksQDJ82OIyJSZXPXH+THHUfwcHVhxugY3F2d5iPc6TnNkb799ttJTEwkPj6e+Ph4EhMTiYuLO+/2hmEwfPhw9uzZw1dffcWmTZsIDw+nf//+5Obmlm338MMPs3DhQubMmcOvv/7K6dOnGTJkiC4IXEcFNfBiaHQooNElEXEeh06e4Z9fbwfgkQHtaBfcwORE9YvFcIJrliQnJ9OxY0cSEhLo1asXAAkJCcTGxrJjxw7atz93Ia7U1FTat2/P1q1biYqKAqCkpISgoCBefPFF7rvvPrKzs2nSpAkfffQRt9xyCwCHDx+mefPmLFmyhIEDB1YpX05ODlarlezsbPz9/WvoVUtt2XIwm6Fv/oqbi4WVf7+GYH8vsyOJiJyXYRjEvb+WX3cdo1uLAOY+0AdXFy0IXROq+vntFCNLq1evxmq1lhUlgN69e2O1Wlm1alWF+5xdINPL638fhK6urnh4ePDrr78CsGHDBoqKihgwYEDZNqGhoXTq1Om8zyvOr3OYlR7hDSm2GXycsM/sOCIilfp4zX5+3XUML3cXXhkVo6JkAqcoSxkZGQQFBZ3zeFBQEBkZFX+rKTIykvDwcCZNmkRWVhaFhYVMnz6djIwM0tPTy57Xw8ODhg0blts3ODj4vM8LpUUsJyen3E2cy9i+pcsIfLpmP/lFOuUqIo5p//E8pi1JBuDxgZG0auJncqL6ydSyNHXq1LLrzZ3vtn79eqDia9AZhnHea9O5u7szf/58UlNTadSoET4+PqxYsYLBgwfj6lr5mhSVPS/AtGnTyiaaW61WmjdvfhGvWhzBwKhgQq1eHM8tZFHSYbPjiIicw2YzeGxeEnmFJfRq2YgxfSLMjlRvmVqWxo8fT3JycqW3Tp06ERISQmZm5jn7Hz16lODg4PM+f/fu3UlMTOTkyZOkp6cTHx/P8ePHadmydFQhJCSEwsJCsrKyyu135MiRSp930qRJZGdnl90OHDhQzSMgZnFzdSEuNgKAmSvTcIKpeyJSz8xclcbavSfw8XDl5ZExuOj0m2ku6nInNS0wMJDAwMALbhcbG0t2djZr166lZ8+eAKxZs4bs7Gz69Olzwf2t1tJFu3bu3Mn69et59tlngdIy5e7uzrJlyxg9ejQA6enpbN26lZdeeum8z+fp6Vl2MWFxXrf1bM6/fkglOT2HNXtP0LtVY7MjiYgAsPvoaV6K3wHAP27oQIvGPiYnqt+cYs5Shw4dGDRoEOPGjSMhIYGEhATGjRvHkCFDyn0TLjIykoULF5bdnzt3LitWrChbPuC6665j+PDhZRO6rVYr9957L48++ig//PADmzZt4s4776Rz587079/f7q9T7CvAx4MRXcMALSMgIo6juMTGY3OTKCi2cXnbQG7v2cLsSPWeU5QlgE8++YTOnTszYMAABgwYQHR0NB999FG5bVJSUsjOzi67n56eTlxcHJGRkTz00EPExcXx2WefldvntddeY/jw4YwePZq+ffvi4+PD4sWLLzivSeqGsX0jAFi2PZMDJ/LMDSMiAvznlz1s2n+SBp5uvHhzdKVzaMU+nGKdJUendZac253/XcOvu47xpytaMfn6DmbHEZF6LCXjFEP//SuFJTZeHhnNqB76AlFtqlPrLInUprOjS3PW7ievsNjcMCJSbxWV2Hjki0QKS2xcGxnEyO5hZkeS36gsSb13dfsgwhv7kJNfzPyNh8yOIyL11P8t38W2wzlYvd2ZdlNnnX5zICpLUu+5uFi4+7dlBGat3IvNpjPTImJfWw9l8+aPuwD4541RBOkyTA5FZUkEGNUjDD9PN3YfzeWXXcfMjiMi9UhBcQmPfpFEsc1gcKcQhsWEmh1J/kBlSQRo4OVeNj9AywiIiD396/udpGSeorGvB88N76TTbw5IZUnkN2P6RGCxwIqUo+w+etrsOCJSD2zan8U7P+0G4PkRnWjspwWPHZHKkshvIgJ9uaZ96QWbZ69KMzeMiNR5+UUlPDo3CZsBw7uEMqhTU7MjyXmoLIn8zti+pdcNnLfhINlnikxOIyJ12ctLU9hzNJegBp48M6yT2XGkEipLIr/Tt01j2gX7kVdYwtz1ukCyiNSOtXtP8MFv8yNfvDkaq4+7yYmkMipLIr9jsVgY06d0dGnWqjRKtIyAiNSw3IJiHpubhGHA6B5hXB0ZZHYkuQCVJZE/GNG1GQE+7hzMOsP3yZlmxxGROmb6tzvYfyKPUKsXTw7paHYcqQKVJZE/8PZw5dbLSq/yrWUERKQmrdx1jI8S9gHw0sgY/L10+s0ZqCyJVOCu2HBcXSwk7DlBcnqO2XFEpA44lV/E4/M2A3Bn7xb0axtociKpKpUlkQqEBngzKCoE0OiSiNSM575O5tDJM7Ro5MOkwR3MjiMXQWVJ5DzG9o0A4MvEwxw/XWBuGBFxast3HOHz9QewWODlkdH4erqZHUkugsqSyHl0D29I52ZWCottfLZ2v9lxRMRJncwr5In5paff7unbkl6tGpucSC6WypLIeVgslrLRpY8S9lFUYjM3kIg4pamLtnHkVAGtmvgycWB7s+NINagsiVTihuimBPp5kplTwJIt6WbHEREnE781gy8TD+NigRmjYvBydzU7klSDypJIJTzdXLmzd+kyArN0vTgRuQjHTxfwj4VbALj/ytZ0bdHQ5ERSXSpLIhdwR69w3F0tbNp/ksQDJ82OIyJOwDAMpny1leO5hbQPbsDD/duaHUkugcqSyAU0aeDJ0OhQQMsIiEjVLN6czpItGbi5WJgxOgZPN51+c2YqSyJVMLZv6fXivtmcTmZOvslpRMSRHTmVz1NfbQXgr1e3oVMzq8mJ5FKpLIlUQecwKz3CG1JsM/j4t0sViIj8kWEYTF6whZN5RUSF+jP+mjZmR5IaoLIkUkVnR5c+XbOf/KISk9OIiCOav/EQ3ycfwcPVhRmjY3B31cdsXaB/iiJVNDAqmFCrF8dzC1mUdNjsOCLiYA6fPMMzi7cB8PB1bYkM8Tc5kdQUlSWRKnJzdSEuNgKAmSvTMAzD3EAi4jAMw+CJ+Zs5lV9Ml+YB/OnyVmZHkhqksiRyEW7r2RwvdxeS03NYs/eE2XFExEF8unY/v+w8hqdb6ek3N51+q1P0T1PkIgT4eDCiaxigZQREpNSBE3k8/00yABMHtqd1Ez+TE0lNU1kSuUhnrxe3bHsmB07kmRtGRExlsxk8NjeJvMISekY04p7fvggidYvKkshFahfcgH5tArEZ8OHqNLPjiIiJZq9OY83eE3i7u/LyqGhcXCxmR5JaoLIkUg1nR5fmrDtAbkGxuWFExBR7jp7mxfgdAEy+PpLwxr4mJ5LaorIkUg1Xtw8iorEPp/KLWbDxoNlxRMTOSn47/ZZfZKNvm8bc0Svc7EhSi1SWRKrBxcXC3X0iAJi5Kg2bTcsIiNQn//1lDxv3n8TP042XRsbo9Fsdp7IkUk0ju4fh5+nGnqO5/LzzqNlxRMROUjNPMeO7VACeGtKRZgHeJieS2qayJFJNDbzcGdXj7DICaeaGERG7KCqx8egXSRSW2Li6fZOy9wCp21SWRC7BmD4RWCzwU+pRdh05bXYcEallb6/YzZZD2Vi93Zl+czQWi06/1QcqSyKXILyxL9dGBgEwe1WauWFEpFZtO5zNGz/sBOCZYVEE+3uZnEjsRWVJ5BKN/W0RuvkbD5J9psjkNCJSGwqLS0+/FdsMBkYFc2OXULMjiR2pLIlcoj6tG9Mu2I+8whLmrj9gdhwRqQVv/LCTHRmnaOTrwfMjOuv0Wz2jsiRyiSwWC2P6lI4uzVqVRomWERCpU5IOnOTtn3YD8NzwTgT6eZqcSOxNZUmkBozo2owAH3cOZp3h++RMs+OISA3JLyrh0blJlNgMhsaEcn3npmZHEhOoLInUAG8PV269rAUAM1fuNTmNiNSUV5elsuvIaZo08OSfw6LMjiMmUVkSqSF3xYbj6mIhYc8JktNzzI4jIpdofdoJ3vtlDwDTb+pMQ18PkxOJWVSWRGpIaIA3g6JCAI0uiTi7vMJiHp2bhGGUrtZ/bYdgsyOJiVSWRGrQ2L4RAHyZeJjjpwvMDSMi1fbitzvYdzyPplYvnhra0ew4YjKVJZEa1D28IZ2bWSkstvHZ2v1mxxGRali16xizV+8D4MWbo/H3cjc5kZhNZUmkBlkslrLRpY8S9lFUYjM3kIhclFP5RUyctxmA23u14Ip2TUxOJI5AZUmkht0Q3ZRAP08ycwpYsiXd7DgichFeWJLMoZNnCGvozeTrO5gdRxyEypJIDfN0c+XO3meXEUgzN4yIVNmKlCN8trZ0Ff6XR8bg5+lmciJxFCpLIrXgjl7heLi6kHjgJJv2Z5kdR0QuIPtMEX+fvwWAMX0iiG3d2ORE4khUlkRqQZMGngyJKV3pV6NLIo7vmcXbyMjJp2WgL08MijQ7jjgYlSWRWnJP39LrxS3Zks43mzV3ScRRfbctgwUbD+FigVdGRePt4Wp2JHEwKksitaRTMyv9OwRRbDP466cb+eunGzmRW2h2LBH5nRO5hUxeWHr6bdwVrege3sjkROKIVJZEatFbd3TnoWva4Opi4ZvN6Qx47SeWbsswO5aI/GbKV1s5drqQtkF+TOjfzuw44qBUlkRqkYebC48MaM/Cv/ShbZAfx04Xcv9HG3h4ziZO5mmUScRMX28+zDeb03F1sfDq6C54uev0m1RMZUnEDqLDAvj6oX78+arWuFhKL4cy4LWf+SE50+xoIvXS0VMFTPlyKwB/vao1ncOsJicSR6ayJGInnm6uPDEoknl/7kOrJr4cOVXAvbPX89jcJLLPFJkdT6TeMAyDyQu3kJVXRMem/oy/pq3ZkcTBqSyJ2Fm3Fg1Z8tDljLu8JRYLzNtwkEGv/8xPqUfNjiZSLyzcdIhl2zNxd7UwY3QMHm76KJTK6S9ExARe7q7844aOzL0/lojGPqRn53P3B2uZtGAzpwuKzY4nUmdlZOfz9KJtAPzt2rZ0aOpvciJxBipLIibqEdGIJX+7nDF9IgD4bO0BBr72Myt3HTM3mEgdZBgGT8zfzKn8YmLCrDxwZWuzI4mTUFkSMZmPhxtTh0Xx2bjehDX05tDJM9zx3zVM+XIruRplEqkxn687wE+pR/Fwc2HG6BjcXPURKFWjvxQRBxHbujFLH76i7CK8HyXsY/C/fmHNnuMmJxNxfgdO5PHs19sBmDigPW2CGpicSJyJypKIA/H1dOO54Z35+N5eNAvwZv+JPG59L4FnFm/jTGGJ2fFEnJLNZvD4vM3kFpbQI7wh9/RraXYkcTJOU5aysrKIi4vDarVitVqJi4vj5MmTle6TmZnJmDFjCA0NxcfHh0GDBrFz586yn584cYIHH3yQ9u3b4+PjQ4sWLXjooYfIzs6u5VcjUrl+bQOJf/hybr2sOYZRejHe69/4hQ37TpgdTcTpfJSwj9V7juPt7soro2JwdbGYHUmcjNOUpdtvv53ExETi4+OJj48nMTGRuLi4825vGAbDhw9nz549fPXVV2zatInw8HD69+9Pbm4uAIcPH+bw4cO88sorbNmyhVmzZhEfH8+9995rr5clcl4NvNyZfnM0M8deRrC/J3uP5TLyndW8sCSZ/CKNMolUxYqUI0z/dgcAfx8cSUSgr8mJxBlZDMMwzA5xIcnJyXTs2JGEhAR69eoFQEJCArGxsezYsYP27dufs09qairt27dn69atREVFAVBSUkJQUBAvvvgi9913X4W/a+7cudx5553k5ubi5uZWpXw5OTlYrVays7Px99fXUKXmZecV8c+vtzN/40EAWjfxZcboLnRpHmBuMBEHlZyewwtLkvllZ+k3S/u0bszH9/bCRaNK8jtV/fx2ipGl1atXY7Vay4oSQO/evbFaraxatarCfQoKCgDw8vIqe8zV1RUPDw9+/fXX8/6uswessqJUUFBATk5OuZtIbbL6uDNjdAzv3dWDJg082X00l5veWsnLS3dQUKxRJpGzMnPyeXxeEte/8Qu/7DyGu6uFe/u15J247ipKUm1OUZYyMjIICgo65/GgoCAyMiq+gntkZCTh4eFMmjSJrKwsCgsLmT59OhkZGaSnp1e4z/Hjx3n22We5//77K80zbdq0srlTVquV5s2bX/yLEqmG6zoG893DV3Bjl1BsBvzf8t0M+/dKth7SPDup33ILinltWSpXvbyCL9YfxDDg+s4hfP/IlUwZ0hF/L3ezI4oTM7UsTZ06FYvFUult/fr1AFgs5/4XgWEYFT4O4O7uzvz580lNTaVRo0b4+PiwYsUKBg8ejKvruVeWzsnJ4YYbbqBjx448/fTTleaeNGkS2dnZZbcDBw5U49WLVE9DXw/+dWtX3rmzG419PUjJPMWN/7eSV5elUlhsMzueiF2V2Aw+X7efq19Zwb9+2MmZohK6tghg/p9jeeuO7oQ31hwluXRVm5RTS8aPH8+tt95a6TYRERFs3ryZzMxzr85+9OhRgoODz7tv9+7dSUxMJDs7m8LCQpo0aUKvXr3o0aNHue1OnTrFoEGD8PPzY+HChbi7V/5fIJ6ennh6ela6jUhtG9SpKZdFNGLKV1tZsiWDN37YyffbM5kxOkaXcJB64afUo7zwTTIpmacAaN7Im78P6sD1nUPO+x/SItXhVBO816xZQ8+ePQFYs2YNvXv3Pu8E74rs3LmTyMhIvv32WwYMGACUjigNHDgQT09PlixZgo+Pz0Xn0wRvMdvipMNM+WorJ/OKcHe18Ldr2/LAla21QrHUSTsycnj+m/9N3rZ6u/PgNW2Iiw3H0+3cMwci51PVz2+nKEsAgwcP5vDhw7z77rsA/OlPfyI8PJzFixeXbRMZGcm0adMYMWIEUPrNtiZNmtCiRQu2bNnC3/72N7p37878+fOB0hGl6667jry8PBYuXIiv7/+Ga5s0aVLh6bqKqCyJIzhyKp9/LNzKsu2lo7DRYVZeGRVDu2CtVCx1Q2ZOPq9+l8rcDQewGeDuauGu2AgevKYNAT4eZscTJ1TVz29TT8NdjE8++YSHHnqobERo2LBhvPnmm+W2SUlJKbegZHp6Oo888giZmZk0bdqUu+66iylTppT9fMOGDaxZswaANm3alHuuvXv3EhERUUuvRqTmBTXw4j9x3fky8RBPf7WNzQezGfLGr0y4rh1/uqKVFuITp5VbUMx/ft7Df37ew5nf1hi7vnMITwyK1JwksQunGVlyZBpZEkeTmZPP3+dvZnnKUQC6tgjglVExtG7iZ3IykaorsRnM23CAGd+lcuRU6XIwXVsE8OQNHege3sjkdFIX1LnTcI5MZUkckWEYzN1wkGcXb+dUQTGebi5MHNiesX1bapRJHJ4mb4s9qCzZkcqSOLLDJ8/wxPzNZZNhL4toyMsjY3TZB3FIOzJyeGHJDn5OLR0V1eRtqU0qS3aksiSOzjAM5qw7wHNfbye3sAQvdxf+PiiSu2IjtKqxOARN3hYzqCzZkcqSOIsDJ/J4fN5mVu85DkDvVo14eWQMzRtd/JIZIjVBk7fFTCpLdqSyJM7EZjP4eM0+pi3ZwZmiEnw9XJl8Qwdu79lCc0HEbjR5WxyBypIdqSyJM9p3PJeJczezNu0EAJe3DWT6zdE0C/A2OZnUdT+lHmXakmR2ZGjytphLZcmOVJbEWdlsBjNXpfFS/A4Kim008HRjypCOjOoRpg8tqXGavC2ORmXJjlSWxNntOXqax+YmsXH/SQCubt+EaTdFE2L1MjeY1AmavC2OSmXJjlSWpC4osRn895c9zFiWSmGxDX8vN6YOi2JE12YaZZJqySss5t2fNHlbHJfKkh2pLEldsjPzFI/NTSLpYOmlg/p3COaFmzoR1ECjTFI1mrwtzkJlyY5UlqSuKS6x8e7Pe3j9+1SKSgwCfNz5542dGBrdVKNMUilN3hZnorJkRypLUlftyMjh0S+S2HY4B4DBnUJ4bngnGvt5mpxMHM0fJ2/7e7nx0LVtNXlbHJrKkh2pLEldVlRi463lu/n3jzspthk09vXgueGdGNy5qdnRxAFo8rY4M5UlO1JZkvpg66FsHpubVHZ6ZVhMKM8Mi6Khrz4Q66O8wtKVt9/9SZO3xXmpLNmRypLUF4XFNt74YSdv/7SbEptBoJ8n027qzHUdg82OJnaiydtSl6gs2ZHKktQ3SQdO8ujcJHYdOQ3ATV2b8fTQKKw+7iYnk9qkydtS16gs2ZHKktRH+UUlvPZ9Ku/9vAebAcH+nky/OZqr2weZHU1qmCZvS12lsmRHKktSn23Yl8XEuUnsOZYLwC09mvOPIR3w99Iok7M7kpPPDE3eljpMZcmOVJakvssvKuHlpSl8sHIvhgGhVi9eHBnN5W2bmB1NqkGTt6W+UFmyI5UlkVJr955g4rwk9h3PA+D2Xi2YfH0H/DzdTE4mVaHJ21LfqCzZkcqSyP/kFRbz4rc7mL16HwBhDb15aWQ0fVoHmpxMKvNz6lFe0ORtqWdUluxIZUnkXKt2H+PxeZs5mHUGgDF9Inh8UHt8PDTK5Eg0eVvqM5UlO1JZEqnY6YJiXliSzKdr9gMQ3tiHV0bFcFmETumYTZO3RVSW7EplSaRyP6ce5e/zN3M4Ox+LBe7p25KJA9vj5a6RC3vT5G2R/1FZsiOVJZELy8kv4rmvt/PF+oMAtAr05ZXRMXRr0dDkZPWDJm+LnEtlyY5UlkSqbvmOI/x9wWYycwpwscCfrmjNw/3bapSpFmnytkjFVJbsSGVJ5OJk5xXxzOJtLNh0CIC2QX7MGB1DdFiAucHqGE3eFqmcypIdqSyJVM932zKYvHArx04X4Opi4S9XtebBa9ri4eZidjSnpsnbIlWjsmRHKksi1ZeVW8hTi7axOOkwAJEhDZgxOoaoUKvJyZyPJm+LXByVJTtSWRK5dEu2pPPkl1s5kVuIm4uFB69py1+ubo27q0aZLqTEZjB/w0Fe+S5Fk7dFLoLKkh2pLInUjGOnC5jy5Va+3ZoBQFSoPzNGxxAZon+vzqeiydtPDIrkhs5NNXlb5AJUluxIZUmk5hiGweLN6Tz11VZO5hXh7mrh4f7tuP+KVrhplKmMJm+LXDqVJTtSWRKpeUdO5TN5wVa+T84EIKZ5ADNGRdMmqIHJycx1JCefV5el8sV6Td4WuVQqS3aksiRSOwzDYOGmQzy9aBun8ovxcHPhsQHtuLdfK1xd6tcpprOTt//z8x7yCjV5W6QmqCzZkcqSSO3KyM7n7ws2syKl9JRTtxYBvDIqhlZN/ExOVvs0eVuk9qgs2ZHKkkjtMwyDuesP8s+vt3O6oBgvdxceHxjJmD4RuNTRUSZN3hapXSpLdqSyJGI/h06e4Yl5m/l11zEAerZsxCsjY2jR2MfkZDUnJeMUzy9J1uRtkVqmsmRHKksi9mUYBp+u3c/z3ySTV1iCj4crkwZHckevcKceZdLkbRH7UlmyI5UlEXMcOJHHxHlJJOw5AUCf1o158eZomjdyrlGm803efnxgJBGBmrwtUltUluxIZUnEPDabwUcJ+5j+7Q7OFJXg6+HKk0M6cutlzR1+Xo8mb4uYS2XJjlSWRMyXdiyXx+YmsX5fFgBXtGvCizd3pqnV2+RkFdPkbRHzqSzZkcqSiGMosRnMXLmXl5emUFBso4GXG08N6cjI7mEOU0BSMk7xwpJkftLkbRHTqSzZkcqSiGPZffQ0j81NYtP+kwBcGxnECzd1Jtjfy7RMmrwt4nhUluxIZUnE8ZTYDN77ZQ+vfpdKYYkNq7c7zwyL4sYuoXYdZdLkbRHHpbJkRypLIo4rNfMUj36RxJZD2QAMjArmueGdadLAs1Z/ryZvizg+lSU7UlkScWxFJTbe/Wk3//phJ0UlBg193Hl2eCeGRIfWyu/7ZedRnv9Gk7dFHJ3Kkh2pLIk4h+T0HB79Iont6TkA3NC5Kc8O70Qj35qZM6TJ2yLORWXJjlSWRJxHYbGN/1u+i/9bvotim0GgnwfPDe/MoE4h1X7OiiZvx/WO4KFrNXlbxJGpLNmRypKI89l6KJtHv0giJbP0VNnwLqFMHRZ1UeVGk7dFnJvKkh2pLIk4p4LiEt74YSdvr9iNzYAmDTyZflNnru0QXOl+mrwtUjeoLNmRypKIc0s8cJJHv0hk99FcAG7uFsZTQzti9XY/Z1tN3hapO1SW7EhlScT55ReV8OqyVN77ZQ+GASH+Xky/uTNXtQ8CNHlbpC5SWbIjlSWRumPDvhM8Nncze4+VjjLdellzAE3eFqmDVJbsSGVJpG45U1jCy0tTmLlqL79/h9TkbZG6paqf3252zCQi4hS8PVx5amhHBkYF89RX27B6u/P4oPb0iNDkbZH6SCNLNUAjSyIiIs6nqp/fLnbMJCIiIuJ0VJZEREREKqGyJCIiIlIJlSURERGRSqgsiYiIiFRCZUlERESkEk5TlrKysoiLi8NqtWK1WomLi+PkyZOV7pOZmcmYMWMIDQ3Fx8eHQYMGsXPnzgq3NQyDwYMHY7FY+PLLL2v+BYiIiIhTcpqydPvtt5OYmEh8fDzx8fEkJiYSFxd33u0Nw2D48OHs2bOHr776ik2bNhEeHk7//v3Jzc09Z/vXX39dF8EUERGRczjFCt7JycnEx8eTkJBAr169AHjvvfeIjY0lJSWF9u3bn7PPzp07SUhIYOvWrURFRQHw1ltvERQUxGeffcZ9991Xtm1SUhKvvvoq69ato2nTpvZ5USIiIuIUnGJkafXq1Vit1rKiBNC7d2+sViurVq2qcJ+CggIAvLy8yh5zdXXFw8ODX3/9teyxvLw8brvtNt58801CQkJq6RWIiIiIs3KKspSRkUFQUNA5jwcFBZGRkVHhPpGRkYSHhzNp0iSysrIoLCxk+vTpZGRkkJ6eXrbdhAkT6NOnDzfeeGOV8xQUFJCTk1PuJiIiInWTqWVp6tSpWCyWSm/r168HqHA+kWEY551n5O7uzvz580lNTaVRo0b4+PiwYsUKBg8ejKurKwCLFi3ixx9/5PXXX7+o3NOmTSubaG61WmnevPnFvXARERFxGqbOWRo/fjy33nprpdtERESwefNmMjMzz/nZ0aNHCQ4OPu++3bt3JzExkezsbAoLC2nSpAm9evWiR48eAPz444/s3r2bgICAcvvdfPPNXH755axYsaLC5500aRKPPPJI2f2cnBwVJhERkTrKYhiGYXaIC0lOTqZjx46sWbOGnj17ArBmzRp69+7Njh07KpzgXZGdO3cSGRnJt99+y4ABA8jIyODYsWPltuncuTP/+te/GDp0KC1btqzS81b1qsUiIiLiOKr6+e0U34br0KEDgwYNYty4cbz77rsA/OlPf2LIkCHlilJkZCTTpk1jxIgRAMydO5cmTZrQokULtmzZwt/+9jeGDx/OgAEDAAgJCalwUneLFi2qXJSg9HQgoLlLIiIiTuTs5/aFxo2coiwBfPLJJzz00ENlRWfYsGG8+eab5bZJSUkhOzu77H56ejqPPPIImZmZNG3alLvuuospU6bUeLZTp04B6FSciIiIEzp16hRWq/W8P3eK03COzmazcfjwYRo0aOAwC1uenUd14MABnRpEx+OPdDzK0/EoT8ejPB2Pc9WVY2IYBqdOnSI0NBQXl/N/581pRpYcmYuLC2FhYWbHqJC/v79T/yHXNB2P8nQ8ytPxKE/Hozwdj3PVhWNS2YjSWU6xzpKIiIiIWVSWRERERCqhslRHeXp68vTTT+Pp6Wl2FIeg41Gejkd5Oh7l6XiUp+Nxrvp2TDTBW0RERKQSGlkSERERqYTKkoiIiEglVJZEREREKqGy5OQOHTrEnXfeSePGjfHx8aFLly5s2LCh7OeGYTB16lRCQ0Px9vbmqquuYtu2bSYmrl2VHY+ioiKeeOIJOnfujK+vL6Ghodx1110cPnzY5NS150J/H793//33Y7FYeP311+0b0o6qcjySk5MZNmwYVquVBg0a0Lt3b/bv329S4tp1oeNx+vRpxo8fT1hYGN7e3nTo0IG3337bxMS1KyIiAovFcs7tr3/9K1D/3k8rOx717f1UZcmJZWVl0bdvX9zd3fn222/Zvn07M2bMICAgoGybl156iVdffZU333yTdevWERISwnXXXVd2iZa65ELHIy8vj40bNzJlyhQ2btzIggULSE1NZdiwYeYGryVV+fs468svv2TNmjWEhobaP6idVOV47N69m379+hEZGcmKFStISkpiypQpeHl5mRe8llTleEyYMIH4+Hg+/vhjkpOTmTBhAg8++CBfffWVecFr0bp160hPTy+7LVu2DIBRo0YB9ev9FCo/HvXt/RRDnNYTTzxh9OvX77w/t9lsRkhIiDF9+vSyx/Lz8w2r1Wq888479ohoVxc6HhVZu3atARj79u2rpVTmqerxOHjwoNGsWTNj69atRnh4uPHaa6/VfjgTVOV43HLLLcadd95pp0TmqsrxiIqKMv75z3+We6xbt27Gk08+WZvRHMbf/vY3o3Xr1obNZqt376cV+f3xqEhdfj/VyJITW7RoET169GDUqFEEBQXRtWtX3nvvvbKf7927l4yMjLKLD0Pp2hhXXnklq1atMiNyrbrQ8ahIdnY2FoulwtEWZ1eV42Gz2YiLi2PixIlERUWZlNQ+LnQ8bDYb33zzDe3atWPgwIEEBQXRq1cvvvzyS/NC16Kq/H3069ePRYsWcejQIQzDYPny5aSmpjJw4ECTUttPYWEhH3/8Mffccw8Wi6XevZ/+0R+PR0Xq8vupRpacmKenp+Hp6WlMmjTJ2Lhxo/HOO+8YXl5exuzZsw3DMIyVK1cagHHo0KFy+40bN84YMGCAGZFr1YWOxx+dOXPG6N69u3HHHXfYOal9VOV4vPDCC8Z1111X9l+KdXlk6ULHIz093QAMHx8f49VXXzU2bdpkTJs2zbBYLMaKFStMTl/zqvL3UVBQYNx1110GYLi5uRkeHh7Ghx9+aGJq+/n8888NV1fXsvfP+vZ++kd/PB5/VNffT1WWnJi7u7sRGxtb7rEHH3zQ6N27t2EY//uX+/Dhw+W2ue+++4yBAwfaLae9XOh4/F5hYaFx4403Gl27djWys7PtFdGuLnQ81q9fbwQHB5d786vLZelCx+PQoUMGYNx2223lthk6dKhx66232i2nvVTl35eXX37ZaNeunbFo0SIjKSnJ+Pe//234+fkZy5Yts3dcuxswYIAxZMiQsvv17f30j/54PH6vPryf6jScE2vatCkdO3Ys91iHDh3KvrkTEhICQEZGRrltjhw5QnBwsH1C2tGFjsdZRUVFjB49mr1797Js2TKnv2L2+VzoePzyyy8cOXKEFi1a4ObmhpubG/v27ePRRx8lIiLChMS160LHIzAwEDc3tyr9DdUFFzoeZ86cYfLkybz66qsMHTqU6Ohoxo8fzy233MIrr7xiRmS72bdvH99//z333Xdf2WP17f309yo6HmfVl/dTlSUn1rdvX1JSUso9lpqaSnh4OAAtW7YkJCSk7BsMUHre+aeffqJPnz52zWoPFzoe8L9/sXfu3Mn3339P48aN7R3Tbi50POLi4ti8eTOJiYllt9DQUCZOnMjSpUvNiFyrLnQ8PDw8uOyyyy74N1RXXOh4FBUVUVRUhItL+Y8JV1dXbDab3XKaYebMmQQFBXHDDTeUPVbf3k9/r6LjAfXr/VSn4ZzY2rVrDTc3N+P55583du7caXzyySeGj4+P8fHHH5dtM336dMNqtRoLFiwwtmzZYtx2221G06ZNjZycHBOT144LHY+ioiJj2LBhRlhYmJGYmGikp6eX3QoKCkxOX/Oq8vfxR3X5NFxVjseCBQsMd3d34z//+Y+xc+dO49///rfh6upq/PLLLyYmrx1VOR5XXnmlERUVZSxfvtzYs2ePMXPmTMPLy8t46623TExeu0pKSowWLVoYTzzxxDk/q0/vp2ed73jUt/dTlSUnt3jxYqNTp06Gp6enERkZafznP/8p93ObzWY8/fTTRkhIiOHp6WlcccUVxpYtW0xKW/sqOx579+41gApvy5cvNy90LbrQ38cf1eWyZBhVOx7vv/++0aZNG8PLy8uIiYkxvvzySxOS2seFjkd6eroxZswYIzQ01PDy8jLat29vzJgx47xfHa8Lli5dagBGSkrKOT+rb++nhnH+41Hf3k8thmEYZoxoiYiIiDgDzVkSERERqYTKkoiIiEglVJZEREREKqGyJCIiIlIJlSURERGRSqgsiYiIiFRCZUlERESkEipLIiIiIpVQWRKRei0iIoLXX3/d7Bgi4sBUlkTEaQ0dOpT+/ftX+LPVq1djsVjYuHGjnVOJSF2jsiQiTuvee+/lxx9/ZN++fef87IMPPqBLly5069bNhGQiUpeoLImI0xoyZAhBQUHMmjWr3ON5eXl8/vnn3HvvvcyfP5+oqCg8PT2JiIhgxowZ532+tLQ0LBYLiYmJZY+dPHkSi8XCihUrAFixYgUWi4WlS5fStWtXvL29ueaaazhy5AjffvstHTp0wN/fn9tuu428vLyy5zEMg5deeolWrVrh7e1NTEwM8+bNq8nDISK1RGVJRJyWm5sbd911F7NmzeL31wSfO3cuhYWFxMbGMnr0aG699Va2bNnC1KlTmTJlyjnlqjqmTp3Km2++yapVqzhw4ACjR4/m9ddf59NPP+Wbb75h2bJl/Pvf/y7b/sknn2TmzJm8/fbbbNu2jQkTJnDnnXfy008/XXIWEaldFuP37zAiIk5mx44ddOjQgR9//JGrr74agCuvvJJmzZphsVg4evQo3333Xdn2jz/+ON988w3btm0DSid4P/zwwzz88MOkpaXRsmVLNm3aRJcuXYDSkaWGDRuyfPlyrrrqKlasWMHVV1/N999/z7XXXgvA9OnTmTRpErt376ZVq1YAPPDAA6SlpREfH09ubi6BgYH8+OOPxMbGlmW57777yMvL49NPP7XHoRKRatLIkog4tcjISPr06cMHH3wAwO7du/nll1+45557SE5Opm/fvuW279u3Lzt37qSkpOSSfm90dHTZ/w8ODsbHx6esKJ197MiRIwBs376d/Px8rrvuOvz8/MpuH374Ibt3776kHCJS+9zMDiAicqnuvfdexo8fz//93/8xc+ZMwsPDufbaazEMA4vFUm7bygbTXVxcztmmqKiowm3d3d3L/r/FYil3/+xjNpsNoOx/v/nmG5o1a1ZuO09Pzwu9PBExmUaWRMTpjR49GldXVz799FNmz57N2LFjsVgsdOzYkV9//bXctqtWraJdu3a4urqe8zxNmjQBID09veyx30/2rq6OHTvi6enJ/v37adOmTblb8+bNL/n5RaR2aWRJRJyen58ft9xyC5MnTyY7O5sxY8YA8Oijj3LZZZfx7LPPcsstt7B69WrefPNN3nrrrQqfx9vbm969ezN9+nQiIiI4duwYTz755CXna9CgAY899hgTJkzAZrPRr18/cnJyWLVqFX5+ftx9992X/DtEpPZoZElE6oR7772XrKws+vfvT4sWLQDo1q0bX3zxBXPmzKFTp0489dRT/POf/ywrUxX54IMPKCoqokePHvztb3/jueeeq5F8zz77LE899RTTpk2jQ4cODBw4kMWLF9OyZcsaeX4RqT36NpyIiIhIJTSyJCIiIlIJlSURERGRSqgsiYiIiFRCZUlERESkEipLIiIiIpVQWRIRERGphMqSiIiISCVUlkREREQqobIkIiIiUgmVJREREZFKqCyJiIiIVEJlSURERKQS/w+KFmKjiKyciAAAAABJRU5ErkJggg=="},"metadata":{}}]},{"cell_type":"code","source":"","metadata":{"collapsed":false,"ExecuteTime":{"end_time":"2024-04-04T12:23:49.409448Z","start_time":"2024-04-04T12:23:49.404281Z"},"jupyter":{"outputs_hidden":false}},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"collapsed":false,"ExecuteTime":{"end_time":"2024-04-04T12:23:49.414721Z","start_time":"2024-04-04T12:23:49.411543Z"},"jupyter":{"outputs_hidden":false}},"execution_count":null,"outputs":[]}]} \ No newline at end of file diff --git a/pyiron_base.ipynb b/pyiron_base.ipynb index 084b25a..e6fbc20 100644 --- a/pyiron_base.ipynb +++ b/pyiron_base.ipynb @@ -1 +1 @@ -{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.11.8","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os","metadata":{"trusted":true},"execution_count":1,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy as np","metadata":{"trusted":true},"execution_count":2,"outputs":[]},{"cell_type":"code","source":"from ase.build import bulk\nfrom ase.io import write","metadata":{"trusted":true},"execution_count":3,"outputs":[]},{"cell_type":"code","source":"from adis_tools.parsers import parse_pw","metadata":{"trusted":true},"execution_count":4,"outputs":[]},{"cell_type":"markdown","source":"# Functions","metadata":{}},{"cell_type":"code","source":"def generate_structures(structure, strain_lst): \n structure_lst = []\n for strain in strain_lst:\n structure_strain = structure.copy()\n structure_strain.set_cell(\n structure_strain.cell * strain**(1/3), \n scale_atoms=True\n )\n structure_lst.append(structure_strain)\n return structure_lst","metadata":{"trusted":true},"execution_count":5,"outputs":[]},{"cell_type":"code","source":"def plot_energy_volume_curve(volume_lst, energy_lst):\n plt.plot(volume_lst, energy_lst)\n plt.xlabel(\"Volume\")\n plt.ylabel(\"Energy\")\n plt.savefig(\"evcurve.png\")","metadata":{"trusted":true},"execution_count":6,"outputs":[]},{"cell_type":"code","source":"def write_input(input_dict, working_directory=\".\"):\n filename = os.path.join(working_directory, 'input.pwi')\n os.makedirs(working_directory, exist_ok=True)\n write(\n filename=filename, \n images=input_dict[\"structure\"], \n Crystal=True, \n kpts=input_dict[\"kpts\"], \n input_data={\n 'calculation': input_dict[\"calculation\"],\n 'occupations': 'smearing',\n 'degauss': input_dict[\"smearing\"],\n }, \n pseudopotentials=input_dict[\"pseudopotentials\"],\n tstress=True, \n tprnfor=True\n )","metadata":{"trusted":true},"execution_count":7,"outputs":[]},{"cell_type":"code","source":"def collect_output(working_directory=\".\"):\n output = parse_pw(os.path.join(working_directory, 'pwscf.xml'))\n return {\n \"structure\": output['ase_structure'],\n \"energy\": output[\"energy\"],\n \"volume\": output['ase_structure'].get_volume(),\n }","metadata":{"trusted":true},"execution_count":8,"outputs":[]},{"cell_type":"code","source":"def workflow(project, structure, pseudopotentials): \n # Structure optimization \n job_qe_minimize = pr.wrap_executable(\n job_name=\"job_qe_minimize\",\n write_input_funct=write_input,\n collect_output_funct=collect_output,\n input_dict={\n \"structure\": structure, \n \"pseudopotentials\": pseudopotentials, \n \"kpts\": (3, 3, 3),\n \"calculation\": \"vc-relax\",\n \"smearing\": 0.02,\n },\n executable_str=\"mpirun -np 1 pw.x -in input.pwi > output.pwo\",\n execute_job=True,\n )\n\n # Generate Structures\n structure_lst = pr.wrap_python_function(generate_structures)(\n structure=job_qe_minimize.output.structure, \n strain_lst=np.linspace(0.9, 1.1, 5),\n )\n \n # Energy Volume Curve \n energy_lst, volume_lst = [], []\n for i, structure_strain in enumerate(structure_lst):\n job_strain = pr.wrap_executable(\n job_name=\"job_strain_\" + str(i),\n write_input_funct=write_input,\n collect_output_funct=collect_output,\n input_dict={\n \"structure\": structure_strain, \n \"pseudopotentials\": pseudopotentials, \n \"kpts\": (3, 3, 3),\n \"calculation\": \"scf\",\n \"smearing\": 0.02,\n },\n executable_str=\"mpirun -np 1 pw.x -in input.pwi > output.pwo\",\n execute_job=True,\n )\n energy_lst.append(job_strain.output.energy)\n volume_lst.append(job_strain.output.volume)\n \n return {\"volume\": volume_lst, \"energy\": energy_lst}","metadata":{"trusted":true},"execution_count":9,"outputs":[]},{"cell_type":"markdown","source":"# Setup","metadata":{}},{"cell_type":"code","source":"from pyiron_base import Project","metadata":{"trusted":true},"execution_count":10,"outputs":[]},{"cell_type":"code","source":"pr = Project(\"test\")\npr.remove_jobs(recursive=True, silently=True)","metadata":{"trusted":true},"execution_count":11,"outputs":[{"output_type":"display_data","data":{"text/plain":"0it [00:00, ?it/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"ad61406143494ae5a2d4a01b0cb3750d"}},"metadata":{}}]},{"cell_type":"markdown","source":"# Workflow","metadata":{}},{"cell_type":"code","source":"job_workflow = pr.wrap_python_function(workflow)\njob_workflow.input.project = pr\njob_workflow.input.structure = bulk('Al', a=4.05, cubic=True)\njob_workflow.input.pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}\njob_workflow.run()","metadata":{"trusted":true},"execution_count":12,"outputs":[{"name":"stdout","text":"The job workflowdbcdde11bde789bfe23b268a60c426c2 was saved and received the ID: 1\nThe job job_qe_minimize was saved and received the ID: 2\nThe job generate_structuresffd5c51457c48a1cff1923a2d98eb48c was saved and received the ID: 3\nThe job job_strain_0 was saved and received the ID: 4\nThe job job_strain_1 was saved and received the ID: 5\nThe job job_strain_2 was saved and received the ID: 6\nThe job job_strain_3 was saved and received the ID: 7\nThe job job_strain_4 was saved and received the ID: 8\n","output_type":"stream"}]},{"cell_type":"markdown","source":"# Result","metadata":{}},{"cell_type":"code","source":"plot_energy_volume_curve(\n volume_lst=job_workflow.output.result[\"volume\"], \n energy_lst=job_workflow.output.result[\"energy\"]\n)","metadata":{"trusted":true},"execution_count":13,"outputs":[{"output_type":"display_data","data":{"text/plain":"
    ","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABb8ElEQVR4nO3deVxVdcLH8c9lF5SLyiaCoLkA7ksqZmnlmktamW2YVk7NjC1WVva0OG3a3pRt05S222hatlGa2uSCO64IuODC5soiyHrP8wfCRCIqwj1c+L5fr/t6Hi7nXL73xFy+/n7n/I7FMAwDEREREamUk9kBREREROoylSURERGRKqgsiYiIiFRBZUlERESkCipLIiIiIlVQWRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyZ5Pnnn6dfv354enri4+NzXvsYhsGMGTMICgqiUaNGDBw4kB07dpR/Pzk5GYvFUulj/vz5Z7xeQUEB3bp1w2KxEBcXd0H53333Xbp06YK3tzfe3t5ERUXx008/XdBriIiIOAKVJZMUFhYybtw4/vrXv573Pi+99BKvvfYas2fPZv369QQGBjJ48GBycnIACAkJIS0trcLjH//4B15eXgwfPvyM13vkkUcICgqqVv7g4GBmzZrFhg0b2LBhA1dddRXXXntthfImIiJSLxhiqjlz5hhWq/Wc29lsNiMwMNCYNWtW+XP5+fmG1Wo13nvvvbPu161bN+OOO+444/kff/zRCA8PN3bs2GEAxubNmyt8f8eOHcbw4cMNLy8vw9/f37jtttuMI0eOVJmxadOmxr///e9zvhcRERFHopElB7Fv3z7S09MZMmRI+XPu7u4MGDCA1atXV7rPxo0biYuL484776zwfEZGBpMnT+bTTz/F09PzjP3S0tIYMGAA3bp1Y8OGDcTExJCRkcGNN95Y6c8pKSlh3rx55ObmEhUVdRHvUkREpO5xMTuAnJ/09HQAAgICKjwfEBDA/v37K93nww8/JCIign79+pU/ZxgGEydO5J577qFXr14kJyefsd+7775Ljx49eOGFF8qf++ijjwgJCSExMZH27dsDsG3bNqKiosjPz6dx48YsWrSIyMjIi32rIiIidYpGlmrQjBkzznqCddljw4YNF/UzLBZLha8NwzjjOYBTp07xxRdfnDGq9NZbb5Gd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JCIiIlIFlSUHlpKSwm233Ubz5s3x9PSkW7dubNy4sfz7hmEwY8YMgoKCaNSoEQMHDmTHjh0mJq5dVR2PoqIiHn30UTp37oyXlxdBQUFMmDCB1NRUk1PXrnP9jvzR3XffjcVi4Y033rBvSDs6n+MRHx/P6NGjsVqtNGnShL59+3LgwAGTEteucx2PkydPMmXKFIKDg2nUqBERERG8++67JiauPWFhYVgsljMef//734GG93la1fFoiJ+nKksO6sSJE1x22WW4urry008/sXPnTl599VV8fHzKt3nppZd47bXXmD17NuvXrycwMJDBgweX356lPjnX8cjLy2PTpk08+eSTbNq0iYULF5KYmMjo0aPNDV6Lzud3pMw333zD2rVrCQoKsn9QOzmf47Fnzx769+9PeHg4K1asYMuWLTz55JN4eHiYF7yWnM/xmDp1KjExMXz22WfEx8czdepU7r33Xr799lvzgteS9evXk5aWVv5YsmQJAOPGjQMa1ucpVH08GuLnKYY4pEcffdTo37//Wb9vs9mMwMBAY9asWeXP5efnG1ar1XjvvffsEdGuznU8KrNu3ToDMPbv319Lqcx1vsfk0KFDRsuWLY3t27cboaGhxuuvv1774UxwPsdj/Pjxxm233WanROY6n+PRsWNH45lnnqnwXI8ePYwnnniiNqPVCffff79xySWXGDabrcF9nlbmj8ejMvX981QjSw5q8eLF9OrVi3HjxuHv70/37t354IMPyr+/b98+0tPTy288DKVrYwwYMIDVq1ebEblWnet4VCYrKwuLxVLpSEt9cD7HxGazER0dzbRp0+jYsaNJSe3jXMfDZrPxww8/0L59e4YOHYq/vz99+vThm2++MS90LTqf34/+/fuzePFiUlJSMAyD5cuXk5iYyNChQ01KbR+FhYV89tln3HHHHVgslgb3efpnfz4elanvn6caWXJQ7u7uhru7uzF9+nRj06ZNxnvvvWd4eHgYH3/8sWEYhrFq1SoDMFJSUirsN3nyZGPIkCFmRK5V5zoef3bq1CmjZ8+exq233mrnpPZzPsfkhRdeMAYPHlz+r8X6PLJ0ruORlpZmAIanp6fx2muvGZs3bzZmzpxpWCwWY8WKFSanr3nn8/tRUFBgTJgwwQAMFxcXw83Nzfjkk09MTG0fX331leHs7Fz++dnQPk//7M/H488awuepypKDcnV1NaKioio8d++99xp9+/Y1DON//+NOTU2tsM1dd91lDB061G457eVcx+OPCgsLjWuvvdbo3r27kZWVZa+IdneuY7JhwwYjICCgwgdgfS5L5zoeKSkpBmDcfPPNFbYZNWqUcdNNN9ktp72cz/9mXn75ZaN9+/bG4sWLjS1bthhvvfWW0bhxY2PJkiX2jmtXQ4YMMUaOHFn+dUP7PP2zPx+PP2oon6eahnNQLVq0IDIyssJzERER5VftBAYGApCenl5hm8OHDxMQEGCfkHZ0ruNRpqioiBtvvJF9+/axZMmSenHH7LM51zH5/fffOXz4MK1atcLFxQUXFxf279/PQw89RFhYmAmJa9e5joevry8uLi7n9XtUH5zreJw6dYrHH3+c1157jVGjRtGlSxemTJnC+PHjeeWVV8yIbBf79+9n6dKl3HXXXeXPNbTP0z+q7HiUaUifpypLDuqyyy4jISGhwnOJiYmEhoYC0Lp1awIDA8uvYIDSeefffvuNfv362TWrPZzreMD//oedlJTE0qVLad68ub1j2tW5jkl0dDRbt24lLi6u/BEUFMS0adP4+eefzYhcq851PNzc3Lj00kvP+XtUX5zreBQVFVFUVISTU8U/E87OzthsNrvltLc5c+bg7+/PiBEjyp9raJ+nf1TZ8YCG93mqaTgHtW7dOsPFxcV4/vnnjaSkJOPzzz83PD09jc8++6x8m1mzZhlWq9VYuHChsW3bNuPmm282WrRoYWRnZ5uYvHac63gUFRUZo0ePNoKDg424uDgjLS2t/FFQUGBy+tpxPr8jf1afp+HO53gsXLjQcHV1Nf71r38ZSUlJxltvvWU4Ozsbv//+u4nJa8f5HI8BAwYYHTt2NJYvX27s3bvXmDNnjuHh4WG88847JiavPSUlJUarVq2MRx999IzvNaTP0zJnOx4N8fNUZcmBfffdd0anTp0Md3d3Izw83PjXv/5V4fs2m814+umnjcDAQMPd3d244oorjG3btpmUtvZVdTz27dtnAJU+li9fbl7oWnau35E/q89lyTDO73h8+OGHRtu2bQ0PDw+ja9euxjfffGNCUvs41/FIS0szJk6caAQFBRkeHh5Ghw4djFdfffWsl487up9//tkAjISEhDO+19A+Tw3j7MejIX6eWgzDMMwY0RIRERFxBDpnSURERKQKKksiIiIiVVBZEhEREamCypKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJRBq0sLAw3njjDbNjiEgdprIkIg5r1KhRDBo0qNLvrVmzBovFwqZNm+ycSkTqG5UlEXFYd955J8uWLWP//v1nfO+jjz6iW7du9OjRw4RkIlKfqCyJiMMaOXIk/v7+zJ07t8LzeXl5fPXVV9x55518/fXXdOzYEXd3d8LCwnj11VfP+nrJyclYLBbi4uLKn8vMzMRisbBixQoAVqxYgcVi4eeff6Z79+40atSIq666isOHD/PTTz8RERGBt7c3N998M3l5eeWvYxgGL730Em3atKFRo0Z07dqVBQsW1OThEJFaorIkIg7LxcWFCRMmMHfuXP54T/D58+dTWFhIVFQUN954IzfddBPbtm1jxowZPPnkk2eUq+qYMWMGs2fPZvXq1Rw8eJAbb7yRN954gy+++IIffviBJUuW8NZbb5Vv/8QTTzBnzhzeffddduzYwdSpU7ntttv47bffLjqLiNQui/HHTxgREQeza9cuIiIiWLZsGVdeeSUAAwYMoGXLllgsFo4cOcIvv/xSvv0jjzzCDz/8wI4dO4DSE7wfeOABHnjgAZKTk2ndujWbN2+mW7duQOnIUtOmTVm+fDkDBw5kxYoVXHnllSxdupSrr74agFmzZjF9+nT27NlDmzZtALjnnntITk4mJiaG3NxcfH19WbZsGVFRUeVZ7rrrLvLy8vjiiy/scahEpJo0siQiDi08PJx+/frx0UcfAbBnzx5+//137rjjDuLj47nssssqbH/ZZZeRlJRESUnJRf3cLl26lP//AQEBeHp6lhelsucOHz4MwM6dO8nPz2fw4ME0bty4/PHJJ5+wZ8+ei8ohIrXPxewAIiIX684772TKlCm8/fbbzJkzh9DQUK6++moMw8BisVTYtqrBdCcnpzO2KSoqqnRbV1fX8v/fYrFU+LrsOZvNBlD+f3/44QdatmxZYTt3d/dzvT0RMZlGlkTE4d144404OzvzxRdf8PHHHzNp0iQsFguRkZGsXLmywrarV6+mffv2ODs7n/E6fn5+AKSlpZU/98eTvasrMjISd3d3Dhw4QNu2bSs8QkJCLvr1RaR2aWRJRBxe48aNGT9+PI8//jhZWVlMnDgRgIceeohLL72UZ599lvHjx7NmzRpmz57NO++8U+nrNGrUiL59+zJr1izCwsI4evQoTzzxxEXna9KkCQ8//DBTp07FZrPRv39/srOzWb16NY0bN+b222+/6J8hIrVHI0siUi/ceeednDhxgkGDBtGqVSsAevTowX/+8x/mzZtHp06deOqpp3jmmWfKy1RlPvroI4qKiujVqxf3338/zz33XI3ke/bZZ3nqqaeYOXMmERERDB06lO+++47WrVvXyOuLSO3R1XAiIiIiVdDIkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsiYiIiFRBZUlERESkCipLIiIiIlVQWRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEq/D8WwIub/1rFmwAAAABJRU5ErkJggg=="},"metadata":{}}]},{"cell_type":"markdown","source":"# Summary","metadata":{}},{"cell_type":"code","source":"pr.job_table()","metadata":{"trusted":true},"execution_count":14,"outputs":[{"execution_count":14,"output_type":"execute_result","data":{"text/plain":" id status chemicalformula \\\n0 1 finished None \n1 2 finished None \n2 3 finished None \n3 4 finished None \n4 5 finished None \n5 6 finished None \n6 7 finished None \n7 8 finished None \n\n job \\\n0 workflowdbcdde11bde789bfe23b268a60c426c2 \n1 job_qe_minimize \n2 generate_structuresffd5c51457c48a1cff1923a2d98eb48c \n3 job_strain_0 \n4 job_strain_1 \n5 job_strain_2 \n6 job_strain_3 \n7 job_strain_4 \n\n subjob projectpath \\\n0 /workflowdbcdde11bde789bfe23b268a60c426c2 None \n1 /job_qe_minimize None \n2 /generate_structuresffd5c51457c48a1cff1923a2d98eb48c None \n3 /job_strain_0 None \n4 /job_strain_1 None \n5 /job_strain_2 None \n6 /job_strain_3 None \n7 /job_strain_4 None \n\n project timestart timestop \\\n0 /home/jovyan/test/ 2024-03-27 18:09:12.391144 NaT \n1 /home/jovyan/test/ 2024-03-27 18:09:12.461873 2024-03-27 18:09:58.263945 \n2 /home/jovyan/test/ 2024-03-27 18:09:58.313609 NaT \n3 /home/jovyan/test/ 2024-03-27 18:09:58.477003 2024-03-27 18:10:07.059195 \n4 /home/jovyan/test/ 2024-03-27 18:10:07.429814 2024-03-27 18:10:17.057758 \n5 /home/jovyan/test/ 2024-03-27 18:10:17.833435 2024-03-27 18:10:28.145417 \n6 /home/jovyan/test/ 2024-03-27 18:10:28.190237 2024-03-27 18:10:40.343077 \n7 /home/jovyan/test/ 2024-03-27 18:10:40.400240 2024-03-27 18:10:53.349634 \n\n totalcputime \\\n0 NaN \n1 45.0 \n2 NaN \n3 8.0 \n4 9.0 \n5 10.0 \n6 12.0 \n7 12.0 \n\n computer \\\n0 pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1 \n1 pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1 \n2 pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1 \n3 pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1 \n4 pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1 \n5 pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1 \n6 pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1 \n7 pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1 \n\n hamilton hamversion parentid masterid \n0 PythonFunctionContainerJob 0.4 None None \n1 ExecutableContainerJob 0.4 None None \n2 PythonFunctionContainerJob 0.4 None None \n3 ExecutableContainerJob 0.4 None None \n4 ExecutableContainerJob 0.4 None None \n5 ExecutableContainerJob 0.4 None None \n6 ExecutableContainerJob 0.4 None None \n7 ExecutableContainerJob 0.4 None None ","text/html":"
    \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    idstatuschemicalformulajobsubjobprojectpathprojecttimestarttimestoptotalcputimecomputerhamiltonhamversionparentidmasterid
    01finishedNoneworkflowdbcdde11bde789bfe23b268a60c426c2/workflowdbcdde11bde789bfe23b268a60c426c2None/home/jovyan/test/2024-03-27 18:09:12.391144NaTNaNpyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1PythonFunctionContainerJob0.4NoneNone
    12finishedNonejob_qe_minimize/job_qe_minimizeNone/home/jovyan/test/2024-03-27 18:09:12.4618732024-03-27 18:09:58.26394545.0pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1ExecutableContainerJob0.4NoneNone
    23finishedNonegenerate_structuresffd5c51457c48a1cff1923a2d98eb48c/generate_structuresffd5c51457c48a1cff1923a2d98eb48cNone/home/jovyan/test/2024-03-27 18:09:58.313609NaTNaNpyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1PythonFunctionContainerJob0.4NoneNone
    34finishedNonejob_strain_0/job_strain_0None/home/jovyan/test/2024-03-27 18:09:58.4770032024-03-27 18:10:07.0591958.0pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1ExecutableContainerJob0.4NoneNone
    45finishedNonejob_strain_1/job_strain_1None/home/jovyan/test/2024-03-27 18:10:07.4298142024-03-27 18:10:17.0577589.0pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1ExecutableContainerJob0.4NoneNone
    56finishedNonejob_strain_2/job_strain_2None/home/jovyan/test/2024-03-27 18:10:17.8334352024-03-27 18:10:28.14541710.0pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1ExecutableContainerJob0.4NoneNone
    67finishedNonejob_strain_3/job_strain_3None/home/jovyan/test/2024-03-27 18:10:28.1902372024-03-27 18:10:40.34307712.0pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1ExecutableContainerJob0.4NoneNone
    78finishedNonejob_strain_4/job_strain_4None/home/jovyan/test/2024-03-27 18:10:40.4002402024-03-27 18:10:53.34963412.0pyiron@jupyter-jan-2djanssen-2dqua-2dsso-5fpyiron-5fbase-2dtqm3r7gv#1ExecutableContainerJob0.4NoneNone
    \n
    "},"metadata":{}}]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]} +{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.11.0","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# pyiron \nThe integrated development environment (IDE) for computational materials science `pyiron` accelerates the rapid prototyping and up-scaling of simulation protocols. Internally, it consists of two primary components the `pyiron_atomistics` package, which provides the interfaces for atomistic simulations codes and atomistic simulation workflows and the `pyiron_base` package, which defines the job management and data storage interface. The latter is independent of the atomistic scale and addresses the general challenge of coupling simulation codes in reproducible workflows. Simulation codes can be integrated in the `pyiron_base` package by either using existing python bindings or alternatively by writing the input files, executing the simulation code and parsing the output files. The following explanations focus on the `pyiron_base` package as a workflow manager, which constructs simulation workflows by combining `job` objects like building blocks.\n\n## Installation / Setup\nThe `pyiron_base` workflow manager can be installed via the python package index or the conda package manager. While no additional configuration is required to use `pyiron_base` on a workstation, the connection to an high performance computing (HPC) cluster requires some additional configuration. The `.pyiron` configuration file in the users home directory is used to specify the resource directory, which contains the configuration of the queuing system. \n\n## Implementation of a new simulation code\nThe `pyiron_base` workflow manager provides two interfaces to implement new simulation codes or simulation workflows. For simulation codes which already provide a python interface the `wrap_python_function()` function is used to convert any python function into a pyiron job object. In analogy external executables can be wrapped using the `wrap_executable()`. Based on these two functions any executable can be wrapped as `Job` object. By naming the `Job` object the user can easily reload the same calculation at any time. Furthermore, `pyiron_base` internally uses the name to generate a directory for each `Job` object to simplify locating the input and output of a given calculation for debugging: ","metadata":{}},{"cell_type":"code","source":"import os\nimport matplotlib.pyplot as plt\nimport numpy as np\nfrom ase.io import write\nfrom adis_tools.parsers import parse_pw","metadata":{"trusted":true},"execution_count":1,"outputs":[]},{"cell_type":"code","source":"def write_input(input_dict, working_directory=\".\"):\n filename = os.path.join(working_directory, 'input.pwi')\n os.makedirs(working_directory, exist_ok=True)\n write(\n filename=filename, \n images=input_dict[\"structure\"], \n Crystal=True, \n kpts=input_dict[\"kpts\"], \n input_data={\n 'calculation': input_dict[\"calculation\"],\n 'occupations': 'smearing',\n 'degauss': input_dict[\"smearing\"],\n }, \n pseudopotentials=input_dict[\"pseudopotentials\"],\n tstress=True, \n tprnfor=True\n )","metadata":{"trusted":true},"execution_count":2,"outputs":[]},{"cell_type":"code","source":"def collect_output(working_directory=\".\"):\n output = parse_pw(os.path.join(working_directory, 'pwscf.xml'))\n return {\n \"structure\": output['ase_structure'],\n \"energy\": output[\"energy\"],\n \"volume\": output['ase_structure'].get_volume(),\n }","metadata":{"trusted":true},"execution_count":3,"outputs":[]},{"cell_type":"raw","source":"job_test = pr.wrap_executable(\n job_name=\"job_test\",\n write_input_funct=write_input,\n collect_output_funct=collect_output,\n input_dict={\n \"structure\": structure, \n \"pseudopotentials\": pseudopotentials, \n \"kpts\": (3, 3, 3),\n \"calculation\": \"scf\",\n \"smearing\": 0.02,\n },\n executable_str=\"mpirun -np 1 pw.x -in input.pwi > output.pwo\",\n execute_job=False,\n)","metadata":{}},{"cell_type":"markdown","source":"Finally, multiple simulation can be combined in a simulation protocol. In this case the optimization of an Aluminium lattice structure, the calculation of an energy volume curve and the plotting of the resulting curve. ","metadata":{}},{"cell_type":"code","source":"def generate_structures(structure, strain_lst): \n structure_lst = []\n for strain in strain_lst:\n structure_strain = structure.copy()\n structure_strain.set_cell(\n structure_strain.cell * strain**(1/3), \n scale_atoms=True\n )\n structure_lst.append(structure_strain)\n return structure_lst","metadata":{"trusted":true},"execution_count":4,"outputs":[]},{"cell_type":"code","source":"def workflow(project, structure, pseudopotentials): \n # Structure optimization \n job_qe_minimize = pr.wrap_executable(\n job_name=\"job_qe_minimize\",\n write_input_funct=write_input,\n collect_output_funct=collect_output,\n input_dict={\n \"structure\": structure, \n \"pseudopotentials\": pseudopotentials, \n \"kpts\": (3, 3, 3),\n \"calculation\": \"vc-relax\",\n \"smearing\": 0.02,\n },\n executable_str=\"mpirun -np 1 pw.x -in input.pwi > output.pwo\",\n execute_job=True,\n )\n\n # Generate Structures\n structure_lst = pr.wrap_python_function(generate_structures)(\n structure=job_qe_minimize.output.structure, \n strain_lst=np.linspace(0.9, 1.1, 5),\n )\n \n # Energy Volume Curve \n energy_lst, volume_lst = [], []\n for i, structure_strain in enumerate(structure_lst):\n job_strain = pr.wrap_executable(\n job_name=\"job_strain_\" + str(i),\n write_input_funct=write_input,\n collect_output_funct=collect_output,\n input_dict={\n \"structure\": structure_strain, \n \"pseudopotentials\": pseudopotentials, \n \"kpts\": (3, 3, 3),\n \"calculation\": \"scf\",\n \"smearing\": 0.02,\n },\n executable_str=\"mpirun -np 1 pw.x -in input.pwi > output.pwo\",\n execute_job=True,\n )\n energy_lst.append(job_strain.output.energy)\n volume_lst.append(job_strain.output.volume)\n \n return {\"volume\": volume_lst, \"energy\": energy_lst}","metadata":{"trusted":true},"execution_count":5,"outputs":[]},{"cell_type":"markdown","source":"As the quantum espresso calculations are the computationally expensive steps they are combined in a python function to be submitted to dedicated computing resources. In contrast the creation of the atomistic structure and the plotting of the energy volume curve are executed in the users process.\n\nThe remaining simulation protocol, can be summarized in a few lines. The required modules are imported, a `Project` object is created which represents a folder on the filesystem, the `wrap_python_function()` is used to convert the computationally expensive steps of the workflow into a single `Job` object and the resulting energy volume curve is plotted: ","metadata":{}},{"cell_type":"code","source":"from ase.build import bulk\nfrom pyiron_base import Project","metadata":{"trusted":true},"execution_count":6,"outputs":[]},{"cell_type":"code","source":"pr = Project(\"test\")\njob_workflow = pr.wrap_python_function(workflow)\njob_workflow.input.project = pr\njob_workflow.input.structure = bulk('Al', a=4.05, cubic=True)\njob_workflow.input.pseudopotentials = {\"Al\": \"Al.pbe-n-kjpaw_psl.1.0.0.UPF\"}\njob_workflow.run()","metadata":{"trusted":true},"execution_count":7,"outputs":[{"name":"stdout","text":"The job workflow895ba469e3d888839622dab8177e3746 was saved and received the ID: 1\nThe job job_qe_minimize was saved and received the ID: 2\nThe job generate_structures81144f1592dde5715ec257eb7f425177 was saved and received the ID: 3\nThe job job_strain_0 was saved and received the ID: 4\nThe job job_strain_1 was saved and received the ID: 5\nThe job job_strain_2 was saved and received the ID: 6\nThe job job_strain_3 was saved and received the ID: 7\nThe job job_strain_4 was saved and received the ID: 8\n","output_type":"stream"}]},{"cell_type":"code","source":"def plot_energy_volume_curve(volume_lst, energy_lst):\n plt.plot(volume_lst, energy_lst)\n plt.xlabel(\"Volume\")\n plt.ylabel(\"Energy\")\n plt.savefig(\"evcurve.png\")","metadata":{"trusted":true},"execution_count":8,"outputs":[]},{"cell_type":"markdown","source":"This concludes the first version of the simulation workflow, in the following the submission to HPC resources, the different options for data storage and the publication of the workflow are briefly discussed.","metadata":{}},{"cell_type":"code","source":"plot_energy_volume_curve(\n volume_lst=job_workflow.output.result[\"volume\"], \n energy_lst=job_workflow.output.result[\"energy\"]\n)","metadata":{"trusted":true},"execution_count":9,"outputs":[{"output_type":"display_data","data":{"text/plain":"
    ","image/png":"iVBORw0KGgoAAAANSUhEUgAAAksAAAHACAYAAACyIiyEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABb8ElEQVR4nO3deVxVdcLH8c9lF5SLyiaCoLkA7ksqZmnlmktamW2YVk7NjC1WVva0OG3a3pRt05S222hatlGa2uSCO64IuODC5soiyHrP8wfCRCIqwj1c+L5fr/t6Hi7nXL73xFy+/n7n/I7FMAwDEREREamUk9kBREREROoylSURERGRKqgsiYiIiFRBZUlERESkCipLIiIiIlVQWRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEqqCyZ5Pnnn6dfv354enri4+NzXvsYhsGMGTMICgqiUaNGDBw4kB07dpR/Pzk5GYvFUulj/vz5Z7xeQUEB3bp1w2KxEBcXd0H53333Xbp06YK3tzfe3t5ERUXx008/XdBriIiIOAKVJZMUFhYybtw4/vrXv573Pi+99BKvvfYas2fPZv369QQGBjJ48GBycnIACAkJIS0trcLjH//4B15eXgwfPvyM13vkkUcICgqqVv7g4GBmzZrFhg0b2LBhA1dddRXXXntthfImIiJSLxhiqjlz5hhWq/Wc29lsNiMwMNCYNWtW+XP5+fmG1Wo13nvvvbPu161bN+OOO+444/kff/zRCA8PN3bs2GEAxubNmyt8f8eOHcbw4cMNLy8vw9/f37jtttuMI0eOVJmxadOmxr///e9zvhcRERFHopElB7Fv3z7S09MZMmRI+XPu7u4MGDCA1atXV7rPxo0biYuL484776zwfEZGBpMnT+bTTz/F09PzjP3S0tIYMGAA3bp1Y8OGDcTExJCRkcGNN95Y6c8pKSlh3rx55ObmEhUVdRHvUkREpO5xMTuAnJ/09HQAAgICKjwfEBDA/v37K93nww8/JCIign79+pU/ZxgGEydO5J577qFXr14kJyefsd+7775Ljx49eOGFF8qf++ijjwgJCSExMZH27dsDsG3bNqKiosjPz6dx48YsWrSIyMjIi32rIiIidYpGlmrQjBkzznqCddljw4YNF/UzLBZLha8NwzjjOYBTp07xxRdfnDGq9NZbb5Gd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JCIiIlIFlSUHlpKSwm233Ubz5s3x9PSkW7dubNy4sfz7hmEwY8YMgoKCaNSoEQMHDmTHjh0mJq5dVR2PoqIiHn30UTp37oyXlxdBQUFMmDCB1NRUk1PXrnP9jvzR3XffjcVi4Y033rBvSDs6n+MRHx/P6NGjsVqtNGnShL59+3LgwAGTEteucx2PkydPMmXKFIKDg2nUqBERERG8++67JiauPWFhYVgsljMef//734GG93la1fFoiJ+nKksO6sSJE1x22WW4urry008/sXPnTl599VV8fHzKt3nppZd47bXXmD17NuvXrycwMJDBgweX356lPjnX8cjLy2PTpk08+eSTbNq0iYULF5KYmMjo0aPNDV6Lzud3pMw333zD2rVrCQoKsn9QOzmf47Fnzx769+9PeHg4K1asYMuWLTz55JN4eHiYF7yWnM/xmDp1KjExMXz22WfEx8czdepU7r33Xr799lvzgteS9evXk5aWVv5YsmQJAOPGjQMa1ucpVH08GuLnKYY4pEcffdTo37//Wb9vs9mMwMBAY9asWeXP5efnG1ar1XjvvffsEdGuznU8KrNu3ToDMPbv319Lqcx1vsfk0KFDRsuWLY3t27cboaGhxuuvv1774UxwPsdj/Pjxxm233WanROY6n+PRsWNH45lnnqnwXI8ePYwnnniiNqPVCffff79xySWXGDabrcF9nlbmj8ejMvX981QjSw5q8eLF9OrVi3HjxuHv70/37t354IMPyr+/b98+0tPTy288DKVrYwwYMIDVq1ebEblWnet4VCYrKwuLxVLpSEt9cD7HxGazER0dzbRp0+jYsaNJSe3jXMfDZrPxww8/0L59e4YOHYq/vz99+vThm2++MS90LTqf34/+/fuzePFiUlJSMAyD5cuXk5iYyNChQ01KbR+FhYV89tln3HHHHVgslgb3efpnfz4elanvn6caWXJQ7u7uhru7uzF9+nRj06ZNxnvvvWd4eHgYH3/8sWEYhrFq1SoDMFJSUirsN3nyZGPIkCFmRK5V5zoef3bq1CmjZ8+exq233mrnpPZzPsfkhRdeMAYPHlz+r8X6PLJ0ruORlpZmAIanp6fx2muvGZs3bzZmzpxpWCwWY8WKFSanr3nn8/tRUFBgTJgwwQAMFxcXw83Nzfjkk09MTG0fX331leHs7Fz++dnQPk//7M/H488awuepypKDcnV1NaKioio8d++99xp9+/Y1DON//+NOTU2tsM1dd91lDB061G457eVcx+OPCgsLjWuvvdbo3r27kZWVZa+IdneuY7JhwwYjICCgwgdgfS5L5zoeKSkpBmDcfPPNFbYZNWqUcdNNN9ktp72cz/9mXn75ZaN9+/bG4sWLjS1bthhvvfWW0bhxY2PJkiX2jmtXQ4YMMUaOHFn+dUP7PP2zPx+PP2oon6eahnNQLVq0IDIyssJzERER5VftBAYGApCenl5hm8OHDxMQEGCfkHZ0ruNRpqioiBtvvJF9+/axZMmSenHH7LM51zH5/fffOXz4MK1atcLFxQUXFxf279/PQw89RFhYmAmJa9e5joevry8uLi7n9XtUH5zreJw6dYrHH3+c1157jVGjRtGlSxemTJnC+PHjeeWVV8yIbBf79+9n6dKl3HXXXeXPNbTP0z+q7HiUaUifpypLDuqyyy4jISGhwnOJiYmEhoYC0Lp1awIDA8uvYIDSeefffvuNfv362TWrPZzreMD//oedlJTE0qVLad68ub1j2tW5jkl0dDRbt24lLi6u/BEUFMS0adP4+eefzYhcq851PNzc3Lj00kvP+XtUX5zreBQVFVFUVISTU8U/E87OzthsNrvltLc5c+bg7+/PiBEjyp9raJ+nf1TZ8YCG93mqaTgHtW7dOsPFxcV4/vnnjaSkJOPzzz83PD09jc8++6x8m1mzZhlWq9VYuHChsW3bNuPmm282WrRoYWRnZ5uYvHac63gUFRUZo0ePNoKDg424uDgjLS2t/FFQUGBy+tpxPr8jf1afp+HO53gsXLjQcHV1Nf71r38ZSUlJxltvvWU4Ozsbv//+u4nJa8f5HI8BAwYYHTt2NJYvX27s3bvXmDNnjuHh4WG88847JiavPSUlJUarVq2MRx999IzvNaTP0zJnOx4N8fNUZcmBfffdd0anTp0Md3d3Izw83PjXv/5V4fs2m814+umnjcDAQMPd3d244oorjG3btpmUtvZVdTz27dtnAJU+li9fbl7oWnau35E/q89lyTDO73h8+OGHRtu2bQ0PDw+ja9euxjfffGNCUvs41/FIS0szJk6caAQFBRkeHh5Ghw4djFdfffWsl487up9//tkAjISEhDO+19A+Tw3j7MejIX6eWgzDMMwY0RIRERFxBDpnSURERKQKKksiIiIiVVBZEhEREamCypKIiIhIFVSWRERERKqgsiQiIiJSBZUlERERkSqoLImIiIhUQWVJRBq0sLAw3njjDbNjiEgdprIkIg5r1KhRDBo0qNLvrVmzBovFwqZNm+ycSkTqG5UlEXFYd955J8uWLWP//v1nfO+jjz6iW7du9OjRw4RkIlKfqCyJiMMaOXIk/v7+zJ07t8LzeXl5fPXVV9x55518/fXXdOzYEXd3d8LCwnj11VfP+nrJyclYLBbi4uLKn8vMzMRisbBixQoAVqxYgcVi4eeff6Z79+40atSIq666isOHD/PTTz8RERGBt7c3N998M3l5eeWvYxgGL730Em3atKFRo0Z07dqVBQsW1OThEJFaorIkIg7LxcWFCRMmMHfuXP54T/D58+dTWFhIVFQUN954IzfddBPbtm1jxowZPPnkk2eUq+qYMWMGs2fPZvXq1Rw8eJAbb7yRN954gy+++IIffviBJUuW8NZbb5Vv/8QTTzBnzhzeffddduzYwdSpU7ntttv47bffLjqLiNQui/HHTxgREQeza9cuIiIiWLZsGVdeeSUAAwYMoGXLllgsFo4cOcIvv/xSvv0jjzzCDz/8wI4dO4DSE7wfeOABHnjgAZKTk2ndujWbN2+mW7duQOnIUtOmTVm+fDkDBw5kxYoVXHnllSxdupSrr74agFmzZjF9+nT27NlDmzZtALjnnntITk4mJiaG3NxcfH19WbZsGVFRUeVZ7rrrLvLy8vjiiy/scahEpJo0siQiDi08PJx+/frx0UcfAbBnzx5+//137rjjDuLj47nssssqbH/ZZZeRlJRESUnJRf3cLl26lP//AQEBeHp6lhelsucOHz4MwM6dO8nPz2fw4ME0bty4/PHJJ5+wZ8+ei8ohIrXPxewAIiIX684772TKlCm8/fbbzJkzh9DQUK6++moMw8BisVTYtqrBdCcnpzO2KSoqqnRbV1fX8v/fYrFU+LrsOZvNBlD+f3/44QdatmxZYTt3d/dzvT0RMZlGlkTE4d144404OzvzxRdf8PHHHzNp0iQsFguRkZGsXLmywrarV6+mffv2ODs7n/E6fn5+AKSlpZU/98eTvasrMjISd3d3Dhw4QNu2bSs8QkJCLvr1RaR2aWRJRBxe48aNGT9+PI8//jhZWVlMnDgRgIceeohLL72UZ599lvHjx7NmzRpmz57NO++8U+nrNGrUiL59+zJr1izCwsI4evQoTzzxxEXna9KkCQ8//DBTp07FZrPRv39/srOzWb16NY0bN+b222+/6J8hIrVHI0siUi/ceeednDhxgkGDBtGqVSsAevTowX/+8x/mzZtHp06deOqpp3jmmWfKy1RlPvroI4qKiujVqxf3338/zz33XI3ke/bZZ3nqqaeYOXMmERERDB06lO+++47WrVvXyOuLSO3R1XAiIiIiVdDIkoiIiEgVVJZEREREqqCyJCIiIlIFlSURERGRKqgsiYiIiFRBZUlERESkCipLIiIiIlVQWRIRERGpgsqSiIiISBVUlkRERESqoLIkIiIiUgWVJREREZEq/D8WwIub/1rFmwAAAABJRU5ErkJggg=="},"metadata":{}}]},{"cell_type":"markdown","source":"## Submission to an HPC / Check pointing / Error handling\nWhile the local installation of the `pyiron_base` workflow manager requires no additional configuration, the connection to an HPC system is more evolved. The existing examples provided for specific HPC systems can be converted to jinja2 templates, by defining variables with double curly brackets. A minimalist template could be: \n```\n#!/bin/bash\n#SBATCH --job-name={{job_name}}\n#SBATCH --chdir={{working_directory}}\n#SBATCH --cpus-per-task={{cores}}\n\n{{command}}\n```\nHere the `job_name`, the `working_directory` and the number of compute `cores` can be specified as parameters. In the `pyiron_base` workflow manager such a submission script can then be selected based on its name as parameter of the `server` object:\n```python\njob_workflow.server.queue = \"my_queue\"\njob_workflow.server.cores = 64\n```\nThese lines are inserted before calling the `run()` function. The rest of the simulation protocol remains the same.\n\nWhen simulation protocols are up-scaling and iterated over a large number of parameters, certain parameter combinations might lead to poor conversion or even cause simulation code crashes. In the `pyiron_base` workflow manager these calculation are marked as `aborted`. This gives the user to inspect the calculation and in case the crash was not related to the parameter combination, individual jobs can be removed with the `remove_job()` function. Afterwards, the simulation protocol can be executed again. In this case the `pyiron_base` workflow manager recognizes the already completed calculation and only re-evaluates the removed broken calculation. \n\n## Data Storage / Data Sharing\nIn the `pyiron_base` workflow manager the input of the calculation as well as the output are stored in the hierachical data format (HDF). In addition, `pyiron_base` can use a Structured Query Language (SQL) database, which acts as an index of all the `Job` objects and their HDF5 files. This file-based approach allows the user easily to browse through the results and at the same time the compressed storage in HDF5 and the internal hierarchy of the data format, enable the efficient storage of large tensors, like atomistic trajectories. \n\n## Publication of the workflow\nThe `pyiron_base` workflow manager provides a publication template to publish simulation workflows on Github. This template enables both the publication of the workflow as well as the publication of the results generated with a given workflow. For reproduciblity this publication template is based on sharing a conda environment file `environment.yml` in combination with the Jupyter notebook containing the simulation protocol and the archived `Job` objects. The Jupyter notebook is then rendered as static website with links to enable interactive execution using Jupyterbook and the mybinder service. As the `pyiron_base` workflow manager reloads existing calculation from the archive, a user of the interactive mybinder environment does not have to recompute the computationally expensive steps and still has the opportunity to interact with the provided workflow and data. ","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]} \ No newline at end of file