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 ... 345 346 [347] 348 349 ... 362
5191
First a check: which version of ATK are you using? The use of "mpirun" rather than "mpiexec" first led me to believe that you have an older, outdated version (i.e. older than 2008.02). But, then you write "Intel MPI", which could be the simple explanation: ATK only works with MPICH2 (ver 1.0.8 or similar).

5192
General Questions and Answers / Re: mesh cut-off
« on: April 6, 2009, 08:49 »
I have earlier tried some carbon nanotube band structure calculations with as low as 70 Ry without seeing any significant degradation in the results. On the other hand, the actual reduction in time and memory compared to 100 or 150 Ry is not extremely large.

I agree that SZP should be fine to save time for carbon, although you may find it interesting to read a recent article by G. Abadir et al. on precisely the topic of the basis set choice in Journal of Computational Electronics (http://dx.doi.org/10.1007/s10825-009-0263-5).

5193
A side issue: you script potentially ends with an indented statement. This generates error messages in MPI on the slave nodes, and actually I think it prevents the script from running. So, always make sure the last line in the script is completely empty (no spaces at all!) when running in parallel!

5194
The problem has been located. As often in these cases, it's completely obvious - once you know the answer! :)

The issue lies in the use of random(). This function will give different values on the different nodes, so by the time the self-consistent loop starts, each MPI node will have a different configuration, which obviously makes no sense at all.

To solve this, you could generate the configuration only on the master node and export it to a VNL file (all encapsulated in processIsMaster()) and then read the VNL file back in on all nodes.
Edit: This will not work, since the slave nodes will run ahead and attempt to read the VNL file while the master node is still making it. Use Nordland's method below instead!

Simple - and not! ;)

PS: I don't know how large systems you plan to compute, but there is actually not very much to be gained by running molecules in parallel, unless they are very, very large (hundred of atoms). On the other hand, you can really gain a lot by ensuring that ATK runs threaded over the cores on a dual or quad core CPU. The reason is that the MPI parallelization only can be used for the matrix element generation for molecules, while the threading kicks in for the matrix diagonalization.

5195
The plot thickens! I get the same error on our cluster. Definitely need to look further at this...

5196
Does the error occur very soon in the calculation, or after many iterations?

5197
It should be quite easy to do. Let's see, step by step.

1. Insert the line

Code
import ivcurve

right after the two import statements at the top of your script. The reason we do this early in the script is because if it fails (for some reason), we will know immediately. The file needs to be in the same directory as your script.

2. Remove all code in your script after and including the line

Code
# Perform self-consistent field calculation

3. Insert this code at the end of the script instead:
Code
voltages=[0.0,0.1,0.2,0.3]*Volt

ivcurve.runIVcurve (
    twoprobe_configuration,
    two_probe_method,
    runtime_parameters,
    voltages,
    vnl_filename='FeMgOFe_iv.vnl', sample_name='FeMgOFe',
    current_k_point_sampling = (10,10),
    current_number_of_points = 100
  )

4. Change the voltages to whatever range you prefer, as well as the file and sample name.

Notes:

In your original script, the k-point sampling for the current calculation was 1x1. A characteristic feature of the FeMgOFe system is that you need very, very many k-points to get an accurate current for the minority transmission in the parallel electrode confiuration. I have used 10x10 in the example code above, but you should really check this number, and find out how many you need. Just do it for the zero bias case, that should be fine.

However, and this is crucial: the way you have set up the system, it is not spin-polarized. For this you must add an initial spin to the electron density parameters. For more information, see the tutorial on FeMgO.

Another point is that this calculation will be extremely time-consuming. However, by running it on a cluster you can probably save a factor of 10 or more in time. In that case, you may have to take some special care about the path and import statements etc. However, I note that you are using Windows, and currently there is not parallel Windows version of ATK. So, I really hope you have opportunity to access a parallel Linux machine, or you may have to wait a week or so for the results of this calculation!

5198
Actually for graphene nanoribbons there are only 2 types, armchair and zigzag.

But the notation used in the literature is not entirely consistent. What I mean by these terms is the edge type, while sometimes one encounters a notation related to the "corresponding unrolled nanotube". Highly confusingly, this results in the opposite labeling (i.e. a zigzag edge ribbon is made from unrolling an armchair nanotube).

But at any rate, there are only 2 different types; chiral tubes cannot be unrolled unto something that looks like a ribbon (as far as I know). Well, you can of  course always unroll it, but it will not have straight edges.

5199
I think you may be using an older edition of ATK, or at least an example from the manual of an older version. There was a mistake in the manual on exactly this. See the new updated manual at http://quantumwise.com/documents/manuals/ATK-2008.10/ref.calculatedensityofstates.html for the correct code example, which also takes care of the unit of the DOS properly.

5200
energies is an array of energies, so you need to subscript it in order to extract an energy from which you can get and print the value using the method inUnitsOf().

Thus, change the line

