Siman contains your calculation parameters (e-cut, number of k-points and so on) in separate structures which are called sets. To reduce possible errors, for each combination of parameters your should created new set. This is very easy by inheriting them and changing only a few of parameters at a time. All sets are stored in predefined dictionary header.varset
In [1]:
import sys
sys.path.extend(['/home/aksenov/Simulation_wrapper/siman'])
import header
from set_functions import read_vasp_sets, init_default_sets
init_default_sets() # read pre-defined Siman sets
Create new set 'sk1' from 'static' and change number of k-points:
In [2]:
read_vasp_sets([('sk1','static', {'ngkpt':[1,5,5]})])
Out[2]:
In [3]:
header.varset['sk1'].printme()
To updated existing set use 'over' key
In [ ]:
read_vasp_sets([('sk1','static', {'ngkpt':[1,5,5]}, 'over') ])
The function can deal with list of changes:
In [ ]:
set_update_list = [
('sk1','static', {'ngkpt':[1,5,5]}),
('sk2','static', {'ngkpt':[2,5,5]}),
('sk3','static', {'ngkpt':[3,5,5]}),
]
read_vasp_sets(set_update_list)
To update all sets use override_global
In [ ]:
read_vasp_sets(set_update_list, override_global= 1 )
Updating incar parameters, which could depend on structure
In [ ]:
center_of_mass = [0.5, 0.5, 0.5]
add_loop('Li.suf', 'sk1', 1, input_geo_file = 'Li/Li_suf_5.opt/1.POSCAR', params = {'update_set_dic':{'DIPOL':center_of_mass}})