-
I get the error message:
ERROR: No dirichlet points for Fermi levels were found!
Terminating program !!
(Comment: Meanwhile, this error message
is different. Once an update has been released, change the FAQ here.)
Answer: The program does not know at which energy the Fermi level
should be located. A solution is this:
region{
everywhere{}
binary { name = "GaAs" }
contact{ name = "dummy" }
}
contacts{
fermi{ name = "dummy" bias = 0.0 } # only needed
to define reference energy
}
This defines the Fermi level to be at 0 eV in the whole device.
-
My Quantum-Current-Poisson calculation
fails to converge. How can I avoid this problem?
Answer: The most common errors are the following:
a) The maximum number of iterations has been chosen too small
(run{}->outer_iteration{}->iterations) and the calculation just needs
some more iterations.
b) The number of electron or hole eigenstates has been chosen too small
(e.g. quantum{}->region{}->Gamma{}->num_ev). Check the occupations in
the files wf_spectrum_"name quantum region"_"name quantum model".dat. If
the occupation does not drop from the ground state to the highest
excited state by several orders of magnitude, you need to calculate more
states (= more possibilities to fill in charges).
c) The underrelaxation parameter has been chosen too large
(run{} ==> outer_iteration{} ==> alpha_current ). Check whether the solution oscillates
(residuals do not drop continuously but increase in some iterations).
Try to decrease the underrelaxation parameter in order to damp the
oscillations.
d) The minimum charge density in the current equation has been chosen
too small (currents{}->minimum_density). Try to increase the minimum
charge density to improve conditioning of the current equation. (In
fact, the current equation is solved with the charge density = max(
"real density", minimum_density)).
-
All band edges are now contained
in one file, together with the Fermi levels.
-
All Fermi levels are now
contained in one file.
-
Units were added to output file:
total_charges.txt
-
crystal_zb{...}
crystal_wz{...}
now also accept z_hkl as input. Previously only
x_hkl and y_hkl were supported, the third
direction was calculated internally. Exactly two of
these three axes have to be specified: x_hkl =
[ ., ., .] y_hkl =
[ ., ., .] z_hkl =
[ ., ., .]
-
output_wavefunctions{ in_one_file =
yes/no
# prints out the amplitudes into one file and the
probabilities into one file (default =
yes ). If
no is chosen, for each eigenvalue a separate file is
written out.
There is an additional file where
the square of the wavefunctions are shifted by their respective
energy level.
-
output of lattice constants and
elastic constants (see strain{})
-
output of band gap (see
classical{})
-
output of VTK format for 2D and 3D
simulations
-
import data from file (electrostatic
potential, alloy profile, strain)
-
new region objects
polygon , regular_polygon ,
hexagon , circle
-
overwriting default material database
parameters in the input file
-
See also the change log file:
C:\Program Files
(x86)\nextnano\2015_08_19\nextnano++\change_log_nextnano++.txt
//
intrinsicDensity_(i,j,k) =
0.5 * (eSum + hSum); //
comment S.
Birner: This equation produced the
wrong intrinsic
density (relevant for recombination rates).
intrinsicDensity_(i,j,k) =
sqrt (eSum * hSum);
// changed by S. Birner
(bug fix 2010-05-17).
// If eSum
and hSum are identical, both equations are the same. //
fixed 2010-05-07
- Linear interpolation for doping profile did not work correctly.
// fixed 2011-06-03
geometry_region_doping.h
- Bug in terms of rescaling 8-band k.p material parameters.
Instead of
L' = L
+ P'2 / E_gap
N+'
= N + P'2 / E_gap
the term Delta_so/3 was added to the band gap.
// matGrid(L ,i,j,k) += ( sqr(pnew) - sqr(kpParameters[KpP]) ) / (
eg
+ deltaSO[1] / 3.0 );
// matGrid(NP,i,j,k) += ( sqr(pnew) - sqr(kpParameters[KpP]) ) / (
eg
+ deltaSO[1] / 3.0 );
matGrid(L ,i,j,k) += ( sqr(pnew) -
sqr(kpParameters[KpP]) ) / ( eg );
matGrid(NP,i,j,k) += ( sqr(pnew) - sqr(kpParameters[KpP]) ) / ( eg
); // fixed 2011-07-12
- 2 bugs in terms of interpolation of quaternaries of type AxByC1-x-yH
(e.g. InxAlyGa1-x-yN) in terms of
bowing parameter fAC.
// const double f13 =
ternaryBowing(ternary13,i,y,y-x-y,accessor); // This was a bug: must
be 1-x-y
const double f13 = ternaryBowing(ternary13,i,y,1-x-y,accessor);
//
fixed 2011-07-13
// const double t = x*y*f12
-
x*(1-x-y)*f13 + y*(1-x-y)*f23; // ternaries bowing
const double t = x*y*f12
+ x*(1-x-y)*f13 +
y*(1-x-y)*f23; // ternaries bowing // This was a bug: must be +,
fixed 2011-07-13
- fixed another bug for quaternary alloys of type
A(x)B(y)C(1-x-y)H, e.g. InxAlyGa1-x-yN
// const double f23 =
ternaryBowing(ternary23,i,x,1-x-y,accessor);
// [y f_BC^B + (1-x-y) f_BC^C] This was a bug: must be 'y,1-x-y',
and not 'x,1-x-y'.
const double f23 = ternaryBowing(ternary23,i,y,1-x-y,accessor);
// [y f_BC^B + (1-x-y) f_BC^C] fixed by S.
Birner, 2012-02-27
// const double f13 =
ternaryBowing(ternary13,i,y,y-x-y,accessor);
// [x f_AC^A + (1-x-y) f_AC^C] This was a bug: must be '1-x-y', and
not 'y-x-y'.
// const double f13 =
ternaryBowing(ternary13,i,y,1-x-y,accessor);
// [x f_AC^A + (1-x-y) f_AC^C] fixed by S. Birner, 2011-07-13. There
was still another bug: must be 'x,1-x-y', and not 'y,1-x-y'.
const double f13 = ternaryBowing(ternary13,i,x,1-x-y,accessor);
// [x f_AC^A + (1-x-y) f_AC^C] fixed by S.
Birner, 2012-02-27
- fixed a bug for quaternary alloys of type A(x)B(1-x)C(y)D(1-y)
// const double f23 =
ternaryBowing(ternary23,i,x,1-x,accessor);
// [y f_CD,B^C + (1-y) f_CD,B^D] This was a bug: must be 'y,1-y',
and not 'x,1-x'.
const double f23 = ternaryBowing(ternary23,i,y,1-y,accessor);
// [y f_CD,B^C + (1-y) f_CD,B^D] fixed by S.
Birner, 2012-02-27
// const double f34 =
ternaryBowing(ternary34,i,y,1-y,accessor);
// [x f_AB,D^A + (1-x) f_AB,D^B] This was a bug: must be 'x,1-x',
and not 'y,1-y'.
const double f34 = ternaryBowing(ternary34,i,x,1-x,accessor);
// [x f_AB,D^A + (1-x) f_AB,D^B] fixed by S.
Birner, 2012-02-27
- fixed a bug related to the ordering of fixed charges, i.e.
if fixed charge doping regions overlap.
fixed 2012-08-16
charge{ name =
"positive-charge" type =
positive}
charge{ name =
"negative-charge" type =
negative}
- Strain tensor output is now in dimensionless units. Before, it
was in percent. Now it is consistent to nextnano3.
- For wurtzite, the spin-orbit splitting parameters Delta2
and Delta3 were not read in from the database file.
Instead, these values were assumed to be equal to Delta1.
// fixed 2014-07-28
-
Add bulk k.p dispersion for a
grid point specified by the user to the output so that one knows the
bulk k.p dispersion of the material parameters (e.g. of an
alloy) at this grid point.
-
Change the units of the k_parallel dispersion
from 2pi/a to 1/nm.
-
NEW:
AVS to Origin Converter To convert AVS/Express data into x,y,z,f(x,y,z) use this
Python script:
avs2xyz.py (avs2xyz_py.zip)
contributed by: Jose M. Llorens, Institute of
Microelectronics of Madrid, National Spanish Research Council
(CSIC), jose.llorens [at] imm.cnm.csic.es
Note: This script works for both nextnano³ and nextnano++.
|