Parameters for basis optimization

Parameters here are for optimizing the confined pseudo-atomic orbital (PAO) basis functions by a combined application of nanobase and nanodcal together. Basis optimization is important to LCAO methods.

calculation.basisOptimization.basisInputFiles

key word

:

calculation.basisOptimization.basisInputFiles

possible values

:

cell array of strings which represents file names

default value

:

no default value

description

:

Each file is an input file of nanobase, which is

used for generating LCAO basis functions.

For more information about how to prepare the input file

for nanobase, see the User Reference manual of nanobase.

The basis parameters in the given input files are

used as initial values for the basis optimization.

The file names of the generated basis functions should be

specified in the parameter basisFileNames.

Please note that in each basis calculation, the

working directory is automatically changed to the

directory where the corresponding input file is located.

Therefore, please put your input files in different

directories to avoid overwriting useful results.

an example

:

calculation.basisOptimization.basisInputFiles = { …

./Carbon_SZ/input.txt, …

./Carbon_DZ/input.txt, …

./Oxygen_DZP/input.txt}

calculation.basisOptimization.basisFileNames

key word

:

calculation.basisOptimization.basisFileNames

possible values

:

cell array of strings which represent file names

default value

:

no default value

description

:

The file names of the optimized basis, each corresponds

to one set of initial basis parameters of files given in

the parameter basisInputFiles. The path part of the

names of the basis files are not needed, and the

optimized basis files will always be saved in the

current directory.

Please note that

  1. At each optimization step, those atomic basis files

will be updated with the updated basis parameters;

then the updated basis will be copied to the working

directories of the calculation of the physical

properties; and used to calculate certain physical

properties of the systems which are specified in the

input parameter systemInputFiles (see also the

description of the parameter systemInputFiles).

  1. Therefore, the basis file names contained in this

cell array should all be different from each other. In

the following example, there are two different names.

an example

:

calculation.basisOptimization.basisFileNames = { …

C_dzp.mat, O_dzp.mat}

calculation.basisOptimization.systemInputFiles

key word

:

calculation.basisOptimization.systemInputFiles

possible values

:

cell array of strings for file names

default value

:

no default value

description

:

Input file names for normal nanodcal calculations of

different physical systems. The calculated physical

properties of the physical system will be used to form

a cost function by basisOptimization.costCalculator.

This cost function is to be minimized.

Please note that

  1. In each of the physical property calculation, the

working directory is automatically changed to the

directory where the corresponding input file is located.

Therefore, please place your input files in different

directories to avoid overwriting useful results.

  1. The purpose of the above normal nanodcal calculation

is to supply physical properties for the optimization of

the basis, and then the basis sets with the names given

by the parameter basisFileNames should be used in the

calculation. Therefore, please make sure that the

basis used in the calculations are the correct ones.

an example

:

calculation.basisOptimization.systemInputFiles = { …

./CO2/input.txt, …

./O2/input.txt}

calculation.basisOptimization.costCalculator

key word

:

calculation.basisOptimization.costCalculator

possible values

:

a structure with two fields of class and parameter

default value

:

the costEnergy class

description

:

This input parameter defines a plug-in calculator, which

supplies the cost function to be minimized by nanodcal.

In this parameter, the field class clarifies the name

of the calculator, and the field parameter gives its

construction parameter. The constructor of the plug-in

calculator will be called in the following way:

calculator = constructor([cp])

where

[cp] = calculation.basisOptimization.costCalculator.parameter

For information about how to replace this plug-in

calculator, type nanodcal -help plug-in and nanodcal -api.

an example

:

calculation.basisOptimization.costCalculator.class = …

costGapOverK

calculation.basisOptimization.costCalculator.parameter …

= struct(GapOverK, [ 8.1398 2.6880 2.7482 …

2.5293 2.9758 3.4849 8.1398 3.5565], …

KpointNumber, [1 50 75 99 125 148 197 246])

calculation.basisOptimization.constrainType

key word

:

calculation.basisOptimization.constrainType

possible values

:

soft, hard

default value

:

hard

description

:

If hard, the basis parameters will be strictly

confined within a pre-set optimization domain. If

soft, the basis parameters will be allowed to be

outside the optimization domain, but with a large

punishing cost function value.

an example

:

calculation.basisOptimization.constrainType = soft

calculation.basisOptimization.constrainConstant

key word

:

calculation.basisOptimization.constrainConstant

possible values

:

structure with all or part of the following fields

ChargeTransfer_minimum_factor,

ChargeTransfer_maximum_factor,

EnergyShift_minimum_factor,

EnergyShift_maximum_factor,

SplitNorm_minimum_value,

SplitNorm_maximum_value,

SplitNorm_shift_half_range,

rc_minimum_factor,

rc_maximum_factor,

rc_rc_minimum_distance,

ri_minimum_factor,

ri_maximum_factor,

rc_ri_minimum_distance,

V0_minimum_factor,

V0_maximum_factor.

default value

:

ChargeTransfer_minimum_factor = 0,

ChargeTransfer_maximum_factor = 2,

EnergyShift_minimum_factor = 1,

EnergyShift_maximum_factor = 2,

SplitNorm_minimum_value = 0.01,

SplitNorm_maximum_value = 0.99,

SplitNorm_shift_half_range = 0.1,

rc_minimum_factor = 0.85,

rc_maximum_factor = 1.15,

rc_rc_minimum_distance = 1.2,

ri_minimum_factor = 0.85,

ri_maximum_factor = 1.15,

rc_ri_minimum_distance = 1.0,

V0_minimum_factor = 1/100,

V0_maximum_factor = 10.

description

:

The constrain constants which define an optimization

domain in the space spanned by the basis parameters

within which the optimal values of the parameters is

searched for.

an example

:

calculation.basisOptimization.constrainConstant …

.ri_maximum_factor = 2.5

calculation.basisOptimization.history

key word

:

calculation.basisOptimization.history

possible values

:

true or false

default value

:

false

description

:

If true, a file searchingHistoryOfTheBasisParameters.txt

is generated to record the searching history of the

basis parameters.

an example

:

calculation.basisOptimization.history = false

calculation.basisOptimization.simplex.MaxFunEvals

key word

:

calculation.basisOptimization.simplex.MaxFunEvals

possible values

:

an integer

default value

:

1000

description

:

nanodcal uses a simplex method to optimize the basis.

This parameter is used in the simplex. The maximum

number of times the cost function being called.

an example

:

calculation.basisOptimization.simplex.MaxFunEvals = 3000

calculation.basisOptimization.simplex.TolFun

key word

:

calculation.basisOptimization.simplex.TolFun

possible values

:

a small number

default value

:

1e-2

description

:

nanodcal uses a simplex method to optimize the basis.

This parameter is used in the simplex. The tolerance of

cost function value.

an example

:

calculation.basisOptimization.simplex.TolFun = 1e-3