(git:374b731)
Loading...
Searching...
No Matches
grid_dgemm_coefficients.h
Go to the documentation of this file.
1/*----------------------------------------------------------------------------*/
2/* CP2K: A general program to perform molecular dynamics simulations */
3/* Copyright 2000-2024 CP2K developers group <https://cp2k.org> */
4/* */
5/* SPDX-License-Identifier: BSD-3-Clause */
6/*----------------------------------------------------------------------------*/
7
8#ifndef GRID_DGEMM_COEFFICIENTS_H
9#define GRID_DGEMM_COEFFICIENTS_H
10#include <stdbool.h>
11#include <string.h>
12
13#include "../common/grid_common.h"
14#include "grid_dgemm_utils.h"
15
16// *****************************************************************************
17extern void grid_prepare_alpha_dgemm(const double ra[3], const double rb[3],
18 const double rp[3], const int *lmax,
19 tensor *alpha);
20
21extern void grid_compute_coefficients_dgemm(const int *const lmin,
22 const int *const lmax, const int lp,
23 const double prefactor,
24 const tensor *const alpha,
25 const tensor *const pab,
26 tensor *coef_xyz);
27
29 const tensor *coef, const int *coef_offset_, const int *lmin,
30 const int *lmax, const double *ra, const double *rb, const double *rab,
31 const double prefactor, tensor *co);
32
33extern void grid_transform_coef_xyz_to_ijk(const double dh[3][3],
34 const tensor *coef_xyz);
35
36extern void grid_transform_coef_jik_to_yxz(const double dh[3][3],
37 const tensor *coef_xyz);
38extern void transform_triangular_to_xyz(const double *const coef_xyz,
39 tensor *const coef);
40extern void transform_xyz_to_triangular(const tensor *const coef,
41 double *const coef_xyz);
42extern void transform_yxz_to_triangular(const tensor *const coef,
43 double *const coef_xyz);
44extern void
45grid_transform_coef_ijk_to_xyz_cp2k(const int lp, const double dh[3][3],
46 const double *__restrict coef_ijk,
47 double *__restrict coef_xyz);
48
49extern void
50grid_compute_vab(const int *const lmin, const int *const lmax, const int lp,
51 const double prefactor,
52 const tensor *const alpha, // [3][lb_max+1][la_max+1][lp+1]
53 const tensor *const coef_xyz, tensor *pab);
54#endif
void grid_transform_coef_ijk_to_xyz_cp2k(const int lp, const double dh[3][3], const double *__restrict coef_ijk, double *__restrict coef_xyz)
void grid_transform_coef_xyz_to_ijk(const double dh[3][3], const tensor *coef_xyz)
void grid_compute_coefficients_dgemm(const int *const lmin, const int *const lmax, const int lp, const double prefactor, const tensor *const alpha, const tensor *const pab, tensor *coef_xyz)
void compute_compact_polynomial_coefficients(const tensor *coef, const int *coef_offset_, const int *lmin, const int *lmax, const double *ra, const double *rb, const double *rab, const double prefactor, tensor *co)
void transform_xyz_to_triangular(const tensor *const coef, double *const coef_xyz)
void transform_triangular_to_xyz(const double *const coef_xyz, tensor *const coef)
void transform_yxz_to_triangular(const tensor *const coef, double *const coef_xyz)
void grid_transform_coef_jik_to_yxz(const double dh[3][3], const tensor *coef_xyz)
void grid_compute_vab(const int *const lmin, const int *const lmax, const int lp, const double prefactor, const tensor *const alpha, const tensor *const coef_xyz, tensor *pab)
void grid_prepare_alpha_dgemm(const double ra[3], const double rb[3], const double rp[3], const int *lmax, tensor *alpha)