[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