1!
2! Copyright (C) 2002-2005 Quantum ESPRESSO group
3! This file is distributed under the terms of the
4! GNU General Public License. See the file `License'
5! in the root directory of the present distribution,
6! or http://www.gnu.org/copyleft/gpl.txt .
7!
8!
9!----------------------------------------------------------------------------
10SUBROUTINE deallocate_modules_var()
11  !----------------------------------------------------------------------------
12  !
13  USE uspp,       ONLY : beta, dbeta, qq_nt
14  USE core,       ONLY : rhocb
15  !
16  USE core,                 ONLY : deallocate_core
17  USE uspp,                 ONLY : deallocate_uspp
18  USE electrons_base,       ONLY : deallocate_elct
19  USE efield_module,        ONLY : deallocate_efield
20  USE ensemble_dft,         ONLY : deallocate_ensemble_dft
21  USE cg_module,            ONLY : deallocate_cg
22  USE gvect,                ONLY : deallocate_gvect
23  USE gvecw,                ONLY : deallocate_gvecw
24  USE smallbox_gvec,        ONLY : deallocate_smallbox_gvec
25  USE local_pseudo,         ONLY : deallocate_local_pseudo
26  USE qgb_mod,              ONLY : deallocate_qgb_mod
27  USE betax,                ONLY : deallocate_betax
28  USE wavefunctions, ONLY : deallocate_wavefunctions
29  USE wannier_module,       ONLY : deallocate_wannier
30  USE fft_types,            ONLY : fft_type_descriptor, fft_type_deallocate
31  USE fft_smallbox_type,    ONLY : fft_box_deallocate
32  USE fft_base,             ONLY : dfftp, dffts, dfftb
33  USE electrons_module,     ONLY : deallocate_electrons
34  USE ions_base,            ONLY : deallocate_ions_base
35  ! USE polarization,         ONLY : deallocate_polarization ! obsolescent
36  USE cp_main_variables,    ONLY : deallocate_mainvar
37  USE pseudopotential,      ONLY : deallocate_pseudopotential
38  USE ions_nose,            ONLY : ions_nose_deallocate
39  USE metagga_cp,           ONLY : deallocate_metagga
40  USE ions_positions,       ONLY : deallocate_ions_positions
41  USE kohn_sham_states,     ONLY : ks_states_closeup
42  USE ldaU_cp,              ONLY : deallocate_lda_plus_u
43  USE step_penalty,         ONLY : deallocate_step_pen
44  USE fft_base,             ONLY : pstickdealloc
45
46  !
47  IMPLICIT NONE
48  !
49  !
50  IF ( ALLOCATED( beta ) )     DEALLOCATE( beta )
51  IF ( ALLOCATED( qq_nt ) )    DEALLOCATE( qq_nt )
52  IF ( ALLOCATED( rhocb ) )    DEALLOCATE( rhocb )
53  IF ( ALLOCATED( dbeta ) )    DEALLOCATE( dbeta )
54  !
55  CALL deallocate_mainvar()
56  CALL deallocate_ions_positions()
57  CALL deallocate_efield( )
58  CALL deallocate_ensemble_dft()
59  CALL deallocate_cg( )
60  CALL deallocate_core()
61  CALL deallocate_uspp()
62  CALL deallocate_gvect(.TRUE.) ! Value .true. is hard coded in init.f90:195,
63                                !  here it prevents double free of gg variable.
64  CALL deallocate_gvecw()
65  CALL deallocate_smallbox_gvec( )
66  CALL deallocate_local_pseudo()
67  CALL deallocate_qgb_mod()
68  CALL deallocate_betax()
69  !
70  CALL fft_type_deallocate( dfftp )
71  CALL fft_type_deallocate( dffts )
72  CALL fft_box_deallocate( dfftb )
73  CALL pstickdealloc( )
74  !
75  CALL deallocate_ions_base()
76  !
77  CALL deallocate_wavefunctions()
78  CALL deallocate_wannier()
79  !
80  CALL deallocate_elct()
81  CALL deallocate_electrons()
82  ! CALL deallocate_polarization() ! obsolescent
83  CALL deallocate_pseudopotential()
84  !
85  CALL deallocate_metagga()
86  CALL ions_nose_deallocate()
87  CALL ks_states_closeup()
88  !
89  CALL deallocate_lda_plus_u()
90  CALL deallocate_step_pen()
91  !
92  RETURN
93  !
94END SUBROUTINE deallocate_modules_var
95