Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Nordland

Pages: 1 ... 52 53 [54] 55
796
It is my experience that one of the lattice types that is notorious hard to perform good calculations of the lattices constants on
is the semi-conducting wurtzite crystals. Again I have tryed only with the default parameters to see how good the agreement is between experimental values
and calculation.
Quote
# ----------------------------------------
# Lattices parameters (Hexagonal)
# ----------------------------------------
# A = 3.20426776283 Ang
# C = 5.21758120909 Ang
# ----------------------------------------
# Fractional coordinates
# -----------------------------------------
# Index  Element  x (frac)   y (frac)   z (frac)
#    0      Ga       0.333378051061      0.666729233831       0.0040187886993
#    1      Ga       0.666698321157      0.333359730274       0.504110187473
#    2       N        0.333371154227      0.66669569163         0.380881963248
#    3       N        0.66671438049        0.333401955497       0.880886063456
The experimential values are A = 3.18 Ang, C = 5.1660 Ang and U = 0.385.
The errors for A is 0.7%, and the errors for C is 1%,  and for U is also 1%

Again this is done using the default parameters, it can properly be done even better if the parameters are tuned to
give better results for GaN.

797
I have applied this functionality on Si(fcc) to see how good agreement, you can get by using only the default parameters
of ATK, between the calculated lattice constant and the experimental value.

Quote
# ----------------------------------------
# Lattices parameters (FaceCenteredCubic)
# ----------------------------------------
# A = 5.41146687312 Ang

The experimental value is 5.4306 Ang, and therefore the errors is only 0.3%! and that is using only default parameters!
I have attached the script for reproducing these results ( as well the results )

798
Hey everyone.

I have created a script for calculating the approximative stress on the unitcell for bulk crystal. I have combined this
with the relaxation module that comes with ATK, and tries to use the same interface as the one official included.

Given a bulk configuration and method to be used, it will first optimized the internal structure of the unitcell according to
the forces on the atoms, and then it will calculate the approximative stress on the unitcell, and scale the unitcell according to
the stress. It will then calculate the optimized internal geometry again, and calculate the stress again and repeat this cycle until
all the forces and stress are below a certain threshold.

Normally the fastest way to calculate the optimized geometry for bulk configuration in ATK is using the equation of state,
however for more complex systems like wurtzite ZnO, it requires alot of calculations! In these cases I think this script is
superior, however for simple systems like Si(FCC) the equation of states is properly better.

However when the goal is to determine the effect of pressure and strain on the unitcell on the band gap etc, it is important that the unitcell
is in equilibrium, and therefore I find this script quite usefull.

The usage is pretty straight forward - download this script and use it in the following way:
Quote
from stress_optimizers import *
....
optimized_conf = calculateOptimizedBulkConfiguration(configuration,
                                                                                         method,
                                                                                         runtime_parameters,
                                                                                         geometric_optimization_parameters,
                                                                                         stress_tolerance = 5.0e-3*Units.eV/Units.Ang**3,
                                                                                         maximum_iterations = 100)

  • The configuration is the bulk configuration to be optimized.
  • The method is the KohnShamMethod to be used for this optimization.
  • The runtime parameters for control the verbosity and checkpoint file.
  • The geometric_optimization_parameters is the ATK geometric optimization parameters for the forces.
  • The stress tolerance thresshold for the optimization - default 5.0e-3 ev/Ang**3
  • Maximum iterations is the maximum number of iterations of the unitcell optimization.

Feel free to use.

Updated 1:
Updated the script to correctly support cells where the conventional cell and the primitive cell is not identical.

Updated 2:
Updated with version that are MPI safe and allows the user to constrain atoms.

799
And by the way do you have access to the newest version of VNL?

800
I am not sure there exist any other program for building nanowires,
but it is possible to build structures in external programs and input them into VNL.

However I have made a python builder for atomic wires, that can create defects and strains,
if it has any value for you, I can try to find it.

801
It depends on what you want to study - if you want to see how the band gap for instance behave under pressure,
you could just make two calculations with very close lattice constants and then compare the difference in energy bandgap
to determinethe stress.

However if you want strain or stress analysis it requires some thing and somre sparetime. ;)

802
Hej Rosen.

You can either perform a bulk calculation of the twoprobe system as described here (Equivalent Bulk Calculation of TwoProbe) and the use my script for finding the bandgap.

However if it is a molecular junction you are modelling, then I suggest making a seperate calculation of the molecule alone, and use the molecular spectrum to determine the band gap.

