Fleur equation of states (eos) workflow — AiiDA-FLEUR 1.1.1 documentation

# Fleur equation of states (eos) workflow

- Current version: 0.3.5

- Class: `FleurEosWorkChain`

- String to pass to the `WorkflowFactory()`: `fleur.eos`

- Workflow type: Technical

- Aim: Vary the cell volume, to fit an equation of states, (Bulk modulus, …)

Contents

- Fleur equation of states (eos) workflow

  - Description/Purpose

  - Input nodes

  - Returns nodes

  - Layout

  - Database Node graph

  - Plot_fleur visualization

  - Example usage

  - Output node example

  - Error handling

  - Exit codes

Import Example:

    from aiida_fleur.workflows.eos import fleur_eos_wc
    #or
    WorkflowFactory('fleur.eos')

## Description/Purpose

Calculates equation of states for a given crystal structure.

First, an input structure is scaled and a list of scaled structures is constructed. Then, total energies of all the scaled structures are calculated via `FleurScfWorkChain` (SCF). Finally, resulting total energies are fitted via the Birch–Murnaghan equation of state and the cell volume corresponding to the lowest energy is evaluated. Other fit options are also available.

## Input nodes

The `FleurEosWorkChain` employs exposed feature of the AiiDA-core, thus inputs for the SCF sub-workchain should be passed in the namespace called `scf` (see example of usage). Please note that the structure input node is excluded from the scf namespace since the EOS workchain should process input structure before performing energy calculations.

name | type | description | required
--- | --- | --- | ---
scf | namespace | inputs for nested SCF WorkChain. structure input is excluded | no
wf_parameters | `Dict` | Settings of the workchain | no
structure | `StructureData` | input structure | no

## Returns nodes

name | type | comment
--- | --- | ---
output_eos_wc_para | `Dict` | results of the workchain
output_eos_wc_structure | `StructureData` | Crystal structure with the volume of the lowest total energy

## Layout

## Database Node graph

>     from aiida_fleur.tools.graph_fleur import draw_graph

>     draw_graph(49670)

## Plot_fleur visualization

> Single node

>     from aiida_fleur.tools.plot import plot_fleur

>     plot_fleur(49670)

> Multi node

>     from aiida_fleur.tools.plot import plot_fleur

>     plot_fleur(eos_pk_list)

## Example usage

>     # -*- coding: utf-8 -*-
>     from aiida_fleur.workflows.ssdisp import FleurSSDispWorkChain
>     from aiida.orm import Dict, load_node

>     fleur_code = load_node(FLEUR_PK)
>     inpgen_code = load_node(INPGEN_PK)
>     structure = load_node(STRUCTURE_PK)

>     wf_para = Dict(dict={'points': 9,
>                          'step': 0.002,
>                          'guess': 1.00
>                          })

>     wf_para_scf = Dict(dict={'fleur_runmax': 2,
>                             'itmax_per_run': 120,
>                             'density_converged': 0.2,
>                             'serial': False,
>                             'mode': 'density'
>                    })

>     options_scf = Dict(dict={'resources': {'num_machines': 1, 'num_mpiprocs_per_machine': 8},
>                              'queue_name': 'devel',
>                              'custom_scheduler_commands': '',
>                              'max_wallclock_seconds':  60*60})

>     inputs = {'scf': {
>                       'wf_parameters': wf_para_scf,
>                       'calc_parameters': parameters,
>                       'options': options_scf,
>                       'inpgen': inpgen_code,
>                       'fleur': fleur_code
>                      },
>               'wf_parameters': wf_para,
>               'structure': structure
>     }

>     SCF_workchain = submit(FleurSSDispWorkChain,
>                            fleur=fleur_code,
>                            inpgen=inpgen_code,
>                            calc_parameters=calc_parameters,
>                            structure=structure,
>                            wf_parameters=wf_para,
>                            options=options)

## Output node example

>     # -*- coding: utf-8 -*-
>     {
>       'bulk_deriv': -612.513884563477,
>       'bulk_modulus': 29201.4098068761,
>       'bulk_modulus_units': 'GPa',
>       'calculations': [],
>       'distance_charge': [
>         4.4141e-06,
>         4.8132e-06,
>         1.02898e-05,
>         1.85615e-05
>       ],
>       'distance_charge_units': 'me/bohr^3',
>       'errors': [],
>       'guess': 1.0,
>       'info': [
>         'Consider refining your basis set.'
>       ],
>       'initial_structure': 'd6985712-7eca-4730-991f-1d924cbd1062',
>       'natoms': 1,
>       'nsteps': 4,
>       'residuals': [],
>       'scaling': [
>         0.998,
>         1.0,
>         1.002,
>         1.004
>       ],
>       'scaling_gs': 1.00286268683922,
>       'scf_wfs': [],
>       'stepsize': 0.002,
>       'structures': [
>         'f7fddbb5-51af-4dac-a4ba-021d1bf5795b',
>         '28e9ed28-837c-447e-aae7-371b70454dc4',
>         'fc340850-1a54-4be4-abed-576621b3015f',
>         '77fd128b-e88c-4d7d-9aea-d909166926cb'
>       ],
>       'successful': true,
>       'total_energy': [
>         -439902.565469453,
>         -439902.560450163,
>         -439902.564547518,
>         -439902.563105211
>       ],
>       'total_energy_units': 'Htr',
>       'volume_gs': 16.2724654374658,
>       'volume_units': 'A^3',
>       'volumes': [
>         16.1935634057491,
>         16.2260154366224,
>         16.2584674674955,
>         16.290919498369
>       ],
>       'warnings': [
>         'Abnormality in Total energy list detected. Check entr(ies) [1].'
>       ],
>       'workflow_name': 'fleur_eos_wc',
>       'workflow_version': '0.3.3'
>     }

## Error handling

Total energy check:

The workflow quickly checks the behavior of the total energy for outliers. Which might occur, because the chosen FLAPW parameters might not be good for all volumes. Also local Orbital setup and so on might matter.

- Not enough points for fit

- Some calculations did not converge

- Volume ground state does not lie in the calculated interval, interval refinement

## Exit codes

A list of implemented exit codes:

Code | Meaning
--- | ---
230 | Invalid workchain parameters