![]() |
(git:b77b4be)
|
#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) |
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,
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.
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.
|
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.
|
static |
Definition at line 281 of file grpp_nuclear_attraction.c.
|
static |
Definition at line 288 of file grpp_nuclear_attraction.c.
|
static |
Definition at line 295 of file grpp_nuclear_attraction.c.
|
static |
Definition at line 303 of file grpp_nuclear_attraction.c.
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.
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.
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.
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.
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.
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.