(git:b77b4be)
Loading...
Searching...
No Matches
libgrpp.h File Reference
#include "grpp_parameters.h"
#include "libgrpp_types.h"
#include "grpp_kinetic.h"
#include "grpp_momentum.h"
#include "grpp_overlap.h"
#include "grpp_overlap_gradient.h"
#include "grpp_nuclear_models.h"

Go to the source code of this file.

Enumerations

enum  {
  LIBGRPP_NUCLEAR_MODEL_POINT_CHARGE = 0 , LIBGRPP_NUCLEAR_MODEL_CHARGED_BALL , LIBGRPP_NUCLEAR_MODEL_GAUSSIAN , LIBGRPP_NUCLEAR_MODEL_FERMI ,
  LIBGRPP_NUCLEAR_MODEL_FERMI_BUBBLE , LIBGRPP_NUCLEAR_MODEL_POINT_CHARGE_NUMERICAL
}
 

Functions

void libgrpp_init ()
 
void libgrpp_finalize ()
 
int libgrpp_is_initialized ()
 
libgrpp_potential_tlibgrpp_new_potential (int L, int J, int num_primitives, int *powers, double *coeffs, double *alpha)
 
void libgrpp_delete_potential (libgrpp_potential_t *potential)
 
double libgrpp_potential_value (libgrpp_potential_t *potential, double r)
 
libgrpp_potential_tlibgrpp_shrink_potential (libgrpp_potential_t *src_potential)
 
libgrpp_potential_tlibgrpp_shrink_potential_n0 (libgrpp_potential_t *src_potential)
 
libgrpp_shell_tlibgrpp_new_shell (double *origin, int L, int num_primitives, double *coeffs, double *alpha)
 
int libgrpp_get_shell_size (libgrpp_shell_t *shell)
 
void libgrpp_delete_shell (libgrpp_shell_t *shell)
 
int * libgrpp_generate_shell_cartesians (int L)
 
libgrpp_shell_tlibgrpp_shell_deep_copy (libgrpp_shell_t *src_shell)
 
void libgrpp_shell_shrink (libgrpp_shell_t *shell)
 
void libgrpp_shell_mult_normcoef (libgrpp_shell_t *shell)
 
libgrpp_grpp_tlibgrpp_new_grpp ()
 
void libgrpp_grpp_set_local_potential (libgrpp_grpp_t *grpp, libgrpp_potential_t *pot)
 
void libgrpp_grpp_add_averaged_potential (libgrpp_grpp_t *grpp, libgrpp_potential_t *pot)
 
void libgrpp_grpp_add_spin_orbit_potential (libgrpp_grpp_t *grpp, libgrpp_potential_t *pot)
 
void libgrpp_grpp_add_outercore_potential (libgrpp_grpp_t *grpp, libgrpp_potential_t *pot, libgrpp_shell_t *oc_shell)
 
void libgrpp_delete_grpp (libgrpp_grpp_t *)
 
void libgrpp_type1_integrals (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *rpp_origin, libgrpp_potential_t *potential, double *matrix)
 
void libgrpp_type2_integrals (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *rpp_origin, libgrpp_potential_t *potential, double *matrix)
 
void libgrpp_spin_orbit_integrals (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *rpp_origin, libgrpp_potential_t *potential, double *so_x_matrix, double *so_y_matrix, double *so_z_matrix)
 
void libgrpp_outercore_potential_integrals (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *rpp_origin, int num_oc_shells, libgrpp_potential_t **oc_potentials, libgrpp_shell_t **oc_shells, double *arep, double *esop_x, double *esop_y, double *esop_z)
 
void libgrpp_full_grpp_integrals (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, libgrpp_grpp_t *grpp_operator, double *grpp_origin, double *arep_matrix, double *so_x_matrix, double *so_y_matrix, double *so_z_matrix)
 
void libgrpp_type1_integrals_gradient (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *grpp_origin, libgrpp_potential_t *potential, double *point_3d, double **grad_arep)
 
void libgrpp_type2_integrals_gradient (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *grpp_origin, libgrpp_potential_t *potential, double *point_3d, double **grad_arep)
 
void libgrpp_spin_orbit_integrals_gradient (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *grpp_origin, libgrpp_potential_t *potential, double *point_3d, double **grad_so_x, double **grad_so_y, double **grad_so_z)
 
void libgrpp_outercore_potential_integrals_gradient (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *rpp_origin, int num_oc_shells, libgrpp_potential_t **oc_potentials, libgrpp_shell_t **oc_shells, double *point_3d, double **grad_arep, double **grad_so_x, double **grad_so_y, double **grad_so_z)
 
