index | modules | gitlab | page source

# ACE-Molecule

ACE-Molecule ACE-Molecule, whitch stands for Advanced Computational Engine for Molecule, is a quantum chemistry package based on a real-space numerical grid. The package aims to carry out accurate and fast electronic structure calculations for large molecular systems. The present main features include ground-state DFT calculations using LDA, GGA, and hybrid functionals with an exact-exchange potential under the KLI approximation, atomic force calculations, and excited state calculations using linear-response TD-DFT, CIS, and CISD methods.

The ASE calculator is an interface to the `ace` executable.

## Setup

A simple calculation can be set up:

    import sys
    from ase.io import read
    from ase.calculators.acemolecule import ACE

    label = sys.argv[1]
    mol= read('H2.xyz')
    basic_list = {'Cell' : 12.0}
    ace = ACE(label=label, BasicInformation = basic_list)
    mol.calc = ace
    print (mol.get_potential_energy())

A Force calculation can be set up:

    import sys
    from ase.io import read
    from ase.calculators.acemolecule import ACE

    basic_list = {'Cell' : 12.0 ,'Pseudopotential' : {'Pseudopotential' : 1, 'Format' : 'upf', 'PSFilePath' : '/PATH/TO/UPF/FILES', 'PSFileSuffix' : '.pbe-theos.UPF'} }
    label = sys.argv[1]
    mol= read('H2.xyz')
    order_list = ["BasicInformation", "Guess", "Scf", "Force"]
    ace = ACE(label=label, BasicInformation = basic_list, order = order_list)
    mol.calc = ace
    print (mol.get_forces())

A Geometry optimization calculation can be set up:

    import sys
    from ase.io import read
    from ase.calculators.acemolecule import ACE
    from ase.optimize import BFGS

    basic_list = {'Cell' : 12.0, 'Pseudopotential' : {'Pseudopotential' : 1, 'Format' : 'upf', 'PSFilePath' : '/PATH/TO/UPF/FILES', 'PSFileSuffix' : '.pbe-theos.UPF'} }
    label = sys.argv[1]
    mol= read('H2.xyz')
    order_list = ["BasicInformation", "Guess", "Scf", "Force"]
    ace = ACE(label=label, BasicInformation = basic_list, order = order_list)
    mol.calc = ace
    g_opt = BFGS(mol)
    g_opt.run(fmax=0.05)
    print ("OPT is end")

A TDDFT calculation can be set up:

    import sys
    from ase.io import read
    from ase.calculators.acemolecule import ACE
    from ase.optimize import BFGS

    label = sys.argv[1]
    mol= read('H2.xyz')
    basic_list = {'Cell' : 12.0}
    order_list = ["BasicInformation", "Guess", "Scf", "TDDFT"]
    scf_list = [dict(FinalDiagonalize = dict(NumberOfEigenvalues= 12))]
    ace = ACE(label=label, BasicInformation = basic_list, Scf= scf_list, order = order_list)
    mol.calc = ace
    print (ace.get_property('excitation-energy', mol))

## Parameters

The calculator will interpret any of the documented options for `ace`: https://gitlab.com/aceteam.kaist/ACE-Molecule/tree/master/vars

By default, this calculator sets simple SCF calculations (Including BasicInformation, Guess, and Scf section). If you want to do force or excited state calculations, or change exchange-correlation functionals, you need to change input parameters. Parameters can be given as keywords and the calculator will put them into the corresponding section of the input file. Each (sub)section is represented as dictionary.

An example for updating parameters:

    basic = dict(Cell = 12.0, VerboseLevel = 2)
    ace.set(BasicInformation = basic)

An example for updating subsection parameters:

    ace.set(Scf = {"ExchangeCorrelation": {"XFunctional": "LDA_X", "CFunctional": "LDA_C_PZ"}})