OpenMCTDHB v2.3
Functions/Subroutines | Variables

modulederivesystemvariables Module Reference

This module contains routines that derive system parameters from the variables read in via input.nml. The module ses the function beta of the asa189 library to compute the number of configurations. This is useful for more than M=2 orbitals. More...

Functions/Subroutines

subroutine get_weight (xi, xf, yi, yf, zi, zf, NDX, NDY, NDZ, Dims, weight)
 This routine gets the integration weight given the position grid. Since we are using an equidistant grid there is only one integration weight. All orbitals are stored in the following form: the value !> of the orbital k at the grid point x_m,y_n,z_l is saved at the position Psi(m+NDX*n+NDX*NDY*l,k) which contains the value of the orbital times the weight, such that the norm of the orbital k is one: norm^2 = Sum_j Psi(j,k)^* Psi(j,k). Thus, the weight is just the square root of the distance (1D) area (2D) volume (3D)!> between grid points.
subroutine get_nConf (NPar, MOrb, nConf)
 This routine computes the total number of configurations (permanents) given the current system parameters NPar and MOrb: binomial(N+M-1,N). The routine uses the binom function of the asa189 library to compute this number. The real value returned by binom is sufficiently accurate as long as the number nConf is less than about approx 10-50 x 10^6 see the file max_MOrb_NPar_parametersd0.1.txt for the largest values of M and N for which the real*8 result differs from an int by less than d=0.1.
subroutine get_nSuperDiags (NPar, MOrb, nSuperDiags)
 This routine computes the number of super diagonals of the Hamiltonian matrix <n|H|n'> depending on the input variable MOrb. Only M=1 and M=2 orbitals are supported. The Hamiltonian matrix can then be build and given to the LAPACK subroutine ZHBMV. For more orbitals it is not a good idea to keep working with band matrix routines, because of the large number of zero elements in them.
subroutine get_totalNoGridPts (NDX, NDY, NDZ, Dims, totalNoGridPts)
 This routine computes the total number of grid points and checks for consistency.
REAL *8 binomial (n, k)
 This function computes the binomial coefficent (N over k) using the beta function. the result is real and the integer is obtained by using NINT(). This way of computing binomial coefficients is very fast, but becomes inaccurate for results greater than dozens of millions. Please see the routine get_nConf and the file max_MOrb_NPar_parametersd0.1 for details.

Variables

REAL *8, save weight

Detailed Description

This module contains routines that derive system parameters from the variables read in via input.nml. The module ses the function beta of the asa189 library to compute the number of configurations. This is useful for more than M=2 orbitals.

Authors:
Kaspar Sakmann (2010)
Since:
(2010)

Function/Subroutine Documentation

REAL*8 modulederivesystemvariables::binomial ( integer,intent(in)  N,
integer,intent(in)  K 
)

This function computes the binomial coefficent (N over k) using the beta function. the result is real and the integer is obtained by using NINT(). This way of computing binomial coefficients is very fast, but becomes inaccurate for results greater than dozens of millions. Please see the routine get_nConf and the file max_MOrb_NPar_parametersd0.1 for details.

Authors:
Kaspar Sakmann (2010)
Since:
(2010)

Definition at line 224 of file modulederivesystemvariables.F90.

Here is the caller graph for this function:

subroutine modulederivesystemvariables::get_nConf ( INTEGER,intent(in)  NPar,
INTEGER,intent(in)  MOrb,
INTEGER,intent(out)  nConf 
)

This routine computes the total number of configurations (permanents) given the current system parameters NPar and MOrb: binomial(N+M-1,N). The routine uses the binom function of the asa189 library to compute this number. The real value returned by binom is sufficiently accurate as long as the number nConf is less than about approx 10-50 x 10^6 see the file max_MOrb_NPar_parametersd0.1.txt for the largest values of M and N for which the real*8 result differs from an int by less than d=0.1.

Authors:
Kaspar Sakmann (2010)
Since:
(2010)

Definition at line 110 of file modulederivesystemvariables.F90.

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine modulederivesystemvariables::get_nSuperDiags ( INTEGER,intent(in)  NPar,
INTEGER,intent(in)  MOrb,
INTEGER,intent(out)  nSuperDiags 
)

This routine computes the number of super diagonals of the Hamiltonian matrix <n|H|n'> depending on the input variable MOrb. Only M=1 and M=2 orbitals are supported. The Hamiltonian matrix can then be build and given to the LAPACK subroutine ZHBMV. For more orbitals it is not a good idea to keep working with band matrix routines, because of the large number of zero elements in them.

Authors:
Kaspar Sakmann (2009)
Since:
(2009)

Definition at line 144 of file modulederivesystemvariables.F90.

Here is the caller graph for this function:

subroutine modulederivesystemvariables::get_totalNoGridPts ( INTEGER,intent(in)  NDX,
INTEGER,intent(in)  NDY,
INTEGER,intent(in)  NDZ,
INTEGER,intent(in)  Dims,
INTEGER,intent(out)  totalNoGridPts 
)

This routine computes the total number of grid points and checks for consistency.

Authors:
Kaspar Sakmann (2007)
Since:
(2007)

Definition at line 182 of file modulederivesystemvariables.F90.

Here is the caller graph for this function:

subroutine modulederivesystemvariables::get_weight ( REAL*8,intent(in)  xi,
REAL*8,intent(in)  xf,
REAL*8,intent(in)  yi,
REAL*8,intent(in)  yf,
REAL*8,intent(in)  zi,
REAL*8,intent(in)  zf,
INTEGER,intent(in)  NDX,
INTEGER,intent(in)  NDY,
INTEGER,intent(in)  NDZ,
INTEGER,intent(in)  Dims,
REAL*8,intent(out)  weight 
)

This routine gets the integration weight given the position grid. Since we are using an equidistant grid there is only one integration weight. All orbitals are stored in the following form: the value !> of the orbital k at the grid point x_m,y_n,z_l is saved at the position Psi(m+NDX*n+NDX*NDY*l,k) which contains the value of the orbital times the weight, such that the norm of the orbital k is one: norm^2 = Sum_j Psi(j,k)^* Psi(j,k). Thus, the weight is just the square root of the distance (1D) area (2D) volume (3D)!> between grid points.

Authors:
Kaspar Sakmann (2007)
Since:
(2007)

Definition at line 29 of file modulederivesystemvariables.F90.

Here is the caller graph for this function:


Variable Documentation

Definition at line 12 of file modulederivesystemvariables.F90.

 All Namespaces Files Functions Variables