803
Hey Rosen.

I have posted a script for calculating the band gap in bulk systems.
You can find it here - ( Band gap for bulk systems )

For molecule it is straight forward, you simply perform a calculation on the desired molecule, and
calculate the molecular spectrum. The substract the first positive energy from the last negative and you get the homo-lumo:
Quote
molecular_energy_spectrum = calculateMolecularEnergySpectrum(self_consistent_calculation = scf)
nlPrint(molecular_energy_spectrum)

For the H2 molecule this gives the following output:
Quote
# -----------------------------------------------------------------------------
# Energy Spectrum
# -----------------------------------------------------------------------------
# Energy (eV)
       -10.17
         2.84
         8.41
        12.92
        12.92
        16.42
        31.75
        32.56
        32.56
        70.26
So in this case the band gap is 2.84 - (-10.17) = 13.01 eV.

804
If you want to calculate the bandgap of a semi-conductor or an insulator I have created a small script
that does it for you and I have attached it to this post.

Simple perform a calculation, and store the results in a NetCDF file,
and edit the script bandgap.py to point at this netcdf file, and the run it as normal:
atk bandgap.py

It will produced the following output ( based on ZnSe calculation ):
Quote
Band Gap =  1.18165139396 eV

For test purposes I have also attached the script for performing calculation on znse

Edit:
Updated the scripted in a slight faster version, but it also calculates the indirect band gap now.

805
I also did it for a calculation for Acetylene (C2H2) and compare the values to Blaha et al.
Quote
LDA.PZ     =  20.2639146361 eV
GGA.PBE    =  18.5128556649 eV
GGA.revPBE =  18.2398891734 eV
The all-electron calculation gives 17.9944 and reports a 17.5608 for the experimental value.

806
The reason for the error is that the system has converged to some unphysical state.
This is either a geometry issue or insufficient parameters. Perhaps if you posted your
script, I could help in trying to fix this issue.

Regarding the band gap - is it a molecule or is it bulk you are trying to determine the band gap in?



807
For those experts, that want to use ASE inside ATK 2008.10, I have written a small guide for installation of ASE into ATK 2008.10.
It is very straight forward, it requires 3 shell commands and you need to insert a small piece of code into the setup.py of ASE.

Use at own risk - but it should be risk-free.

0) Download and unpack ASE from (Atomic Simulatoin Environment)
1) Execute in a shell "mkdir -p PATH_TO_YOUR_ATK/lib/python2.4/config"
2) Execute in a shell "touch PATH_TO_YOUR_ATK/lib/python2.4/config/Makefile"
3) Enter the unpacked ASE directory and edit the file setup.py - Go to line 11 where it writes "import sys".
    Insert the following line "sys.argv = sys.argv[1:]" on line 12. Save and exit.
4) Now install just like your would normally "ATH_TO_YOUR_ATK/bin/atk setup.py install"

And now you can start up ATK and write from ase import * and you are ready to use ASE from within ATK.

Note:
   Other similar python packages can be installed in the exact same way!



808
For the methane case using default parameters I found the following:
Quote
LDA.PZ = 20.622076671 eV
GGA.PBE = 18.9564183782 eV
GGA.revPBE = 18.7426438569 eV
The experimental value is 18.16 eV and Bhala et al gets it to be 18.21 eV.
Again the error is only around 3-4%, however it is clear that you must use the revPBE functional in order to get good atomization energies as the error for LDA is in the order of 20%!

Please feel free to post your own atomization energy calculations!

809
I did a calculation of the atomization energy of a Hydrogen molecule (H2).
I got the following values for the atomization energy of the molecule using default parameters.
Quote
LDA.PZ = 4.79218961857 eV
GGA.PBE = 4.47776121909 eV
GGA.revPBE = 4.50626999466 eV
According to Blaha et al, the all-electron calculation gives 4.54 eV.
Futhermore I found this experimental value to be 4.7 eV, so I think it is quite close.

I have attached the script to perform the calculation.

810
Hey everyone.

I just wanted to share with you a script that I made for calculating the atomization energy of molecules using NanoLanguage.
You can use the script either by copying the code directly into your own program or
 you can also just download the script and store it along your other scripts and use it by writing:
Quote
from AtomizationEnergy import *
E = calculateAtomizationEnergy(molecule, method, verbosity)

Please feel free to use and share! :)

Pages: 1 ... 52 53 [54] 55