Code
print energies.inUnitsOf(eV),'\t',dos[0,i],'\t',dos[1,i]

to

Code
print energies[i].inUnitsOf(eV),'\t',dos[0,i],'\t',dos[1,i]

and you should be set to go! (Actually there are 2 places to change, for spin/non-spin.)

5201
Welcome to the Forum, beark!

This is certainly one of the trickier concepts in ATK. From your well formulated question I can see that you are on your way to understanding it, however :)

From the setup perspective, yes, there are only 3 components: left electrode, central regions, and right electrode. The Atomic Manipulator treats the surface layers internally a bit different, in order to make it easier for the user to add and remove layers.

The physical relevance of the surface layers is however distinctly different from the rest of the scattering region. As you state yourself, their role is to screen the influence of the real scattering part (the molecule, nanotube, interface layers, whatever constitutes the real middle part of the device) such that the fundamental approximation (that the electrodes are bulk-like) holds.

In principle yes, you need to converge the results in the number of layers, but this is quite expensive. In practice, you will hopefully get a feeling for your own types of systems and how efficient they are at screening. Some quantities that will help you assess the quality of the screening is to compute the voltage drop (search the Forum for several good discussions on this) or the effective potential, and check if it is smooth across the boundaries between the electrodes and the scattering region.

Large bias requires more screening. 1D or quasi-1D systems screen less efficiently than whole metal surface, but fortunately it's less expensive to increase the number of screening layers for chains and nanotubes etc.

Hope this answers your questions, but just keep asking if something is still unclear!

Good luck with ATK, I hope you will enjoy the program!


5202
I want to do some simple operation
graphene sheet with width=6 and rep=2
I want to replace some C atoms to B and N atoms.I dont want to change structure just simple atom replacement.Or another words i would like to see graphene sheet which is made in Boron or Nitrogen

I recently realized myself that this could be interesting, so I made an updated script that support boron-nitride or any other two-atom basis hexagonal nanoribbon. I have attached it to this post; use it like the old script, there are just some extra parameters at the top. There is even now a switch to turn on/off the hydrogen edge termination ;)

If i go to the atomic manipulator i cant change nothing
Second chance i went to the Molecular Builder and did some replacements and back to the Manipulator and all seemed ok.But when i dragged it to the Nanolanguage scripter i didnt see quantities availability "ENERGY BANDS" for calculating.Instead of "Energy bands" i see "Energy Spectrum Molecular Energy spectrum"

You should not edit a periodic structure in the Molecular Builder (MB), but in the Bulk Builder. The MB produces molecules, and you cannot compute the band structure of a molecule. Better stick to PeriodicAtomConfigurations all the time, otherwise you lose the unit cell, and it's gets messy to figure out the alignment.

Second question about Energy density.In some cases it shows beatiful DOS diagramm,other cases it shows only preview for nanoscope?

I must admit I don't understand the question. Energy density?

I hope the new script will help you out a lot, so that you don't actually have to go via the manipulators. If, however, you still need to do simple modifications, use the Bulk Builder on the PeriodicAtomConfigurations. If you only want to change some specific atoms to B/N, then I can suggest a suitable approach, if you give me some more details.

5203
You are correct, the X/Y lattice vectors must be commensurate for heterogeneous systems.

This is quite trivial to ensure in systems where you can just add some vacuum padding, but if the two electrodes are constructed from e.g. two different metals with different lattice constants, one has to strain one material. In this can one can try to find a particular supercell combination (like 2x3 on the left and 3x4 on the right, or something else) that minimizes the required strain.

5204
The problem is, as usual in these cases, the alignment atoms. It's clear that the system was built with VNL, but whether or not this indicates that the geometry produced by VNL is wrong or not is hard to say at this point... Perhaps you modified it by hand after it came out of the Atomic Manipulator?

Anyway, by changing the equivalent atoms from

Code
equivalent_atoms=([0,0],[2,220])

to

Code
equivalent_atoms=([0,0],[2,195])

I hope you will be able to run the simulation. It will require a lot of memory, and may be difficult to converge, but at least I think the error you obtained should not appear any more.

How did I find this out? It can be useful to know a bit more about how to troubleshoot a system like this...

What I did was to convert the two-probe to its equivalent bulk system. Not by using the functionality in VNL, in the Atomic Manipulator, but by using the NanoLanguage function, which is a method on the two-probe configuration object. Viewing this in VNL clearly showed that the system was misaligned.

After thinking a bit, and trying a lot of different things, what worked was 195 = 220-3*9+2, that is the alignment atom did not, somehow, account for the repetitions. (Here, 3 and 9 are the repetition factors, and 2 is the index for the electrode atoms, seen in the code above.)


5205
I will attempt to run your system myself on a cluster and see if I get a similar error. The queue is quite loaded so I cannot say for sure when I'll get a spot, but hopefully within the next 24 hours. I'll use 2 nodes, I assume as soon as n>1 you get problems.

Pages: 1 ... 345 346 [347] 348 349 ... 362