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: GPL-2.0-or-later !
6 : !--------------------------------------------------------------------------------------------------!
7 :
8 : ! **************************************************************************************************
9 : !> \brief Space Group Symmetry Type Module (version 1.0, Ferbruary 12, 2021)
10 : !> \par History
11 : !> Pierre-André Cazade [pcazade] 02.2021 - University of Limerick
12 : !> \author Pierre-André Cazade (first version)
13 : ! **************************************************************************************************
14 : MODULE space_groups_types
15 :
16 : USE cell_types, ONLY: cell_release,&
17 : cell_type
18 : USE kinds, ONLY: dp
19 : #include "../base/base_uses.f90"
20 :
21 : IMPLICIT NONE
22 :
23 : PRIVATE
24 :
25 : CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'space_groups_types'
26 :
27 : TYPE spgr_type
28 : LOGICAL :: keep_space_group = .FALSE.
29 : LOGICAL :: show_space_group = .FALSE.
30 : LOGICAL :: symlib = .FALSE.
31 : LOGICAL :: print_atoms = .FALSE.
32 : INTEGER :: iunit = -1
33 : INTEGER :: istriz = -1
34 : REAL(KIND=dp) :: eps_symmetry = 1.0e-4_dp
35 : INTEGER :: nparticle = 0
36 : INTEGER :: nparticle_sym = 0
37 : INTEGER :: n_atom = 0
38 : INTEGER :: n_core = 0
39 : INTEGER :: n_shell = 0
40 : INTEGER :: n_atom_sym = 0
41 : INTEGER :: n_core_sym = 0
42 : INTEGER :: n_shell_sym = 0
43 : INTEGER, DIMENSION(:), ALLOCATABLE :: atype
44 : INTEGER, DIMENSION(:, :), ALLOCATABLE :: eqatom
45 : LOGICAL, DIMENSION(:), ALLOCATABLE :: lop, lat
46 : REAL(KIND=dp), DIMENSION(3) :: pol = 0.0_dp
47 : !SPGLIB
48 : INTEGER :: space_group_number = 0
49 : CHARACTER(len=11) :: international_symbol = ""
50 : CHARACTER(len=6) :: pointgroup_symbol = ""
51 : CHARACTER(len=7) :: schoenflies = ""
52 : INTEGER :: n_operations = 0
53 : INTEGER :: n_reduced_operations = 0
54 : INTEGER :: n_operations_subset = 0
55 : INTEGER, DIMENSION(:, :, :), ALLOCATABLE :: rotations
56 : INTEGER, DIMENSION(:, :, :), ALLOCATABLE :: rotations_subset
57 : REAL(KIND=dp), DIMENSION(:, :), ALLOCATABLE :: translations
58 : TYPE(cell_type), POINTER :: cell_ref => NULL()
59 : END TYPE spgr_type
60 :
61 : PUBLIC :: spgr_type, release_spgr_type
62 :
63 : CONTAINS
64 :
65 : ! **************************************************************************************************
66 : !> \brief Release the SPGR type
67 : !> \param spgr The SPGR type
68 : !> \par History
69 : !> 01.2020 created [pcazade]
70 : !> \author Pierre-André Cazade (first version)
71 : ! **************************************************************************************************
72 2011 : SUBROUTINE release_spgr_type(spgr)
73 :
74 : TYPE(spgr_type), POINTER :: spgr
75 :
76 2011 : IF (ASSOCIATED(spgr)) THEN
77 :
78 2011 : IF (ALLOCATED(spgr%rotations)) THEN
79 14 : DEALLOCATE (spgr%rotations)
80 : END IF
81 2011 : IF (ALLOCATED(spgr%rotations_subset)) THEN
82 14 : DEALLOCATE (spgr%rotations_subset)
83 : END IF
84 2011 : IF (ALLOCATED(spgr%translations)) THEN
85 14 : DEALLOCATE (spgr%translations)
86 : END IF
87 2011 : IF (ALLOCATED(spgr%atype)) THEN
88 14 : DEALLOCATE (spgr%atype)
89 : END IF
90 2011 : IF (ALLOCATED(spgr%eqatom)) THEN
91 14 : DEALLOCATE (spgr%eqatom)
92 : END IF
93 2011 : IF (ALLOCATED(spgr%lop)) THEN
94 14 : DEALLOCATE (spgr%lop)
95 : END IF
96 2011 : IF (ALLOCATED(spgr%lat)) THEN
97 14 : DEALLOCATE (spgr%lat)
98 : END IF
99 :
100 2011 : CALL cell_release(spgr%cell_ref)
101 :
102 2011 : DEALLOCATE (spgr)
103 : END IF
104 :
105 2011 : END SUBROUTINE release_spgr_type
106 :
107 0 : END MODULE space_groups_types
|