Dear Community,
I was wondering for doing a DFT+U calculation with pw.x 7.2 we need to use HubbardStructureData, according to the documentation we need to define

atom_index

atom_manifold

neighbour_index

neighbour_manifold

value

translation

hubbard_type

Since i WONT be using DFT+U+V, does it work by just using the kind or do i need to make a list including each atom of the same kind ?, and i guess if i will be using DFT+U i just use the same index for neighbor_index ?
Can someone share and example of using HubbardStructureData?

Indeed you would need to “duplicate” such information (for the manifold as well), and the translation will be (0,0,0).

If you are interested in only Hubbard U, a simple way could be:

structure = load_node(<PK>) # a StructureData node
hubbard_structure = HubbardStructureData.from_structure(structure)
# Say it contains Fe
hubbard_structure.initialize_onsites_hubbard(
atom_name= 'Fe',
atom_manifold= '3d',
value= 5.0, # in eV
hubbard_type= 'U',
use_kinds= True, # kind sensitive
)
# Equivalently, but atom per atom based, more specific
hubbard_structure.append_hubbard_parameter(
atom_index= 0, # assuming it is the first in hubbard_structure.sites
atom_manifold= '3d',
neighbour_index= 0,
neighbour_manifold= '3d',
value= 5.0, # in eV
translation= (0,0,0), # you can also leave None and it will find the nearest atom
hubbard_type= 'U',
)

The difference is that the first will automatically find for you the indices. For the U case it’s not really important you define all the onsite U. One site is already enough.

Then you can use this as the input structure for the pw.x related work chains.
It should work also with ph.x, but only for atomic projectors, which you can define:

If i may, I will another question (related).
In the past i was using the key “starting_ns_eigenvalue” to set the occupation , in pw.x 7.2 there is also a new keyword Hubbard_occ(ityp,i) , It seems this one is not in the Hubbard Class , i guess if there is also a way to declare like ’ ‘starting_ns_eigenvalue’: [ 99 [1, 1, 3, 3.5],

Indeed it is not in the HubbardStructureData, but we may indeed add it in the future.
Currently, you can still define starting_ns_eigenvalue in parameters.SYSTEM