[CP2K:1541] ewald_type none
Laino Teodoro
teodor... at gmail.com
Mon Nov 10 19:30:05 UTC 2008
Dear Chris,
EWALD_TYPE NONE means compute energy and forces with standard Coulomb
potential BUT shifting the Coulomb
potential in such a way that it is zero at the RCUT_NONBONDED.
Therefore you see forces consistent but energy not (just for a
constant). It is correct in this way.. there's no error.
Best Regards,
Teo
On 10 Nov 2008, at 20:26, Christopher Knight wrote:
>
>
> Hello everyone,
>
> I've noticed something unexpected when calculating electrostatics
> using EWALD_TYPE NONE.
>
> I place two atoms of opposite charge in a large box and ask what is
> the potential energy due to electrostatics. For the energy and
> magnitude of the force on the particles, I expect the following in
> atomic units:
>
> q1 = 1.0e
> q2 = -1.0e
> r = 5.669 Bohr
>
> Energy = q1 * q2 / r = -0.1764
> Force = Energy / r = 0.03111
>
> If I ask CP2K for the potential energy and force using EWALD_TYPE
> SPME, I get the following results:
>
> Energy = -0.1730
> Force = 0.03109
>
> in agreement with what I expect.
>
>
> If I ask CP2K for the potential energy and force using EWALD_TYPE
> NONE, I get the following results:
>
> Energy = -0.02520
> Force = 0.03111
>
> where the magnitude of the force is correct, but the energy is not.
>
> Below is a small input file that reproduces this result. I see the
> same results with three different executables. Two used the current
> cvs source, compiled serially w/ gfortran(v4.3.2) w/ -O0 and -O3
> optimization levels, lapack, and blas on a Linux-x86-64 machine. The
> other is a slightly older cvs source, compiled in parallel w/
> intel(v9.1.###) and mkl on a Linux-x86-64 machine. Is this result
> reproducible on your machines?
>
>
>
>
> I've managed to track this down to a call to the "potential_s"
> function
> on line 459 in fist_nonbond_force.F.
>
> ...
> rab = rab_com
> rab2 = rab2_com
> energy = potential_s(c_spline_data,rab2,fscalar,spl_c,logger)
> pot_nonbond = pot_nonbond + energy*fac
> fscalar = fscalar*fac
> fr(1) = fscalar*rab(1)
> fr(2) = fscalar*rab(2)
> fr(3) = fscalar*rab(3)
> ...
>
> At this point in the code, the variables take the following values:
>
> rab: 0.0000000000000000 0.0000000000000000
> -5.6691783986569284
> rab2: 32.139583715798338
> fac: 1.00000000000000000
> energy: -2.51989146947666810E-002
> fscalar: -5.48832257515032094E-003
>
>
> I'm having trouble reading the code for the "potential_s" function. I
> wonder if it is being passed the correct info, the output is being
> handled correctly, or(probably the more likely) the input file needs
> modification. Could someone please check this? Am I just making a
> silly mistake?
>
>
> Thanks in advance,
>
> chris
>
>
> ==============================================
>
> &GLOBAL
> PRINT_LEVEL LOW
> PREFERRED_FFT_LIBRARY FFTSG
> RUN_TYPE MD
> &END GLOBAL
>
> &MOTION
> &MD
> ENSEMBLE NVE
> STEPS 0
> TIMESTEP 0.5
> TEMPERATURE 300
> &END MD
> &END MOTION
>
> &FORCE_EVAL
> METHOD FIST
>
> &PRINT
> &FORCES ON
> FILENAME =force.txt
> &END FORCES
> &END
>
> &MM
> &FORCEFIELD
> &CHARGE
> ATOM O
> CHARGE -1
> &END CHARGE
>
> &CHARGE
> ATOM H
> CHARGE 1
> &END CHARGE
>
> &NONBONDED
> &GENPOT
> ATOMS O O
> FUNCTION 0.0
> VARIABLES R
> RCUT 3.5
> &END GENPOT
> &GENPOT
> ATOMS O H
> FUNCTION 0.0
> VARIABLES R
> RCUT 3.5
> &END GENPOT
> &GENPOT
> ATOMS H H
> FUNCTION 0.0
> VARIABLES R
> RCUT 3.5
> &END GENPOT
> &END NONBONDED
> &END FORCEFIELD
>
> &POISSON
> &EWALD
> EWALD_TYPE none !spme
> ALPHA .44
> GMAX 20
> O_SPLINE 6
> &END EWALD
> &END POISSON
> &END MM
>
> &SUBSYS
> &CELL
> A 30.00 0.00 0.00
> B 0.00 30.00 0.00
> C 0.00 0.00 30.00
> UNIT ANGSTROM
> &END CELL
>
> &COORD
> O 0.0 0.0 0.0
> H 0.0 0.0 3.0
> &END COORD
>
> &END SUBSYS
> &END FORCE_EVAL
>
>
>
> >
More information about the CP2K-user
mailing list