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
keyword: 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
keyword: 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). (2) 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
keyword: 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. (2) 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
keyword: 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
keyword: 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
keyword: 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
keyword: 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
keyword: 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.MaxIter
keyword: calculation.basisOptimization.simplex.MaxIter
possible values: an integer
default value: 500
description: nanodcal uses a simplex method to optimize the basis. This parameter is used in the simplex. The maximum number in the simplex searching steps.
an example:
calculation.basisOptimization.simplex.MaxIter = 2000
calculation.basisOptimization.simplex.TolX
keyword: calculation.basisOptimization.simplex.TolX
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 parameters.
an example:
calculation.basisOptimization.simplex.TolX = 1e-2
calculation.basisOptimization.simplex.TolFun
keyword: 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