{ "cells": [ { "cell_type": "markdown", "id": "9fd2308b", "metadata": {}, "source": [ "# Relaxation\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "af8d6f96", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from workgraph_collections.ase.espresso.relax import RelaxWorkgraph\n", "from ase.build import bulk\n", "from ase import Atoms\n", "from aiida import load_profile\n", "from aiida_pythonjob.config import config\n", "\n", "load_profile()\n", "\n", "config[\"allow_pickle\"] = True\n", "\n", "# create input structure\n", "atoms = bulk(\"Si\")\n", "atoms.set_cell(atoms.cell * 1.05, scale_atoms=True)\n", "\n", "metadata = {\n", " \"options\": {\n", " 'prepend_text' : \"\"\"eval \"$(conda shell.posix hook)\"\n", " conda activate aiida\n", " export OMP_NUM_THREADS=1\n", " \"\"\",\n", " }\n", "}\n", "pseudopotentials = {\"Si\": \"Si.pbe-nl-rrkjus_psl.1.0.0.UPF\"}\n", "pseudo_dir = \"/home/xing/data/ase/espresso_pseudo\"\n", "# pseudo_dir = \"/home/wang_x3/datas/pseudos/psl\"\n", "input_data = {\n", " \"control\": {\"calculation\": \"scf\"},\n", " \"system\": {\"ecutwfc\": 30, \"ecutrho\": 240,\n", " \"occupations\": \"smearing\",\n", " \"degauss\": 0.01,\n", " \"smearing\": \"cold\",},\n", "}\n", "# ------------------------- Set the inputs -------------------------\n", "wg = RelaxWorkgraph.build_graph(\n", " atoms=atoms,\n", " computer=\"localhost\",\n", " command=\"mpirun -np 2 pw.x\",\n", " pseudopotentials=pseudopotentials,\n", " pseudo_dir=pseudo_dir,\n", " input_data=input_data,\n", " kpts=[4, 4, 4],\n", " metadata=metadata,\n", ")\n", "wg.to_html()" ] }, { "cell_type": "markdown", "id": "2c06ac3a", "metadata": {}, "source": [ "## Run the workflow\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "defb31bb", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "09/04/2025 07:30:18 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180109|WorkGraphEngine|continue_workgraph]: tasks ready to run: pw_calculator\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180109|WorkGraphEngine|continue_workgraph]: tasks ready to run: pw_calculator\n", "09/04/2025 07:30:19 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180109|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 180113\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180109|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 180113\n", "09/04/2025 07:30:41 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180109|WorkGraphEngine|update_task_state]: Task: pw_calculator, type: PYTHONJOB, finished.\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180109|WorkGraphEngine|update_task_state]: Task: pw_calculator, type: PYTHONJOB, finished.\n", "09/04/2025 07:30:42 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180109|WorkGraphEngine|continue_workgraph]: tasks ready to run: inspect_relax\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180109|WorkGraphEngine|continue_workgraph]: tasks ready to run: inspect_relax\n", "INFO:aiida_pythonjob.decorator:Executing process function, current stack status: 47 frames of 3000\n", "09/04/2025 07:30:43 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180109|WorkGraphEngine|update_task_state]: Task: inspect_relax, type: PYFUNCTION, finished.\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180109|WorkGraphEngine|update_task_state]: Task: inspect_relax, type: PYFUNCTION, finished.\n", "09/04/2025 07:30:43 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180109|WorkGraphEngine|continue_workgraph]: tasks ready to run: RelaxWorkgraph\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180109|WorkGraphEngine|continue_workgraph]: tasks ready to run: RelaxWorkgraph\n", "09/04/2025 07:30:46 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180109|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 180139\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180109|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 180139\n", "09/04/2025 07:30:50 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180139|WorkGraphEngine|continue_workgraph]: tasks ready to run: pw_calculator\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180139|WorkGraphEngine|continue_workgraph]: tasks ready to run: pw_calculator\n", "09/04/2025 07:30:50 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180139|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 180143\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180139|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 180143\n", "09/04/2025 07:31:02 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180139|WorkGraphEngine|update_task_state]: Task: pw_calculator, type: PYTHONJOB, finished.\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180139|WorkGraphEngine|update_task_state]: Task: pw_calculator, type: PYTHONJOB, finished.\n", "09/04/2025 07:31:04 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180139|WorkGraphEngine|continue_workgraph]: tasks ready to run: inspect_relax\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180139|WorkGraphEngine|continue_workgraph]: tasks ready to run: inspect_relax\n", "INFO:aiida_pythonjob.decorator:Executing process function, current stack status: 47 frames of 3000\n", "09/04/2025 07:31:05 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180139|WorkGraphEngine|update_task_state]: Task: inspect_relax, type: PYFUNCTION, finished.\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180139|WorkGraphEngine|update_task_state]: Task: inspect_relax, type: PYFUNCTION, finished.\n", "09/04/2025 07:31:05 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180139|WorkGraphEngine|continue_workgraph]: tasks ready to run: RelaxWorkgraph\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180139|WorkGraphEngine|continue_workgraph]: tasks ready to run: RelaxWorkgraph\n", "09/04/2025 07:31:08 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180139|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 180168\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180139|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 180168\n", "09/04/2025 07:31:10 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180168|WorkGraphEngine|continue_workgraph]: tasks ready to run: pw_calculator\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180168|WorkGraphEngine|continue_workgraph]: tasks ready to run: pw_calculator\n", "09/04/2025 07:31:11 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180168|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 180172\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180168|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 180172\n", "09/04/2025 07:31:20 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180168|WorkGraphEngine|update_task_state]: Task: pw_calculator, type: PYTHONJOB, finished.\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180168|WorkGraphEngine|update_task_state]: Task: pw_calculator, type: PYTHONJOB, finished.\n", "09/04/2025 07:31:21 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180168|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180168|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", "09/04/2025 07:31:21 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180168|WorkGraphEngine|finalize]: Finalize workgraph.\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180168|WorkGraphEngine|finalize]: Finalize workgraph.\n", "09/04/2025 07:31:22 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180139|WorkGraphEngine|update_task_state]: Task: RelaxWorkgraph, type: GRAPH, finished.\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180139|WorkGraphEngine|update_task_state]: Task: RelaxWorkgraph, type: GRAPH, finished.\n", "09/04/2025 07:31:24 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180139|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180139|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", "09/04/2025 07:31:24 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180139|WorkGraphEngine|finalize]: Finalize workgraph.\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180139|WorkGraphEngine|finalize]: Finalize workgraph.\n", "09/04/2025 07:31:24 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180109|WorkGraphEngine|update_task_state]: Task: RelaxWorkgraph, type: GRAPH, finished.\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180109|WorkGraphEngine|update_task_state]: Task: RelaxWorkgraph, type: GRAPH, finished.\n", "09/04/2025 07:31:26 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180109|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180109|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n", "09/04/2025 07:31:26 AM <593221> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [180109|WorkGraphEngine|finalize]: Finalize workgraph.\n", "REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[180109|WorkGraphEngine|finalize]: Finalize workgraph.\n" ] } ], "source": [ "wg.run()" ] }, { "cell_type": "markdown", "id": "f5ab3ef8", "metadata": {}, "source": [ "## Print the outputs" ] }, { "cell_type": "code", "execution_count": 12, "id": "c2dc5c49", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Relaxed structure:\n", "Atoms(symbols='Si2', pbc=True, cell=[[0.0, 2.7391864002289, 2.7391864002289], [2.7391864002289, 0.0, 2.7391864002289], [2.7391864002289, 2.7391864002289, 0.0]])\n" ] } ], "source": [ "print(\"Relaxed structure:\")\n", "print(wg.outputs.atoms.value.value)\n" ] } ], "metadata": { "kernelspec": { "display_name": "aiida", "language": "python", "name": "python3" }, "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": 4, "nbformat_minor": 5 }