Author Topic: DOS of five d orbitals  (Read 4407 times)

0 Members and 1 Guest are viewing this topic.

Offline Habib

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: gb
  • Reputation: 0
    • View Profile
DOS of five d orbitals
« on: December 15, 2023, 21:30 »
Hi there,

Can we simulate the density of states (DOS) of the five d orbitals (dxy, dx²-y², dyz, dxz, dz²) of transition metals such as Fe using QuantumATK? I can simulate the DOS of the s, p, d, and f orbitals of an atom but cannot do so separately for dxy, dx²-y², dyz, dxz, dz².

Kind Regards,
Habib

Offline Jahanzaib

  • QuantumATK Guru
  • ****
  • Posts: 103
  • Country: gb
  • Reputation: 3
    • View Profile
Re: DOS of five d orbitals
« Reply #1 on: December 16, 2023, 18:27 »
Yes, you can do in two ways
1) Open it in the DOS Analyzer, select the Iron atom and "d" and spin up or down separated (flipped), then right-click the plot window and choose Export data. Then you can write code to plot it.
2) Start atkpython, then write code and add that lines

# Calculate the DOS spectrum with spin up
dos_Up = dos.evaluate(projection_list=ProjectionList(atoms=[------], elements=[Iron], angular_momenta=[2]), spin=Spin.Up)

# Calculate the DOS spectrum with spin down
dos_Down = dos.evaluate(projection_list=ProjectionList(atoms=[------], elements=[Iron], angular_momenta=[2]), spin=Spin.Down)

Hopeso, it helps you


Offline Habib

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: gb
  • Reputation: 0
    • View Profile
Re: DOS of five d orbitals
« Reply #2 on: December 17, 2023, 22:08 »
Thanks, Jahanzaib,

I mean to split the d orbitals into dxy, dx²-y², dyz, dxz, and dz², similar to the attached example. I am not solely interested in the spin-up and spin-down states of the d orbital of Fe. I am unsure how to use the script you suggested to split the d orbitals into the five 3d orbitals of Fe, considering both spin-up and spin-down states. Could you please provide more details on how to utilize the script for this purpose using the density of states (DOS) calculated in QuantumATK?

Kind Regards,
Habib

Offline Jahanzaib

  • QuantumATK Guru
  • ****
  • Posts: 103
  • Country: gb
  • Reputation: 3
    • View Profile
