1
General Questions and Answers / set different Hubbard U for same element in a model
« on: September 17, 2015, 15:25 »
Dear staff,
I followed this tutorial (http://quantumwise.com/documents/tutorials/latest/InAs-2D/index.html/chap.slab.html) and tried to apply different Hubbard U parameters for same kind of aotms which hold different positions. Here, let me take CoO as an example.
The model in the input file shown below contains two cobalt ions and two oxygen anions.
I applied different U values for the two Co, with first one was 3.1 and second one 4.1 as presented in the input file. However, it failed with these errors:
Note: Here, VNL-13.8.1 and VNL-2014.3 were both tested.
I think this is caused by the Tag lines in the py files. After removing the lines, it can run. Hope experts in Quantumwise can help give a solution. Thank you in advance!
I followed this tutorial (http://quantumwise.com/documents/tutorials/latest/InAs-2D/index.html/chap.slab.html) and tried to apply different Hubbard U parameters for same kind of aotms which hold different positions. Here, let me take CoO as an example.
The model in the input file shown below contains two cobalt ions and two oxygen anions.
Code
# -------------------------------------------------------------
# Bulk configuration
# -------------------------------------------------------------
# Set up lattice
lattice = Rhombohedral(5.06138065551*Angstrom, 33.5573097619*Degrees)
# Define elements
elements = [Cobalt, Cobalt, Oxygen, Oxygen]
# Define coordinates
fractional_coordinates = [[ 0.002, 0.002, -0.006],
[ 0.502, 0.502, 0.494],
[ 0.25 , 0.25 , 0.25 ],
[ 0.75 , 0.75 , 0.75 ]]
# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)
# Add tags
bulk_configuration.addTags('cobalt1', [1])
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------
cobalt_3d = ConfinedOrbital(
principal_quantum_number=3,
angular_momentum=2,
radial_cutoff_radius=4.07498342334*Bohr,
confinement_start_radius=3.25998673867*Bohr,
additional_charge=0,
confinement_strength=24.5399771266*Hartree,
confinement_power=1,
radial_step_size=0.001*Bohr,
)
cobalt_3d_split = AnalyticalSplit(cobalt_3d, split_norm=0.15)
cobalt_4s = ConfinedOrbital(
principal_quantum_number=4,
angular_momentum=0,
radial_cutoff_radius=6.93481368132*Bohr,
confinement_start_radius=5.54785094506*Bohr,
additional_charge=0,
confinement_strength=14.4199980844*Hartree,
confinement_power=1,
radial_step_size=0.001*Bohr,
)
cobalt_4s_polarization = PolarizationOrbital(cobalt_4s)
cobalt_4s_split = AnalyticalSplit(cobalt_4s, split_norm=0.15)
CobaltBasis = BasisSet(
element=PeriodicTable.Cobalt,
orbitals=[ cobalt_3d , cobalt_4s , cobalt_3d_split , cobalt_4s_split , cobalt_4s_polarization ],
occupations=[ 7.0 , 2.0 , 0.0 , 0.0 , 0.0],
hubbard_u=[ 4.1 , 0.0 , 4.1 , 0.0 , 0.0]*eV,
filling_method=SphericalSymmetric,
pseudopotential=NormConservingPseudoPotential("normconserving/CO.GGAPBE.zip"),
)
cobalt_tag1_3d = ConfinedOrbital(
principal_quantum_number=3,
angular_momentum=2,
radial_cutoff_radius=4.07498342334*Bohr,
confinement_start_radius=3.25998673867*Bohr,
additional_charge=0,
confinement_strength=24.5399771266*Hartree,
confinement_power=1,
radial_step_size=0.001*Bohr,
)
cobalt_tag1_3d_split = AnalyticalSplit(cobalt_tag1_3d, split_norm=0.15)
cobalt_tag1_4s = ConfinedOrbital(
principal_quantum_number=4,
angular_momentum=0,
radial_cutoff_radius=6.93481368132*Bohr,
confinement_start_radius=5.54785094506*Bohr,
additional_charge=0,
confinement_strength=14.4199980844*Hartree,
confinement_power=1,
radial_step_size=0.001*Bohr,
)
cobalt_tag1_4s_polarization = PolarizationOrbital(cobalt_tag1_4s)
cobalt_tag1_4s_split = AnalyticalSplit(cobalt_tag1_4s, split_norm=0.15)
Tag1_CobaltBasis = BasisSet(
element=PeriodicTable.Cobalt,
orbitals=[ cobalt_tag1_3d , cobalt_tag1_4s , cobalt_tag1_3d_split , cobalt_tag1_4s_split , cobalt_tag1_4s_polarization ],
occupations=[ 7.0 , 2.0 , 0.0 , 0.0 , 0.0],
hubbard_u=[ 3.1 , 0.0 , 3.1 , 0.0 , 0.0]*eV,
filling_method=SphericalSymmetric,
pseudopotential=NormConservingPseudoPotential("normconserving/CO.GGAPBE.zip"),
)
basis_set = [
GGABasis.Oxygen_DoubleZetaPolarized,
CobaltBasis,
('cobalt1', Tag1_CobaltBasis ),
]
#----------------------------------------
# Exchange-Correlation
#----------------------------------------
exchange_correlation = SGGAU.PBE
numerical_accuracy_parameters = NumericalAccuracyParameters(
k_point_sampling=(3, 3, 3),
density_mesh_cutoff=80.0*Hartree,
)
iteration_control_parameters = IterationControlParameters(
damping_factor=0.3,
max_steps=200,
tolerance=0.0002,
number_of_history_steps=22,
)
calculator = LCAOCalculator(
basis_set=basis_set,
exchange_correlation=exchange_correlation,
numerical_accuracy_parameters=numerical_accuracy_parameters,
iteration_control_parameters=iteration_control_parameters,
)
bulk_configuration.setCalculator(calculator)
nlprint(bulk_configuration)
bulk_configuration.update()
nlsave('differentu.nc', bulk_configuration)
# -------------------------------------------------------------
# Mulliken population
# -------------------------------------------------------------
mulliken_population = MullikenPopulation(bulk_configuration)
nlsave('differentu.nc', mulliken_population)
nlprint(mulliken_population)
# -------------------------------------------------------------
# Density of states
# -------------------------------------------------------------
density_of_states = DensityOfStates(
configuration=bulk_configuration,
kpoints=MonkhorstPackGrid(5,5,5),
energy_zero_parameter=FermiLevel,
bands_above_fermi_level=None,
)
nlsave('differentu.nc', density_of_states)
nlprint(density_of_states)
I applied different U values for the two Co, with first one was 3.1 and second one 4.1 as presented in the input file. However, it failed with these errors:
Code
+----------------------------------------------------------+
| Bulk Bravais lattice |
+----------------------------------------------------------+
Type:
Rhombohedral
Lattice constants:
a = 5.061381 Ang
b = 5.061381 Ang
c = 5.061381 Ang
Lattice angles:
alpha = 33.557310 deg
beta = 33.557310 deg
gamma = 33.557310 deg
Primitive vectors:
u_1 = 4.132600 2.066300 2.066300 Ang
u_2 = 2.066300 4.132600 2.066300 Ang
u_3 = 2.066300 2.066300 4.132600 Ang
+----------------------------------------------------------+
| Bulk: Cartesian (Angstrom) / fractional |
+----------------------------------------------------------+
4
Bulk
Co -3.712308e-15 -3.712308e-15 -1.653040e-02 0.00200 0.00200 -0.00600
Co 4.132600e+00 4.132600e+00 4.116070e+00 0.50200 0.50200 0.49400
O 2.066300e+00 2.066300e+00 2.066300e+00 0.25000 0.25000 0.25000
O 6.198900e+00 6.198900e+00 6.198900e+00 0.75000 0.75000 0.75000
+------------------------------------------------------------------------------+
| |
| DFT Calculation [Started Thu Sep 17 20:44:47 2015] |
| |
+------------------------------------------------------------------------------+
|--------------------------------------------------|
Calculating Nonlocal Part : ==================================================
|--------------------------------------------------|
Calculating Kinetic Matrix : ==================================================
Traceback (most recent call last):
File ".\zipdir\NL\Calculators\BulkCalculatorInterface.py", line 233, in _update
File ".\zipdir\NL\Calculators\LCAOCalculator\LCAOCalculator.py", line 1121, in scfLoop
File ".\zipdir\NL\Calculators\LCAOCalculator\LCAOCalculator.py", line 654, in scfLoopHamiltonian
File ".\zipdir\NL\Calculators\LCAOCalculator\Builders\AbstractLCAOBuilder.py", line 280, in createHubbardTermCalculator
AttributeError: 'tuple' object has no attribute 'element'
Note: Here, VNL-13.8.1 and VNL-2014.3 were both tested.
I think this is caused by the Tag lines in the py files. After removing the lines, it can run. Hope experts in Quantumwise can help give a solution. Thank you in advance!