exciting — ASE documentation

### Navigation

- index
- modules |
- Documentation for modules in ASE »
- Calculators »

# exciting

## Introduction

`exciting` is a full-potential all-electron density-functional-theory (DFT) package based on the linearized augmented planewave (LAPW) method. It can be applied to all kinds of materials, irrespective of the atomic species involved, and also allows for the investigation of the core region. The website is http://exciting-code.org/

The module depends on lxml http://lxml.de

There are two ways to construct the exciting calculator.

1. Using keyword arguments to specify groundstate attributes
2. Use paramdict to specify an input file structure with a data structure of dictionaries.

### Constructor with Groundstate Keywords

One is by giving parameters of the ground state in the constructor. The possible attributes can be found at http://exciting-code.org/ref:groundstate

class `ase.calculators.exciting.` `Exciting`(bin='excitingser', kpts=(4, 4, 4), xctype='LDA_PW')

### Parameter Dictionary

When the paramdict keyword is used, the calculator translates the dictionary given into the exciting XML file format. Note $EXCITINGROOT environmental variable should be set: details at http://exciting-code.org/tutorials-boron

    import os
    from ase import Atoms
    from ase.calculators.exciting import Exciting

    # test structure, not real
    a = Atoms('N3O', [(0, 0, 0), (1, 0, 0), (0, 0, 1), (0.5, 0.5, 0.5)], pbc=True)

    calculator = Exciting(
        dir='excitingtestfiles',
        speciespath=os.environ['EXCITINGROOT']+'/species',
        paramdict={'title':{'text()':'N3O'},
                   'groundstate':{'ngridk':'1 2 3','tforce':'true'},
                   'relax':{},
                   'properties':{'dos':{},
                                 'bandstructure':
                                     {'plot1d':{'path':{'steps':'100',
                                                        'point':
                            [{'coord':'0.75000   0.50000   0.25000', 'label':'W'},
                             {'coord':'0.50000   0.50000   0.50000', 'label':'L'},
                             {'coord':'0.00000   0.00000   0.00000', 'label':'G'},
                             {'coord':'0.50000   0.50000   0.00000', 'label':'X'},
                             {'coord':'0.75000   0.50000   0.25000', 'label':'W'},
                             {'coord':'0.75000   0.37500   0.37500', 'label':'K'}]
                                                        }}}}})

    calculator.write(a)

The calculator constructure above is used to create this exciting input file:

    <?xml version='1.0' encoding='UTF-8'?>
    <input xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.exciting-code.org/excitinginput.xsd">
      <title>N3O</title>
      <structure speciespath="$EXCITINGROOT/species/" autormt="false">
        <crystal>
          <basevect>1.88972595820018 0.00000000000000 0.00000000000000</basevect>
          <basevect>0.00000000000000 1.88972595820018 0.00000000000000</basevect>
          <basevect>0.00000000000000 0.00000000000000 1.88972595820018</basevect>
        </crystal>
        <species chemicalSymbol="N" speciesfile="N.xml">
          <atom coord="0.00000000000000 0.00000000000000 0.00000000000000"/>
          <atom coord="0.00000000000000 0.00000000000000 0.00000000000000"/>
          <atom coord="0.00000000000000 0.00000000000000 0.00000000000000"/>
        </species>
        <species chemicalSymbol="O" speciesfile="O.xml">
          <atom coord="0.50000000000000 0.50000000000000 0.50000000000000"/>
        </species>
      </structure>
      <relax/>
      <groundstate tforce="true" ngridk="1 2 3"/>
      <properties>
        <dos/>
        <bandstructure>
          <plot1d>
            <path steps="100">
              <point coord="0.75000   0.50000   0.25000" label="W"/>
              <point coord="0.50000   0.50000   0.50000" label="L"/>
              <point coord="0.00000   0.00000   0.00000" label="G"/>
              <point coord="0.50000   0.50000   0.00000" label="X"/>
              <point coord="0.75000   0.50000   0.25000" label="W"/>
              <point coord="0.75000   0.37500   0.37500" label="K"/>
            </path>
          </plot1d>
        </bandstructure>
      </properties>
    </input>

The translation follows the following rules: String values are translated to attributes. Nested dictionaries are translated to sub elements. A list of dictionaries is translated to a list of sub elements named after the key of which the list is the value. The special key “text()” results in text content of the enclosing tag.

## Muffin Tin Radius

Sometimes it is necessary to specify a fixed muffin tin radius different from the default. The muffin tin radii can be set by adding a custom array to the atoms object with the name “rmt”:

    atoms.new_array('rmt', np.array([-1.0, -1.0, 2.3, 2.0] * Bohr))

Each entry corresponds to one atom. If the rmt value is negative, the default value is used. This array is correctly updated if the atoms are added or removed.

## Exciting Calculator Class

class `ase.calculators.exciting.` `Exciting`(dir='calc', paramdict=None, speciespath=None, bin='excitingser', kpts=(1, 1, 1), autormt=False, **kwargs)

  Exciting calculator object constructor

  dir: string
    directory in which to execute exciting
  paramdict: dict
    Dictionary containing XML parameters. String values are translated to attributes, nested dictionaries are translated to sub elements. A list of dictionaries is translated to a list of sub elements named after the key of which the list is the value. Default: None
  speciespath: string
    Directory or URL to look up species files
  bin: string
    Path or executable name of exciting. Default: `excitingser`
  kpts: integer list length 3
    Number of k-points
  autormt: bool
    Bla bla?
  kwargs: dictionary like
    list of key value pairs to be converted into groundstate attributes

### Navigation

- index
- modules |
- Documentation for modules in ASE »
- Calculators »