LCOV - code coverage report
Current view: top level - src/grid/common - grid_basis_set.c (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:936074a) Lines: 100.0 % 48 48
Test Date: 2025-12-04 06:27:48 Functions: 100.0 % 2 2

            Line data    Source code
       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: BSD-3-Clause                                     */
       6              : /*----------------------------------------------------------------------------*/
       7              : 
       8              : #include <assert.h>
       9              : #include <stdlib.h>
      10              : #include <string.h>
      11              : 
      12              : #include "grid_basis_set.h"
      13              : 
      14              : /*******************************************************************************
      15              :  * \brief Allocates a basis set which can be passed to grid_create_task_list.
      16              :  *        See grid_task_list.h for details.
      17              :  * \author Ole Schuett
      18              :  ******************************************************************************/
      19        15081 : void grid_create_basis_set(const int nset, const int nsgf, const int maxco,
      20              :                            const int maxpgf, const int lmin[nset],
      21              :                            const int lmax[nset], const int npgf[nset],
      22              :                            const int nsgf_set[nset], const int first_sgf[nset],
      23        15081 :                            const double sphi[nsgf][maxco],
      24        15081 :                            const double zet[nset][maxpgf],
      25              :                            grid_basis_set **basis_set_out) {
      26              : 
      27        15081 :   grid_basis_set *basis_set = malloc(sizeof(grid_basis_set));
      28        15081 :   assert(basis_set != NULL);
      29              : 
      30        15081 :   basis_set->nset = nset;
      31        15081 :   basis_set->nsgf = nsgf;
      32        15081 :   basis_set->maxco = maxco;
      33        15081 :   basis_set->maxpgf = maxpgf;
      34              : 
      35        15081 :   size_t size = nset * sizeof(int);
      36        15081 :   basis_set->lmin = malloc(size);
      37        15081 :   assert(basis_set->lmin != NULL || size == 0);
      38        15081 :   basis_set->lmax = malloc(size);
      39        15081 :   assert(basis_set->lmax != NULL || size == 0);
      40        15081 :   basis_set->npgf = malloc(size);
      41        15081 :   assert(basis_set->npgf != NULL || size == 0);
      42        15081 :   basis_set->nsgf_set = malloc(size);
      43        15081 :   assert(basis_set->nsgf_set != NULL || size == 0);
      44        15081 :   basis_set->first_sgf = malloc(size);
      45        15081 :   assert(basis_set->first_sgf != NULL || size == 0);
      46        15081 :   if (size != 0) {
      47        15073 :     memcpy(basis_set->lmin, lmin, size);
      48        15073 :     memcpy(basis_set->lmax, lmax, size);
      49        15073 :     memcpy(basis_set->npgf, npgf, size);
      50        15073 :     memcpy(basis_set->nsgf_set, nsgf_set, size);
      51        15073 :     memcpy(basis_set->first_sgf, first_sgf, size);
      52              :   }
      53              : 
      54        15081 :   size = nsgf * maxco * sizeof(double);
      55        15081 :   basis_set->sphi = malloc(size);
      56        15081 :   assert(basis_set->sphi != NULL || size == 0);
      57        15081 :   if (size != 0) {
      58        15071 :     memcpy(basis_set->sphi, sphi, size);
      59              :   }
      60              : 
      61        15081 :   size = nset * maxpgf * sizeof(double);
      62        15081 :   basis_set->zet = malloc(size);
      63        15081 :   assert(basis_set->zet != NULL || size == 0);
      64        15081 :   if (size != 0) {
      65        15071 :     memcpy(basis_set->zet, zet, size);
      66              :   }
      67              : 
      68        15081 :   *basis_set_out = basis_set;
      69        15081 : }
      70              : 
      71              : /*******************************************************************************
      72              :  * \brief Deallocates given basis set.
      73              :  * \author Ole Schuett
      74              :  ******************************************************************************/
      75        15081 : void grid_free_basis_set(grid_basis_set *basis_set) {
      76        15081 :   free(basis_set->lmin);
      77        15081 :   free(basis_set->lmax);
      78        15081 :   free(basis_set->npgf);
      79        15081 :   free(basis_set->nsgf_set);
      80        15081 :   free(basis_set->first_sgf);
      81        15081 :   free(basis_set->sphi);
      82        15081 :   free(basis_set->zet);
      83        15081 :   free(basis_set);
      84        15081 : }
      85              : 
      86              : // EOF
        

Generated by: LCOV version 2.0-1