BoothGroup / Vayesta

A Python package for wave function-based quantum embedding
Apache License 2.0
32 stars 7 forks source link

Different outcomes for same orbital_filter for anti ferromagnetic Nickel Oxide #178

Open Connorpl opened 1 day ago

Connorpl commented 1 day ago

When using the orbital filter to fragment NiO with an AFM mean field the result of the fragmentation seems to depend on the labelling of the d-orbitals. If I have a d-orbital fragment labelled as

f.add_atomic_fragment([0], orbital_filter=["Ni 3d"])

the fragmentation is complete,

IAO Fragmentation | ----------------- | IAO: computational basis= gth-dzvp-molopt-sr minimal reference basis= gth-szv-molopt-sr (automatically chosen) | Alpha-IAOs: | n(AO)= 78 n(MO)= 78 n(occ-MO)= 24 n(IAO)= 28 | Beta-IAOs: | n(AO)= 78 n(MO)= 78 n(occ-MO)= 24 n(IAO)= 28 | Adding 0 translationally-symmetry related fragments from 10 base fragments | Fragmentation: orthogonal= True, occupied-complete= True, virtual-complete= False | Total number of mean-field electrons over all fragments= 24.00000000 , 24.00000000

but if I replace it with

f.add_atomic_fragment([0], orbital_filter=["Ni 3dxz","Ni 3dxy","Ni 3dyz","Ni 3dx2-y2","Ni 3dz^2"])

then the fragmentation becomes incomplete.

IAO Fragmentation | ----------------- | IAO: computational basis= gth-dzvp-molopt-sr minimal reference basis= gth-szv-molopt-sr (automatically chosen) | Alpha-IAOs: | n(AO)= 78 n(MO)= 78 n(occ-MO)= 24 n(IAO)= 28 | Beta-IAOs: | n(AO)= 78 n(MO)= 78 n(occ-MO)= 24 n(IAO)= 28 | Adding 0 translationally-symmetry related fragments from 10 base fragments | Fragmentation: orthogonal= True, occupied-complete= False, virtual-complete= False | Total number of mean-field electrons over all fragments= 22.90541716 , 22.90541715 [WARNING] | Number of electrons not integer!

I've attached the full scripts below:

UHF_orbital_filter_incomplete.txt UHF_orbital_filter_complete.txt

maxnus commented 1 day ago

Without looking into the code, I would check how the caret character is interpreted - if it's running some regex it may need to be escaped with a backslash.