quantum-espresso/Modules/input_parameters.f90

1323 lines
52 KiB
Fortran

!
! Copyright (C) 2002-2003 FPMD & 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 .
!
!
!=----------------------------------------------------------------------------=!
!
MODULE input_parameters
!
!=----------------------------------------------------------------------------=!
!
! this module contains the definitions of all input parameters for CP, FPMD &
! PWSCF codes.
! Originally written by Carlo Cavazzoni for FPMD
!
!=----------------------------------------------------------------------------=!
!
USE kinds
USE parameters, ONLY : nsx, natx, npkx, nbndxx, nspinx, lqmax
!
IMPLICIT NONE
!
SAVE
!
!=----------------------------------------------------------------------------=!
! BEGIN manual
!
!
! * DESCRIPTION OF THE INPUT FILE
! (to be given as standard input)
!
! The input file has the following layout:
!
! &CONTROL
! control_parameter_1,
! control_parameter_2,
! .......
! control_parameter_Lastone
! /
! &SYSTEM
! sistem_parameter_1,
! sistem_parameter_2,
! .......
! sistem_parameter_Lastone
! /
! &ELECTRONS
! electrons_parameter_1,
! electrons_parameter_2,
! .......
! electrons_parameter_Lastone
! /
! &IONS
! ions_parameter_1,
! ions_parameter_2,
! .......
! ions_parameter_Lastone
! /
! &CELL
! cell_parameter_1,
! cell_parameter_2,
! .......
! cell_parameter_Lastone
! /
! &PHONON
! phonon_parameter_1,
! phonon_parameter_Lastone
! /
! ATOMIC_SPECIES
! slabel_1 mass_1 pseudo_file_1
! slabel_2 mass_2 pseudo_file_2
! .....
! ATOMIC_POSITIONS
! alabel_1 px_1 py_1 pz_1
! alabel_2 px_2 py_2 pz_2
! .....
! CARD_3
! ....
! CARD_N
!
! -- end of input file --
!
!=----------------------------------------------------------------------------=!
! CONTROL Namelist Input Parameters
!=----------------------------------------------------------------------------=!
!
! ( when appropriate default values are marked with a "*" )
!
CHARACTER(LEN=80) :: title = ' '
! title = 'title for this simulation'
CHARACTER(LEN=80) :: calculation = 'none'
! calculation = 'scf', 'relax', 'md', 'cp'*, 'vc-relax', 'vc-md',
! 'vc-cp', 'neb', 'smd', 'cp-wf'
! Specify the type of the simulation
! 'scf' = electron minimization
! 'relax' = ionic minimization
! 'cp' = Car-Parrinello MD
! 'md' = Car-Parrinello MD
! 'vc-relax' = ionic + cell minimization
! 'vc-cp' = variable-cell Car-Parrinello (-Rahman) dynamics
! 'vc-md' = variable-cell Car-Parrinello (-Rahman) dynamics
! 'neb' = NEB Method search of the Minimum Energy Path (MEP)
! 'smd' = String Method search of the Minimum Energy Path (MEP)
! 'cp-wf' = Car-Parrinello with wannier functions
CHARACTER(LEN=80) :: calculation_allowed(13)
DATA calculation_allowed / 'scf', 'nscf', 'relax', 'md', 'cp', &
'vc-relax', 'vc-md', 'vc-cp', 'phonon', 'raman', 'neb', 'smd', &
'cp-wf' /
! Allowed value for calculation parameters
CHARACTER(LEN=80) :: verbosity = 'default'
! verbosity = 'high' | 'default'* | 'low' | 'minimal'
! define the verbosity of the code output
CHARACTER(LEN=80) :: restart_mode = 'restart'
! restart_mode = 'from_scratch' | 'restart'* | 'reset_counters'
! specify how to start/restart the simulation
! 'from_scratch' start a new simulation from scratch,
! with random wave functions
! for path only : a simulation is started
! from scratch and the initial guess for the
! path is the linear interpolation between
! the initial and the final images
! 'restart' continue a previous simulation,
! and performs "nstep" new steps,
! 'reset_counters' continue a previous simulation,
! performs "nstep" new steps, resetting
! the counter and averages
INTEGER :: nstep = 10
! number of simulation steps, see "restart_mode"
INTEGER :: iprint = 10
! number of steps between successive writings of relevant physical
! quantities to standard output and to files "fort.3?" or "prefix.???"
! depending on "prefix" parameter.
! In PW iprint is compared also with convergence iterations, and
! physical quantities are written every iprint iterations
INTEGER :: isave = 100
! number of steps between successive savings of
! information needed to restart the run (see "ndr", "ndw")
! relevant only for CP and FPMD
LOGICAL :: tstress = .TRUE.
! This flag controls the printing of the stress, its value is overwritten
! and set to ".TRUE." when the cell is moving
! .TRUE. write the stress tensor to standard output every "iprint" steps
! .FALSE. do not write the stress tensor stdout
LOGICAL :: tprnfor = .TRUE.
! This flag controls the printing of the interatomic forces,
! its value is overwritten and set to ".TRUE." the ions are moving
! .TRUE. write the atomic forces to standard output every "iprint" steps
! .FALSE. do not write atomic forces to stdout
REAL(dbl) :: dt = 1.0d0
! time step of the CP molecular dynamics simulation,
! in atomic units ( 1 a.u. of time = 2.4189 * 10^-17 s ),
! for non CP calculations, this represents the time advancing parameter.
! Note: typical values for CP simulations are between 1 and 10 a.u.
! In PW dt is used for Born-Oppenheimer molecular dynamics, and
! its value is usually larger than for CP dynamics, since it is related
! only to the mass of ions.
INTEGER :: ndr = 50
! Fortran unit from which the code read the restart file
! at the beginning of the simulation, its value should be greather than 50
! and it is opened in the running directory.
INTEGER :: ndw = 50
! Fortran unit to which the code writes the restart file
! at the end of the simulation, its value should be greather than 50
! and it is opened in the running directory.
CHARACTER(LEN=256) :: outdir = './'
! specify the directory where the code opens output files
! _NOT_ for restart file
CHARACTER(LEN=256) :: prefix = 'prefix'
! specify the prefix for the output file, if not specified the
! files are opened as standard fortran units.
! The prefix does _NOT_ apply to restart file
CHARACTER(LEN=256) :: pseudo_dir = './'
! specify the directory containing the pseudopotentials
REAL(dbl) :: max_seconds = 1.0d+6
! smootly terminate program after the specified number of seconds
! this parameter is typically used to prevent an hard kill from
! the queuing system.
REAL(dbl) :: ekin_conv_thr = 1.0d-5
! convergence criterion, minimizing the electrons this criterion is met
! when "ekin < ekin_conv_thr"
! convergence is achieved when all criteria are met
REAL(dbl) :: etot_conv_thr = 1.0d-4
! convergence criterion, minimizing the ions this criterion is met
! when "etot(n+1)-etot(n) < etot_conv_thr", where "n" is the step index,
! and "etot" the DFT energy
! convergence is achieved when all criteria are met
REAL(dbl) :: forc_conv_thr = 1.0d-3
! convergence criterion, minimizing the ions this criterion is met
! when "MAXVAL(fion) < forc_conv_thr", where fion are the atomic forces
! convergence is achieved when all criteria are met
CHARACTER(LEN=80) :: disk_io = 'default'
! disk_io = 'high', 'default', 'low', 'minimal'
! Specify the amount of I/O activities ( not used in FPMD )
LOGICAL :: tefield = .FALSE.
! if .TRUE. a finite electric field is added to the local potential
! only used in PW
LOGICAL :: dipfield = .FALSE.
! if .TRUE. the dipole field is subtracted
! only used in PW
LOGICAL :: lberry = .FALSE.
! if .TRUE., calculate polarization
INTEGER :: gdir = 0
! G-vector for polarization calculation ( related to lberry )
! only used in PW
INTEGER :: nppstr = 0
! number of k-points (parallel vector) ( related to lberry )
! only used in PW
LOGICAL :: wf_collect = .FALSE.
! This flag is effective only with PW code, and controls the way
! in which wave functions are stored to disk,
! .TRUE. collect all wave functions and store them in restart file
! ( .save )
! .FALSE. do not collect wave function they are left in temporary
! local file
NAMELIST / control / title, calculation, verbosity, restart_mode, &
nstep, iprint, isave, tstress, tprnfor, dt, ndr, ndw, outdir, prefix, &
max_seconds, ekin_conv_thr, etot_conv_thr, forc_conv_thr, &
pseudo_dir, disk_io, tefield, dipfield, lberry, gdir, nppstr, &
wf_collect
!
!=----------------------------------------------------------------------------=!
! SYSTEM Namelist Input Parameters
!=----------------------------------------------------------------------------=!
!
INTEGER :: ibrav = 14
! index the Bravais lattice:
! ibrav structure point groups
! --- -------------- -------------------
! 1 cubic P (sc) m3m, 432, m3, <4>3m, 23
! 2 cubic F (fcc) m3m, 432, m3, <4>3m, 23
! 3 cubic I (bcc) m3m, 432, m3, <4>3m, 23
! 4 Hexagonal P 6, 6mm, 6/m, <6>, 622, 6/mmm, <6>2m
! 4 Trigonal P 3, 3m, <3>, 32, <3>m
! 5 Trigonal R 3, 3m, <3>, 32, <3>m
! 6 Tetragonal P (st) 4, 4mm, 4/m, <4>, 422, 4/mmm, <4>2m
! 7 Tetragonal I (bct) 4, 4mm, 4/m, <4>, 422, 4/mmm, <4>2m
! 8 Orthorhombic P 2mm, 222, mmm
! 12 Monoclinic P 2, 2/m, m
! 14 Triclinic P 1, <1>
!
! Note: in variable cell CP molecular dynamics, usually one do not want
! to put constraints on the cell symmetries, therefore an
! ibrav = 14 is used
REAL(dbl) :: celldm(6) = 0.0d0
! dimensions of the cell
! celldm(1) = a
! celldm(2) = b/a
! celldm(3) = c/a
! celldm(4) = cos(bc)
! celldm(5) = cos(ac)
! celldm(6) = cos(ab)
! only the celldm's that are meaningful for the Bravais lattice
! considered need be specified (others are ignored):
! ibrav = 1,2,3 : celldm(1)
! ibrav = 4,6,7 : celldm(1,3)
! ibrav = 5 : celldm(1,4)
! ibrav = 8 : celldm(1,2,3)
! ibrav = 12 : celldm(1,2,3,4)
! ibrav = 14 : celldm(1,2,3,4,5,6)
INTEGER :: nat = 0
! total number of atoms
INTEGER :: ntyp = 0
! number of atomic species
INTEGER :: nbnd = 0
! number of electronic states, this parameter is MANDATORY in FPMD
REAL(dbl):: nelec = 0.d0
! number of electrons, this parameter is MANDATORY in FPMD
! may be fractionary in PW, but not in CP and FPMD !
REAL(dbl) :: ecutwfc = 0.0d0
! energy cutoff for wave functions in k-space ( in Rydbergs )
! this parameter is MANDATORY in FPMD
REAL(dbl) :: ecutrho = 0.0d0
! energy cutoff for charge density in k-space ( in Rydbergs )
! by default its value is "4 * ecutwfc"
INTEGER :: nr1 = 0
INTEGER :: nr2 = 0
INTEGER :: nr3 = 0
! dimensions of the real space grid for charge and potentials
! presently NOT used in FPMD-N
INTEGER :: nr1s = 0
INTEGER :: nr2s = 0
INTEGER :: nr3s = 0
! dimensions of the real space grid for wavefunctions
! presently NOT used in FPMD-N
INTEGER :: nr1b = 0
INTEGER :: nr2b = 0
INTEGER :: nr3b = 0
! dimensions of the "box" grid for Ultrasoft pseudopotentials
! presently NOT used in FPMD-N
CHARACTER(LEN=80) :: occupations = 'fixed'
! occupations = 'smearing' | 'tetrahedra' | 'fixed'* | 'from_input'
! select the electronic states filling mode
! 'smearing' smearing function is used around Fermi Level
! (see "ngauss" and "dgauss")
! NOT used in FPMD-N
! 'tetrahedra' tetrahedron method
! NOT used in FPMD-N
! 'fixed' fixed occupations automatically calculated
! 'from_input' fixed occupations given in the input
! ( see card 'OCCUPATIONS' )
CHARACTER(LEN=80) :: smearing = 'gaussian'
! smearing = 'gaussian', 'methfessel-paxton', 'marzari-vanderbilt', 'fermi-dirac'
REAL(dbl) :: degauss = 0.0d0
! parameter for the smearing functions
! NOT used in FPMD-N
INTEGER :: nspin = 1
! number of spinors
! "nspin = 1" for LDA simulations
! "nspin = 2" for LSD simulations
! "nspin = 4" for NON COLLINEAR simulations
REAL(dbl) :: nelup = 0.d0, neldw = 0.d0
! meaningful only if "nspin = 2",
! "nelup" is the number of electrons with spin up
! "neldw" is the number of electrons with spin down
! Remember the following relation hold "nelec = nelup + neldw"
LOGICAL :: nosym = .TRUE.
! do not use symmetry
! NOT used in FPMD-N
REAL(dbl) :: ecfixed = 0.0d0, qcutz = 0.0d0, q2sigma = 0.0d0
! parameters for constant cut-off simulations
! "ecfixed" is the value (in Rydbergs) of the constant-cutoff
! "qcutz" and "q2sigma" are the height and the width (in Rydbergs)
! of the energy step for reciprocal vector whose square modulus
! is greater than "ecfixed"
CHARACTER(LEN=80) :: xc_type = 'PZ'
! xc_type = 'BLYP' | 'BP' | 'PBE' | 'PZ' | 'PW' | 'LDA'
! select the exchange and correlation functionals
! 'BLYP' use Becke-Lee-Yang-Parr GCC-XC Functional
! 'BP' use Becke-Perdew GCC-XC Functionals
! 'PBE' use Perdew-Burke-Ernzerhof GCC-XC Functionals
! 'PZ' use Slater X, and Perdew-Zunger C Functionals
! 'PW' use Slater X, and Perdew-Wang C Functionals
! 'LDA' use LDA xc functional: the xc potential is
! calculated through an interpolation table
REAL(dbl) :: starting_magnetization( nsx ) = 0.0d0
! ONLY PWSCF
LOGICAL :: lda_plus_u = .FALSE.
! ONLY PWSCF
REAL(dbl) :: starting_ns_eigenvalue(lqmax,nspinx,nsx)=-1.0
! ONLY PWSCF
REAL(dbl) :: hubbard_u(nsx) = 0.0d0
! ONLY PWSCF
REAL(dbl) :: hubbard_alpha(nsx) = 0.0d0
! ONLY PWSCF
CHARACTER(LEN=80) :: U_projection_type = 'atomic'
! ONLY PWSCF
REAL(dbl) :: a = 0.0d0
REAL(dbl) :: c = 0.0d0
REAL(dbl) :: b = 0.0d0
REAL(dbl) :: cosab = 0.0d0
REAL(dbl) :: cosac = 0.0d0
REAL(dbl) :: cosbc = 0.0d0
INTEGER :: edir = 0
REAL(dbl) :: emaxpos = 0.0d0
REAL(dbl) :: eopreg = 0.0d0
REAL(dbl) :: eamp = 0.0d0
LOGICAL :: noncolin = .FALSE.
LOGICAL :: lspinorb = .FALSE.
REAL(dbl) :: lambda = 1.0D0
INTEGER :: i_cons = 0
REAL(dbl) :: mcons(3,nsx) = 0.0D0
REAL(dbl) :: angle1(nsx) = 0.0D0
REAL(dbl) :: angle2(nsx) = 0.0D0
INTEGER :: report = 1
CHARACTER(LEN=80) :: sic = 'none'
! sic = 'none' | 'sic_pz' | 'sic_mac' | 'only_sich' | 'only_sicxc_pz' | 'only_sicxc_mac' |
! Where:
! 'none' => self_interaction == 0 -> no USIC
! 'sic_pz' => self_interaction == 1 -> USIC = Exc[rhoup-rhodown,0] + Uhartree[rhoup-rhodown]
!! proposed by Perdew, Zunger, PRB 23 (1981) 5048
! 'sic_mac' => self_interaction == 2 -> USIC = Exc[rhoup,rhodown] - Exc[rhopaired, rhopaired] + Uhartree[rhoup-rhodown]
!! proposed by Lundin-Eriksson, IJQC 81 (2003) 247
!! implemented by Mauri-Calandra-d'Avezac (2003/04) for one electron/hole
! 'only_sich' => self_interaction == 3 -> USIC = Uhartree[rhoup-rhodown]
!!SIcorrection only on hartree part )
! 'only_sich_pz' => self_interaction == -1 -> USIC = Exc[rhoup-rhodown,0]
!!SIcorrection only on xc by PZ
! 'only_sich_mac' => self_interaction == -2 -> USIC = Exc[rhoup,rhodown] - Exc[rhopaired, rhopaired]
!!sIcorrection only on xc by MAC:
!!rhopaired==rhodown since that the charge more is defined in the highest level and up
!!rhounpaired==rhoup-rhodown
REAL(dbl) :: sic_epsilon = 1.0d0
LOGICAL :: force_pairing = .FALSE.
! FORCEPAIRING
! paires electrons forcedly in two spin channels calculation
! works for stuctures with at most one unpaired eletron
! just a comment: nelu is the number of el with spin up
! while neld== number of el with spin down
! define the unpaired el with spin up
NAMELIST / system / ibrav, celldm, a, b, c, cosab, cosac, cosbc, nat,&
ntyp, nbnd, nelec, ecutwfc, ecutrho, nr1, nr2, nr3, nr1s, nr2s, &
nr3s, nr1b, nr2b, nr3b, nosym, starting_magnetization, &
occupations, degauss, nelup, neldw, nspin, ecfixed, &
qcutz, q2sigma, xc_type, lda_plus_U, Hubbard_U, Hubbard_alpha, &
edir, emaxpos, eopreg, eamp, smearing, starting_ns_eigenvalue, &
U_projection_type, noncolin, &
lspinorb, mcons, lambda, i_cons, angle1, angle2, report, &
sic, sic_epsilon, force_pairing
!=----------------------------------------------------------------------------=!
! ELECTRONS Namelist Input Parameters
!=----------------------------------------------------------------------------=!
REAL(dbl) :: emass = 0.0d0
! effective electron mass in the CP Lagrangian,
! in atomic units ( 1 a.u. of mass = 1/1822.9 a.m.u. = 9.10939 * 10^-31 kg )
! Typical values in CP simulation are between 100. and 1000.
REAL(dbl) :: emass_cutoff = 0.0d0
! mass cut-off (in Rydbergs) for the Fourier acceleration
! effective mass is rescaled for "G" vector components with kinetic
! energy above "emass_cutoff"
! Use a value grether than "ecutwfc" to disable Fourier acceleration.
CHARACTER(LEN=80) :: orthogonalization = 'ortho'
! orthogonalization = 'Gram-Schmidt' | 'ortho'*
! selects the orthonormalization method for electronic wave functions
! 'Gram-Schmidt' use Gram-Schmidt algorithm
! 'ortho' use iterative algorithm
REAL(dbl) :: ortho_eps = 1.d-8
! meaningful only if orthogonalization = 'ortho'
! tolerance for iterative orthonormalization,
! a value of 1.d-8 is usually sufficent
INTEGER :: ortho_max = 20
! meaningful only if orthogonalization = 'ortho'
! maximum number of iterations for orthonormalization
! usually between 15 and 30.
INTEGER :: electron_maxstep = 1000
! maximum number of steps in electronic minimization
! This parameter apply only when using 'cg' electronic or
! ionic dynamics
CHARACTER(LEN=80) :: electron_dynamics = 'none'
! electron_dynamics = 'default' | 'sd' | 'cg' | 'damp' | 'md' | 'none' | 'diis'
! set how electrons shold be moved
! 'none' electronic degrees of fredom (d.o.f.) are kept fixed
! 'sd' steepest descent algorithm is used to minimize electronic d.o.f.
! 'cg' conjugate gradient algorithm is used to minimize electronic d.o.f.
! 'diis' DIIS algorithm is used to minimize electronic d.o.f.
! 'damp' damped dynamics is used to propagate electronic d.o.f.
! 'verlet' standard Verlet algorithm is used to propagate electronic d.o.f.
! 'default' the value depends on variable "calculation"
CHARACTER(LEN=80) :: electron_dynamics_allowed(7)
DATA electron_dynamics_allowed &
/ 'default', 'sd', 'cg', 'damp', 'verlet', 'none', 'diis' /
REAL(dbl) :: electron_damping = 0.0d0
! meaningful only if " electron_dynamics = 'damp' "
! damping frequency times delta t, optimal values could be
! calculated with the formula
! sqrt(0.5*log((E1-E2)/(E2-E3)))
! where E1 E2 E3 are successive values of the DFT total energy
! in a steepest descent simulations
CHARACTER(LEN=80) :: electron_velocities = 'default'
! electron_velocities = 'zero' | 'default'*
! 'zero' restart setting electronic velocities to zero
! 'default' restart using electronic velocities of the previous run
CHARACTER(LEN=80) :: electron_temperature = 'not_controlled'
! electron_temperature = 'nose' | 'not_controlled'* | 'rescaling'
! 'nose' control electronic temperature using Nose thermostat
! see parameter "fnosee" and "ekincw"
! 'rescaling' control electronic temperature via velocities rescaling
! 'not_controlled' electronic temperature is not controlled
REAL(dbl) :: ekincw = 0.0d0
! meaningful only with "electron_temperature /= 'not_controlled' "
! value of the average kinetic energy (in atomic units) forced
! by the temperature control
REAL(dbl) :: fnosee = 0.0d0
! meaningful only with "electron_temperature = 'nose' "
! oscillation frequency of the nose thermostat (in terahertz)
CHARACTER(LEN=80) :: startingwfc = 'random'
! startingwfc = 'atomic' | 'random'* | 'none'
! define how the code should initialize the wave function
! 'atomic' start from superposition of atomic wave functions
! 'random' start from random wave functions
REAL(dbl) :: ampre = 0.0d0
! meaningful only if "startingwfc = 'random'", amplitude of the
! randomization ( allowed values: 0.0 - 1.0 )
REAL(dbl) :: grease = 0.0d0
! a number <= 1, very close to 1: the damping in electronic
! damped dynamics is multiplied at each time step by "grease"
! (avoids overdamping close to convergence: Obsolete ?)
! grease = 1 : normal damped dynamics
! NOT used in FPMD
INTEGER :: empty_states_nbnd = 0
! number of empty states to be calculated every iprint steps
! default value is zero
INTEGER :: empty_states_maxstep = 100
! meaningful only with "empty_states_nbnd > 0 "
! maximum number of iteration in the empty states calculation
! default is 100
REAL(dbl) :: empty_states_delt = 1.0d0
! meaningful only with "empty_states_nbnd > 0 "
! fictitious time step to be used in the empty states iteration
! default value is "dt"
REAL(dbl) :: empty_states_emass = 500.0d0
! meaningful only with "empty_states_nbnd > 0 "
! fictitious electronic mass to be used in the empty states iteration
! default value is "emass"
REAL(dbl) :: empty_states_ethr = 1.d-4
! meaningful only with "empty_states_nbnd > 0 "
! wave function gradient threshold, for convergence of empty states
! default value is ekin_conv_thr
INTEGER :: diis_size = 0
! meaningful only with " electron_dynamics = 'diis' "
! size of the matrix used for the inversion in the iterative subspace
! default is 4, allowed value 1-5
INTEGER :: diis_nreset = 0
! meaningful only with " electron_dynamics = 'diis' "
! number of steepest descendent step after a reset of the diis
! iteration, default value is 3
REAL(dbl) :: diis_hcut = 0.d0
! meaningful only with " electron_dynamics = 'diis' "
! energy cutoff (a.u.), above which an approximate diagonal
! hamiltonian is used in finding the direction to the minimum
! default is "1.0"
REAL(dbl) :: diis_wthr = 1.d-4
! meaningful only with " electron_dynamics = 'diis' "
! convergence threshold for wave function
! this criterion is satisfied when the maximum change
! in the wave functions component between two diis steps
! is less than this threshold
! default value is ekin_conv_thr
REAL(dbl) :: diis_delt = 1.0d0
! meaningful only with " electron_dynamics = 'diis' "
! electronic time step used in the steepest descendent step
! default is "dt"
INTEGER :: diis_maxstep = 100
! meaningful only with " electron_dynamics = 'diis' "
! maximum number of iteration in the diis minimization
! default is electron_maxstep
LOGICAL :: diis_rot = .FALSE.
! meaningful only with " electron_dynamics = 'diis' "
! if "diis_rot = .TRUE." enable diis with charge mixing and rotations
! default is "diis_rot = .FALSE."
REAL(dbl) :: diis_fthr = 1.d-3
! meaningful only with "electron_dynamics='diis' " and "diis_rot=.TRUE."
! convergence threshold for ionic force
! this criterion is satisfied when the maximum change
! in the atomic force between two diis steps
! is less than this threshold
! default value is "0.0"
REAL(dbl) :: diis_temp = 0.0d0
! meaningful only with "electron_dynamics='diis' " and "diis_rot=.TRUE."
! electronic temperature, significant only if ???
REAL(dbl) :: diis_achmix = 0.0d0
! meaningful only with "electron_dynamics='diis' " and "diis_rot=.TRUE."
! "A" parameter in the charge mixing formula
! chmix = A * G^2 / (G^2 + G0^2) , G represents reciprocal lattice vectors
REAL(dbl) :: diis_g0chmix = 0.0d0
! meaningful only with "electron_dynamics='diis' " and "diis_rot=.TRUE."
! "G0^2" parameter in the charge mixing formula
INTEGER :: diis_nchmix = 0
! meaningful only with "electron_dynamics='diis' " and "diis_rot=.TRUE."
! dimension of the charge mixing
REAL(dbl) :: diis_g1chmix = 0.0d0
! meaningful only with "electron_dynamics='diis' " and "diis_rot=.TRUE."
! "G1^2" parameter in the charge mixing formula
! metric = (G^2 + G1^2) / G^2 , G represents reciprocal lattice vectors
INTEGER :: diis_nrot(3) = 0
! meaningful only with "electron_dynamics='diis' " and "diis_rot=.TRUE."
! start upgrading the charge density every "diis_nrot(1)" steps,
! then every "diis_nrot(2)", and at the end every "diis_nrot(3)",
! depending on "diis_rothr"
REAL(dbl) :: diis_rothr(3) = 1.d-4
! meaningful only with "electron_dynamics='diis' " and "diis_rot=.TRUE."
! threshold on the charge difference between two diis step
! when max charge difference is less than "diis_rothr(1)", switch
! between the "diis_nrot(1)" upgrade frequency to "diis_nrot(2)",
! then when the max charge difference is less than "diis_rothr(2)",
! switch between "diis_nrot(2)" and "diis_nrot(3)", upgrade frequency,
! finally when the max charge difference is less than "diis_nrot(3)"
! convergence is achieved
REAL(dbl) :: diis_ethr = 1.d-4
! meaningful only with "electron_dynamics='diis' " and "diis_rot=.TRUE."
! convergence threshold for energy
! this criterion is satisfied when the change
! in the energy between two diis steps
! is less than this threshold
! default value is etot_conv_thr
LOGICAL :: diis_chguess = .FALSE.
! meaningful only with "electron_dynamics='diis' " and "diis_rot=.TRUE."
! if "diis_chguess = .TRUE." enable charge density guess
! between two diis step, defaut value is "diis_chguess = .FALSE."
CHARACTER(LEN=80) :: mixing_mode = 'default'
! mixing = ????
! define how to mix wave functions
! NOT used in FPMD
REAL(dbl) :: mixing_beta = 0.0d0
! parameter for wave function mixing
! NOT used in FPMD
INTEGER :: mixing_ndim = 0
! dimension of wave function mixing
! NOT used in FPMD
CHARACTER(LEN=80) :: diagonalization = 'cg'
! diagonalization = 'cg' | 'david' | 'david_overlap' | 'diis'
! NOTA: 'david' e 'david_overlap' per eliminare la variabile "loverlap"
! NOT used in FPMD
REAL(dbl) :: diago_thr_init = 0.D0
! convergence threshold for the firts iterative diagonalization.
! NOT used in FPMD
INTEGER :: diago_cg_maxiter = 100
! NOT used in FPMD
INTEGER :: diago_david_ndim = 10
! NOT used in FPMD
INTEGER :: diago_diis_ndim = 10
! NOT used in FPMD
REAL(dbl) :: conv_thr = 1.d-6
! convergence threshold in electronic ONLY minimizations
! NOT used in FPMD
INTEGER :: mixing_fixed_ns = 0
! PWSCF only
! NOT used in FPMD
CHARACTER(LEN=80) :: startingpot = 'potfile'
! specify the file containing the DFT potential of the system
! NOT used in FPMD
NAMELIST / electrons / emass, emass_cutoff, orthogonalization, &
electron_maxstep, ortho_eps, ortho_max, electron_dynamics, &
electron_damping, electron_velocities, electron_temperature, &
ekincw, fnosee, ampre, grease, empty_states_nbnd, &
empty_states_maxstep, empty_states_delt, empty_states_emass, &
empty_states_ethr, diis_size, diis_nreset, diis_hcut, &
diis_wthr, diis_delt, diis_maxstep, diis_rot, diis_fthr, &
diis_temp, diis_achmix, diis_g0chmix, diis_g1chmix, &
diis_nchmix, diis_nrot, diis_rothr, diis_ethr, diis_chguess, &
mixing_mode, mixing_beta, mixing_ndim, mixing_fixed_ns, &
diago_cg_maxiter, diago_david_ndim, diagonalization, &
startingpot, startingwfc , conv_thr, diago_diis_ndim, &
diago_thr_init
!
!=----------------------------------------------------------------------------=!
! IONS Namelist Input Parameters
!=----------------------------------------------------------------------------=!
!
CHARACTER(LEN=80) :: ion_dynamics = 'none'
! ion_dynamics = 'sd' | 'cg' | 'damp' | 'verlet' | 'bfgs' |
! 'old-bfgs' | 'none'*
! set how ions shold be moved
! 'none' ions are kept fixed
! 'bfgs' a new BFGS algorithm is used to minimize ionic configuration
! 'old-bfgs' old BFGS algorithm is used to minimize ionic configuration
! 'sd' steepest descent algorithm is used to minimize ionic configuration
! 'cg' conjugate gradient algorithm is used to minimize ionic configuration
! 'damp' damped dynamics is used to propagate ions
! 'verlet' standard Verlet algorithm is used to propagate ions
CHARACTER(LEN=80) :: ion_dynamics_allowed(10)
DATA ion_dynamics_allowed / 'sd', 'cg', 'damp', 'verlet', 'none', &
'bfgs', 'old-bfgs', 'constrained-damp', &
'constrained-verlet', 'beeman' /
REAL(dbl) :: ion_radius(nsx) = 0.5d0
! pseudo-atomic radius of the i-th atomic species
! (for Ewald summation), values between 0.5 and 2.0 are usually used.
REAL(dbl) :: ion_damping = 0.2d0
! meaningful only if " ion_dynamics = 'damp' "
! damping frequency times delta t, optimal values could be
! calculated with the formula
! sqrt(0.5*log((E1-E2)/(E2-E3)))
! where E1 E2 E3 are successive values of the DFT total energy
! in a ionic steepest descent simulation
CHARACTER(LEN=80) :: ion_positions = 'default'
! ion_positions = 'default'* | 'from_input'
! 'default' restart the simulation with atomic positions read
! from the restart file
! 'from_input' restart the simulation with atomic positions read
! from standard input ( see the card 'ATOMIC_POSITIONS' )
CHARACTER(LEN=80) :: ion_velocities = 'default'
! ion_velocities = 'zero' | 'default'* | 'random' | 'from_input'
! 'default' restart the simulation with atomic velocities read
! from the restart file
! 'random' start the simulation with random atomic velocities
! 'from_input' restart the simulation with atomic velocities read
! from standard input (see the card 'ATOMIC_VELOCITIES' )
! 'zero' restart the simulation with atomic velocities set to zero
CHARACTER(LEN=80) :: ion_temperature = 'not_controlled'
! ion_temperature = 'nose' | 'not_controlled'* | 'rescaling'
! 'nose' control ionic temperature using Nose thermostat
! see parameters "fnosep" and "tempw"
! 'rescaling' control ionic temperature via velocities rescaling
! see parameter "tolp"
! 'not_controlled' ionic temperature is not controlled
REAL(dbl) :: tempw = 300.0d0
! meaningful only with "ion_temperature /= 'not_controlled' "
! value of the ionic temperature (in Kelvin) forced
! by the temperature control
REAL(dbl) :: fnosep = 50.0d0
! meaningful only with "ion_temperature = 'nose' "
! oscillation frequency of the nose thermostat (in terahertz)
REAL(dbl) :: tolp = 50.0d0
! meaningful only with "ion_temperature = 'rescaling' "
! tolerance (in Kelvin) of the rescaling. When ionic temperature
! differs from "tempw" more than "tolp" apply rescaling.
LOGICAL :: tranp(nsx) = .FALSE.
! tranp(i) control the randomization of the i-th atomic specie
! .TRUE. randomize ionic positions ( see "amprp" )
! .FALSE. do nothing
REAL(dbl) :: amprp(nsx) = 0.0d0
! amprp(i) meaningful only if "tranp(i) = .TRUE.", amplitude of the
! randomization ( allowed values: 0.0 - 1.0 ) for the i-th atomic specie.
! Add to the positions a random displacements vector ( in bohr radius )
! defined as: amprp( i ) * ( X, Y, Z )
! where X, Y, Z are pseudo random number in the interval [ -0.5 , 0.5 ]
REAL(dbl) :: greasp = 0.0d0
! same as "grease", for ionic damped dynamics
! NOT used in FPMD
INTEGER :: ion_nstepe = 1
! number of electronic steps for each ionic step
INTEGER :: ion_maxstep = 1000
! maximum number of step in ionic minimization
REAL(dbl) :: upscale = 0.0d0
! This variable is NOT used in FPMD
CHARACTER(LEN=80) :: potential_extrapolation = 'default'
! This variable is used only by PWSCF
! NOT used in FPMD
!
! ... variables added for "path" calculations
!
INTEGER :: input_images = 0
INTEGER :: num_of_images = 0
CHARACTER(LEN=80) :: CI_scheme = 'no-CI'
! CI_scheme = 'no-CI' | 'highest-TS' | 'all-SP' | 'manual'
! set the Climbing Image scheme
! 'no-CI' Climbing Image is not used
! 'highest-TS' Standard Climbing Image
! 'all-SP' not implemented
! 'manual' not implemented
CHARACTER(LEN=80) :: CI_scheme_allowed(4)
DATA CI_scheme_allowed / 'no-CI', 'highest-TS', 'all-SP', 'manual' /
LOGICAL :: first_last_opt = .FALSE.
LOGICAL :: reset_vel = .FALSE.
LOGICAL :: write_save = .FALSE.
CHARACTER(LEN=80) :: minimization_scheme = 'quick-min'
! minimization_scheme = 'quick-min' | 'damped-dyn' |
! 'mol-dyn' | 'sd'
! set the minimization algorithm
! 'quick-min' projected molecular dynamics
! 'damped-dyn' damped molecular dynamics
! 'mol-dyn' constant temperature molecular dynamics
! 'sd' steepest descent
CHARACTER(LEN=80) :: minimization_scheme_allowed(4)
DATA minimization_scheme_allowed / 'quick-min', 'damped-dyn', &
'mol-dyn', 'sd' /
REAL (KIND=DP) :: damp = 1.D0
! meaningful only when minimization_scheme = 'damped-verlet'
REAL (KIND=DP) :: temp_req = 0.D0
! meaningful only when minimization_scheme = 'sim-annealing'
REAL (KIND=DP) :: ds = 1.5D0
REAL (KIND=DP) :: k_max = 0.1D0, k_min = 0.1D0
REAL (KIND=DP) :: path_thr = 0.05D0
!
! ... variables added for new BFGS algorithm
!
INTEGER :: lbfgs_ndim = 1
REAL(KIND=DP) :: trust_radius_max = 0.5D0
REAL(KIND=DP) :: trust_radius_min = 1.D-5
REAL(KIND=DP) :: trust_radius_ini = 0.5D0
REAL(KIND=DP) :: trust_radius_end = 1.D-7
REAL(KIND=DP) :: w_1 = 0.5D-1
REAL(KIND=DP) :: w_2 = 0.5D0
REAL(KIND=DP) :: sic_rloc = 0.0d0
!
! ... variable added for SMD ( Y.K. 04/15/2004 )
!
LOGICAL :: smd_polm = .FALSE.
! polynomial interpolation for the initial path.
INTEGER :: smd_kwnp = 2
! # of known points for polm. interp.
LOGICAL :: smd_linr = .FALSE.
! linear interpolation for the initial path.
LOGICAL :: smd_stcd = .FALSE.
! for molecular reactions, make the 6 degrees of
! the same to prevent rotation and translation
! at the initial state.
INTEGER :: smd_stcd1, smd_stcd2, smd_stcd3
! for STCD = .true.
INTEGER :: smd_codf = 50, smd_forf = 50, smd_smwf = 1
! Frequency of writing coord, force, replica
! files
INTEGER :: smd_lmfreq = 1
! Frequencey of computing the Lag. mul.
REAL (KIND=DP) :: smd_tol = 0.0001
! Tolerance in constraints in units of
! [alpha(k)-alpha(k-1)] - 1/SM_P
!
INTEGER :: smd_maxlm = 10
! Max number of iterations for calculating
! Lag. mul.
LOGICAL :: smd_smcp = .TRUE.
LOGICAL :: smd_smopt = .FALSE.
LOGICAL :: smd_smlm = .FALSE.
LOGICAL :: smd_splc = .FALSE.
! smcp for regular elec min.
! smopt for the minimization of initial & final
! state
! smlm for SMD.
! splc for future sp locater using SMD.
REAL (KIND=DP) :: smd_ene_ini = 1.d0
REAL (KIND=DP) :: smd_ene_fin = 1.d0
!
REAL (KIND=DP) :: smd_spal = 1.d0
NAMELIST / ions / ion_dynamics, ion_radius, ion_damping, ion_positions, &
ion_velocities, ion_temperature, tempw, fnosep, tranp, amprp, greasp, &
tolp, ion_nstepe, ion_maxstep, upscale, potential_extrapolation, &
num_of_images, CI_scheme, minimization_scheme, first_last_opt, &
reset_vel, write_save, damp, temp_req, ds, k_max, k_min, path_thr, &
trust_radius_max, trust_radius_min, trust_radius_ini, trust_radius_end, &
w_1, w_2, lbfgs_ndim, sic_rloc, &
smd_polm, smd_kwnp, smd_linr, smd_stcd, smd_stcd1, smd_stcd2, smd_stcd3, &
smd_codf, smd_forf, smd_smwf, smd_lmfreq, smd_tol, smd_maxlm, smd_smcp, &
smd_smopt, smd_smlm, smd_ene_ini, smd_ene_fin
!
!=----------------------------------------------------------------------------=!
! CELL Namelist Input Parameters
!=----------------------------------------------------------------------------=!
!
CHARACTER(LEN=80) :: cell_parameters = 'default'
! cell_parameters = 'default'* | 'from_input'
! 'default' restart the simulation with cell parameters read
! from the restart file or "celldm" if "restart = 'from_scratch'"
! 'from_input' restart the simulation with cell parameters
! from standard input ( see the card 'CELL_PARAMETERS' )
CHARACTER(LEN=80) :: cell_dynamics = 'none'
! cell_dynamics = 'sd' | 'pr' | 'none'*
! set how cell shold be moved
! 'none' cell is kept fixed
! 'sd' steepest descent algorithm is used to minimize the cell
! 'pr' standard Verlet algorithm is used to propagate the cell
CHARACTER(LEN=80) :: cell_dynamics_allowed(6)
DATA cell_dynamics_allowed / 'sd', 'pr', 'none', 'w', 'damp-pr', 'damp-w' /
CHARACTER(LEN=80) :: cell_velocities = 'default'
! cell_velocities = 'zero' | 'default'*
! 'zero' restart setting cell velocitiy to zero
! 'default' restart using cell velocity of the previous run
REAL(dbl) :: press = 0.0d0
! external pressure (in GPa, remember 1 kbar = 10^8 Pa)
REAL(dbl) :: wmass = 0.0d0
! effective cell mass in the Parrinello-Rahman Lagrangian (in atomic units)
! of the order of magnitude of the total atomic mass
! (sum of the mass of the atoms) within the simulation cell.
! if you do not specify this parameters, the code will compute
! its value based on some physical consideration
CHARACTER(LEN=80) :: cell_temperature = 'not_controlled'
! cell_temperature = 'nose' | 'not_controlled'* | 'rescaling'
! 'nose' control cell temperature using Nose thermostat
! see parameters "fnoseh" and "temph"
! 'rescaling' control cell temperature via velocities rescaling
! 'not_controlled' cell temperature is not controlled
! NOT used in FPMD
REAL(dbl) :: temph = 0.0d0
! meaningful only with "cell_temperature /= 'not_controlled' "
! value of the cell temperature (in Kelvin) forced
! by the temperature control
REAL(dbl) :: fnoseh = 1.0d0
! meaningful only with "cell_temperature = 'nose' "
! oscillation frequency of the nose thermostat (in terahertz)
REAL(dbl) :: greash = 0.0d0
! same as "grease", for cell damped dynamics
CHARACTER(LEN=80) :: cell_dofree = 'all'
! cell_dofree = 'all'* | 'volume' | 'x' | 'y' | 'z' | 'xy' | 'xz' | 'yz' | 'xyz'
! select which of the cell parameters should be moved
! 'all' all axis and angles are propagated (default)
! 'volume' the cell is simply rescaled, without changing the shape
! 'x' only the "x" axis is moved
! 'y' only the "y" axis is moved
! 'z' only the "z" axis is moved
! 'xy' only the "x" and "y" axis are moved, angles are unchanged
! 'xz' only the "x" and "z" axis are moved, angles are unchanged
! 'yz' only the "y" and "z" axis are moved, angles are unchanged
! 'xyz' "x", "y" and "z" axis are moved, angles are unchanged
REAL(dbl) :: cell_factor = 0.0d0
! NOT used in FPMD
INTEGER :: cell_nstepe = 1
! number of electronic steps for each cell step
REAL(dbl) :: cell_damping = 0.0d0
! meaningful only if " cell_dynamics = 'damp' "
! damping frequency times delta t, optimal values could be
! calculated with the formula
! sqrt(0.5*log((E1-E2)/(E2-E3)))
! where E1 E2 E3 are successive values of the DFT total energy
! in a ionic steepest descent simulation
NAMELIST / cell / cell_parameters, cell_dynamics, cell_velocities, press, &
wmass, cell_temperature, temph, fnoseh, cell_dofree, greash, cell_factor, &
cell_nstepe, cell_damping
!
!=----------------------------------------------------------------------------=!
! PHONON Namelist Input Parameters
!=----------------------------------------------------------------------------=!
!
INTEGER :: modenum = 0
integer :: nq1, nq2, nq3
! number of q points in each direction
REAL(dbl) :: xqq(3) = 0.0d0
! coordinates of q point for phonon calculation
real(dbl) :: tr2_ph
NAMELIST / phonon / modenum, xqq, nq1, nq2, nq3, tr2_ph
!=----------------------------------------------------------------------------=!
! RAMAN Namelist Input Parameters
!=----------------------------------------------------------------------------=!
real(dbl) :: b_length
! length of the b-vector
logical :: lcart
! cartesian directions
NAMELIST / raman / b_length, lcart
! END manual
! ----------------------------------------------------------------------
! ----------------------------------------------------------------
! BEGIN manual
!
!=----------------------------------------------------------------------------=!
! CARDS parameters
!=----------------------------------------------------------------------------=!
!
! Note: See file read_cards.f90 for card syntax and usage
!
! ATOMIC_SPECIES
!
CHARACTER(LEN=4) :: atom_label(nsx) = 'XX' ! label of the atomic species being read
CHARACTER(LEN=80) :: atom_pfile(nsx) = 'YY' ! pseudopotential file name
REAL(dbl) :: atom_mass(nsx) = 0.0d0 ! atomic mass of the i-th atomic species
! in atomic mass units: 1 a.m.u. = 1822.9 a.u. = 1.6605 * 10^-27 kg
LOGICAL :: taspc = .FALSE.
!
! ATOMIC_POSITIONS
!
REAL(dbl) :: rd_pos(3,natx) = 0.0d0 ! unsorted position from input
INTEGER :: sp_pos(natx) = 0
INTEGER :: if_pos(3,natx) = 1
INTEGER :: id_loc(natx) = 0
INTEGER :: na_inp(nsx) = 0 ! number of atom for each specie
LOGICAL :: tapos = .FALSE.
CHARACTER(LEN=80) :: atomic_positions = 'crystal'
! atomic_positions = 'bohr' | 'angstrong' | 'crystal' | 'alat'
! select the units for the atomic positions being read from stdin
!
! ... variable added for NEB ( C.S. 17/10/2003 )
!
REAL (KIND=DP), ALLOCATABLE :: pos(:,:)
!
! ION_VELOCITIES
!
REAL(dbl) :: rd_vel(3,natx) = 0.0d0 ! unsorted velocities from input
INTEGER :: sp_vel(natx) = 0
LOGICAL :: tavel = .FALSE.
!
! KPOINTS
!
! ... k-points inputs
LOGICAL :: tk_inp = .FALSE.
REAL(dbl) :: xk(3,npkx) = 0.0d0, wk(npkx) = 0.0d0
INTEGER :: nkstot = 0, nk1 = 0, nk2 = 0, nk3 = 0, k1 = 0, k2 = 0, k3 = 0
CHARACTER(LEN=80) :: k_points = 'gamma'
! k_points = 'automatic' | 'crystal' | 'tpiba' | 'gamma'*
! select the k points mesh
! 'automatic' k points mesh is generated automatically
! with Monkhorst-Pack algorithm
! 'crystal' k points mesh is given in stdin in scaled units
! 'tpiba' k points mesh is given in stdin in units of ( 2 PI / alat )
! 'gamma' only gamma point is used ( default in CPMD simulation )
!
! NEWNFI
!
LOGICAL :: tnewnfi_card = .FALSE.
INTEGER :: newnfi_card = 0
!
! 2DPROCMESH
!
LOGICAL :: t2dpegrid_inp = .FALSE.
!
! OCCUPATIONS
!
REAL(dbl) :: f_inp(nbndxx, nspinx) = 0.0d0
LOGICAL :: tf_inp = .FALSE.
!
! VHMEAN
!
! ... card planar mean of the Hartree potential
LOGICAL :: tvhmean_inp = .FALSE.
INTEGER :: vhnr_inp = 0, vhiunit_inp = 0
REAL(dbl) :: vhrmin_inp = 0.0d0, vhrmax_inp = 0.0d0
CHARACTER :: vhasse_inp = 'X'
!
! OPTICAL
!
LOGICAL :: toptical_card = .FALSE.
REAL(dbl) :: woptical = 0.0d0, boptical = 0.0d0
INTEGER :: noptical = 0
!
! DIPOLE
!
LOGICAL :: tdipole_card = .FALSE.
!
! ESR
!
INTEGER :: iesr_inp = 1
!
! NEIGHBOURS
!
LOGICAL :: tneighbo = .FALSE.
REAL(dbl) :: neighbo_radius = 0.0d0
!
! PSTAB
!
LOGICAL :: tpstab_inp = .FALSE.
INTEGER :: pstab_size_inp = 10000
!
! CELL_PARAMETERS
!
REAL(dbl) :: rd_ht(3,3) = 0.0d0
CHARACTER(len=80) :: cell_symmetry = 'none'
CHARACTER(LEN=80) :: cell_units = 'alat'
LOGICAL :: trd_ht = .FALSE.
!
! TURBO
!
LOGICAL :: tturbo_inp = .FALSE.
INTEGER :: nturbo_inp = 0
!
! CONSTRAINTS
!
INTEGER :: nconstr_inp = 0
REAL(dbl) :: constr_tol_inp = 0.0d0
INTEGER :: constr_type_inp(natx) = 0
INTEGER :: constr_inp(2,natx) = 0
REAL(dbl) :: constr_dist_inp(natx) = 0.0d0
!
! KOHN_SHAM
!
LOGICAL :: tprnks( nbndxx, nspinx ) = .FALSE.
! logical mask used to specify which kohn sham orbital should be
! written to files 'KS.'
LOGICAL :: tprnks_empty( nbndxx, nspinx ) = .FALSE.
! logical mask used to specify which empty kohn sham orbital should be
! written to files 'KS_EMP.'
CHARACTER(LEN=256) :: ks_path = './'
!
! CHI2
!
LOGICAL :: tchi2_inp = .FALSE.
!
! ELECTRONIC ANNEALING (obsolete)
!
LOGICAL :: anne_inp = .FALSE.
REAL(dbl) :: anner_inp = 0.0d0
!
! EXCHANGE AND CORRELATION
!
INTEGER :: narray_inp = 50000
REAL(dbl) :: rmxxc_inp = 5.0d0
!
! SCRATCH DIRECTORY
!
LOGICAL :: tscra_inp = .FALSE.
CHARACTER(LEN=256) :: scradir = './'
!
! RHOOUT
!
LOGICAL :: tprnrho = .FALSE.
!
! CLIMBING_IMAGES
!
!
! ... variable added for NEB ( C.S. 20/11/2003 )
!
LOGICAL, ALLOCATABLE :: climbing(:)
! END manual
! ----------------------------------------------------------------------
!
CONTAINS
!
SUBROUTINE deallocate_input_parameters()
!
IMPLICIT NONE
!
!
IF ( ALLOCATED( pos ) ) DEALLOCATE( pos )
IF ( ALLOCATED( climbing ) ) DEALLOCATE( climbing )
!
END SUBROUTINE deallocate_input_parameters
!
!=----------------------------------------------------------------------------=!
!
END MODULE input_parameters
!
!=----------------------------------------------------------------------------=!