# Constructing Basis

The top-level function specifying the parameters needed to construct ACE & pair basis is basis_params(). Depending on the basis type, some of the parameters need to be specified by other *params() functions. Namely, radial basis, transform and degree have several different options.

ACE1pack.basis_paramsFunction

basis_params(; kwargs...) : returns a dictionary containing the complete set of parameters required to construct one of the basis. All parameters are passed as keyword argument and the kind of parameters required depend on "type".

ACE (RPI) basis

Returns a dictionary containing the complete set of parameters required to construct an ACE basis (RPIBasis). All parameters are passed as keyword argument. If no default is given then the argument is required.

Parameters

• type = "ace"
• species : single species or list of species (mandatory)
• N : correlation order, positive integer (mandatory)
• maxdeg : maximum degree, positive real number (note the precise

notion of degree is specified by further parameters) (mandatory)

• r0 = 2.5 : rough estimate for nearest neighbour distance
• radial = radial_basis_params(; r0 = r0) : one-particle basis

parameters; cf ?basis_params of type "radial" for details

• transform = transform_params(; r0 = r0) : distance transform

parameters; cf ?transform_params() for details

• degree = degree_params() : class of sparse polynomial degree

to select the basis; see ?degree_params for details

Pair basis

Returns a dictionary containing the complete set of parameters required to construct an pair basis (PolyPairBasis). All parameters are passed as keyword argument.

Parameters

• type = "pair"
• species : single species or list of species (mandatory)
• maxdeg : maximum degree, positive real number (note the precise

notion of degree is specified by further parameters) (mandatory)

• r0 = 2.5 : rough estimate for nearest neighbour distance
• rcut = 5.0: outer cutoff, Å
• rin = 0.0: inner cutoff, Å
• pcut = 2: outer cutoff parameter; * pcut=2: function and first derivative go to zero at the outer cutoff * pcut=1: function forced to go through zero at the outer cutoff * pcut=0: no constraint at the outer cutoff
• pin = 0: inner cutoff parameter * pin=2: function and first derivative go to zero at the inner cutoff * pin=1: function forced to go through zero at the inner cutoff * pin=0: no constraint at the inner cutoff
• transform = transform_params(; r0 = r0) : distance transform

parameters; cf ?transform_params() for details

Returns a dictionary containing the complete set of parameters required to construct radial basis for ACE. All parameters are passed as keyword argument.

Parameters

• type = "radial"
• r0 = 2.5 : rough estimate for nearest neighbour distance
• rcut = 5.0: outer cutoff, Å
• rin = 0.5 * r0: inner cutoff, Å
• pcut = 2: outer cutoff parameter; * pcut=2: function and first derivative go to zero at the outer cutoff * pcut=1: function forced to go through zero at the outer cutoff * pcut=0: no constraint at the outer cutoff
• pin = 2: inner cutoff parameter * pin=2: function and first derivative go to zero at the inner cutoff * pin=1: function forced to go through zero at the inner cutoff * pin=0: no constraint at the inner cutoff
source
ACE1pack.degree_paramsFunction

degree_params(; kwargs...) : returns a dictionary containing the complete set of parameters required to construct a specification for polynomial degree. All parameters are passed as keyword argument and the kind of parameters required depend on "type".

SparsePSHDegree

Returns a dictionary containing the complete set of parameters required to construct ACE1.RPI.SparsePSHDegree. See ?SparsePSHDegree.

Parameters

• type = "sparse"
• wL = 1.5
• csp = 1.0
• chc = 0.0
• chc = 0.0
• ahc = 0.0
• bhc = 0.0
• p = 1.0

##SparsePSHDegreeM Returns a dictionary containing the complete set of parameters required to construct ACE1.RPI.SparsePSHDegree. Also see ?SparsePSHDegreeM.

NB maxdeg of ACE basis (RPIBasis) has to be set to 1.0.

Parameters

• Dd : Dictionary specifying max degrees (mandatory)
• Dn = Dict("default" => 1.0) : Dictionary specifying weights for degree

• Dl = Dict("default" => 1.5) : Dictionary specifying weights for degree

of angular basis functions (l)

Each dictionary should have a "default" entry. In addition, different degrees or weights can be specified for each correlation order and/or correlation order-species combination. For example

"Dd" => Dict(
"default" => 10,
3 => 9,
(4, "C") => 8,
(4, "H") => 0)

in combination with N=4 and maxdeg=1.0, will set maximum polyonmial degree on N=1 and N=2 functions to 10, to 9 for N=3 functions and will only allow N=4 basis functions on carbon atoms, up to polynomial degree 8.

source
ACE1pack.transform_paramsFunction

transform_params(; kwargs...) : returns a dictionary containing the complete set of parameters required to construct one of the transforms. All parameters are passed as keyword argument and the kind of parameters required depend on "type".

Polynomial transform

Returns a dictionary containing the complete set of parameters required to construct ACE1.Transforms.PolyTransform. All parameters are passed as keyword argument. Also see?PolyTransform

Implements the distance transform

$$$x(r) = \Big(\frac{1 + r_0}{1 + r}\Big)^p$$$

Parameters

• type = "polynomial"
• p = 2
• r0 = 2.5

Multitransform

Returns a dictionary containing the complete set of parameters required to construct ACE.Transform.multitransform. All parameters are passed as keyword argument.

Parameters

• transforms : dictionary specifying transforms for each species pair. Can be

given per-pair (i.e. only for ("element1", "element2") and not for ("element2", "element1")) or can be different for ("element1", "element2") and ("element2", "element1"). For example

transforms = Dict(
("C", "C") => Dict("type"=> "polynomial"),
("C", "H") => Dict("type"=> "polynomial"),
("H", "H") => Dict("type" => "polynomial"))
• rin, rcut: values for inner and outer cutoffs, alternative to cutoffs
• cutoffs : dictionary specifying inner and outer cutoffs for each element pair

(either symmetrically or non-symmetrically). Alternative to rin & rcut. For example

cutoffs => Dict(
("C", "C") => (1.1, 4.5),
("C", "H") => (0.9, 4.5),
("H", "H") => (1.23, 4.5)),

identity

IdTransform_params(;) : returns Dict("type" => "identity"), needed to construct ACE1.Transforms.IdTransform`.

source