(git:b77b4be)
Loading...
Searching...
No Matches
grpp_overlap_gradient.c File Reference
#include <stdlib.h>
#include <string.h>
#include "grpp_overlap_gradient.h"
#include "libgrpp.h"
#include "grpp_diff_gaussian.h"
#include "grpp_utils.h"

Go to the source code of this file.

Functions

static void overlap_gradient_diff_bra_contribution (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double **grad, double factor)
 
static void overlap_gradient_diff_bra_overlap_integrals (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double **overlap_down, double **overlap_up, int *cart_size_down, int *cart_size_up)
 
int nlm_to_linear (int *nlm)
 
void libgrpp_overlap_integrals_gradient (libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *point_3d, double **grad)
 
int libgrpp_nlm_to_linear (int *nlm)
 

Function Documentation

◆ overlap_gradient_diff_bra_contribution()

static void overlap_gradient_diff_bra_contribution ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double **  grad,
double  factor 
)
static

Calculates contribution to gradients arising from the < df/dA | g > term:

grad += factor * < df/dA | g >

(bra basis function is differentiated).

Definition at line 85 of file grpp_overlap_gradient.c.

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

◆ overlap_gradient_diff_bra_overlap_integrals()

static void overlap_gradient_diff_bra_overlap_integrals ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double **  overlap_down,
double **  overlap_up,
int *  cart_size_down,
int *  cart_size_up 
)
static

To assemble the contribution < df/dA | g > to gradients, one have to differentiate Gaussian function. Such a differentiation yields two Gaussians with angular momenta L-1 ("down") and L+1 ("up"): dG/dA -> G(L-1) and G(L+1)

This function constructs overlap matrices with these "downgraded" and "upgraded" Gaussian functions: < G(L-1) | G' > and < G(L+1) | G' >

Definition at line 156 of file grpp_overlap_gradient.c.

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

◆ nlm_to_linear()

int nlm_to_linear ( int *  nlm)

◆ libgrpp_overlap_integrals_gradient()

void libgrpp_overlap_integrals_gradient ( libgrpp_shell_t shell_A,
libgrpp_shell_t shell_B,
double *  point_3d,
double **  grad 
)

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

Definition at line 39 of file grpp_overlap_gradient.c.

Here is the call graph for this function:

◆ libgrpp_nlm_to_linear()

int libgrpp_nlm_to_linear ( int *  nlm)

calculates sequential ("linear") index of the (n,l,m) primitive in the cartesian shell

Definition at line 205 of file grpp_overlap_gradient.c.

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