Skip to content

Latest commit

 

History

History
72 lines (50 loc) · 4.68 KB

about.md

File metadata and controls

72 lines (50 loc) · 4.68 KB

About

The code contained in this repository solves the following wavefunction which describes the movement of a radial particle. It's a Schrödinger's equation that finds the molecule states when the nuclei and electrons are in specific positions.

Where:

  • 's value is 1.
  • is the reduced mass of the system.
  • is the current grid point.
  • is the molecule's rotational number.
  • is the potential energy curve.
  • is the .
  • are the rotational energies that appear in the code as rovib_energies(rot,j) = eigenvalues(j).

Analyzing the equation

In order to understand this equation, we first analyze the following:

Movement

This the kinetic energy solved numerically with the DVR subroutine, which takes into account a one-dimensional quantum system where is restricted to a given interval as stated in [ paper ].

Rotation

This takes care of the rotational part of our equation and is equivalent to the following Fortran code inside rovib.f90: NN*(NN+1.d0)/(2.d0*mass*grid(i)*grid(i).

Vibration

This is, as stated earlier, the potential energy curve which is provided in the LiCs_PEC.in file.

How it works

Potential Energy Curve

There should be a file called [molecule]_PEC.in in the same folder as the rovib.f90 file, where [molecule] must be replaced with the molecule name. This file must have two columns: , which should be equally spaced, and the corresponding for each one of those values.

The Potential Energy Curve is a required input for our code. As an example, we have included the LiCs_PEC.in file which contains these two columns for a LiCs molecule.

[ figure ]

DVR matrix subroutine

By doing DVR, we numerically obtain the energy of our molecule's Hamiltonian . Following [ paper ]'s Appendix A, which goes through calculating a simple generic DVR step by step, we achieve the following:

with given .

In our subroutine, we obtain a matrix using this formula, where and are the matrix's rows and columns respectively. When , we're positioned over our matrix's diagional, where the rotational and electronic energy are added as follows:

hamiltonian(i,i) = (0.5d0/m)*(step**(-2)) * (pi*pi/3.d0 - 0.5d0/dble(i*i)) + potential(i)

For the non-diagonal elements where , only kinetic terms are stored:

hamiltonian(i,j) = (0.5d0/m)*(step**(-2)) * (2.d0/(dble(i-j)**2)-2.d0/(dble(i+j)**2)) * (-1.d0)**(i-j)

Variables used in this subroutine:

  • NN is , the rotational number of the molecule, which must be a positive number from 0 onwards.
  • NGP are the grid points that define our Hamiltonian's size.