From 92cde566e8e8b15bc323eb8af0bc5927e0250391 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Tue, 14 Nov 2023 13:59:46 +0100 Subject: [PATCH 1/9] Update start page --- docs/source/index.rst | 58 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index c258d66b..ef50d723 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -5,8 +5,64 @@ atomistics - Interfaces for atomistic simulation codes and workflows :Author: Jan Janssen :Contact: janssen@mpie.de -First version of the documentation for the :code:`atomistics` package. +The :code:`atomistics` package consists of two primary components. On the one hand it provides interfaces to atomistic +simulation codes. In alphabetical order: +* `Abinit `_ - Plane wave density functional theory +* `EMT `_ - Effective medium theory potential +* `GPAW `_ - Density functional theory Python code based on the projector-augmented wave method +* `LAMMPS `_ - Molecular Dynamics +* `Quantum Espresso `_ - Integrated suite of Open-Source computer codes for electronic-structure calculations +* `Siesta `_ - Electronic structure calculations and ab initio molecular dynamics + +For majority of these simulation codes the :code:`atomistics` package use the `Atomic Simulation Environment `_ +to interface the underlying C/ C++ and Fortran Codes with the Python programming language. Still this approach limits +the functionality of the simulation code to calculating the energy and forces, so by adding custom interfaces the +:code:`atomistics` package can support built-in features of the simulation code like structure optimization and molecular +dynamics. + +On the other hand the :code:`atomistics` package also provides workflows to calculate material properties on the +atomistic scales, these include: + +* equation of state - to calculate equilibrium properties like the equilibrium energy, equilibrium volume, equilibrium bulk modulus and its pressure derivative. +* elastic matrix - to calculate the elastic constants and elastic moduli. +* harmonic and quasi-harmonic approximation - to calculate the density of states, vibrational free energy and thermal expansion based on the finite displacements method implemented in `phonopy `_. +* molecular dynamics - to calculate finite temperature properties like thermal expansion including the anharmonic contributions. + +All these workflows can be coupled with all the simulation codes implemented in the :code:`atomistics` package. In contrast +to the `Atomic Simulation Environment `_ which provides similar functionality the focus +of the :code:`atomistics` package is not to reimplement existing functionality but rather simplify the process of coupling +existing simulation codes with existing workflows. Here the `phonopy `_ workflow is a +great example to enable the calculation of thermodynamic properties with the harmonic and quasi-harmonic approximation. + +Example +------- +Calculate:: + + from ase.build import bulk + from atomistics.calculators import evaluate_with_ase + from atomistics.workflows import EnergyVolumeCurveWorkflow + from gpaw import GPAW, PW + + calculator = EnergyVolumeCurveWorkflow( + structure=bulk("Al", a=4.05, cubic=True), + num_points=11, + fit_type='polynomial', + fit_order=3, + vol_range=0.05, + axes=['x', 'y', 'z'], + strains=None, + ) + task_dict = calculator.generate_structures() + result_dict = evaluate_with_ase( + task_dict=task_dict, + ase_calculator=GPAW( + xc="PBE", + mode=PW(300), + kpts=(3, 3, 3) + ) + ) + fit_dict = calculator.analyse_structures(output_dict=result_dict) Documentation ------------- From 69c731030ba08bbd95b04d9c54a89276b6ffc29b Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 15 Nov 2023 08:35:35 +0100 Subject: [PATCH 2/9] update index --- docs/source/index.rst | 96 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 81 insertions(+), 15 deletions(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index ef50d723..8846e7fc 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -6,7 +6,7 @@ atomistics - Interfaces for atomistic simulation codes and workflows :Contact: janssen@mpie.de The :code:`atomistics` package consists of two primary components. On the one hand it provides interfaces to atomistic -simulation codes. In alphabetical order: +simulation codes - named :code:`calculators`. In alphabetical order: * `Abinit `_ - Plane wave density functional theory * `EMT `_ - Effective medium theory potential @@ -21,30 +21,32 @@ the functionality of the simulation code to calculating the energy and forces, s :code:`atomistics` package can support built-in features of the simulation code like structure optimization and molecular dynamics. -On the other hand the :code:`atomistics` package also provides workflows to calculate material properties on the +On the other hand the :code:`atomistics` package also provides :code:`workflows` to calculate material properties on the atomistic scales, these include: -* equation of state - to calculate equilibrium properties like the equilibrium energy, equilibrium volume, equilibrium bulk modulus and its pressure derivative. -* elastic matrix - to calculate the elastic constants and elastic moduli. -* harmonic and quasi-harmonic approximation - to calculate the density of states, vibrational free energy and thermal expansion based on the finite displacements method implemented in `phonopy `_. -* molecular dynamics - to calculate finite temperature properties like thermal expansion including the anharmonic contributions. +* Equation of State - to calculate equilibrium properties like the equilibrium energy, equilibrium volume, equilibrium bulk modulus and its pressure derivative. +* Elastic Matrix - to calculate the elastic constants and elastic moduli. +* Harmonic and Quasi-harmonic Approximation - to calculate the density of states, vibrational free energy and thermal expansion based on the finite displacements method implemented in `phonopy `_. +* Molecular Dynamics - to calculate finite temperature properties like thermal expansion including the anharmonic contributions. -All these workflows can be coupled with all the simulation codes implemented in the :code:`atomistics` package. In contrast -to the `Atomic Simulation Environment `_ which provides similar functionality the focus -of the :code:`atomistics` package is not to reimplement existing functionality but rather simplify the process of coupling -existing simulation codes with existing workflows. Here the `phonopy `_ workflow is a -great example to enable the calculation of thermodynamic properties with the harmonic and quasi-harmonic approximation. +All these :code:`workflows` can be coupled with all the simulation codes implemented in the :code:`atomistics` package. +In contrast to the `Atomic Simulation Environment `_ which provides similar functionality +the focus of the :code:`atomistics` package is not to reimplement existing functionality but rather simplify the process +of coupling existing simulation codes with existing workflows. Here the `phonopy `_ +workflow is a great example to enable the calculation of thermodynamic properties with the harmonic and quasi-harmonic +approximation. Example ------- -Calculate:: +Use the equation of state to calculate the equilibrium properties like the equilibrium volume, equilibrium energy, +equilibrium bulk modulus and its derivative using the `GPAW `_ simulation code:: from ase.build import bulk from atomistics.calculators import evaluate_with_ase from atomistics.workflows import EnergyVolumeCurveWorkflow from gpaw import GPAW, PW - calculator = EnergyVolumeCurveWorkflow( + workflow = EnergyVolumeCurveWorkflow( structure=bulk("Al", a=4.05, cubic=True), num_points=11, fit_type='polynomial', @@ -53,7 +55,31 @@ Calculate:: axes=['x', 'y', 'z'], strains=None, ) - task_dict = calculator.generate_structures() + task_dict = workflow.generate_structures() + print(task_dict) + >>> {'calc_energy': OrderedDict([ + >>> (0.95, Atoms(symbols='Al4', pbc=True, cell=[3.9813426685908118, 3.9813426685908118, 3.9813426685908118])), + >>> (0.96, Atoms(symbols='Al4', pbc=True, cell=[3.9952635604153612, 3.9952635604153612, 3.9952635604153612])), + >>> (0.97, Atoms(symbols='Al4', pbc=True, cell=[4.009088111958974, 4.009088111958974, 4.009088111958974])), + >>> (0.98, Atoms(symbols='Al4', pbc=True, cell=[4.022817972936038, 4.022817972936038, 4.022817972936038])), + >>> (0.99, Atoms(symbols='Al4', pbc=True, cell=[4.036454748321015, 4.036454748321015, 4.036454748321015])), + >>> (1.0, Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])), + >>> (1.01, Atoms(symbols='Al4', pbc=True, cell=[4.063455248345461, 4.063455248345461, 4.063455248345461])), + >>> (1.02, Atoms(symbols='Al4', pbc=True, cell=[4.076821973718458, 4.076821973718458, 4.076821973718458])), + >>> (1.03, Atoms(symbols='Al4', pbc=True, cell=[4.0901016179023415, 4.0901016179023415, 4.0901016179023415])), + >>> (1.04, Atoms(symbols='Al4', pbc=True, cell=[4.1032955854717175, 4.1032955854717175, 4.1032955854717175])), + >>> (1.05, Atoms(symbols='Al4', pbc=True, cell=[4.1164052451001565, 4.1164052451001565, 4.1164052451001565])) + >>> ])} + +In the first step the :code:`EnergyVolumeCurveWorkflow` object is initialized including all the parameters to generate +the strained structures and afterwards fit the resulting energy volume curve. This allows the user to see all relevant +parameters at one place. After the initialization the function :code:`generate_structures()` is called without any +additional parameters. This function returns the task dictionary :code:`task_dict` which includes the tasks which should +be executed by the calculator. In this case the task is to calculate the energy :code:`calc_energy` of the eleven +generated structures. Each structure is labeled by the ratio of compression or elongation. In the second step the +:code:`task_dict` is evaluate with the `GPAW `_ simulation code using the +:code:`evaluate_with_ase()` function:: + result_dict = evaluate_with_ase( task_dict=task_dict, ase_calculator=GPAW( @@ -62,7 +88,47 @@ Calculate:: kpts=(3, 3, 3) ) ) - fit_dict = calculator.analyse_structures(output_dict=result_dict) + print(result_dict) + >>> {'energy': { + >>> 0.95: -14.895378072824752, + >>> 0.96: -14.910819737657118, + >>> 0.97: -14.922307241122466, + >>> 0.98: -14.930392279321056, + >>> 0.99: -14.935048569964911, + >>> 1.0: -14.936666396364169, + >>> 1.01: -14.935212782128556, + >>> 1.02: -14.931045138839849, + >>> 1.03: -14.924165445706581, + >>> 1.04: -14.914703574005678, + >>> 1.05: -14.902774559134226 + >>> }} + +In analogy to the :code:`task_dict` which defines the tasks to be executed by the simulation code the :code:`result_dict` +summarizes the results of the calculations. In this case the energies calculated for the specific strains. By ordering +both the :code:`task_dict` and the :code:`result_dict` with the same labels, the :code:`EnergyVolumeCurveWorkflow` object +is able to match the calculation results to the corresponding structure. Finally, in the third step the :code:`analyse_structures()` +function takes the :code:`result_dict` as an input and fits the Equation of State with the fitting parameters defined in +the first step:: + + fit_dict = workflow.analyse_structures(output_dict=result_dict) + print(fit_dict) + >>> {'poly_fit': array([-9.30297838e-05, 2.19434659e-02, -1.68388816e+00, 2.73605421e+01]), + >>> 'fit_type': 'polynomial', + >>> 'fit_order': 3, + >>> 'volume_eq': 66.44252286131888, + >>> 'energy_eq': -14.93670322204575, + >>> 'bulkmodul_eq': 72.38919826304497, + >>> 'b_prime_eq': 4.45383655040775, + >>> 'least_square_error': 4.432974529908853e-09, + >>> 'volume': [63.10861874999998, 63.77291999999998, ..., 69.75163125000002], + >>> 'energy': [-14.895378072824752, -14.910819737657118, ..., -14.902774559134226] + >>> } + +As a result the equilibrium parameters are returned plus the parameters of the polynomial and the set of volumes and +energies which were fitted to achieve these results. The important step here is that while the interface between the +first and the second as well as between the second and the third step is clearly defined independent of the specific +workflow, the initial parameters for the workflow to initialize the :code:`EnergyVolumeCurveWorkflow` object as well as +the final output of the :code:`fit_dict` are workflow specific. Documentation ------------- From 3abc3ae7ef77e9bb7b500e42f2500e74173f03b0 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 15 Nov 2023 09:38:48 +0100 Subject: [PATCH 3/9] update installation and introduction of simulation codes --- docs/source/index.rst | 2 +- docs/source/installation.md | 84 +++++++++++++++++++++++++--------- docs/source/simulationcodes.md | 56 +++++++++++++++++++---- 3 files changed, 111 insertions(+), 31 deletions(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index 8846e7fc..845531f4 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -6,7 +6,7 @@ atomistics - Interfaces for atomistic simulation codes and workflows :Contact: janssen@mpie.de The :code:`atomistics` package consists of two primary components. On the one hand it provides interfaces to atomistic -simulation codes - named :code:`calculators`. In alphabetical order: +simulation codes - named :code:`calculators`. The supported simulation codes in alphabetical order are: * `Abinit `_ - Plane wave density functional theory * `EMT `_ - Effective medium theory potential diff --git a/docs/source/installation.md b/docs/source/installation.md index e10e08a3..13468a94 100644 --- a/docs/source/installation.md +++ b/docs/source/installation.md @@ -1,55 +1,97 @@ # Installation -## pypi-based Installation -``` -pip install atomistics -``` - -### GPAW -``` -pip install atomistics[gpaw] -``` - -### LAMMPS -``` -pip install atomistics[lammps] -``` - -### Phonopy -``` -pip install atomistics[phonopy] -``` +The `atomistics` package is a pure python code, which can be installed either via the Python Package Index (pypi) or via +the `conda` package manager. Still the `atomistics` package only contains interfaces to the corresponding simulation +codes, not the simulation codes itself. Consequently, an installation via the `conda` package manager is recommended as +it allows to install many opensource simulation codes in the same environment as the `atomistics` package without the +need to compile the simulation code manually. The `conda` packages for these simulation codes are maintained by the +developers of the `atomistics` package in collaboration with the developers of the corresponding simulation codes. ## conda-based Installation +For the conda-based installation both the `atomistics` package as well as the corresponding simulation codes are +distributed via the [conda-forge](https://conda-forge.org) community channel. By specifying the option `-c conda-forge` +the `conda` package manager installs the dependencies from the [conda-forge](https://conda-forge.org) community channel. ``` conda install -c conda-forge atomistics ``` +As the `atomistics` package depends on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/) the effective +medium theory potential simulation code [EMT](https://wiki.fysik.dtu.dk/ase/ase/calculators/emt.html) is automatically +installed with the basic installation of the `atomistics` package. In the following the simulation codes are sorted in +alphabetical order: -### Ab-init +### Abinit +[Abinit](https://www.abinit.org) - Plane wave density functional theory: ``` conda install -c conda-forge abinit ``` ### GPAW +[GPAW](https://wiki.fysik.dtu.dk/gpaw/) - Density functional theory Python code based on the projector-augmented wave +method: ``` conda install -c conda-forge gpaw ``` ### LAMMPS +[LAMMPS](https://www.lammps.org) - Molecular Dynamics: ``` -conda install -c conda-forge lammps pylammpsmpi jinja2 pandas +conda install -c conda-forge lammps pylammpsmpi jinja2 pandas iprpy-data ``` +In addition to the conda package for the [LAMMPS](https://www.lammps.org) simulation code the interface in the +`atomistics` package uses the [pylammpsmpi](https://github.com/pyiron/pylammpsmpi), [jinja2](https://jinja.palletsprojects.com/) +templates, the [pandas DataFrames](https://pandas.pydata.org) to represent interatomic potentials, and finally it can +leverage the [NIST database for interatomic potentials](https://www.ctcms.nist.gov/potentials) via the `iprpy-data` +package, which includes a wide range of interatomic potentials. The `iprpy-data` package is optional. ### Quantum Espresso +[Quantum Espresso](https://www.quantum-espresso.org) - Integrated suite of Open-Source computer codes for +electronic-structure calculations: ``` conda install -c conda-forge qe ``` ### Siesta +[Siesta](https://siesta-project.org) - Electronic structure calculations and ab initio molecular dynamics: ``` conda install -c conda-forge siesta ``` ### Phonopy +[Phonopy](https://phonopy.github.io/phonopy/) - open source package for phonon calculations at harmonic and +quasi-harmonic levels: ``` conda install -c phonopy seekpath structuretoolkit +``` + +## pypi-based Installation +While the conda-based installation is recommended, it is also possible to install the `atomistics` package via the +Python Package Index: +``` +pip install atomistics +``` +As the `atomistics` package depends on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/) the effective +medium theory potential simulation code [EMT](https://wiki.fysik.dtu.dk/ase/ase/calculators/emt.html) is automatically +installed with the basic installation of the `atomistics` package. + +Beyond the basic installation of the `atomistics` package it is also possible to install the extra requirements for +specific simulation codes directly from the Python Package Index. It is important to mention that apart from the +[GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code, the simulation codes are not distributed via the Python Package +Index, so they have to be installed separately. +### GPAW +[GPAW](https://wiki.fysik.dtu.dk/gpaw/) - Density functional theory Python code based on the projector-augmented wave +method +``` +pip install atomistics[gpaw] +``` + +### LAMMPS +[LAMMPS](https://www.lammps.org) - Molecular Dynamics: +``` +pip install atomistics[lammps] +``` + +### Phonopy +[Phonopy](https://phonopy.github.io/phonopy/) - open source package for phonon calculations at harmonic and +quasi-harmonic levels: +``` +pip install atomistics[phonopy] ``` \ No newline at end of file diff --git a/docs/source/simulationcodes.md b/docs/source/simulationcodes.md index 797cde1a..66ec6a19 100644 --- a/docs/source/simulationcodes.md +++ b/docs/source/simulationcodes.md @@ -1,18 +1,31 @@ # Simulation Codes At the current stage the majority of simulation codes are interfaced using the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/) -## Ab init +## Abinit +[Abinit](https://www.abinit.org) - Plane wave density functional theory: ``` from ase.calculators.abinit import Abinit +from ase.units import Ry from atomistics.calculators import evaluate_with_ase result_dict = evaluate_with_ase( - task_dict={}, - ase_calculator=EMT() + task_dict={}, + ase_calculator=Abinit( + label='abinit_evcurve', + nbands=32, + ecut=10 * Ry, + kpts=(3, 3, 3), + toldfe=1.0e-2, + v8_legacy_format=False, + ) ) ``` +The [Abinit](https://www.abinit.org) interface is based on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/ase/calculators/abinit.html). +The full documentation of the corresponding interface is available on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/ase/calculators/abinit.html) +website. ## EMT +[EMT](https://wiki.fysik.dtu.dk/ase/ase/calculators/emt.html) - Effective medium theory: ``` from ase.calculators.emt import EMT from atomistics.calculators import evaluate_with_ase @@ -22,8 +35,13 @@ result_dict = evaluate_with_ase( ase_calculator=EMT() ) ``` +The [EMT](https://wiki.fysik.dtu.dk/ase/ase/calculators/emt.html) interface is based on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/ase/calculators/emt.html). +The full documentation of the corresponding interface is available on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/ase/calculators/emt.html) +website. ## GPAW +[GPAW](https://wiki.fysik.dtu.dk/gpaw/) - Density functional theory Python code based on the projector-augmented wave +method: ``` from gpaw import GPAW, PW from atomistics.calculators import evaluate_with_ase @@ -37,44 +55,61 @@ result_dict = evaluate_with_ase( ) ) ``` +The [GPAW](https://wiki.fysik.dtu.dk/gpaw/) interface is based on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/). +The full documentation of the corresponding interface is available on the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) +website. ## LAMMPS +[LAMMPS](https://www.lammps.org) - Molecular Dynamics: ``` +from ase.build import bulk from atomistics.calculators import evaluate_with_lammps, get_potential_dataframe potential = '1999--Mishin-Y--Al--LAMMPS--ipr1' -resource_path = os.path.join(os.path.dirname(__file__), "static", "lammps") +resource_path = os.path.join("tests", "static", "lammps") structure = bulk("Al", cubic=True) df_pot = get_potential_dataframe( structure=structure, resource_path=resource_path ) -df_pot_selected = df_pot[df_pot.Name == potential].iloc[0] +potential_dataframe = df_pot[df_pot.Name == potential].iloc[0] result_dict = evaluate_with_lammps( task_dict={}, - potential_dataframe=df_pot_selected, + potential_dataframe=potential_dataframe, ) ``` +The [LAMMPS](https://www.lammps.org) interface is based on the [pylammpsmpi](https://github.com/pyiron/pylammpsmpi) +package which couples a [LAMMPS](https://www.lammps.org) instance which is parallelized via the Message Passing Interface +(MPI) with a serial python process or jupyter notebook. The challenging part about molecular dynamics simulation is +identifying a suitable interatomic potential. To address this challenge the `atomistics` package is leveraging the +[NIST database for interatomic potentials](https://www.ctcms.nist.gov/potentials). It is recommended to install this +database via the `conda` package manager, then the `resource_path` can be set to `${CONDA_PREFIX}/share/iprpy`. In this +example the Aluminium potential included in the `tests/static` folder is used just for demonstration. ## Quantum Espresso +[Quantum Espresso](https://www.quantum-espresso.org) - Integrated suite of Open-Source computer codes for +electronic-structure calculations: ``` from ase.calculators.espresso import Espresso from atomistics.calculators import evaluate_with_ase -pseudopotentials = {"Al": "Al.pbe-n-kjpaw_psl.1.0.0.UPF"} result_dict = evaluate_with_ase( task_dict={}, ase_calculator=Espresso( - pseudopotentials=pseudopotentials, + pseudopotentials={"Al": "Al.pbe-n-kjpaw_psl.1.0.0.UPF"}, tstress=True, tprnfor=True, kpts=(3, 3, 3), ) ) ``` +The [Quantum Espresso](https://www.quantum-espresso.org) interface is based on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/ase/calculators/espresso.html). +The full documentation of the corresponding interface is available on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/ase/calculators/espresso.html) +website. ## Siesta +[Siesta](https://siesta-project.org) - Electronic structure calculations and ab initio molecular dynamics: ``` from ase.calculators.siesta import Siesta from ase.units import Ry @@ -94,4 +129,7 @@ result_dict = evaluate_with_ase( pseudo_qualifier="", ) ) -``` \ No newline at end of file +``` +The [Siesta](https://siesta-project.org) interface is based on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/ase/calculators/siesta.html). +The full documentation of the corresponding interface is available on the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/ase/calculators/siesta.html) +website. \ No newline at end of file From 5a1f60c4c31b7ae16b894a60c795e16fd72f531c Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 15 Nov 2023 10:36:13 +0100 Subject: [PATCH 4/9] explain elastic matrix and equation of state --- docs/source/materialproperties.md | 203 ++++++++++++++++++++++++++++-- 1 file changed, 196 insertions(+), 7 deletions(-) diff --git a/docs/source/materialproperties.md b/docs/source/materialproperties.md index 36452ea1..edfcf1e9 100644 --- a/docs/source/materialproperties.md +++ b/docs/source/materialproperties.md @@ -4,18 +4,15 @@ simulation codes, still the examples are not simulation code specific. It is one package that all simulation workflow to calculate a specific material property can be executed with all simulation codes. ## Elastic Properties -Calculate the elastic properties for Aluminium using the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) DFT code. +Calculate the bulk modulus for Aluminium using the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) DFT code: ### Equation of State -Calculate the change of potential energy in dependence of the unit cell volume to identify the minimum as the equilibrium -volume. The energy at the equilibrium volume gives the equilibrium energy and the derivative gives the bulk modulus. +One way to calculate the bulk modulus is using the Equation of State to calculate the equilibrium properties: ``` from ase.build import bulk from atomistics.calculators import evaluate_with_ase from atomistics.workflows import EnergyVolumeCurveWorkflow from gpaw import GPAW, PW -import numpy as np - workflow = EnergyVolumeCurveWorkflow( structure=bulk("Al", a=4.05, cubic=True), @@ -27,6 +24,29 @@ workflow = EnergyVolumeCurveWorkflow( strains=None, ) task_dict = workflow.generate_structures() +print(task_dict) +>>> {'calc_energy': OrderedDict([ +>>> (0.95, Atoms(symbols='Al4', pbc=True, cell=[3.9813426685908118, 3.9813426685908118, 3.9813426685908118])), +>>> (0.96, Atoms(symbols='Al4', pbc=True, cell=[3.9952635604153612, 3.9952635604153612, 3.9952635604153612])), +>>> (0.97, Atoms(symbols='Al4', pbc=True, cell=[4.009088111958974, 4.009088111958974, 4.009088111958974])), +>>> (0.98, Atoms(symbols='Al4', pbc=True, cell=[4.022817972936038, 4.022817972936038, 4.022817972936038])), +>>> (0.99, Atoms(symbols='Al4', pbc=True, cell=[4.036454748321015, 4.036454748321015, 4.036454748321015])), +>>> (1.0, Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])), +>>> (1.01, Atoms(symbols='Al4', pbc=True, cell=[4.063455248345461, 4.063455248345461, 4.063455248345461])), +>>> (1.02, Atoms(symbols='Al4', pbc=True, cell=[4.076821973718458, 4.076821973718458, 4.076821973718458])), +>>> (1.03, Atoms(symbols='Al4', pbc=True, cell=[4.0901016179023415, 4.0901016179023415, 4.0901016179023415])), +>>> (1.04, Atoms(symbols='Al4', pbc=True, cell=[4.1032955854717175, 4.1032955854717175, 4.1032955854717175])), +>>> (1.05, Atoms(symbols='Al4', pbc=True, cell=[4.1164052451001565, 4.1164052451001565, 4.1164052451001565])) +>>> ])} +``` +In the first step the `EnergyVolumeCurveWorkflow` object is initialized including all the parameters to generate +the strained structures and afterwards fit the resulting energy volume curve. This allows the user to see all relevant +parameters at one place. After the initialization the function `generate_structures()` is called without any +additional parameters. This function returns the task dictionary `task_dict` which includes the tasks which should +be executed by the calculator. In this case the task is to calculate the energy `calc_energy` of the eleven generated +structures. Each structure is labeled by the ratio of compression or elongation. In the second step the `task_dict` +is evaluated with the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code using the `evaluate_with_ase()` function: +``` result_dict = evaluate_with_ase( task_dict=task_dict, ase_calculator=GPAW( @@ -35,9 +55,43 @@ result_dict = evaluate_with_ase( kpts=(3, 3, 3) ) ) +print(result_dict) +>>> {'energy': { +>>> 0.95: -14.895378072824752, +>>> 0.96: -14.910819737657118, +>>> 0.97: -14.922307241122466, +>>> 0.98: -14.930392279321056, +>>> 0.99: -14.935048569964911, +>>> 1.0: -14.936666396364169, +>>> 1.01: -14.935212782128556, +>>> 1.02: -14.931045138839849, +>>> 1.03: -14.924165445706581, +>>> 1.04: -14.914703574005678, +>>> 1.05: -14.902774559134226 +>>> }} +``` +In analogy to the `task_dict` which defines the tasks to be executed by the simulation code the `result_dict` summarizes +the results of the calculations. In this case the energies calculated for the specific strains. By ordering both the +`task_dict` and the `result_dict` with the same labels, the `EnergyVolumeCurveWorkflow` object is able to match the +calculation results to the corresponding structure. Finally, in the third step the `analyse_structures()` function takes +the `result_dict` as an input and fits the Equation of State with the fitting parameters defined in the first step: +``` fit_dict = workflow.analyse_structures(output_dict=result_dict) print(fit_dict) +>>> {'poly_fit': array([-9.30297838e-05, 2.19434659e-02, -1.68388816e+00, 2.73605421e+01]), +>>> 'fit_type': 'polynomial', +>>> 'fit_order': 3, +>>> 'volume_eq': 66.44252286131888, +>>> 'energy_eq': -14.93670322204575, +>>> 'bulkmodul_eq': 72.38919826304497, +>>> 'b_prime_eq': 4.45383655040775, +>>> 'least_square_error': 4.432974529908853e-09, +>>> 'volume': [63.10861874999998, 63.77291999999998, ..., 69.75163125000002], +>>> 'energy': [-14.895378072824752, -14.910819737657118, ..., -14.902774559134226] +>>> } ``` +The bulk modulus for Aluminium is calculated using the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code by fitting +the Equation of State with a third order polynomial over a volume range of +/-5% to be 72.3GPa. ### Elastic Matrix An alternative approach to calculate the bulk modulus is based on the relation `B = (1/3) (C11 + 2 C12 )`. The bulk @@ -48,8 +102,6 @@ from ase.build import bulk from atomistics.calculators import evaluate_with_ase from atomistics.workflows import ElasticMatrixWorkflow from gpaw import GPAW, PW -import numpy as np - workflow = ElasticMatrixWorkflow( structure=bulk("Al", a=4.0, cubic=True), @@ -59,6 +111,45 @@ workflow = ElasticMatrixWorkflow( fit_order=2 ) task_dict = workflow.generate_structures() +print(task_dict) +>>> {'calc_energy': OrderedDict([ +>>> ('s_e_0', Atoms(symbols='Al4', pbc=True, cell=[4.0, 4.0, 4.0])), +>>> ('s_01_e_m0_05000', Atoms(symbols='Al4', pbc=True, cell=[3.7947331922069245, 3.7947331922069245, 3.7947331922069245])), +>>> ('s_01_e_m0_02500', Atoms(symbols='Al4', pbc=True, cell=[3.8987177379239215, 3.8987177379239215, 3.8987177379239215])), +>>> ('s_01_e_0_02500', Atoms(symbols='Al4', pbc=True, cell=[4.098780306384118, 4.098780306384118, 4.098780306384118])), +>>> ('s_01_e_0_05000', Atoms(symbols='Al4', pbc=True, cell=[4.195235392677425, 4.195235392677425, 4.195235392677425])), +>>> ('s_08_e_m0_05000', Atoms(symbols='Al4', pbc=True, cell=[3.7947331922069245, 3.7947331922069245, 4.0])), +>>> ('s_08_e_m0_02500', Atoms(symbols='Al4', pbc=True, cell=[3.8987177379239215, 3.8987177379239215, 4.0])), +>>> ('s_08_e_0_02500', Atoms(symbols='Al4', pbc=True, cell=[4.098780306384118, 4.098780306384118, 4.0])), +>>> ('s_08_e_0_05000', Atoms(symbols='Al4', pbc=True, cell=[4.195235392677425, 4.195235392677425, 4.0])), +>>> ('s_23_e_m0_05000', Atoms(symbols='Al4', pbc=True, cell=[ +>>> [3.9893931831320373, -0.20584220954856147, -0.20584220954856147], +>>> [-0.20584220954856147, 3.9893931831320373, -0.20584220954856147], +>>> [-0.20584220954856147, -0.20584220954856147, 3.9893931831320373] +>>> ])), +>>> ('s_23_e_m0_02500', Atoms(symbols='Al4', pbc=True, cell=[ +>>> [3.997431268324863, -0.10134903805896939, -0.10134903805896939], +>>> [-0.10134903805896939, 3.997431268324863, -0.10134903805896939], +>>> [-0.10134903805896939, -0.10134903805896939, 3.997431268324863] +>>> ])), +>>> ('s_23_e_0_02500', Atoms(symbols='Al4', pbc=True, cell=[ +>>> [3.997556956174871, 0.09883921825127714, 0.09883921825127714], +>>> [0.09883921825127714, 3.997556956174871, 0.09883921825127714], +>>> [0.09883921825127714, 0.09883921825127714, 3.997556956174871] +>>> ])), +>>> ('s_23_e_0_05000', Atoms(symbols='Al4', pbc=True, cell=[ +>>> [3.9904156148110763, 0.19568242260900834, 0.19568242260900834], +>>> [0.19568242260900834, 3.9904156148110763, 0.19568242260900834], +>>> [0.19568242260900834, 0.19568242260900834, 3.9904156148110763] +>>> ])) +>>> ])} +``` +In analogy to the example with the `EnergyVolumeCurveWorkflow` above, the `ElasticMatrixWorkflow` is initialized with all +the parameters required to generate the atomistic structures and afterwards fit the resulting energies. By calling the +`generate_structures()` function the task dictionary `task_dict` is generated. The task dictionary specifies that the +energy should be calculated for a total of thirteen structures with different displacements. In the second step the +structures are again evaluated with the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code: +``` result_dict = evaluate_with_ase( task_dict=task_dict, ase_calculator=GPAW( @@ -67,9 +158,107 @@ result_dict = evaluate_with_ase( kpts=(3, 3, 3) ) ) +print(result_dict) +>>> {'energy': { +>>> 's_e_0': -14.91515210608974, +>>> 's_01_e_m0_05000': -14.262133101395642, +>>> 's_01_e_m0_02500': -14.721569197575231, +>>> 's_01_e_0_02500': -14.91816595056317, +>>> 's_01_e_0_05000': -14.784769535788433, +>>> 's_08_e_m0_05000': -14.592039542802114, +>>> 's_08_e_m0_02500': -14.826184628801762, +>>> 's_08_e_0_02500': -14.937857832607044, +>>> 's_08_e_0_05000': -14.865951266949374, +>>> 's_23_e_m0_05000': -14.177130703166677, +>>> 's_23_e_m0_02500': -14.795705605004681, +>>> 's_23_e_0_02500': -14.889335734277468, +>>> 's_23_e_0_05000': -14.539317336378469 +>>> }} +``` +The atomistic structures are evaluated with the `evaluate_with_ase()` function, which returns the `result_dict`. This +`result_dict` in analogy to the `task_dict` contains the same keys as well as the energies calculated with the +[GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code. Finally, the `result_dict` is provided as an input to the +`analyse_structures()` function to calculate the corresponding elastic constants: +``` elastic_dict = workflow.analyse_structures(output_dict=result_dict) print(elastic_dict) +>>> OrderedDict([ +>>> ('SGN', 225), +>>> ('v0', 63.99999999999998), +>>> ('LC', 'CI'), +>>> ('Lag_strain_list', ['01', '08', '23']), +>>> ('epss', array([-0.05 , -0.025, 0. , 0.025, 0.05 ])), +>>> ('e0', -14.91515210608974), +>>> ('strain_energy', [ +>>> [ +>>> (-0.05, -14.262133101395642), +>>> (-0.025, -14.721569197575231), +>>> (0.0, -14.91515210608974), +>>> (0.02500000000000001, -14.91816595056317), +>>> (0.05, -14.784769535788433) +>>> ], +>>> [ +>>> (-0.05, -14.592039542802114), +>>> (-0.025, -14.826184628801762), +>>> (0.0, -14.91515210608974), +>>> (0.02500000000000001, -14.937857832607044), +>>> (0.05, -14.865951266949374) +>>> ], +>>> [ +>>> (-0.05, -14.177130703166677), +>>> (-0.025, -14.795705605004681), +>>> (0.0, -14.91515210608974), +>>> (0.02500000000000001, -14.889335734277468), +>>> (0.05, -14.539317336378469) +>>> ] +>>> ]), +>>> ('C', array([ +>>> [125.668074 , 68.41418298, 68.41418298, 0. , 0. , 0. ], +>>> [ 68.41418298, 125.668074 , 68.41418298, 0. , 0. , 0. ], +>>> [ 68.41418298, 68.41418298, 125.668074 , 0. , 0. , 0. ], +>>> [ 0. , 0. , 0. , 99.29916328, 0. , 0. ], +>>> [ 0. , 0. , 0. , 0. , 99.29916328, 0. ], +>>> [ 0. , 0. , 0. , 0. , 0. , 99.29916328] +>>> ])), +>>> ('A2', array([2.45756087, 1.21136617, 3.71865977])), +>>> ('BV', 87.49881331689724), +>>> ('GV', 71.03027617530688), +>>> ('EV', 167.70945525415215), +>>> ('nuV', 0.18054908614064386), +>>> ('S', array([ +>>> [ 0.0129139 , -0.00455216, -0.00455216, 0. , 0. , 0. ], +>>> [-0.00455216, 0.0129139 , -0.00455216, 0. , 0. , 0. ], +>>> [-0.00455216, -0.00455216, 0.0129139 , 0. , 0. , 0. ], +>>> [ 0. , 0. , 0. , 0.01007058, 0. , 0. ], +>>> [ 0. , 0. , 0. , 0. , 0.01007058, 0. ], +>>> [ 0. , 0. , 0. , 0. , 0. , 0.01007058] +>>> ])), +>>> ('BR', 87.49881331689723), +>>> ('GR', 49.96203774039756), +>>> ('ER', 125.91935865957598), +>>> ('nuR', 0.2601503496900203), +>>> ('BH', 87.49881331689724), +>>> ('GH', 60.49615695785222), +>>> ('EH', 147.49588056314744), +>>> ('nuH', 0.219051655346538), +>>> ('AVR', 17.412873390939193), +>>> ('C_eigval', EigResult( +>>> eigenvalues=array([ 57.25389102, 262.49643995, 57.25389102, 99.29916328, 99.29916328, 99.29916328]), +>>> eigenvectors=array([ +>>> [-0.81649658, 0.57735027, -0.23637195, 0. , 0. , 0. ], +>>> [ 0.40824829, 0.57735027, -0.55864209, 0. , 0. , 0. ], +>>> [ 0.40824829, 0.57735027, 0.79501404, 0. , 0. , 0. ], +>>> [ 0. , 0. , 0. , 1. , 0. , 0. ], +>>> [ 0. , 0. , 0. , 0. , 1. , 0. ], +>>> [ 0. , 0. , 0. , 0. , 0. , 1. ] +>>> ]) +>>> )) +>>> ]) ``` +The bulk modulus calculated from the elastic constants `C11` and `C12` based on a strain of +/- 5% is calculated with +the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code to be 87.5GPa. This differs from the bulk modulus calculated +from the Equation of State above by 10GPa, which highlights the importance of carefully checking and validating the DFT +calculation. In this case the atomic structure was not optimized before the calculation ## Thermal Expansion Calculate the thermal expansion for a Morse Pair potential using the [LAMMPS](https://www.lammps.org/) molecular dynamics From 3cc40fa7031f743f2b716fc137e69df9d7a1daae Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 15 Nov 2023 10:59:48 +0100 Subject: [PATCH 5/9] calculate elastic constants for larger volume --- docs/source/materialproperties.md | 184 +++++++++++++++--------------- 1 file changed, 93 insertions(+), 91 deletions(-) diff --git a/docs/source/materialproperties.md b/docs/source/materialproperties.md index edfcf1e9..b328d193 100644 --- a/docs/source/materialproperties.md +++ b/docs/source/materialproperties.md @@ -104,7 +104,7 @@ from atomistics.workflows import ElasticMatrixWorkflow from gpaw import GPAW, PW workflow = ElasticMatrixWorkflow( - structure=bulk("Al", a=4.0, cubic=True), + structure=bulk("Al", a=4.05, cubic=True), num_of_point=5, eps_range=0.05, sqrt_eta=True, @@ -113,34 +113,34 @@ workflow = ElasticMatrixWorkflow( task_dict = workflow.generate_structures() print(task_dict) >>> {'calc_energy': OrderedDict([ ->>> ('s_e_0', Atoms(symbols='Al4', pbc=True, cell=[4.0, 4.0, 4.0])), ->>> ('s_01_e_m0_05000', Atoms(symbols='Al4', pbc=True, cell=[3.7947331922069245, 3.7947331922069245, 3.7947331922069245])), ->>> ('s_01_e_m0_02500', Atoms(symbols='Al4', pbc=True, cell=[3.8987177379239215, 3.8987177379239215, 3.8987177379239215])), ->>> ('s_01_e_0_02500', Atoms(symbols='Al4', pbc=True, cell=[4.098780306384118, 4.098780306384118, 4.098780306384118])), ->>> ('s_01_e_0_05000', Atoms(symbols='Al4', pbc=True, cell=[4.195235392677425, 4.195235392677425, 4.195235392677425])), ->>> ('s_08_e_m0_05000', Atoms(symbols='Al4', pbc=True, cell=[3.7947331922069245, 3.7947331922069245, 4.0])), ->>> ('s_08_e_m0_02500', Atoms(symbols='Al4', pbc=True, cell=[3.8987177379239215, 3.8987177379239215, 4.0])), ->>> ('s_08_e_0_02500', Atoms(symbols='Al4', pbc=True, cell=[4.098780306384118, 4.098780306384118, 4.0])), ->>> ('s_08_e_0_05000', Atoms(symbols='Al4', pbc=True, cell=[4.195235392677425, 4.195235392677425, 4.0])), +>>> ('s_e_0', Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])), +>>> ('s_01_e_m0_05000', Atoms(symbols='Al4', pbc=True, cell=[3.8421673571095107, 3.8421673571095107, 3.8421673571095107])), +>>> ('s_01_e_m0_02500', Atoms(symbols='Al4', pbc=True, cell=[3.94745170964797, 3.94745170964797, 3.94745170964797])), +>>> ('s_01_e_0_02500', Atoms(symbols='Al4', pbc=True, cell=[4.150015060213919, 4.150015060213919, 4.150015060213919])), +>>> ('s_01_e_0_05000', Atoms(symbols='Al4', pbc=True, cell=[4.247675835085893, 4.247675835085893, 4.247675835085893])), +>>> ('s_08_e_m0_05000', Atoms(symbols='Al4', pbc=True, cell=[3.8421673571095107, 3.8421673571095107, 4.05])), +>>> ('s_08_e_m0_02500', Atoms(symbols='Al4', pbc=True, cell=[3.94745170964797, 3.94745170964797, 4.05])), +>>> ('s_08_e_0_02500', Atoms(symbols='Al4', pbc=True, cell=[4.150015060213919, 4.150015060213919, 4.05])), +>>> ('s_08_e_0_05000', Atoms(symbols='Al4', pbc=True, cell=[4.247675835085893, 4.247675835085893, 4.05])), >>> ('s_23_e_m0_05000', Atoms(symbols='Al4', pbc=True, cell=[ ->>> [3.9893931831320373, -0.20584220954856147, -0.20584220954856147], ->>> [-0.20584220954856147, 3.9893931831320373, -0.20584220954856147], ->>> [-0.20584220954856147, -0.20584220954856147, 3.9893931831320373] +>>> [4.039260597921188, -0.2084152371679185, -0.2084152371679185], +>>> [-0.2084152371679185, 4.039260597921188, -0.2084152371679185], +>>> [-0.2084152371679185, -0.2084152371679185, 4.039260597921188] >>> ])), >>> ('s_23_e_m0_02500', Atoms(symbols='Al4', pbc=True, cell=[ ->>> [3.997431268324863, -0.10134903805896939, -0.10134903805896939], ->>> [-0.10134903805896939, 3.997431268324863, -0.10134903805896939], ->>> [-0.10134903805896939, -0.10134903805896939, 3.997431268324863] +>>> [4.047399159178924, -0.1026159010347065, -0.1026159010347065], +>>> [-0.1026159010347065, 4.047399159178924, -0.1026159010347065], +>>> [-0.1026159010347065, -0.1026159010347065, 4.047399159178924] >>> ])), >>> ('s_23_e_0_02500', Atoms(symbols='Al4', pbc=True, cell=[ ->>> [3.997556956174871, 0.09883921825127714, 0.09883921825127714], ->>> [0.09883921825127714, 3.997556956174871, 0.09883921825127714], ->>> [0.09883921825127714, 0.09883921825127714, 3.997556956174871] +>>> [4.047526418127057, 0.1000747084794181, 0.1000747084794181], +>>> [0.1000747084794181, 4.047526418127057, 0.1000747084794181], +>>> [0.1000747084794181, 0.1000747084794181, 4.047526418127057] >>> ])), >>> ('s_23_e_0_05000', Atoms(symbols='Al4', pbc=True, cell=[ ->>> [3.9904156148110763, 0.19568242260900834, 0.19568242260900834], ->>> [0.19568242260900834, 3.9904156148110763, 0.19568242260900834], ->>> [0.19568242260900834, 0.19568242260900834, 3.9904156148110763] +>>> [4.0402958099962145, 0.19812845289162093, 0.19812845289162093], +>>> [0.19812845289162093, 4.0402958099962145, 0.19812845289162093], +>>> [0.19812845289162093, 0.19812845289162093, 4.0402958099962145] >>> ])) >>> ])} ``` @@ -160,19 +160,19 @@ result_dict = evaluate_with_ase( ) print(result_dict) >>> {'energy': { ->>> 's_e_0': -14.91515210608974, ->>> 's_01_e_m0_05000': -14.262133101395642, ->>> 's_01_e_m0_02500': -14.721569197575231, ->>> 's_01_e_0_02500': -14.91816595056317, ->>> 's_01_e_0_05000': -14.784769535788433, ->>> 's_08_e_m0_05000': -14.592039542802114, ->>> 's_08_e_m0_02500': -14.826184628801762, ->>> 's_08_e_0_02500': -14.937857832607044, ->>> 's_08_e_0_05000': -14.865951266949374, ->>> 's_23_e_m0_05000': -14.177130703166677, ->>> 's_23_e_m0_02500': -14.795705605004681, ->>> 's_23_e_0_02500': -14.889335734277468, ->>> 's_23_e_0_05000': -14.539317336378469 +>>> 's_e_0': -14.936666396364958, +>>> 's_01_e_m0_05000': -14.509157650668122, +>>> 's_01_e_m0_02500': -14.841982287144095, +>>> 's_01_e_0_02500': -14.861851384196036, +>>> 's_01_e_0_05000': -14.667794842771894, +>>> 's_08_e_m0_05000': -14.761984597147846, +>>> 's_08_e_m0_02500': -14.915410385310373, +>>> 's_08_e_0_02500': -14.906256779097374, +>>> 's_08_e_0_05000': -14.792358225782438, +>>> 's_23_e_m0_05000': -14.276020694686991, +>>> 's_23_e_m0_02500': -14.82856618064028, +>>> 's_23_e_0_02500': -14.919070452898067, +>>> 's_23_e_0_05000': -14.61301941504334 >>> }} ``` The atomistic structures are evaluated with the `evaluate_with_ase()` function, which returns the `result_dict`. This @@ -184,70 +184,70 @@ elastic_dict = workflow.analyse_structures(output_dict=result_dict) print(elastic_dict) >>> OrderedDict([ >>> ('SGN', 225), ->>> ('v0', 63.99999999999998), +>>> ('v0', 66.43012500000002), >>> ('LC', 'CI'), >>> ('Lag_strain_list', ['01', '08', '23']), >>> ('epss', array([-0.05 , -0.025, 0. , 0.025, 0.05 ])), ->>> ('e0', -14.91515210608974), +>>> ('e0', -14.936666396364958), >>> ('strain_energy', [ >>> [ ->>> (-0.05, -14.262133101395642), ->>> (-0.025, -14.721569197575231), ->>> (0.0, -14.91515210608974), ->>> (0.02500000000000001, -14.91816595056317), ->>> (0.05, -14.784769535788433) ->>> ], +>>> (-0.05, -14.509157650668122), +>>> (-0.025, -14.841982287144095), +>>> (0.0, -14.936666396364958), +>>> (0.02500000000000001, -14.861851384196036), +>>> (0.05, -14.667794842771894) +>>> ], >>> [ ->>> (-0.05, -14.592039542802114), ->>> (-0.025, -14.826184628801762), ->>> (0.0, -14.91515210608974), ->>> (0.02500000000000001, -14.937857832607044), ->>> (0.05, -14.865951266949374) +>>> (-0.05, -14.761984597147846), +>>> (-0.025, -14.915410385310373), +>>> (0.0, -14.936666396364958), +>>> (0.02500000000000001, -14.906256779097374), +>>> (0.05, -14.792358225782438) >>> ], >>> [ ->>> (-0.05, -14.177130703166677), ->>> (-0.025, -14.795705605004681), ->>> (0.0, -14.91515210608974), ->>> (0.02500000000000001, -14.889335734277468), ->>> (0.05, -14.539317336378469) ->>> ] ->>> ]), ->>> ('C', array([ ->>> [125.668074 , 68.41418298, 68.41418298, 0. , 0. , 0. ], ->>> [ 68.41418298, 125.668074 , 68.41418298, 0. , 0. , 0. ], ->>> [ 68.41418298, 68.41418298, 125.668074 , 0. , 0. , 0. ], ->>> [ 0. , 0. , 0. , 99.29916328, 0. , 0. ], ->>> [ 0. , 0. , 0. , 0. , 99.29916328, 0. ], ->>> [ 0. , 0. , 0. , 0. , 0. , 99.29916328] ->>> ])), ->>> ('A2', array([2.45756087, 1.21136617, 3.71865977])), ->>> ('BV', 87.49881331689724), ->>> ('GV', 71.03027617530688), ->>> ('EV', 167.70945525415215), ->>> ('nuV', 0.18054908614064386), ->>> ('S', array([ ->>> [ 0.0129139 , -0.00455216, -0.00455216, 0. , 0. , 0. ], ->>> [-0.00455216, 0.0129139 , -0.00455216, 0. , 0. , 0. ], ->>> [-0.00455216, -0.00455216, 0.0129139 , 0. , 0. , 0. ], ->>> [ 0. , 0. , 0. , 0.01007058, 0. , 0. ], ->>> [ 0. , 0. , 0. , 0. , 0.01007058, 0. ], ->>> [ 0. , 0. , 0. , 0. , 0. , 0.01007058] +>>> (-0.05, -14.276020694686991), +>>> (-0.025, -14.82856618064028), +>>> (0.0, -14.936666396364958), +>>> (0.02500000000000001, -14.919070452898067), +>>> (0.05, -14.61301941504334) +>>> ] +>>> ]), +>>> ('C', array([ +>>> [98.43569795, 63.17412931, 63.17412931, 0. , 0. , 0. ], +>>> [63.17412931, 98.43569795, 63.17412931, 0. , 0. , 0. ], +>>> [63.17412931, 63.17412931, 98.43569795, 0. , 0. , 0. ], +>>> [ 0. , 0. , 0. , 84.66136128, 0. , 0. ], +>>> [ 0. , 0. , 0. , 0. , 84.66136128, 0. ], +>>> [ 0. , 0. , 0. , 0. , 0. , 84.66136128] +>>> ])), +>>> ('A2', array([2.10448666, 1.0086892 , 3.17048793])), +>>> ('BV', 74.92798552228444), +>>> ('GV', 57.8491304939761), +>>> ('EV', 138.02584019743034), +>>> ('nuV', 0.19298111327535986), +>>> ('S', array([ +>>> [ 0.02038923, -0.00797026, -0.00797026, 0. , 0. , 0. ], +>>> [-0.00797026, 0.02038923, -0.00797026, 0. , 0. , 0. ], +>>> [-0.00797026, -0.00797026, 0.02038923, 0. , 0. , 0. ], +>>> [ 0. , 0. , 0. , 0.01181176, 0. , 0. ], +>>> [ 0. , 0. , 0. , 0. , 0.01181176, 0. ], +>>> [ 0. , 0. , 0. , 0. , 0. , 0.01181176] >>> ])), ->>> ('BR', 87.49881331689723), ->>> ('GR', 49.96203774039756), ->>> ('ER', 125.91935865957598), ->>> ('nuR', 0.2601503496900203), ->>> ('BH', 87.49881331689724), ->>> ('GH', 60.49615695785222), ->>> ('EH', 147.49588056314744), ->>> ('nuH', 0.219051655346538), ->>> ('AVR', 17.412873390939193), +>>> ('BR', 74.9279855222844), +>>> ('GR', 33.5856196420454), +>>> ('ER', 87.65941305083547), +>>> ('nuR', 0.30501408020913495), +>>> ('BH', 74.92798552228442), +>>> ('GH', 45.71737506801075), +>>> ('EH', 113.97207240565497), +>>> ('nuH', 0.246485304942663), +>>> ('AVR', 26.536421673199147), >>> ('C_eigval', EigResult( ->>> eigenvalues=array([ 57.25389102, 262.49643995, 57.25389102, 99.29916328, 99.29916328, 99.29916328]), +>>> eigenvalues=array([ 35.26156864, 224.78395657, 35.26156864, 84.66136128, 84.66136128, 84.66136128]), >>> eigenvectors=array([ ->>> [-0.81649658, 0.57735027, -0.23637195, 0. , 0. , 0. ], ->>> [ 0.40824829, 0.57735027, -0.55864209, 0. , 0. , 0. ], ->>> [ 0.40824829, 0.57735027, 0.79501404, 0. , 0. , 0. ], +>>> [-0.81649658, 0.57735027, -0.15564171, 0. , 0. , 0. ], +>>> [ 0.40824829, 0.57735027, -0.61632016, 0. , 0. , 0. ], +>>> [ 0.40824829, 0.57735027, 0.77196187, 0. , 0. , 0. ], >>> [ 0. , 0. , 0. , 1. , 0. , 0. ], >>> [ 0. , 0. , 0. , 0. , 1. , 0. ], >>> [ 0. , 0. , 0. , 0. , 0. , 1. ] @@ -256,9 +256,11 @@ print(elastic_dict) >>> ]) ``` The bulk modulus calculated from the elastic constants `C11` and `C12` based on a strain of +/- 5% is calculated with -the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code to be 87.5GPa. This differs from the bulk modulus calculated -from the Equation of State above by 10GPa, which highlights the importance of carefully checking and validating the DFT -calculation. In this case the atomic structure was not optimized before the calculation +the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code to be 74.9GPa. This differs from the bulk modulus calculated +from the Equation of State above by 2.6GPa. In comparison to the experimental bulk modulus for Aluminium which is +[reported to be 76GPa](https://periodictable.com/Elements/013/data.html) the calculation based on the elastic constants +seem to be more precise, still this is more likely related to error cancellation. In general elastic properties calculated +from density functional theory are expected to have errors of about 5-10% unless carefully converged. ## Thermal Expansion Calculate the thermal expansion for a Morse Pair potential using the [LAMMPS](https://www.lammps.org/) molecular dynamics From cee464fb083d09f36e19fc3d79ef3ffa4748e846 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 15 Nov 2023 14:47:48 +0100 Subject: [PATCH 6/9] thermal expansion --- docs/pictures/thermalexpansion.png | Bin 0 -> 39127 bytes docs/source/materialproperties.md | 269 +- notebooks/bulk_modulus_with_gpaw.ipynb | 5814 +++++++++++++++++ notebooks/elastic_constants.ipynb | 116 - notebooks/energy_volume_curve.ipynb | 170 - notebooks/phonons.ipynb | 317 - notebooks/quasi_harmonic_approximation.ipynb | 196 - notebooks/thermal_expansion_with_lammps.ipynb | 597 ++ 8 files changed, 6630 insertions(+), 849 deletions(-) create mode 100644 docs/pictures/thermalexpansion.png create mode 100644 notebooks/bulk_modulus_with_gpaw.ipynb delete mode 100644 notebooks/elastic_constants.ipynb delete mode 100644 notebooks/energy_volume_curve.ipynb delete mode 100644 notebooks/phonons.ipynb delete mode 100644 notebooks/quasi_harmonic_approximation.ipynb create mode 100644 notebooks/thermal_expansion_with_lammps.ipynb diff --git a/docs/pictures/thermalexpansion.png b/docs/pictures/thermalexpansion.png new file mode 100644 index 0000000000000000000000000000000000000000..dc3954c3b83a3ab5ccaa2e169a190ee5057237c4 GIT binary patch literal 39127 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 WUGXT^dWVAlJdjbAE|xS3_`d)k12)e9 literal 0 HcmV?d00001 diff --git a/docs/source/materialproperties.md b/docs/source/materialproperties.md index b328d193..7e154477 100644 --- a/docs/source/materialproperties.md +++ b/docs/source/materialproperties.md @@ -264,43 +264,43 @@ from density functional theory are expected to have errors of about 5-10% unless ## Thermal Expansion Calculate the thermal expansion for a Morse Pair potential using the [LAMMPS](https://www.lammps.org/) molecular dynamics -simulation code. +simulation code. In the following three methods to calculate the thermal expansion are introduced and compared for a +Morse Pair Potential for Aluminium. -Import required software packages: +As a first step the potential is defined for the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code +by specifying the `pair_style` and `pair_coeff` commands for the [Morse Pair Potential](https://docs.lammps.org/pair_morse.html) +as well as the Aluminium bulk structure: ``` from ase.build import bulk -from atomistics.calculators.lammps import evaluate_with_lammps, get_potential_dataframe -from atomistics.workflows.evcurve.workflow import EnergyVolumeCurveWorkflow -from atomistics.workflows.quasiharmonic.workflow import QuasiHarmonicWorkflow -from atomistics.shared.thermo.debye import get_debye_model -from atomistics.shared.thermo.thermo import get_thermo_bulk_model -import numpy as np import pandas -from phonopy.units import VaspToTHz -``` -Define the Morse Potential: -``` -element = "Al" -alpha = 1.8 -r0 = 2.95 -D0 = 0.5 -cutoff = 9.0 potential_dataframe = pandas.DataFrame({ "Config": [[ - "pair_style morse/smooth/linear %f"%cutoff, - "pair_coeff * * %.16f %.16f %.16f"%(D0, alpha, r0) + "pair_style morse/smooth/linear 9.0", + "pair_coeff * * 0.5 1.8 2.95" ]], "Filename": [[]], "Model": ["Morse"], "Name": ["Morse"], "Species": [["Al"]], }).iloc[0] -potential_dataframe + +structure = bulk("Al", a=4.05, cubic=True) ``` +The `pandas.DataFrame` based format to specify interatomic potentials is the same `pylammpsmpi` uses to interface with +the [NIST database for interatomic potentials](https://www.ctcms.nist.gov/potentials). In comparison to just providing +the `pair_style` and `pair_coeff` commands, this extended format enables referencing specific files for the interatomic +potentials `"Filename": [[]],` as well as the atomic species `"Species": [["Al"]],` to enable consistency checks if the +interatomic potential implements all the interactions to simulate a given atomic structure. + ### Equation of State +The first approximation to calculate the thermal expansion is based on the Equation of State derived by [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790). +So in analogy to the previous example of calculating the elastic properties from the Equation of State, the `EnergyVolumeCurveWorkflow` +is initialized with the default parameters: ``` -structure = bulk("Al", a=4.05, cubic=True) +from atomistics.calculators import evaluate_with_lammps, get_potential_dataframe +from atomistics.workflows import EnergyVolumeCurveWorkflow + workflow = EnergyVolumeCurveWorkflow( structure=structure, num_points=11, @@ -311,22 +311,77 @@ workflow = EnergyVolumeCurveWorkflow( strains=None, ) structure_dict = workflow.generate_structures() +print(structure_dict) +>>> {'calc_energy': OrderedDict([ +>>> (0.95, Atoms(symbols='Al4', pbc=True, cell=[3.9813426685908118, 3.9813426685908118, 3.9813426685908118])), +>>> (0.96, Atoms(symbols='Al4', pbc=True, cell=[3.9952635604153612, 3.9952635604153612, 3.9952635604153612])), +>>> (0.97, Atoms(symbols='Al4', pbc=True, cell=[4.009088111958974, 4.009088111958974, 4.009088111958974])), +>>> (0.98, Atoms(symbols='Al4', pbc=True, cell=[4.022817972936038, 4.022817972936038, 4.022817972936038])), +>>> (0.99, Atoms(symbols='Al4', pbc=True, cell=[4.036454748321015, 4.036454748321015, 4.036454748321015])), +>>> (1.0, Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])), +>>> (1.01, Atoms(symbols='Al4', pbc=True, cell=[4.063455248345461, 4.063455248345461, 4.063455248345461])), +>>> (1.02, Atoms(symbols='Al4', pbc=True, cell=[4.076821973718458, 4.076821973718458, 4.076821973718458])), +>>> (1.03, Atoms(symbols='Al4', pbc=True, cell=[4.0901016179023415, 4.0901016179023415, 4.0901016179023415])), +>>> (1.04, Atoms(symbols='Al4', pbc=True, cell=[4.1032955854717175, 4.1032955854717175, 4.1032955854717175])), +>>> (1.05,Atoms(symbols='Al4', pbc=True, cell=[4.1164052451001565, 4.1164052451001565, 4.1164052451001565])) +>>> ])} +``` +After the initialization the `generate_structures()` function is called to generate the atomistic structures which are +then in the second step evaluated with the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code to derive +the equilibrium properties: +``` result_dict = evaluate_with_lammps( task_dict=structure_dict, potential_dataframe=potential_dataframe ) -fit_dict = workflow.analyse_structures(output_dict=result_dict) -debye_model = get_debye_model(fit_dict=fit_dict, masses=structure.get_masses(), num_steps=50) +print(result_dict): +>>> {'energy': { +>>> 0.95: -14.619170288727801, +>>> 0.96: -14.664457483479836, +>>> 0.97: -14.697945635153152, +>>> 0.98: -14.720448033206749, +>>> 0.99: -14.732723972540498, +>>> 1.0: -14.73548275794779, +>>> 1.01: -14.729389420395107, +>>> 1.02: -14.715066161138207, +>>> 1.03: -14.693095226824505, +>>> 1.04: -14.664021603093682, +>>> 1.05: -14.628355511604163 +>>> }} +``` +While in the previous example the fit of the energy volume curve was used directly, there the output of the fit, in +particular the derived equilibrium properties are the input for the Debye model as defined by [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790): +``` +from atomistics.shared.thermo.debye import get_debye_model +from atomistics.shared.thermo.thermo import get_thermo_bulk_model +import numpy as np + +debye_model = get_debye_model( + fit_dict=workflow.analyse_structures(output_dict=result_dict), + masses=structure.get_masses(), + num_steps=50 +) T_debye_low, T_debye_high = debye_model.debye_temperature pes = get_thermo_bulk_model( temperatures=np.linspace(1, 1500, 200), debye_model=debye_model, ) -pes.plot_contourf(show_min_erg_path=True) ``` +The output of the Debye model provides the change of the temperature specific optimal volume `pes.get_minimum_energy_path()` +which can be plotted over the temperature `pes.temperatures` to determine the thermal expansion. + ### Quasi-Harmonic Approximation +While the [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) approach based on the Einstein crystal +is limited to a single frequency, the quasi-harmonic model includes the volume dependent free energy. Inside the +`atomistics` package the harmonic and quasi-harmonic model are implemented based on an interface to the [Phonopy](https://phonopy.github.io/phonopy/) +framework. Still the user interface is still structured in the same three steps of (1) generating structures, (2) evaluating +these structures and (3) fitting the corresponding model. Starting with the initialization of the `QuasiHarmonicWorkflow` +which combines the `PhonopyWorkflow` with the `EnergyVolumeCurveWorkflow`: ``` -workflow = QuasiHarmonicWorkflow( +from atomistics.workflows import QuasiHarmonicWorkflow +from phonopy.units import VaspToTHz + +calculator = QuasiHarmonicWorkflow( structure=structure, num_points=11, vol_range=0.05, @@ -337,13 +392,54 @@ workflow = QuasiHarmonicWorkflow( primitive_matrix=None, number_of_snapshots=None, ) -structure_dict = workflow.generate_structures() +structure_dict = calculator.generate_structures() +print(structure_dict) +>>> { +>>> 'calc_energy': OrderedDict([ +>>> (0.95, Atoms(symbols='Al4', pbc=True, cell=[3.9813426685908118, 3.9813426685908118, 3.9813426685908118])), +>>> (0.96, Atoms(symbols='Al4', pbc=True, cell=[3.9952635604153612, 3.9952635604153612, 3.9952635604153612])), +>>> (0.97, Atoms(symbols='Al4', pbc=True, cell=[4.009088111958974, 4.009088111958974, 4.009088111958974])), +>>> (0.98, Atoms(symbols='Al4', pbc=True, cell=[4.022817972936038, 4.022817972936038, 4.022817972936038])), +>>> (0.99, Atoms(symbols='Al4', pbc=True, cell=[4.036454748321015, 4.036454748321015, 4.036454748321015])), +>>> (1.0, Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])), +>>> (1.01, Atoms(symbols='Al4', pbc=True, cell=[4.063455248345461, 4.063455248345461, 4.063455248345461])), +>>> (1.02, Atoms(symbols='Al4', pbc=True, cell=[4.076821973718458, 4.076821973718458, 4.076821973718458])), +>>> (1.03, Atoms(symbols='Al4', pbc=True, cell=[4.0901016179023415, 4.0901016179023415, 4.0901016179023415])), +>>> (1.04, Atoms(symbols='Al4', pbc=True, cell=[4.1032955854717175, 4.1032955854717175, 4.1032955854717175])), +>>> (1.05,Atoms(symbols='Al4', pbc=True, cell=[4.1164052451001565, 4.1164052451001565, 4.1164052451001565])) +>>> ]), +>>> 'calc_forces': { +>>> (0.95, 0): Atoms(symbols='Al108', pbc=True, cell=[11.944028005772434, 11.944028005772434, 11.944028005772434]), +>>> (0.96, 0): Atoms(symbols='Al108', pbc=True, cell=[11.985790681246083, 11.985790681246083, 11.985790681246083]), +>>> (0.97, 0): Atoms(symbols='Al108', pbc=True, cell=[12.027264335876922, 12.027264335876922, 12.027264335876922]), +>>> (0.98, 0): Atoms(symbols='Al108', pbc=True, cell=[12.068453918808114, 12.068453918808114, 12.068453918808114]), +>>> (0.99, 0): Atoms(symbols='Al108', pbc=True, cell=[12.109364244963045, 12.109364244963045, 12.109364244963045]), +>>> (1.0, 0): Atoms(symbols='Al108', pbc=True, cell=[12.149999999999999, 12.149999999999999, 12.149999999999999]), +>>> (1.01, 0): Atoms(symbols='Al108', pbc=True, cell=[12.190365745036383, 12.190365745036383, 12.190365745036383]), +>>> (1.02, 0): Atoms(symbols='Al108', pbc=True, cell=[12.230465921155373, 12.230465921155373, 12.230465921155373]), +>>> (1.03, 0): Atoms(symbols='Al108', pbc=True, cell=[12.270304853707025, 12.270304853707025, 12.270304853707025]), +>>> (1.04, 0): Atoms(symbols='Al108', pbc=True, cell=[12.309886756415153, 12.309886756415153, 12.309886756415153]), +>>> (1.05, 0): Atoms(symbols='Al108', pbc=True, cell=[12.349215735300469, 12.349215735300469, 12.349215735300469]) +>>> } +>>> } +``` +In contrast to the previous workflows which only used the `calc_energy` function of the simulation codes the `PhonopyWorkflow` +and correspondingly also the `QuasiHarmonicWorkflow` require the calculation of the forces `calc_forces` in addition to +the calculation of the energy. Still the general steps of the workflow remain the same: +``` result_dict = evaluate_with_lammps( task_dict=structure_dict, potential_dataframe=potential_dataframe, ) -eng_internal_dict, mesh_collect_dict, dos_collect_dict = workflow.analyse_structures(output_dict=result_dict) -tp_collect_dict = workflow.get_thermal_properties(t_min=1, t_max=1500, t_step=50, temperatures=None) +``` +The `structure_dict` is evaluated with the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code to +calculate the corresponding energies and forces. The output is not plotted here as the forces for the 108 atom cells +result in 3x108 outputs per cell. Still the structure of the `result_dict` again follows the labels of the `structure_dict` +as explained before. Finally, in the third step the individual free energy curves at the different temperatures are +fitted to determine the equilibrium volume at the given temperature. +``` +eng_internal_dict, mesh_collect_dict, dos_collect_dict = calculator.analyse_structures(output_dict=result_dict) +tp_collect_dict = calculator.get_thermal_properties(t_min=1, t_max=1500, t_step=50, temperatures=None) temperatures = tp_collect_dict[1.0]['temperatures'] temperature_max = max(temperatures) @@ -361,30 +457,103 @@ for i, temp in enumerate(temperatures): vol_select = extrema[np.argmin(np.abs(extrema - vol_best))] eng_lst.append(np.poly1d(p)(vol_select)) vol_lst.append(vol_select) - -fig, ax=plt.subplots(1,1) -for i, temp in enumerate(temperatures): - ax.plot(volume_lst, np.array([ - tp_collect_dict[s]['free_energy'][i] - for s in strain_lst - ]) + eng_int_lst, color=cmap(temp/temperature_max)) -ax.set_xlabel("Volume") -ax.set_ylabel("Free energy ($U + F_{vib}$) [eV]") -normalize = matplotlib.colors.Normalize(vmin=np.min(temperatures), vmax=np.max(temperatures)) -scalarmappaple = matplotlib.cm.ScalarMappable(norm=normalize, cmap=cmap) -scalarmappaple.set_array(list(tp_collect_dict.keys())) -cbar = plt.colorbar(scalarmappaple, ax=ax) -cbar.set_label("Temperature") -plt.plot(vol_lst, eng_lst, color="black", linestyle="--") ``` +The optimal volume at the different `temperatures` is stored in the `vol_lst` in analogy to the previous section. + ### Molecular Dynamics -For the pair potential we find good agreement between the three different approximation +Finally, the third and most commonly used method to determine the volume expansion is using a molecular dynamics +calculation. While the `atomistics` package already includes a `LangevinWorkflow` at this point we use the [Nose-Hoover +thermostat implemented in LAMMPS](https://docs.lammps.org/fix_nh.html) directly via the [pylammpsmpi](https://github.com/pyiron/pylammpsmpi) +interface. +``` +from jinja2 import Template +from pylammpsmpi import LammpsASELibrary +from tqdm import tqdm -## Phase Diagram -One of the goals of the `atomistics` package is to be able to calculate phase diagrams with ab-initio precision. +def calc_thermal_expansion_md(structure, potential_dataframe, temperature_lst): + init_str = """\ +thermo_style custom step temp pe etotal pxx pxy pxz pyy pyz pzz vol +thermo_modify format float %20.15g +timestep 0.001 +thermo {{ thermotime }} +velocity all create $(2 * {{ lowtemp }}) 4928459 dist gaussian +""" -### Quasi-Harmonic Approximation -coming soon + run_str = """\ +fix ensemble all npt temp {{ lowtemp }} {{ hightemp }} 0.1 iso 0.0 0.0 1.0 +run {{ steps }} +""" + + lmp = LammpsASELibrary() + lmp.interactive_structure_setter( + structure=structure, + units="metal", + dimension=3, + boundary=" ".join(["p" if coord else "f" for coord in structure.pbc]), + atom_style="atomic", + el_eam_lst=potential_dataframe.Species, + calc_md=False, + ) + for c in potential_dataframe.Config: + lmp.interactive_lib_command(c) + init_str_rendered = Template(init_str).render( + thermotime=100, + lowtemp=10 + ) + for l in init_str_rendered.split("\n"): + lmp.interactive_lib_command(l) + + volume_md_lst = [] + for temp in tqdm(temperature_lst): + run_str_rendered = Template(run_str).render( + steps=100, + lowtemp=temp-5, + hightemp=temp, + ) + for l in run_str_rendered.split("\n"): + lmp.interactive_lib_command(l) + volume_md_lst.append(lmp.interactive_volume_getter()) + lmp.close() + return volume_md_lst +``` +The `calc_thermal_expansion_md()` function defines a loop over a vector of temperatures in 5K steps. For each step 100 +molecular dynamics steps are executed before the temperature is again increased by 5K. For ~280 steps with the Morse +Pair Potential this takes approximately 5 minutes on a single core. These simulations can be further accelerated by +adding the `cores` parameter during the initialization of the `LammpsASELibrary()`. The increase in computational cost +is on the one hand related to the large number of force and energy calls and on the other hand to the size of the atomistic +structure, as these simulations are typically executed with >5000 atoms rather than the 4 or 108 atoms in the other +approximations. +``` +structure_md = structure.repeat(11) +temperature_md_lst = np.linspace(15, 1400, 278) +volume_md_lst = calc_thermal_expansion_md( + structure=structure_md, + potential_dataframe=potential_dataframe, + temperature_lst=temperature_md_lst, +) +``` +The volume for the individual temperatures is stored in the `volume_md_lst` list. + +### Summary +To visually compare the thermal expansion predicted by the three different approximations, the [matplotlib](https://matplotlib.org) +is used to plot the temperature over the volume: +``` +import matplotlib.pyplot as plt +plt.plot(np.array(volume_md_lst)/len(structure_md) * 4, temperature_md_lst, label="Molecular Dynamics", color="C2") +plt.plot(vol_lst, temperatures, label="Quasi-Harmonic", color="C0") +plt.plot(pes.get_minimum_energy_path(), pes.temperatures, label="Moruzzi Model", color="C1") +plt.legend() +plt.xlabel("Volume") +plt.ylabel("Temperature") +``` +The result is visualized in the following graph: + +![Compare Thermal Expansion](../pictures/thermalexpansion.png) -### Calphy -coming soon \ No newline at end of file +While the both the [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) and the quasi-harmonic +approach over-predict the volume expansion with increasing temperature the overall result is in reasonable agreement for +the Morse Pair Potential. + +## Phase Diagram +One of the goals of the `atomistics` package is to be able to calculate phase diagrams with ab-initio precision. Coming +soon. diff --git a/notebooks/bulk_modulus_with_gpaw.ipynb b/notebooks/bulk_modulus_with_gpaw.ipynb new file mode 100644 index 00000000..4970d612 --- /dev/null +++ b/notebooks/bulk_modulus_with_gpaw.ipynb @@ -0,0 +1,5814 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "cfa4e782-0e68-4a51-8d57-cb0eccf8e8bb", + "metadata": {}, + "source": [ + "# Elastic Properties\n", + "Calculate the bulk modulus for Aluminium using the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) DFT code:" + ] + }, + { + "cell_type": "markdown", + "id": "81c7f93c-1539-46db-8917-34a5c3b05744", + "metadata": {}, + "source": [ + "# Equation of State \n", + "One way to calculate the bulk modulus is using the Equation of State to calculate the equilibrium properties:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7e5c6f17-3774-4b3b-915c-8b0611ec0497", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'calc_energy': OrderedDict([(0.95,\n", + " Atoms(symbols='Al4', pbc=True, cell=[3.9813426685908118, 3.9813426685908118, 3.9813426685908118])),\n", + " (0.96,\n", + " Atoms(symbols='Al4', pbc=True, cell=[3.9952635604153612, 3.9952635604153612, 3.9952635604153612])),\n", + " (0.97,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.009088111958974, 4.009088111958974, 4.009088111958974])),\n", + " (0.98,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.022817972936038, 4.022817972936038, 4.022817972936038])),\n", + " (0.99,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.036454748321015, 4.036454748321015, 4.036454748321015])),\n", + " (1.0, Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])),\n", + " (1.01,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.063455248345461, 4.063455248345461, 4.063455248345461])),\n", + " (1.02,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.076821973718458, 4.076821973718458, 4.076821973718458])),\n", + " (1.03,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.0901016179023415, 4.0901016179023415, 4.0901016179023415])),\n", + " (1.04,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.1032955854717175, 4.1032955854717175, 4.1032955854717175])),\n", + " (1.05,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.1164052451001565, 4.1164052451001565, 4.1164052451001565]))])}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from ase.build import bulk\n", + "from atomistics.calculators.ase import evaluate_with_ase\n", + "from atomistics.workflows.evcurve.workflow import EnergyVolumeCurveWorkflow\n", + "from gpaw import GPAW, PW\n", + "\n", + "workflow = EnergyVolumeCurveWorkflow(\n", + " structure=bulk(\"Al\", a=4.05, cubic=True),\n", + " num_points=11,\n", + " fit_type='polynomial',\n", + " fit_order=3,\n", + " vol_range=0.05,\n", + " axes=['x', 'y', 'z'],\n", + " strains=None,\n", + ")\n", + "task_dict = workflow.generate_structures()\n", + "task_dict" + ] + }, + { + "cell_type": "markdown", + "id": "2c128729-f9b0-4b91-9995-3403f2887602", + "metadata": {}, + "source": [ + "In the first step the `EnergyVolumeCurveWorkflow` object is initialized including all the parameters to generate\n", + "the strained structures and afterwards fit the resulting energy volume curve. This allows the user to see all relevant\n", + "parameters at one place. After the initialization the function `generate_structures()` is called without any\n", + "additional parameters. This function returns the task dictionary `task_dict` which includes the tasks which should\n", + "be executed by the calculator. In this case the task is to calculate the energy `calc_energy` of the eleven generated \n", + "structures. Each structure is labeled by the ratio of compression or elongation. In the second step the `task_dict` \n", + "is evaluated with the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code using the `evaluate_with_ase()` function:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "374b84ab-1471-481a-ae2a-f04cca2bf331", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " ___ ___ ___ _ _ _ \n", + " | | |_ | | | | \n", + " | | | | | . | | | | \n", + " |__ | _|___|_____| 23.9.1\n", + " |___|_| \n", + "\n", + "User: janssen@cmpc06\n", + "Date: Wed Nov 15 11:29:13 2023\n", + "Arch: x86_64\n", + "Pid: 15086\n", + "CWD: /home/janssen/notebooks/2023/2023-11-15-atomistics-example\n", + "Python: 3.10.13\n", + "gpaw: /home/janssen/mambaforge/lib/python3.10/site-packages/gpaw\n", + "_gpaw: /home/janssen/mambaforge/lib/python3.10/site-packages/\n", + " _gpaw.cpython-310-x86_64-linux-gnu.so\n", + "ase: /home/janssen/mambaforge/lib/python3.10/site-packages/ase (version 3.22.1)\n", + "numpy: /home/janssen/mambaforge/lib/python3.10/site-packages/numpy (version 1.26.0)\n", + "scipy: /home/janssen/mambaforge/lib/python3.10/site-packages/scipy (version 1.11.3)\n", + "libxc: 6.2.2\n", + "units: Angstrom and eV\n", + "cores: 1\n", + "OpenMP: True\n", + "OMP_NUM_THREADS: 1\n", + "\n", + "Input parameters:\n", + " kpts: [3 3 3]\n", + " mode: {ecut: 300.0,\n", + " name: pw}\n", + " xc: PBE\n", + "\n", + "System changes: positions, numbers, cell, pbc, initial_charges, initial_magmoms \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 729, 748\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 16*16*16 grid\n", + " Fine grid: 32*32*32 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 32*32*32 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 113.78 MiB\n", + " Calculator: 3.78 MiB\n", + " Density: 1.91 MiB\n", + " Arrays: 0.81 MiB\n", + " Localized functions: 0.79 MiB\n", + " Mixer: 0.31 MiB\n", + " Hamiltonian: 0.55 MiB\n", + " Arrays: 0.53 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.32 MiB\n", + " Arrays psit_nG: 0.55 MiB\n", + " Eigensolver: 0.22 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.32 MiB\n", + " PW-descriptor: 0.20 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | Al | \n", + " | .---------. \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 1.990671 1.990671 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 1.990671 0.000000 1.990671 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 1.990671 1.990671 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 3.981343 0.000000 0.000000 16 0.2488\n", + " 2. axis: yes 0.000000 3.981343 0.000000 16 0.2488\n", + " 3. axis: yes 0.000000 0.000000 3.981343 16 0.2488\n", + "\n", + " Lengths: 3.981343 3.981343 3.981343\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2488\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:14 -14.882425\n", + "iter: 2 11:29:14 -14.888515 -2.60 -0.94\n", + "iter: 3 11:29:14 -14.900036 -2.44 -0.96\n", + "iter: 4 11:29:14 -14.894259 -3.56 -1.21\n", + "iter: 5 11:29:14 -14.894996c -5.28 -2.02\n", + "iter: 6 11:29:14 -14.895377c -4.42 -2.09\n", + "iter: 7 11:29:15 -14.895377c -6.24 -3.62\n", + "iter: 8 11:29:15 -14.895377c -8.01c -3.81\n", + "iter: 9 11:29:15 -14.895378c -8.43c -3.83\n", + "iter: 10 11:29:15 -14.895378c -10.06c -4.52c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +21.064728\n", + "Potential: -11.809468\n", + "External: +0.000000\n", + "XC: -24.083645\n", + "Entropy (-ST): -0.066076\n", + "Local: -0.033954\n", + "--------------------------\n", + "Free energy: -14.928416\n", + "Extrapolated: -14.895378\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.98391 2.00000\n", + " 0 5 5.98391 2.00000\n", + " 0 6 5.98391 2.00000\n", + " 0 7 13.41407 0.00000\n", + "\n", + " 1 4 6.93763 1.99987\n", + " 1 5 6.93763 1.99987\n", + " 1 6 8.35072 0.02220\n", + " 1 7 8.35072 0.02220\n", + "\n", + "\n", + "Fermi level: 7.90175\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 739, 767\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 16*16*16 grid\n", + " Fine grid: 32*32*32 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 32*32*32 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 129.91 MiB\n", + " Calculator: 3.82 MiB\n", + " Density: 1.92 MiB\n", + " Arrays: 0.81 MiB\n", + " Localized functions: 0.80 MiB\n", + " Mixer: 0.31 MiB\n", + " Hamiltonian: 0.55 MiB\n", + " Arrays: 0.53 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.35 MiB\n", + " Arrays psit_nG: 0.56 MiB\n", + " Eigensolver: 0.22 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.32 MiB\n", + " PW-descriptor: 0.20 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | | \n", + " | .--Al-----. \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 1.997632 1.997632 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 1.997632 0.000000 1.997632 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 1.997632 1.997632 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 3.995264 0.000000 0.000000 16 0.2497\n", + " 2. axis: yes 0.000000 3.995264 0.000000 16 0.2497\n", + " 3. axis: yes 0.000000 0.000000 3.995264 16 0.2497\n", + "\n", + " Lengths: 3.995264 3.995264 3.995264\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2497\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:15 -14.901011\n", + "iter: 2 11:29:15 -14.906870 -2.60 -0.94\n", + "iter: 3 11:29:16 -14.916095 -2.47 -0.96\n", + "iter: 4 11:29:16 -14.909770 -3.60 -1.22\n", + "iter: 5 11:29:16 -14.910476 -5.19 -2.03\n", + "iter: 6 11:29:16 -14.910818c -4.39 -2.08\n", + "iter: 7 11:29:16 -14.910819c -6.19 -3.56\n", + "iter: 8 11:29:16 -14.910819c -7.98c -3.81\n", + "iter: 9 11:29:16 -14.910820c -8.50c -3.83\n", + "iter: 10 11:29:16 -14.910820c -10.09c -4.48c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (0.000000, -0.000000, 0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +19.609492\n", + "Potential: -10.740904\n", + "External: +0.000000\n", + "XC: -23.714414\n", + "Entropy (-ST): -0.065421\n", + "Local: -0.032284\n", + "--------------------------\n", + "Free energy: -14.943530\n", + "Extrapolated: -14.910820\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.88373 2.00000\n", + " 0 5 5.88373 2.00000\n", + " 0 6 5.88373 2.00000\n", + " 0 7 13.25946 0.00000\n", + "\n", + " 1 4 6.83715 1.99985\n", + " 1 5 6.83715 1.99985\n", + " 1 6 8.25115 0.01891\n", + " 1 7 8.25115 0.01891\n", + "\n", + "\n", + "Fermi level: 7.78599\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 748, 767\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 130.07 MiB\n", + " Calculator: 4.59 MiB\n", + " Density: 2.40 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.80 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.41 MiB\n", + " Arrays psit_nG: 0.56 MiB\n", + " Eigensolver: 0.22 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.32 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | Al | \n", + " | .---------. \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.004544 2.004544 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.004544 0.000000 2.004544 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.004544 2.004544 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.009088 0.000000 0.000000 18 0.2227\n", + " 2. axis: yes 0.000000 4.009088 0.000000 18 0.2227\n", + " 3. axis: yes 0.000000 0.000000 4.009088 18 0.2227\n", + "\n", + " Lengths: 4.009088 4.009088 4.009088\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2227\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:17 -14.915469\n", + "iter: 2 11:29:17 -14.921113 -2.61 -0.94\n", + "iter: 3 11:29:18 -14.928129 -2.49 -0.95\n", + "iter: 4 11:29:18 -14.921329 -3.65 -1.23\n", + "iter: 5 11:29:18 -14.921925 -5.12 -2.04\n", + "iter: 6 11:29:18 -14.922306c -4.38 -2.09\n", + "iter: 7 11:29:18 -14.922307c -6.21 -3.62\n", + "iter: 8 11:29:18 -14.922306c -8.03c -3.81\n", + "iter: 9 11:29:18 -14.922307c -8.51c -3.81\n", + "iter: 10 11:29:19 -14.922307c -10.13c -4.49c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +18.208265\n", + "Potential: -9.713675\n", + "External: +0.000000\n", + "XC: -23.353256\n", + "Entropy (-ST): -0.064736\n", + "Local: -0.031272\n", + "--------------------------\n", + "Free energy: -14.954675\n", + "Extrapolated: -14.922307\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.78499 2.00000\n", + " 0 5 5.78499 2.00000\n", + " 0 6 5.78499 2.00000\n", + " 0 7 13.10778 0.00000\n", + "\n", + " 1 4 6.73786 1.99982\n", + " 1 5 6.73786 1.99982\n", + " 1 6 8.15344 0.01607\n", + " 1 7 8.15344 0.01607\n", + "\n", + "\n", + "Fermi level: 7.67184\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 751, 784\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 132.91 MiB\n", + " Calculator: 4.62 MiB\n", + " Density: 2.41 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.81 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.44 MiB\n", + " Arrays psit_nG: 0.57 MiB\n", + " Eigensolver: 0.23 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.33 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | | \n", + " | .--Al-----. \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.011409 2.011409 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.011409 0.000000 2.011409 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.011409 2.011409 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.022818 0.000000 0.000000 18 0.2235\n", + " 2. axis: yes 0.000000 4.022818 0.000000 18 0.2235\n", + " 3. axis: yes 0.000000 0.000000 4.022818 18 0.2235\n", + "\n", + " Lengths: 4.022818 4.022818 4.022818\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2235\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:19 -14.926405\n", + "iter: 2 11:29:19 -14.931838 -2.61 -0.94\n", + "iter: 3 11:29:19 -14.936753 -2.52 -0.95\n", + "iter: 4 11:29:20 -14.929473 -3.69 -1.23\n", + "iter: 5 11:29:20 -14.930009 -5.05 -2.04\n", + "iter: 6 11:29:20 -14.930391c -4.35 -2.09\n", + "iter: 7 11:29:20 -14.930392c -6.26 -3.62\n", + "iter: 8 11:29:20 -14.930391c -8.07c -3.81\n", + "iter: 9 11:29:20 -14.930392c -8.53c -3.79\n", + "iter: 10 11:29:20 -14.930392c -10.13c -4.48c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (0.000000, 0.000000, 0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +16.855968\n", + "Potential: -8.724549\n", + "External: +0.000000\n", + "XC: -22.999659\n", + "Entropy (-ST): -0.064031\n", + "Local: -0.030137\n", + "--------------------------\n", + "Free energy: -14.962408\n", + "Extrapolated: -14.930392\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.68763 2.00000\n", + " 0 5 5.68763 2.00000\n", + " 0 6 5.68763 2.00000\n", + " 0 7 12.95893 0.00000\n", + "\n", + " 1 4 6.63963 1.99980\n", + " 1 5 6.63963 1.99980\n", + " 1 6 8.05750 0.01363\n", + " 1 7 8.05750 0.01363\n", + "\n", + "\n", + "Fermi level: 7.55929\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 751, 792\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 134.45 MiB\n", + " Calculator: 4.64 MiB\n", + " Density: 2.42 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.82 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.45 MiB\n", + " Arrays psit_nG: 0.58 MiB\n", + " Eigensolver: 0.23 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.33 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | | \n", + " | .--Al-----. \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.018227 2.018227 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.018227 0.000000 2.018227 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.018227 2.018227 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.036455 0.000000 0.000000 18 0.2242\n", + " 2. axis: yes 0.000000 4.036455 0.000000 18 0.2242\n", + " 3. axis: yes 0.000000 0.000000 4.036455 18 0.2242\n", + "\n", + " Lengths: 4.036455 4.036455 4.036455\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2242\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:21 -14.933780\n", + "iter: 2 11:29:21 -14.939007 -2.61 -0.94\n", + "iter: 3 11:29:21 -14.941916 -2.55 -0.95\n", + "iter: 4 11:29:21 -14.934186 -3.72 -1.23\n", + "iter: 5 11:29:21 -14.934636 -5.00 -2.05\n", + "iter: 6 11:29:22 -14.935049c -4.32 -2.10\n", + "iter: 7 11:29:22 -14.935048c -6.37 -3.46\n", + "iter: 8 11:29:22 -14.935048c -8.13c -3.80\n", + "iter: 9 11:29:22 -14.935049c -8.50c -3.76\n", + "iter: 10 11:29:22 -14.935049c -10.15c -4.48c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (0.000000, 0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +15.551943\n", + "Potential: -7.772560\n", + "External: +0.000000\n", + "XC: -22.653530\n", + "Entropy (-ST): -0.063320\n", + "Local: -0.029241\n", + "--------------------------\n", + "Free energy: -14.966709\n", + "Extrapolated: -14.935049\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.59162 2.00000\n", + " 0 5 5.59162 2.00000\n", + " 0 6 5.59162 2.00000\n", + " 0 7 12.81284 0.00000\n", + "\n", + " 1 4 6.54249 1.99977\n", + " 1 5 6.54249 1.99977\n", + " 1 6 7.96330 0.01153\n", + " 1 7 7.96330 0.01153\n", + "\n", + "\n", + "Fermi level: 7.44830\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 751, 792\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 135.60 MiB\n", + " Calculator: 4.66 MiB\n", + " Density: 2.43 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.83 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.45 MiB\n", + " Arrays psit_nG: 0.58 MiB\n", + " Eigensolver: 0.23 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.33 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | | \n", + " | .--Al-----. \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.025000 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.025000 0.000000 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.025000 2.025000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.050000 0.000000 0.000000 18 0.2250\n", + " 2. axis: yes 0.000000 4.050000 0.000000 18 0.2250\n", + " 3. axis: yes 0.000000 0.000000 4.050000 18 0.2250\n", + "\n", + " Lengths: 4.050000 4.050000 4.050000\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2250\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:23 -14.937999\n", + "iter: 2 11:29:23 -14.943025 -2.61 -0.94\n", + "iter: 3 11:29:23 -14.944013 -2.57 -0.95\n", + "iter: 4 11:29:23 -14.935856 -3.75 -1.24\n", + "iter: 5 11:29:23 -14.936188 -4.96 -2.05\n", + "iter: 6 11:29:23 -14.936670c -4.31 -2.12\n", + "iter: 7 11:29:24 -14.936666c -6.58 -3.23\n", + "iter: 8 11:29:24 -14.936665c -8.27c -3.81\n", + "iter: 9 11:29:24 -14.936666c -8.42c -3.71\n", + "iter: 10 11:29:24 -14.936666c -10.18c -4.51c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +14.292126\n", + "Potential: -6.854900\n", + "External: +0.000000\n", + "XC: -22.314456\n", + "Entropy (-ST): -0.062606\n", + "Local: -0.028133\n", + "--------------------------\n", + "Free energy: -14.967970\n", + "Extrapolated: -14.936666\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.49693 2.00000\n", + " 0 5 5.49693 2.00000\n", + " 0 6 5.49693 2.00000\n", + " 0 7 12.66943 0.00000\n", + "\n", + " 1 4 6.44637 1.99973\n", + " 1 5 6.44637 1.99973\n", + " 1 6 7.87077 0.00975\n", + " 1 7 7.87077 0.00975\n", + "\n", + "\n", + "Fermi level: 7.33890\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 751, 796\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 137.12 MiB\n", + " Calculator: 4.66 MiB\n", + " Density: 2.44 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.83 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.46 MiB\n", + " Arrays psit_nG: 0.58 MiB\n", + " Eigensolver: 0.23 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.33 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | | \n", + " | .--Al-----. \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.031728 2.031728 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.031728 0.000000 2.031728 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.031728 2.031728 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.063455 0.000000 0.000000 18 0.2257\n", + " 2. axis: yes 0.000000 4.063455 0.000000 18 0.2257\n", + " 3. axis: yes 0.000000 0.000000 4.063455 18 0.2257\n", + "\n", + " Lengths: 4.063455 4.063455 4.063455\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2257\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:24 -14.939033\n", + "iter: 2 11:29:25 -14.943862 -2.61 -0.94\n", + "iter: 3 11:29:25 -14.943014c -2.60 -0.95\n", + "iter: 4 11:29:25 -14.934451 -3.78 -1.24\n", + "iter: 5 11:29:25 -14.934640 -4.97 -2.06\n", + "iter: 6 11:29:25 -14.935221c -4.32 -2.15\n", + "iter: 7 11:29:25 -14.935212c -6.84 -3.06\n", + "iter: 8 11:29:26 -14.935212c -8.42c -3.80\n", + "iter: 9 11:29:26 -14.935213c -8.20c -3.64\n", + "iter: 10 11:29:26 -14.935213c -9.82c -4.52c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +13.077726\n", + "Potential: -5.972581\n", + "External: +0.000000\n", + "XC: -21.982427\n", + "Entropy (-ST): -0.061895\n", + "Local: -0.026983\n", + "--------------------------\n", + "Free energy: -14.966160\n", + "Extrapolated: -14.935213\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.40354 2.00000\n", + " 0 5 5.40354 2.00000\n", + " 0 6 5.40354 2.00000\n", + " 0 7 12.52862 0.00000\n", + "\n", + " 1 4 6.35125 1.99970\n", + " 1 5 6.35125 1.99970\n", + " 1 6 7.77989 0.00823\n", + " 1 7 7.77989 0.00823\n", + "\n", + "\n", + "Fermi level: 7.23099\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 796, 807\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 138.80 MiB\n", + " Calculator: 4.69 MiB\n", + " Density: 2.45 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.84 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.47 MiB\n", + " Arrays psit_nG: 0.59 MiB\n", + " Eigensolver: 0.23 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.34 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " / | | \n", + " * | | \n", + " |Al| | \n", + " | .---------. \n", + " | / Al / \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.038411 2.038411 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.038411 0.000000 2.038411 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.038411 2.038411 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.076822 0.000000 0.000000 18 0.2265\n", + " 2. axis: yes 0.000000 4.076822 0.000000 18 0.2265\n", + " 3. axis: yes 0.000000 0.000000 4.076822 18 0.2265\n", + "\n", + " Lengths: 4.076822 4.076822 4.076822\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2265\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:26 -14.937251\n", + "iter: 2 11:29:26 -14.941885 -2.62 -0.94\n", + "iter: 3 11:29:27 -14.939271c -2.62 -0.95\n", + "iter: 4 11:29:27 -14.930329 -3.80 -1.24\n", + "iter: 5 11:29:27 -14.930379 -5.05 -2.06\n", + "iter: 6 11:29:27 -14.931060c -4.36 -2.16\n", + "iter: 7 11:29:27 -14.931044c -6.85 -2.92\n", + "iter: 8 11:29:27 -14.931044c -8.18c -3.78\n", + "iter: 9 11:29:27 -14.931045c -7.93c -3.57\n", + "iter: 10 11:29:28 -14.931045c -9.45c -4.64c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +11.900238\n", + "Potential: -5.117966\n", + "External: +0.000000\n", + "XC: -21.656807\n", + "Entropy (-ST): -0.061203\n", + "Local: -0.025909\n", + "--------------------------\n", + "Free energy: -14.961646\n", + "Extrapolated: -14.931045\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.31128 2.00000\n", + " 0 5 5.31128 2.00000\n", + " 0 6 5.31128 2.00000\n", + " 0 7 12.39031 0.00000\n", + "\n", + " 1 4 6.25708 1.99966\n", + " 1 5 6.25708 1.99966\n", + " 1 6 7.69059 0.00695\n", + " 1 7 7.69059 0.00695\n", + "\n", + "\n", + "Fermi level: 7.12468\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 799, 814\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 138.80 MiB\n", + " Calculator: 4.71 MiB\n", + " Density: 2.46 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.85 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.48 MiB\n", + " Arrays psit_nG: 0.60 MiB\n", + " Eigensolver: 0.23 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.34 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " / | | \n", + " * | | \n", + " |Al| | \n", + " | .---------. \n", + " | / Al / \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.045051 2.045051 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.045051 0.000000 2.045051 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.045051 2.045051 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.090102 0.000000 0.000000 18 0.2272\n", + " 2. axis: yes 0.000000 4.090102 0.000000 18 0.2272\n", + " 3. axis: yes 0.000000 0.000000 4.090102 18 0.2272\n", + "\n", + " Lengths: 4.090102 4.090102 4.090102\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2272\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:28 -14.932645\n", + "iter: 2 11:29:28 -14.937089 -2.62 -0.94\n", + "iter: 3 11:29:28 -14.932789c -2.65 -0.95\n", + "iter: 4 11:29:29 -14.923493 -3.82 -1.25\n", + "iter: 5 11:29:29 -14.923447 -5.23 -2.07\n", + "iter: 6 11:29:29 -14.924190c -4.40 -2.16\n", + "iter: 7 11:29:29 -14.924165c -6.57 -2.79\n", + "iter: 8 11:29:29 -14.924165c -7.67c -3.77\n", + "iter: 9 11:29:29 -14.924165c -7.77c -3.50\n", + "iter: 10 11:29:29 -14.924165c -9.28c -4.80c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, 0.000000, 0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +10.761960\n", + "Potential: -4.293213\n", + "External: +0.000000\n", + "XC: -21.337659\n", + "Entropy (-ST): -0.060526\n", + "Local: -0.024991\n", + "--------------------------\n", + "Free energy: -14.954428\n", + "Extrapolated: -14.924165\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.22036 2.00000\n", + " 0 5 5.22036 2.00000\n", + " 0 6 5.22036 2.00000\n", + " 0 7 12.25448 0.00000\n", + "\n", + " 1 4 6.16384 1.99962\n", + " 1 5 6.16384 1.99962\n", + " 1 6 7.60284 0.00585\n", + " 1 7 7.60284 0.00585\n", + "\n", + "\n", + "Fermi level: 7.01977\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 799, 824\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 138.80 MiB\n", + " Calculator: 4.73 MiB\n", + " Density: 2.46 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.86 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.50 MiB\n", + " Arrays psit_nG: 0.60 MiB\n", + " Eigensolver: 0.24 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.35 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " / | | \n", + " * | | \n", + " |Al| | \n", + " | .---------. \n", + " | / Al / \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.051648 2.051648 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.051648 0.000000 2.051648 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.051648 2.051648 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.103296 0.000000 0.000000 18 0.2280\n", + " 2. axis: yes 0.000000 4.103296 0.000000 18 0.2280\n", + " 3. axis: yes 0.000000 0.000000 4.103296 18 0.2280\n", + "\n", + " Lengths: 4.103296 4.103296 4.103296\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2280\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:30 -14.925350\n", + "iter: 2 11:29:30 -14.929610 -2.62 -0.94\n", + "iter: 3 11:29:30 -14.923699c -2.67 -0.95\n", + "iter: 4 11:29:30 -14.914071 -3.84 -1.25\n", + "iter: 5 11:29:30 -14.913995 -5.39 -2.07\n", + "iter: 6 11:29:31 -14.914744c -4.46 -2.14\n", + "iter: 7 11:29:31 -14.914703c -6.23 -2.67\n", + "iter: 8 11:29:31 -14.914703c -7.29 -3.73\n", + "iter: 9 11:29:31 -14.914704c -7.61c -3.42\n", + "iter: 10 11:29:31 -14.914704c -9.08c -4.77c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (0.000000, 0.000000, 0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +9.664679\n", + "Potential: -3.500677\n", + "External: +0.000000\n", + "XC: -21.025036\n", + "Entropy (-ST): -0.059878\n", + "Local: -0.023731\n", + "--------------------------\n", + "Free energy: -14.944642\n", + "Extrapolated: -14.914704\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.13063 2.00000\n", + " 0 5 5.13063 2.00000\n", + " 0 6 5.13063 2.00000\n", + " 0 7 12.12106 0.00000\n", + "\n", + " 1 4 6.07144 1.99957\n", + " 1 5 6.07144 1.99957\n", + " 1 6 7.51659 0.00494\n", + " 1 7 7.51659 0.00494\n", + "\n", + "\n", + "Fermi level: 6.91650\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 799, 824\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 138.80 MiB\n", + " Calculator: 4.75 MiB\n", + " Density: 2.48 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.88 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.50 MiB\n", + " Arrays psit_nG: 0.60 MiB\n", + " Eigensolver: 0.24 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.35 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " / | | \n", + " * | | \n", + " | Al | \n", + " | .---------. \n", + " | / All / \n", + " |/ / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.058203 2.058203 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.058203 0.000000 2.058203 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.058203 2.058203 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.116405 0.000000 0.000000 18 0.2287\n", + " 2. axis: yes 0.000000 4.116405 0.000000 18 0.2287\n", + " 3. axis: yes 0.000000 0.000000 4.116405 18 0.2287\n", + "\n", + " Lengths: 4.116405 4.116405 4.116405\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2287\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:32 -14.915473\n", + "iter: 2 11:29:32 -14.919556 -2.62 -0.94\n", + "iter: 3 11:29:32 -14.912114 -2.70 -0.95\n", + "iter: 4 11:29:32 -14.902180 -3.86 -1.25\n", + "iter: 5 11:29:32 -14.902124 -5.50 -2.07\n", + "iter: 6 11:29:32 -14.902858c -4.47 -2.11\n", + "iter: 7 11:29:33 -14.902774c -5.84 -2.51\n", + "iter: 8 11:29:33 -14.902775c -6.88 -3.71\n", + "iter: 9 11:29:33 -14.902775c -7.36 -3.30\n", + "iter: 10 11:29:33 -14.902775c -8.69c -4.59c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (0.000000, -0.000000, 0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +8.611038\n", + "Potential: -2.741920\n", + "External: +0.000000\n", + "XC: -20.719117\n", + "Entropy (-ST): -0.059259\n", + "Local: -0.023145\n", + "--------------------------\n", + "Free energy: -14.932404\n", + "Extrapolated: -14.902775\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.04210 2.00000\n", + " 0 5 5.04210 2.00000\n", + " 0 6 5.04210 2.00000\n", + " 0 7 11.98998 0.00000\n", + "\n", + " 1 4 5.97999 1.99953\n", + " 1 5 5.97999 1.99953\n", + " 1 6 7.43183 0.00417\n", + " 1 7 7.43183 0.00417\n", + "\n", + "\n", + "Fermi level: 6.81475\n", + "\n", + "No gap\n" + ] + }, + { + "data": { + "text/plain": [ + "{'energy': {0.95: -14.895378072823371,\n", + " 0.96: -14.910819737657517,\n", + " 0.97: -14.922307241120716,\n", + " 0.98: -14.930392279319857,\n", + " 0.99: -14.935048569966273,\n", + " 1.0: -14.93666639636423,\n", + " 1.01: -14.935212782128978,\n", + " 1.02: -14.931045138840679,\n", + " 1.03: -14.924165445707086,\n", + " 1.04: -14.914703574004657,\n", + " 1.05: -14.902774559133963}}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result_dict = evaluate_with_ase(\n", + " task_dict=task_dict,\n", + " ase_calculator=GPAW(\n", + " xc=\"PBE\",\n", + " mode=PW(300),\n", + " kpts=(3, 3, 3)\n", + " )\n", + ")\n", + "result_dict" + ] + }, + { + "cell_type": "markdown", + "id": "61113aa0-8b91-4867-bee2-47b5b7d72a0d", + "metadata": {}, + "source": [ + "In analogy to the `task_dict` which defines the tasks to be executed by the simulation code the `result_dict` summarizes \n", + "the results of the calculations. In this case the energies calculated for the specific strains. By ordering both the \n", + "`task_dict` and the `result_dict` with the same labels, the `EnergyVolumeCurveWorkflow` object is able to match the \n", + "calculation results to the corresponding structure. Finally, in the third step the `analyse_structures()` function takes\n", + "the `result_dict` as an input and fits the Equation of State with the fitting parameters defined in the first step:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "54b0d2c8-f8c7-4b9a-85c9-303a04976dfc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'poly_fit': array([-9.30297838e-05, 2.19434659e-02, -1.68388816e+00, 2.73605421e+01]),\n", + " 'fit_type': 'polynomial',\n", + " 'fit_order': 3,\n", + " 'volume_eq': 66.44252286136938,\n", + " 'energy_eq': -14.936703222046024,\n", + " 'bulkmodul_eq': 72.38919826515837,\n", + " 'b_prime_eq': 4.453836548660183,\n", + " 'least_square_error': 4.432974524482514e-09,\n", + " 'volume': [63.10861874999998,\n", + " 63.77291999999998,\n", + " 64.43722124999998,\n", + " 65.1015225,\n", + " 65.76582375000004,\n", + " 66.43012500000002,\n", + " 67.09442624999994,\n", + " 67.75872750000002,\n", + " 68.42302874999999,\n", + " 69.08732999999997,\n", + " 69.75163125000002],\n", + " 'energy': [-14.895378072823371,\n", + " -14.910819737657517,\n", + " -14.922307241120716,\n", + " -14.930392279319857,\n", + " -14.935048569966273,\n", + " -14.93666639636423,\n", + " -14.935212782128978,\n", + " -14.931045138840679,\n", + " -14.924165445707086,\n", + " -14.914703574004657,\n", + " -14.902774559133963]}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fit_dict = workflow.analyse_structures(output_dict=result_dict)\n", + "fit_dict" + ] + }, + { + "cell_type": "markdown", + "id": "4c7eeb29-2d1f-44c2-8fcb-09be2bd5f717", + "metadata": {}, + "source": [ + "The bulk modulus for Aluminium is calculated using the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code by fitting\n", + "the Equation of State with a third order polynomial over a volume range of +/-5% to be 72.3GPa. " + ] + }, + { + "cell_type": "markdown", + "id": "39b116c1-65fb-4c8b-a80e-b8f331012849", + "metadata": {}, + "source": [ + "## Elastic Matrix\n", + "An alternative approach to calculate the bulk modulus is based on the relation `B = (1/3) (C11 + 2 C12 )`. The bulk\n", + "modulus can be calculated based on the sum of the first elastic constant `C11` and twice the second elastic constant `C12`\n", + "divided by there. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "19aae7eb-7fa2-4cb0-b109-d2bad7aedc39", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'calc_energy': OrderedDict([('s_e_0',\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])),\n", + " ('s_01_e_m0_05000',\n", + " Atoms(symbols='Al4', pbc=True, cell=[3.8421673571095107, 3.8421673571095107, 3.8421673571095107])),\n", + " ('s_01_e_m0_02500',\n", + " Atoms(symbols='Al4', pbc=True, cell=[3.94745170964797, 3.94745170964797, 3.94745170964797])),\n", + " ('s_01_e_0_02500',\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.150015060213919, 4.150015060213919, 4.150015060213919])),\n", + " ('s_01_e_0_05000',\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.247675835085893, 4.247675835085893, 4.247675835085893])),\n", + " ('s_08_e_m0_05000',\n", + " Atoms(symbols='Al4', pbc=True, cell=[3.8421673571095107, 3.8421673571095107, 4.05])),\n", + " ('s_08_e_m0_02500',\n", + " Atoms(symbols='Al4', pbc=True, cell=[3.94745170964797, 3.94745170964797, 4.05])),\n", + " ('s_08_e_0_02500',\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.150015060213919, 4.150015060213919, 4.05])),\n", + " ('s_08_e_0_05000',\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.247675835085893, 4.247675835085893, 4.05])),\n", + " ('s_23_e_m0_05000',\n", + " Atoms(symbols='Al4', pbc=True, cell=[[4.039260597921188, -0.2084152371679185, -0.2084152371679185], [-0.2084152371679185, 4.039260597921188, -0.2084152371679185], [-0.2084152371679185, -0.2084152371679185, 4.039260597921188]])),\n", + " ('s_23_e_m0_02500',\n", + " Atoms(symbols='Al4', pbc=True, cell=[[4.047399159178924, -0.1026159010347065, -0.1026159010347065], [-0.1026159010347065, 4.047399159178924, -0.1026159010347065], [-0.1026159010347065, -0.1026159010347065, 4.047399159178924]])),\n", + " ('s_23_e_0_02500',\n", + " Atoms(symbols='Al4', pbc=True, cell=[[4.047526418127057, 0.1000747084794181, 0.1000747084794181], [0.1000747084794181, 4.047526418127057, 0.1000747084794181], [0.1000747084794181, 0.1000747084794181, 4.047526418127057]])),\n", + " ('s_23_e_0_05000',\n", + " Atoms(symbols='Al4', pbc=True, cell=[[4.0402958099962145, 0.19812845289162093, 0.19812845289162093], [0.19812845289162093, 4.0402958099962145, 0.19812845289162093], [0.19812845289162093, 0.19812845289162093, 4.0402958099962145]]))])}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from ase.build import bulk\n", + "from atomistics.calculators.ase import evaluate_with_ase\n", + "from atomistics.workflows.elastic.workflow import ElasticMatrixWorkflow\n", + "from gpaw import GPAW, PW\n", + "\n", + "workflow = ElasticMatrixWorkflow(\n", + " structure=bulk(\"Al\", a=4.05, cubic=True),\n", + " num_of_point=5,\n", + " eps_range=0.05,\n", + " sqrt_eta=True,\n", + " fit_order=2\n", + ")\n", + "task_dict = workflow.generate_structures()\n", + "task_dict" + ] + }, + { + "cell_type": "markdown", + "id": "98d423dc-db2e-4b3d-a336-031d48e3098d", + "metadata": {}, + "source": [ + "In analogy to the example with the `EnergyVolumeCurveWorkflow` above, the `ElasticMatrixWorkflow` is initialized with all\n", + "the parameters required to generate the atomistic structures and afterwards fit the resulting energies. By calling the\n", + "`generate_structures()` function the task dictionary `task_dict` is generated. The task dictionary specifies that the \n", + "energy should be calculated for a total of thirteen structures with different displacements. In the second step the \n", + "structures are again evaluated with the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code: " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6f603915-171c-4458-b67f-81670f64686c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " ___ ___ ___ _ _ _ \n", + " | | |_ | | | | \n", + " | | | | | . | | | | \n", + " |__ | _|___|_____| 23.9.1\n", + " |___|_| \n", + "\n", + "User: janssen@cmpc06\n", + "Date: Wed Nov 15 11:29:33 2023\n", + "Arch: x86_64\n", + "Pid: 15086\n", + "CWD: /home/janssen/notebooks/2023/2023-11-15-atomistics-example\n", + "Python: 3.10.13\n", + "gpaw: /home/janssen/mambaforge/lib/python3.10/site-packages/gpaw\n", + "_gpaw: /home/janssen/mambaforge/lib/python3.10/site-packages/\n", + " _gpaw.cpython-310-x86_64-linux-gnu.so\n", + "ase: /home/janssen/mambaforge/lib/python3.10/site-packages/ase (version 3.22.1)\n", + "numpy: /home/janssen/mambaforge/lib/python3.10/site-packages/numpy (version 1.26.0)\n", + "scipy: /home/janssen/mambaforge/lib/python3.10/site-packages/scipy (version 1.11.3)\n", + "libxc: 6.2.2\n", + "units: Angstrom and eV\n", + "cores: 1\n", + "OpenMP: True\n", + "OMP_NUM_THREADS: 1\n", + "\n", + "Input parameters:\n", + " kpts: [3 3 3]\n", + " mode: {ecut: 300.0,\n", + " name: pw}\n", + " xc: PBE\n", + "\n", + "System changes: positions, numbers, cell, pbc, initial_charges, initial_magmoms \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 751, 792\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 140.25 MiB\n", + " Calculator: 4.66 MiB\n", + " Density: 2.43 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.83 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.45 MiB\n", + " Arrays psit_nG: 0.58 MiB\n", + " Eigensolver: 0.23 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.33 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | | \n", + " | .--Al-----. \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.025000 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.025000 0.000000 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.025000 2.025000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.050000 0.000000 0.000000 18 0.2250\n", + " 2. axis: yes 0.000000 4.050000 0.000000 18 0.2250\n", + " 3. axis: yes 0.000000 0.000000 4.050000 18 0.2250\n", + "\n", + " Lengths: 4.050000 4.050000 4.050000\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2250\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:34 -14.937999\n", + "iter: 2 11:29:34 -14.943025 -2.61 -0.94\n", + "iter: 3 11:29:34 -14.944013 -2.57 -0.95\n", + "iter: 4 11:29:34 -14.935856 -3.75 -1.24\n", + "iter: 5 11:29:34 -14.936188 -4.96 -2.05\n", + "iter: 6 11:29:34 -14.936670c -4.31 -2.12\n", + "iter: 7 11:29:34 -14.936666c -6.58 -3.23\n", + "iter: 8 11:29:35 -14.936665c -8.27c -3.81\n", + "iter: 9 11:29:35 -14.936666c -8.42c -3.71\n", + "iter: 10 11:29:35 -14.936666c -10.18c -4.51c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +14.292126\n", + "Potential: -6.854900\n", + "External: +0.000000\n", + "XC: -22.314456\n", + "Entropy (-ST): -0.062606\n", + "Local: -0.028133\n", + "--------------------------\n", + "Free energy: -14.967970\n", + "Extrapolated: -14.936666\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.49693 2.00000\n", + " 0 5 5.49693 2.00000\n", + " 0 6 5.49693 2.00000\n", + " 0 7 12.66943 0.00000\n", + "\n", + " 1 4 6.44637 1.99973\n", + " 1 5 6.44637 1.99973\n", + " 1 6 7.87077 0.00975\n", + " 1 7 7.87077 0.00975\n", + "\n", + "\n", + "Fermi level: 7.33890\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 658, 691\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 16*16*16 grid\n", + " Fine grid: 32*32*32 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 32*32*32 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 143.85 MiB\n", + " Calculator: 3.61 MiB\n", + " Density: 1.84 MiB\n", + " Arrays: 0.81 MiB\n", + " Localized functions: 0.71 MiB\n", + " Mixer: 0.31 MiB\n", + " Hamiltonian: 0.55 MiB\n", + " Arrays: 0.53 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.01 MiB\n", + " Wavefunctions: 1.23 MiB\n", + " Arrays psit_nG: 0.51 MiB\n", + " Eigensolver: 0.20 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.29 MiB\n", + " PW-descriptor: 0.20 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .--------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | | \n", + " | .-Al-----. \n", + " |/ Al / \n", + " Al-------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 1.921084 1.921084 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 1.921084 0.000000 1.921084 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 1.921084 1.921084 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 3.842167 0.000000 0.000000 16 0.2401\n", + " 2. axis: yes 0.000000 3.842167 0.000000 16 0.2401\n", + " 3. axis: yes 0.000000 0.000000 3.842167 16 0.2401\n", + "\n", + " Lengths: 3.842167 3.842167 3.842167\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2401\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:35 -14.458328\n", + "iter: 2 11:29:36 -14.467077 -2.57 -0.94\n", + "iter: 3 11:29:36 -14.505006 -2.15 -0.96\n", + "iter: 4 11:29:36 -14.507040 -3.05 -1.16\n", + "iter: 5 11:29:36 -14.508034c -5.81 -1.94\n", + "iter: 6 11:29:36 -14.509159c -4.57 -2.12\n", + "iter: 7 11:29:36 -14.509154c -6.78 -2.83\n", + "iter: 8 11:29:36 -14.509155c -8.99c -3.51\n", + "iter: 9 11:29:36 -14.509158c -7.43c -3.62\n", + "iter: 10 11:29:36 -14.509158c -9.08c -4.97c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, 0.000000, 0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +38.117828\n", + "Potential: -24.459808\n", + "External: +0.000000\n", + "XC: -28.083947\n", + "Entropy (-ST): -0.069078\n", + "Local: -0.048692\n", + "--------------------------\n", + "Free energy: -14.543697\n", + "Extrapolated: -14.509158\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 7.02831 2.00000\n", + " 0 5 7.02831 2.00000\n", + " 0 6 7.02831 2.00000\n", + " 0 7 15.06935 0.00000\n", + "\n", + " 1 4 7.97110 1.99998\n", + " 1 5 7.97110 1.99998\n", + " 1 6 9.41360 0.08491\n", + " 1 7 9.41360 0.08491\n", + "\n", + "\n", + "Fermi level: 9.10201\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 717, 739\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 16*16*16 grid\n", + " Fine grid: 32*32*32 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 32*32*32 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 144.05 MiB\n", + " Calculator: 3.74 MiB\n", + " Density: 1.89 MiB\n", + " Arrays: 0.81 MiB\n", + " Localized functions: 0.77 MiB\n", + " Mixer: 0.31 MiB\n", + " Hamiltonian: 0.55 MiB\n", + " Arrays: 0.53 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.31 MiB\n", + " Arrays psit_nG: 0.54 MiB\n", + " Eigensolver: 0.21 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.31 MiB\n", + " PW-descriptor: 0.20 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | Al | \n", + " | .---------. \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 1.973726 1.973726 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 1.973726 0.000000 1.973726 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 1.973726 1.973726 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 3.947452 0.000000 0.000000 16 0.2467\n", + " 2. axis: yes 0.000000 3.947452 0.000000 16 0.2467\n", + " 3. axis: yes 0.000000 0.000000 3.947452 16 0.2467\n", + "\n", + " Lengths: 3.947452 3.947452 3.947452\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2467\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:37 -14.820923\n", + "iter: 2 11:29:37 -14.827577 -2.60 -0.94\n", + "iter: 3 11:29:37 -14.844992 -2.37 -0.96\n", + "iter: 4 11:29:37 -14.840675 -3.45 -1.20\n", + "iter: 5 11:29:37 -14.841471c -5.48 -2.00\n", + "iter: 6 11:29:38 -14.841983c -4.48 -2.09\n", + "iter: 7 11:29:38 -14.841981c -6.53 -3.59\n", + "iter: 8 11:29:38 -14.841981c -8.15c -3.79\n", + "iter: 9 11:29:38 -14.841982c -8.25c -3.82\n", + "iter: 10 11:29:38 -14.841982c -9.93c -4.59c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (0.000000, 0.000000, 0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +24.783564\n", + "Potential: -14.549751\n", + "External: +0.000000\n", + "XC: -25.004962\n", + "Entropy (-ST): -0.067471\n", + "Local: -0.037099\n", + "--------------------------\n", + "Free energy: -14.875718\n", + "Extrapolated: -14.841982\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 6.23092 2.00000\n", + " 0 5 6.23092 2.00000\n", + " 0 6 6.23092 2.00000\n", + " 0 7 13.79846 0.00000\n", + "\n", + " 1 4 7.18413 1.99991\n", + " 1 5 7.18413 1.99991\n", + " 1 6 8.59802 0.03225\n", + " 1 7 8.59802 0.03225\n", + "\n", + "\n", + "Fermi level: 8.18692\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 836, 856\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 144.58 MiB\n", + " Calculator: 4.81 MiB\n", + " Density: 2.49 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.89 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.55 MiB\n", + " Arrays psit_nG: 0.63 MiB\n", + " Eigensolver: 0.24 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.36 MiB\n", + " PW-descriptor: 0.27 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " / | | \n", + " * | | \n", + " | Al | \n", + " | .-Al------. \n", + " | / Al / \n", + " |/ / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.075008 2.075008 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.075008 0.000000 2.075008 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.075008 2.075008 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.150015 0.000000 0.000000 18 0.2306\n", + " 2. axis: yes 0.000000 4.150015 0.000000 18 0.2306\n", + " 3. axis: yes 0.000000 0.000000 4.150015 18 0.2306\n", + "\n", + " Lengths: 4.150015 4.150015 4.150015\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2306\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:38 -14.879464\n", + "iter: 2 11:29:39 -14.883109 -2.62 -0.94\n", + "iter: 3 11:29:39 -14.871975 -2.76 -0.96\n", + "iter: 4 11:29:39 -14.861344 -3.91 -1.26\n", + "iter: 5 11:29:39 -14.861380 -5.65 -2.08\n", + "iter: 6 11:29:39 -14.861874c -4.97 -2.07\n", + "iter: 7 11:29:39 -14.861850c -5.36 -2.63\n", + "iter: 8 11:29:39 -14.861849c -7.28 -3.56\n", + "iter: 9 11:29:40 -14.861852c -6.79 -3.44\n", + "iter: 10 11:29:40 -14.861852c -7.30 -3.41\n", + "iter: 11 11:29:40 -14.861852c -9.44c -3.85\n", + "iter: 12 11:29:40 -14.861851c -8.74c -4.03c\n", + "\n", + "Converged after 12 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +6.024647\n", + "Potential: -0.884511\n", + "External: +0.000000\n", + "XC: -19.951921\n", + "Entropy (-ST): -0.057798\n", + "Local: -0.021168\n", + "--------------------------\n", + "Free energy: -14.890750\n", + "Extrapolated: -14.861851\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 4.81760 2.00000\n", + " 0 5 4.81760 2.00000\n", + " 0 6 4.81760 2.00000\n", + " 0 7 11.66042 0.00000\n", + "\n", + " 1 4 5.74673 1.99940\n", + " 1 5 5.74673 1.99940\n", + " 1 6 7.21857 0.00269\n", + " 1 7 7.21857 0.00269\n", + "\n", + "\n", + "Fermi level: 6.55769\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 48\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0) ( 0 1 0) ( 0 -1 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1) ( 0 0 -1)\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 1 0 0) (-1 0 0) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1) ( 1 0 0) (-1 0 0)\n", + "\n", + " ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 -1) ( 0 0 -1) (-1 0 0) (-1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 1 0 0) (-1 0 0) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 1) ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 1 0) ( 0 -1 0) ( 0 1 0) ( 0 -1 0) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "4 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 0.00000000 6/27\n", + " 2: 0.33333333 0.33333333 0.00000000 12/27\n", + " 3: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 884, 922\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 148.41 MiB\n", + " Calculator: 4.97 MiB\n", + " Density: 2.55 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.95 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.78 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.64 MiB\n", + " Arrays psit_nG: 0.68 MiB\n", + " Eigensolver: 0.26 MiB\n", + " Projections: 0.04 MiB\n", + " Projectors: 0.38 MiB\n", + " PW-descriptor: 0.28 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " / | | \n", + " * | | \n", + " | Al | \n", + " | .---------. \n", + " | / All / \n", + " |/ / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.123838 2.123838 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.123838 0.000000 2.123838 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.123838 2.123838 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.247676 0.000000 0.000000 18 0.2360\n", + " 2. axis: yes 0.000000 4.247676 0.000000 18 0.2360\n", + " 3. axis: yes 0.000000 0.000000 4.247676 18 0.2360\n", + "\n", + " Lengths: 4.247676 4.247676 4.247676\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2360\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:41 -14.696924\n", + "iter: 2 11:29:41 -14.699422 -2.64 -0.94\n", + "iter: 3 11:29:41 -14.679770 -2.91 -0.96\n", + "iter: 4 11:29:41 -14.667487 -4.04 -1.28\n", + "iter: 5 11:29:41 -14.667584 -5.99 -2.08\n", + "iter: 6 11:29:41 -14.667794c -4.99 -2.08\n", + "iter: 7 11:29:41 -14.667795c -6.56 -3.69\n", + "iter: 8 11:29:42 -14.667794c -7.75c -3.59\n", + "iter: 9 11:29:42 -14.667795c -8.79c -3.81\n", + "iter: 10 11:29:42 -14.667795c -9.67c -4.06c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, 0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: -0.441729\n", + "Potential: +3.686595\n", + "External: +0.000000\n", + "XC: -17.870816\n", + "Entropy (-ST): -0.054761\n", + "Local: -0.014463\n", + "--------------------------\n", + "Free energy: -14.695175\n", + "Extrapolated: -14.667795\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 4.18694 2.00000\n", + " 0 5 4.18694 2.00000\n", + " 0 6 4.18694 2.00000\n", + " 0 7 10.75420 0.00000\n", + "\n", + " 1 4 5.07835 1.99906\n", + " 1 5 5.07835 1.99906\n", + " 1 6 6.63071 0.00077\n", + " 1 7 6.63071 0.00077\n", + "\n", + "\n", + "Fermi level: 5.84459\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 16\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "6 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.00000000 0.00000000 0.33333333 2/27\n", + " 2: 0.33333333 0.00000000 0.00000000 4/27\n", + " 3: 0.33333333 0.00000000 0.33333333 8/27\n", + " 4: 0.33333333 0.33333333 0.00000000 4/27\n", + " 5: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 694, 708\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 16*16*18 grid\n", + " Fine grid: 32*32*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 32*32*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 149.59 MiB\n", + " Calculator: 4.36 MiB\n", + " Density: 2.01 MiB\n", + " Arrays: 0.91 MiB\n", + " Localized functions: 0.75 MiB\n", + " Mixer: 0.35 MiB\n", + " Hamiltonian: 0.61 MiB\n", + " Arrays: 0.60 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.73 MiB\n", + " Arrays psit_nG: 0.78 MiB\n", + " Eigensolver: 0.21 MiB\n", + " Projections: 0.06 MiB\n", + " Projectors: 0.45 MiB\n", + " PW-descriptor: 0.24 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .--------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | | \n", + " | .-Al-----. \n", + " |/ Al / \n", + " Al-------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 1.921084 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 1.921084 0.000000 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 1.921084 1.921084 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 3.842167 0.000000 0.000000 16 0.2401\n", + " 2. axis: yes 0.000000 3.842167 0.000000 16 0.2401\n", + " 3. axis: yes 0.000000 0.000000 4.050000 18 0.2250\n", + "\n", + " Lengths: 3.842167 3.842167 4.050000\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2350\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:43 -14.732895\n", + "iter: 2 11:29:43 -14.740004 -2.60 -0.94\n", + "iter: 3 11:29:43 -14.762942 -2.29 -0.96\n", + "iter: 4 11:29:43 -14.760523 -3.30 -1.19\n", + "iter: 5 11:29:43 -14.760822c -5.55 -2.01\n", + "iter: 6 11:29:43 -14.761985c -4.57 -2.13\n", + "iter: 7 11:29:43 -14.761976c -6.97 -3.27\n", + "iter: 8 11:29:44 -14.761980c -7.54c -3.32\n", + "iter: 9 11:29:44 -14.761985c -7.48c -3.59\n", + "iter: 10 11:29:44 -14.761985c -9.24c -4.68c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, 0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +29.946866\n", + "Potential: -18.554705\n", + "External: +0.000000\n", + "XC: -26.098776\n", + "Entropy (-ST): -0.028997\n", + "Local: -0.040870\n", + "--------------------------\n", + "Free energy: -14.776483\n", + "Extrapolated: -14.761985\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.78601 2.00000\n", + " 0 5 6.87607 2.00000\n", + " 0 6 6.87607 2.00000\n", + " 0 7 13.73921 0.00000\n", + "\n", + " 1 4 7.74692 1.97198\n", + " 1 5 7.74692 1.97198\n", + " 1 6 8.89364 0.00147\n", + " 1 7 8.89364 0.00147\n", + "\n", + "\n", + "Fermi level: 8.17232\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 16\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "6 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.00000000 0.00000000 0.33333333 2/27\n", + " 2: 0.33333333 0.00000000 0.00000000 4/27\n", + " 3: 0.33333333 0.00000000 0.33333333 8/27\n", + " 4: 0.33333333 0.33333333 0.00000000 4/27\n", + " 5: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 737, 756\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 16*16*18 grid\n", + " Fine grid: 32*32*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 32*32*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 149.59 MiB\n", + " Calculator: 4.50 MiB\n", + " Density: 2.05 MiB\n", + " Arrays: 0.91 MiB\n", + " Localized functions: 0.79 MiB\n", + " Mixer: 0.35 MiB\n", + " Hamiltonian: 0.61 MiB\n", + " Arrays: 0.60 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.83 MiB\n", + " Arrays psit_nG: 0.83 MiB\n", + " Eigensolver: 0.22 MiB\n", + " Projections: 0.06 MiB\n", + " Projectors: 0.48 MiB\n", + " PW-descriptor: 0.24 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " * | | \n", + " |Al | \n", + " | | | \n", + " | .--Al-----. \n", + " |/ Al / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 1.973726 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 1.973726 0.000000 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 1.973726 1.973726 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 3.947452 0.000000 0.000000 16 0.2467\n", + " 2. axis: yes 0.000000 3.947452 0.000000 16 0.2467\n", + " 3. axis: yes 0.000000 0.000000 4.050000 18 0.2250\n", + "\n", + " Lengths: 3.947452 3.947452 4.050000\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2393\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:44 -14.903323\n", + "iter: 2 11:29:44 -14.909242 -2.61 -0.94\n", + "iter: 3 11:29:45 -14.919947 -2.44 -0.95\n", + "iter: 4 11:29:45 -14.914320 -3.57 -1.22\n", + "iter: 5 11:29:45 -14.914598c -5.26 -2.03\n", + "iter: 6 11:29:45 -14.915408c -4.55 -2.15\n", + "iter: 7 11:29:45 -14.915408c -6.67 -3.36\n", + "iter: 8 11:29:45 -14.915408c -7.91c -3.62\n", + "iter: 9 11:29:45 -14.915410c -7.98c -3.72\n", + "iter: 10 11:29:46 -14.915410c -9.88c -4.69c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +21.332825\n", + "Potential: -12.095024\n", + "External: +0.000000\n", + "XC: -24.099726\n", + "Entropy (-ST): -0.039257\n", + "Local: -0.033857\n", + "--------------------------\n", + "Free energy: -14.935039\n", + "Extrapolated: -14.915410\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.63543 2.00000\n", + " 0 5 6.16057 2.00000\n", + " 0 6 6.16057 2.00000\n", + " 0 7 13.17416 0.00000\n", + "\n", + " 1 4 7.07724 1.99853\n", + " 1 5 7.07725 1.99853\n", + " 1 6 8.35185 0.00789\n", + " 1 7 8.35185 0.00789\n", + "\n", + "\n", + "Fermi level: 7.79870\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 16\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "6 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.00000000 0.00000000 0.33333333 2/27\n", + " 2: 0.33333333 0.00000000 0.00000000 4/27\n", + " 3: 0.33333333 0.00000000 0.33333333 8/27\n", + " 4: 0.33333333 0.33333333 0.00000000 4/27\n", + " 5: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 807, 832\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 149.59 MiB\n", + " Calculator: 5.28 MiB\n", + " Density: 2.47 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.87 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 2.03 MiB\n", + " Arrays psit_nG: 0.91 MiB\n", + " Eigensolver: 0.24 MiB\n", + " Projections: 0.06 MiB\n", + " Projectors: 0.53 MiB\n", + " PW-descriptor: 0.30 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " / | | \n", + " * | | \n", + " | Al | \n", + " | .---------. \n", + " | / AlAl / \n", + " |/ / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.075008 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.075008 0.000000 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.075008 2.075008 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.150015 0.000000 0.000000 18 0.2306\n", + " 2. axis: yes 0.000000 4.150015 0.000000 18 0.2306\n", + " 3. axis: yes 0.000000 0.000000 4.050000 18 0.2250\n", + "\n", + " Lengths: 4.150015 4.150015 4.050000\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2287\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:46 -14.919077\n", + "iter: 2 11:29:46 -14.923047 -2.62 -0.94\n", + "iter: 3 11:29:46 -14.915401 -2.70 -0.95\n", + "iter: 4 11:29:47 -14.905669 -3.88 -1.26\n", + "iter: 5 11:29:47 -14.905607 -5.49 -2.08\n", + "iter: 6 11:29:47 -14.906325c -4.49 -2.12\n", + "iter: 7 11:29:47 -14.906256c -5.95 -2.57\n", + "iter: 8 11:29:47 -14.906257c -6.95 -3.71\n", + "iter: 9 11:29:47 -14.906257c -7.39 -3.31\n", + "iter: 10 11:29:48 -14.906257c -8.75c -4.59c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +8.698013\n", + "Potential: -2.831815\n", + "External: +0.000000\n", + "XC: -20.724898\n", + "Entropy (-ST): -0.048849\n", + "Local: -0.023133\n", + "--------------------------\n", + "Free energy: -14.930681\n", + "Extrapolated: -14.906257\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 4.87930 2.00000\n", + " 0 5 4.87930 2.00000\n", + " 0 6 5.37182 2.00000\n", + " 0 7 11.70552 0.00000\n", + "\n", + " 1 4 5.84939 1.99972\n", + " 1 5 5.84939 1.99972\n", + " 1 6 7.44240 0.00171\n", + " 1 7 7.44240 0.00171\n", + "\n", + "\n", + "Fermi level: 6.73590\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 16\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) ( 1 0 0) ( 1 0 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0) ( 0 -1 0)\n", + " (-1 0 0) (-1 0 0) ( 1 0 0) ( 1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + " (-1 0 0) (-1 0 0) (-1 0 0) (-1 0 0)\n", + " ( 0 1 0) ( 0 1 0) ( 0 -1 0) ( 0 -1 0)\n", + " ( 0 0 1) ( 0 0 -1) ( 0 0 1) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "6 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.00000000 0.00000000 0.33333333 2/27\n", + " 2: 0.33333333 0.00000000 0.00000000 4/27\n", + " 3: 0.33333333 0.00000000 0.33333333 8/27\n", + " 4: 0.33333333 0.33333333 0.00000000 4/27\n", + " 5: 0.33333333 0.33333333 0.33333333 8/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 848, 872\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 149.59 MiB\n", + " Calculator: 5.40 MiB\n", + " Density: 2.51 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.91 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.78 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 2.12 MiB\n", + " Arrays psit_nG: 0.96 MiB\n", + " Eigensolver: 0.25 MiB\n", + " Projections: 0.06 MiB\n", + " Projectors: 0.55 MiB\n", + " PW-descriptor: 0.30 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " .---------. \n", + " /| | \n", + " / | | \n", + " * | | \n", + " | Al | \n", + " | .---------. \n", + " | / All / \n", + " |/ / \n", + " Al--------* \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.000000 2.123838 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.123838 0.000000 2.025000 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.123838 2.123838 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.247676 0.000000 0.000000 18 0.2360\n", + " 2. axis: yes 0.000000 4.247676 0.000000 18 0.2360\n", + " 3. axis: yes 0.000000 0.000000 4.050000 18 0.2250\n", + "\n", + " Lengths: 4.247676 4.247676 4.050000\n", + " Angles: 90.000000 90.000000 90.000000\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2323\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:48 -14.812413\n", + "iter: 2 11:29:48 -14.815910 -2.62 -0.94\n", + "iter: 3 11:29:48 -14.803239 -2.79 -0.96\n", + "iter: 4 11:29:49 -14.791922 -3.92 -1.26\n", + "iter: 5 11:29:49 -14.792019 -5.77 -2.10\n", + "iter: 6 11:29:49 -14.792358c -4.93 -2.07\n", + "iter: 7 11:29:49 -14.792358c -6.44 -3.28\n", + "iter: 8 11:29:49 -14.792357c -8.08c -3.65\n", + "iter: 9 11:29:50 -14.792358c -7.22 -3.66\n", + "iter: 10 11:29:50 -14.792358c -8.01c -3.64\n", + "iter: 11 11:29:50 -14.792358c -9.38c -4.32c\n", + "\n", + "Converged after 11 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +4.244555\n", + "Potential: +0.324641\n", + "External: +0.000000\n", + "XC: -19.309666\n", + "Entropy (-ST): -0.064765\n", + "Local: -0.019506\n", + "--------------------------\n", + "Free energy: -14.824741\n", + "Extrapolated: -14.792358\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 4.30602 2.00000\n", + " 0 5 4.30602 2.00000\n", + " 0 6 5.25459 1.99983\n", + " 0 7 10.83679 0.00000\n", + "\n", + " 1 4 5.28608 1.99977\n", + " 1 5 5.28608 1.99977\n", + " 1 6 7.05846 0.00035\n", + " 1 7 7.05846 0.00035\n", + "\n", + "\n", + "Fermi level: 6.19264\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 12\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 0 1) ( 1 0 0) ( 0 0 1) ( 1 0 0) ( 0 1 0)\n", + " ( 0 0 1) ( 0 1 0) ( 0 0 1) ( 1 0 0) ( 0 1 0) ( 1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 -1 0) (-1 0 0) ( 0 0 -1) (-1 0 0) ( 0 0 -1) ( 0 -1 0)\n", + " (-1 0 0) ( 0 -1 0) (-1 0 0) ( 0 0 -1) ( 0 -1 0) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "6 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 -0.33333333 6/27\n", + " 2: 0.33333333 0.00000000 0.00000000 6/27\n", + " 3: 0.33333333 0.33333333 -0.33333333 6/27\n", + " 4: 0.33333333 0.33333333 0.00000000 6/27\n", + " 5: 0.33333333 0.33333333 0.33333333 2/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 762, 774\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 149.59 MiB\n", + " Calculator: 5.10 MiB\n", + " Density: 2.41 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.81 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.92 MiB\n", + " Arrays psit_nG: 0.85 MiB\n", + " Eigensolver: 0.22 MiB\n", + " Projections: 0.06 MiB\n", + " Projectors: 0.49 MiB\n", + " PW-descriptor: 0.29 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " Al \n", + " Al \n", + " \n", + " Al \n", + " Al \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al -0.208415 1.915423 1.915423 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 1.915423 -0.208415 1.915423 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 1.915423 1.915423 -0.208415 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.039261 -0.208415 -0.208415 18 0.2225\n", + " 2. axis: yes -0.208415 4.039261 -0.208415 18 0.2225\n", + " 3. axis: yes -0.208415 -0.208415 4.039261 18 0.2225\n", + "\n", + " Lengths: 4.050000 4.050000 4.050000\n", + " Angles: 95.739170 95.739170 95.739170\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2238\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:51 -14.253273\n", + "iter: 2 11:29:51 -14.261390 -2.56 -0.94\n", + "iter: 3 11:29:51 -14.277583 -2.52 -0.96\n", + "iter: 4 11:29:51 -14.275510 -3.84 -1.28\n", + "iter: 5 11:29:51 -14.275479c -5.56 -2.24\n", + "iter: 6 11:29:52 -14.276006c -4.67 -2.26\n", + "iter: 7 11:29:52 -14.276016c -7.21 -2.90\n", + "iter: 8 11:29:52 -14.276022c -6.81 -3.39\n", + "iter: 9 11:29:52 -14.276021c -8.57c -3.60\n", + "iter: 10 11:29:52 -14.276021c -10.57c -4.52c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +22.369504\n", + "Potential: -13.123187\n", + "External: +0.000000\n", + "XC: -23.447226\n", + "Entropy (-ST): -0.086104\n", + "Local: -0.032058\n", + "--------------------------\n", + "Free energy: -14.319073\n", + "Extrapolated: -14.276021\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.74742 2.00000\n", + " 0 5 5.74742 2.00000\n", + " 0 6 5.74742 2.00000\n", + " 0 7 11.05858 0.00000\n", + "\n", + " 1 4 6.01298 1.99996\n", + " 1 5 7.51707 0.02779\n", + " 1 6 8.20211 0.00003\n", + " 1 7 8.20211 0.00003\n", + "\n", + "\n", + "Fermi level: 7.09085\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 12\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 0 1) ( 1 0 0) ( 0 0 1) ( 1 0 0) ( 0 1 0)\n", + " ( 0 0 1) ( 0 1 0) ( 0 0 1) ( 1 0 0) ( 0 1 0) ( 1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 -1 0) (-1 0 0) ( 0 0 -1) (-1 0 0) ( 0 0 -1) ( 0 -1 0)\n", + " (-1 0 0) ( 0 -1 0) (-1 0 0) ( 0 0 -1) ( 0 -1 0) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "6 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 -0.33333333 6/27\n", + " 2: 0.33333333 0.00000000 0.00000000 6/27\n", + " 3: 0.33333333 0.33333333 -0.33333333 6/27\n", + " 4: 0.33333333 0.33333333 0.00000000 6/27\n", + " 5: 0.33333333 0.33333333 0.33333333 2/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 776, 786\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 149.59 MiB\n", + " Calculator: 5.14 MiB\n", + " Density: 2.43 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.83 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.94 MiB\n", + " Arrays psit_nG: 0.86 MiB\n", + " Eigensolver: 0.23 MiB\n", + " Projections: 0.06 MiB\n", + " Projectors: 0.50 MiB\n", + " PW-descriptor: 0.29 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " Al \n", + " Al \n", + " Al \n", + " Al \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al -0.102616 1.972392 1.972392 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 1.972392 -0.102616 1.972392 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 1.972392 1.972392 -0.102616 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.047399 -0.102616 -0.102616 18 0.2244\n", + " 2. axis: yes -0.102616 4.047399 -0.102616 18 0.2244\n", + " 3. axis: yes -0.102616 -0.102616 4.047399 18 0.2244\n", + "\n", + " Lengths: 4.050000 4.050000 4.050000\n", + " Angles: 92.865984 92.865984 92.865984\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2247\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:53 -14.825070\n", + "iter: 2 11:29:53 -14.830281 -2.61 -0.94\n", + "iter: 3 11:29:53 -14.834036 -2.59 -0.95\n", + "iter: 4 11:29:54 -14.827853 -3.93 -1.28\n", + "iter: 5 11:29:54 -14.827824 -5.51 -2.13\n", + "iter: 6 11:29:54 -14.828567c -4.62 -2.20\n", + "iter: 7 11:29:54 -14.828567c -7.14 -3.39\n", + "iter: 8 11:29:54 -14.828567c -7.99c -3.75\n", + "iter: 9 11:29:55 -14.828566c -8.51c -3.64\n", + "iter: 10 11:29:55 -14.828566c -10.22c -4.33c\n", + "\n", + "Converged after 10 iterations.\n", + "\n", + "Dipole moment: (-0.000000, 0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +15.802906\n", + "Potential: -8.007939\n", + "External: +0.000000\n", + "XC: -22.569922\n", + "Entropy (-ST): -0.048849\n", + "Local: -0.029186\n", + "--------------------------\n", + "Free energy: -14.852991\n", + "Extrapolated: -14.828566\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.55442 2.00000\n", + " 0 5 5.55442 2.00000\n", + " 0 6 5.55442 2.00000\n", + " 0 7 11.81924 0.00000\n", + "\n", + " 1 4 5.97050 1.99999\n", + " 1 5 7.42040 0.20799\n", + " 1 6 8.63723 0.00000\n", + " 1 7 8.63723 0.00000\n", + "\n", + "\n", + "Fermi level: 7.20504\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 12\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 0 1) ( 1 0 0) ( 0 0 1) ( 1 0 0) ( 0 1 0)\n", + " ( 0 0 1) ( 0 1 0) ( 0 0 1) ( 1 0 0) ( 0 1 0) ( 1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 -1 0) (-1 0 0) ( 0 0 -1) (-1 0 0) ( 0 0 -1) ( 0 -1 0)\n", + " (-1 0 0) ( 0 -1 0) (-1 0 0) ( 0 0 -1) ( 0 -1 0) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "6 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 -0.33333333 6/27\n", + " 2: 0.33333333 0.00000000 0.00000000 6/27\n", + " 3: 0.33333333 0.33333333 -0.33333333 6/27\n", + " 4: 0.33333333 0.33333333 0.00000000 6/27\n", + " 5: 0.33333333 0.33333333 0.33333333 2/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 769, 788\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 149.59 MiB\n", + " Calculator: 5.15 MiB\n", + " Density: 2.43 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.83 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.94 MiB\n", + " Arrays psit_nG: 0.87 MiB\n", + " Eigensolver: 0.23 MiB\n", + " Projections: 0.06 MiB\n", + " Projectors: 0.50 MiB\n", + " PW-descriptor: 0.29 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " Al \n", + " Al \n", + " Al \n", + " Al \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.100075 2.073801 2.073801 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.073801 0.100075 2.073801 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.073801 2.073801 0.100075 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.047526 0.100075 0.100075 18 0.2245\n", + " 2. axis: yes 0.100075 4.047526 0.100075 18 0.2245\n", + " 3. axis: yes 0.100075 0.100075 4.047526 18 0.2245\n", + "\n", + " Lengths: 4.050000 4.050000 4.050000\n", + " Angles: 87.134016 87.134016 87.134016\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2247\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:55 -14.919271\n", + "iter: 2 11:29:56 -14.924183 -2.61 -0.93\n", + "iter: 3 11:29:56 -14.925894 -2.58 -0.95\n", + "iter: 4 11:29:56 -14.918258 -3.85 -1.27\n", + "iter: 5 11:29:56 -14.918454 -5.54 -2.06\n", + "iter: 6 11:29:56 -14.919068c -4.75 -2.00\n", + "iter: 7 11:29:57 -14.919062c -6.59 -3.08\n", + "iter: 8 11:29:57 -14.919072c -6.40 -3.13\n", + "iter: 9 11:29:57 -14.919070c -7.92c -3.40\n", + "iter: 10 11:29:57 -14.919070c -9.67c -3.80\n", + "iter: 11 11:29:57 -14.919071c -7.85c -3.79\n", + "iter: 12 11:29:58 -14.919070c -9.40c -4.39c\n", + "\n", + "Converged after 12 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, 0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +15.399067\n", + "Potential: -7.723230\n", + "External: +0.000000\n", + "XC: -22.549727\n", + "Entropy (-ST): -0.030010\n", + "Local: -0.030176\n", + "--------------------------\n", + "Free energy: -14.934075\n", + "Extrapolated: -14.919070\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.54789 2.00000\n", + " 0 5 5.54789 2.00000\n", + " 0 6 5.54789 2.00000\n", + " 0 7 11.92279 0.00000\n", + "\n", + " 1 4 6.14720 1.99999\n", + " 1 5 7.68339 0.08558\n", + " 1 6 8.32283 0.00015\n", + " 1 7 8.32283 0.00015\n", + "\n", + "\n", + "Fermi level: 7.37261\n", + "\n", + "No gap\n", + "System changes: cell, positions \n", + "\n", + "Initialize ...\n", + "\n", + "species:\n", + " Al:\n", + " name: Aluminium\n", + " id: 0292cae29f5d6237e50f6abdd43a7bdd\n", + " Z: 13.0\n", + " valence: 3\n", + " core: 10\n", + " charge: 0.0\n", + " file: /home/janssen/mambaforge/share/gpaw/Al.PBE.gz\n", + " compensation charges: {type: gauss,\n", + " rc: 0.34,\n", + " lmax: 2}\n", + " cutoffs: {filter: 1.91,\n", + " core: 2.36}\n", + " valence states:\n", + " # energy rcut\n", + " - 3s(2.00) -7.753 1.085\n", + " - 3p(1.00) -2.712 1.085\n", + " - s 19.459 1.085\n", + " - p 24.499 1.085\n", + " - d 0.000 1.085\n", + " \n", + " # Using partial waves for Al as LCAO basis\n", + "\n", + "Reference energy: -26413.693060 # eV\n", + "\n", + "Spin-paired calculation\n", + "\n", + "Convergence criteria:\n", + " Maximum [total energy] change in last 3 cyles: 0.0005 eV / valence electron\n", + " Maximum integral of absolute [dens]ity change: 0.0001 electrons / valence electron\n", + " Maximum integral of absolute [eigenst]ate change: 4e-08 eV^2 / valence electron\n", + " Maximum number of scf [iter]ations: 333\n", + " (Square brackets indicate name in SCF output, whereas a 'c' in\n", + " the SCF output indicates the quantity has converged.)\n", + "\n", + "Symmetries present (total): 12\n", + "\n", + " ( 1 0 0) ( 1 0 0) ( 0 1 0) ( 0 1 0) ( 0 0 1) ( 0 0 1)\n", + " ( 0 1 0) ( 0 0 1) ( 1 0 0) ( 0 0 1) ( 1 0 0) ( 0 1 0)\n", + " ( 0 0 1) ( 0 1 0) ( 0 0 1) ( 1 0 0) ( 0 1 0) ( 1 0 0)\n", + "\n", + " ( 0 0 -1) ( 0 0 -1) ( 0 -1 0) ( 0 -1 0) (-1 0 0) (-1 0 0)\n", + " ( 0 -1 0) (-1 0 0) ( 0 0 -1) (-1 0 0) ( 0 0 -1) ( 0 -1 0)\n", + " (-1 0 0) ( 0 -1 0) (-1 0 0) ( 0 0 -1) ( 0 -1 0) ( 0 0 -1)\n", + "\n", + "27 k-points: 3 x 3 x 3 Monkhorst-Pack grid\n", + "6 k-points in the irreducible part of the Brillouin zone\n", + " k-points in crystal coordinates weights\n", + " 0: 0.00000000 0.00000000 0.00000000 1/27\n", + " 1: 0.33333333 0.00000000 -0.33333333 6/27\n", + " 2: 0.33333333 0.00000000 0.00000000 6/27\n", + " 3: 0.33333333 0.33333333 -0.33333333 6/27\n", + " 4: 0.33333333 0.33333333 0.00000000 6/27\n", + " 5: 0.33333333 0.33333333 0.33333333 2/27\n", + "\n", + "Wave functions: Plane wave expansion\n", + " Cutoff energy: 300.000 eV\n", + " Number of coefficients (min, max): 760, 787\n", + " Pulay-stress correction: 0.000000 eV/Ang^3 (de/decut=0.000000)\n", + " Using FFTW library\n", + " ScaLapack parameters: grid=1x1, blocksize=None\n", + " Wavefunction extrapolation:\n", + " Improved wavefunction reuse through dual PAW basis \n", + "\n", + "Occupation numbers: Fermi-Dirac:\n", + " width: 0.1000 # eV\n", + " \n", + "\n", + "Eigensolver\n", + " Davidson(niter=2) \n", + "\n", + "Densities:\n", + " Coarse grid: 18*18*18 grid\n", + " Fine grid: 36*36*36 grid\n", + " Total Charge: 0.000000 \n", + "\n", + "Density mixing:\n", + " Method: separate\n", + " Backend: pulay\n", + " Linear mixing parameter: 0.05\n", + " old densities: 5\n", + " Damping of long wavelength oscillations: 50 \n", + "\n", + "Hamiltonian:\n", + " XC and Coulomb potentials evaluated on a 36*36*36 grid\n", + " Using the PBE Exchange-Correlation functional\n", + " External potential:\n", + " NoExternalPotential\n", + " \n", + "\n", + "XC parameters: PBE with 2 nearest neighbor stencil\n", + "\n", + "Memory estimate:\n", + " Process memory now: 149.59 MiB\n", + " Calculator: 5.13 MiB\n", + " Density: 2.42 MiB\n", + " Arrays: 1.16 MiB\n", + " Localized functions: 0.81 MiB\n", + " Mixer: 0.44 MiB\n", + " Hamiltonian: 0.77 MiB\n", + " Arrays: 0.76 MiB\n", + " XC: 0.00 MiB\n", + " Poisson: 0.00 MiB\n", + " vbar: 0.02 MiB\n", + " Wavefunctions: 1.94 MiB\n", + " Arrays psit_nG: 0.86 MiB\n", + " Eigensolver: 0.23 MiB\n", + " Projections: 0.06 MiB\n", + " Projectors: 0.50 MiB\n", + " PW-descriptor: 0.29 MiB\n", + "\n", + "Total number of cores used: 1\n", + "\n", + "Number of atoms: 4\n", + "Number of atomic orbitals: 16\n", + "Number of bands in calculation: 12\n", + "Number of valence electrons: 12\n", + "Bands to converge: occupied\n", + "\n", + "... initialized\n", + "\n", + "Initializing position-dependent things.\n", + "\n", + "Density initialized from atomic densities\n", + "Creating initial wave functions:\n", + " 12 bands from LCAO basis set\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " Al \n", + " Al \n", + " Al \n", + " \n", + " Al \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "Positions:\n", + " 0 Al 0.000000 0.000000 0.000000 ( 0.0000, 0.0000, 0.0000)\n", + " 1 Al 0.198128 2.119212 2.119212 ( 0.0000, 0.0000, 0.0000)\n", + " 2 Al 2.119212 0.198128 2.119212 ( 0.0000, 0.0000, 0.0000)\n", + " 3 Al 2.119212 2.119212 0.198128 ( 0.0000, 0.0000, 0.0000)\n", + "\n", + "Unit cell:\n", + " periodic x y z points spacing\n", + " 1. axis: yes 4.040296 0.198128 0.198128 18 0.2229\n", + " 2. axis: yes 0.198128 4.040296 0.198128 18 0.2229\n", + " 3. axis: yes 0.198128 0.198128 4.040296 18 0.2229\n", + "\n", + " Lengths: 4.050000 4.050000 4.050000\n", + " Angles: 84.260830 84.260830 84.260830\n", + "\n", + "Effective grid spacing dv^(1/3) = 0.2239\n", + "\n", + " iter time total log10-change:\n", + " energy eigst dens\n", + "iter: 1 11:29:58 -14.617275\n", + "iter: 2 11:29:58 -14.621858 -2.58 -0.92\n", + "iter: 3 11:29:58 -14.622996c -2.48 -0.93\n", + "iter: 4 11:29:59 -14.611982 -3.79 -1.34\n", + "iter: 5 11:29:59 -14.612650 -5.20 -1.90\n", + "iter: 6 11:29:59 -14.613003c -4.86 -2.02\n", + "iter: 7 11:29:59 -14.613004c -6.47 -3.00\n", + "iter: 8 11:29:59 -14.613019c -6.42 -3.07\n", + "iter: 9 11:30:00 -14.613019c -8.01c -3.70\n", + "iter: 10 11:30:00 -14.613019c -9.07c -3.97\n", + "iter: 11 11:30:00 -14.613019c -8.48c -4.06c\n", + "\n", + "Converged after 11 iterations.\n", + "\n", + "Dipole moment: (-0.000000, -0.000000, -0.000000) |e|*Ang\n", + "\n", + "Energy contributions relative to reference atoms: (reference = -26413.693060)\n", + "\n", + "Kinetic: +20.022065\n", + "Potential: -11.287532\n", + "External: +0.000000\n", + "XC: -23.298354\n", + "Entropy (-ST): -0.033644\n", + "Local: -0.032376\n", + "--------------------------\n", + "Free energy: -14.629841\n", + "Extrapolated: -14.613019\n", + "\n", + "Showing only first 2 kpts\n", + " Kpt Band Eigenvalues Occupancy\n", + " 0 4 5.69327 2.00000\n", + " 0 5 5.69327 2.00000\n", + " 0 6 5.69327 2.00000\n", + " 0 7 11.44751 0.00000\n", + "\n", + " 1 4 6.31998 1.99994\n", + " 1 5 7.72451 0.05504\n", + " 1 6 7.72451 0.05504\n", + " 1 7 8.02631 0.00276\n", + "\n", + "\n", + "Fermi level: 7.36802\n", + "\n", + "No gap\n" + ] + }, + { + "data": { + "text/plain": [ + "{'energy': {'s_e_0': -14.93666639636423,\n", + " 's_01_e_m0_05000': -14.509157650668122,\n", + " 's_01_e_m0_02500': -14.841982287144095,\n", + " 's_01_e_0_02500': -14.861851384196324,\n", + " 's_01_e_0_05000': -14.667794842770691,\n", + " 's_08_e_m0_05000': -14.761984597147846,\n", + " 's_08_e_m0_02500': -14.915410385310373,\n", + " 's_08_e_0_02500': -14.906256779097582,\n", + " 's_08_e_0_05000': -14.792358225784064,\n", + " 's_23_e_m0_05000': -14.27602069468719,\n", + " 's_23_e_m0_02500': -14.828566180641806,\n", + " 's_23_e_0_02500': -14.919070452536213,\n", + " 's_23_e_0_05000': -14.61301941504421}}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result_dict = evaluate_with_ase(\n", + " task_dict=task_dict,\n", + " ase_calculator=GPAW(\n", + " xc=\"PBE\",\n", + " mode=PW(300),\n", + " kpts=(3, 3, 3)\n", + " )\n", + ")\n", + "result_dict" + ] + }, + { + "cell_type": "markdown", + "id": "064c0b0c-c69d-4457-b32d-1179036a6ac9", + "metadata": {}, + "source": [ + "The atomistic structures are evaluated with the `evaluate_with_ase()` function, which returns the `result_dict`. This \n", + "`result_dict` in analogy to the `task_dict` contains the same keys as well as the energies calculated with the \n", + "[GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code. Finally, the `result_dict` is provided as an input to the \n", + "`analyse_structures()` function to calculate the corresponding elastic constants: " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "245a78c5-8895-4f4f-b813-58fc0b9ea186", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "OrderedDict([('SGN', 225),\n", + " ('v0', 66.43012500000002),\n", + " ('LC', 'CI'),\n", + " ('Lag_strain_list', ['01', '08', '23']),\n", + " ('epss', array([-0.05 , -0.025, 0. , 0.025, 0.05 ])),\n", + " ('e0', -14.93666639636423),\n", + " ('strain_energy',\n", + " [[(-0.05, -14.509157650668122),\n", + " (-0.025, -14.841982287144095),\n", + " (0.0, -14.93666639636423),\n", + " (0.02500000000000001, -14.861851384196324),\n", + " (0.05, -14.667794842770691)],\n", + " [(-0.05, -14.761984597147846),\n", + " (-0.025, -14.915410385310373),\n", + " (0.0, -14.93666639636423),\n", + " (0.02500000000000001, -14.906256779097582),\n", + " (0.05, -14.792358225784064)],\n", + " [(-0.05, -14.27602069468719),\n", + " (-0.025, -14.828566180641806),\n", + " (0.0, -14.93666639636423),\n", + " (0.02500000000000001, -14.919070452536213),\n", + " (0.05, -14.61301941504421)]]),\n", + " ('C',\n", + " array([[98.43569795, 63.17412931, 63.17412931, 0. , 0. ,\n", + " 0. ],\n", + " [63.17412931, 98.43569795, 63.17412931, 0. , 0. ,\n", + " 0. ],\n", + " [63.17412931, 63.17412931, 98.43569795, 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 84.66136126, 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. , 84.66136126,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. , 0. ,\n", + " 84.66136126]])),\n", + " ('A2', array([2.10448666, 1.0086892 , 3.17048793])),\n", + " ('BV', 74.92798552235872),\n", + " ('GV', 57.849130483109654),\n", + " ('EV', 138.02584017683813),\n", + " ('nuV', 0.1929811133214687),\n", + " ('S',\n", + " array([[ 0.02038923, -0.00797026, -0.00797026, 0. , 0. ,\n", + " 0. ],\n", + " [-0.00797026, 0.02038923, -0.00797026, 0. , 0. ,\n", + " 0. ],\n", + " [-0.00797026, -0.00797026, 0.02038923, 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0.01181176, 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. , 0.01181176,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. , 0. ,\n", + " 0.01181176]])),\n", + " ('BR', 74.9279855223587),\n", + " ('GR', 33.58561963743922),\n", + " ('ER', 87.65941304038729),\n", + " ('nuR', 0.30501408023256876),\n", + " ('BH', 74.92798552235871),\n", + " ('GH', 45.717375060274435),\n", + " ('EH', 113.97207238964725),\n", + " ('nuH', 0.24648530497852128),\n", + " ('AVR', 26.536421670842948),\n", + " ('C_eigval',\n", + " EigResult(eigenvalues=array([ 35.26156864, 224.78395657, 35.26156864, 84.66136126,\n", + " 84.66136126, 84.66136126]), eigenvectors=array([[-0.81649658, 0.57735027, -0.01865499, 0. , 0. ,\n", + " 0. ],\n", + " [ 0.40824829, 0.57735027, -0.6975947 , 0. , 0. ,\n", + " 0. ],\n", + " [ 0.40824829, 0.57735027, 0.71624969, 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 1. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. , 1. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. , 0. ,\n", + " 1. ]])))])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "elastic_dict = workflow.analyse_structures(output_dict=result_dict)\n", + "elastic_dict" + ] + }, + { + "cell_type": "markdown", + "id": "43fe5df0-4142-464b-ab13-99e52868e57f", + "metadata": {}, + "source": [ + "The bulk modulus calculated from the elastic constants `C11` and `C12` based on a strain of +/- 5% is calculated with \n", + "the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code to be 74.9GPa. This differs from the bulk modulus calculated\n", + "from the Equation of State above by 2.6GPa. In comparison to the experimental bulk modulus for Aluminium which is\n", + "[reported to be 76GPa](https://periodictable.com/Elements/013/data.html) the calculation based on the elastic constants\n", + "seem to be more precise, still this is more likely related to error cancellation. In general elastic properties calculated\n", + "from density functional theory are expected to have errors of about 5-10% unless carefully converged." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/elastic_constants.ipynb b/notebooks/elastic_constants.ipynb deleted file mode 100644 index bd9a8243..00000000 --- a/notebooks/elastic_constants.ipynb +++ /dev/null @@ -1,116 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "8a232263-88d0-470c-a7a3-3cde6aec522b", - "metadata": {}, - "outputs": [], - "source": [ - "from ase.build import bulk\n", - "from ase.calculators.emt import EMT\n", - "\n", - "from atomistics.calculators.ase import evaluate_with_ase\n", - "from atomistics.workflows.elastic.workflow import ElasticMatrixWorkflow" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "147424cf-9e55-44ef-ba7e-8d22597a4165", - "metadata": {}, - "outputs": [], - "source": [ - "workflow = ElasticMatrixWorkflow(\n", - " structure=bulk(\"Al\", a=4.0, cubic=True),\n", - " num_of_point=5, \n", - " eps_range=0.005, \n", - " sqrt_eta=True, \n", - " fit_order=2\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "6a3f7783-f331-41ef-a7c9-5852db1812af", - "metadata": {}, - "outputs": [], - "source": [ - "structure_dict = workflow.generate_structures()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "f6714b82-3698-45ca-984c-983cacf278cc", - "metadata": {}, - "outputs": [], - "source": [ - "result_dict = evaluate_with_ase(task_dict=structure_dict, ase_calculator=EMT())" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "57a4a5eb-d8d2-455d-84d2-dd45036bc721", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[52.62435421, 32.6743838 , 32.6743838 , 0. , 0. ,\n", - " 0. ],\n", - " [32.6743838 , 52.62435421, 32.6743838 , 0. , 0. ,\n", - " 0. ],\n", - " [32.6743838 , 32.6743838 , 52.62435421, 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 35.58677436, 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. , 35.58677436,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. , 0. ,\n", - " 35.58677436]])" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "elastic_dict = workflow.analyse_structures(output_dict=result_dict)\n", - "elastic_dict[\"C\"]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "15898e45-12ca-4255-be8c-e2fe96e1228e", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/energy_volume_curve.ipynb b/notebooks/energy_volume_curve.ipynb deleted file mode 100644 index 0e455a0a..00000000 --- a/notebooks/energy_volume_curve.ipynb +++ /dev/null @@ -1,170 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "a7277d25-d32e-4230-ae66-a35c705f044f", - "metadata": {}, - "outputs": [], - "source": [ - "from ase.build import bulk\n", - "from ase.calculators.emt import EMT\n", - "import matplotlib.pyplot as plt\n", - "\n", - "from atomistics.calculators.ase import evaluate_with_ase\n", - "from atomistics.workflows.evcurve.workflow import EnergyVolumeCurveWorkflow\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "147424cf-9e55-44ef-ba7e-8d22597a4165", - "metadata": {}, - "outputs": [], - "source": [ - "workflow = EnergyVolumeCurveWorkflow(\n", - " structure=bulk(\"Al\", a=4.0, cubic=True),\n", - " num_points=11,\n", - " fit_type='polynomial',\n", - " fit_order=3,\n", - " vol_range=0.05,\n", - " axes=['x', 'y', 'z'],\n", - " strains=None,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "6a3f7783-f331-41ef-a7c9-5852db1812af", - "metadata": {}, - "outputs": [], - "source": [ - "structure_dict = workflow.generate_structures()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "825905c6-2924-4f4d-b397-ea1c2a386a74", - "metadata": {}, - "outputs": [], - "source": [ - "result_dict = evaluate_with_ase(task_dict=structure_dict, ase_calculator=EMT())" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "57a4a5eb-d8d2-455d-84d2-dd45036bc721", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'poly_fit': array([-3.29301241e-05, 8.23205680e-03, -6.48004687e-01, 1.63668527e+01]),\n", - " 'fit_type': 'polynomial',\n", - " 'fit_order': 3,\n", - " 'volume_eq': 63.72615218844302,\n", - " 'energy_eq': -0.019521620951014285,\n", - " 'bulkmodul_eq': 39.544084907317895,\n", - " 'b_prime_eq': 2.2509394023322566,\n", - " 'least_square_error': 6.520883811317011e-11,\n", - " 'volume': [60.800000000000004,\n", - " 61.44,\n", - " 62.080000000000005,\n", - " 62.72000000000003,\n", - " 63.360000000000056,\n", - " 63.99999999999998,\n", - " 64.63999999999996,\n", - " 65.28000000000004,\n", - " 65.91999999999996,\n", - " 66.55999999999999,\n", - " 67.20000000000005],\n", - " 'energy': [-0.002126867152135503,\n", - " -0.00899209535110046,\n", - " -0.014118255483879238,\n", - " -0.01753027631123949,\n", - " -0.01926923723790175,\n", - " -0.019385014820125335,\n", - " -0.017931790532095704,\n", - " -0.01496535015547451,\n", - " -0.01054147657429283,\n", - " -0.004714997443290514,\n", - " 0.002460783060161731]}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fit_dict = workflow.analyse_structures(output_dict=result_dict)\n", - "fit_dict" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "717865a5-624b-4f50-ad51-10eb554e68e7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(0, 0.5, 'Energy')" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAAGwCAYAAABvpfsgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABV7klEQVR4nO3dd3xT9f4G8Cdp2nSHDronsy2zrLagArIVcQMCFQTqQBT8eUVBRdSriN4L3CvXgSKgTBcKIsgQEKSLUWYpULronulu2ub8/kgbqbR052Q879crr2uTc5Kn59b28XtOPpEIgiCAiIiIiNpMKnYAIiIiIkPHQkVERETUTixURERERO3EQkVERETUTixURERERO3EQkVERETUTixURERERO0kEzuAqVCr1cjIyICdnR0kEonYcYiIiKgFBEFASUkJPDw8IJU2vQ7FQqUjGRkZ8Pb2FjsGERERtUFaWhq8vLyafJyFSkfs7OwAaP4Psbe3FzkNERERtURxcTG8vb21f8ebwkKlI/Wn+ezt7VmoiIiIDExzl+vwonQiIiKidmKhIiIiImonFioiIiKidmKhIiIiImonFioiIiKidmKhIiIiImonFioiIiKidmKhIiIiImonFioiIiKidmKhIiIiImonFioiIiKidmKhIiIiImonFioiIiIyaFezS5CprBA1AwsVERERGbR3f7mMER/8ju9P3xQtAwsVERERGazkvDIcv5YHAUCIv6NoOVioiIiIyGBti0kFAIzs1RXejtai5WChIiIiIoNUWV2L706lAQBmhviKmoWFioiIiAzSvouZKCyvhofCEvcGuIiahYWKiIiIDNKWKM3pvieG+cBMKhE1CwsVERERGZz4zGKcTimETCrBtKHeYsdhoSIiIiLDszU6BQAwvo8rXOwtRU7DQkVEREQGprSqBrvOpAMQ/2L0eixUREREZFB+jktHmaoW3ZxtMLy7k9hxALBQERERkQERBEF7MfqMEB9IJOJejF6PhYqIiIgMxtm0IsRnFkMuk+KxwV5ix9FioSIiIiKDsSVKczH65P4e6GJtIXKav7BQERERkUEoKlfhl/OZAICZoT4ip2mIhYqIiIgMwvenb0JVo0aQuz2CvbuIHacBFioiIiLSe2q1gK3RmovRZ4X66s3F6PVYqIiIiEjvRd7IR1JeGWzlMjw40EPsOLdhoSIi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TNXfl5OTAwC4fPkyKisrMW7cONja2mpvX3/9NRITE9uVg4g6n0zsAEREujBv3jwsXLgQ//vf/7Bx40b4+vpizJgxEAQBEomkwbZ3WriXSqW3bVNdXd3otubm5tp/lkgkDb6uv0+tVgOA9n/37t0LT0/PBtvJ5fLmvj0iEhlXqIjIJEydOhVmZmbYtm0bNm/ejKeeegoSiQRBQUE4ceJEg21PnjyJXr16wczM7Lbn6dq1KwAgMzNTe9+tF6i3VVBQEORyOVJTU9GjR48GN29v73Y/PxF1Lq5QEZFJsLW1xbRp07Bs2TIolUrMmTMHAPDyyy9j6NChePfddzFt2jRERkZi3bp1+OSTTxp9HisrK4SGhuKDDz6An58f8vLy8MYbb7Q7n52dHf7xj3/gpZdeglqtxl133YXi4mKcPHkStra2mD17drtfg4g6D1eoiMhkzJs3D4WFhRg7dix8fHwAAIMGDcK3336LHTt2oG/fvli+fDneeecdbeFqzFdffYXq6moMGTIEixYtwj//+c8Oyffuu+9i+fLlWLlyJQIDAzFhwgTs2bMH/v7+HfL8RNR5+C4/IiIionbiChURERFRO7FQEREREbUTCxURERFRO7FQEREREbUTCxURERFRO7FQEREREbUTCxURERFRO7FQEREREbUTCxURERFRO7FQEREREbUTCxURERFRO/0/OgFecCq2ujIAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(fit_dict['volume'], fit_dict['energy'])\n", - "plt.xlabel(\"Volume\")\n", - "plt.ylabel(\"Energy\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "15898e45-12ca-4255-be8c-e2fe96e1228e", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/phonons.ipynb b/notebooks/phonons.ipynb deleted file mode 100644 index e82f2f77..00000000 --- a/notebooks/phonons.ipynb +++ /dev/null @@ -1,317 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "ee615240-32c6-453b-b71f-6eefda48be10", - "metadata": {}, - "outputs": [], - "source": [ - "from ase.build import bulk\n", - "from ase.calculators.emt import EMT\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from phonopy.units import VaspToTHz\n", - "\n", - "from atomistics.calculators.ase import evaluate_with_ase\n", - "from atomistics.workflows.phonons.workflow import PhonopyWorkflow" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "147424cf-9e55-44ef-ba7e-8d22597a4165", - "metadata": {}, - "outputs": [], - "source": [ - "workflow = PhonopyWorkflow(\n", - " structure=bulk(\"Al\", a=4.0, cubic=True),\n", - " interaction_range=10,\n", - " factor=VaspToTHz,\n", - " displacement=0.01,\n", - " dos_mesh=20,\n", - " primitive_matrix=None,\n", - " number_of_snapshots=None,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "6a3f7783-f331-41ef-a7c9-5852db1812af", - "metadata": {}, - "outputs": [], - "source": [ - "structure_dict = workflow.generate_structures()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "91b11d67-d05a-47f4-8603-f4112a065b5c", - "metadata": {}, - "outputs": [], - "source": [ - "result_dict = evaluate_with_ase(task_dict=structure_dict, ase_calculator=EMT())" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "57a4a5eb-d8d2-455d-84d2-dd45036bc721", - "metadata": {}, - "outputs": [], - "source": [ - "mesh_dict, dos_dict = workflow.analyse_structures(output_dict=result_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0b468b8d-5fe3-492e-aef1-ae1e9f07297d", - "metadata": {}, - "outputs": [], - "source": [ - "T_min = 0\n", - "T_max = 800 # a bit below melting\n", - "T_step = 25\n", - "temperatures = np.linspace(T_min, T_max, int((T_max - T_min) / T_step))" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "b399d1c4-d8de-48a1-87c1-36f58634e53a", - "metadata": {}, - "outputs": [], - "source": [ - "thermal_dict = workflow.get_thermal_properties(temperatures=temperatures) " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "86ba216f-f2e2-4f09-a160-b2f0d8a28fdd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(0, 0.5, 'Free energy ($F_{vib}$) [eV]')" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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Oxtdu3aFmZkZzMzMcOTIEXz++ecwMzPTZDTmMf6VjY0N/P39kZqaahK/h66urvD19a2yrF27drh+/ToA0/gz+NC1a9dw4MABTJw4UbPMFMb31ltv4d1338Xw4cPh7++P8PBwzJo1C4sXLwZgmGNkOZKYhYUFunbtiv3791dZvn//foSGhkqUSje8vLzg4uJSZWylpaU4cuSIZmxdu3aFubl5lXUyMzNx7tw5gxi/KIqIiIjArl278Pvvv8PLy6vK+6Ywxr8SRRElJSUmMbZnn30WZ8+eRWJiouYVEBCAUaNGITExEd7e3kY/xr8qKSlBcnIyXF1dTeL38Kmnnqo2fcbFixfRokULAKb1Z3D9+vVwcnLCgAEDNMtMYXxFRUWQyarWDblcrrmV3yDHqPNLvKnWHt7Kv3btWvH8+fPizJkzRRsbG/Hq1atSR/tb+fn5YkJCgpiQkCACEJcuXSomJCRopiH49NNPRaVSKe7atUs8e/asOGLEiEfenunu7i4eOHBAjI+PF5955hmDuQV12rRpolKpFA8fPlzlVtuioiLNOsY8xjlz5oh//PGHmJaWJp45c0acO3euKJPJxH379omiaNxje5zKd6uJovGP8c033xQPHz4sXrlyRYyOjhYHDhwo2tnZaf7+MPbxnTx5UjQzMxMXLlwopqamilu3bhWtra3FLVu2aNYx9jGKoihWVFSIHh4e4jvvvFPtPWMf39ixY8VmzZppbuXftWuX6OjoKL799tuadQxtjCxHBuLLL78UW7RoIVpYWIhdunTR3Cpu6A4dOiQCqPYaO3asKIoPbtH88MMPRRcXF1GhUIg9evQQz549W2Uf9+/fFyMiIsTGjRuLVlZW4sCBA8Xr169LMJrqHjU2AOL69es16xjzGCdMmKD5765p06bis88+qylGomjcY3ucv5YjYx/jw/lgzM3NRTc3N3HIkCFiUlKS5n1jH58oiuJPP/0k+vn5iQqFQvTx8RG//vrrKu+bwhh/++03EYCYkpJS7T1jH19eXp44Y8YM0cPDQ7S0tBS9vb3FefPmiSUlJZp1DG2MgiiKou6PRxEREREZJ15zRERERFQJyxERERFRJSxHRERERJWwHBERERFVwnJEREREVAnLEREREVElLEdERERElbAcEREREVXCckREZOCuXr0KQRAgCAI6depUq203bNig2XbmzJl6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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(thermal_dict['temperatures'], thermal_dict['free_energy'])\n", - "plt.xlabel(\"Temperature [K]\")\n", - "plt.ylabel(\"Free energy ($F_{vib}$) [eV]\")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "15898e45-12ca-4255-be8c-e2fe96e1228e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "workflow.plot_dos()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "f1736aa4-803e-4a28-bdd4-4863d3ae5fe3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "workflow.plot_band_structure()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "68ec3a72-58b2-45be-8afc-c6f60cc067b9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 1.28114847e-01, 0.00000000e+00, 0.00000000e+00,\n", - " 2.78400491e-19, -2.14138635e-35, -3.23528094e-19,\n", - " -4.11876892e-18, 3.21464892e-20, 7.82123576e-02,\n", - " 7.97853292e-18, 6.24571017e-36, -3.23530462e-19],\n", - " [ 0.00000000e+00, 1.42904974e-01, 5.77632227e-21,\n", - " -3.39052838e-35, 7.98073614e-18, -6.15648574e-35,\n", - " 3.21464892e-20, -2.57171913e-19, -6.42929783e-20,\n", - " 6.24571124e-36, 7.98073614e-18, 2.57914371e-35],\n", - " [ 0.00000000e+00, 5.77632227e-21, 1.28114847e-01,\n", - " -3.23530462e-19, -6.24571017e-35, 7.97853292e-18,\n", - " 7.82123576e-02, -1.60732446e-19, -8.03662229e-21,\n", - " -3.23528094e-19, 3.15770838e-36, 2.78400491e-19],\n", - " [ 2.78400491e-19, -3.39052838e-35, -3.23530462e-19,\n", - " 1.28114847e-01, 0.00000000e+00, 0.00000000e+00,\n", - " 7.97853292e-18, 8.03019879e-36, -3.23530462e-19,\n", - " 4.11475061e-18, -6.42929783e-20, 7.82123576e-02],\n", - " [-2.14138635e-35, 7.98073614e-18, -6.24571017e-35,\n", - " 0.00000000e+00, 1.42904974e-01, 5.90189449e-21,\n", - " 1.93884689e-33, 7.98073614e-18, -4.89828185e-35,\n", - " -1.60732446e-19, -6.42929783e-20, -1.28585957e-19],\n", - " [-3.23528094e-19, -6.15648574e-35, 7.97853292e-18,\n", - " 0.00000000e+00, 5.90189449e-21, 1.28114847e-01,\n", - " -3.23528094e-19, 2.19575748e-36, 2.78400491e-19,\n", - " 7.82123576e-02, -9.64394675e-20, -4.11475061e-18],\n", - " [-4.11876892e-18, 3.21464892e-20, 7.82123576e-02,\n", - " 7.97853292e-18, 1.93884689e-33, -3.23528094e-19,\n", - " 1.28114847e-01, 0.00000000e+00, 0.00000000e+00,\n", - " 2.78400491e-19, -3.03363066e-35, -3.23530462e-19],\n", - " [ 3.21464892e-20, -2.57171913e-19, -1.60732446e-19,\n", - " 8.03019879e-36, 7.98073614e-18, 2.19575748e-36,\n", - " 0.00000000e+00, 1.42904974e-01, 5.90189449e-21,\n", - " -3.92587497e-35, 7.98073614e-18, 1.62388465e-34],\n", - " [ 7.82123576e-02, -6.42929783e-20, -8.03662229e-21,\n", - " -3.23530462e-19, -4.89828185e-35, 2.78400491e-19,\n", - " 0.00000000e+00, 5.90189449e-21, 1.28114847e-01,\n", - " -3.23528094e-19, -6.42415904e-35, 7.97853292e-18],\n", - " [ 7.97853292e-18, 6.24571124e-36, -3.23528094e-19,\n", - " 4.11475061e-18, -1.60732446e-19, 7.82123576e-02,\n", - " 2.78400491e-19, -3.92587497e-35, -3.23528094e-19,\n", - " 1.28114847e-01, 0.00000000e+00, 0.00000000e+00],\n", - " [ 6.24571017e-36, 7.98073614e-18, 3.15770838e-36,\n", - " -6.42929783e-20, -6.42929783e-20, -9.64394675e-20,\n", - " -3.03363066e-35, 7.98073614e-18, -6.42415904e-35,\n", - " 0.00000000e+00, 1.42904974e-01, 5.77632227e-21],\n", - " [-3.23530462e-19, 2.57914371e-35, 2.78400491e-19,\n", - " 7.82123576e-02, -1.28585957e-19, -4.11475061e-18,\n", - " -3.23530462e-19, 1.62388465e-34, 7.97853292e-18,\n", - " 0.00000000e+00, 5.77632227e-21, 1.28114847e-01]])" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "workflow.get_dynamical_matrix()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "8d6802cf-b294-427e-bde2-df9aa4275b94", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 3.73299180e-02, 1.43968646e-32, -1.69654682e-32, ...,\n", - " 1.87801956e-05, 6.37114501e-05, 1.18515925e-04],\n", - " [-0.00000000e+00, 3.73299180e-02, -0.00000000e+00, ...,\n", - " 6.37114501e-05, 1.87801956e-05, 1.18515925e-04],\n", - " [-0.00000000e+00, -0.00000000e+00, 3.73299180e-02, ...,\n", - " 1.18518879e-04, 1.18518879e-04, 2.00470741e-04],\n", - " ...,\n", - " [ 1.87801956e-05, 6.37114501e-05, 1.18515925e-04, ...,\n", - " 3.73299180e-02, 1.43968646e-32, -1.69654682e-32],\n", - " [ 6.37114501e-05, 1.87801956e-05, 1.18515925e-04, ...,\n", - " 0.00000000e+00, 3.73299180e-02, 0.00000000e+00],\n", - " [ 1.18518879e-04, 1.18518879e-04, 2.00470741e-04, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 3.73299180e-02]])" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "workflow.get_hesse_matrix()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bff38ef4-dbcf-471e-938d-02b31458bfba", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/quasi_harmonic_approximation.ipynb b/notebooks/quasi_harmonic_approximation.ipynb deleted file mode 100644 index 034155eb..00000000 --- a/notebooks/quasi_harmonic_approximation.ipynb +++ /dev/null @@ -1,196 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "88eee643-2906-4886-a659-b697d1034602", - "metadata": {}, - "outputs": [], - "source": [ - "from ase.build import bulk\n", - "from ase.calculators.emt import EMT\n", - "import matplotlib\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from phonopy.units import VaspToTHz\n", - "\n", - "from atomistics.calculators.ase import evaluate_with_ase\n", - "from atomistics.workflows.quasiharmonic.workflow import QuasiHarmonicWorkflow" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "aab214e2-960e-40d2-9a84-e853452229f6", - "metadata": {}, - "outputs": [], - "source": [ - "workflow = QuasiHarmonicWorkflow(\n", - " structure=bulk(\"Al\", a=4.0, cubic=True),\n", - " num_points=11,\n", - " vol_range=0.05,\n", - " interaction_range=10,\n", - " factor=VaspToTHz,\n", - " displacement=0.01,\n", - " dos_mesh=20,\n", - " primitive_matrix=None,\n", - " number_of_snapshots=None,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "1e589428-3cc9-4b28-a8de-438ea37ac411", - "metadata": {}, - "outputs": [], - "source": [ - "structure_dict = workflow.generate_structures()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "764ff48f-57b4-4dc0-855d-f811a1e05be8", - "metadata": {}, - "outputs": [], - "source": [ - "result_dict = evaluate_with_ase(task_dict=structure_dict, ase_calculator=EMT())" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "7b1b027f-a5cc-45cf-a573-477a6a66258f", - "metadata": {}, - "outputs": [], - "source": [ - "eng_internal_dict, mesh_collect_dict, dos_collect_dict = \\\n", - " workflow.analyse_structures(output_dict=result_dict)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "64653387-54f1-4eb8-841b-7b4f47ba9191", - "metadata": {}, - "outputs": [], - "source": [ - "tp_collect_dict = workflow.get_thermal_properties(\n", - " t_min=1, t_max=1500, t_step=50, temperatures=None\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "cdb42a7e-e319-49d0-9f60-29dfae0888e6", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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8CenA1CxqYqyjELq84oJFBWjl+YS3lCKraWGGKOScGsrkeEtREXohNkV4hLcWGwGcWk+cgv9zHhEVsiJI1e3bKS7du3abtlId+bMmSiKcsBj1apVe9xTUFDAaaedxgUXXMDVV1/9k++hKHsmsJmmude5H5o2bRrV1dXtR25ubqf6JoQQoZB83cUkXXkBACWryyjbmE9jfiGBsjK0sgJcdUXYgvVEGlV4wltwWFuJi9GxWNpWyGkWg9iUOFamV8oKucOc2cVNdGVkaf86XXVs90a6l112GW+99Vb7+YkTJ/LAAw906pk33ngjF1100QGv+eH2KgUFBZx88slMmDCBv/3tbwe8Ly4uDmgbYfL5fO3nS0pK9hpt+iGr1YrVaj2I1gshxOFHURSGP3MftZlbqFqxjqIVpW0FKy0GYRYDzbLnliimS6ElYCXeq5NTYBKf5CZvh0lkfCz/+jCfAanh/GqK76ffWBxypqlgdmFFW1fu7esOq410o6OjGTJkyAEPm80GQH5+PieddBJjx47l5ZdfRlUP3JW0tDTi4uJYuHBh+7nm5mYWL17MxIkTO9VeIYToDTSrhXH//AtWbxQttS0UryymclsBTbkFqOVF6HWVuOoLcWu1hGmNxHmasRjgi9Wx2CzE+Jw4PE6cUR4ee24r6zKrQ90lcRh59tlnSUtLw2azMW7cOL755psDXv/Xv/6VoUOHYrfbGTx4MK+99tpe1zz11FMMHjwYu91OUlISt956K01NTT3VhZ/U6WBp90a6P3YoNtItKCjgpJNOIikpiccee4zS0lKKior2yj0aMmQI7733HtD219Utt9zCQw89xHvvvUdGRgZXXHEFYWFh/Pa3v+3R9gohRKjZ4r2M/edcFEOnvrCR0vQSancW0ZxfiFqaj6WhivDGMqKMamxaM3FuP3arQnSkhtNtxxVhJyIuEt1m5545mRSVhO6LS+xbKBK83377bW655Rbuuece1q5dy6RJkzj99NPJycnZ5/XPPfcc06ZNY+bMmWRmZnL//ffzxz/+kQ8//LD9mjfeeIO77rqLGTNmsGnTJl566SXefvttpk2b1tmPpss6PQ23eyPd+fPnt2+ku2zZMqZOncp9993XnW3cy2effUZWVhZZWVkkJibu8TPzB//X3rx5M9XV//sL6I477qCxsZEbbriByspKjj32WD777DOcTmeP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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "strain_max = max(tp_collect_dict.keys())\n", - "strain_min = min(tp_collect_dict.keys())\n", - "\n", - "cmap = matplotlib.colormaps['coolwarm']\n", - "\n", - "fig, ax = plt.subplots()\n", - "for strain, thermal_dict in tp_collect_dict.items():\n", - " color = cmap((strain-strain_min)/(strain_max-strain_min))\n", - " ax.plot(\n", - " thermal_dict['temperatures'], \n", - " thermal_dict['free_energy'] + eng_internal_dict[strain], \n", - " label=str(strain), color=color\n", - " )\n", - "ax.set_xlabel(\"Temperature [K]\")\n", - "ax.set_ylabel(\"Free energy ($U + F_{vib}$) [eV]\")\n", - "\n", - "normalize = matplotlib.colors.Normalize(vmin=strain_min, vmax=strain_max)\n", - "scalarmappaple = matplotlib.cm.ScalarMappable(norm=normalize, cmap=cmap)\n", - "scalarmappaple.set_array(list(tp_collect_dict.keys()))\n", - "cbar = plt.colorbar(mappable=scalarmappaple, ax=ax)\n", - "cbar.set_label(\"Strain\")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "fb8cf48b-aaff-48d0-8f9e-34cd235a7641", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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ymO0HQlBEACAt99+G1/72tfwv//7v0gkEjjooIOwdu1aTJs2DYAzTWP58uVYs2YN9uzZgxkzZuDOO+/ElClT5DWSySSWLFmChx9+GIlEAieeeCLuuusu7LfffiW5x/vvvx9r1qzBiSeeKCePA862LH//+98LumZR8vT73/8eq1evxuuvv46f//zn2HffffHAAw9g0qRJOOaYY4q5NEFUHcwwgHgtWLy4TeTEnLCAcIWlqEingo8ZV8wyzrl7UUXEilghKRBDk5G4NwQrI16xkEe3XSSq93PljLLoE0Tx2Nz5KaZ/PuzZswcf+9jHMHv2bPzv//4vxowZg9dffx0jRoyQbVatWoVbb70V69evx0EHHYSbbroJJ598MrZt24bGRmcV+aJFi/D4449jw4YNGDVqFBYvXozTTjsNW7ZsgVmCOaRvv/12aI4n27aRTqcLumbB8vTII49g/vz5OP/88/HSSy8hmXS+HXd2dmLFihV44oknCr00QQxrxJwwRGNgxaao0EQsJVNSOMch4iUFTJynvL5pJVWFGJpEkUOT3ot2JEtGuhzpUgXLX8eibsLWaNQnaK6QDYGkhwSRD6UathNbrAni8Tji8WDahltuuQUTJkzAunXrZNkBBxzgXY9z3H777Vi6dCnOPtvJl3XfffehtbUVDz30EBYuXIj29nasXbsWDzzwAE466SQAwIMPPogJEybgySefxNy5cwt+PYIpU6bg97//PSZOnKiV/+xnP8ORRx5Z0DULlqebbroJ99xzDy644AJs2LBBls+aNSs0lwJBEJVHF7HikfPDMrpUyUchapkUkE7LVZHOeUqRtpS3eS+gR8YSJUqI6G7WK2UqElUiX66AiU2OhayJ9qqURaJKFM09JikjBiGlmjA+YcIErfyGG27AsmXLAu0fe+wxzJ07F+eccw6efvpp7LvvvrjsssvkvKIdO3agra0Nc+bMkX3i8TiOO+44bN68GQsXLsSWLVuQTqe1NuPHj8fUqVOxefPmouTpkksuwfe+9z3ccMMNmD9/Pt5++23Yto1f/OIX2LZtG+6//378z//8T0HXLlietm3bhmOPPTZQ3tTUhL179xZ6WYIgBjFyfhiKmx8m4LbtbAESEKskeDrtnatCllHPU4FHOXGf25qQASXMUm1GNKFiqnj5y3znUuIiMWcTX3kepa2PiEHBzp070dTUJM/Dok4A8M9//hN33303rr76anzjG9/Ac889hyuuuALxeBwXXHAB2traAACtra1av9bWVrz55psAgLa2NsRiMYwcOTLQRvQvlPvuuw/f+ta38KlPfQo/+clPsGLFCjDGcP311+Ooo47C448/jpNPPrmgaxcsT+PGjcP27du1EB0APPPMMzjwwAMLveywofc3PwcMw1kp5q4YYzE3YWPcO5d1lEWbGIIwwwCMeEm3HpEpLJTolidYae88456nw9r4HsW1BGLYMlmiYUsVwwDMMNlyH003emZGgUgk2M70yZi/L628HLKIdSbF9AecIIgqT9mwbRvTp0/HihUrAABHHnkkXn31Vdx999244IILZDv/3xvnvN+/wVza9AdXfhlz584tyRCgoOBP5IULF+LKK6/EvffeC8YY3nnnHTz77LNYsmQJrr/++pLd4FCEc470X593vhnnihlxZapWSpYjXu5xXEiYWifOaz0RowSOxBCnVCks/HDu7r2mCBUXcuYKmByilDKW1s+lvLmPVtobvhRv9LYN2N4qS6AM+7qZkaBQuWXOprohZbJtRJG0iN4/rB+JWsWwwWAX8TUk377jxo3DoYceqpV96EMfwiOPPAIAGDt2LAAnujRu3DjZZvfu3TIaNXbsWKRSKezZs0eLPu3evRuzZs0q6HWolOvvr2B5uuaaa9De3o7Zs2ejt7cXxx57LOLxOJYsWYLLL7+8lPc49OAc8Y99Ajwp8gf1OscpN3FjSjkWb6BWBjyRARLdRW7oG9UjWv4IV7xGj4aJ83itJ2VRmvNBDD8YY16Ep8TXlnu8KWIFSxWvjBJFE3VCvDJeOysNpNV6pZ26j5uMnCW8eyjxa5IIUZNCFS5dzJUtR9TcLVvMqNxaypG6CBCJeIKnlbvntFCgYnzsYx/Dtm3btLJ//OMfcmL2pEmTMHbsWGzatElOzE6lUnj66adxyy23AACmTZuGaDSKTZs2Yd68eQCAXbt2YevWrVi1alXR93jQQQf1+/fw/vvv533dosaCbr75ZixduhR//etfYds2Dj30UDQ0NBRzyWEBMwzEjjwup7Yyd5AiWEi556leTbR4qhdI+s5FOzExV7yZ9hSRRZsZTsRLDi/WKkONShQsXuNGvfxl7l5y9AZHEAD0Pd6KTXWRjUDkTJOwjBsFy3hlVkaJjol6p1wInNrPq0870TOBXJmp3EtZXqGCKlVm1Cdkunz1WR6vR2TiIeW+25JR6QzjV111FWbNmoUVK1Zg3rx5eO6557BmzRqsWbMGgPN3vWjRIqxYsQKTJ0/G5MmTsWLFCtTV1eG8884DADQ3N+PSSy/F4sWLMWrUKLS0tGDJkiU47LDD5Oq7Yli+fDmam5uLvo6foifS1NXVYfr06aW4FyIELXdQEavW5SqpLBImRSupnCd7wVMJ2QepXndQ3QaSCfBkorjs2bFswqVEvxQBk4Imo2NxsCrbuJMgBopyRs78yIUAWaSLu5LmyFlGEbmMJ1uW28bKZC93y+SXQ0GJhI01j64yeSrNnKdcOfroo/Hoo4/i2muvxY033ohJkybh9ttvx/nnny/bXHPNNUgkErjssstkksyNGzfKHE8AcNtttyESiWDevHkySeb69etLkuPp3HPPxZgxY4q+jh/GeeG/6v/7v//D//3f/2H37t2BXYvvvffeom9uMNLR0YHm5ma0t7fnNKFuKME5d7csEXKV8MmYIl/JhBcV8wlZXnO9+oT55nzFtUiXLmA1joAGhifjlC2bIKocZ9jTdqUp7UmVFLaMLluh5WnAsrRyVteI2Ec/UdS9VeIzQzzHo8/sRn1D4c/R3dWBs44ZM2Q+30zTxK5du8oiTwVHnpYvX44bb7wR06dPx7hx42gIZhjAmJCVOIDCwqAiaSN3xcuJfiU8AVNEK0zARL2TrJF79V1FvLBozIt2KUORWaNhskyZwB+JFnEDBEEUgzPsaTo/KN3KzWqD9rbTKSI21C8Fy9M999yD9evXY/78+aW8H2KII5I2smgMRQmYmOwqhh6ljOmRLme4UciZmAfmnMsJtG6OId7d0fcT94VhBtJM6GkoRJ1v9aM2bElRMIIgCqfS27MMdvwjYqWkYHlKpVIlWUZIEPki5m6wSBSoL/w63Mro0S53jlf43C//uStiYjWkbYH3dgO9pVgN6Us1Ea/xrY5UImLRuDd0KVZORuOUkoIgCKKMFCxPX/jCF/DQQw/huuuuK+X9EETFYGYErLYBqC18hai2GjKV1KNh/tWQvjqvPhlYDcl7Oot7cSIlRVTN/aWIVrRGDsFq+cKicaj5wigtBUFUEUWutkMxfYcZBctTb28v1qxZgyeffBKHH344olF9zsett95a9M0RxGBHWw1ZBNzKhIhV0h2OTPpEzBUuN0+YJmFiKFKkpEARKSmcV6hLVjTuG5IMqRPRMPcc8jFGqyMJooxUerXdcKZgeXrllVfw4Q9/GACwdetWrY6+qRJEfjAzAtRGwGqLGIeEImFKNEyIlZaANZ1UZC0Jnu7VzpFKuqsilUn5aC/+hUZj4XLlE61sAqaWU1SMIHQqnWF8OFOwPD311FOlvA+CIEpAySRMrIpMq/LV6xMuf12vM/HezYzvtUl66SnEBsA9nSVIlOguPsgmXdGYfux79MRNqaPtRAiCyIGikmT+/ve/x+rVq/HPf/4TP/vZz7DvvvvigQcewKRJk3DMMceU6h4Jgqgw2qrIuiKys0JZHZlKAule8FTKi3y5kiXnjcnyVEi9K2PppDu+wJ1yd9J+SUYcmCGjY1K+IjGvLBYiYSIKJh5jflmj4UqiMtCwXeUoWJ4eeeQRzJ8/H+effz5efPFFJJPOG1hnZydWrFiBJ554omQ3ORTpfeG3zoTluJNPiLnzZsS5kz2bvgET1Y+2OhLFb98ko2KpXjeSlZRDjZ5suRGxTMpN7Jr02qZTrnQpj2LCPreVYcoSEokqkhUDIjFPrHzHwTZRvY1aF4k58+4IApXfnmU4U7A83XTTTbjnnntwwQUXYMOGDbJ81qxZuPHGG0tyc0MVzjkSm37uJnrMAmPe1iQ1nmBBE62gdLG42z5W4zxS3iBiiKHnCisN3LadPd/6kaxgvRtFy9JHfpUXE/gTZdjXzYz0I1/9CVrUeYxE3XrlPBIlOSOIEAqWp23btuHYY48NlDc1NWHv3r3F3NPQh9uIHTrNWUmVdBM8KsewbYBz8N4EeG8CKCJ3I6KxENHKclwjjutcYXNFzCx6C0SCGNQww5C5tEqFHK5MJ4FUypmULxKyZlJAOu1GvVKeiIlIme842CYNqWFie5HenvJsuGtG3MihiIJFPSETohX1CVc05vXRzr2+ajkMkyLtJYCSZFaOgj8Vx40bh+3bt+OAAw7Qyp955hkceOCBxd7XkIYZJurPuDi0Tg5J9CacbUt6g3IVet7r7jPX65zLYQjxRtxVxEqpSNQTKflYF1KmHxs1dW60jDbwJYYf2nBlcZksAsj3CVWwsghXX4ImI2LplPOYEY/KRrti/7dkwnnu0r4UB2Z4vyvlEZGIJ1qmOI+GtmWRKGCqfftoM0STyNKcp8pRsDwtXLgQV155Je69914wxvDOO+/g2WefxZIlS3D99deX8h6HFaXYvgQAuGVlka5eT8ySnmw5bXpcEXOOkXKzZ4vEjQVvX8L0IUXtsc6pc0UraxvaO44gJNr7RInFDAA4t4FMxhOqtCpWynm2clfAPEFL+c4dYZOrMLld+sn/fdGXrJlRGTVjTSNQ87HTyn03RBVSsDxdc801aG9vx+zZs9Hb24tjjz0W8XgcS5YsweWXX17KeyQKgJkmWF0DUFdc9mwtsqU+JnukZHllicCxk7SRy7KChyDNSGh0S4uEZRt2FO1o7gZB5ASTqw5jKGoPpH7gViYoVf5HK1iutbHEeUYXt0xGq9eiaTnKmtHSClSRPNHGwJWjqMksN998M5YuXYq//vWvsG0bhx56KBoail9NQwwOmGE4+YKKyBnExRCkKluhMpYA7+1RomFCynoBuHNHujvBu4vYtiRWo8ztqnOHFrNEwuSxV0dJGQmitDAz4nwxKjJDfy6IOWihkmalnTloPlkr5Ry4SmCjyDlPJbuToU/RM4Hr6uowffr0UtwLMQRhkShYQxRoaCqoP+e2swRdkSy7V5WtbCLmtZHfOMUS9EL9yzDCVznK6FZNeGRMmZCPKKWgIIiBQMxBQyRK8RWiaGgZFTGoYaz4veO4lelXsLIPT7rDj9wGbBs80Q2e6C7iBRkhktWPjPlEjHKAEQQRBk0YrxwkT8SQh5kRsPpGoL6wTNmcu5mse/2rHX2SJSbmhwlYMuG+s9mOrPX2FPGCGMLSTUDNCxarUdrU6O3dHGC0FQlBDC1InipHVcrTG2+8gf/+7//Gb37zG7S1tWH8+PH4/Oc/j6VLlyIWy544j3OO5cuXY82aNdizZw9mzJiBO++8E1OmTKng3RPVBmNMyQE0oqBrFCxgvlWS4L4cYMVgmD7BUh6FYAUkTBE2kYiV8oARxKDA5gx2EVnCi+k73KjKd72///3vsG0bq1evxgc/+EFs3boVCxYsQHd3N77zne9k7bdq1SrceuutWL9+PQ466CDcdNNNOPnkk7Ft2zY0Nha3fxdB9EXpBCwVkuurF1o6CpHvK6WWe8dI9ToXtK3ihyEBd8KvIl2uWCEedyJhfT7WuBEztx9lxCcIogpgnBceqBMbA7/++uv4+c9/PqAbA3/729/G3XffjX/+85+h9ZxzjB8/HosWLcLXvvY1AEAymURraytuueUWLFy4MKfn6ejoQHNzM9rb29HUVNgkaIIYSOQk/BCxCpev8DqZB6yURKJeVItEjBgCVOIzQzzHj369F3X1hT9HT3cHvjB3BH2+5UBJNgZ+6aWXBnxj4Pb2drS0tGSt37FjB9ra2jBnzhxZFo/Hcdxxx2Hz5s1Z5SmZTMrXBjh/pARRzeiT8EcWfB1u245EqRImVjQmwx+RdDfsTSa0R7kiUiZkLSIlhSASBYvFXRGLu5E/71wcQ5TF4776GqVPnOaIEYMemvNUOYbExsCvv/467rjjDnz3u9/N2qatrQ0A0NraqpW3trbizTffzNpv5cqVWL58eWluVIFbGZorQlQ1zDDAauqAmrqir8UtS0oW+pAv9TFbOycxKzwR6+kq+v4AOKkqVNmKhchWvAYsGndELBr3Imdqu2jMkbFonBK3EkSVMqg2Bl62bFm/ovL8889reaXeeecdnHLKKTjnnHPwhS98od/n8H9z5Jz3+W3y2muvxdVXXy3POzo6MGHChH6fpz923/AlcMty9n+rdfeBq3EyYxvqY62vrLZeOa8Di5CAEdUPM82iE7IKuJXxIl2ppBsNUx6TyZA67xi+9jIqZjsrJUu6Aa+IjkVjjmBFXSFzHyHO1TZafYykjJDwIjcGpshT7gyqjYEvv/xynHvuuX22UZ/vnXfewezZszFz5kysWbOmz35jx44F4ESgxo0bJ8t3794diEapxONxxOPxHO4+d5xtT5xJu3ZXO9DVDqvQi0Wi2QWstk5KF6upc7JpK2UkYMRQhJmRorcmUuG25UpViIilks5QZNqdQ5bOJmfuY9q5jvyUEtGxktypgpSyOBCLZZeyaMwVMLeNOI/GwWIxIBLzxCwaIzEb5HDOwItYMVdM3+HGoNoYePTo0Rg9enRObd9++23Mnj0b06ZNw7p162D08w960qRJGDt2LDZt2oQjjzwSAJBKpfD000/jlltuKeh+C4YxjLlxNXhvAnbCyflj9zrJGsU5703A7lXqEnqZkC9k0iUUsDoYtY5QGbX14ec14ly0r3feqGkuCDFEYYZZsuFJwNsmRMpXOulFv1y54ulUSFkSPJVyxEwcp5P9SFmJhixVzIgnUrGYs4FuzD1XJcs9dmQtmqOcxWiiP1EVVOXGwO+88w6OP/547L///vjOd76Dd999V9aJCBMAHHLIIVi5ciXOOussMMawaNEirFixApMnT8bkyZOxYsUK1NXV4bzzzivr/fphjMkhCrPA+brctnWZEscJT8Q0AXPly5Exdd84FC9gZsSTqRqfdKlSVluvnNdLCaM944jhhNgmhEWiJYuOATlKmSpm6aST+sItQ9qVsXTKPVeOUynI7XOtjLOhbymHL1UMU5GsmPO7kscxsGhUOY45v0chav72br13HHNFLuY8zxB736EJ45WjKjcG3rhxI7Zv347t27djv/320+rUzAvbtm1De3u7PL/mmmuQSCRw2WWXySSZGzdurMocT8wwwOrqYdQVsWmvX8ASPYqAuY+Jbk++Ej2we7vBE0LUup1/bVYGdlcH0NVRoHyZrnTVBqNcPtEKCFptnfMtdoi9CRJEvpRLygD3fTWT1iUrlQLPpLxImU+4HOnKVueKWzoFnnKuKeXMtpx8ZMlEeeRMwAxXuqKuVAUFzGgehbqTP1POuygpdpFznorpO9woKs/TcITyPHlwzt3M10KuuhXpUs41+XLL3eFJ2CXYx9swsw8xqvJVU+tEv2qV+WC19c6wAckXQQwYmpy5j85xCjydVo6dc+845ZO6FHgmrRy75UqbfMIrxj7j0PzFwqahCCqZ5+mu/2lHbRF5nhLdHbjsNPp8y4WiIk+DKUkmUXkYY84WHjW1MEeMyrs/59wZMlClK0y++oiEwbacb6rdnbAKzQ3kLrkPDi3WgdX4ZSs474vFamgSLUEUAWPMG6YrI3JoUxUsv4C5woZ0CojXlPV+Sg0N21WOIZMkk6g+mLvBLeI1MFGgfKWTimyJYUVv4r2d6A6VL55IwE50u/Jlg/d0wSo0H5Arkdocr74ea9QoGa14JIhKoQ1tlmgBwGCC5KlyDIkkmcTwhDEms0Cbzdmzy2dD7BUXLlrdWYca1egYrIyzUa9oW+iLicb0SfYip5cmXs6wo5Nmol5JT1FL0S+CIGjOUwUZVEkyCaKSOJv1xmHG4kBzYcseuSpfIqLlRr/UVY5OxMurc9JPdHsrHtMp2OkU0LG3sEn3jDkb88ocX7Uw4rVu3q86GLVKri9RVlOrR8xqaknACIIgcmBQJckkiGqDRWMwozGgaURB/bUVj8pqRt7bLfN7afPAZKoJ7xyW5US/RDneK/z1xGv0BKrxGm9oUSmXEqZImlFb5wgcDUESxIBAw3aVY1AlySSI4UaxKSfEKiV/slVHyHx5vXp7YCdCynoTcgsSnnT2h7Pb9xT+oiJRL6oVr3WORVQsLqJdenmgLl5LyVcJIk9su7gFzKVY/DxcqMokmQRBOIhVSsVEvwA4S7llzq++E67qYpaQE/B52lk04iRdTQNdHcW9ONN05asuKFhCyuRxjT5sWVMro2iUB4wgiFJTlUkyCYIoLSwSBWuIwmgoPLcLtywnaiUz2Ccc0XIfteOkELBguZwHZlnFrYKUL85Z1en8uAKmndd4suXWeWXKuehn0vYhxOCEhu0qR0HylE6nMWfOHKxevRoHHXQQpk+fXur7GvJ0P/c7J4OtWFFV5+QTMmrr6c2ZqEqYaRad9R7wNs7WBEsVsUSPLlsiEpbsDYiY+DQRkgbsKXwPSEE05sqUIls++XKEq1aRshpP2mI1nrxFYzRJnygZJE+VoyB5ikaj2Lp1K4XCi+A/678PZDKhdc4kXVem6lS5qtfKpWwpx86k3Rr6b0NULcwwwGrrgNo6FPM1gtu2kwTRjWY5UbGEdi4FTT13JUz2EdEwy/33KlZGFjssCThRsVjc+fGJlRGLuzIW14Ur5kbC/PU1NTBiNbRXJDFgrFy5Et/4xjdw5ZVX4vbbbwfgzMtcvnw51qxZI7dFu/POOzFlyhTZL5lMYsmSJXj44YeRSCRw4okn4q677gpsvzaYKHjY7oILLsDatWvxrW99q5T3MyzgloWaQw4H73FyB9kih5A7XMGTvbCSvbD2FrhqyjA8yVLlSpOsenmuyVd9g1NGO5sTVQ4zDJmEtRTwTNqTqV5VthT5cqXLKxPnbl3KbZdKelExty862/u/iVwQQuYTL0PKmVunSZtzbMS8Y38dzAhJ2SDHRpF5nop47ueffx5r1qzB4YcfrpWvWrUKt956K9avX4+DDjoIN910E04++WRs27ZN7iu7aNEiPP7449iwYQNGjRqFxYsX47TTTsOWLVtgDtKRmILlKZVK4Uc/+hE2bdqE6dOno75eD9XfeuutRd/cUIWZJlqvCK5I5JkM7N4e2IpU8YQ479bKbbec+8rFcgu7uxN2oduVAM7E27oGR7DqFNlSy+oaXOHS6ynyRQxFmJuZ2qgvfiNxmaBVSFeqFzyZdGQrlXTKhWj56u1UUinzZEzOFVOFrJQYpiJVimDFcpMvtV2gPw1dlgTOOYrZrlb07ejQo6rxeBzxeDxrv66uLpx//vn44Q9/iJtuukm73u23346lS5fi7LPPBgDcd999aG1txUMPPYSFCxeivb0da9euxQMPPICTTjoJAPDggw9iwoQJePLJJzF37tyCX085KVietm7diqOOOgoA8I9//EOrow/OwmCRCMyGJpgFTtoVe8UJmfKLla2KWKIbvCdYLqNfvQlYvQlY77+b/42IyFd9gyJVfvlqyCJk9c7WCQQxhNEStDY2l+Sa3jBlUMZ4shd2QMZc6ZL1Se9cKZfDlbYlc4mVnEhUl65Y3JkPFo250hXzytR6/3E0HtqWomb5MWHCBO38hhtuwLJly7K2//KXv4xPfvKTOOmkkzR52rFjB9ra2jBnzhxZFo/Hcdxxx2Hz5s1YuHAhtmzZIudRC8aPH4+pU6di8+bNQ0ee/vnPf2LSpEl46qmnynE/RBGIveKMeA0wMv+94gA3+iWlqxt2d5d3Ln+6stbDyhQd+WLRmE+8GoICpsqZjHw1UJZsYthS6mFKAbcsV6Z02fIkyzu2k8GybG3l0CXgbMybSYMXu7IyG2IoU5OrENGKxgGl3mxsRu30j5fnnspAqSaM79y5E01N3pf4vqJOGzZswIsvvojnn38+UNfW1gYAaG1t1cpbW1vx5ptvyjaxWAwjR44MtBH9ByN5y9PkyZOxa9cujBkzBgDw2c9+Ft///vcDvxyiOmGRCMzGZpgFfBt2Il8pR64SPtHShKs7tJ4nnG+0PJ2Ctfd9WHvfL+AFGN78rmzRLkW2/PUsSlEvglBhpikn8JcSkeDVG6ZMAukk7FQSSKWcKFqqF1weJ52NwFNJt0w9Dq+HZYknK2go0xwzvrrkqcgkmdzt29TUpMlTNnbu3Ikrr7wSGzduRE1Ndmn3R/045/1GAnNpM5DkLU/+8dQnnngCK1euLNkNEdWLE/mKw4jHC4p8cdtyhgt7usF7umH1dPke9XIpaa6M8XQK4LYrZIV9g2XRWL8RLpZtDhhNtCeInBEJXp1Ic/HzyMLgViYoWkKyhHBlq0+lCvoSOZBUOlXBli1bsHv3bkybNk2WWZaF3/3ud/jBD36Abdu2AXCiS+PGjZNtdu/eLQMuY8eORSqVwp49e7To0+7duzFr1qzCX0yZoU2oiEEDM0ywugYYdYUlWuXpVHi0Sx1uVIcaZQSsC3aix/l2mk7Bak/BKnB7ElZTm0Ws/BPv6wN1rKaOhhwJooQwMwJWGyl51IxwOPHEE/GXv/xFK7v44otxyCGH4Gtf+xoOPPBAjB07Fps2bcKRRx4JwFls9vTTT+OWW24BAEybNg3RaBSbNm3CvHnzAAC7du3C1q1bsWrVqsq+oDzIW54YY4FQ2mAOrRHDBxaNwWyOwWwe2X9jH84GvT26bGlzuro82fIPPYZNtN/znwJeAHNXOfon1NeHHDcoqSfqSL4IgoDNi0xVkGffxsZGTJ06VSurr6/HqFGjZPmiRYuwYsUKTJ48GZMnT8aKFStQV1eH8847DwDQ3NyMSy+9FIsXL8aoUaPQ0tKCJUuW4LDDDpOr7wYjBQ3bXXTRRXICWW9vL770pS8FUhX84he/KM0dEkQFcDboLSLqlcl4qxrViFeiO+TYHXZU6pwhRw6e6IGV6IH1XgGrHAGwGk+mDF9yVZal3Kitk3WMEiwSRNUyGDOMX3PNNUgkErjssstkksyNGzfKHE8AcNtttyESiWDevHkySeb69esHbY4nAGA8z6QQF198cU7t1q1bV9ANDXY6OjrQ3NyM9vb2nCbUEUQu8HQ6i2h197H6sctNSdHjyFcpMCO+ZKp5ZrmvqaPthQhCoRKfGeI5bvrxXtTUFf4cvT0d+Ob5I+jzLQfyjjwNVSkiiIGERaMwoyNgNo0oqL+ULy1vl5toNVuuLzUfmDvnC1YGdmc77CKyXcu93mqVYcWaOhh1boRLRMdq65U5Yl45q62jCBhBFAC3OXgR43bF9B1u0IRxghgCFC1f7ma8YZnsuU+2/IIm6kX0S2wvhAIn3QNwImA1tZ5k1dZ6Ea8aV8J8P6y23u3jDkVSzi9imFHpOU/DGZIngiDkZrxGbR3Qsk9B1+CZNOxEwpOuRI+z3ZDcasirs3sT3vZDyg9PJrwIWJFbDAFik+06Zy6YK2OsplY5dstrat2oWK0XAVPaIRKlSBhBEBKSpwHiP7/Y4CSkrG+AUV8Ps87JJ+ScN8Csq6e5I0RVwSJRmI1RmI2Fz5XQImCuZMlhx15FshLdjoCJ6FevLmFiSxEZBUMBCVdVlEiYlCoRAQuRr/DyWjcaRv+uifIwGCeMD1VIngYAzjne/cl9QCbTZzujptYVKmeJuipWnmi55W69rKurp2zZRNWhRcCKgKdTSoRLyFUCdjLhRsSU8t6EI2lqeVI8uhmpSxQJA5yUGkyRKaOmFkZcHNeAxfU65tZ7xzVeXZw21SU8bJvDLmLsrZi+ww2Sp4HAtjHypE/A6nFWT1ndTg4hq9td4t6bcJq5b+qZQpetx2t08VIFTEqXT84aGh0Jq28Ai9CfB1GdsGgMZjRW8BwwgZP1vteJevUmwF258mQrS7mQL6VcRsPSznYixUzKV3H2s1TkS4qVcp5FyFiN29fdE5PFayjiTRA5QJ+OAwAzTYxd8JWs9TyTgZXoUcSqC1a3M2FXniviZXV3e2U9XbB73D3ikr3IJHuB998r6D69yFcDzIYGGPWNMBsaYNY3OhEvV7SkcMm6BhixWEHPSRCDCSfrvfPlolh4OuV8IUr2OlIlpEs8JtXjkDZuvVPWKzcik0OTHUVM0Fdg0ZgjUUKoRLRLESwpWoE6ET3Tz2nOWGWgYbvKQfI0CGGRCCKNTUCBc0e4ZcFO9GgRLUtkyHYFTJcyNfrVKeWrmMgXi8XcKJcnXI6ACRlzJEsKV0ODF/GK19AbLTHkkNGwEuyXJjbhFkLFVfHq7dWEzC9jmpClnM1y7d6E3FFWRMbQ1QGr6Dt1MQwvQhav8QQrVgMmZavW2RszVgMWj7v1ziOL1cCIi+O4J2+xOA1bKpA8VQ6SpyEIM00nKtRQ2Gab3LKcKFZXpydaXV2wujthdXXBdh89AdPP4b6xZ1LvA3sKmKjrTqTXhCtblEsRM7O+0XkjJvEihjhiE27E40UPTQLuhu+ZjCNbyV5XtnoD5zzpipgsS8BOJcF7lXZKnUzeatsye36pYdGYI1FxV7Bc+RIyFipesk1NSF9F2qpsCNPmHHYRBlRM3+EGyRMRgJlmwZEvbtte1KtLFatO77zbL2bucVen8+03k4HVvhdW+978bz4SgVnXEJCuwLCjT7qMhgZnLgiJFzEMYYwB0SjMaBRoKF1maW5b4MmkK1VOVIwnFQnr7fXqkr3gySR4qhd2Mum0047d66SS3kR+KJGy7s7SRcpcouMmYPzyO0p8VWIoQPJElBRmGHL4DWPy68s5B+/tDReurqBo2d1dsp3V3eWsXsxkYHXshdWxN/+bN0157+rEecON4pkNDTDrGjzxqveOjVpKyEgQfphhlmT1pB85bCmGHV2h4skk7JT7mEz0K2PZ+or5ZKiyyBO3vVsvtD+RGyRPxKCBMeZmkq5FdHR+5sU5dybOukKlSpaUrf7Ey7JgdbTD6ihgFZRheOkiGtxVjMoEerNByeGlzvmilY0EkTfqsCVKMIdMxRnCTMNO9sp5YNUCB0ee29UG+hO5Qe/YxJCAMSaXYUdH5Zchuz/x0oYY1XK3jKdSgG3DdgUt/e/87z+4sjFcsrT5X25bFovTcCNBlAhnCNOZ3E8Q2SB5IoY9xYgXANiplDZxXqaQ8EmWV+e2U9JKFJXTS8zzqq9Xkqo2aIJl1ikJVeuVtnUNYDHahJcghgLcLi5YRsN2uUPyRBBFYsRiMGItiIxsybuvXNnoly11zldPl7fKsbvbG3bs7vIm2Bc6zwvOtiq6WCnZ6+t8shUiZ5TTiyAGB5wXOWxHq+1yhuSJIAaQolY2ign2Wp4uJdKl5vJScn2piVZh2+CZdOGrGwGwaNRZyVhX7+3TWFevSJZ77tZrGe/r6p394qpsYi5BEMMbkieCqFK0CfYFDDdyzp3hQiFYXZ2uiPm2DerxJMyf4R6cg6fTsPa+D2tv4ZvvGrV1QcFS9mn0ZKxekbQG2ZbSTBAEYHPnp5j+RG6QPBHEMIUxBrO2DmZtHaKj8+/v5PRKyKiW2JtRbCXkHSvbC/V0u0LmlPOUk0TRTvTATvQUvI+jXO3oj365kS2jrh5GXR3MWlfOauvcNq60uW0oAkZUM9zm4EUYUDF9hxskTwPEu4//PxjRKMxGL4dQpKEBZmOjM4xB36KJQY6T08uJCEXRWtA1eDrtipS3MbYuWMqG2VnqYFnaaseiXlO8RhMrT74Uyaqvh1FbD9Mt84uYUUM5vwhiqEPyNABwzrHzjtvA0+nwBobhypSbmFHIVaNyXu87b2x05KuhkVZPEVUDi0YRaR4BNI8oqL+TLDEphxG9aJeb5T7R40mXPHYe7USPK2E94Kmkcz13k91ihiABbxjSqK1zhhvdRJEy+lVb68hWjStmbgTQqK2FodbTcnkiD2hvu8pB8jQQ2BZGHHMsrM5OZNQM2p2d4JkMYNuwOjpgdXQUdHkWjerRLFeuvPMmV7pEtEs5b2wEM+nPgqgOnGSJNTDiNcDIUQVfh2cysFy5sl2hsnyCZSe6s8qXEDRYzgYhYhiyaCIRV6rET608NjX58qTLVERNqycRG/LYNoddxNBbMX2HG/QpOQAwM4IDr78xUO4ka0wi0+XJlNXV5Z13+c5FvZCvLmfpOk+nkdnzPjJ73keygPsz6uqcqFZjkxvdakSkqcmLcDU2uY9Km0YnGkbDFUQ1wiKRglc9Crg7eV4bYvQJlpAqK5GQx3ZPD+xe51GUy73bMhlYnR2wOgv7IqW/xqgmX/K4xll04Dz6z8PbmDW1YNFo0fdElBZKVVA5SJ4GEU6yxhrEamqA0QWsnnIn8FpdbkSr05OujJQvIWBKfbdTb3d3AwDsnh6kenqAf+eZKpsxJ4LV2OgMOTY1OY99CJcop3leRLXDGAOLxZy8VyNGFnUtblnOSkhFrqyeHmeCfqLbfXRFrKfHadvjK0847YWI8UwaVme6JCIGwImK1dSC1TjRLlZT4w09hgmZPK7x5E0pY/Eaeg8gqgaSpyGEOoE3VsD8XW5lHLHq7HSGFDs73MdOWJ0dgXKrqxOZjg4naWNvL8C5U97ZiVS+T26anlCp4hX2KATMjYZRkkZiqMGUTaqLRYpYjypV4ichs9tr5wmlrLfXfXTKxApJZDKwujqBrk5kir5LOCsm4zVSpKRcxWtc+apxfxxhk+W1tbKfU1fjyVq8ZljNAaWNgStHVcrTG2+8gf/+7//Gb37zG7S1tWH8+PH4/Oc/j6VLlyLWxwfpRRddhPvuu08rmzFjBv74xz+W+5arAmZGEGke4UzgzRM7lXJkyi9YnZ3OMGOHK1+KcAkp4+k0YFnI7N2LzN69eQ81GjU12tCi9uiPeikSRsOMxHCglCIGOPPD7GSvT7YUyfKX9WZpp0gaAGfFZKnmiqkYhiNWcUW8ahQhi3uypYlXTQ3MpmY0HDGttPdTRmzOYRcx9FZM3+FGVcrT3//+d9i2jdWrV+ODH/wgtm7digULFqC7uxvf+c53+ux7yimnYN26dfK8L9kicseIxWC0jEK0Jb9Ju3KeV2h0Kxjt0h7dOV7OG3Qv0v/JM0eQOszY6ImWPM4iY2ZDo/PteJh8myUIFRaJwIyUUMZsGzyZhNXbA97b60a4fI/JXnB/ebJXyhdPqu173QiZ+zXMtt05Z/lLWWz8BDTccW9JXicxtKhKeTrllFNwyimnyPMDDzwQ27Ztw913392vPMXjcYwdO7bct0jkiDbPa5/85nlx24bV0+1FtTr7eOzQJczuTfiGGd/J774jEX2yvCpZjSHzvBT5MmLxvJ6LIIYyzDBkpvxSwi0LdirpiFR/UpZwjv1SFh1VQPbYAYQmjFeOqpSnMNrb29HS0v/GrL/97W8xZswYjBgxAscddxxuvvlmjBkzJmv7ZDKJZNIbSOooMH0AUXqYYSDS4MyRyldH7HQ6PKLV0dG3hHV2ApYFnsnIFY1533csFlypGJCvpsCKR7OxEQatcCKInGCmKTPoDxcoVUHlGBLy9Prrr+OOO+7Ad7/73T7bnXrqqTjnnHMwceJE7NixA9dddx1OOOEEbNmyBfF4+MfvypUrsXz58nLcNjGAGNEojJYWRHMQbhWxH5w2h6vTndPV1cd8L3eVI2wbPJVC+r33kH7vvfzvu6ZWi2Z5xw2eeDUoE++VYcnhNHGWIAiinDA+iOJ0y5Yt61dUnn/+eUyfPl2ev/POOzjuuONw3HHH4Uc/+lFez7dr1y5MnDgRGzZswNlnnx3aJizyNGHCBLS3t6OpqfCcMMTwg7tzL0JXMYZImCZi3V1FP79IniplSwqWImH1DUE5a2iEUVdHk+sJogA6OjrQ3Nxc1s8M8RxfuuVtxGsLf45kogP3fG1f+nzLgUEVebr88stx7rnn9tnmgAMOkMfvvPMOZs+ejZkzZ2LNmjV5P9+4ceMwceJEvPbaa1nbxOPxrFEpgsgH5m67YzY0AOPy68sty0uQGiZdbt6ujMjlJY/Dk6fmjUiD0diISL071KhsCaRFutQthWjLIIKoGJwXuTHw4ImlDHoGlTyNHj0ao0fnNkHv7bffxuzZszFt2jSsW7cORgHfit977z3s3LkT48bl+UlGEBWGmSYizc2INDfn3VdGvLq6YHV1eNsCCflSI10imarShqdTzpZBhebwgoh6uWJVL6TLWbGlClfEJ19ij0cWj5N8EQQxaBhU8pQr77zzDo4//njsv//++M53voN33/WWqKsr6Q455BCsXLkSZ511Frq6urBs2TJ8+tOfxrhx4/DGG2/gG9/4BkaPHo2zzjprIF4GQVQELeKF/Fea2smklsPL2yKo0xt+lJnsRdb6bpnNHu62JZk9e5DZs6ew1xCJ9C9b9Z5seaJWD7O+AUZtLQ07EkMeXmSeJ4o85U5VytPGjRuxfft2bN++Hfvtt59Wp/7H37ZtG9rb2wEApmniL3/5C+6//37s3bsX48aNw+zZs/GTn/wEjY2NFb1/AEi8+RbM+npEmihDNjG4MeJxGPF4Qcu2A1sGiciWIldauXvs7NfY7Q45uqsb3SSqBcEYzLp6mA31bsJI36Msd8tUUSMBI6oEbhc5bEer7XKmKuXpoosuwkUXXdRvO1Wkamtr8etf/7qMd5UfL5z9Wdg9TmZdo6YGkSZnkm6k2dl2JNLYiGizkxco2uSWu4kb5XFzE8w62hOOGLwUvWWQWN2oCFbfEtaptO2C1d0Fnsk4Ob26u9yJ93nu2ShfTJ4CppW5AkYT74kyQvJUOapSnqodnsmAmaY8t3t7kertRWp3nhmyAbknXFbBampCpLlRHkfV8sYGsAj9CRCDF8aYl6tnn+z52LLBOQdPpRxxEsOJ3WJYUT331Xcp7UopYACMujpHwurrYdbVwRCiVVcPs96rM+qcerOhIdi+tk57DyEIorLQJ+cAwCIRHPPcM+CWhUxXNzIdTgZs59E7Tnd0wOroRLrDmVeSaXfr3WSOPJ3R9oQrBGfosMmJfDU3IdrU5E5MbkJ0RLOvrNmRrxHNFPEiqgLGGJgYdsxz6yBBXgIm5SuLgAFyq5C8txPyYdTUOrJV3+CIVr0qZfUw3DpVvKSUuW3Mujr6AjWEsLnzU0x/IjfoX80AwkwT0WYnGpQvnHPYiV5kOjuQaXfkKt3R4QiWK1fecWdAzix3nyfnjb0byV278rv3SMQVLleompudyNaIJresWQ5BRoV4jXCiXvRmTVQTJRWwnh4pVHZPN6zuHmeLoe5u+WiLY6Xedv+dahLW62whUkiyVe31xWJOREtExOrqYNTWObJVV+dFwES5G/ky6oJtKCXFwELDdpWDPsWqFMYYzLpamHW1iLfmP5nETqcVsXIla68jV+n2dmTa3ceODmT26mU8lQLPZJB+fw/S7+9BIs/nNhsaPOFqbvJEq1kRLXfoMTpiBCIjnHKD8m0RVYomYCNHFnUtO5XyhKqnx4t2uce2JmNCzrpgi2O3nqecpBM8lUImlQIKnYyvYphuhMsTsJylrM4TMqO2FmZtLZhJH1GDmZUrV+IXv/gF/v73v6O2thazZs3CLbfcgoMPPli24Zxj+fLlWLNmDfbs2YMZM2bgzjvvxJQpU2SbZDKJJUuW4OGHH0YikcCJJ56Iu+66K7AgbDBBf5nDFCMaRaylBbE8tycBAKu3F5n2dqTbO5DZ60pVR4db5pzLeuXY6nKyZMvEjW/ntxmvUVOjyZYQLW2IsbkZkREjpJxFm5th1NbQt2FiyGDEYs4K3RFFSlg6DbunB1bCGUa0etwolzzugZ1w5UxpE17mfoWyLXfSfmcJXqkbFat1ZMqordXEynDnwsnzurpAuV5XB6OmZkjPFav0xsBPP/00vvzlL+Poo49GJpPB0qVLMWfOHPz1r39FfX09AGDVqlW49dZbsX79ehx00EG46aabcPLJJ2Pbtm1ypfuiRYvw+OOPY8OGDRg1ahQWL16M0047DVu2bIE5SP97DartWaqBSqTaH6rwTMYZXtyriJY7vOhIV7tTJ0Rsb7sbCesALKvg52XRqBfdGtHsky91WFEZXmxuhllfT9JFEDkgU1IIuRJS1dOti5iIjiVEvSNvsm0iATuRAE+ny3avRk2NJ1Y1dYp0BeUsOmo0Rp/6yaKer5Lbs1xw3Q7EagpPvZPq7cT9/z2p4Ht99913MWbMGDz99NM49thjwTnH+PHjsWjRInzta18D4ESZWltbccstt2DhwoVob2/HPvvsgwceeACf/exnATi5HCdMmIAnnngCc+fOLfj1lBOKPBEVg0UiiI4cmfewBeccVne3FKr0XjW6pQwxikcRDWvfC57OgKfTSP3nP0j95z/53bA7J02d1xUcYtTLxWpGmtdFDCfUlBSlwE6nYScSjmQlEq5kOWJlJXq8cilsStuQOqunB7CdL2B2by/s3l4gh4StNRMPKFqeqpGOjg7tPNdtykRexRZ3RGPHjh1oa2vDnDlztGsdd9xx2Lx5MxYuXIgtW7YgnU5rbcaPH4+pU6di8+bNJE8EUSiMMUTcfdJq9t03535iUr0jVHvdYURFuPqQMLu3F7Cswud1NTZ4ES2Ru0uJammT7JubaV4XQSgY0SiMaBQoUaSGu1nug2KVTcKc40iRQ6OVplTDdhMmTNDKb7jhBixbtqzfvldffTWOOeYYTJ06FQDQ1tYGAGj1zcttbW3Fm2++KdvEYjGM9H2pbm1tlf0HIyRPxJBFnVSPcfltS2L19jpDhnuVSNbevTKFhJQubQiy05vX1dkFq7ML+NfbeT2vSJiqzedy5cpbueiLejU525FQ8kWCCIcxBubOFYs0jxjo2ykbpVptt3PnTm3YLpeo0+WXX45XXnkFzzzzTKDOP/2Bc97vlIhc2gwkJE8EEYJZUwOzpgbxMfklZpSrGGVky5EqMadLH2Ls0Mpg24UnTDUMmXU+2tQoI10iSWpUO29SomGUpZ4gCJ2mpqa85jx95StfwWOPPYbf/e532go5sddsW1sbxo0bJ8t3794to1Fjx45FKpXCnj17tOjT7t27MWvWrGJfStkgeSKIElLoKkZu2868ro4OPZrVrqSPUFJGqNEuu7cXsG1XxNrRm+c9y5xdTU1BuRJZ6bXzZidrfVOTs3qJxIsgBgWVzvPEOcdXvvIVPProo/jtb3+LSZMmafWTJk3C2LFjsWnTJhx55JEAgFQqhaeffhq33HILAGDatGmIRqPYtGkT5s2bBwDYtWsXtm7dilWrVhX8WsoNyRNBDAKYiBw1NuY1rwtw8v5oebnaOz3hchOjylWMbpJUIWE8ndZyduV93+pKRilgjXJ/RrFNULSpCWaTu42QW2/W19NQI0GUEBscdhFznmzk1/fLX/4yHnroIfy///f/0NjYKOcoNTc3o7a2FowxLFq0CCtWrMDkyZMxefJkrFixAnV1dTjvvPNk20svvRSLFy/GqFGj0NLSgiVLluCwww7DSSedVPBrKTckTwRR5RixGGL7jEZsn9F59XM23e2V6SDk9j/t7c6WQFnPnXlfsKzCVzIC7lBjg7fXoiZdjaHlcm/G5iYn1xFBEJJKR57uvvtuAMDxxx+vla9btw4XXXQRAOCaa65BIpHAZZddJpNkbty4UeZ4AoDbbrsNkUgE8+bNk0ky169fP2hzPAGU5ylvKM8TQbjpI3p6vCHEDt/ei+o2QTKLfZcst5PJou/BiMcVuWrUIl2yvNGta2hAxJ1Y75w3wohFS/CbIIi+qWSep3Ov+Qdi8SLyPCU7sWHVQfT5lgMUeRogXr7oGrCIiejIZkRHOhmyoyObfMfOoxGlN3licMEYQ6S+HpH6emD8uP47+LCTSWf4UJMr33ZB7p6NmZA24Bx2MonUu+8i9W5hG+waNTVSrqRUNTZ60TAZFQurb6LM9cSgo9IZxoczJE8DAOcc72z4H/Acs2ab9XWuVDWFy9bIESReRFVhxOOI7RPPe6gR0CfXOwLWCUuImD/q1dmFTKdTn+nqctJJdHcDgLeysUD5YpGIEsnS5cpsVERLLW9wyxrqYTY00L9PoqRwm8OmjYErAsnTQGDbmPK965De24H0nnak93T4jp3HTLuzP5TV3QOruwe9/8o/YVi/4qXJVjOiLc2ItTjHQ3kPKKJ6USfXI7+59QAAblnIdHXLKJbV5Ua8OjulbImcXWHlma4uZ75XJoPM3r3IFLGhrlFTg0hDA0xFqCKNjoyZDfWuaAkZa4BZX+9FxNw2tOKRICoPydMAwEwTExd+rt923LJcqXLFKnBcXvGKjGiSIhUbNQLRlhGKYI1AtKUZ0ZYR8jjW4iRzNGhrEmIQw9xtd6LNhc3p4JzD7km4UtWpSZWQLcsnW7K8qxuZrk7YCSehhIh+oZAJ9+L1iAiYEK2Gek+uwqTMLYs0NDptG5xtVejLUvVT6Qnjwxn6lBvEMNNEbNRIxEblv0UAtyyk2ztzli3nZy/S77cj0+Fkyc7s7UBmbweAnXk9typd0ZYRjngJ6RrZjKgrYjFRNmoESRdRNTDGYNbXwayvQ3xsa/8dQrDTaUekurthichWV5dT1ukIl9XZhUxXtxMZ0+q7kOlyRAyclyQCBgBGXS0i9a581dfBbHAjXUK+XMlyyhoU8WqAWV/nRcLicYqEDRA056ly0KfVEIWZJmJuVChf7HQa6b2dSL+3B6n32x3Rer8dqff2SsFKve88pt/fi9SedqTf21u8dDU3KqI1whEwGdUagegoEeVyhazF2SuOcgUR1YYRjcIYOQLRkSMKvga3bViJhBfl8suVlK+welfOurvBUykAgN2TQKonARQ4B0zAIhFPuurrXRlTBKzBla2QMrPeFbc6py+tiCQGKyRPRAAjGkV8nxbE98kvS7aUrvf3uqIVlK70HvdcSNf77XKIMdPe6R7nIV2GgejIJilVQrSkXLWMQGzUSG2oMTZqBMyGevp2TFQ1zDDkisdCI2CAk2TV6u72RKu7B1ZXl17W1Q2ru7vvsm4lEuZmuy/6NUajnlDV10vBMuvrYNa5AibK6oR8+dq5dZH6OrAhHt3mtg1u20X1J3JjaP8lERWlFNKlRrWEdEkRe887Tr23B1ZXD2DbSL+3F+n39ub1nCwadSJbo0b45m81IzpqpCZacl7XqBEwa/rfIJMgqgnD3TA3OjL/6QEqMhKmilWXECsRBVNly1/W5cpYj8wDxtPpkgxJCox4PCBWkbo6ORxp1tXKukh9PWKjR2P0ySeU5LkrgV3karti+g43SJ6IAadQ6bKSKU+qpHDtCREtR65Se5xHO5kCT6eR/Pd/kPx3fhN1jdoaObSoTqKXka6RzYFIV7RlBMw4ZcMmhjZaJKzwQBgAONGr7h5Hpnp63IUvjlhl3GiXU66W9chImCzrScDq7gZPpwE4+cXsZDLnrYjqDpxUVfJEVA6SJ6JqMeMxmGP3Qc3YfXLu42TGTujDiX2IlpjPlX6/HdyyYCd60fuvtrxXL5r1db4J882BocZgWTNtQUIMS1gkUtSKSD92Ku0KV7cnZYpsBct6YPX0IDYm9/eWwQBNGK8cJE/EsMLJjO3Mf6idkHtmbM45Mu2dnmDJuVvt3tCiOpFeDjd2ALbtpYzYuSuv+zUb6gJCFW1RhhJbmr05X+7qxejIZhpeJAgFIxaFEStugn41QKkKKgfJE0HkAGPMSTQ6ogl1kybk3I/bNjIdXd4keblKUYiWb57X+97EenAOq6sHia4eJN56J6/7NWprtHQRMuo1sskbahQippRHGmkiPUFUKyRPlYPkiSDKCDMMKV34wP459+O27eTjkqK1RxlqbPfmd4k2e1zxciNddqIXvW/3ovftf+d3v6bpztNqltv+iHxcqmipkS5KjkoQxHCD3u0IYhDCDKOgPF0i0iUFy31UU0M4CVLVeifaZSdT4JaF1LvvI/Xu+3nfc6SpwRGqEU36lj/iWNsiSD+m7NYEUTw2bNi88HQDNihVQa6QPBHEEEKLdOUzvMg57EQv0ns63AiWMrTok67U+8r5+3uR6XQ22s10dCHT0YXEm2/nfd+R5sbgXou5SFhzI4kXQbhwu7ihtyK8a9hB8kQQhLPlSF0tzLpa1Oyb3zpzNSN9n9v/yON2WW/1JAB4CVITyFO8GHMjXq54tfg3v25GtLkR0RFNiIxodMpHiPMmSiFBEERBkDwRBFEUhebpApzs1p5QhYjX+9klzOpJAO4qyILEC87EeiFTQqiEbEVHivMmb6ixudEpo6gXMQihCeOVg+SJIIgBw4jFEG8djXjr6Lz7WskUMq5spd7XN7/OCNna24l0e4db1uFslr23Q24JZCd6kUz0IrmrsP3cIo31jkzJHye6FRFC1tyI6EjvPNLU6LRpbkSkqYHkiygplOepcpA8EQRRlZjxGMwCxYtbljOxfq8rWHvbkd7b6QiW/PGdt7vn6nBjZzcynd155+8SRBrrnflezU2INDe4gtXglI1oQrS5AZFmN+LV3OC2c+VrRCPMulpKLUEQAwDJE0EQww5mmnIieiHYqRTS7c6qxoyIbrlilWkXQuaUZRRBy7R3Id3eCbvX2btNyleeGevV1xGRkSwnqqXJWHOjK1+ekEWaXElrbkS0uYGy2A8hbNuGXcTmvsX0HW6QPBEEQeSJEYsVPM8LcIcc3bla6b0dXhSsvdMVrA633jnWy7uQae8EtyxwyypoY2zttcRjiLjDiNGmBhn5ijS68tVU75Q1uW2aG2XETD2nIciBh+Y8VQ6SJ4IgiApjxmMwx4xCfMyogvpzzp3Nb9sV6erodIYaleO0EDT3URMzN8WEnUwhtfs9pHa/V9xraqhTZMoVsKZ6RF3p8gSsXs758oTMqTfr62gYkqgKSJ4IgiCqDMYYIg31iDTU551aQsAtyxk27Ohy5atL/qTbO5Hp7HJFrNt33oW0aNveCTuZAgBYXT2wunqQfGd34S/MMJyoVqMb7WpwHxvrHSFrylKnnrtlRm3NsBMxzm3wIpI1FdN3uEHyRBAEMQxhpilXCdYWcR0rmYLV2YV0u5CvTkXIun3nIYLW0S2HIWHbcjizFK/PbKxHtKkBppCvxnpHwHyi5dXp59ERjYiNLmxodiCgYbvKQfJEEARBFIwZj8GMtxQlGZxzWD0JGQmzOruR7nQf3fNMZxfSHd3OcUcXMl3uo1sn+mY6uwHOnciaO2G/UOo+OBGz/7ax4P4Vp0h5AslTzpA8EQRBEAMKYwyR+jpE6uuAsfsUdS1u246IdShC1dXtRLj+//buPCaKu/8D+Hu4lkOgRgQW5NAaCmqLeEQQE8ULk1/FXuJR8VqNTWNTjFVL60Fr69VUSaS1tUG0qYTaelRLbNWfYGigUhQStZZSwlVBaS0uCAg83e/zh2EfKZbd2V122OX9SiYus9+dfX+cZfnkO7OzXTNdXY3X45qv+/9r4Jy9BlmoQrI3bJ6IiMhuSA4O+vPBzGVrF43UCTO/GJjnPBmNzRMREdFj2NoJ5zznyXoclA5AREREZEs480RERGQHhNBBmHGVcF6qwHg2O/OUkJCA4OBguLq6Qq1WIykpCXV1db0+RgiB1NRUBAQEwM3NDdOmTcONGzeslJiIiKjvdB22M2ch49hs8xQXF4djx46hrKwMx48fR0VFBV566aVeH7Nnzx7s3bsX6enp+Omnn+Dv749Zs2ahudn8a4oQERHRwGCzh+3WrVunvx0SEoI333wTzz33HDo7O+Hs7NxjvBACaWlpePvtt/HCCy8AAI4cOQI/Pz9kZWVhzZo1VstORERkabzCuPXY7MzTo/766y8cPXoUkydPfmzjBACVlZW4ffs2Zs+erV+nUqkwdepUFBQU/Ou229vb0dTU1G0hIiLqb3Q6QKcTZixKV2A7bLp52rRpEzw8PDBkyBDU1NTgm2+++dext2/fBgD4+XX/Hig/Pz/9fY+zc+dOeHt765egoCDLhCciIiKb1K+ap9TUVEiS1OtSXFysH79hwwaUlJTg3LlzcHR0xNKlSw1e1Oyf1+0QQvR6LY+UlBRotVr9Ultba16RREREfUDodGYvZJx+dc7T2rVrsXDhwl7HhIaG6m/7+PjAx8cHYWFhiIiIQFBQEH788UfExMT0eJy/vz+AhzNQarVav76hoaHHbNSjVCoVVCqVzEqIiIisixfJtJ5+1Tx1NUOm6Jpxam9vf+z9w4cPh7+/P86fP4+oqCgAQEdHBy5duoTdu3ebFpiIiKif4Anj1tOvDtsZq6ioCOnp6SgtLUV1dTVyc3OxePFiPPnkk91mncLDw3Hy5EkADw/XJScnY8eOHTh58iSuX7+O5cuXw93dHYsXL1aqFCIiIrIx/WrmyVhubm44ceIEtm3bhpaWFqjVasyZMwfZ2dndDrGVlZVBq9Xqf964cSPa2trw6quvorGxEZMmTcK5c+fg6empRBlEREQWw8N21iMJW/vaaIU1NTXB29sbWq0WXl5eSschIqJ+zBp/M7qeY1J8DpycPUzezn86W3D5+//j3zcj2OTMk5K6ek1e74mIiAzp+lthjXmKv//ToujjBxI2TzJ1fZULr/dERETGam5uhre3d59s28XFBf7+/ij+/0Szt+Xv7w8XFxcLpLJvPGwnk06nQ11dHTw9PXu9PpQlNTU1ISgoCLW1tXY7lWrvNbI+22fvNdp7fYAyNQoh0NzcjICAADg49N1ntB48eICOjg6zt+Pi4gJXV1cLJLJvnHmSycHBAcOGDVPkub28vOz2Ta2LvdfI+myfvddo7/UB1q+xr2acHuXq6sqmx4ps8lIFREREREph80REREQkA5snG6BSqbBt2za7/poYe6+R9dk+e6/R3usDBkaNZB08YZyIiIhIBs48EREREcnA5omIiIhIBjZPRERERDKweSIiIiKSgc1TP3Lr1i0sWbIEQ4YMgbu7O8aOHYsrV67o7z9x4gTi4+Ph4+MDSZJQWlqqXFgT9VZjZ2cnNm3ahKeffhoeHh4ICAjA0qVLUVdXp3Bq4xnah6mpqQgPD4eHhwcGDx6MmTNn4vLlywomls9QjY9as2YNJElCWlqadUOawVB9y5cvhyRJ3Zbo6GgFE8tjzP67efMmEhIS4O3tDU9PT0RHR6OmpkahxPIZqvGf+69r+eCDDxRMTbaEVxjvJxobGxEbG4u4uDicPXsWvr6+qKiowBNPPKEf09LSgtjYWMyfPx+rV69WLqyJDNXY2tqKq1evYsuWLYiMjERjYyOSk5ORkJCA4uJiZcMbwZh9GBYWhvT0dIwYMQJtbW3Yt28fZs+ejd9++w1Dhw5VLryRjKmxy6lTp3D58mUEBARYP6iJjK1vzpw5yMzM1P9sK98FZkx9FRUVmDJlCjQaDd555x14e3vj5s2bNnP1amNqrK+v7/aYs2fPQqPR4MUXX7RyWrJZgvqFTZs2iSlTphg1trKyUgAQJSUlfRvKwuTU2KWoqEgAENXV1X2UynJMqU+r1QoA4sKFC32UyrKMrfH3338XgYGB4vr16yIkJETs27ev78NZgDH1LVu2TMybN886gSzMmPoWLFgglixZYqVElmfK7+G8efPE9OnT+ygR2SMetusnTp8+jQkTJmD+/Pnw9fVFVFQUPvvsM6VjWZQpNWq1WkiS9NiZjf5Gbn0dHR04ePAgvL29ERkZacWkpjOmRp1Oh6SkJGzYsAGjR49WKKlpjN2HeXl58PX1RVhYGFavXo2GhgYF0spnqD6dToecnByEhYUhPj4evr6+mDRpEk6dOqVcaJnk/h7euXMHOTk50Gg0VkxJNk/p7o0eUqlUQqVSiZSUFHH16lXxySefCFdXV3HkyJEeY2115klOjUII0dbWJsaPHy9efvllKyc1jbH1nTlzRnh4eAhJkkRAQIAoKipSKLF8xtS4Y8cOMWvWLKHT6YQQwqZmnoypLzs7W3z77bfi2rVr4vTp0yIyMlKMHj1aPHjwQMHkxjFUX319vQAg3N3dxd69e0VJSYnYuXOnkCRJ5OXlKZzeOHLfZ3bv3i0GDx4s2trarJyUbBmbp37C2dlZxMTEdFv32muviejo6B5jbbV5klNjR0eHmDdvnoiKihJardZaEc1ibH33798X5eXlorCwUKxcuVKEhoaKO3fuWDOqyQzVWFxcLPz8/MStW7f099tS8yTnNdqlrq5OODs7i+PHj/d1PLMZqu/WrVsCgFi0aFG3MXPnzhULFy60Wk5zyN2HTz31lFi7dq01opEd4WG7fkKtVmPUqFHd1kVERNjUJ1wMMbbGzs5OJCYmorKyEufPn4eXl5c1Y5rM2Po8PDwwcuRIREdHIyMjA05OTsjIyLBmVJMZqjE/Px8NDQ0IDg6Gk5MTnJycUF1djfXr1yM0NFSBxPKY8nuoVqsREhKC8vLyvo5nNkP1+fj4wMnJyabfi+Tsw/z8fJSVlWHVqlXWikd2gp+26ydiY2NRVlbWbd2vv/6KkJAQhRJZnjE1djVO5eXlyM3NxZAhQ6wd02Sm7kMhBNrb2/symsUYqjEpKQkzZ87sdn98fDySkpKwYsUKq+U0lSn78O7du6itrYVare7reGYzVJ+LiwsmTpxo0+9FcvZhRkYGxo8fbzPnHFI/ovTUFz1UVFQknJycxPvvvy/Ky8vF0aNHhbu7u/jiiy/0Y+7evStKSkpETk6OACCys7NFSUmJqK+vVzC58QzV2NnZKRISEsSwYcNEaWmpqK+v1y/t7e0KpzfMUH33798XKSkporCwUFRVVYkrV64IjUYjVCqVuH79usLpjWPM6/SfbOmwnaH6mpubxfr160VBQYGorKwUubm5IiYmRgQGBoqmpiaF0xtmzP47ceKEcHZ2FgcPHhTl5eVi//79wtHRUeTn5yuY3HjGvka1Wq1wd3cXBw4cUCgp2TI2T/3ImTNnxJgxY4RKpRLh4eHi4MGD3e7PzMwUAHos27ZtUyawCXqrsetcrsctubm5yoWWobf62traxPPPPy8CAgKEi4uLUKvVIiEhwaZOGBfC8Ov0n2ypeRKi9/paW1vF7NmzxdChQ4Wzs7MIDg4Wy5YtEzU1NQomlseY/ZeRkSFGjhwpXF1dRWRkpDh16pQCSU1nTI2ffvqpcHNzE/fu3VMgIdk6SQghlJnzIiIiIrI9PGGciIiISAY2T0REREQysHkiIiIikoHNExEREZEMbJ6IiIiIZGDzRERERCQDmyciIiIiGdg8EREREcnA5omIjBIaGoq0tDSlYxARKY7NE9EAMHfu3B5f2NulsLAQkiTh6tWrVk5FRGSb2DwRDQAajQYXL15EdXV1j/sOHTqEsWPHYty4cQokIyKyPWyeiAaAZ599Fr6+vjh8+HC39a2trfjyyy+h0Whw/PhxjB49GiqVCqGhofjwww//dXtVVVWQJAmlpaX6dffu3YMkScjLywMA5OXlQZIkfP/994iKioKbmxumT5+OhoYGnD17FhEREfDy8sKiRYvQ2tqq344QAnv27MGIESPg5uaGyMhIfP3115b87yAiMgubJ6IBwMnJCUuXLsXhw4fx6HeBf/XVV+jo6EBMTAwSExOxcOFCXLt2DampqdiyZUuPZssUqampSE9PR0FBAWpra5GYmIi0tDRkZWUhJycH58+fx/79+/XjN2/ejMzMTBw4cAA3btzAunXrsGTJEly6dMnsLEREliCJR99Jichu/fLLL4iIiMDFixcRFxcHAJg6dSoCAwMhSRL++OMPnDt3Tj9+48aNyMnJwY0bNwA8PGE8OTkZycnJqKqqwvDhw1FSUoKxY8cCeDjzNHjwYOTm5mLatGnIy8tDXFwcLly4gBkzZgAAdu3ahZSUFFRUVGDEiBEAgFdeeQVVVVX47rvv0NLSAh8fH1y8eBExMTH6LKtWrUJrayuysrKs8V9FRNQrzjwRDRDh4eGYPHkyDh06BACoqKhAfn4+Vq5ciZs3byI2Nrbb+NjYWJSXl+Pvv/8263mfeeYZ/W0/Pz+4u7vrG6eudQ0NDQCAn3/+GQ8ePMCsWbMwaNAg/fL555+joqLCrBxERJbipHQAIrIejUaDtWvX4qOPPkJmZiZCQkIwY8YMCCEgSVK3sb1NSjs4OPQY09nZ+dixzs7O+tuSJHX7uWudTqcDAP2/OTk5CAwM7DZOpVIZKo+IyCo480Q0gCQmJsLR0RFZWVk4cuQIVqxYAUmSMGrUKPzwww/dxhYUFCAsLAyOjo49tjN06FAAQH19vX7doyePm2rUqFFQqVSoqanByJEjuy1BQUFmb5+IyBI480Q0gAwaNAgLFizAW2+9Ba1Wi+XLlwMA1q9fj4kTJ2L79u1YsGABCgsLkZ6ejo8//vix23Fzc0N0dDR27dqF0NBQ/Pnnn9i8ebPZ+Tw9PfHGG29g3bp10Ol0mDJlCpqamlBQUIBBgwZh2bJlZj8HEZG5OPNENMBoNBo0NjZi5syZCA4OBgCMGzcOx44dQ3Z2NsaMGYOtW7fi3Xff1TdXj3Po0CF0dnZiwoQJeP311/Hee+9ZJN/27duxdetW7Ny5ExEREYiPj8eZM2cwfPhwi2yfiMhc/LQdERERkQyceSIiIiKSgc0TERERkQxsnoiIiIhkYPNEREREJAObJyIiIiIZ2DwRERERycDmiYiIiEgGNk9EREREMrB5IiIiIpKBzRMRERGRDGyeiIiIiGT4Lx6OUdlF5VvdAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "temperatures = tp_collect_dict[1.0]['temperatures']\n", - "temperature_max = max(temperatures)\n", - "strain_lst = eng_internal_dict.keys()\n", - "volume_lst = workflow.get_volume_lst()\n", - "eng_int_lst = np.array(list(eng_internal_dict.values()))\n", - "\n", - "fig, ax = plt.subplots()\n", - "for i, temp in enumerate(temperatures):\n", - " ax.plot(\n", - " volume_lst, \n", - " np.array([tp_collect_dict[s]['free_energy'][i] for s in strain_lst]) + eng_int_lst, \n", - " color=cmap(temp/temperature_max)\n", - " )\n", - "ax.set_xlabel(\"Volume\")\n", - "ax.set_ylabel(\"Free energy ($U + F_{vib}$) [eV]\")\n", - "\n", - "normalize = matplotlib.colors.Normalize(vmin=min(temperatures), vmax=max(temperatures))\n", - "scalarmappaple = matplotlib.cm.ScalarMappable(norm=normalize, cmap=cmap)\n", - "scalarmappaple.set_array(temperatures)\n", - "cbar = plt.colorbar(mappable=scalarmappaple, ax=ax)\n", - "cbar.set_label(\"Temperature\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "39d16907-abc0-4f26-bfdd-729d59421d60", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/thermal_expansion_with_lammps.ipynb b/notebooks/thermal_expansion_with_lammps.ipynb new file mode 100644 index 00000000..cb4b38bd --- /dev/null +++ b/notebooks/thermal_expansion_with_lammps.ipynb @@ -0,0 +1,597 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ce2efe0c-f86c-4cbd-ab3f-2aae9c5a574d", + "metadata": {}, + "source": [ + "## Thermal Expansion \n", + "Calculate the thermal expansion for a Morse Pair potential using the [LAMMPS](https://www.lammps.org/) molecular dynamics\n", + "simulation code. In the following three methods to calculate the thermal expansion are introduced and compared for a \n", + "Morse Pair Potential for Aluminium. \n", + "\n", + "As a first step the potential is defined for the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code \n", + "by specifying the `pair_style` and `pair_coeff` commands for the [Morse Pair Potential](https://docs.lammps.org/pair_morse.html)\n", + "as well as the Aluminium bulk structure: " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7a96bac5-5afe-4924-90e5-04f6e6b2bedb", + "metadata": {}, + "outputs": [], + "source": [ + "from ase.build import bulk\n", + "import pandas\n", + "\n", + "potential_dataframe = pandas.DataFrame({\n", + " \"Config\": [[\n", + " \"pair_style morse/smooth/linear 9.0\",\n", + " \"pair_coeff * * 0.5 1.8 2.95\"\n", + " ]],\n", + " \"Filename\": [[]],\n", + " \"Model\": [\"Morse\"],\n", + " \"Name\": [\"Morse\"],\n", + " \"Species\": [[\"Al\"]],\n", + "}).iloc[0]\n", + "\n", + "structure = bulk(\"Al\", a=4.05, cubic=True)" + ] + }, + { + "cell_type": "markdown", + "id": "fe980834-e174-464a-8c07-04db9889a8c6", + "metadata": {}, + "source": [ + "The `pandas.DataFrame` based format to specify interatomic potentials is the same `pylammpsmpi` uses to interface with \n", + "the [NIST database for interatomic potentials](https://www.ctcms.nist.gov/potentials). In comparison to just providing\n", + "the `pair_style` and `pair_coeff` commands, this extended format enables referencing specific files for the interatomic\n", + "potentials `\"Filename\": [[]],` as well as the atomic species `\"Species\": [[\"Al\"]],` to enable consistency checks if the \n", + "interatomic potential implements all the interactions to simulate a given atomic structure. " + ] + }, + { + "cell_type": "markdown", + "id": "6c120581-efd6-4204-8413-75ee81065db1", + "metadata": {}, + "source": [ + "### Equation of State \n", + "The first approximation to calculate the thermal expansion is based on the Equation of State derived by [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790).\n", + "So in analogy to the previous example of calculating the elastic properties from the Equation of State, the `EnergyVolumeCurveWorkflow`\n", + "is initialized with the default parameters: " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b69b6ee2-b526-4913-a6c7-36018e8960af", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'calc_energy': OrderedDict([(0.95,\n", + " Atoms(symbols='Al4', pbc=True, cell=[3.9813426685908118, 3.9813426685908118, 3.9813426685908118])),\n", + " (0.96,\n", + " Atoms(symbols='Al4', pbc=True, cell=[3.9952635604153612, 3.9952635604153612, 3.9952635604153612])),\n", + " (0.97,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.009088111958974, 4.009088111958974, 4.009088111958974])),\n", + " (0.98,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.022817972936038, 4.022817972936038, 4.022817972936038])),\n", + " (0.99,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.036454748321015, 4.036454748321015, 4.036454748321015])),\n", + " (1.0, Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])),\n", + " (1.01,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.063455248345461, 4.063455248345461, 4.063455248345461])),\n", + " (1.02,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.076821973718458, 4.076821973718458, 4.076821973718458])),\n", + " (1.03,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.0901016179023415, 4.0901016179023415, 4.0901016179023415])),\n", + " (1.04,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.1032955854717175, 4.1032955854717175, 4.1032955854717175])),\n", + " (1.05,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.1164052451001565, 4.1164052451001565, 4.1164052451001565]))])}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from atomistics.calculators.lammps import evaluate_with_lammps, get_potential_dataframe\n", + "from atomistics.workflows.evcurve.workflow import EnergyVolumeCurveWorkflow\n", + "\n", + "workflow = EnergyVolumeCurveWorkflow(\n", + " structure=structure,\n", + " num_points=11,\n", + " fit_type='polynomial',\n", + " fit_order=3,\n", + " vol_range=0.05,\n", + " axes=['x', 'y', 'z'],\n", + " strains=None,\n", + ")\n", + "structure_dict = workflow.generate_structures()\n", + "structure_dict" + ] + }, + { + "cell_type": "markdown", + "id": "8f5d1e8d-0204-4dca-9298-878b9b2f6406", + "metadata": {}, + "source": [ + "After the initialization the `generate_structures()` function is called to generate the atomistic structures which are\n", + "then in the second step evaluated with the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code to derive\n", + "the equilibrium properties:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "7d1f126e-4fd0-41c5-986b-91d3b5910e3e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/janssen/mambaforge/lib/python3.10/site-packages/pylammpsmpi/wrapper/ase.py:165: UserWarning: Warning: setting upper trangular matrix might slow down the calculation\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/plain": [ + "{'energy': {0.95: -14.619170288727801,\n", + " 0.96: -14.664457483479836,\n", + " 0.97: -14.697945635153152,\n", + " 0.98: -14.720448033206749,\n", + " 0.99: -14.732723972540498,\n", + " 1.0: -14.73548275794779,\n", + " 1.01: -14.729389420395107,\n", + " 1.02: -14.715066161138207,\n", + " 1.03: -14.693095226824505,\n", + " 1.04: -14.664021603093682,\n", + " 1.05: -14.628355511604163}}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result_dict = evaluate_with_lammps(\n", + " task_dict=structure_dict, \n", + " potential_dataframe=potential_dataframe\n", + ")\n", + "result_dict" + ] + }, + { + "cell_type": "markdown", + "id": "fb679eb1-338f-4485-a953-791e147fe632", + "metadata": {}, + "source": [ + "While in the previous example the fit of the energy volume curve was used directly, there the output of the fit, in\n", + "particular the derived equilibrium properties are the input for the Debye model as defined by [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790):" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f0d0c14c-784a-41f7-8cfd-5ebd988e55c7", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/janssen/mambaforge/lib/python3.10/site-packages/atomistics/shared/thermo/debye.py:9: RuntimeWarning: overflow encountered in exp\n", + " return xi**3 / (np.exp(xi) - 1)\n" + ] + } + ], + "source": [ + "from atomistics.shared.thermo.debye import get_debye_model\n", + "from atomistics.shared.thermo.thermo import get_thermo_bulk_model\n", + "import numpy as np\n", + "\n", + "debye_model = get_debye_model(\n", + " fit_dict=workflow.analyse_structures(output_dict=result_dict), \n", + " masses=structure.get_masses(), \n", + " num_steps=50\n", + ")\n", + "T_debye_low, T_debye_high = debye_model.debye_temperature\n", + "pes = get_thermo_bulk_model(\n", + " temperatures=np.linspace(1, 1500, 200),\n", + " debye_model=debye_model,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "35ab7b86-0688-4520-ad47-ea54b4bfde86", + "metadata": {}, + "source": [ + "The output of the Debye model provides the change of the temperature specific optimal volume `pes.get_minimum_energy_path()`\n", + "which can be plotted over the temperature `pes.temperatures` to determine the thermal expansion. " + ] + }, + { + "cell_type": "markdown", + "id": "88ccd1f0-98c5-4e13-ab2c-febe5d3f235b", + "metadata": {}, + "source": [ + "### Quasi-Harmonic Approximation \n", + "While the [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) approach based on the Einstein crystal\n", + "is limited to a single frequency, the quasi-harmonic model includes the volume dependent free energy. Inside the \n", + "`atomistics` package the harmonic and quasi-harmonic model are implemented based on an interface to the [Phonopy](https://phonopy.github.io/phonopy/)\n", + "framework. Still the user interface is still structured in the same three steps of (1) generating structures, (2) evaluating \n", + "these structures and (3) fitting the corresponding model. Starting with the initialization of the `QuasiHarmonicWorkflow`\n", + "which combines the `PhonopyWorkflow` with the `EnergyVolumeCurveWorkflow`:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "493663b9-ea0c-4234-87ef-8f70774794f4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'calc_energy': OrderedDict([(0.95,\n", + " Atoms(symbols='Al4', pbc=True, cell=[3.9813426685908118, 3.9813426685908118, 3.9813426685908118])),\n", + " (0.96,\n", + " Atoms(symbols='Al4', pbc=True, cell=[3.9952635604153612, 3.9952635604153612, 3.9952635604153612])),\n", + " (0.97,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.009088111958974, 4.009088111958974, 4.009088111958974])),\n", + " (0.98,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.022817972936038, 4.022817972936038, 4.022817972936038])),\n", + " (0.99,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.036454748321015, 4.036454748321015, 4.036454748321015])),\n", + " (1.0, Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])),\n", + " (1.01,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.063455248345461, 4.063455248345461, 4.063455248345461])),\n", + " (1.02,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.076821973718458, 4.076821973718458, 4.076821973718458])),\n", + " (1.03,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.0901016179023415, 4.0901016179023415, 4.0901016179023415])),\n", + " (1.04,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.1032955854717175, 4.1032955854717175, 4.1032955854717175])),\n", + " (1.05,\n", + " Atoms(symbols='Al4', pbc=True, cell=[4.1164052451001565, 4.1164052451001565, 4.1164052451001565]))]),\n", + " 'calc_forces': {(0.95,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[11.944028005772434, 11.944028005772434, 11.944028005772434]),\n", + " (0.96,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[11.985790681246083, 11.985790681246083, 11.985790681246083]),\n", + " (0.97,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[12.027264335876922, 12.027264335876922, 12.027264335876922]),\n", + " (0.98,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[12.068453918808114, 12.068453918808114, 12.068453918808114]),\n", + " (0.99,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[12.109364244963045, 12.109364244963045, 12.109364244963045]),\n", + " (1.0,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[12.149999999999999, 12.149999999999999, 12.149999999999999]),\n", + " (1.01,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[12.190365745036383, 12.190365745036383, 12.190365745036383]),\n", + " (1.02,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[12.230465921155373, 12.230465921155373, 12.230465921155373]),\n", + " (1.03,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[12.270304853707025, 12.270304853707025, 12.270304853707025]),\n", + " (1.04,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[12.309886756415153, 12.309886756415153, 12.309886756415153]),\n", + " (1.05,\n", + " 0): Atoms(symbols='Al108', pbc=True, cell=[12.349215735300469, 12.349215735300469, 12.349215735300469])}}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from atomistics.workflows.quasiharmonic.workflow import QuasiHarmonicWorkflow\n", + "from phonopy.units import VaspToTHz\n", + "\n", + "calculator = QuasiHarmonicWorkflow(\n", + " structure=structure,\n", + " num_points=11,\n", + " vol_range=0.05,\n", + " interaction_range=10,\n", + " factor=VaspToTHz,\n", + " displacement=0.01,\n", + " dos_mesh=20,\n", + " primitive_matrix=None,\n", + " number_of_snapshots=None,\n", + ")\n", + "structure_dict = calculator.generate_structures()\n", + "structure_dict" + ] + }, + { + "cell_type": "markdown", + "id": "9dcd4a1e-7122-4f57-93c1-bd9267084f70", + "metadata": {}, + "source": [ + "In contrast to the previous workflows which only used the `calc_energy` function of the simulation codes the `PhonopyWorkflow`\n", + "and correspondingly also the `QuasiHarmonicWorkflow` require the calculation of the forces `calc_forces` in addition to\n", + "the calculation of the energy. Still the general steps of the workflow remain the same: " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2e96e588-e279-4d6c-8f40-2eafa982933b", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/janssen/mambaforge/lib/python3.10/site-packages/pylammpsmpi/wrapper/ase.py:165: UserWarning: Warning: setting upper trangular matrix might slow down the calculation\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "result_dict = evaluate_with_lammps(\n", + " task_dict=structure_dict,\n", + " potential_dataframe=potential_dataframe,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "8fa40f79-f919-47df-ab07-c9a9dcd04b3d", + "metadata": {}, + "source": [ + "The `structure_dict` is evaluated with the [LAMMPS](https://www.lammps.org/) molecular dynamics simulation code to \n", + "calculate the corresponding energies and forces. The output is not plotted here as the forces for the 108 atom cells \n", + "result in 3x108 outputs per cell. Still the structure of the `result_dict` again follows the labels of the `structure_dict`\n", + "as explained before. Finally, in the third step the individual free energy curves at the different temperatures are \n", + "fitted to determine the equilibrium volume at the given temperature. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c6644b87-7cb3-4a3c-8461-b2e9c173e2d6", + "metadata": {}, + "outputs": [], + "source": [ + "eng_internal_dict, mesh_collect_dict, dos_collect_dict = calculator.analyse_structures(output_dict=result_dict)\n", + "tp_collect_dict = calculator.get_thermal_properties(t_min=1, t_max=1500, t_step=50, temperatures=None) \n", + "\n", + "temperatures = tp_collect_dict[1.0]['temperatures']\n", + "temperature_max = max(temperatures)\n", + "strain_lst = eng_internal_dict.keys()\n", + "volume_lst = calculator.get_volume_lst()\n", + "eng_int_lst = np.array(list(eng_internal_dict.values()))\n", + "\n", + "fit_deg = 4\n", + "vol_best = volume_lst[int(len(volume_lst)/2)]\n", + "vol_lst, eng_lst = [], []\n", + "for i, temp in enumerate(temperatures):\n", + " free_eng_lst = np.array([tp_collect_dict[s]['free_energy'][i] for s in strain_lst]) + eng_int_lst\n", + " p = np.polyfit(volume_lst, free_eng_lst, deg=fit_deg)\n", + " extrema = np.roots(np.polyder(p, m=1)).real\n", + " vol_select = extrema[np.argmin(np.abs(extrema - vol_best))]\n", + " eng_lst.append(np.poly1d(p)(vol_select))\n", + " vol_lst.append(vol_select)" + ] + }, + { + "cell_type": "markdown", + "id": "bb0db978-365f-43af-9a20-6ebb58fb8da9", + "metadata": {}, + "source": [ + "The optimal volume at the different `temperatures` is stored in the `vol_lst` in analogy to the previous section. " + ] + }, + { + "cell_type": "markdown", + "id": "eb795fbd-0477-492a-b883-9cb31b58d3e2", + "metadata": {}, + "source": [ + "### Molecular Dynamics\n", + "Finally, the third and most commonly used method to determine the volume expansion is using a molecular dynamics \n", + "calculation. While the `atomistics` package already includes a `LangevinWorkflow` at this point we use the [Nose-Hoover\n", + "thermostat implemented in LAMMPS](https://docs.lammps.org/fix_nh.html) directly via the [pylammpsmpi](https://github.com/pyiron/pylammpsmpi)\n", + "interface. " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a41d36c9-34eb-46e0-b713-57941dfb0296", + "metadata": {}, + "outputs": [], + "source": [ + "from jinja2 import Template\n", + "from pylammpsmpi import LammpsASELibrary\n", + "from tqdm import tqdm\n", + "\n", + "def calc_thermal_expansion_md(structure, potential_dataframe, temperature_lst):\n", + " init_str = \"\"\"\\\n", + "thermo_style custom step temp pe etotal pxx pxy pxz pyy pyz pzz vol\n", + "thermo_modify format float %20.15g\n", + "timestep 0.001\n", + "thermo {{ thermotime }}\n", + "velocity all create $(2 * {{ lowtemp }}) 4928459 dist gaussian\n", + "\"\"\"\n", + "\n", + " run_str = \"\"\"\\\n", + "fix ensemble all npt temp {{ lowtemp }} {{ hightemp }} 0.1 iso 0.0 0.0 1.0\n", + "run {{ steps }}\n", + "\"\"\"\n", + "\n", + " lmp = LammpsASELibrary()\n", + " lmp.interactive_structure_setter(\n", + " structure=structure,\n", + " units=\"metal\",\n", + " dimension=3,\n", + " boundary=\" \".join([\"p\" if coord else \"f\" for coord in structure.pbc]),\n", + " atom_style=\"atomic\",\n", + " el_eam_lst=potential_dataframe.Species,\n", + " calc_md=False,\n", + " )\n", + " for c in potential_dataframe.Config:\n", + " lmp.interactive_lib_command(c)\n", + " init_str_rendered = Template(init_str).render(\n", + " thermotime=100,\n", + " lowtemp=10\n", + " )\n", + " for l in init_str_rendered.split(\"\\n\"):\n", + " lmp.interactive_lib_command(l)\n", + " \n", + " volume_md_lst = []\n", + " for temp in tqdm(temperature_lst):\n", + " run_str_rendered = Template(run_str).render(\n", + " steps=100,\n", + " lowtemp=temp-5,\n", + " hightemp=temp,\n", + " )\n", + " for l in run_str_rendered.split(\"\\n\"):\n", + " lmp.interactive_lib_command(l)\n", + " volume_md_lst.append(lmp.interactive_volume_getter())\n", + " lmp.close()\n", + " return volume_md_lst" + ] + }, + { + "cell_type": "markdown", + "id": "d2efeb52-ee54-4eb0-878a-184f353941bf", + "metadata": {}, + "source": [ + "The `calc_thermal_expansion_md()` function defines a loop over a vector of temperatures in 5K steps. For each step 100\n", + "molecular dynamics steps are executed before the temperature is again increased by 5K. For ~280 steps with the Morse \n", + "Pair Potential this takes approximately 5 minutes on a single core. These simulations can be further accelerated by \n", + "adding the `cores` parameter during the initialization of the `LammpsASELibrary()`. The increase in computational cost\n", + "is on the one hand related to the large number of force and energy calls and on the other hand to the size of the atomistic\n", + "structure, as these simulations are typically executed with >5000 atoms rather than the 4 or 108 atoms in the other \n", + "approximations. " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9825f717-aef3-4e76-bbdb-cb4d3c00ef3a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 278/278 [04:36<00:00, 1.01it/s]\n" + ] + } + ], + "source": [ + "structure_md = structure.repeat(11)\n", + "temperature_md_lst = np.linspace(15, 1400, 278)\n", + "volume_md_lst = calc_thermal_expansion_md(\n", + " structure=structure_md, \n", + " potential_dataframe=potential_dataframe, \n", + " temperature_lst=temperature_md_lst, \n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "1d13a43f-63d5-456d-abab-173ba744e467", + "metadata": {}, + "source": [ + "The volume for the individual temperatures is stored in the `volume_md_lst` list. " + ] + }, + { + "cell_type": "markdown", + "id": "eff137a4-61fc-4cbe-8c60-b0dc534a5f3f", + "metadata": {}, + "source": [ + "### Summary\n", + "To visually compare the thermal expansion predicted by the three different approximations, the [matplotlib](https://matplotlib.org)\n", + "is used to plot the temperature over the volume:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "da8f641d-c5e6-4c10-8aeb-c891109e2e6d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Temperature')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.plot(np.array(volume_md_lst)/len(structure_md) * 4, temperature_md_lst, label=\"Molecular Dynamics\", color=\"C2\")\n", + "plt.plot(vol_lst, temperatures, label=\"Quasi-Harmonic\", color=\"C0\")\n", + "plt.plot(pes.get_minimum_energy_path(), pes.temperatures, label=\"Moruzzi Model\", color=\"C1\")\n", + "plt.legend()\n", + "plt.xlabel(\"Volume\")\n", + "plt.ylabel(\"Temperature\")" + ] + }, + { + "cell_type": "markdown", + "id": "03887d0e-da24-49ca-9bd8-9452fd666b3c", + "metadata": {}, + "source": [ + "While the both the [Moruzzi, V. L. et al.](https://link.aps.org/doi/10.1103/PhysRevB.37.790) and the quasi-harmonic \n", + "approach over-predict the volume expansion with increasing temperature the overall result is in reasonable agreement for\n", + "the Morse Pair Potential. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e7aeb2f2-12c5-492a-a821-384b030b4a68", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 975e230fbeabc348539f8d54585818a80b326795 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 15 Nov 2023 15:02:58 +0100 Subject: [PATCH 7/9] update readme --- README.md | 191 +++++++++++++++++++++++++++++++++++++----- docs/source/index.rst | 38 ++++++++- 2 files changed, 208 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index af5c6b8e..e1a84423 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,178 @@ -# atomistics +# atomistics - Interfaces for atomistic simulation codes and workflows +The `atomistics` package consists of two primary components. On the one hand it provides interfaces to atomistic +simulation codes - named `calculators`. The supported simulation codes in alphabetical order are: -## Disclaimer -The `atomistics` package is under development. +* [Abinit](https://www.abinit.org) - Plane wave density functional theory +* [EMT](https://wiki.fysik.dtu.dk/ase/ase/calculators/emt.html) - Effective medium theory potential +* [GPAW](https://wiki.fysik.dtu.dk/gpaw/) - Density functional theory Python code based on the projector-augmented wave method +* [LAMMPS](https://www.lammps.org) - Molecular Dynamics +* [Quantum Espresso](https://www.quantum-espresso.org) - Integrated suite of Open-Source computer codes for electronic-structure calculations +* [Siesta](https://siesta-project.org) - Electronic structure calculations and ab initio molecular dynamics + +For majority of these simulation codes the `atomistics` package use the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/) +to interface the underlying C/ C++ and Fortran Codes with the Python programming language. Still this approach limits +the functionality of the simulation code to calculating the energy and forces, so by adding custom interfaces the +`atomistics` package can support built-in features of the simulation code like structure optimization and molecular +dynamics. + +On the other hand the `atomistics` package also provides `workflows` to calculate material properties on the atomistic +scales, these include: + +* Equation of State - to calculate equilibrium properties like the equilibrium energy, equilibrium volume, equilibrium bulk modulus and its pressure derivative. +* Elastic Matrix - to calculate the elastic constants and elastic moduli. +* Harmonic and Quasi-harmonic Approximation - to calculate the density of states, vibrational free energy and thermal expansion based on the finite displacements method implemented in [phonopy](https://phonopy.github.io/phonopy/). +* Molecular Dynamics - to calculate finite temperature properties like thermal expansion including the anharmonic contributions. + +All these `workflows` can be coupled with all the simulation codes implemented in the `atomistics` package. +In contrast to the [Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/) which provides similar functionality +the focus of the `atomistics` package is not to reimplement existing functionality but rather simplify the process +of coupling existing simulation codes with existing workflows. Here the [phonopy](https://phonopy.github.io/phonopy/) +workflow is a great example to enable the calculation of thermodynamic properties with the harmonic and quasi-harmonic +approximation. -## Idea -`atomistics` provides atomistic workflows for `pyiron_atomistics` and `pyiron_lammps`, but it can also be used as a standalone package in combination with any other workflow engine. +## Example +Use the equation of state to calculate the equilibrium properties like the equilibrium volume, equilibrium energy, +equilibrium bulk modulus and its derivative using the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code -## License and Acknowledgments -`pyiron_lammps` is licensed under the BSD license. +``` +from ase.build import bulk +from atomistics.calculators import evaluate_with_ase +from atomistics.workflows import EnergyVolumeCurveWorkflow +from gpaw import GPAW, PW + +workflow = EnergyVolumeCurveWorkflow( + structure=bulk("Al", a=4.05, cubic=True), + num_points=11, + fit_type='polynomial', + fit_order=3, + vol_range=0.05, + axes=['x', 'y', 'z'], + strains=None, +) +task_dict = workflow.generate_structures() +print(task_dict) +>>> {'calc_energy': OrderedDict([ +>>> (0.95, Atoms(symbols='Al4', pbc=True, cell=[3.9813426685908118, 3.9813426685908118, 3.9813426685908118])), +>>> (0.96, Atoms(symbols='Al4', pbc=True, cell=[3.9952635604153612, 3.9952635604153612, 3.9952635604153612])), +>>> (0.97, Atoms(symbols='Al4', pbc=True, cell=[4.009088111958974, 4.009088111958974, 4.009088111958974])), +>>> (0.98, Atoms(symbols='Al4', pbc=True, cell=[4.022817972936038, 4.022817972936038, 4.022817972936038])), +>>> (0.99, Atoms(symbols='Al4', pbc=True, cell=[4.036454748321015, 4.036454748321015, 4.036454748321015])), +>>> (1.0, Atoms(symbols='Al4', pbc=True, cell=[4.05, 4.05, 4.05])), +>>> (1.01, Atoms(symbols='Al4', pbc=True, cell=[4.063455248345461, 4.063455248345461, 4.063455248345461])), +>>> (1.02, Atoms(symbols='Al4', pbc=True, cell=[4.076821973718458, 4.076821973718458, 4.076821973718458])), +>>> (1.03, Atoms(symbols='Al4', pbc=True, cell=[4.0901016179023415, 4.0901016179023415, 4.0901016179023415])), +>>> (1.04, Atoms(symbols='Al4', pbc=True, cell=[4.1032955854717175, 4.1032955854717175, 4.1032955854717175])), +>>> (1.05, Atoms(symbols='Al4', pbc=True, cell=[4.1164052451001565, 4.1164052451001565, 4.1164052451001565])) +>>> ])} +``` -If you use pyiron in your scientific work, [please consider citing](http://www.sciencedirect.com/science/article/pii/S0927025618304786): +In the first step the `EnergyVolumeCurveWorkflow` object is initialized including all the parameters to generate +the strained structures and afterwards fit the resulting energy volume curve. This allows the user to see all relevant +parameters at one place. After the initialization the function `generate_structures()` is called without any +additional parameters. This function returns the task dictionary `task_dict` which includes the tasks which should +be executed by the calculator. In this case the task is to calculate the energy `calc_energy` of the eleven +generated structures. Each structure is labeled by the ratio of compression or elongation. In the second step the +`task_dict` is evaluate with the [GPAW](https://wiki.fysik.dtu.dk/gpaw/) simulation code using the +`evaluate_with_ase()` function: +``` +result_dict = evaluate_with_ase( + task_dict=task_dict, + ase_calculator=GPAW( + xc="PBE", + mode=PW(300), + kpts=(3, 3, 3) + ) +) +print(result_dict) +>>> {'energy': { +>>> 0.95: -14.895378072824752, +>>> 0.96: -14.910819737657118, +>>> 0.97: -14.922307241122466, +>>> 0.98: -14.930392279321056, +>>> 0.99: -14.935048569964911, +>>> 1.0: -14.936666396364169, +>>> 1.01: -14.935212782128556, +>>> 1.02: -14.931045138839849, +>>> 1.03: -14.924165445706581, +>>> 1.04: -14.914703574005678, +>>> 1.05: -14.902774559134226 +>>> }} +``` +In analogy to the `task_dict` which defines the tasks to be executed by the simulation code the `result_dict` +summarizes the results of the calculations. In this case the energies calculated for the specific strains. By ordering +both the `task_dict` and the `result_dict` with the same labels, the `EnergyVolumeCurveWorkflow` object +is able to match the calculation results to the corresponding structure. Finally, in the third step the `analyse_structures()` +function takes the `result_dict` as an input and fits the Equation of State with the fitting parameters defined in +the first step: +``` +fit_dict = workflow.analyse_structures(output_dict=result_dict) +print(fit_dict) +>>> {'poly_fit': array([-9.30297838e-05, 2.19434659e-02, -1.68388816e+00, 2.73605421e+01]), +>>> 'fit_type': 'polynomial', +>>> 'fit_order': 3, +>>> 'volume_eq': 66.44252286131888, +>>> 'energy_eq': -14.93670322204575, +>>> 'bulkmodul_eq': 72.38919826304497, +>>> 'b_prime_eq': 4.45383655040775, +>>> 'least_square_error': 4.432974529908853e-09, +>>> 'volume': [63.10861874999998, 63.77291999999998, ..., 69.75163125000002], +>>> 'energy': [-14.895378072824752, -14.910819737657118, ..., -14.902774559134226] +>>> } +``` +As a result the equilibrium parameters are returned plus the parameters of the polynomial and the set of volumes and +energies which were fitted to achieve these results. The important step here is that while the interface between the +first and the second as well as between the second and the third step is clearly defined independent of the specific +workflow, the initial parameters for the workflow to initialize the `EnergyVolumeCurveWorkflow` object as well as +the final output of the `fit_dict` are workflow specific. +## Disclaimer +While we try to develop a stable and reliable software library, the development remains a opensource project under the +BSD 3-Clause License without any warranties: ``` -@article{pyiron-paper, - title = {pyiron: An integrated development environment for computational materials science}, - journal = {Computational Materials Science}, - volume = {163}, - pages = {24 - 36}, - year = {2019}, - issn = {0927-0256}, - doi = {https://doi.org/10.1016/j.commatsci.2018.07.043}, - url = {http://www.sciencedirect.com/science/article/pii/S0927025618304786}, - author = {Jan Janssen and Sudarsan Surendralal and Yury Lysogorskiy and Mira Todorova and Tilmann Hickel and Ralf Drautz and Jörg Neugebauer}, - keywords = {Modelling workflow, Integrated development environment, Complex simulation protocols}, -} +BSD 3-Clause License + +Copyright (c) 2023, Jan Janssen +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` + +## Documentation +* [Installation](https://atomistics.readthedocs.io/en/latest/installation.html) + * [conda-based Installation](https://atomistics.readthedocs.io/en/latest/installation.html#conda-based-installation) + * [pypi-based Installation](https://atomistics.readthedocs.io/en/latest/installation.html#pypi-based-installation) +* [Simulation Codes](https://atomistics.readthedocs.io/en/latest/simulationcodes.html) + * [Abinit](https://atomistics.readthedocs.io/en/latest/simulationcodes.html#abinit) + * [EMT](https://atomistics.readthedocs.io/en/latest/simulationcodes.html#emt) + * [GPAW](https://atomistics.readthedocs.io/en/latest/simulationcodes.html#gpaw) + * [LAMMPS](https://atomistics.readthedocs.io/en/latest/simulationcodes.html#lammps) + * [Quantum Espresso](https://atomistics.readthedocs.io/en/latest/simulationcodes.html#quantum-espresso) + * [Siesta](https://atomistics.readthedocs.io/en/latest/simulationcodes.html#siesta) +* [Materials Properties](https://atomistics.readthedocs.io/en/latest/materialproperties.html) + * [Elastic Properties](https://atomistics.readthedocs.io/en/docs/materialproperties.html#elastic-properties) + * [Thermal Expansion](https://atomistics.readthedocs.io/en/docs/materialproperties.html#thermal-expansion) + * [Phase Diagram](https://atomistics.readthedocs.io/en/docs/materialproperties.html#phase-diagram) +* [Module Index](https://atomistics.readthedocs.io/en/latest/py-modindex.html) \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index 845531f4..09b2ef9b 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -38,7 +38,7 @@ approximation. Example ------- -Use the equation of state to calculate the equilibrium properties like the equilibrium volume, equilibrium energy, +Use the Equation of State to calculate the equilibrium properties like the equilibrium volume, equilibrium energy, equilibrium bulk modulus and its derivative using the `GPAW `_ simulation code:: from ase.build import bulk @@ -130,6 +130,42 @@ first and the second as well as between the second and the third step is clearly workflow, the initial parameters for the workflow to initialize the :code:`EnergyVolumeCurveWorkflow` object as well as the final output of the :code:`fit_dict` are workflow specific. +Disclaimer +---------- +While we try to develop a stable and reliable software library, the development remains a opensource project under the +BSD 3-Clause License without any warranties:: + + BSD 3-Clause License + + Copyright (c) 2023, Jan Janssen + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Documentation ------------- From 78ad7d452e0b3b9c27530e466112025937deb25d Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 15 Nov 2023 15:08:11 +0100 Subject: [PATCH 8/9] Add dependencies to execute new notebooks --- .ci_support/environment-notebooks.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.ci_support/environment-notebooks.yml b/.ci_support/environment-notebooks.yml index ae489cd6..6cd7f53a 100644 --- a/.ci_support/environment-notebooks.yml +++ b/.ci_support/environment-notebooks.yml @@ -2,4 +2,9 @@ channels: - conda-forge dependencies: - jupyter -- papermill \ No newline at end of file +- papermill +- gpaw =23.9.1 +- lammps =2023.08.02 +- pandas =2.1.3 +- pylammpsmpi =0.2.5 +- jinja2 =3.1.2 \ No newline at end of file From 2cb70dc90e1f62026fdc8cb3ecfb82247e799485 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 15 Nov 2023 15:11:51 +0100 Subject: [PATCH 9/9] Add mybinder environment --- README.md | 4 ++++ binder/environment.yml | 16 ++++++++++++++++ binder/postBuild | 2 ++ 3 files changed, 22 insertions(+) create mode 100644 binder/environment.yml create mode 100644 binder/postBuild diff --git a/README.md b/README.md index e1a84423..74bcc0ad 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ # atomistics - Interfaces for atomistic simulation codes and workflows +[![Unittest](https://github.com/pyiron/atomistics/actions/workflows/unittests.yml/badge.svg)](https://github.com/pyiron/atomistics/actions/workflows/unittests.yml) +[![Coverage Status](https://coveralls.io/repos/github/pyiron/atomistics/badge.svg?branch=main)](https://coveralls.io/github/pyiron/atomistics?branch=main) +[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/pyiron/atomistics/HEAD?labpath=notebooks) + The `atomistics` package consists of two primary components. On the one hand it provides interfaces to atomistic simulation codes - named `calculators`. The supported simulation codes in alphabetical order are: diff --git a/binder/environment.yml b/binder/environment.yml new file mode 100644 index 00000000..f715155e --- /dev/null +++ b/binder/environment.yml @@ -0,0 +1,16 @@ +channels: +- conda-forge +dependencies: +- ase =3.22.1 +- coverage +- numpy =1.26.0 +- scipy =1.11.3 +- spglib =2.1.0 +- phonopy =2.20.0 +- structuretoolkit =0.0.11 +- seekpath =2.1.0 +- gpaw =23.9.1 +- lammps =2023.08.02 +- pandas =2.1.3 +- pylammpsmpi =0.2.5 +- jinja2 =3.1.2 \ No newline at end of file diff --git a/binder/postBuild b/binder/postBuild new file mode 100644 index 00000000..06fd8b80 --- /dev/null +++ b/binder/postBuild @@ -0,0 +1,2 @@ +# install atomistics +pip install . \ No newline at end of file