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 - Daniele Stradi

Pages: 1 ... 14 15 [16] 17 18 ... 20
226
It is possible for the A and B vectors, but the C vector must be orthogonal to A and B.

227
General Questions and Answers / Re: Visualize vdW forces
« on: September 29, 2016, 13:37 »
Do you mean by using a method such as DFT+D2 or DFT+D3? F_tot = F_DFT + F_vdW, and you want to know how much is _vdW. Is it correct?

228
It can be done with some atkpython scripting, but unfortunately at the moment we don't have a working and tested script for that.

Essentially, what you want to do is:

1) for each value of Z, the cell size length, calculate the ProjectedLocalDensityOfStates
2) extract the energies and the values of the PLDOS
3) scan the energies of the unoccupied levels of the PLDOS from the Fermi level to find the index at which the value of the PLDOS gets above a certain user specified threshold (e.g. 0.001 eV-1)
4) calculate the energy at that same index. That energy correspond to the value of the CBM at that particular value of Z

Regards,
Daniele.

229
Dear Peraz,

both conditions are valid, but at the moment we use Dirichlet because the SCF convergence is easier, as the electrodes do not enter in the SCF loop. Using Dirichlet has the only additional constrain that you have to ensure that the electric field is zero at the boundary with the electrode.

We are working on an implementation of the Neumann boudary conditions, but it is not straightforward because the electrodes have to be treated self-consistently within DFT.

Notice also that it should be possible to select all and only the valid options in the Script generator in VNL.

Regards,
Daniele.

231
General Questions and Answers / Re: Vibration of CO on Cu (001)
« on: September 27, 2016, 16:19 »
Hi,

In your DynamicalMatrix block you have not turned off the automatic detection of repetitions:

# -------------------------------------------------------------
# Dynamical Matrix
# -------------------------------------------------------------
dynamical_matrix = DynamicalMatrix(
    configuration=bulk_configuration,
    repetitions=Automatic,
    atomic_displacement=0.01*Angstrom,
    acoustic_sum_rule=False,
    symmetrize=False,
    finite_difference_method=Central,
    processes_per_displacement=1,
    constraints=[0, 1, 2, 3],
    )
nlsave('Copper.nc', dynamical_matrix)

The automatic detection of repetitions should not be used for 0D (molecules), 1D (wires) and 2D (slabs) systems.  It works reliably only for 3D (bulk) systems.
In your case, the automatic repetition determines that the size of the system to get the correct phonons for the Cu surface is [7x7x3]. Notice how you have 3 repetitions along the Z axis, which of course does not make sense for a 2D slab. You can see it in the log file:

+------------------------------------------------------------------------------+
| Automatically detected repetitions = [7 7 3]                                 |
+------------------------------------------------------------------------------+

Your system has 10 atoms, so you end up doing a very large calculation with a supercell of 7x7x3x10=1470 atoms.
In order to run a smaller supercell, you have to set manually the number of repetitions. For example, you can define a [3x3x1] supercell (90 atoms) using:

# -------------------------------------------------------------
# Dynamical Matrix
# -------------------------------------------------------------
dynamical_matrix = DynamicalMatrix(
    configuration=bulk_configuration,
    repetitions=[3,3,1],
    atomic_displacement=0.01*Angstrom,
    acoustic_sum_rule=False,
    symmetrize=False,
    finite_difference_method=Central,
    processes_per_displacement=1,
    constraints=[0, 1, 2, 3],
    )
nlsave('Copper.nc', dynamical_matrix)

Check more details on how to do phonons calculations with ATK on:
http://docs.quantumwise.com/tutorials/phonon_bs/phonon_bs.html?highlight=phonons

Regards,
Daniele.


232
General Questions and Answers / Re: Bias point
« on: September 14, 2016, 16:00 »
Hello,

take the example in:
http://docs.quantumwise.com/manuals/Types/IVCurve/IVCurve.html#ivcurve-c

Restart of an IV curve is easily done in ATK 2016. You can calculate the IV curve from V=0.0V to V=1.0V, and then restart from the self-consistent configuration at V=1.0V contained in the file "ivcurve_selfconsistent_configuration_1.00000V.nc" using the script:

device_configuration = nlread('ivcurve_selfconsistent_configuration_1.00000V.nc',DeviceConfiguration)[-1]

# -------------------------------------------------------------
# IV Curve
# -------------------------------------------------------------
biases = [1.200000, 1.400000, 1.600000, 1.800000, 2.000000]*Volt

