(git:ed6f26b)
Loading...
Searching...
No Matches
libgrpp.h
Go to the documentation of this file.
1/*----------------------------------------------------------------------------*/
2/* CP2K: A general program to perform molecular dynamics simulations */
3/* Copyright 2000-2025 CP2K developers group <https://cp2k.org> */
4/* */
5/* SPDX-License-Identifier: MIT */
6/*----------------------------------------------------------------------------*/
7
8/*
9 * libgrpp - a library for the evaluation of integrals over
10 * generalized relativistic pseudopotentials.
11 *
12 * Copyright (C) 2021-2023 Alexander Oleynichenko
13 */
14
15#ifndef LIBGRPP_LIBGRPP_H
16#define LIBGRPP_LIBGRPP_H
17
18#include "grpp_parameters.h"
19#include "libgrpp_types.h"
20
21/*
22 * other integrals
23 */
24
25#include "grpp_kinetic.h"
26#include "grpp_momentum.h"
27#include "grpp_overlap.h"
29
30/*
31 * models of nuclear charge density distribution
32 */
33
34#include "grpp_nuclear_models.h"
35
36extern void libgrpp_init();
37extern void libgrpp_finalize();
38extern int libgrpp_is_initialized();
39
40libgrpp_potential_t *libgrpp_new_potential(int L, int J, int num_primitives,
41 int *powers, double *coeffs,
42 double *alpha);
43
45
46double libgrpp_potential_value(libgrpp_potential_t *potential, double r);
47
50
53
54libgrpp_shell_t *libgrpp_new_shell(double *origin, int L, int num_primitives,
55 double *coeffs, double *alpha);
56
58
60
62
64
66
68
70
73
76
79
82 libgrpp_shell_t *oc_shell);
83
85
86/*
87 * integrators: pseudopotential
88 */
89
91 double *rpp_origin, libgrpp_potential_t *potential,
92 double *matrix);
93
95 double *rpp_origin, libgrpp_potential_t *potential,
96 double *matrix);
97
99 libgrpp_shell_t *shell_B, double *rpp_origin,
100 libgrpp_potential_t *potential,
101 double *so_x_matrix, double *so_y_matrix,
102 double *so_z_matrix);
103
105 libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *rpp_origin,
106 int num_oc_shells, libgrpp_potential_t **oc_potentials,
107 libgrpp_shell_t **oc_shells, double *arep, double *esop_x, double *esop_y,
108 double *esop_z);
109
111 libgrpp_shell_t *shell_B,
112 libgrpp_grpp_t *grpp_operator,
113 double *grpp_origin, double *arep_matrix,
114 double *so_x_matrix, double *so_y_matrix,
115 double *so_z_matrix);
116
117/*
118 * gradients of pseudopotential matrix elements
119 * with respect to nuclear coordinates
120 */
121
123 libgrpp_shell_t *shell_B,
124 double *grpp_origin,
125 libgrpp_potential_t *potential,
126 double *point_3d, double **grad_arep);
127
129 libgrpp_shell_t *shell_B,
130 double *grpp_origin,
131 libgrpp_potential_t *potential,
132 double *point_3d, double **grad_arep);
133
135 libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *grpp_origin,
136 libgrpp_potential_t *potential, double *point_3d, double **grad_so_x,
137 double **grad_so_y, double **grad_so_z);
138
140 libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *rpp_origin,
141 int num_oc_shells, libgrpp_potential_t **oc_potentials,
142 libgrpp_shell_t **oc_shells, double *point_3d, double **grad_arep,
143 double **grad_so_x, double **grad_so_y, double **grad_so_z);
144
146 libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B,
147 libgrpp_grpp_t *grpp_operator, double *grpp_origin, double *point_3d,
148 double **grad_arep, double **grad_so_x, double **grad_so_y,
149 double **grad_so_z);
150
151/*
152 * integrator for nuclear attraction integrals
153 */
154
155enum {
163
165 libgrpp_shell_t *shell_B,
166 double *charge_origin, int charge,
167 int nuclear_model,
168 double *model_params,
169 double *coulomb_matrix);
170
172 libgrpp_shell_t *shell_B,
173 double *charge_origin,
174 int charge,
175 double *coulomb_matrix);
176
178 libgrpp_shell_t *shell_B,
179 double *charge_origin,
180 int charge, double r_rms,
181 double *coulomb_matrix);
182
184 libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *charge_origin,
185 int charge, double r_rms, double *coulomb_matrix);
186
188 libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *charge_origin,
189 int charge, double fermi_param_c, double fermi_param_a,
190 double *coulomb_matrix);
191
193 libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *charge_origin,
194 int charge, double param_c, double param_a, double param_k,
195 double *coulomb_matrix);
196
197#endif // LIBGRPP_LIBGRPP_H
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_init()
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)
libgrpp_grpp_t * libgrpp_new_grpp()
Definition grpp.c:21
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_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_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_grpp_add_spin_orbit_potential(libgrpp_grpp_t *grpp, libgrpp_potential_t *pot)
Definition grpp.c:44
int libgrpp_get_shell_size(libgrpp_shell_t *shell)
Definition grpp_shell.c:98
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)
double libgrpp_potential_value(libgrpp_potential_t *potential, double r)
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_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_delete_potential(libgrpp_potential_t *potential)
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_grpp_add_outercore_potential(libgrpp_grpp_t *grpp, libgrpp_potential_t *pot, libgrpp_shell_t *oc_shell)
Definition grpp.c:54
libgrpp_shell_t * libgrpp_new_shell(double *origin, int L, int num_primitives, double *coeffs, double *alpha)
Definition grpp_shell.c:32
void libgrpp_delete_shell(libgrpp_shell_t *shell)
Definition grpp_shell.c:103
void libgrpp_shell_mult_normcoef(libgrpp_shell_t *shell)
Definition grpp_shell.c:87
libgrpp_shell_t * libgrpp_shell_deep_copy(libgrpp_shell_t *src_shell)
Definition grpp_shell.c:57
int * libgrpp_generate_shell_cartesians(int L)
Definition grpp_shell.c:110
void libgrpp_delete_grpp(libgrpp_grpp_t *)
Definition grpp.c:69
libgrpp_potential_t * libgrpp_shrink_potential_n0(libgrpp_potential_t *src_potential)
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)
libgrpp_potential_t * libgrpp_shrink_potential(libgrpp_potential_t *src_potential)
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_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_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_finalize()
void libgrpp_grpp_add_averaged_potential(libgrpp_grpp_t *grpp, libgrpp_potential_t *pot)
Definition grpp.c:34
@ LIBGRPP_NUCLEAR_MODEL_POINT_CHARGE
Definition libgrpp.h:156
@ LIBGRPP_NUCLEAR_MODEL_CHARGED_BALL
Definition libgrpp.h:157
@ LIBGRPP_NUCLEAR_MODEL_FERMI
Definition libgrpp.h:159
@ LIBGRPP_NUCLEAR_MODEL_FERMI_BUBBLE
Definition libgrpp.h:160
@ LIBGRPP_NUCLEAR_MODEL_POINT_CHARGE_NUMERICAL
Definition libgrpp.h:161
@ LIBGRPP_NUCLEAR_MODEL_GAUSSIAN
Definition libgrpp.h:158
void libgrpp_shell_shrink(libgrpp_shell_t *shell)
Definition grpp_shell.c:69
libgrpp_potential_t * libgrpp_new_potential(int L, int J, int num_primitives, int *powers, double *coeffs, double *alpha)
void libgrpp_grpp_set_local_potential(libgrpp_grpp_t *grpp, libgrpp_potential_t *pot)
Definition grpp.c:25
int libgrpp_is_initialized()
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_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)