void libgrpp_full_grpp_integrals_gradient (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, libgrpp_grpp_t *grpp_operator, double *grpp_origin, double *point_3d, double **grad_arep, double **grad_so_x, double **grad_so_y, double **grad_so_z)
 
void libgrpp_nuclear_attraction_integrals (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *charge_origin, int charge, int nuclear_model, double *model_params, double *coulomb_matrix)
 
void libgrpp_nuclear_attraction_integrals_point_charge (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *charge_origin, int charge, double *coulomb_matrix)
 
void libgrpp_nuclear_attraction_integrals_charged_ball (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *charge_origin, int charge, double r_rms, double *coulomb_matrix)
 
void libgrpp_nuclear_attraction_integrals_gaussian_model (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *charge_origin, int charge, double r_rms, double *coulomb_matrix)
 
void libgrpp_nuclear_attraction_integrals_fermi_model (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *charge_origin, int charge, double fermi_param_c, double fermi_param_a, double *coulomb_matrix)
 
void libgrpp_nuclear_attraction_integrals_fermi_bubble_model (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *charge_origin, int charge, double param_c, double param_a, double param_k, double *coulomb_matrix)
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
LIBGRPP_NUCLEAR_MODEL_POINT_CHARGE 
LIBGRPP_NUCLEAR_MODEL_CHARGED_BALL 
LIBGRPP_NUCLEAR_MODEL_GAUSSIAN 
LIBGRPP_NUCLEAR_MODEL_FERMI 
LIBGRPP_NUCLEAR_MODEL_FERMI_BUBBLE 
LIBGRPP_NUCLEAR_MODEL_POINT_CHARGE_NUMERICAL 

Definition at line 155 of file libgrpp.h.

Function Documentation

◆ libgrpp_init()

void libgrpp_init ( )
extern

thread-safe initialization

Definition at line 25 of file grpp_init_finalize.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_finalize()

void libgrpp_finalize ( )
extern

thread-safe finalization

Definition at line 42 of file grpp_init_finalize.c.

Here is the caller graph for this function:

◆ libgrpp_is_initialized()

int libgrpp_is_initialized ( )
extern

Definition at line 37 of file grpp_init_finalize.c.

Here is the caller graph for this function:

◆ libgrpp_new_potential()

libgrpp_potential_t * libgrpp_new_potential ( int  L,
int  J,
int  num_primitives,
int *  powers,
double *  coeffs,
double *  alpha 
)

constructor for the pseudopotential

Definition at line 32 of file grpp_potential.c.

Here is the caller graph for this function:

◆ libgrpp_delete_potential()

void libgrpp_delete_potential ( libgrpp_potential_t potential)

Definition at line 63 of file grpp_potential.c.

Here is the caller graph for this function:

◆ libgrpp_potential_value()

double libgrpp_potential_value ( libgrpp_potential_t potential,
double  r 
)

Definition at line 79 of file grpp_potential.c.

Here is the caller graph for this function:

◆ libgrpp_shrink_potential()

libgrpp_potential_t * libgrpp_shrink_potential ( libgrpp_potential_t src_potential)

Definition at line 97 of file grpp_potential.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_shrink_potential_n0()

libgrpp_potential_t * libgrpp_shrink_potential_n0 ( libgrpp_potential_t src_potential)

◆ libgrpp_new_shell()

libgrpp_shell_t * libgrpp_new_shell ( double *  origin,
int  L,
int  num_primitives,
double *  coeffs,
double *  alpha 
)

constructs new object representing a shell; returns pointer to it.

Definition at line 32 of file grpp_shell.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_get_shell_size()

int libgrpp_get_shell_size ( libgrpp_shell_t shell)

returns number of Cartesian primitives encapsulated inside the shell

Definition at line 98 of file grpp_shell.c.

Here is the caller graph for this function:

◆ libgrpp_delete_shell()

void libgrpp_delete_shell ( libgrpp_shell_t shell)

destructor for the shell object

Definition at line 103 of file grpp_shell.c.

Here is the caller graph for this function:

◆ libgrpp_generate_shell_cartesians()

int * libgrpp_generate_shell_cartesians ( int  L)

Definition at line 110 of file grpp_shell.c.

Here is the caller graph for this function:

◆ libgrpp_shell_deep_copy()

libgrpp_shell_t * libgrpp_shell_deep_copy ( libgrpp_shell_t src_shell)

creates deep copy of the 'libgrpp_shell_t' object

Definition at line 57 of file grpp_shell.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_shell_shrink()

void libgrpp_shell_shrink ( libgrpp_shell_t shell)

removes primitive gaussians (from the contracted function) with zero coefficients

Definition at line 69 of file grpp_shell.c.

Here is the caller graph for this function:

◆ libgrpp_shell_mult_normcoef()

