public static OrbitalDesignation TransformUnderSymmetry(OrbitalDesignation des, Matrix sym)
        {
            switch (des)
            {
            case OrbitalDesignation.s:
                return(OrbitalDesignation.s);

            case OrbitalDesignation.px: return(TransformP(sym[0, 0], sym[0, 1], sym[0, 2]));

            case OrbitalDesignation.py: return(TransformP(sym[1, 0], sym[1, 1], sym[1, 2]));

            case OrbitalDesignation.pz: return(TransformP(sym[2, 0], sym[2, 1], sym[2, 2]));

            case OrbitalDesignation.dxy:
                return(TransformT2g(sym, 0, 1));

            case OrbitalDesignation.dxz:
                return(TransformT2g(sym, 0, 2));

            case OrbitalDesignation.dyz:
                return(TransformT2g(sym, 1, 2));

            case OrbitalDesignation.dz2:
                return(TransformDz2(sym));

            case OrbitalDesignation.dx2y2:
                return(TransformDx2y2(sym));
            }

            return(OrbitalDesignation.none);
        }
        public static OrbitalDesignation TransformUnderSymmetry(OrbitalDesignation des, Matrix sym)
        {
            switch (des)
            {
                case OrbitalDesignation.s:
                    return OrbitalDesignation.s;

                case OrbitalDesignation.px: return TransformP(sym[0, 0], sym[0, 1], sym[0, 2]);
                case OrbitalDesignation.py: return TransformP(sym[1, 0], sym[1, 1], sym[1, 2]);
                case OrbitalDesignation.pz: return TransformP(sym[2, 0], sym[2, 1], sym[2, 2]);

                case OrbitalDesignation.dxy:
                    return TransformT2g(sym, 0, 1);
                case OrbitalDesignation.dxz:
                    return TransformT2g(sym, 0, 2);
                case OrbitalDesignation.dyz:
                    return TransformT2g(sym, 1, 2);
                case OrbitalDesignation.dz2:
                    return TransformDz2(sym);
                case OrbitalDesignation.dx2y2:
                    return TransformDx2y2(sym);
            }

            return OrbitalDesignation.none;
        }