2003-10-17 00:30:12 +08:00
|
|
|
!
|
|
|
|
! Copyright (C) 2001-2003 PWSCF group
|
|
|
|
! This file is distributed under the terms of the
|
|
|
|
! GNU General Public License. See the file `License'
|
|
|
|
! in the root directory of the present distribution,
|
|
|
|
! or http://www.gnu.org/copyleft/gpl.txt .
|
|
|
|
!
|
|
|
|
!----------------------------------------------------------------------
|
2005-06-07 01:53:32 +08:00
|
|
|
SUBROUTINE clean_pw( lflag )
|
2003-10-17 00:30:12 +08:00
|
|
|
!----------------------------------------------------------------------
|
|
|
|
!
|
2005-06-14 00:36:29 +08:00
|
|
|
! ... This routine deallocates all dynamically allocated arrays
|
2003-10-17 00:30:12 +08:00
|
|
|
!
|
2004-03-08 16:43:25 +08:00
|
|
|
USE ions_base, ONLY : deallocate_ions_base
|
2004-01-27 17:30:12 +08:00
|
|
|
USE gvect, ONLY : g, gg, nl, nlm, igtongl, ig1, ig2, ig3, &
|
|
|
|
eigts1, eigts2, eigts3
|
|
|
|
USE gsmooth, ONLY : nls, nlsm, doublegrid
|
|
|
|
USE ktetra, ONLY : tetra
|
|
|
|
USE reciprocal_vectors, ONLY : ig_l2g
|
|
|
|
USE symme, ONLY : irt
|
|
|
|
USE vlocal, ONLY : strf, vloc, vnew
|
|
|
|
USE wvfct, ONLY : igk, igk_l2g, g2kin, et, wg, gamma_only
|
|
|
|
USE force_mod, ONLY : force
|
2005-06-02 03:12:25 +08:00
|
|
|
USE scf, ONLY : rho, vr, vltot, rho_core, vrs
|
2004-06-09 04:00:04 +08:00
|
|
|
USE wavefunctions_module, ONLY : evc, psic, evc_nc, psic_nc
|
2004-06-01 01:55:33 +08:00
|
|
|
USE us, ONLY : qrad, tab, tab_at
|
|
|
|
USE uspp, ONLY : deallocate_uspp
|
2004-01-27 17:30:12 +08:00
|
|
|
USE ldaU, ONLY : ns, nsnew, swfcatom
|
|
|
|
USE extfield, ONLY : forcefield
|
|
|
|
USE sticks, ONLY : dfftp, dffts
|
|
|
|
USE stick_base, ONLY : sticks_deallocate
|
2005-09-14 04:30:18 +08:00
|
|
|
! USE berry_phase, ONLY : berry_closeup
|
2004-01-27 17:30:12 +08:00
|
|
|
USE fft_types, ONLY : fft_dlay_deallocate
|
2004-06-09 04:00:04 +08:00
|
|
|
USE spin_orb, ONLY : lspinorb, fcoef
|
|
|
|
USE noncollin_module, ONLY : deallocate_noncol
|
2006-01-14 01:25:42 +08:00
|
|
|
USE dynamics_module, ONLY : deallocate_dyn_vars
|
2003-10-17 00:30:12 +08:00
|
|
|
!
|
2003-07-04 21:09:27 +08:00
|
|
|
IMPLICIT NONE
|
2003-10-17 00:30:12 +08:00
|
|
|
!
|
2005-06-07 01:53:32 +08:00
|
|
|
LOGICAL, INTENT(IN) :: lflag
|
|
|
|
! if .TRUE. deallocate_ions_base is called
|
|
|
|
! ( for instance neb and smd do not call it )
|
2004-06-28 18:08:53 +08:00
|
|
|
!
|
2003-10-17 00:30:12 +08:00
|
|
|
!
|
|
|
|
! ... arrays allocated in input.f90, read_file.f90 or setup.f90
|
|
|
|
!
|
2005-06-07 01:53:32 +08:00
|
|
|
IF ( lflag ) THEN
|
|
|
|
!
|
|
|
|
CALL deallocate_ions_base()
|
|
|
|
!
|
|
|
|
IF ( ALLOCATED( force ) ) DEALLOCATE( force )
|
|
|
|
IF ( ALLOCATED( forcefield ) ) DEALLOCATE( forcefield )
|
|
|
|
!
|
|
|
|
END IF
|
2004-06-12 00:53:16 +08:00
|
|
|
!
|
2003-10-17 00:30:12 +08:00
|
|
|
IF ( ALLOCATED( tetra ) ) DEALLOCATE( tetra )
|
|
|
|
IF ( ALLOCATED( irt ) ) DEALLOCATE( irt )
|
|
|
|
!
|
|
|
|
! ... arrays allocated in ggen.f90
|
|
|
|
!
|
|
|
|
IF ( ALLOCATED( ig_l2g ) ) DEALLOCATE( ig_l2g )
|
|
|
|
!
|
|
|
|
! ... arrays allocated in allocate_fft.f90 ( and never deallocated )
|
|
|
|
!
|
2003-10-28 18:28:16 +08:00
|
|
|
IF ( ALLOCATED( g ) ) DEALLOCATE( g )
|
2003-10-17 00:30:12 +08:00
|
|
|
IF ( ALLOCATED( gg ) ) DEALLOCATE( gg )
|
2003-10-28 18:28:16 +08:00
|
|
|
IF ( ALLOCATED( nl ) ) DEALLOCATE( nl )
|
2003-07-23 20:18:52 +08:00
|
|
|
IF ( gamma_only ) THEN
|
2003-10-17 00:30:12 +08:00
|
|
|
IF ( ALLOCATED( nlm ) ) DEALLOCATE( nlm )
|
2003-07-23 20:18:52 +08:00
|
|
|
END IF
|
2003-10-17 00:30:12 +08:00
|
|
|
IF ( ALLOCATED( igtongl ) ) DEALLOCATE( igtongl )
|
|
|
|
IF ( ALLOCATED( ig1 ) ) DEALLOCATE( ig1 )
|
|
|
|
IF ( ALLOCATED( ig2 ) ) DEALLOCATE( ig2 )
|
|
|
|
IF ( ALLOCATED( ig3 ) ) DEALLOCATE( ig3 )
|
|
|
|
IF ( ALLOCATED( rho ) ) DEALLOCATE( rho )
|
|
|
|
IF ( ALLOCATED( vr ) ) DEALLOCATE( vr )
|
|
|
|
IF ( ALLOCATED( vltot ) ) DEALLOCATE( vltot )
|
|
|
|
IF ( ALLOCATED( vnew ) ) DEALLOCATE( vnew )
|
|
|
|
IF ( ALLOCATED( rho_core ) ) DEALLOCATE( rho_core )
|
|
|
|
IF ( ALLOCATED( psic ) ) DEALLOCATE( psic )
|
2005-04-29 09:12:08 +08:00
|
|
|
IF ( ALLOCATED( psic_nc ) ) DEALLOCATE( psic_nc )
|
2003-10-17 00:30:12 +08:00
|
|
|
IF ( ALLOCATED( vrs ) ) DEALLOCATE( vrs )
|
2003-07-04 21:09:27 +08:00
|
|
|
IF ( doublegrid ) THEN
|
2003-10-17 00:30:12 +08:00
|
|
|
IF ( ASSOCIATED( nls ) ) DEALLOCATE( nls )
|
2003-07-04 21:09:27 +08:00
|
|
|
END IF
|
2003-07-23 20:18:52 +08:00
|
|
|
IF ( doublegrid .AND. gamma_only ) THEN
|
2003-10-17 00:30:12 +08:00
|
|
|
IF ( ASSOCIATED( nlsm )) DEALLOCATE( nlsm )
|
2003-07-23 20:18:52 +08:00
|
|
|
END IF
|
2003-10-17 00:30:12 +08:00
|
|
|
!
|
|
|
|
! ... arrays allocated in allocate_locpot.f90 ( and never deallocated )
|
|
|
|
!
|
|
|
|
IF ( ALLOCATED( vloc ) ) DEALLOCATE( vloc )
|
|
|
|
IF ( ALLOCATED( strf ) ) DEALLOCATE( strf )
|
|
|
|
IF ( ALLOCATED( eigts1 ) ) DEALLOCATE( eigts1 )
|
|
|
|
IF ( ALLOCATED( eigts2 ) ) DEALLOCATE( eigts2 )
|
|
|
|
IF ( ALLOCATED( eigts3 ) ) DEALLOCATE( eigts3 )
|
|
|
|
!
|
|
|
|
! ... arrays allocated in allocate_nlpot.f90 ( and never deallocated )
|
|
|
|
!
|
|
|
|
IF ( ALLOCATED( igk ) ) DEALLOCATE( igk )
|
|
|
|
IF ( ALLOCATED( igk_l2g ) ) DEALLOCATE( igk_l2g )
|
|
|
|
IF ( ALLOCATED( g2kin ) ) DEALLOCATE( g2kin )
|
|
|
|
IF ( ALLOCATED( qrad ) ) DEALLOCATE( qrad )
|
|
|
|
IF ( ALLOCATED( ns ) ) DEALLOCATE( ns )
|
|
|
|
IF ( ALLOCATED( nsnew ) ) DEALLOCATE( nsnew )
|
|
|
|
IF ( ALLOCATED( tab ) ) DEALLOCATE( tab )
|
2004-01-27 17:30:12 +08:00
|
|
|
IF ( ALLOCATED( tab_at ) ) DEALLOCATE( tab_at )
|
2005-04-29 09:12:08 +08:00
|
|
|
IF ( lspinorb ) THEN
|
|
|
|
IF ( ALLOCATED( fcoef ) ) DEALLOCATE( fcoef )
|
2004-04-30 16:51:31 +08:00
|
|
|
END IF
|
2004-06-09 04:00:04 +08:00
|
|
|
!
|
2005-04-29 09:12:08 +08:00
|
|
|
CALL deallocate_uspp()
|
2003-10-17 00:30:12 +08:00
|
|
|
!
|
2005-04-29 09:12:08 +08:00
|
|
|
CALL deallocate_noncol()
|
2004-06-09 04:00:04 +08:00
|
|
|
!
|
2003-10-17 00:30:12 +08:00
|
|
|
! ... arrays allocated in allocate_wfc.f90 ( and never deallocated )
|
|
|
|
!
|
|
|
|
IF ( ALLOCATED( et ) ) DEALLOCATE( et )
|
|
|
|
IF ( ALLOCATED( wg ) ) DEALLOCATE( wg )
|
|
|
|
IF ( ALLOCATED( evc ) ) DEALLOCATE( evc )
|
|
|
|
IF ( ALLOCATED( swfcatom ) ) DEALLOCATE( swfcatom )
|
2005-04-29 09:12:08 +08:00
|
|
|
IF ( ALLOCATED( evc_nc ) ) DEALLOCATE( evc_nc )
|
2003-10-17 00:30:12 +08:00
|
|
|
!
|
|
|
|
! ... fft structures allocated in data_structure.f90
|
|
|
|
!
|
2003-07-04 21:09:27 +08:00
|
|
|
CALL fft_dlay_deallocate( dfftp )
|
|
|
|
CALL fft_dlay_deallocate( dffts )
|
2003-10-17 00:30:12 +08:00
|
|
|
!
|
|
|
|
! ... stick-owner matrix allocated in sticks_base
|
|
|
|
!
|
2005-04-29 09:12:08 +08:00
|
|
|
CALL sticks_deallocate()
|
2003-10-17 00:30:12 +08:00
|
|
|
!
|
2006-01-14 01:25:42 +08:00
|
|
|
! ... arrays allocated for dynamics
|
|
|
|
!
|
|
|
|
CALL deallocate_dyn_vars()
|
|
|
|
!
|
2003-10-17 00:30:12 +08:00
|
|
|
! ... deallocate indices used in calculation of polarizability at gamma
|
|
|
|
!
|
2005-09-14 04:30:18 +08:00
|
|
|
! CALL berry_closeup()
|
2004-02-26 19:50:36 +08:00
|
|
|
!
|
2003-10-17 00:30:12 +08:00
|
|
|
RETURN
|
|
|
|
!
|
2003-07-04 21:09:27 +08:00
|
|
|
END SUBROUTINE clean_pw
|