[Pw_forum] Problem with bfgs relaxation
Carlo Sbraccia
sbraccia at sissa.it
Sat Nov 20 13:37:08 CET 2004
Dear Serge,
First a comment on forc_conv_thr:
the threshold on the forces means that the convergence is achieved when
all the components of the force vector are smaller than forc_conv_thr.
Mathematicians would say that you ask the L-infinity-norm of the vector
F to be smaller than forc_conv_thr.
Instead Total force is the L-2-norm of the force vector and is generally
used to check that the threshold on the self-consistency is adeguate for
the forces (this is roughly true when Total force >> Total SCF correction).
Nevertheless BFGS claims that it's converged because the trust radius is
smaller that the minimum value, even if the minimum has not been found.
This means that something wrong is appening during the relaxation. If
you post the complete output file I'll try to trace where is the error.
best,
carlo
Serge Nakhmanson wrote:
> Dear All,
>
> I am trying to relax a small (BaTiO_3)_1/(CaTiO_3)_1 superlattice with
> new
> bfgs routine (PWscf in ESPRESSO 2.1). However, the routine seems to
> completely
> ignore the force convergence threshold (forc_conv_thr) in my input
> file and
> claims that it has converged even when forces in the system are large.
>
> Here is my input file:
>
> **********************************
>
> &CONTROL
> title = '(BaTiO_3)_1/(CaTiO_3)_1 superlattice' ,
> calculation = 'relax' ,
> restart_mode = 'from_scratch' ,
> outdir = './',
> pseudo_dir =
> '/home/nakhmans/Codes/PWSCF/PSP/Ultrasoft/USPP_UPF/' ,
> prefix = 'B1C1.c_fit' ,
> verbosity = 'high',
> tstress = .true.,
> nstep = 100,
> etot_conv_thr = 5.e-5,
> forc_conv_thr = 4.e-5,
> /
> &SYSTEM
> ibrav = 6,
> celldm(1) = 7.29064,
> celldm(3) = 2.00,
> nat = 10,
> ntyp = 4,
> ecutwfc = 25,
> ecutrho = 225,
> /
> &ELECTRONS
> conv_thr = 1.e-8 ,
> startingpot = 'atomic' ,
> startingwfc = 'atomic' ,
> mixing_mode = 'plain' ,
> mixing_beta = 0.7 ,
> /
>
> &IONS
> ion_dynamics = 'bfgs',
> /
> ATOMIC_SPECIES
> Ba 137.32700 056-Ba-ca-sp-vgrp.uspp.UPF
> Ca 40.07800 020-Ca-ca-sp-vgrp.uspp.UPF
> Ti 47.86700 022-Ti-ca-sp-vgrp.uspp.UPF
> O 16.00000 008-O-ca--vgrp.uspp.UPF
> ATOMIC_POSITIONS alat
> Ba 0.000000000 0.000000000 0.000000000
> Ti 0.500000000 0.500000000 0.500000000
> O 0.000000000 0.500000000 0.500000000
> O 0.500000000 0.000000000 0.500000000
> O 0.500000000 0.500000000 0.000000000
> Ca 0.000000000 0.000000000 1.005000000
> Ti 0.500000000 0.500000000 1.500000000
> O 0.000000000 0.500000000 1.500000000
> O 0.500000000 0.000000000 1.500000000
> O 0.500000000 0.500000000 1.000000000
> K_POINTS automatic
> 6 6 3 0 0 0
>
> *********************************
>
> A small change in the Ca atom position along Z is to enforce P4mm
> symmetry
> during relaxation.
>
> Here's what I get in the output:
>
> ***********************************
>
> ! total energy = -552.10767780 ryd
> estimated scf accuracy < 7.8E-10 ryd
>
>
> band energy sum = -26.93676693 ryd
> one-electron contribution = -158.68930900 ryd
> hartree contribution = 123.78105246 ryd
> xc contribution = -88.35663862 ryd
> ewald contribution = -428.84278264 ryd
>
>
> convergence has been achieved
>
>
> Forces acting on atoms (Ry/au):
>
>
> atom 1 type 1 force = 0.00000000 0.00000000
> 0.00111050
> atom 2 type 3 force = 0.00000000 0.00000000
> 0.00011367
> atom 3 type 4 force = 0.00000000 0.00000000
> -0.00017387
> atom 4 type 4 force = 0.00000000 0.00000000
> -0.00017387
> atom 5 type 4 force = 0.00000000 0.00000000
> -0.00064692
> atom 6 type 2 force = 0.00000000 0.00000000
> 0.00067175
> atom 7 type 3 force = 0.00000000 0.00000000
> -0.00046149
> atom 8 type 4 force = 0.00000000 0.00000000
> 0.00008750
> atom 9 type 4 force = 0.00000000 0.00000000
> 0.00008750
> atom 10 type 4 force = 0.00000000 0.00000000
> -0.00061476
>
>
> Total force = 0.001668 Total SCF correction = 0.000063
>
>
> entering subroutine stress ...
>
>
> total stress (ryd/bohr**3) (kbar)
> P= -26.63
> -0.00016828 0.00000000 0.00000000 -24.75 0.00 0.00
> 0.00000000 -0.00016828 0.00000000 0.00 -24.75 0.00
> 0.00000000 0.00000000 -0.00020644 0.00 0.00 -30.37
>
>
>
>
> [ ... cut ... ]
>
>
> number of scf cycles = 38
> number of bfgs steps = 23
>
> energy old = -552.1076788015 ryd
> energy new = -552.1076778004 ryd
>
>
> CASE: energy_new > energy_old
>
>
> new trust radius = 0.0000000818 bohr
>
>
>
>
> bfgs converged in 38 scf cycles and 23 bfgs steps
>
>
> End of BFGS geometry calculation
>
>
> Final energy = -552.1076788015 ryd
>
>
> Saving the approximate inverse hessian
>
>
> [ ... cut ... ]
>
>
> **************************
>
> How could this thing be converged if total force is 0.001668 and I
> asked for < 0.00004?
>
> Here's grep on "Total force" in my output file:
>
> **************************
>
> Total force = 0.058112 Total SCF correction = 0.000056
> Total force = 0.124018 Total SCF correction = 0.000195
> Total force = 0.156460 Total SCF correction = 0.000459
> Total force = 0.016897 Total SCF correction = 0.000249
> Total force = 0.007370 Total SCF correction = 0.000379
> Total force = 0.000659 Total SCF correction = 0.000384
> Total force = 0.000629 Total SCF correction = 0.000263
> Total force = 0.000587 Total SCF correction = 0.000093
> Total force = 0.000705 Total SCF correction = 0.000024
> Total force = 0.001393 Total SCF correction = 0.000055
> Total force = 0.001880 Total SCF correction = 0.000052
> Total force = 0.001596 Total SCF correction = 0.000088
> Total force = 0.002010 Total SCF correction = 0.000037
> Total force = 0.001721 Total SCF correction = 0.000059
> Total force = 0.002024 Total SCF correction = 0.000051
> Total force = 0.001842 Total SCF correction = 0.000032
> Total force = 0.001772 Total SCF correction = 0.000145
> Total force = 0.001728 Total SCF correction = 0.000180
> Total force = 0.001743 Total SCF correction = 0.000130
> Total force = 0.001733 Total SCF correction = 0.000094
> Total force = 0.001745 Total SCF correction = 0.000154
> Total force = 0.001726 Total SCF correction = 0.000095
> Total force = 0.001744 Total SCF correction = 0.000144
> Total force = 0.001718 Total SCF correction = 0.000101
> Total force = 0.001677 Total SCF correction = 0.000142
> Total force = 0.001705 Total SCF correction = 0.000066
> Total force = 0.001675 Total SCF correction = 0.000196
> Total force = 0.001706 Total SCF correction = 0.000082
> Total force = 0.001674 Total SCF correction = 0.000058
> Total force = 0.001674 Total SCF correction = 0.000056
> Total force = 0.001661 Total SCF correction = 0.000164
> Total force = 0.001673 Total SCF correction = 0.000032
> Total force = 0.001668 Total SCF correction = 0.000100
> Total force = 0.001653 Total SCF correction = 0.000168
> Total force = 0.001662 Total SCF correction = 0.000085
> Total force = 0.001666 Total SCF correction = 0.000043
> Total force = 0.001657 Total SCF correction = 0.000069
> Total force = 0.001668 Total SCF correction = 0.000063
>
> **************************
>
> The force does not go down and something is definitely wrong here!
> I run a few similar calculations with a slightly different c
> (celldm(3) = 2.05 and 2.10), which converge much better, to total
> force of 0.000018 and 0.000064 respectively. In the latter case it
> is still not what I asked for.
>
> Would appreciate any ideas on how to fix this and get forces below
> the treshold that I want. If this treshold is ridiculous or I need
> to switch to a different relaxation routine, PLZ let me know as well.
>
> Thanks,
>
> Serge
>
More information about the users
mailing list