19 printf(
"Unit test starts ...\n");
22 printf(
"Testing cp_c_get_version(): ");
23 char version_str[100];
25 printf(
"%s.\n", version_str);
28 const char *inp_fn =
"H2.inp";
29 FILE *f = fopen(inp_fn,
"w");
30 fprintf(f,
"&FORCE_EVAL\n");
31 fprintf(f,
" METHOD Quickstep\n");
32 fprintf(f,
" &DFT\n");
33 fprintf(f,
" BASIS_SET_FILE_NAME BASIS_SET\n");
34 fprintf(f,
" POTENTIAL_FILE_NAME POTENTIAL\n");
36 fprintf(f,
" &MGRID\n");
37 fprintf(f,
" CUTOFF 140\n");
38 fprintf(f,
" &END MGRID\n");
40 fprintf(f,
" EPS_DEFAULT 1.0E-8\n");
41 fprintf(f,
" &END QS\n");
42 fprintf(f,
" &SCF\n");
43 fprintf(f,
" EPS_DIIS 0.1\n");
44 fprintf(f,
" EPS_SCF 1.0E-4\n");
45 fprintf(f,
" IGNORE_CONVERGENCE_FAILURE\n");
46 fprintf(f,
" MAX_DIIS 4\n");
47 fprintf(f,
" MAX_SCF 3\n");
48 fprintf(f,
" SCF_GUESS atomic\n");
49 fprintf(f,
" &END SCF\n");
51 fprintf(f,
" &XC_FUNCTIONAL Pade\n");
52 fprintf(f,
" &END XC_FUNCTIONAL\n");
53 fprintf(f,
" &END XC\n");
54 fprintf(f,
" &END DFT\n");
55 fprintf(f,
" &SUBSYS\n");
56 fprintf(f,
" &CELL\n");
57 fprintf(f,
" ABC 8.0 4.0 4.0\n");
58 fprintf(f,
" &END CELL\n");
59 fprintf(f,
" &COORD\n");
60 fprintf(f,
" H 0.000000 0.000000 0.000000\n");
61 fprintf(f,
" H 1.000000 0.000000 0.000000\n");
62 fprintf(f,
" &END COORD\n");
63 fprintf(f,
" &KIND H\n");
64 fprintf(f,
" BASIS_SET DZV-GTH-PADE\n");
65 fprintf(f,
" POTENTIAL GTH-PADE-q1\n");
66 fprintf(f,
" &END KIND\n");
67 fprintf(f,
" &END SUBSYS\n");
68 fprintf(f,
"&END FORCE_EVAL\n");
69 fprintf(f,
"&GLOBAL\n");
70 fprintf(f,
" PRINT_LEVEL SILENT\n");
71 fprintf(f,
" PROJECT libcp2k_unittest_H2\n");
72 fprintf(f,
"&END GLOBAL\n");
84 printf(
"\n ENERGY: %.12f\n", energy);
85 if (fabs(-1.118912797546392 - energy) / fabs(energy) > 1e-13) {
86 printf(
"Wrong energy\n");
94 printf(
"Unit test finished, found no errors\n");
void cp2k_create_force_env(force_env_t *new_force_env, const char *input_file_path, const char *output_file_path)
Create a new force environment.
void cp2k_get_version(char *version_str, int str_length)
Get the CP2K version string.
int force_env_t
Definitions for the functions exported in libcp2k.F.
void cp2k_init()
Initialize CP2K and MPI.
void cp2k_calc_energy_force(force_env_t force_env)
Calculate energy and forces of the system.
void cp2k_get_potential_energy(force_env_t force_env, double *e_pot)
Get the potential energy of the system.
void cp2k_finalize()
Finalize CP2K and MPI.
int main()
Unit test of the C-interface provided via libcp2k.h.