// Create a `OrbitalIntegral` instance to store a two-electron molecular // orbital integral data. var orbitalIntegral = new OrbitalIntegral(new[] { 0, 1, 2, 3 }, 0.123); // Create an `OrbitalIntegralHamiltonian` instance to store the orbital integral // terms. var orbitalIntegralHamiltonian = new OrbitalIntegralHamiltonian(); orbitalIntegralHamiltonian.Add(orbitalIntegral); // Convert the orbital integral representation to a fermion // representation. This also requires choosing a convention for // mapping spin orbital indices to integer indices. var fermionHamiltonian = orbitalIntegralHamiltonian.ToFermionHamiltonian(IndexConvention.UpDown); // Alternatively, one can add orbital integrals directly to a fermion Hamiltonian // as follows. This automatically enumerates over all symmetries, and then // orders the `HermitianFermionTerm` instances in canonical order. We will need to // choose an indexing convention as well. fermionHamiltonian.AddRange(orbitalIntegral .ToHermitianFermionTerms(0, IndexConvention.UpDown) .Select(o => (o.Item1, o.Item2.ToDoubleCoeff())));
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter