![]() |
(git:b77b4be)
|
#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.
Functions | |
void | libgrpp_init () |
void | libgrpp_finalize () |
int | libgrpp_is_initialized () |
libgrpp_potential_t * | libgrpp_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_t * | libgrpp_shrink_potential (libgrpp_potential_t *src_potential) |
libgrpp_potential_t * | libgrpp_shrink_potential_n0 (libgrpp_potential_t *src_potential) |
libgrpp_shell_t * | libgrpp_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_t * | libgrpp_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_t * | libgrpp_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) |
anonymous enum |
|
extern |
thread-safe initialization
Definition at line 25 of file grpp_init_finalize.c.
|
extern |
thread-safe finalization
Definition at line 42 of file grpp_init_finalize.c.
|
extern |
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.
void libgrpp_delete_potential | ( | libgrpp_potential_t * | potential | ) |
double libgrpp_potential_value | ( | libgrpp_potential_t * | potential, |
double | r | ||
) |
libgrpp_potential_t * libgrpp_shrink_potential | ( | libgrpp_potential_t * | src_potential | ) |
Definition at line 97 of file grpp_potential.c.
libgrpp_potential_t * libgrpp_shrink_potential_n0 | ( | libgrpp_potential_t * | src_potential | ) |
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.
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.
void libgrpp_delete_shell | ( | libgrpp_shell_t * | shell | ) |
destructor for the shell object
Definition at line 103 of file grpp_shell.c.
int * libgrpp_generate_shell_cartesians | ( | int | L | ) |
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.
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.
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.
libgrpp_grpp_t * libgrpp_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 * | grpp | ) |
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.
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.
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.
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.
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:
See libgrpp.h for the definition of the libgrpp_grpp_t structure.
Definition at line 33 of file grpp_full_grpp_integrals.c.
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.
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.
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.
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 | ||
) |
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.
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.