Re: DOS of five d orbitals
« Reply #3 on: December 18, 2023, 00:31 »
PDOS does the same what you want - for PDOS, you have to select ProjectOnShellsByElement or you can see (https://docs.quantumatk.com/manual/Types/ProjectedDensityOfStates/ProjectedDensityOfStates.html) where you can define the projection of specific atom.

Thank you

Offline Habib

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: gb
  • Reputation: 0
    • View Profile
Re: DOS of five d orbitals
« Reply #4 on: December 18, 2023, 12:27 »
Thanks, Jahanzaib. I will try this, and it looks like it will work. At the moment, I solved this issue with VASP, as I needed the COHP and pCOHP, so I used the same file.

Offline Habib

  • Regular QuantumATK user
  • **
  • Posts: 18
  • Country: gb
  • Reputation: 0
    • View Profile
Re: DOS of five d orbitals dxy, dxz, dyz, dx2-dy2, and dz2
« Reply #5 on: December 20, 2023, 15:49 »
Dear Admin and Colleagues,

I have been attempting to simulate the five 3d orbitals of Fe in LaFeO3—namely, dxy, dxz, dyz, dx2-dy2, and dz2—through spin-polarized DFT+U simulations. I utilized PDOS with the "projections=ProjectOnOrbitalsByElement" setting, and it worked well, producing the DOS of the mentioned orbitals in one spin (refer to the attached file). However, I require both spin-up and spin-down positions. Can you help me to simulate the DOS in both spin?

Additionally, I tried manually adding sub-orbitals for the Fe 3d orbitals in the script (as shown below), but encountered an error as the software does not recognize the azimuthal quantum number.

# Basis Set
#----------------------------------------
iron_3d_dxy = ConfinedOrbital(
    principal_quantum_number=3,
    angular_momentum=2,
    azimuthal_quantum_number=0,
    radial_cutoff_radius=7.117*Bohr,
    confinement_start_radius=5.117*Bohr,
    additional_charge=0,
    confinement_strength=12.5*Hartree,
    confinement_power=2,
    radial_step_size=0.001*Bohr,
)

iron_3d_dxz = ConfinedOrbital(
    principal_quantum_number=3,
    angular_momentum=2,
    azimuthal_quantum_number=1,
    radial_cutoff_radius=7.117*Bohr,
    confinement_start_radius=5.117*Bohr,
    additional_charge=0,
    confinement_strength=12.5*Hartree,
    confinement_power=2,
    radial_step_size=0.001*Bohr,
)

iron_3d_dyz = ConfinedOrbital(
    principal_quantum_number=3,
    angular_momentum=2,
    azimuthal_quantum_number=2,
    radial_cutoff_radius=7.117*Bohr,
    confinement_start_radius=5.117*Bohr,
    additional_charge=0,
    confinement_strength=12.5*Hartree,
    confinement_power=2,
    radial_step_size=0.001*Bohr,
)

iron_3d_dx2_y2 = ConfinedOrbital(
    principal_quantum_number=3,
    angular_momentum=2,
    azimuthal_quantum_number=3,
    radial_cutoff_radius=7.117*Bohr,
    confinement_start_radius=5.117*Bohr,
    additional_charge=0,
    confinement_strength=12.5*Hartree,
    confinement_power=2,
    radial_step_size=0.001*Bohr,
)

iron_3d_dz2 = ConfinedOrbital(
    principal_quantum_number=3,
    angular_momentum=2,
    azimuthal_quantum_number=4,
    radial_cutoff_radius=7.117*Bohr,
    confinement_start_radius=5.117*Bohr,
    additional_charge=0,
    confinement_strength=12.5*Hartree,
    confinement_power=2,
    radial_step_size=0.001*Bohr,
)

iron_4f = ConfinedOrbital(
    principal_quantum_number=4,
    angular_momentum=3,
    radial_cutoff_radius=3.337*Bohr,
    confinement_start_radius=1.337*Bohr,
    additional_charge=0.013,
    confinement_strength=12.5*Hartree,
    confinement_power=2,
    radial_step_size=0.001*Bohr,
)

IronBasis = BasisSet(
    element=PeriodicTable.Iron,
    orbitals=[iron_3s, iron_3p, iron_3d_dxy, iron_3d_dxz, iron_3d_dyz, iron_3d_dx2_y2, iron_3d_dz2, iron_4p, iron_4s_0, iron_4f],
    occupations=[2.0, 6.0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    hubbard_u=[0.0, 0.0, 5.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]*eV,
    dft_half_parameters=Automatic,
    filling_method=SphericalSymmetric,
    onsite_spin_orbit_split=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]*eV,
    pseudopotential=NormConservingPseudoPotential("normconserving/26FE.16.GGAPBE.zip"),
« Last Edit: December 20, 2023, 16:48 by Habib »

Offline Jahanzaib

  • QuantumATK Guru
  • ****
  • Posts: 103
  • Country: gb
  • Reputation: 3
    • View Profile
Re: DOS of five d orbitals
« Reply #6 on: December 20, 2023, 23:02 »
In Quantumatk, we have class called "Projection", where you can define what you need like (https://docs.quantumatk.com/manual/Types/Projection/Projection.html#NL.Analysis.Projection.Projection)

Projection(spin=Spin.Up, atoms=[Iron], l_quantum_numbers=[2]) + Projection(spin=Spin.Down, atoms=[Iron], l_quantum_numbers=[2])

I think it will work, try this