void libgrpp_shell_mult_normcoef ( libgrpp_shell_t shell)

multiplies coefficients of the primitive gaussians by their normalization factors

Definition at line 87 of file grpp_shell.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_new_grpp()

libgrpp_grpp_t * libgrpp_new_grpp ( )

Definition at line 21 of file grpp.c.

Here is the caller graph for this function:

◆ libgrpp_grpp_set_local_potential()

void libgrpp_grpp_set_local_potential ( libgrpp_grpp_t grpp,
libgrpp_potential_t pot 
)

Definition at line 25 of file grpp.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_grpp_add_averaged_potential()

void libgrpp_grpp_add_averaged_potential ( libgrpp_grpp_t grpp,
libgrpp_potential_t pot 
)

Definition at line 34 of file grpp.c.

Here is the caller graph for this function:

◆ libgrpp_grpp_add_spin_orbit_potential()

void libgrpp_grpp_add_spin_orbit_potential ( libgrpp_grpp_t grpp,
libgrpp_potential_t pot 
)

Definition at line 44 of file grpp.c.

Here is the caller graph for this function:

◆ libgrpp_grpp_add_outercore_potential()

void libgrpp_grpp_add_outercore_potential ( libgrpp_grpp_t grpp,
libgrpp_potential_t pot,
libgrpp_shell_t oc_shell 
)

Definition at line 54 of file grpp.c.

Here is the caller graph for this function:

◆ libgrpp_delete_grpp()

void libgrpp_delete_grpp ( libgrpp_grpp_t grpp)

Definition at line 69 of file grpp.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_type1_integrals()

void libgrpp_type1_integrals ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  rpp_origin,
libgrpp_potential_t potential,
double *  matrix 
)

Evaluation of type 1 RPP integrals (scalar-relativistic radially local RPP).

Definition at line 52 of file grpp_type1_integrals.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_type2_integrals()

void libgrpp_type2_integrals ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  rpp_origin,
libgrpp_potential_t potential,
double *  matrix 
)

Evaluation of type 2 RPP integrals (scalar-relativistic semilocal RPP with L-projectors).

Definition at line 39 of file grpp_type2_integrals.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_spin_orbit_integrals()

void libgrpp_spin_orbit_integrals ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  rpp_origin,
libgrpp_potential_t potential,
double *  so_x_matrix,
double *  so_y_matrix,
double *  so_z_matrix 
)

Evaluation of spin-orbit ("type 3") RPP integrals.

The theoretical outline is given in the paper: R. M. Pitzer, N. W. Winter. Spin-orbit (core) and core potential integrals. Int. J. Quantum Chem. 40(6), 773 (1991). doi: 10.1002/qua.560400606 However, the formula on page 776 of Pitzer & Winter is not reproduced in the code exactly.

Definition at line 50 of file grpp_spin_orbit_integrals.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_outercore_potential_integrals()

void libgrpp_outercore_potential_integrals ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  rpp_origin,
int  num_oc_shells,
libgrpp_potential_t **  oc_potentials,
libgrpp_shell_t **  oc_shells,
double *  arep,
double *  esop_x,
double *  esop_y,
double *  esop_z 
)

Calculates non-local contributions to the scalar-relativistic ECP and effective spin-orbit interaction matrices from the outercore (OC) potentials.

Definition at line 82 of file grpp_outercore_integrals.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_full_grpp_integrals()

void libgrpp_full_grpp_integrals ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
libgrpp_grpp_t grpp_operator,
double *  grpp_origin,
double *  arep_matrix,
double *  so_x_matrix,
double *  so_y_matrix,
double *  so_z_matrix 
)

Evaluates integrals over the full GRPP operator consisting of three parts:

  • scalar relativistic (local)
  • scalar relativistic (semi-local)
  • effective spin-orbit (semi-local)
  • outercore potentials (non-local)

See libgrpp.h for the definition of the libgrpp_grpp_t structure.

Definition at line 33 of file grpp_full_grpp_integrals.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_type1_integrals_gradient()

void libgrpp_type1_integrals_gradient ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  grpp_origin,
libgrpp_potential_t potential,
double *  point_3d,
double **  grad_arep 
)

Analytic calculation of gradients of LOCAL potential integrals for a given shell pair with respect to the point 'point_3d'.

Definition at line 77 of file grpp_integrals_gradient.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_type2_integrals_gradient()

void libgrpp_type2_integrals_gradient ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  grpp_origin,
libgrpp_potential_t potential,
double *  point_3d,
double **  grad_arep 
)

Analytic calculation of gradients of SEMI-LOCAL potential integrals for a given shell pair with respect to the point 'point_3d'.

Definition at line 110 of file grpp_integrals_gradient.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_spin_orbit_integrals_gradient()

