(git:b77b4be)
Loading...
Searching...
No Matches
grpp_nuclear_attraction.c File Reference
#include <assert.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "grpp_norm_gaussian.h"
#include "grpp_nuclear_models.h"
#include "grpp_utils.h"
#include "libgrpp.h"

Go to the source code of this file.

Functions

void libgrpp_evaluate_radially_local_potential_integral_primitive_gaussians (double *A, int n_cart_A, int *cart_list_A, double alpha_A, double *B, int n_cart_B, int *cart_list_B, double alpha_B, double *C, double(*potential)(double r, void *params), void *potential_params, double *matrix)
 
void libgrpp_evaluate_rpp_type1_mmd_n1_primitive_shell_pair (libgrpp_shell_t *shell_A, double alpha_A, libgrpp_shell_t *shell_B, double alpha_B, double *rpp_origin, double rpp_alpha, double *rpp_matrix)
 
static double wrapper_coulomb_potential_point (double r, void *params)
 
static double wrapper_coulomb_potential_ball (double r, void *params)
 
static double wrapper_coulomb_potential_gaussian (double r, void *params)
 
static double wrapper_coulomb_potential_fermi (double r, void *params)
 
static double wrapper_coulomb_potential_fermi_bubble (double r, void *params)
 
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)
 

Function Documentation

◆ libgrpp_evaluate_radially_local_potential_integral_primitive_gaussians()

void libgrpp_evaluate_radially_local_potential_integral_primitive_gaussians ( double *  A,
int  n_cart_A,
int *  cart_list_A,
double  alpha_A,
double *  B,
int  n_cart_B,
int *  cart_list_B,
double  alpha_B,
double *  C,
double(*)(double r, void *params)  potential,
void *  potential_params,
double *  matrix 
)

Calculation of nuclear attraction integrals.

For the point charge nuclear model the recursive Obara-Saika scheme is used to calculate nuclear attraction integrals. For details, see T. Helgaker, P. Jorgensen, J. Olsen, Molecular Electronic-Structure Theory, John Wiley & Sons Ltd, 2000. Chapter 9.10.1, "The Obara-Saika scheme for one-electron Coulomb integrals"

For the other three models,

  • uniformly charged ball
  • Gaussian nucleus
  • Fermi nucleus, the scheme is actually the same as for the type 1 (radially-local) ECP integrals. Electrostatic potential V(r) induced by the finite nuclear charge distribution is integrated numerically on a radial grid.

Evaluation of AO integrals for an arbitrary radially-local operator for the pair of shells constructed from primitive Gaussians.

Definition at line 138 of file grpp_type1_integrals.c.

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

◆ libgrpp_evaluate_rpp_type1_mmd_n1_primitive_shell_pair()

void libgrpp_evaluate_rpp_type1_mmd_n1_primitive_shell_pair ( libgrpp_shell_t shell_A,
double  alpha_A,
libgrpp_shell_t shell_B,
double  alpha_B,
double *  rpp_origin,
double  rpp_alpha,
double *  rpp_matrix 
)

Integrals of the operator: e^{-ar^2}/r

Definition at line 248 of file grpp_type1_mcmurchie_davidson.c.

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

◆ wrapper_coulomb_potential_point()

static double wrapper_coulomb_potential_point ( double  r,
void *  params 
)
static

wrappers for charge distribution functions. are used to provide a unified interface to radially-local potentials. the 'params' argument is unpacked, then the specific routines are invoked.

Definition at line 275 of file grpp_nuclear_attraction.c.

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

◆ wrapper_coulomb_potential_ball()

static double wrapper_coulomb_potential_ball ( double  r,
void *  params 
)
static

Definition at line 281 of file grpp_nuclear_attraction.c.

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

◆ wrapper_coulomb_potential_gaussian()

static double wrapper_coulomb_potential_gaussian ( double  r,
void *  params 
)
static

Definition at line 288 of file grpp_nuclear_attraction.c.

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

◆ wrapper_coulomb_potential_fermi()

static double wrapper_coulomb_potential_fermi ( double  r,
void *  params 
)
static

Definition at line 295 of file grpp_nuclear_attraction.c.

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

◆ wrapper_coulomb_potential_fermi_bubble()

static double wrapper_coulomb_potential_fermi_bubble ( double  r,
void *  params 
)
static

Definition at line 303 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()

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: