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] 2 3 ... 363
Could be. Finished just means the job is not running any more, but the Job Manager does not know anything about possible errors that arose.

The IVCharacteristics framework is handy since it is restartable and provides a nice way to loop over all bias values and gate voltages. If you have multiple gates or a more complex system I recommend just running individual simulations or a script with a loop over values, and then collect the results in the end.

Yeah sorry, we removed this model because it was not giving good results. We forgot to update the tutorial. You will have to run with DFT instead, you can use the smallest basis set FHI/SingleZeta to get fast results, probably similar accuracy as DFTB.

Spatial regions are not supposed to be contacts, since they will not be able to conduct hold any current. They are only meant to be used for electrostatic control, like gates. Your source and drain need to be fully atomistic structures which are part of the DFT-NEGF calculation.

If you go outside the domain where the potentials are trained you can easily see such effects, yes. Which MTP in particular are you trying to use?

Yes, there is always a limit, but what it is depends on your license.

General Questions and Answers / Re: Orbital coefficients
« on: May 13, 2024, 20:17 »
It just need to have converged the molecular calculation. You can project on individual atoms (the example shows projection on N, H, H, H through the numbers 0,1,2,3.) or a collection of atoms by giving more than one index in the list.

Python coding...
You can easily access the elements in a structure with configuration.elements(), that gives a list of the elements, you can then use the random.random() function to pick indices in a relevant way, replace an element and then put it back into the configuration with the secret method configuration._changeAtoms(elements=new_elements).

Or you can just remake the configuration from it's old parts:
new_configuration = BulkConfiguration(old_configuration.bravaisLattice(), new_elements, old_configuration.cartesianCoordinates())

Lucky for you I actually wrote a script to do this about 10 years ago, but nobody seemed to need the functionality so we never made it a feature in the software.

The usage is pretty obvious; the return is a list (one entry per eigenstate) of arrays, which contain the "contributions" (projections) onto the angular momenta s, p, d, and f.

I tested with NH3 from the example in the manual ( and the run this slightly clumsy code

Code: python
from PartialNorm import getPartialNorms
molecule = nlread("nh3.hdf5", MoleculeConfiguration)[0]
# HOMO state is 3
ix = 3
partial_norms = getPartialNorms(molecule, projection_atoms=[0])
partial_norms = getPartialNorms(molecule, projection_atoms=[1])
partial_norms = getPartialNorms(molecule, projection_atoms=[2])
partial_norms = getPartialNorms(molecule, projection_atoms=[3])

We can then see that the HOMO level derives almost 90% from Nitrogen (mostly p-states), but if we change to ix=4 we note that LUMO has a lot more H contributions (and the LUMO state is, as expected, dominated by s-states). Hopefully this is helpful for the analysis of your molecule too.

This function can be used for a lot of other cool things, like mapping out where s and p states dominate in the band structure of GaAs (RGB color scale mapped from spd contributions) as in the attached picture!

Yes the same trick should work

Yeah that should be enough. Are these DOS lines at very low energy or around the Fermi level? Really hard to provide any help without the actual input and output...

I don't think there should be any confusion about units? It prints
X Y Z of dipole: [ 7.50489746e-07 -5.50684384e-05  6.86097535e-01] Bohr**4*e
to the file, and if you had printed the magnitude as you perhaps intended (you write m1 to the file) it would have shown
0.686097536725 Bohr**4*e

(The numbers are not your numbers as I don't have your molecule, I just use NH3 as an example)

Oh, I see you still use the old wrong script from the manual. You need to remove * length_unit**3 from the line defining dV

Maybe too few k-points?

QuantumATK does not print anything you don't tell it to (apart from the self-consistent log) so this really depends on what your script looks like, which I don't know. Also, all quantities are kept internally with a unit attached, so there should never be a doubt about the unit, unless some special instructions are used to remove it. But you would have to share the script for us to help.

If you mean ferroelectric polarization this can be evaluated (in-plane at least) the same way as for 3D bulk:

Pages: [1] 2 3 ... 363