MPI-SCATCI  2.0
An MPI version of SCATCI
orbital_module Module Reference

Target CI Hamiltonian module. More...

Data Types

type  orbitaltable
 This class generates the molecular and spin orbitals, stores them and generates symblic elements from determinants. More...
 
type  spinorbital
 This type holds a single spin orbital. More...
 

Functions/Subroutines

subroutine initialize_table (this, nsrb, norb, symtype, nsym, positron_flag)
 Basic initialization of the data structure. More...
 
subroutine construct_table (this, num_orbital_target_sym, num_orbital_target_sym_dinf, num_orbitals, num_elec_orbitals, num_orbitals_congen)
 Define all spin-orbitals. More...
 
subroutine compute_electron_index (this, num_electrons, reference_determinants)
 Assign electrons to reference spin-orbitals. More...
 
integer function check_max_mcon_in_determinants (this, n, determinants)
 
subroutine evaluate_ijkl_and_coeffs (this, dtrs, coeff, symmetry_type, symbol, flag)
 This compares the determinants and generates the proper coefficents and ijklm values needed for the symbols. More...
 
subroutine evaluate_case_one (this, p, r, nsfa, nsfb, mla, mlb, coeff, symbol)
 
subroutine evaluate_case_two (this, p, q, nsfa, nsfb, mla, mlb, coeff, symbol)
 
subroutine evaluate_case_three (this, p, q, nsfa, nsfb, mla, mlb, coeff, symbol)
 
subroutine evaluate_case_other (this, p, q, r, s, mla, ms, coeff, symbol)
 
integer function get_orbital_number (this, spin_orbital)
 Simple function to get orbital number for a specific spin orbital. More...
 
integer function get_spin (this, spin_orbital)
 Simple function to get orbital number for a specific spin orbital. More...
 
integer function get_gerude (this, spin_orbital)
 
integer function get_electron_number (this, spin_orbital)
 
integer function get_minimum_mcon (this, determinants)
 
integer function get_mcon (this, spin_orbital)
 
integer function get_two_minimum_mcon (this, determinant_one, determinant_two)
 
integer function add_positron (this, determinants, ia, ib)
 

Detailed Description

Target CI Hamiltonian module.

Authors
A Al-Refaie
Date
2017

This module handles construction of the spin orbital table and of generating symbolic elements from determinants

Note
01/02/2017 - Ahmed Al-Refaie: Initial revision.
16/01/2019 - Jakub Benda: Unifom coding style and expanded documentation.

Function/Subroutine Documentation

◆ add_positron()

integer function orbital_module::add_positron ( class(orbitaltable), intent(in)  this,
integer, dimension(4), intent(in)  determinants,
integer, intent(in)  ia,
integer, intent(in)  ib 
)
private

Definition at line 584 of file Orbital_module.f90.

◆ check_max_mcon_in_determinants()

integer function orbital_module::check_max_mcon_in_determinants ( class(orbitaltable), intent(inout)  this,
integer, intent(in)  n,
integer, dimension(:), intent(in)  determinants 
)
private

Definition at line 212 of file Orbital_module.f90.

◆ compute_electron_index()

subroutine orbital_module::compute_electron_index ( class(orbitaltable), intent(inout)  this,
integer, intent(in)  num_electrons,
integer, dimension(num_electrons), intent(in)  reference_determinants 
)
private

Assign electrons to reference spin-orbitals.

Authors
A Al-Refaie
Date
2017

Assign consecutive electron index to all stored spin-orbitals of the reference determinant.

Definition at line 198 of file Orbital_module.f90.

◆ construct_table()

subroutine orbital_module::construct_table ( class(orbitaltable), intent(inout)  this,
integer, dimension(this % num_symmetries), intent(in)  num_orbital_target_sym,
integer, dimension(this % num_symmetries), intent(in)  num_orbital_target_sym_dinf,
integer, dimension(this % num_symmetries), intent(in)  num_orbitals,
integer, dimension(this % num_symmetries), intent(in)  num_elec_orbitals,
integer, dimension(this % num_symmetries), intent(in)  num_orbitals_congen 
)
private

Define all spin-orbitals.

Authors
A Al-Refaie
Date
2017

Assumes that initialize_table has been called before.

Sets all attributes of the individual spin-orbital data structures. This is actually a simple wrapper around the original SCATCI subroutines MKORBS and PMKORBS, where the construction of the spin-orbitals is carried out.

On exit from this subroutine, all spin-orbitals contained in this type have correctly defined attributes (quantum numbers).

Definition at line 155 of file Orbital_module.f90.

◆ evaluate_case_one()

