Fleur core-hole workflow
- Class name, import from:
from aiida_fleur.workflows.corehole import FleurCoreholeWorkChain #or WorkflowFactory('fleur.corehole')
Description/Purpose
The core-hole workflow can be deployed to calculate absolute core-level binding energies.
Such core-hole calculations are performed through a super-cell setup. The workflow allows for arbitrary corehole charges and of valence and charged type core-holes. From a computational cost perspective it may be cheaper to calculate all relative initial-state shifts of a structure and then launch one core-hole calculation on the structure to get an absolute reference energy instead of performing expensive core-hole calculations for all atom-types in the structure. The core-hole workflow implements the usual FLEUR workflow interface with a workflow control parameter node.
Layout
Input nodes
name |
type |
description |
required |
---|---|---|---|
inpgen |
Inpgen code |
yes |
|
fleur |
Fleur code |
yes |
|
wf_parameters |
Settings of the workchain |
no |
|
fleurinp |
no |
||
structure |
Crystal structure |
no |
|
calc_parameters |
FLAPW parameters for given structure |
no |
|
options |
AiiDA options (computational resources) |
no |
- More details:
fleur
(aiida.orm.Code): Fleur code using thefleur.fleur
plugininpgen
(aiida.orm.Code): Inpgen code using thefleur.inpgen
pluginwf_parameters
(Dict, optional): Some settings of the workflow behaviorstructure
(StructureData, path 1): Crystal structure data node.calc_parameters
(Dict, optional): Longer description of the workflowfleurinp
(FleurinpData, path 2): Label of the workflow
Workchain parameters and its defaults
wf_parameters
wf_parameters
: Dict
- Settings of the workflow behavior. All possible
keys and their defaults are listed below:
# -*- coding: utf-8 -*-
'method' : 'valence', # what method to use, default for valence to highest open shell
'hole_charge' : 1.0, # what is the charge of the corehole? 0<1.0
'atoms' : ['all'], # coreholes on what atoms, positions or index for list,
# or element ['Be', (0.0, 0.5, 0.334), 3]
'corelevel': ['all'], # coreholes on which corelevels [ 'Be1s', 'W4f', 'Oall'...]
'supercell_size' : [2,1,1],# size of the supercell [nx,ny,nz]
'para_group' : None, # use parameter nodes from a parameter group
'relax' : False, # relax the unit cell first?
'relax_mode': 'Fleur', # what releaxation do you want
'relax_para' : 'default', # parameter dict for the relaxation
'scf_para' : 'default', # wf parameter dict for the scfs
'same_para' : True, # enforce the same atom parameter/cutoffs on the corehole calc and ref
'magnetic' : True # jspins=2, makes a difference for coreholes
options
options
: Dict
- AiiDA options (computational resources).
Example:
'resources': {"num_machines": 1, "num_mpiprocs_per_machine": 1},
'max_wallclock_seconds': 6*60*60,
'queue_name': '',
'custom_scheduler_commands': '',
'import_sys_environment': False,
'environment_variables': {}
Returns nodes
output_corehole_wc_para
(Dict): Information of workchain results
More details:
output_corehole_wc_para
:Dict
- Main results of the workchain. Contains Binding energies, band gaps, core-levels, atom-type information, errors, warnings, other information. An example:# -*- coding: utf-8 -*- {'atomtypes': [[ {'atomic_number': 4, 'coreconfig': '(1s1/2)', 'element': 'Be', 'natoms': 1, 'species': 'Be_corehole1', 'stateOccupation': [ {'(1s1/2)': ['1.00000000', '.50000000']}, {'(2p1/2)': ['.50000000', '.00000000']}], 'valenceconfig': '(2s1/2) (2p1/2)'}, {'atomic_number': 4, 'coreconfig': '[He]', 'element': 'Be', 'natoms': 1, 'species': 'Be-2', 'stateOccupation': [{'(2p1/2)': ['.00000000', '.00000000']}], 'valenceconfig': '(2s1/2) (2p1/2)'}, {'atomic_number': 4, 'coreconfig': '[He]', 'element': 'Be', 'natoms': 1, 'species': 'Be-2', 'stateOccupation': [{'(2p1/2)': ['.00000000', '.00000000']}], 'valenceconfig': '(2s1/2) (2p1/2)'}, {'atomic_number': 4, 'coreconfig': '[He]', 'element': 'Be', 'natoms': 1, 'species': 'Be-2', 'stateOccupation': [{'(2p1/2)': ['.00000000', '.00000000']}], 'valenceconfig': '(2s1/2) (2p1/2)'}]], 'bandgap': [0.0004425914], 'bandgap_units':'eV', 'binding_energy': [53.57027767044], 'corehole_type': 'valence', 'binding_energy_units': 'eV', 'binding_energy_convention': 'negativ', 'coreholes_calculated': 'Be1s', 'coreholes_calculated_details': '', 'coresetup': [], 'errors': [], 'fermi_energy': [0.3138075709], 'fermi_energy_unit': 'eV', 'reference_bandgaps': [0.0225936434], 'reference_coresetup': [], 'successful': true, 'total_energy_all': [-1554.08485250996], 'total_energy_all_units': 'eV', 'total_energy_ref': [-1607.6551301804], 'total_energy_ref_units': 'eV', 'warnings': [], 'hints': [], 'weighted_binding_energy': [107.14055534088], 'weighted_binding_energy_units': 'eV', 'workflow_name': 'fleur_corehole_wc', 'workflow_version': '0.3.2' }
Database Node graph
Plot_fleur visualization
Currently there is no visualization directly implemented for plot fleur. Through there in masci-tools there are methods to visualize spectra and binding energies
Example usage
# -*- coding: utf-8 -*- from aiida.orm import load_node, Dict from aiida.engine import submit from aiida.plugins import WorkflowFactory fleur_corehole_wc = WorkflowFactory('fleur.corehole') struc = load_node(STRUCTURE_PK) flapw_para = load_node(PARAMETERS_PK) fleur_code = load_node(FLEUR_PK) inpgen_code = load_node(INPGEN_PK) options = Dict(dict={'resources': {'num_machines': 2, 'num_mpiprocs_per_machine': 24}, 'queue_name': '', 'custom_scheduler_commands': '', 'max_wallclock_seconds': 60*60}) wf_para_corehole = Dict(dict={u'atoms': [u'Be'], #[u'all'], u'supercell_size': [2, 2, 2], u'corelevel': ['1s'], #[u'all'], u'hole_charge': 1.0, u'magnetic': True, u'method': u'valence'}) # launch workflow dos = submit(fleur_corehole_wc, wf_parameters=wf_para_corehole, structure=struc, calc_parameters=flapw_para, options=options, fleur=fleur, inpgen=inpgen, label='test core hole wc', description='fleur_corehole test')
Error handling
Still has to be documented