1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2! Copyright 2010.  Los Alamos National Security, LLC. This material was    !
3! produced under U.S. Government contract DE-AC52-06NA25396 for Los Alamos !
4! National Laboratory (LANL), which is operated by Los Alamos National     !
5! Security, LLC for the U.S. Department of Energy. The U.S. Government has !
6! rights to use, reproduce, and distribute this software.  NEITHER THE     !
7! GOVERNMENT NOR LOS ALAMOS NATIONAL SECURITY, LLC MAKES ANY WARRANTY,     !
8! EXPRESS OR IMPLIED, OR ASSUMES ANY LIABILITY FOR THE USE OF THIS         !
9! SOFTWARE.  If software is modified to produce derivative works, such     !
10! modified software should be clearly marked, so as not to confuse it      !
11! with the version available from LANL.                                    !
12!                                                                          !
13! Additionally, this program is free software; you can redistribute it     !
14! and/or modify it under the terms of the GNU General Public License as    !
15! published by the Free Software Foundation; version 2.0 of the License.   !
16! Accordingly, this program is distributed in the hope that it will be     !
17! useful, but WITHOUT ANY WARRANTY; without even the implied warranty of   !
18! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General !
19! Public License for more details.                                         !
20!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
21
22SUBROUTINE DEALLOCATEALL
23
24  USE SETUPARRAY
25  USE UNIVARRAY
26  USE PPOTARRAY
27  USE NEBLISTARRAY
28  USE MDARRAY
29  USE KSPACEARRAY
30  USE CONSTANTS_MOD
31  USE SPINARRAY
32  USE RESTARTARRAY
33  USE SPARSEARRAY
34  USE XBOARRAY
35  USE COULOMBARRAY
36  USE DIAGARRAY
37  USE MDARRAY
38  USE NONOARRAY
39  USE PUREARRAY
40  USE VIRIALARRAY
41
42  IMPLICIT NONE
43  IF (EXISTERROR) RETURN
44
45  IF( ALLOCATED( ATELE )) DEALLOCATE( ATELE  )
46  IF( ALLOCATED( BASIS )) DEALLOCATE( BASIS  )
47  IF( ALLOCATED( BTYPE )) DEALLOCATE( BTYPE  )
48  IF( ALLOCATED( ELE )) DEALLOCATE( ELE  )
49  IF( ALLOCATED( ELE1 )) DEALLOCATE( ELE1  )
50  IF( ALLOCATED( ELE2 )) DEALLOCATE( ELE2  )
51  IF( ALLOCATED( PPELE1 )) DEALLOCATE( PPELE1  )
52  IF( ALLOCATED( PPELE2 )) DEALLOCATE( PPELE2  )
53  IF( ALLOCATED( PPELE )) DEALLOCATE( PPELE  )
54  IF( ALLOCATED( DIAG_ZWORK )) DEALLOCATE( DIAG_ZWORK  )
55  IF( ALLOCATED( HK )) DEALLOCATE( HK  )
56  IF( ALLOCATED( HK0 )) DEALLOCATE( HK0  )
57  IF( ALLOCATED( HKDIAG )) DEALLOCATE( HKDIAG  )
58  IF( ALLOCATED( KBO )) DEALLOCATE( KBO  )
59  IF( ALLOCATED( KEVECS )) DEALLOCATE( KEVECS  )
60  IF( ALLOCATED( KF )) DEALLOCATE( KF  )
61  IF( ALLOCATED( KHTMP )) DEALLOCATE( KHTMP  )
62  IF( ALLOCATED( KORTHOH )) DEALLOCATE( KORTHOH  )
63  IF( ALLOCATED( KXMAT )) DEALLOCATE( KXMAT  )
64  IF( ALLOCATED( SK )) DEALLOCATE( SK  )
65  IF( ALLOCATED( ZBO )) DEALLOCATE( ZBO  )
66  IF( ALLOCATED( ZHEEVD_WORK )) DEALLOCATE( ZHEEVD_WORK  )
67  IF( ALLOCATED( ZHJJ )) DEALLOCATE( ZHJJ  )
68  IF( ALLOCATED( DIAG_IWORK )) DEALLOCATE( DIAG_IWORK  )
69  IF( ALLOCATED( ELEMPOINTER )) DEALLOCATE( ELEMPOINTER  )
70  IF( ALLOCATED( IFAIL )) DEALLOCATE( IFAIL  )
71  IF( ALLOCATED( MATINDLIST )) DEALLOCATE( MATINDLIST  )
72  IF( ALLOCATED( MOLID )) DEALLOCATE( MOLID  )
73  IF( ALLOCATED( NEBCOUL )) DEALLOCATE(NEBCOUL)
74  IF( ALLOCATED( NEBPP )) DEALLOCATE( NEBPP )
75  IF( ALLOCATED( NEBTB )) DEALLOCATE( NEBTB )
76  IF( ALLOCATED( NONO_IWORK )) DEALLOCATE( NONO_IWORK  )
77  IF( ALLOCATED( PPTABLENGTH )) DEALLOCATE( PPTABLENGTH  )
78  IF( ALLOCATED( RX )) DEALLOCATE( RX  )
79  IF( ALLOCATED( RXTMP )) DEALLOCATE( RXTMP  )
80  IF( ALLOCATED( SIGNLIST )) DEALLOCATE( SIGNLIST  )
81  IF( ALLOCATED( SPININDLIST )) DEALLOCATE( SPININDLIST  )
82  IF( ALLOCATED( TOTNEBCOUL )) DEALLOCATE( TOTNEBCOUL  )
83  IF( ALLOCATED( TOTNEBPP )) DEALLOCATE( TOTNEBPP  )
84  IF( ALLOCATED( TOTNEBTB )) DEALLOCATE( TOTNEBTB  )
85  IF( ALLOCATED( XB )) DEALLOCATE( XB  )
86  IF( ALLOCATED( ZHEEVD_IWORK )) DEALLOCATE( ZHEEVD_IWORK  )
87  IF( ALLOCATED( ATOCC )) DEALLOCATE( ATOCC  )
88  IF( ALLOCATED( BO )) DEALLOCATE( BO  )
89  IF( ALLOCATED( BOND )) DEALLOCATE( BOND  )
90  IF( ALLOCATED( BOZERO )) DEALLOCATE( BOZERO  )
91  IF( ALLOCATED( BO_PADDED )) DEALLOCATE( BO_PADDED  )
92  IF( ALLOCATED( CHEMPOT_PNK )) DEALLOCATE( CHEMPOT_PNK  )
93  IF( ALLOCATED( COSLIST )) DEALLOCATE( COSLIST  )
94  IF( ALLOCATED( COULOMBV )) DEALLOCATE( COULOMBV  )
95  IF( ALLOCATED( CPLIST )) DEALLOCATE( CPLIST  )
96  IF( ALLOCATED( CR )) DEALLOCATE( CR  )
97  IF( ALLOCATED( DELTAQ )) DEALLOCATE( DELTAQ  )
98  IF( ALLOCATED( DELTASPIN )) DEALLOCATE( DELTASPIN  )
99  IF( ALLOCATED( DIAG_RWORK )) DEALLOCATE( DIAG_RWORK  )
100  IF( ALLOCATED( DIAG_WORK )) DEALLOCATE( DIAG_WORK  )
101  IF( ALLOCATED( DOWNEVALS )) DEALLOCATE( DOWNEVALS  )
102  IF( ALLOCATED( DOWNEVECS )) DEALLOCATE( DOWNEVECS  )
103  IF( ALLOCATED( EHIST )) DEALLOCATE( EHIST  )
104  IF( ALLOCATED( EVALS )) DEALLOCATE( EVALS  )
105  IF( ALLOCATED( EVECS )) DEALLOCATE( EVECS  )
106  IF( ALLOCATED( F )) DEALLOCATE( F  )
107  IF( ALLOCATED( FCOUL )) DEALLOCATE( FCOUL  )
108  IF( ALLOCATED( FPP )) DEALLOCATE( FPP  )
109  IF( ALLOCATED( FPUL )) DEALLOCATE( FPUL  )
110  IF( ALLOCATED( FRANPREV )) DEALLOCATE( FRANPREV  )
111  IF( ALLOCATED( FSCOUL )) DEALLOCATE( FSCOUL  )
112  IF( ALLOCATED( FSSPIN )) DEALLOCATE( FSSPIN  )
113  IF( ALLOCATED( FPLUSD )) DEALLOCATE( FPLUSD  )
114  IF( ALLOCATED( FTOT )) DEALLOCATE( FTOT  )
115  IF( ALLOCATED( H )) DEALLOCATE( H  )
116  IF( ALLOCATED( H0 )) DEALLOCATE( H0  )
117  IF( ALLOCATED( H2VECT )) DEALLOCATE( H2VECT  )
118  IF( ALLOCATED( HDIAG )) DEALLOCATE( HDIAG  )
119  IF( ALLOCATED( HDOWN )) DEALLOCATE( HDOWN  )
120  IF( ALLOCATED( HED )) DEALLOCATE( HED  )
121  IF( ALLOCATED( HEF )) DEALLOCATE( HEF  )
122  IF( ALLOCATED( HEP )) DEALLOCATE( HEP  )
123  IF( ALLOCATED( HES )) DEALLOCATE( HES  )
124  IF( ALLOCATED( HJJ )) DEALLOCATE( HJJ  )
125  IF( ALLOCATED( HR0 )) DEALLOCATE( HR0  )
126  IF( ALLOCATED( HUBBARDU )) DEALLOCATE( HUBBARDU  )
127  IF( ALLOCATED( HUP )) DEALLOCATE( HUP  )
128  IF( ALLOCATED( KEVALS )) DEALLOCATE( KEVALS  )
129  IF( ALLOCATED( LCNSHIFT )) DEALLOCATE( LCNSHIFT  )
130  IF( ALLOCATED( MASS )) DEALLOCATE( MASS  )
131  IF( ALLOCATED( MYCHARGE )) DEALLOCATE( MYCHARGE  )
132  IF( ALLOCATED( NONOTMP )) DEALLOCATE( NONOTMP  )
133  IF( ALLOCATED( NONO_EVALS )) DEALLOCATE( NONO_EVALS  )
134  IF( ALLOCATED( NONO_WORK )) DEALLOCATE( NONO_WORK  )
135  IF( ALLOCATED( OLDDELTAQS )) DEALLOCATE( OLDDELTAQS  )
136  IF( ALLOCATED( OLDDELTASPIN )) DEALLOCATE( OLDDELTASPIN  )
137  IF( ALLOCATED( ORTHOH )) DEALLOCATE( ORTHOH  )
138  IF( ALLOCATED( ORTHOHDOWN )) DEALLOCATE( ORTHOHDOWN  )
139  IF( ALLOCATED( ORTHOHUP )) DEALLOCATE( ORTHOHUP  )
140  IF( ALLOCATED( ORTHORHO )) DEALLOCATE( ORTHORHO  )
141  IF( ALLOCATED( OVERL )) DEALLOCATE( OVERL  )
142  IF( ALLOCATED( PAIR )) DEALLOCATE( PAIR  )
143  IF( ALLOCATED( PHIST )) DEALLOCATE( PHIST  )
144  IF( ALLOCATED( PHISTX )) DEALLOCATE( PHISTX  )
145  IF( ALLOCATED( PHISTY )) DEALLOCATE( PHISTY  )
146  IF( ALLOCATED( PHISTZ )) DEALLOCATE( PHISTZ  )
147  IF( ALLOCATED( PNK )) DEALLOCATE( PNK  )
148  IF( ALLOCATED( POTCOEF )) DEALLOCATE( POTCOEF  )
149  IF( ALLOCATED( PPR )) DEALLOCATE( PPR  )
150  IF( ALLOCATED( PPSPL )) DEALLOCATE( PPSPL  )
151  IF( ALLOCATED( PPVAL )) DEALLOCATE( PPVAL  )
152  IF( ALLOCATED( QLIST )) DEALLOCATE( QLIST  )
153  IF( ALLOCATED( RESPCHI )) DEALLOCATE( RESPCHI  )
154  IF( ALLOCATED( RHODOWN )) DEALLOCATE( RHODOWN  )
155  IF( ALLOCATED( RHODOWNZERO )) DEALLOCATE( RHODOWNZERO  )
156  IF( ALLOCATED( RHOUP )) DEALLOCATE( RHOUP  )
157  IF( ALLOCATED( RHOUPZERO )) DEALLOCATE( RHOUPZERO  )
158  IF( ALLOCATED( SH2 )) DEALLOCATE( SH2  )
159  IF( ALLOCATED( SINLIST )) DEALLOCATE( SINLIST  )
160  IF( ALLOCATED( SMAT )) DEALLOCATE( SMAT  )
161  IF( ALLOCATED( SPINLIST )) DEALLOCATE( SPINLIST  )
162  IF( ALLOCATED( SPINTMP )) DEALLOCATE( SPINTMP  )
163  IF( ALLOCATED( SPIN_PNK )) DEALLOCATE( SPIN_PNK  )
164  IF( ALLOCATED( THIST )) DEALLOCATE( THIST  )
165  IF( ALLOCATED( TMPBODIAG )) DEALLOCATE( TMPBODIAG  )
166  IF( ALLOCATED( TMPRHODOWN )) DEALLOCATE( TMPRHODOWN  )
167  IF( ALLOCATED( TMPRHOUP )) DEALLOCATE( TMPRHOUP  )
168  IF( ALLOCATED( TWOXX2 )) DEALLOCATE( TWOXX2  )
169  IF( ALLOCATED( UMAT )) DEALLOCATE( UMAT  )
170  IF( ALLOCATED( UPEVALS )) DEALLOCATE( UPEVALS  )
171  IF( ALLOCATED( UPEVECS )) DEALLOCATE( UPEVECS  )
172  IF( ALLOCATED( V )) DEALLOCATE( V  )
173  IF( ALLOCATED( VHIST )) DEALLOCATE( VHIST  )
174  IF( ALLOCATED( WDD )) DEALLOCATE( WDD  )
175  IF( ALLOCATED( WFF )) DEALLOCATE( WFF  )
176  IF( ALLOCATED( WORK )) DEALLOCATE( WORK  )
177  IF( ALLOCATED( WPP )) DEALLOCATE( WPP  )
178  IF( ALLOCATED( WSS )) DEALLOCATE( WSS  )
179  IF( ALLOCATED( X2 )) DEALLOCATE( X2  )
180  IF( ALLOCATED( X2DOWN )) DEALLOCATE( X2DOWN  )
181  IF( ALLOCATED( X2HRHO )) DEALLOCATE( X2HRHO  )
182  IF( ALLOCATED( X2UP )) DEALLOCATE( X2UP  )
183  IF( ALLOCATED( XMAT )) DEALLOCATE( XMAT  )
184  IF( ALLOCATED( ZHEEVD_RWORK )) DEALLOCATE( ZHEEVD_RWORK  )
185  IF( ALLOCATED( FSLCN )) DEALLOCATE( FSLCN  )
186  IF( ALLOCATED( ORTHOBO)) DEALLOCATE(ORTHOBO)
187
188
189  ! Stuff for the tabulated integrals
190  IF( ALLOCATED( TABR )) DEALLOCATE( TABR )
191  IF( ALLOCATED( TABH )) DEALLOCATE( TABH )
192  IF( ALLOCATED( TABS )) DEALLOCATE( TABS )
193  IF( ALLOCATED( LENTABINT )) DEALLOCATE( LENTABINT )
194  IF( ALLOCATED( HSPL )) DEALLOCATE( HSPL )
195  IF( ALLOCATED( SSPL )) DEALLOCATE( SSPL )
196  IF( ALLOCATED( HCUT )) DEALLOCATE( HCUT )
197  IF( ALLOCATED( SCUT )) DEALLOCATE( SCUT )
198
199  IF ( ALLOCATED(PPELE1) ) DEALLOCATE( PPELE1 )
200  IF ( ALLOCATED(PPELE2) ) DEALLOCATE( PPELE2 )
201  IF ( ALLOCATED(PPRK) ) DEALLOCATE( PPRK )
202  IF ( ALLOCATED(PPAK) ) DEALLOCATE( PPAK )
203  IF ( ALLOCATED(PPNK) ) DEALLOCATE( PPNK )
204
205  ! For the dispersion correction
206  IF (ALLOCATED(PPELE)) DEALLOCATE(PPELE)
207  IF (ALLOCATED(RZERO)) DEALLOCATE(RZERO)
208  IF (ALLOCATED(C6)) DEALLOCATE(C6)
209
210  RETURN
211
212END SUBROUTINE DEALLOCATEALL
213