subroutine orbital_module::evaluate_case_one ( class(orbitaltable), intent(inout)  this,
integer, intent(in)  p,
integer, intent(in)  r,
integer, intent(in)  nsfa,
integer, intent(in)  nsfb,
integer, intent(in)  mla,
integer, intent(in)  mlb,
real(wp), intent(in)  coeff,
class(symbolicelementvector symbol 
)
private

Definition at line 341 of file Orbital_module.f90.

◆ evaluate_case_other()

subroutine orbital_module::evaluate_case_other ( class(orbitaltable), intent(inout)  this,
integer, intent(in)  p,
integer, intent(in)  q,
integer, intent(in)  r,
integer, intent(in)  s,
integer, intent(in)  mla,
integer, intent(in)  ms,
real(wp), intent(in)  coeff,
class(symbolicelementvector symbol 
)
private

Definition at line 446 of file Orbital_module.f90.

◆ evaluate_case_three()

subroutine orbital_module::evaluate_case_three ( class(orbitaltable), intent(inout)  this,
integer, intent(in)  p,
integer, intent(in)  q,
integer, intent(in)  nsfa,
integer, intent(in)  nsfb,
integer, intent(in)  mla,
integer, intent(in)  mlb,
real(wp), intent(in)  coeff,
class(symbolicelementvector symbol 
)
private

Definition at line 411 of file Orbital_module.f90.

◆ evaluate_case_two()

subroutine orbital_module::evaluate_case_two ( class(orbitaltable), intent(inout)  this,
integer, intent(in)  p,
integer, intent(in)  q,
integer, intent(in)  nsfa,
integer, intent(in)  nsfb,
integer, intent(in)  mla,
integer, intent(in)  mlb,
real(wp), intent(in)  coeff,
class(symbolicelementvector symbol 
)
private

Definition at line 376 of file Orbital_module.f90.

◆ evaluate_ijkl_and_coeffs()

subroutine orbital_module::evaluate_ijkl_and_coeffs ( class(orbitaltable), intent(inout)  this,
integer, dimension(4), intent(in)  dtrs,
real(wp), intent(in)  coeff,
integer, intent(in)  symmetry_type,
class(symbolicelementvector symbol,
integer, intent(in)  flag 
)
private

This compares the determinants and generates the proper coefficents and ijklm values needed for the symbols.

Definition at line 228 of file Orbital_module.f90.

◆ get_electron_number()

integer function orbital_module::get_electron_number ( class(orbitaltable), intent(in)  this,
integer, intent(in)  spin_orbital 
)
private

Definition at line 530 of file Orbital_module.f90.

◆ get_gerude()

integer function orbital_module::get_gerude ( class(orbitaltable), intent(in)  this,
integer, intent(in)  spin_orbital 
)
private

Definition at line 515 of file Orbital_module.f90.

◆ get_mcon()

integer function orbital_module::get_mcon ( class(orbitaltable), intent(in)  this,
integer, intent(in)  spin_orbital 
)
private

Definition at line 560 of file Orbital_module.f90.

◆ get_minimum_mcon()

integer function orbital_module::get_minimum_mcon ( class(orbitaltable), intent(in)  this,
integer, dimension(4), intent(in)  determinants 
)
private

Definition at line 545 of file Orbital_module.f90.

◆ get_orbital_number()

integer function orbital_module::get_orbital_number ( class(orbitaltable), intent(in)  this,
integer, intent(in)  spin_orbital 
)
private

Simple function to get orbital number for a specific spin orbital.

Definition at line 483 of file Orbital_module.f90.

◆ get_spin()

integer function orbital_module::get_spin ( class(orbitaltable), intent(in)  this,
integer, intent(in)  spin_orbital 
)
private

Simple function to get orbital number for a specific spin orbital.

Definition at line 500 of file Orbital_module.f90.

◆ get_two_minimum_mcon()

integer function orbital_module::get_two_minimum_mcon ( class(orbitaltable), intent(in)  this,
integer, intent(in)  determinant_one,
integer, intent(in)  determinant_two 
)
private

Definition at line 575 of file Orbital_module.f90.

◆ initialize_table()

subroutine orbital_module::initialize_table ( class(orbitaltable), intent(inout)  this,
integer, intent(in)  nsrb,
integer, intent(in)  norb,
integer, intent(in)  symtype,
integer, intent(in)  nsym,
integer, intent(in)  positron_flag 
)
private

Basic initialization of the data structure.

Authors
A Al-Refaie
Date
2017

Stores given arguments and allocates memory for all spin-orbitals.

Parameters
[in,out]thisOrbital object to update.
[in]nsrbNumber of spin-orbitals.
[in]norbNumber of orbitals.
[in]symtypeSymmetry type (group class). Expects named constant from consts_mpi_ci.
[in]nsymNumber of symmetries (irreducible representations).
[in]positron_flagNon-zero value indicates positron.

Definition at line 115 of file Orbital_module.f90.