iv_curve = IVCurve(
    configuration=device_configuration,
    biases=biases,
    energies=numpy.linspace(-2,2,101)*eV,
    kpoints=MonkhorstPackGrid(1,1),
    self_energy_calculator=RecursionSelfEnergy(),
    energy_zero_parameter=AverageFermiLevel,
    infinitesimal=1e-06*eV,
    selfconsistent_configurations_filename_prefix="ivcurve_selfconsistent_configuration_",
    log_filename_prefix="ivcurve_"
    )
nlsave('ivcurve.nc', iv_curve)
nlprint(iv_curve)

Regards,
Daniele.

233
Hi,

after discussion with one of the authors of the paper, I have two main points:

(i) In the paper, they did the same as you did and fitted the c parameter to bulk GaAs. However, they did  calculations just for GaAs slabs, not nanowires. Therefore, it is not guaranteed  that the GaAs nanowire you are simulating is still a direct band gap material. I suggest that you to try to reproduce the results in the paper and see if a GaAs slab with the c parameter you fitted still has a direct band gap.

(ii) In the nanowire you are simulating, the passivating hydrogen atoms at the corners of the nanowire are in a threefold coordination. This might constitute an issue, as the fractional values for the H atoms might not be correct in this threefold coordination. I would suggest to try to calculate a different nanowire geometry in which all the H atoms have max twofold coordination.

Regards,
Daniele.

234
Dear njuxyh,

That is one of the important parameters that determines the accuracy of a finite bias calculation, but normally the default is quite safe (assuming that you are using FHI pseudopotentials). If the SCF cycle of your NEGF calculation gets very close to convergence, e.g. the variation in the Hamiltonian oscillates around 10^-3 eV (the default threshold for convergence is 10^-4), increasing the number of energy points can help.

On the other hand, if your SCF cycle blows up completely, it normally means that there is something else which goes wrong. For example, the density matrix used as an initial starting guess is not good enough, or that the bias you are applying is too large for your system. Of course, these are just guesses, it is difficult to say more without seeing the actual input.

Feel free to attach the input here or send it by mail if you need further assistance.

Regards,
Daniele.

235
Dear Yasheng,

the report from DiagonalizationSolver indicates that you are running on 24 cpus, and k-points parallelization is switched off so that each of the 50 k-points is solved by all the 24 cpus.

You can turn on k-points parallelization by adding the flag "processes_per_kpoint=N_processes_per_kpoint" in the DiagonalizationSolver entry in your python input file. As the warning indicates, for optimal performance, the number of  cpus (N_cpus) should be a multiple of the number of  processes per kpoint (N_processes_per_kpoint) times the number of k-points (N_kpoints).

Example nr. 1 :

N_cpus = 12
N_kpoints = 6
N_processes_per_kpoint = 2

In this case, each of the 6 k-point will be solved by 2 processes, and all k-points will be solved simultaneously.

Example nr. 2 :

N_cpus = 12
N_kpoints = 12
N_processes_per_kpoint = 2

In this case, the first half of k-points (6 k-points) will be solved simultaneously by 2 processes, then the second half (6 k-points) will be solved.

Regards,
Daniele.

236
General Questions and Answers / Re: Id vs Vg curve
« on: September 5, 2016, 09:03 »
Hi,

check this tutorial (and try to reproduce it):

http://docs.quantumwise.com/tutorials/graphene_nanoribbon_device/graphene_nanoribbon_device.html#graphene-nanoribbon-device

in the tutorial you can find the script to plot the conductance as a function of gate voltage, which is a good starting point for the I_D-V_G gate (you just have to plot the current instead of the conductance on the Y axis).

Regards,
Daniele

237
Just forwarded to the authors.

238
Dear Peraz,

your input looks perfectly fine. I think the only issue is with the MGGA functional. I think the best way to determine the c parameter is to run a series of band structure calculations in which you vary the c parameter in a reasonable energy range, say 0.9 < c < 1.1 and then take the c parameter which gives the better band structure.

Regards,
Daniele.

239
Dear Peraz,

your procedure is correct, however MGGA is in principle designed for bulk systems, so one should always be a little careful when applying it to non-bulk systems. It might be that the c value needed to get a correct band structure in the GaAs nanowire is different from that of the bulk.

The Fermi level issue with MGGA is probably related to the fact that the band gap is much larger than with LDA, and you  need a much finer k-point grid to sample correctly the tail of Fermi function in the gap.

It would be great if you could attach or send us an input of your system, so we can have a closer look at it. Maybe some additional information could also help, e.g. which gap value and band structure do you expect.

Regards,
Daniele.

240
I just looked up the post: http://quantumwise.com/forum/index.php?topic=4307.msg19575#msg19575

MGGA is perfectly fine for transmission calculations, but should be used with cautions for system in which you have vacuum, independently on whether they are devices, slabs, etc.

Therefore, I would not use it to calculate transmission in a slab system.

Pages: 1 ... 14 15 [16] 17 18 ... 20