void libgrpp_spin_orbit_integrals_gradient ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  grpp_origin,
libgrpp_potential_t potential,
double *  point_3d,
double **  grad_so_x,
double **  grad_so_y,
double **  grad_so_z 
)

Analytic calculation of gradients of integrals over the effective spin-orbit operator (potential) for a given shell pair (with respect to the point 'point_3d').

Definition at line 144 of file grpp_integrals_gradient.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_outercore_potential_integrals_gradient()

void libgrpp_outercore_potential_integrals_gradient ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  rpp_origin,
int  num_oc_shells,
libgrpp_potential_t **  oc_potentials,
libgrpp_shell_t **  oc_shells,
double *  point_3d,
double **  grad_arep,
double **  grad_so_x,
double **  grad_so_y,
double **  grad_so_z 
)

Definition at line 182 of file grpp_integrals_gradient.c.

Here is the call graph for this function:

◆ libgrpp_full_grpp_integrals_gradient()

void libgrpp_full_grpp_integrals_gradient ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
libgrpp_grpp_t grpp_operator,
double *  grpp_origin,
double *  point_3d,
double **  grad_arep,
double **  grad_so_x,
double **  grad_so_y,
double **  grad_so_z 
)

Analytic calculation of gradients of GRPP integrals for a given shell pair with respect to the point 'point_3d'. (for the full GRPP operator which includes local, semi-local and non-local parts)

Definition at line 207 of file grpp_integrals_gradient.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_nuclear_attraction_integrals()

void libgrpp_nuclear_attraction_integrals ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  charge_origin,
int  charge,
int  nuclear_model,
double *  model_params,
double *  coulomb_matrix 
)

Calculates nuclear attraction integral between two shells represented by contracted Gaussian functions.

nuclear model should be one of: LIBGRPP_NUCLEAR_MODEL_POINT_CHARGE LIBGRPP_NUCLEAR_MODEL_CHARGED_BALL LIBGRPP_NUCLEAR_MODEL_GAUSSIAN LIBGRPP_NUCLEAR_MODEL_FERMI LIBGRPP_NUCLEAR_MODEL_FERMI_BUBBLE LIBGRPP_NUCLEAR_MODEL_POINT_CHARGE_NUMERICAL

Definition at line 80 of file grpp_nuclear_attraction.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_nuclear_attraction_integrals_point_charge()

void libgrpp_nuclear_attraction_integrals_point_charge ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  charge_origin,
int  charge,
double *  coulomb_matrix 
)

Calculates nuclear attraction integral between two shells represented by contracted Gaussian functions for the electrostatic potential generated by the point charge.

Definition at line 175 of file grpp_nuclear_attraction.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_nuclear_attraction_integrals_charged_ball()

void libgrpp_nuclear_attraction_integrals_charged_ball ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  charge_origin,
int  charge,
double  r_rms,
double *  coulomb_matrix 
)

Calculates nuclear attraction integral between two shells represented by contracted Gaussian functions for the electrostatic potential generated by the charged ball.

r_rms stands for the root mean square radius (in bohrs)

Definition at line 192 of file grpp_nuclear_attraction.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_nuclear_attraction_integrals_gaussian_model()

void libgrpp_nuclear_attraction_integrals_gaussian_model ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  charge_origin,
int  charge,
double  r_rms,
double *  coulomb_matrix 
)

Calculates nuclear attraction integral between two shells represented by contracted Gaussian functions for the electrostatic potential generated by the Gaussian distribution.

r_rms stands for the root mean square radius (in bohrs)

Definition at line 213 of file grpp_nuclear_attraction.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_nuclear_attraction_integrals_fermi_model()

void libgrpp_nuclear_attraction_integrals_fermi_model ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  charge_origin,
int  charge,
double  fermi_param_c,
double  fermi_param_a,
double *  coulomb_matrix 
)

Calculates nuclear attraction integral between two shells represented by contracted Gaussian functions for the electrostatic potential generated by the Fermi distribution.

Model parameters 'c' and 'a' must be given in bohrs.

Definition at line 232 of file grpp_nuclear_attraction.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ libgrpp_nuclear_attraction_integrals_fermi_bubble_model()

void libgrpp_nuclear_attraction_integrals_fermi_bubble_model ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  charge_origin,
int  charge,
double  param_c,
double  param_a,
double  param_k,
double *  coulomb_matrix 
)

Calculates nuclear attraction integral between two shells represented by contracted Gaussian functions for the electrostatic potential generated by the "Fermi + bubble" distribution.

Model parameters 'c' and 'a' must be given in bohrs. The 'k' constant is dimensionless.

Definition at line 254 of file grpp_nuclear_attraction.c.

Here is the call graph for this function:
Here is the caller graph for this function: