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, …)

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

../../_images/Workchain_charts_eos_wc.png

Database Node graph

from aiida_fleur.tools.graph_fleur import draw_graph

draw_graph(49670)
../../_images/eos_49670.pdf

Plot_fleur visualization

Single node

from aiida_fleur.tools.plot import plot_fleur

plot_fleur(49670)
../../_images/plot_fleur_eos_sn.png

Multi node

from aiida_fleur.tools.plot import plot_fleur

plot_fleur(eos_pk_list)
../../_images/plot_fleur_eos_mn.png

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