# DFT to MLFT CreateAtomicIndicesDict function

asked by Ruiwen Xie (2022/02/03 16:05)

Dear Quanty developer,

In the example given for CrF4 regarding DFT to MLFT part,

Index, NFermi = CreateAtomicIndicesDict({"Cr_3d","Ligand_d","Ligand_p"},{{"Ligand",{"Ligand_d","Ligand_p"}}})

My question is, how should I define more than one ligand d orbitals for clusters with even lower symmetry?

Thanks a lot for your time!

Best Regards, Ruiwen Xie

, 2022/02/17 06:14

Hello Ruiwen,

You can define more than two ligand d orbitals pretty quickly. I have attached a snippet of some example code that is similar to the CrF4 DFT to MLFT tutorial below. You can find more information about the CreateAtomicIndicesDict function within the Quanty documentation, but you can create the indices for additional ligand d orbitals by just adding a new name with “d” as the last character.

   HDFTLarge, ClusterTB = CreateClusterHamiltonian(TB, {"open", NewCluster},  {{"AddSpin",true}})
tri, T2 = BlockBandDiagonalize(OperatorToMatrix(HDFTLarge),10, {{"NTri", 3}})
HDFT = Rotate(HDFTLarge, T2)

This part only grabs the Cr d, and the first two Ligand d shells (Ntri set to 3) to block band diagonalize. You can change this depending on how many ligand orbitals you want to include in your calculation.

Now we want to group the ligand orbitals together. Create a new index object (first argument is a list of all orbitals, the second argument groups the three orbitals). This can be done for adding orbitals onto your transition metal as well, such as a 2p or 3p shell.

   Index, NFermi = CreateAtomicIndicesDict({"Cr_3d","Ligand1_d","Ligand2_d"}, {{"Ligand",{"Ligand1_d","Ligand2_d"}}})
HDFT.NF = NFermi
, 2022/02/17 19:01

Thanks a lot Charles! Now my script is working.