← Back to team overview

dolfin team mailing list archive

Re: [Question #127219]: finer meshes caused the "out of memory" error

 

Question #127219 on DOLFIN changed:
https://answers.launchpad.net/dolfin/+question/127219

bilenemek proposed the following answer:
hi Anders, same problem on 64bit Ubuntu LTS machine, after couple of
minutes:

Solving linear system of size 397953 x 397953 (PETSc LU solver,
umfpack).

UMFPACK V5.4.0 (May 20, 2009): ERROR: out of memory

[0]PETSC ERROR: --------------------- Error Message ------------------------------------
[0]PETSC ERROR: Error in external library!
[0]PETSC ERROR: umfpack_UMF_numeric failed!
[0]PETSC ERROR: ------------------------------------------------------------------------
[0]PETSC ERROR: Petsc Release Version 3.0.0, Patch 10, Tue Nov 24 16:38:09 CST 2009
[0]PETSC ERROR: See docs/changes/index.html for recent updates.
[0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
[0]PETSC ERROR: See docs/index.html for manual pages.
[0]PETSC ERROR: ------------------------------------------------------------------------
[0]PETSC ERROR: xxx on a linux-gnu named xxx by emek Fri Nov 26 16:41:18 2010
[0]PETSC ERROR: Libraries linked from /build/buildd/petsc-3.0.0.dfsg/linux-gnu-c-opt/lib
[0]PETSC ERROR: Configure run at Thu Dec 31 09:53:16 2009
[0]PETSC ERROR: Configure options --with-shared --with-debugging=0 --useThreads 0 --with-fortran-interfaces=1 --with-mpi-dir=/usr/lib/openmpi --with-mpi-shared=1 --with-blas-lib=-lblas-3gf --with-lapack-lib=-llapackgf-3 --with-umfpack=1 --with-umfpack-include=/usr/include/suitesparse --with-umfpack-lib="[/usr/lib/libumfpack.so,/usr/lib/libamd.so]" --with-superlu=1 --with-superlu-include=/usr/include/superlu --with-superlu-lib=/usr/lib/libsuperlu.so --with-spooles=1 --with-spooles-include=/usr/include/spooles --with-spooles-lib=/usr/lib/libspooles.so --with-hypre=1 --with-hypre-dir=/usr --with-scotch=1 --with-scotch-include=/usr/include/scotch --with-scotch-lib=/usr/lib/libscotch.so
[0]PETSC ERROR: ------------------------------------------------------------------------
[0]PETSC ERROR: MatLUFactorNumeric_UMFPACK() line 176 in src/mat/impls/aij/seq/umfpack/umfpack.c
[0]PETSC ERROR: MatLUFactorNumeric() line 2396 in src/mat/interface/matrix.c
[0]PETSC ERROR: PCSetUp_LU() line 222 in src/ksp/pc/impls/factor/lu/lu.c
[0]PETSC ERROR: PCSetUp() line 794 in src/ksp/pc/interface/precon.c
[0]PETSC ERROR: KSPSetUp() line 237 in src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: KSPSolve() line 353 in src/ksp/ksp/interface/itfunc.c
  *** Warning: Using LU solver, ignoring preconditioner "default".

----------------------------------------------------------------------------------------------------------------------

wit this code (changing to mesh = Box(0, 0, 0, 3.0, 3.0, 1.0, 30, 30,
30) would yield to solve it, probably direct elimination instead of
umfpack, if yes than call the sandia lab. :))

--------------------------------------------
from dolfin import *
import numpy, sys

parameters["form_compiler"]["cpp_optimize"] = True
parameters["form_compiler"]["optimize"] = True

mesh = Box(0, 0, 0, 3.0, 3.0, 1.0, 50, 50, 50)
mesh.order()
V = VectorFunctionSpace(mesh, 'CG', 1)

subdomains = MeshFunction("uint", mesh, mesh.topology().dim()-1)
left, right, back, front, top, bottom = compile_subdomains(["(fabs(x[0]) < DOLFIN_EPS) && on_boundary", "(fabs(x[0] - 3.0) < DOLFIN_EPS) && on_boundary", "(fabs(x[1] - 3.0) < DOLFIN_EPS) && on_boundary", "(fabs(x[1]) < DOLFIN_EPS) && on_boundary", "(fabs(x[2] - 1.0) < DOLFIN_EPS) && on_boundary", "(fabs(x[2]) < DOLFIN_EPS) && on_boundary"])

subdomains.set_all(6)
top.mark(subdomains, 4)

Q = Function(V)
Q = Expression('-1.0*sin(pi*1.0*x[0]/3.0)*sin(pi*1.0*x[1]/3.0)')
u0 = Function(V)
u0 = Expression('0.0')

bc = [DirichletBC(V.sub(1), u0, left), DirichletBC(V.sub(2), u0, left),
DirichletBC(V.sub(1), u0, right), DirichletBC(V.sub(2), u0, right),
DirichletBC(V.sub(0), u0, back), DirichletBC(V.sub(2), u0, back),
DirichletBC(V.sub(0), u0, front), DirichletBC(V.sub(2), u0, front)]

u = TrialFunction(V)
v = TestFunction(V)

nu = 0.3
G = Expression('10.0')
lmbd = 2.0*G*nu / (1.0 - 2.0*nu)

def sigma(u):
	return lmbd*tr(0.5*(grad(u)+grad(u).T))*Identity(u.cell().d) + 2*G*0.5*(grad(u)+grad(u).T)

n = V.cell().n
a = inner(sigma(u), grad(v))*dx 
L = dot(Q*n, v)*ds(4)

problem = VariationalProblem(a, L, bcs=bc, exterior_facet_domains=subdomains)
u = problem.solve()
----------------------------------------

You received this question notification because you are a member of
DOLFIN Team, which is an answer contact for DOLFIN.



References