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 - Anders Blom

Pages: 1 ... 340 341 [342] 343 344 ... 363
5116

I don't see any disagreement in the data, I think everything looks fine.

Except for one thing, maybe: the transmission of the pristine CNT should have integer plateaus, as you roughly have. But the "rounding" of the edges indicates that perhaps you have too short electrodes, or maybe even too small unit cell in the XY directions. Unless, that is, you simply have too few points on the black curve (fewer than for the blue and red). But it should really look like a step function, with the slanted parts.

I suggest you use 200 points or so for these plots, and check if the T(E) is really step-like for the pristine tube. But, otherwise in general, I don't see any problems.

5117
What complicates matter in this case is that your electrodes are semi-conducting. Thus, I suspect you have no current in the low-bias calculations. However, as the bias exceeds the band gap, you start to get tunneling from the valence band of the left electrode to the conduction band of the right one, via the molecule. I imagine this somehow pins the HOMO to the valence band top of the left electrode, perhaps.

5118
I'm having trouble viewing the pictures. I think they may be too large (not file size, but pixels). Can you reduce the size a bit and re-attach them, or email them to me. Also, it's better (for many reason) to use PNG pictures rather than JPG.

5119
Yeah, it happens...

This is clearly a quite tricky system you have, so it will require some clever tuning of the parameters to get it to converge. That's a bit of an art, sometimes, for difficult systems.

Did you increase the k-point sampling? Also, so far it seems we haven't discussed the importance of k-point sampling, and - most importantly, perhaps! - the width of the electrodes. If your electrodes are too thin, the result is often bad convergence. The same if the k-point sampling is too low.

I will be offline for a while due to travels, hope the points above bring some improvements.

5120
This behavior varies a bit between tools and types of systems. The reason you cannot drop a crystal to the open AM is because bulk structures are assumed to be used for electrodes in the AM, and if the tool is already open, with a two-probe present, you are not allowed to replace the existing electrodes.

Glad you worked it out by yourself!

5121
General Questions and Answers / Re: wondering!
« on: May 12, 2009, 05:55 »
Well, you output reflects your input script, which is a bit messed up :)

First, you restore the crashed calculation and recalculation it (restart it). This is lines 1-16. But then you have a new definition of the whole system again, geometry and method, and then on line 213 you run one more self-consistent calculation, this time from scratch.

Finally, you compute the quantities you are interested, based on the last calculation. What you really want to do, is remove lines 18-218, and call the recalculated variable "scf" (instead of new_scf):

Code
scf = executeSelfConsistentCalculation(self_consistent_calculation=crashed_scf)

You will also want to call the new checkpoint file (line 13) something else, in order not to destroy "backup.nc", you may want to use it again later for some reason.

5122
Your way of counting assumes that the charge remain conserved on the molecule. However, in a two-probe system charge is not conserved. And, even if it usually almost conserved in the system as a whole (typical charge loss or gain in the central region is typically not more than 1e or so), the charge can easily redistribute itself onto or off the "molecule", which you have defined via the "surface_atoms" keyword.

The eigenvalues of the two-probe molecule spectrum are normalized such that zero is the (average) Fermi level. Thus states with negative energy are indeed occupied, and those with positive energy are not (well, more exactly, they are all populated according to the Fermi distribution).


5123
General Questions and Answers / Re: strange result
« on: May 12, 2009, 03:56 »
Ok, in that case, note that ATK does not function properly in parallel with any other MPI library than MPICH2 1.0.8 (or similar, like 1.0.5). Not only will you get weird output, like you got several times the forces, if you try other MPIs like hpmpich or openmpi, but also the program will not actually run faster compared to in serial.

5124
General Questions and Answers / Re: strange result
« on: May 11, 2009, 18:59 »
I guess you run this script in parallel, on 4 nodes? Perhaps you added the calculation to compute the forces by hand, and forgot to wrap the print statement in "if processIsMaster()"?

5125
We have to admit that VNL doesn't manage memory properly in this case. I know, it's weird that a 100 Mb cannot be opened with 4 Gb of RAM, but that seems to be the case (for some types of grids). Later versions will of course resolve the problem.

5126
It is highly normal that difficult calculations require upwards of 25-50 iterations to converge. So, at least 2 of your attempts are promising (the one with negative q is questionable).

So, you just need some more patience, hopefully! :)

5127
This might be a reflection of a memory problem. It is known that loading large files into VNL can causes memory issues. To avoid this, one can attempt to putt the eigenstates (the 3D grids) into separate files, or to restart VNL between loading different large files. This is obviously not an ideal solution, but it's a work-around for now, that hopefully can solve the problem.

To recalculate the eigenstates should be very fast, and can easily be done from the checkpoint file, for example using something like

Code
from ATK.KohnSham import *
from ATK.MPI import processIsMaster

# Opening vnlfile
if processIsMaster(): file = VNLFile('TET_1.vnl')

scf = restoreSelfConsistentCalculation ('tet.nc')

eigenstates = calculateEigenstates(
    self_consistent_calculation = scf,
    quantum_numbers = (33)
)
for state_index,state in enumerate(eigenstates):
    label='Eigenstate'+' '+str(state_index)
    if processIsMaster(): file.addToSample(state, 'New Molecule', label)

5128
This case is a bit complex, since you are running an I-V curve calculation, using the external module "ivcurve". In this case, restarting doesn't work the way you may expect, perhaps. Restarting applies to a single calculation, while the I-V curve routine runs several calculations in sequence.

If it already completed the evaluation of the current for, say, the first 2-3 points on the I-V curve, you can just leave out those values from the range of voltages, and start from another point. You may however want to recalculation the zero bias, as this can then be used as a starting point for higher voltages, which usually helps convergence.

At the end of the day, the I-V curve module is really just a helper routine, it doesn't do anything you couldn't do by hand, that is, to run each voltage separately, and collect the current values for plotting. Plus, of course, reusing the converged density from the previous calculation to run the next higher bias.

That's also why you always should start from zero bias, in this case, and in general. So, if you want biases from -1 to 1 V, in steps of 0.1, say, run 0. V first, then do -0.1 and +0.1, and so on.

To reuse a previous calculation as initial guess for a new calculation, use the keyword initial_calculation to executeSelfConsistentCalculation():

Code
oldscf = restoreSelfConsistentCalculation('zerobias.nc')
scf = executeSelfConsistentCalculation(
    twoprobe_configuration,
    method,
    runtime_parameters,
    initial_calculation = oldscf
    )

(This code snippet is just to give an idea; needs to be polished to match your particular case.)

5129
Yes, the checkpoint file does not contain all electrode data, so this needs to be recalculated. It's typically a very small portion of the total calculation time anyway.

5130
Provided you specified a checkpoint file for the calculation, follow the steps below. If you didn't, well, then there is no option but to rerun, of course.

If the checkpoint file is called "mycalculation.nc", then make a new script

Code
from ATK.TwoProbe import *

oldscf = restoreSelfConsistentCalculation("mycalculation.nc")

scf = executeSelfConsistentCalculation(self_consistent_calculation=oldscf)

Any analysis (like, evaluation of transmission spectrum, etc) you had in the original script can be copied from the old script and added after these lines.

Pages: 1 ... 340 341 [342] 343 344 ... 363