{
"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/ase/espresso/module.html#workgraph_collections.ase.espresso.pdos.pdos_workgraph).\n",
"\n",
"\n",
"## Example: Silicon\n",
"\n",
"### Prepare the inputs and submit the workflow\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "8ee799d2-0b5b-4609-957f-6b3f2cd451f0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from ase.build import bulk\n",
"from aiida import load_profile\n",
"from copy import deepcopy\n",
"\n",
"from workgraph_collections.ase.espresso.pdos import PdosWorkgraph\n",
"from aiida_pythonjob.config import config\n",
"# allow pickle\n",
"config[\"allow_pickle\"] = True\n",
"\n",
"load_profile()\n",
"\n",
"atoms = bulk('Al')\n",
"\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 = {\"Al\": \"Al.pbe-n-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",
"scf_input_data = {\n",
" \"system\": {\"ecutwfc\": 30, \"ecutrho\": 240,\n",
" \"occupations\": \"smearing\",\n",
" \"degauss\": 0.01,\n",
" \"smearing\": \"gaussian\",\n",
" },\n",
"}\n",
"nscf_input_data = deepcopy(scf_input_data)\n",
"nscf_input_data[\"system\"].update({\"occupations\": \"tetrahedra\"})\n",
"inputs = {\n",
" \"scf\": {\n",
" \"input_data\": scf_input_data,\n",
" \"kpts\": [10, 10, 10],\n",
" \"computer\": \"localhost\",\n",
" \"metadata\": metadata\n",
" },\n",
" \"nscf\": {\n",
" \"input_data\": nscf_input_data,\n",
" \"kpts\": [20, 20, 20],\n",
" \"computer\": \"localhost\",\n",
" \"metadata\": metadata\n",
" },\n",
" \"dos\": {\n",
" \"input_data\": {},\n",
" \"computer\": \"localhost\",\n",
" \"metadata\": metadata\n",
" }\n",
"}\n",
"#------------------------- Set the inputs -------------------------\n",
"wg = PdosWorkgraph.build_graph(atoms=atoms,\n",
" pw_command=\"mpirun -np 4 pw.x\",\n",
" dos_command=\"mpirun -np 4 dos.x\",\n",
" projwfc_command=\"mpirun -np 4 projwfc.x\",\n",
" pseudopotentials=pseudopotentials,\n",
" pseudo_dir=pseudo_dir,\n",
" inputs=inputs)\n",
"wg.to_html()"
]
},
{
"cell_type": "markdown",
"id": "6df097e2",
"metadata": {},
"source": [
"Run the calculation\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "d6112a2f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"09/03/2025 09:14:50 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|continue_workgraph]: tasks ready to run: pw_calculator\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|continue_workgraph]: tasks ready to run: pw_calculator\n",
"09/03/2025 09:14:51 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 178742\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 178742\n",
"09/03/2025 09:14:58 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|update_task_state]: Task: pw_calculator, type: PYTHONJOB, finished.\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|update_task_state]: Task: pw_calculator, type: PYTHONJOB, finished.\n",
"09/03/2025 09:15:00 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|continue_workgraph]: tasks ready to run: pw_calculator1\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|continue_workgraph]: tasks ready to run: pw_calculator1\n",
"09/03/2025 09:15:01 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 178758\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 178758\n",
"09/03/2025 09:15:16 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|update_task_state]: Task: pw_calculator1, type: PYTHONJOB, finished.\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|update_task_state]: Task: pw_calculator1, type: PYTHONJOB, finished.\n",
"09/03/2025 09:15:18 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|continue_workgraph]: tasks ready to run: dos_calculator,projwfc_calculator\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|continue_workgraph]: tasks ready to run: dos_calculator,projwfc_calculator\n",
"09/03/2025 09:15:20 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 178774, 178780\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 178774, 178780\n",
"09/03/2025 09:15:44 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|update_task_state]: Task: projwfc_calculator, type: PYTHONJOB, finished.\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|update_task_state]: Task: projwfc_calculator, type: PYTHONJOB, finished.\n",
"09/03/2025 09:15:48 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n",
"09/03/2025 09:15:49 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 178774\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|on_wait]: Process status: Waiting for child processes: 178774\n",
"09/03/2025 09:16:44 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|update_task_state]: Task: dos_calculator, type: PYTHONJOB, finished.\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|update_task_state]: Task: dos_calculator, type: PYTHONJOB, finished.\n",
"09/03/2025 09:16:47 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|continue_workgraph]: tasks ready to run: \n",
"09/03/2025 09:16:47 PM <328043> aiida.orm.nodes.process.workflow.workchain.WorkChainNode: [REPORT] [178738|WorkGraphEngine|finalize]: Finalize workgraph.\n",
"REPORT:aiida.orm.nodes.process.workflow.workchain.WorkChainNode:[178738|WorkGraphEngine|finalize]: Finalize workgraph.\n"
]
}
],
"source": [
"wg.run()"
]
},
{
"cell_type": "markdown",
"id": "ea09fce9",
"metadata": {},
"source": [
"## Print the results"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "afe2b91d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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0zUAxBdffNF0u6amRgQg/v7776IoiuIbb7whTpo0qcXrZmdniwDElJQUURRF8ZprrhEHDBjQ4prFixeLCQkJLe574YUXRABieXm5KIqiuH//flEul4t5eXmiKIpiYWGhqFAoxO3bt7f6e7r55pvF+++/v8V9banx9OnTIgBx27ZtpmvGjBkj3n333Ze8x4wZM8S5c+e2WgMRUUdwAQ0R2ZXx48fjk08+aXGfj49Pi9t9+/Y1/ezq6goPDw8UFRUBABITE7Ft2za4ubld8trp6eno3r07AFwyWpiSkoIhQ4a0uG/o0KGX3O7duze++uorPPvss/jmm28QGRmJsWPHtvr7qa+vh5OTU4v72lJjfHw8Ro4cieXLl2PcuHE4c+YMdu3ahddff/2S5zg7O6Ourq7VGoiIOoJhkojsiqurK2JjY694jVKpbHFbEATo9XoAhnWFN954I/71r39d8rzg4OAW72OOBx54AEuXLsWzzz6LFStW4L777oMgCK1e7+fnh/Ly8hb3tbXGefPm4bHHHsPSpUuxYsUKxMTE4JprrrnkOWVlZYiJiTHr90NEdDVcM0lEXcrAgQNx8uRJdOvWDbGxsS1+XSlA9ujRA4cOHWpxn3HH9IXuvvtunDt3Dh9++CFOnTqFOXPmXLGeAQMG4NSpU2bVOGvWLMhkMqxatQorV67E/ffff9ngeuLECQwYMOCKdRARmYthkojsSmNjIwoKClr8unAn9tUsXLgQZWVluOOOO3Dw4EGkp6dj48aNuO+++6DT6Vp93oIFC5CcnIzFixcjNTUV3333nWk39YUBztvbGzNnzsQzzzyDSZMmXdK652KTJ0/GyZMnW4xOtrVGNzc3zJ49G8899xzy8/Mxd+7cS14/MzMTubm5mDhxYhs/ISKi9mGYJCK78scffyA4OLjFr9GjR7f5+SEhIdi9ezd0Oh0mTZqEPn36YNGiRfDy8oJM1vofiVFRUfj++++xbt069O3bF5988olpN7darW5x7bx586DRaHD//fdftZ4+ffpg4MCB+O6778yqcd68eSgvL8fkyZMREhJyyeuvXr0akyZNQmRk5FVrISIyB5uWExGZacmSJVi2bBmys7Nb3P/111/jiSeeQF5eXpuanf/666945plncOLEiSsG2vbSaDSIi4vDqlWrMGrUKIu9LhHRhbgBh4iojT7++GMMGTIEvr6+2L17N9555x08+uijpsfr6uqQn5+Pf/7zn1iwYEGbT825/vrrkZaWhtzcXISHh1us3qysLDz//PMMkkTUqTgySUTURk888QTWrFmDsrIyRERE4J577sFzzz1nOqbw1VdfxZIlSzB27Fhs2LDhsq19iIgcDcMkEREREZmNG3CIiIiIyGwMk0RERERkNoZJIiIiIjIbwyQRERERmY1hkoiIiIjMxjBJRERERGZjmCQiIiIiszFMEhEREZHZGCaJiIiIyGz/D147MAyIukIEAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"#------------------------- Print the output -------------------------\n",
"dos_data = wg.outputs.dos.dos.value.value\n",
"pdos_data = wg.outputs.projwfc.projections.value.value\n",
"# make plots\n",
"plt.figure(figsize = (8, 4))\n",
"plt.plot(dos_data['x']['array'], dos_data['y']['arrays'][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)\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
}