Ejemplo n.º 1
0
class TestKineticEnergyMatrixHydrogen(TestCase):
    def setUp(self):
        hydrogen_basis_1 = MagicMock(contraction=0.15432897,
                                     exponent=3.42525091,
                                     coordinates=(0, 0, 0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=1.794441832218435)
        hydrogen_basis_2 = MagicMock(contraction=0.53532814,
                                     exponent=0.62391373,
                                     coordinates=(0, 0, 0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.5003264923314032)
        hydrogen_basis_3 = MagicMock(contraction=0.44463454,
                                     exponent=0.16885540,
                                     coordinates=(0, 0, 0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.18773545851092535)
        hydrogen_basis_4 = MagicMock(contraction=0.15432897,
                                     exponent=3.42525091,
                                     coordinates=(0, 0, -0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=1.794441832218435)
        hydrogen_basis_5 = MagicMock(contraction=0.53532814,
                                     exponent=0.62391373,
                                     coordinates=(0, 0, -0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.5003264923314032)
        hydrogen_basis_6 = MagicMock(contraction=0.44463454,
                                     exponent=0.16885540,
                                     coordinates=(0, 0, -0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.18773545851092535)

        hydrogen_1 = MagicMock(primitive_gaussian_array=[
            hydrogen_basis_1, hydrogen_basis_2, hydrogen_basis_3
        ],
                               coordinates=(0, 0, -0.7000),
                               integral_exponents=(0, 0, 0),
                               normalisation=1)
        hydrogen_2 = MagicMock(primitive_gaussian_array=[
            hydrogen_basis_4, hydrogen_basis_5, hydrogen_basis_6
        ],
                               coordinates=(0, 0, 0.7000),
                               integral_exponents=(0, 0, 0),
                               normalisation=1)

        basis_set_array = [hydrogen_1, hydrogen_2]

        self.kinetic_energy_integral = KineticEnergyMatrix(basis_set_array)

    def test_method_calculate_returns_the_kinetic_energy_of_hydrogen_1s(self):
        kinetic_energy = self.kinetic_energy_integral.calculate(0, 0)
        testing.assert_approx_equal(kinetic_energy, 0.7600, 4)

    def test_method_calculate_returns_the_kinetic_energy_of_quantum_mechanical_off_diagonal_parts(
            self):
        kinetic_energy = self.kinetic_energy_integral.calculate(0, 1)
        testing.assert_approx_equal(kinetic_energy, 0.2365, 4)
Ejemplo n.º 2
0
    def setUp(self):
        hydrogen_basis_1 = MagicMock(contraction=0.15432897,
                                     exponent=3.42525091,
                                     coordinates=(0, 0, -0.7316),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=1.794441832218435)
        hydrogen_basis_2 = MagicMock(contraction=0.53532814,
                                     exponent=0.62391373,
                                     coordinates=(0, 0, -0.7316),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.5003264923314032)
        hydrogen_basis_3 = MagicMock(contraction=0.44463454,
                                     exponent=0.16885540,
                                     coordinates=(0, 0, -0.7316),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.18773545851092535)

        helium_basis_1 = MagicMock(contraction=0.15432897,
                                   exponent=9.75393461,
                                   coordinates=(0, 0, 0.7316),
                                   integral_exponents=(0, 0, 0),
                                   normalisation=3.9336432656254527)
        helium_basis_2 = MagicMock(contraction=0.53532814,
                                   exponent=1.77669115,
                                   coordinates=(0, 0, 0.7316),
                                   integral_exponents=(0, 0, 0),
                                   normalisation=1.0967787981767012)
        helium_basis_3 = MagicMock(contraction=0.44463454,
                                   exponent=0.48084429,
                                   coordinates=(0, 0, 0.7316),
                                   integral_exponents=(0, 0, 0),
                                   normalisation=0.41154131374122654)

        helium = MagicMock(primitive_gaussian_array=[
            helium_basis_1, helium_basis_2, helium_basis_3
        ],
                           coordinates=(0, 0, -0.7316),
                           integral_exponents=(0, 0, 0),
                           normalisation=1)
        hydrogen = MagicMock(primitive_gaussian_array=[
            hydrogen_basis_1, hydrogen_basis_2, hydrogen_basis_3
        ],
                             coordinates=(0, 0, 0.7316),
                             integral_exponents=(0, 0, 0),
                             normalisation=1)

        basis_set_array = [helium, hydrogen]

        self.kinetic_energy_integral = KineticEnergyMatrix(basis_set_array)
Ejemplo n.º 3
0
    def setUp(self):
        hydrogen_basis_1 = MagicMock(contraction=0.15432897,
                                     exponent=3.42525091,
                                     coordinates=(0, 0, 0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=1.794441832218435)
        hydrogen_basis_2 = MagicMock(contraction=0.53532814,
                                     exponent=0.62391373,
                                     coordinates=(0, 0, 0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.5003264923314032)
        hydrogen_basis_3 = MagicMock(contraction=0.44463454,
                                     exponent=0.16885540,
                                     coordinates=(0, 0, 0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.18773545851092535)
        hydrogen_basis_4 = MagicMock(contraction=0.15432897,
                                     exponent=3.42525091,
                                     coordinates=(0, 0, -0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=1.794441832218435)
        hydrogen_basis_5 = MagicMock(contraction=0.53532814,
                                     exponent=0.62391373,
                                     coordinates=(0, 0, -0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.5003264923314032)
        hydrogen_basis_6 = MagicMock(contraction=0.44463454,
                                     exponent=0.16885540,
                                     coordinates=(0, 0, -0.7000),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.18773545851092535)

        hydrogen_1 = MagicMock(primitive_gaussian_array=[
            hydrogen_basis_1, hydrogen_basis_2, hydrogen_basis_3
        ],
                               coordinates=(0, 0, -0.7000),
                               integral_exponents=(0, 0, 0),
                               normalisation=1)
        hydrogen_2 = MagicMock(primitive_gaussian_array=[
            hydrogen_basis_4, hydrogen_basis_5, hydrogen_basis_6
        ],
                               coordinates=(0, 0, 0.7000),
                               integral_exponents=(0, 0, 0),
                               normalisation=1)

        basis_set_array = [hydrogen_1, hydrogen_2]

        self.kinetic_energy_integral = KineticEnergyMatrix(basis_set_array)
Ejemplo n.º 4
0
 def __init__(self, nuclei_array, basis_set_array, electrons, symmetry,
              processes):
     self.scf_method = None
     self.nuclei_array = nuclei_array
     self.basis_set_array = basis_set_array
     self.electrons = electrons
     self.symmetry = symmetry
     self.orbital_overlap = OrbitalOverlapMatrix(basis_set_array).create()
     self.kinetic_energy = KineticEnergyMatrix(basis_set_array).create()
     self.nuclear_attraction = NuclearAttractionMatrix(
         basis_set_array, nuclei_array).create()
     self.core_hamiltonian = self.kinetic_energy + self.nuclear_attraction
     self.linear_algebra = LinearAlgebra(self.orbital_overlap)
     print(
         '\n*************************************************************************************************'
     )
     print('\nMATRICES\n')
     print('\nORBITAL OVERLAP MATRIX\n{}'.format(self.orbital_overlap))
     print('\nKINETIC ENERGY MATRIX\n{}'.format(self.kinetic_energy))
     print('\nNUCLEAR POTENTIAL ENERGY MATRIX\n{}'.format(
         self.nuclear_attraction))
     print('\nCORE HAMILTONIAN MATRIX\n{}'.format(self.core_hamiltonian))
     print('\nBEGIN TWO ELECTRON REPULSION CALCULATION')
     start_repulsion = time.clock()
     self.repulsion = TwoElectronRepulsionMatrixOS(
         self.basis_set_array, self.symmetry,
         processes).create_repulsion_matrix()
     print('TIME TAKEN: ' + str(time.clock() - start_repulsion) + 's\n')
     print(
         '\n*************************************************************************************************'
     )
Ejemplo n.º 5
0
class TestKineticEnergyMatrixHeHCation(TestCase):
    def setUp(self):
        hydrogen_basis_1 = MagicMock(contraction=0.15432897,
                                     exponent=3.42525091,
                                     coordinates=(0, 0, -0.7316),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=1.794441832218435)
        hydrogen_basis_2 = MagicMock(contraction=0.53532814,
                                     exponent=0.62391373,
                                     coordinates=(0, 0, -0.7316),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.5003264923314032)
        hydrogen_basis_3 = MagicMock(contraction=0.44463454,
                                     exponent=0.16885540,
                                     coordinates=(0, 0, -0.7316),
                                     integral_exponents=(0, 0, 0),
                                     normalisation=0.18773545851092535)

        helium_basis_1 = MagicMock(contraction=0.15432897,
                                   exponent=9.75393461,
                                   coordinates=(0, 0, 0.7316),
                                   integral_exponents=(0, 0, 0),
                                   normalisation=3.9336432656254527)
        helium_basis_2 = MagicMock(contraction=0.53532814,
                                   exponent=1.77669115,
                                   coordinates=(0, 0, 0.7316),
                                   integral_exponents=(0, 0, 0),
                                   normalisation=1.0967787981767012)
        helium_basis_3 = MagicMock(contraction=0.44463454,
                                   exponent=0.48084429,
                                   coordinates=(0, 0, 0.7316),
                                   integral_exponents=(0, 0, 0),
                                   normalisation=0.41154131374122654)

        helium = MagicMock(primitive_gaussian_array=[
            helium_basis_1, helium_basis_2, helium_basis_3
        ],
                           coordinates=(0, 0, -0.7316),
                           integral_exponents=(0, 0, 0),
                           normalisation=1)
        hydrogen = MagicMock(primitive_gaussian_array=[
            hydrogen_basis_1, hydrogen_basis_2, hydrogen_basis_3
        ],
                             coordinates=(0, 0, 0.7316),
                             integral_exponents=(0, 0, 0),
                             normalisation=1)

        basis_set_array = [helium, hydrogen]

        self.kinetic_energy_integral = KineticEnergyMatrix(basis_set_array)

    def test_method_calculate_returns_the_kinetic_energy_of_helium_1s(self):
        kinetic_energy = self.kinetic_energy_integral.calculate(0, 0)
        testing.assert_approx_equal(kinetic_energy, 2.1643, 5)

    def test_method_calculate_returns_the_kinetic_energy_of_quantum_mechanical_off_diagonal_parts(
            self):
        kinetic_energy = self.kinetic_energy_integral.calculate(0, 1)
        testing.assert_approx_equal(kinetic_energy, 0.167, 3)

    def test_method_calculate_returns_the_kinetic_energy_of_hydrogen_1s(self):
        kinetic_energy = self.kinetic_energy_integral.calculate(1, 1)
        testing.assert_approx_equal(kinetic_energy, 0.7600, 4)