[gpaw-users] Optimizing the unit cell using stress tensor
sollebac
sollebac at gmail.com
Mon Feb 9 13:59:59 CET 2015
Dear Marcin,
Ok, Thank you very much, Im going try in that way.
All the best
Jose Luis
On Mon, Feb 9, 2015 at 3:20 AM, Marcin Dulak <Marcin.Dulak at fysik.dtu.dk>
wrote:
> On 02/09/2015 09:19 AM, Filip Anselm Rasmussen wrote:
>
> Dear Jose,
>
> This is actually more a ASE-related question, but let's take it here
> anyway:
> As is written on the ASE web site (
> https://wiki.fysik.dtu.dk/ase/ase/constraints.html#ase.constraints.UnitCellFilter)
> both the UnitCellFilter and StrainFilter objects come with an optional mask
> parameter that specifies which stress tensor components are allowed to be
> non-zero (i.e. applied in the relaxation). If you only want to relax in the
> z-direction you thus simply do this:
>
> mask = [0, 0, 1, 0, 0, 0] # = [xx, yy, zz, yz, xz, xy] - we only need
> zz-component
> uf = UnitCellFilter(a, mask=mask)
>
> If you only want your lattice constant to be relaxed and not the internal
> atomic positions I would suggest you use the StrainFilter class instead, it
> should also make the relaxation more stable.
> One is also sometimes required to use a rather high PW cut-off when
> relaxing units cells because the number of plane waves will change as the
> unit cell changes and this can introduce small variations in the energy.
> Personally I've in some cases needed as much as 750 eV to make the
> relaxation stable.
>
> the exercise
> https://wiki.fysik.dtu.dk/gpaw/exercises/stress/stress.html
> shows how to fix the number of plane waves based on the starting cell
> geometry:
>
> mode=PW(400, cell=a.get_cell()), # fix no of planewaves!
>
> but even doing this I think you will still need a large cutoff.
>
> Best regards,
>
> Marcin
>
>
>
> - Filip
>
> On 2015-02-08 05:51, sollebac wrote:
>
> Dear gpaw users,
>
> I'm trying to relax a nanotube C using the stress tensor, then
> i set periodic boundary conditions only in z direction [
> pbc=(False,False True) ]
> im wondering if there is a way to fix the "X" and "Y" sides of the unit
> cell and let move only in "z" direction?
>
> The nanotube is in a supercell and only is peridic in z ,
> here is the script that im using that is similar to example in the web :
> https://wiki.fysik.dtu.dk/gpaw/exercises/stress/stress.html
>
> i just want relax the nanotube and find the lattice parameter but
> only in z direction
>
> from ase import Atoms
> from ase.lattice import bulk
> from ase.optimize.bfgs import BFGS
> from ase.constraints import UnitCellFilter
> from gpaw import GPAW
> from gpaw import PW
> import numpy as np
> from ase.structure import nanotube
> from ase.io import read,write
>
> a=nanotube(7, 0, length=1, bond=1.4, symbol='C')
> a.center()
> a.set_pbc((False,False,True))
> write('a.traj', a)
> calc = GPAW(xc='PBE',
> mode=PW(100),
> # mode=PW(400, cell=a.get_cell()), # fix no of planewaves!
> kpts=(1, 1, 3),
> # convergence={'eigenstates': 1.e-10}, # converge tightly!
> txt='stress.txt')
>
> a.set_calculator(calc)
>
> uf = UnitCellFilter(a)
> relax = BFGS(uf)
> relax.run(fmax=0.05) # Consider much tighter fmax!
>
>
> b=a.get_cell()[0]
> #b=a.get_cell()
> print "Unit cell = ",a.get_cell()
>
>
>
> any advice is welcome
> thank you very much
>
> Jose Luis
>
>
>
> _______________________________________________
> gpaw-users mailing listgpaw-users at listserv.fysik.dtu.dkhttps://listserv.fysik.dtu.dk/mailman/listinfo/gpaw-users
>
>
>
>
> _______________________________________________
> gpaw-users mailing listgpaw-users at listserv.fysik.dtu.dkhttps://listserv.fysik.dtu.dk/mailman/listinfo/gpaw-users
>
>
>
> _______________________________________________
> gpaw-users mailing list
> gpaw-users at listserv.fysik.dtu.dk
> https://listserv.fysik.dtu.dk/mailman/listinfo/gpaw-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.fysik.dtu.dk/pipermail/gpaw-users/attachments/20150209/fc942410/attachment.html>
More information about the gpaw-users
mailing list