Install pARMS library of parallel solvers

Hello I’m trying to solve a 3-D heat equation. When I reduce the mesh I get this error:
read mesh ok 0Mesh3, num Tetra:= 583101, num Vertice:= 102624 num boundary Triangles:= 64696
Mesh3::meshS, num Triangles:= 64696, num Vertice:= 31952 num boundary Edges:= 1496
— Warning manifold obj nb:816 adj 816 of dim =2
– Mesh3 : tp.mesh, space dimension 3, num Tetrahedron elts 583101, num Vertice 102624 num Bordary elts 64696
– Mesh3:MeshS : tp.mesh, space dimension 3, num Triangle elts 64696, num Vertice 31952 num Bordary elts 1496
– Build Nodes/DF on mesh : n.v. 102624, n. elmt. 583101, n b. elmt. 64696
nb of Nodes 769965 nb of DoF 769965 DFon=1100
– FESpace: Nb of Nodes 769965 Nb of DoF 769965
Error umpfack umfpack_di_numeric status -1
Error umfpack_di_solve status -3
– Solve :
min 0 max 0

a memory problem I guess.

so I decided to use pARMS a library of parallel solvers. i don’t know if this will solve the problem.

I get this error:

– FreeFem++ v4.6 (Fri, Apr 03, 2020 2:08:08 PM - git v4.6)
Load: lg_fem lg_mesh lg_mesh3 eigenvalue
1 : load “msh3”(load: loadLibary C:\Program Files (x86)\FreeFem++\.\msh3 = 0)
2 : load “medit”(load: loadLibary C:\Program Files (x86)\FreeFem++\.\medit = 0)
3 : //load “UMFPACK64”
4 : load “parms_FreeFem”
Load error: parms_FreeFem
fail:
list prefix: ‘C:\Program Files (x86)\FreeFem++\.’ list suffix: ‘’ , ‘.dll’
current line = 4
Load error : parms_FreeFem
line number :4, parms_FreeFem
error Load error : parms_FreeFem
line number :4, parms_FreeFem
code = 2 mpirank: 0

how can I access to this library?

thank you in advance for you response

pARMS plugin has been deprecated for a long time. You can access it through PETSc, but you’ll need to configure it yourself with the added flag --download-parms. Otherwise, you can use hypre which will be much much more efficient than pARMS or UMFPACK for the heat equation.

thank you for this proprosition.
how can i install hypre using windows?

I’ve tried to follow these instructions INSTALL.rar (1.7 KB) but it doesn’t work.

should i install something before?

ps: I never install a library before.

thank you in advance for you response

If you are using this binary, you can just replace:

matrix A;
set(A, solver = sparsesolver);
real[int] sol = A^-1 * rhs;

by:

load "PETSc"
matrix A;
Mat wrap(A);
set(wrap, sparams = "-pc_type hypre -ksp_converged_reason");
real[int] sol = wrap^-1 * rhs;

You do not have to install hypre yourself. It’s done for you and packaged inside the PETSc plugin.

3 Likes

Hi prj,
I have been trying to migrate some old code from FreeFem v3.6 to the latest version. The code is using pARMS_FreeFem which as you pointed out is now depricated. Is it still possible to use it via PETSc (pARMS was completely absent from PETSc documentation…)? Following your suggestion, I was wondering if it would make sense to include the --download-parms flag in the Dockerfile file in the following way (see 4th line):

# Configure FreeFEM and download PETSc
RUN autoreconf -i \
    && ./configure --enable-download --enable-optim --enable-generic --prefix=/usr/freefem/ \
    && ./3rdparty/getall -o PETSc -a --download_parms

# Compile PETSc/SLEPc and reconfigure FreeFEM
RUN cd $DIRPATH/3rdparty/ff-petsc \
    && sed -i'.bak' 's#download-mpich#download-mpich=http://www.mpich.org/static/downloads/3.4rc1/mpich-3.4rc1.tar.gz#' Makefile \
    && sed -i '/Not on windows/a\COMMON_FLAGS += CFLAGS="-D_POSIX_C_SOURCE=199309L -std=c99"' Makefile \
    && sed -i '/Not on windows/a\COMMON_FLAGS += CXXFLAGS="-D_POSIX_C_SOURCE=199309L -std=c++11"' Makefile \
    && make petsc-slepc

Are there any additional steps after that to be able to use pARMS?
Thanks a lot in advance,
Lazaros

My advice is to not use pARMS, as it is not very maintained and probably less efficient than other PETSc solvers. What you are suggesting does not make sense --download-parms must be put inside 3rdparty/ff-petsc/Makefile, with all the other --download-XYZ.

1 Like