[gpaw-users] Optimizing the unit cell using stress tensor
Marcin Dulak
Marcin.Dulak at fysik.dtu.dk
Mon Feb 9 10:20:06 CET 2015
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 <http://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 list
>> gpaw-users at listserv.fysik.dtu.dk
>> https://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/c025dfdc/attachment.html>
More information about the gpaw-users
mailing list