{
"cells": [
{
"cell_type": "markdown",
"id": "22d177dc-6cfb-4de2-9509-f1eb45e10cf2",
"metadata": {},
"source": [
"# Projected density of states (PDOS)\n",
"For the source code, see [pdos](https://workgraph-collections.readthedocs.io/en/latest/qe/module.html#workgraph_collections.ase.espresso.pdos.pdos_workgraph).\n",
"\n",
"## Example: Silicon\n",
"\n",
"### Prepare the inputs "
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "8ee799d2-0b5b-4609-957f-6b3f2cd451f0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from copy import deepcopy\n",
"from aiida import load_profile\n",
"from aiida.orm import Dict, KpointsData, StructureData, load_code, load_group\n",
"from ase.build import bulk\n",
"\n",
"from workgraph_collections.qe.pdos import PdosWorkGraph\n",
"\n",
"load_profile()\n",
"\n",
"atoms = bulk('Si')\n",
"structure_si = StructureData(ase=atoms)\n",
"\n",
"pw_code = load_code('pw-7.4@localhost')\n",
"dos_code = load_code('dos-7.4@localhost')\n",
"projwfc_code = load_code('projwfc-7.4@localhost')\n",
"paras = {\n",
" 'CONTROL': {\n",
" 'calculation': 'scf',\n",
" },\n",
" 'SYSTEM': {\n",
" 'ecutwfc': 30,\n",
" 'ecutrho': 240,\n",
" 'occupations': 'smearing',\n",
" 'smearing': 'gaussian',\n",
" 'degauss': 0.1,\n",
" },\n",
"}\n",
"nscf_paras = deepcopy(paras)\n",
"nscf_paras['CONTROL']['calculation'] = 'nscf'\n",
"nscf_paras['SYSTEM']['occupations'] = 'tetrahedra'\n",
"\n",
"kpoints = KpointsData()\n",
"kpoints.set_kpoints_mesh([3, 3, 3])\n",
"nscf_kpoints = KpointsData()\n",
"nscf_kpoints.set_kpoints_mesh([10, 10, 10])\n",
"#\n",
"metadata = {\n",
" 'options': {\n",
" 'resources': {\n",
" 'num_machines': 1,\n",
" 'num_mpiprocs_per_machine': 1,\n",
" },\n",
" }\n",
"}\n",
"\n",
"pdos_inputs = {\n",
" 'scf': {\n",
" 'pw': {\n",
" 'parameters': Dict(paras),\n",
" 'metadata': metadata,\n",
" },\n",
" 'kpoints': kpoints,\n",
" },\n",
" 'nscf': {\n",
" 'pw': {\n",
" 'parameters': Dict(nscf_paras),\n",
" 'metadata': metadata,\n",
" },\n",
" 'kpoints': kpoints,\n",
" },\n",
" 'dos': {\n",
" 'metadata': metadata,\n",
" },\n",
" 'projwfc': {\n",
" 'metadata': metadata,\n",
" },\n",
"}\n",
"\n",
"wg = PdosWorkGraph.build_graph(structure=structure_si,\n",
" pw_code=pw_code,\n",
" dos_code=dos_code,\n",
" projwfc_code=projwfc_code,\n",
" inputs=pdos_inputs,\n",
" pseudo_family='SSSP/1.3/PBEsol/efficiency',\n",
" run_scf=True,\n",
" )\n",
"wg.to_html()"
]
},