[Getdp] How many elements can GetDP handle?

John_V jvillar.john at gmail.com
Wed Jun 2 20:25:43 CEST 2010


How big of a problem is it reasonable to solve using GetDP? I.e., at 
what point (measured in number of equations or number of elements) does 
the time and/or memory requirement become too large to be practical?

I ask because I have made my first attempt to solve a real 3-D 
electrostatics problem, and I have discovered for myself that it is not 
easy to keep the memory usage within limits. The issue arises because of 
the different length scales in my problem.

I started with a much coarser mesh size than I'd like, just to see how 
things would go. I can solve a problem with the solver reporting N: 
33322. What is this? The number of equations? For a somewhat finer mesh 
(but still far from my goal) the solver reports N: 114379 and GetDP 
aborts with "PETSC ERROR: Out of memory." The message says the memory 
requested was 811961712. (I assume this is bytes, so about 812 MB.) This 
is a smaller limit than I expected--I expected to be able to use up to 
about 2 GB, the 32-bit Windows XP per-process limit. I am about to 
upgrade to a 64-bit machine with 12 GB memory, and I hope its larger 
addressable space will let me do larger problems, but if the limit is 
internal to GetDP rather than the hardware or operating system, the 
larger machine is unlikely to help.

I would also be interested in some more general ideas for how to deal 
with 3-D problems with varying length scales. I'm aware that I'm far 
from the first person to encounter this difficulty. What kinds of 
strategies to people use?

For concreteness: My sample has structures, mixed conductors and 
insulators, that are a few tens of nanometers in size with features 
(corner radii, edge widths) as small as 1 nm. These structures cover an 
area of up to 1 square micrometer. The insulators may have implanted 
charges down to a depth of up to a micrometer (though usually only a few 
tens of nanometers). Unfortunately, in general the sample need not have 
any particular symmetry. I would like to calculate the electrostatic 
potential in the neighborhood of the sample with errors of no more than 
a few tenths of a volt. I think this means my smallest elements, the 
ones near features of interest (edges, corners, maybe surfaces) should 
be sized close to 1 nm. Added to this, I'm presently meshing a volume 
that starts at the deepest implanted charges and goes above the sample 
far enough to be a good approximation of "infinity" -- i.e., far enough 
away so the potential is approaching 0. (Is there, for example, some 
nice trick to put that surface at "infinity" much closer without too 
strongly perturbing the solution near the sample surface?) Even if I 
choose big elements at the distant boundaries of my volume, the number 
of elements required is very large. It requires millions of elements 
just to cover the sample area one element deep.

John