Fleur dos/band workflows — AiiDA-FLEUR 1.1.0 documentation

# Fleur dos/band workflows

Warning

These workchains do not work with AiiDA 1.1.0 version yet. They need to be updated.

These are two seperate workflows which are pretty similar so we treat them here together

- Class: `fleur_dos_wc` and `FleurBandWorkChain`

- String to pass to the `WorkflowFactory()`: `fleur.dos`, `fleur.band`

- Workflow type: Workflow (lv 1)

- Aim: Calculate a density of states. Calculate a Band structure.

- Compuational demand: 1 `Fleur Job calculation`

- Database footprint: Outputnode with information, full provenance, `~ 10` nodes

- File repository footprint: The `JobCalculation` run, plus the DOS or Bandstructure files

- Additional Info: Use alone.

Contents

- Fleur dos/band workflows

  - Description/Purpose

  - Input nodes:

  - Returns nodes

  - Layout

  - Database Node graph

  - Plot_fleur visualization

  - Example usage

  - Output node example

  - Error handling

Import Example:

    from aiida_fleur.workflows.dos import fleur_dos_wc
    #or
    WorkflowFactory('fleur.dos')

    from aiida_fleur.workflows.band import FleurBandWorkChain
    #or
    WorkflowFactory('fleur.band')

## Description/Purpose

> DOS:

> Calculates an Density of states (DOS) ontop of a given Fleur calculation (converged or not).

> Band:

> Calculates an electronic band structure ontop of a given Fleur calculation (converged or not).

> In the future we plan to add the posibility to converge a calculation before, and choose the kpaths automatic. This version should be able start simply from a crystal structure.

> Each of these workflows prepares/chances the Fleur input and manages one Fleur calculation.

## Input nodes:

> - `fleur` (`Code`): Fleur code using the `fleur.fleur` plugin

> - `wf_parameters` (`Dict`, optional): Some settings of the workflow behavior (e.g. number of kpoints, path, energy sampling and smearing, …)

> - `fleurinp` (`FleurinpData`, path 2): Fleur input data object representing the fleur input files.

> - `remote_data` (`RemoteData`, optional): The remote folder of the (converged) calculation whose output density is used as input for the DOS, or band structure run.

> - `options` (`Dict`, optional): All options available in AiiDA, i.e resource specification, queue name, extras scheduler commands, …

> - `settings` (`Dict`, optional): special settings for Fleur calculations, will be given like it is through to calculationss.

## Returns nodes

> - `output_dos_wc_para` (`Dict`): Information of the dos workflow results like success, last result node, list with convergence behavior

> - `output_band_wc_para` (`Dict`): Information node from the band workflow

> - `last_fleur_calc_output` (`Dict`) Output node of last Fleur calculation is returned.

## Layout

## Database Node graph

>     from aiida_fleur.tools.graph_fleur import draw_graph

>     draw_graph(76867)

## Plot_fleur visualization

> Single node

>     from aiida_fleur.tools.plot import plot_fleur

>     # DOS calc
>     plot_fleur(76867)

> For the bandstructure visualization it depends on the File produced. Old bandstructure file:

> Bandstructure ``band_dos.hdf`` file with l-like charge information: Band resolved bandstructure and fat-bands for the different channels. Spin and combinded DOS plus band structure visualizations are in progress…

> Multi node just does a bunch of single plots for now.

>     from aiida_fleur.tools.plot import plot_fleur

>     plot_fleur(dos_pk_list)

## Example usage

>     # -*- coding: utf-8 -*-
>     ###############################################################################
>     # Copyright (c), Forschungszentrum Jülich GmbH, IAS-1/PGI-1, Germany.         #
>     #                All rights reserved.                                         #
>     # This file is part of the AiiDA-FLEUR package.                               #
>     #                                                                             #
>     # The code is hosted on GitHub at https://github.com/broeder-j/aiida-fleur    #
>     # For further information on the license, see the LICENSE.txt file            #
>     # For further information please visit http://www.flapw.de or                 #
>     # http://aiida-fleur.readthedocs.io/en/develop/                               #
>     ###############################################################################
>     """
>     Here we run the fleur_dos_wc for a Fleur calculation which has been converged before
>     Layout:

>     1. Database env load, Import, create base classes
>     2. Creation of  input nodes
>     3. Lauch workchain
>     """

>     #######################
>     # 1. Load the database environment. Imports and base class creation

>     from __future__ import absolute_import
>     from aiida import load_dbenv, is_dbenv_loaded
>     if not is_dbenv_loaded():
>         load_dbenv()

>     from aiida.plugins import DataFactory
>     from aiida.orm import Code, load_node
>     from aiida.engine.launch import submit, run
>     from aiida_fleur.workflows.dos import fleur_dos_wc

>     ParameterData = DataFactory('parameter')
>     StructureData = DataFactory('structure')

>     #######################
>     # 2. Creation/loding of input nodes

>     # Load the codes, thwy have to be setup in your database.
>     fleur_label = 'fleur@localhost'
>     fleur_code = Code.get_from_string(fleur_label)

>     ### Create wf_parameters (optional) and options
>     wf_para = Dict(dict={'fleur_runmax': 4, 'density_criterion': 0.000001, 'serial': False})

>     options = Dict(dict={'resources': {'num_machines': 1}, 'queue_name': '', 'max_wallclock_seconds': 60 * 60})

>     # load a fleurino data object from a scf_wc before
>     ################################
>     # 3. submit the workchain with its inputs.

>     inputs = {}
>     inputs['wf_parameters'] = wf_para
>     inputs['fleurinp'] = fleurinp
>     inputs['fleur'] = fleur_code
>     inputs['description'] = 'test fleur_dos_wc run on W'
>     inputs['label'] = 'dos test '
>     inputs['options'] = options

>     # submit workchain to the daemon
>     # Noice that the nodes we created before are not yet stored in the database,
>     # but AiiDA will do so automaticly when we launch the workchain.
>     # To reuse nodes it might be a good idea, to save them before by hand and then load them
>     res = submit(fleur_dos_wc, **inputs)

>     # You can also run the workflow in the python interpreter as blocking
>     #res = run(fleur_dos_wc, **inputs)

## Output node example

## Error handling

> Still has to be documented

> Warning if parent calculation was not converged.