
{
"cell_type": "markdown",
"id": "38c5209d",
"metadata": {},
"source": [
"### Run the WorkGraph"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "5d11d672",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"09/02/2025 01:37:54 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|continue_workgraph]: tasks ready to run: PwBaseWorkChain\n",
"09/02/2025 01:37:56 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 175282\n",
"09/02/2025 01:38:05 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175282|PwBaseWorkChain|run_process]: launching PwCalculation<175285> iteration #1\n",
"09/02/2025 01:38:13 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175282|PwBaseWorkChain|results]: work chain completed after 1 iterations\n",
"09/02/2025 01:38:13 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175282|PwBaseWorkChain|on_terminated]: remote folders will not be cleaned\n",
"09/02/2025 01:38:14 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|update_task_state]: Task: PwBaseWorkChain, type: WORKCHAIN, finished.\n",
"09/02/2025 01:38:23 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|continue_workgraph]: tasks ready to run: PwBaseWorkChain1\n",
"09/02/2025 01:38:26 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 175293\n",
"09/02/2025 01:38:34 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175293|PwBaseWorkChain|run_process]: launching PwCalculation<175296> iteration #1\n",
"09/02/2025 01:38:40 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175293|PwBaseWorkChain|results]: work chain completed after 1 iterations\n",
"09/02/2025 01:38:41 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175293|PwBaseWorkChain|on_terminated]: remote folders will not be cleaned\n",
"09/02/2025 01:38:42 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|update_task_state]: Task: PwBaseWorkChain1, type: WORKCHAIN, finished.\n",
"09/02/2025 01:38:50 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|continue_workgraph]: tasks ready to run: generate_dos_parameters,generate_projwfc_parameters\n",
"09/02/2025 01:38:52 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|update_task_state]: Task: generate_dos_parameters, type: CALCFUNCTION, finished.\n",
"09/02/2025 01:38:53 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|continue_workgraph]: tasks ready to run: DosCalculation,generate_projwfc_parameters\n",
"09/02/2025 01:38:56 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|update_task_state]: Task: generate_projwfc_parameters, type: CALCFUNCTION, finished.\n",
"09/02/2025 01:38:56 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|continue_workgraph]: tasks ready to run: ProjwfcCalculation\n",
"09/02/2025 01:38:59 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 175304, 175307\n",
"/home/xing/repos/aiidateam/aiida-core/src/aiida/plugins/entry_point.py:351: AiidaDeprecationWarning: The entry point `realhydrogen` is deprecated. Please replace it with `core.realhydrogen`. (this will be removed in v3)\n",
" warn_deprecation(f'The entry point `{name}` is deprecated. Please replace it with `core.{name}`.', version=3)\n",
"09/02/2025 01:39:16 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|update_task_state]: Task: ProjwfcCalculation, type: CALCJOB, finished.\n",
"09/02/2025 01:39:16 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|update_task_state]: Task: DosCalculation, type: CALCJOB, finished.\n",
"09/02/2025 01:39:25 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n",
"09/02/2025 01:39:26 PM <1340270> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [175279|WorkGraphEngine|finalize]: Finalize workgraph.\n"
]
}
],
"source": [
"wg.run()"
]
},