Next: How to generate the
Up: Details of NCA evaluation
Previous: Details of NCA evaluation
Most of the Green's functions and specially Fermi function at low
temperature are very steep or peaked at certain points (usualy around
zero). The use of equidistant mesh is therefore impractical and time
consuming, rather a non-equidistant mesh is desired. We usualy use
logarithmic mesh at low frequency and tanges mesh at high frequnecies
to resolve almost any function with less than 300 points. The prices
one needs to pay using nonequidistant mesh is that a convolution like
|
(17) |
is much harder to calculate since it is not resolved on the first mesh
neither on the second. Suppose that is defined on a certain
mesh where it is resolved
and function
is defined on another mesh , i.e.,
,
the convolution can be safely calculated on the union of both mashes
. One of the meshes should be shifted for , thus for
each outside frequency a different union of the two meshes should be
formed and only then the convolution can be safely evaluated. This is
very time consuming and seldom done in practice.
We have two strategies to circumvent the problem. If one knows that
both functions are peaked around certain point, lets suppose zero
frequency, we can form a two-dimensional mesh (somewhere in the
outside loop such that it is heavily reused) in which the first mesh
is superposed with couple of points around zero frequency
from mesh .
However, when a certain function needs to be convolved with many other
functions (typical case is NCA with many nonequivalent
pseudo-particles), one can use a trick. With the help of two
additional precalculated functions, the integral and first moment
|
|
|
(18) |
|
|
|
(19) |
one can calculate the convolution without building a new inside mesh.
Lets use the mesh which resolves function . Then, in the
spirit of trapezoid rule, we can lineraly interpolate between the
points
|
(20) |
This integral can be expressed by the above defined functions. To show
that, let us rewrite the convolution and expressed it by the new
function
which is defined on the same mesh as
and with which the covolution is a simple scalar product
|
(21) |
Thus
is
This method is specially suitable if function needs to be
convolved with many different functions that live on the same mesh
because the function
can be calculated
ones and reused many times. This is the case of NCA with many
nonequivalent local states. The method is also crucial for
implementing higher-order vertex correction to NCA.
The implementation can be found in the header file average.h.
Next: How to generate the
Up: Details of NCA evaluation
Previous: Details of NCA evaluation
Kristjan Haule
2004-08-23