valence-labs / mess

MESS: Modern Electronic Structure Simulations
https://valence-labs.github.io/mess/
MIT License
20 stars 2 forks source link

Implement transformations between spherical and cartesian primitive gaussians #19

Open ESEberhard opened 1 month ago

ESEberhard commented 1 month ago

In basis.py it looks a bit like you are adding linearly dependent basis functions for $l>1$ by explicitly adding all cartesian sph

LMN_MAP = {
        0: [(0, 0, 0)],
        1: [(1, 0, 0), (0, 1, 0), (0, 0, 1)],
        2: [(2, 0, 0), (1, 1, 0), (1, 0, 1), (0, 2, 0), (0, 1, 1), (0, 0, 2)],
        3: [(3, 0, 0), (2, 1, 0), (2, 0, 1), (1, 2, 0), (1, 1, 1),
            (1, 0, 2), (0, 3, 0), (0, 2, 1), (0, 1, 2), (0, 0, 3)],
    }

have a look at Cramer's Essentials of Computational Chemistry in the basis set chapter and under functional forms. There exist canonical linear combinations of these: wikipedia

You can find the corresponding coefficients here: https://github.com/sunqm/libcint/blob/master/src/cart2sph.c

This might not be an issue for direct minimization but could become problematic in SCF optimization. not sure, though :)

hatemhelal commented 1 month ago

You are absolutely correct and this is a known issue (but I realize now not documented limitation!) that I was planning to address by implementing the sph<-->cart transformations.