
{
"cell_type": "markdown",
"id": "b72a1e8a",
"metadata": {},
"source": [
"Print the results"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "bd0ea563",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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/X7d4sWLezymd9xxR5BWHVhr167FiBEjEBERgXnz5mHXrl393n7Dhg0YP348IiIiMGXKFHzyySdBWmnwPP7445gzZw5iY2ORlpaGK6+8EgUFBf1+zfr163s8RyIiIoK04uD6/e9/3+NnHT9+fL9fEw7PG6D3668gCLjzzjt7vb3WnzfffPMNLr/8cmRlZUEQBHzwwQddPi+KIh566CFkZmYiMjISS5cuRWFh4YDf19vrllr19/hYrVbcf//9mDJlCqKjo5GVlYWbbroJZWVl/X5PX/59ah2DSR89+uijKC8vl//87Gc/6/f29957L/7v//4PGzZswObNm1FWVoarr746SKsNnmPHjsHhcOCvf/0r8vPz8dxzz+HFF1/Eb37zmwG/9tZbb+3ymD711FNBWHFgvf3227jvvvvw8MMPY9++fZg2bRqWL1+OqqqqXm+/bds2XH/99VizZg3279+PK6+8EldeeSUOHz4c5JUH1ubNm3HnnXdix44d+Pzzz2G1WrFs2TK0trb2+3VxcXFdniPFxcVBWnHwTZo0qcvP+u233/Z523B53gDA7t27uzwun3/+OQDg2muv7fNrtPy8aW1txbRp07B27dpeP//UU0/hj3/8I1588UXs3LkT0dHRWL58OSwWS5/f09vrlpr19/i0tbVh3759+N3vfod9+/bhvffeQ0FBAVasWDHg9/Xm32dYEMlrubm54nPPPTfo2zc0NIhGo1HcsGGD/LGjR4+KAMTt27cHYIXq8tRTT4l5eXn93mbRokXi3XffHZwFBdHcuXPFO++8U/673W4Xs7KyxMcff7zX269cuVK89NJLu3xs3rx54u233x7QdSqtqqpKBCBu3ry5z9usW7dOjI+PD96iFPTwww+L06ZNG/Ttw/V5I4qiePfdd4ujRo0SHQ5Hr58Pp+cNAPH999+X/+5wOMSMjAzx6aeflj/W0NAgms1m8c033+zz+3h73QoV3R+f3uzatUsEIBYXF/d5G2//fYYDZiZ99MQTTyA5ORkzZszA008/DZvN1udt9+7dC6vViqVLl8ofGz9+PIYPH47t27cHY7mKamxsRFJS0oC3e/3115GSkoLJkyfj17/+Ndra2oKwusDp7OzE3r17u/zedTodli5d2ufvffv27V1uDwDLly/X/POksbERAAZ8nrS0tCA3Nxc5OTm44oorkJ+fH4zlKaKwsBBZWVkYOXIkbrjhBpSUlPR523B93nR2duK1117DLbfcAkEQ+rxdOD1vPJ0+fRoVFRVdnhvx8fGYN29en88NX65bWtLY2AhBEJCQkNDv7bz59xkODEovIBT9/Oc/x8yZM5GUlIRt27bh17/+NcrLy/Hss8/2evuKigqYTKYeT8709HRUVFQEYcXKOXHiBP70pz/hmWee6fd2P/jBD5Cbm4usrCwcOnQI999/PwoKCvDee+8FaaX+V1NTA7vdjvT09C4fT09Px7Fjx3r9moqKil5vr+XnicPhwD333INzzjkHkydP7vN248aNw0svvYSpU6eisbERzzzzDBYuXIj8/HxkZ2cHccWBN2/ePKxfvx7jxo1DeXk5HnnkEZx33nk4fPgwYmNje9w+HJ83APDBBx+goaEBq1ev7vM24fS86U76/Xvz3PDluqUVFosF999/P66//nrExcX1eTtv/32GAwaTLg888ACefPLJfm9z9OhRjB8/Hvfdd5/8salTp8JkMuH222/H448/rtkjmLx5fCRnz57FxRdfjGuvvRa33nprv1972223yf8/ZcoUZGZm4sILL8TJkycxatSooS2eVO3OO+/E4cOHB9xztGDBAixYsED++8KFCzFhwgT89a9/xX//938HeplBdckll8j/P3XqVMybNw+5ubl45513sGbNGgVXpi7//Oc/cckllyArK6vP24TT84Z8Z7VasXLlSoiiiBdeeKHf2/LfZ08MJl1+8Ytf9PvuFgBGjhzZ68fnzZsHm82GoqIijBs3rsfnMzIy0NnZiYaGhi7ZycrKSmRkZAxl2UHj7eNTVlaGJUuWYOHChfjb3/7m9f3NmzcPgDOzGarBZEpKCvR6fY+u/f5+7xkZGV7dPtTddddd+Pe//41vvvnG6yyR0WjEjBkzcOLEiQCtTj0SEhIwduzYPn/WcHveAEBxcTG++OILr6sX4fS8kX7/lZWVyMzMlD9eWVmJ6dOn9/o1vly3Qp0USBYXF+Orr77qNyvZm4H+fYYD7pl0SU1Nxfjx4/v9YzKZev3aAwcOQKfTIS0trdfPz5o1C0ajEV9++aX8sYKCApSUlHR5x6xm3jw+Z8+exeLFizFr1iysW7cOOp33T7MDBw4AQJcLYKgxmUyYNWtWl9+7w+HAl19+2efvfcGCBV1uDwCff/55yDxPBksURdx11114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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"#------------------------- Print the output -------------------------\n",
"dos_data = wg.outputs.dos.output_dos.value\n",
"# pdos_data = wg.tasks['projwfc'].outputs[\"results\"].value.value\n",
"# make plots\n",
"plt.figure(figsize = (8, 4))\n",
"plt.plot(dos_data.get_array(\"x_array\"), dos_data.get_array(\"y_array_1\"), label='total')\n",
"# plt.plot(pdos_data['totol']['energy'], pdos_data['totol']['dos'], label='total')\n",
"# for file_name, data in pdos_data['atom'].items():\n",
" # value = np.array(data)\n",
" # plt.plot(value[:, 0], np.sum(value[:, 2:], axis=1), label=file_name[-4:])\n",
"plt.yticks([])\n",
"plt.xlabel('Energy (eV)')\n",
"plt.ylabel('DOS')\n",
"plt.legend(frameon=False)"
]
}
],
"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
}