(git:b6ef100)
Loading...
Searching...
No Matches
realspace_grid_cube_unittest.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2026 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
8 USE kinds, ONLY: dp
12
13 IMPLICIT NONE
14
15 CHARACTER(LEN=13) :: value
16 CHARACTER(LEN=92) :: slice_values
17 CHARACTER(LEN=79) :: values
18 REAL(kind=dp), DIMENSION(6) :: buffer, reference
19 REAL(kind=dp), DIMENSION(7) :: slice_buffer, slice_reference
20
21 WRITE (value, cube_value_format) 3.33004e-101_dp
22 IF (index(value, "E-101") <= 0) THEN
23 error stop "Cube value format must preserve three-digit negative exponents."
24 END IF
25
26 reference = [0.0_dp, -0.91458e-35_dp, 3.33004e-101_dp, &
27 -1.32487e-103_dp, 1.0_dp, -1.0_dp]
28 WRITE (values(1:78), cube_values_format) reference
29 values(79:79) = new_line("C")
30 IF (index(values, "E-101") <= 0) THEN
31 error stop "Cube line format must preserve E-101."
32 END IF
33 IF (index(values, "E-103") <= 0) THEN
34 error stop "Cube line format must preserve E-103."
35 END IF
36 CALL cube_read_values(values, buffer)
37 IF (maxval(abs(buffer - reference)) > 1.0e-12_dp) THEN
38 error stop "Cube reader must parse adjacent explicit-exponent values."
39 END IF
40
41 slice_reference(1:6) = reference
42 slice_reference(7) = 0.27183e-123_dp
43 WRITE (slice_values(1:78), cube_values_format) slice_reference(1:6)
44 slice_values(79:79) = new_line("C")
45 WRITE (slice_values(80:92), cube_value_format) slice_reference(7)
46 CALL cube_read_values(slice_values, slice_buffer)
47 IF (maxval(abs(slice_buffer - slice_reference)) > 1.0e-12_dp) THEN
48 error stop "Cube reader must parse multi-line z-slices."
49 END IF
50
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Generate Gaussian cube files.
character(len= *), parameter, public cube_values_format
character(len= *), parameter, public cube_value_format
subroutine, public cube_read_values(values, buffer)
Read cube values from a character buffer.
program realspace_grid_cube_unittest