Different solution values for different dolfinx version

Hello everyone, I used two dolfinx versions #957 and the newest version to solve the general eigenvalue problem. However, they give different results 10.839566377715625 and 2.9713814818807514 respectively, and I’ll past their codes here for comparison. I hope to get your help.

#957

import pygmsh
import meshio
import numpy as np


geom = pygmsh.built_in.Geometry()
side_len = 0.0127
strip_w = 1.27e-3
strip_h = 1.27e-4
die_h = 1.27e-3

point_coords = [[0, 0, 0], [side_len, 0, 0],
                [side_len, die_h, 0], [side_len, side_len, 0],
                [0, side_len, 0], [0, die_h, 0],
                [side_len/2+strip_w/2, die_h, 0], [side_len/2-strip_w/2, die_h, 0],
                [side_len/2+strip_w/2, die_h+strip_h, 0], [side_len/2-strip_w/2, die_h+strip_h, 0]]

dense_point_idx = [6, 7, 8, 9]

points = []
for i, point in enumerate(point_coords):
    if i in dense_point_idx:
        lcar = 5e-5
    else:
        lcar = 5e-4
    points.append(geom.add_point(point, lcar=lcar))

line_tag =  [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5),
             (5, 0), (7, 5), (6, 7), (2, 6), (6, 8),
             (8, 9), (9, 7)]
lines = []
for i, j  in line_tag:
    lines.append(geom.add_line(points[i], points[j]))

dielectric_loop_tag = [0, 1, 8, 7, 6, 5]
air_loop_tag = [-6, -11, -10, -9, -8, 2, 3, 4]
domain_loop_tag = [0, 1, 2, 3, 4, 5]
strip_loop_tag = [7, 9, 10, 11]
dielectric_loop = geom.add_line_loop([lines[i] for i in dielectric_loop_tag])
air_loop = []
for i in air_loop_tag:
    if i >= 0:
        air_loop.append(lines[i])
    else:
        air_loop.append(-lines[-i])

air_loop = geom.add_line_loop(air_loop)

dielectric_domain = geom.add_plane_surface(dielectric_loop)
air_domain = geom.add_plane_surface(air_loop)
geom.add_physical([lines[i] for i in domain_loop_tag + strip_loop_tag], 'PEC')
geom.add_physical(dielectric_domain, 'Diectric')
geom.add_physical(air_domain, 'Air')

geo_file = 'strip.geo'
with open(geo_file, 'w') as f:
    f.write(geom.get_code())

mesh = pygmsh.generate_mesh(geom, prune_z_0=True, verbose=True, geo_filename="strip.geo")

points, cells, cell_data, field_data = mesh.points, mesh.cells, mesh.cell_data, mesh.field_data
cells = np.vstack(np.array([cells.data for cells in mesh.cells
                            if cells.type == "triangle"]))

facet_cells = np.vstack(np.array([cells.data for cells in mesh.cells
                                  if cells.type == "line"]))

cell_data = mesh.cell_data_dict["gmsh:physical"]["triangle"]
facet_data = mesh.cell_data_dict["gmsh:physical"]["line"]
meshio.xdmf.write('tag_triangle.xdmf', meshio.Mesh(
    points=points,
    cells={'triangle': cells},
    cell_data={
        'triangle': [cell_data]
    },
    #field_data=field_data
))
meshio.xdmf.write("tag_all.xdmf", meshio.Mesh(
    points=points,
    cells={"line": facet_cells},
    cell_data={"line": [facet_data]}
))
import numpy as np
import pygmsh
import meshio
from dolfinx.io import XDMFFile
from dolfinx import (MPI, FacetNormal, Function, FunctionSpace, 
                     has_petsc_complex, DirichletBC, cpp)
from dolfinx.fem.assemble import assemble_scalar, assemble_matrix
from dolfinx.fem import locate_dofs_topological
from ufl import (TestFunctions, TrialFunctions, grad, inner, curl, split,
                  Measure, FiniteElement, dx, Dx, dot)
import dolfinx
from scipy.constants import c
from scipy.sparse import csr_matrix
from scipy.sparse.linalg import eigs
from slepc4py import SLEPc
from petsc4py import PETSc


with XDMFFile(MPI.comm_world, "tag_triangle.xdmf", 'r') as xdmf_infile:
    mesh = xdmf_infile.read_mesh(name="Grid")
    mesh.create_connectivity(mesh.topology.dim, mesh.topology.dim)
    mvc_subdomain = xdmf_infile.read_meshtags(mesh, "Grid")

mesh.create_connectivity(mesh.topology.dim-1, mesh.topology.dim)
with XDMFFile(MPI.comm_world, "tag_all.xdmf", 'r') as xdmf_infile:
    mvc_boundaries = xdmf_infile.read_meshtags(mesh, "Grid")


#%%

V = FiniteElement('N1curl', mesh.ufl_cell(), 2)
Q = FiniteElement('P', mesh.ufl_cell(), 3)
W = FunctionSpace(mesh, V*Q)

#%%

S = FunctionSpace(mesh, ('DG', 0))
e_r = Function(S)
x = S.tabulate_dof_coordinates()

for i in range(x.shape[0]):
    if mvc_subdomain.values[i] == 2:
        e_r.vector.setValueLocal(i, 8.875)
    else:
        e_r.vector.setValueLocal(i, 1)

#%%

u, p = TrialFunctions(W)
v, q = TestFunctions(W)

#%%

f = 25e9
k0_sqr = (2*np.pi*f/c)**2

electric_wall = Function(W)

with electric_wall.vector.localForm() as bc_local:
    bc_local.set(0)

bndry_facets = np.where(mvc_boundaries.values == 1)[0]
bdofs = locate_dofs_topological(W, 1, bndry_facets)
bc= DirichletBC(electric_wall, bdofs)

#%%

theta_sqr = k0_sqr * 8.875

#%%

a = 1/theta_sqr*(inner(curl(u), curl(v)) - k0_sqr*e_r*inner(u, v))*dx 
b = inner(grad(p), v)*dx + inner(u, v)*dx + inner(grad(p), grad(q))*dx + inner(u, grad(q))*dx - k0_sqr*e_r*inner(p, q)*dx
c = b + a 

#%%

S = assemble_matrix(b, [bc])
T = assemble_matrix(c, [bc])

#%%

S.assemble()
S = S.realPart()
si, sj, sv = S.getValuesCSR()
S_sp = csr_matrix((sv, sj, si))

T.assemble()
T = T.realPart()
ti, tj, tv = T.getValuesCSR()
T_sp = csr_matrix((tv, tj, ti))

#%%

indicators = np.zeros(S_sp.shape[0])
indicators[bc.dof_indices[:, 0]] = 1
free_dofs = np.where(indicators == 0)[0]
S_np = S_sp[free_dofs, :][:, free_dofs]
T_np = T_sp[free_dofs, :][:, free_dofs]


es = SLEPc.EPS(which='LR').create(comm=MPI.comm_world)
es.setDimensions(10)
es.setOperators(S, T)
es.setFromOptions()
es.solve()

#%%

vr, vi = S.getVecs()
lam = es.getEigenpair(0, vr, vi)
((1-1/lam)*theta_sqr)**0.5/k0_sqr**0.5
print(lam)

The newest vestion:

#!/usr/bin/env python
# coding: utf-8

# In[1]:


import pygmsh
import gmsh
import numpy as np
from mpi4py import MPI
from petsc4py import PETSc
from slepc4py import SLEPc
from scipy.constants import c
from ufl import curl, dx, FiniteElement, grad, inner, Measure, TestFunctions, TrialFunctions
from dolfinx import Constant, Function, FunctionSpace, DirichletBC
from dolfinx.fem import assemble_matrix, DofMapRestriction, locate_dofs_topological
from dolfinx.io import XDMFFile


# ### Mesh

# In[2]:


with pygmsh.occ.Geometry() as geom:
    side_len = 0.0127
    strip_w = 1.27e-3
    strip_h = 1.27e-4
    die_h = 1.27e-3

    point_coords = [[0, 0, 0], [side_len, 0, 0],
                    [side_len, die_h, 0], [side_len, side_len, 0],
                    [0, side_len, 0], [0, die_h, 0],
                    [side_len/2+strip_w/2, die_h, 0], [side_len/2-strip_w/2, die_h, 0],
                    [side_len/2+strip_w/2, die_h+strip_h, 0], [side_len/2-strip_w/2, die_h+strip_h, 0]]

    dense_point_idx = [6, 7, 8, 9]

    points = []
    for i, point in enumerate(point_coords):
        if i in dense_point_idx:
            lcar = 5e-5
        else:
            lcar = 5e-4
        points.append(geom.add_point(point, lcar))

    line_tag =  [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5),
                 (5, 0), (7, 5), (6, 7), (2, 6), (6, 8),
                 (8, 9), (9, 7)]
    lines = []
    for i, j  in line_tag:
        lines.append(geom.add_line(points[i], points[j]))

    dielectric_loop_tag = [0, 1, 8, 7, 6, 5]
    air_loop_tag = [-6, -11, -10, -9, -8, 2, 3, 4]
    domain_loop_tag = [0, 1, 2, 3, 4, 5]
    strip_loop_tag = [7, 9, 10, 11]
    dielectric_loop = geom.add_curve_loop([lines[i] for i in dielectric_loop_tag])
    air_loop = []
    for i in air_loop_tag:
        if i >= 0:
            air_loop.append(lines[i])
        else:
            air_loop.append(-lines[-i])

    air_loop = geom.add_curve_loop(air_loop)

    dielectric_domain = geom.add_plane_surface(dielectric_loop)
    air_domain = geom.add_plane_surface(air_loop)
    geom.add_physical([lines[i] for i in domain_loop_tag + strip_loop_tag], 'PEC')
    geom.add_physical(dielectric_domain, 'Diectric')
    geom.add_physical(air_domain, 'Air')

    mesh = geom.generate_mesh(2)

    from gmsh_helpers import gmsh_model_to_mesh
    mesh, cell_tags, facet_tags = gmsh_model_to_mesh(
        gmsh.model, cell_data=True, facet_data=True, gdim=2)

    V = FiniteElement('N1curl', mesh.ufl_cell(), 2)
    Q = FiniteElement('P', mesh.ufl_cell(), 3)
    W = FunctionSpace(mesh, V*Q)

    dofs_W = np.arange(0, W.dofmap.index_map_bs * (
        W.dofmap.index_map.size_local + W.dofmap.index_map.num_ghosts))

    fdim = mesh.topology.dim - 1
    pec_facets = facet_tags.indices[facet_tags.values == 1]

    bdofs_W = locate_dofs_topological(W, fdim, pec_facets)
    non_bdofs_W = np.setdiff1d(dofs_W, bdofs_W)
    restriction_W_Gamma = DofMapRestriction(W.dofmap, non_bdofs_W)  # TODO: remove without fork

    electric_wall = Function(W)

    with electric_wall.vector.localForm() as bc_local:
        bc_local.set(0)
    bc = DirichletBC(electric_wall, bdofs_W)

    u, p = TrialFunctions(W)
    v, q = TestFunctions(W)


    # In[7]:


    S = FunctionSpace(mesh, ('DG', 0))
    e_r = Function(S)
    x = S.tabulate_dof_coordinates()

    for i in range(x.shape[0]):
        if cell_tags.values[i] == 2:
            e_r.vector.setValueLocal(i, 8.875)
        else:
            e_r.vector.setValueLocal(i, 1)


    # In[8]:


    f = 25e9
    k0_sqr = (2*np.pi*f/c)**2
    theta_sqr = k0_sqr * 8.875


    # In[9]:


    print(theta_sqr, k0_sqr)


    # In[10]:


    a = inner(grad(p), v)*dx + inner(u, v)*dx + inner(grad(p), grad(q))*dx + inner(u, grad(q))*dx - k0_sqr*e_r*inner(p, q)*dx
    b = a + 1/theta_sqr*(inner(curl(u), curl(v)) - k0_sqr*e_r*inner(u, v))*dx


    # In[11]:


    # TODO: requires fork. If you want to use master dolfinx, you should throw away Dirichlet BCs
    # using a petsc4py submatrix, see e.g. https://github.com/michalhabera/dolfiny/blob/master/dolfiny/restriction.py#L69
    #A = assemble_matrix(a, bcs=[], restriction=(restriction_W_Gamma, restriction_W_Gamma))
    A = assemble_matrix(a, bcs=[bc])
    A.assemble()
    B = assemble_matrix(b, bcs=[bc])
    #B = assemble_matrix(b, bcs=[], restriction=(restriction_W_Gamma, restriction_W_Gamma))
    B.assemble()


    # In[12]:


    # Solve
    eps = SLEPc.EPS().create()
    eps.setOperators(A, B)
    eps.setProblemType(SLEPc.EPS.ProblemType.GNHEP)
    eps.setDimensions(1, PETSc.DECIDE, PETSc.DECIDE)
    eps.setWhichEigenpairs(SLEPc.EPS.Which.LARGEST_REAL)
    eps.getST().getKSP().setType("preonly")
    eps.getST().getKSP().getPC().setType("lu")
    eps.getST().getKSP().getPC().setFactorSolverType("mumps")
    eps.solve()
    assert eps.getConverged() >= 1


    # In[13]:


    # Extract leading eigenvalue
    eigv = eps.getEigenvalue(0)
    r, i = eigv.real, eigv.imag
    #assert abs(i) < 1.e-10
    print(r, i)
    print(((1-1/r)*theta_sqr)**0.5/k0_sqr**0.5)

I would strongly suggest making a minimal working example, as this example is has far too many components to be easily debugged by anyone else than the original author.

You have for instance changed the underlying mesh generator (using the built-in gmsh module in the first post, the occ (opencascade) one in the second example).

You have also rearranged alot of your code, created new variable names and using different solver parameters for petsc.

Please make the codes align as much to make it possible to pinpoint changes.

1 Like

Dear dokken,
Since pygmsh does not have “pygmsh.built_in” anymore, and I cannot use it in the newest dolfinx version. I used “pygmsh.geo” and “pygmsh.occ” to generate two meshes and got nearly the same solutions 2.97… with the solver used in the newest dolfinx version, which is also used to get the correct result in the version #957. Therefore, I think the mesh and the solver have no problem since the meshes are generated for the same geometry whether you use geo or occ.
Additionally, is it possible that the tutorial provides examples of finding dispersion functions for microstrip lines?

It seems like you are ignoring the key takeaway message of my post above. To make it possible for other people to help you, it would be good if you could generate two codes that are as equal as possible. As pygmsh is not a dependency of dolfinx, you should use the same version and same mesh in both problems (preferrably the newest version with occ).
Additionally, you should use the same variable names in both codes, as:

are assembling different structures into matrix A and B than into S and T, and you should therefore get different results.

You also use different solver options:

which could influence the answer.

When you present your codes as this, it is hard for someone to give you assistance, as it is not clear what the codes should actually do, and what should compare to what.

1 Like

Dear dokken,
Thank you for the reply. I’d like to install the older version to check the result, but the installation reported an error

AttributeError: module 'ffcx' has no attribute 'codegeneration'
-- UFC could not be found. (missing: UFC_INCLUDE_DIRS UFC_VERSION UFC_VERSION_OK) (Required is at least version "2019.2")

Could you tell me what problem it is?

You Need to checkout and install earlier versions of Basix and ffcx to use an older version.

Dear dokken,
Thank you very much. I got the error “SLEPc could not be found. Be sure to set SLEPC_DIR as an environment variable. (missing: SLEPC_FOUND) (Required is at least version “3.10”)”, but I have installed slepc and the output of “echo $SLEPC_DIR” is /usr/local/slepc. How to solve it?

You need to check that you have set the environment variable $SLEPC_DIR.
Please call echo $SLEPC_DIR and check that it returns the path to the installation.

Dear dokken,
I have checked that the $SLEPC_DIR is correct.

As you have not provided the full instructions set you have used to install either slepc nor dolfinx, I cant really help you any further

Dear dokken,
The installation process and results are posted here:

python3 ./configure
Checking environment... done
Checking PETSc installation... done
Checking LAPACK library... done
Checking SCALAPACK... done
Writing various configuration files... done

================================================================================
SLEPc Configuration
================================================================================

SLEPc directory:
  /usr/local/slepc
PETSc directory:
  /usr/local/petsc
Architecture "linux-gnu-complex-32" with double precision complex numbers
SCALAPACK from SCALAPACK linked by PETSc

xxx==========================================================================xxx
 Configure stage complete. Now build the SLEPc library with:
   make SLEPC_DIR=/usr/local/slepc PETSC_DIR=/usr/local/petsc PETSC_ARCH=linux-gnu-complex-32
xxx==========================================================================xxx
wwshunan@WIN-LBEUVJDAK3Q:/usr/local/slepc$ make SLEPC_DIR=/usr/local/slepc PETSC_DIR=/usr/local/petsc PETSC_ARCH=linux-gnu-complex-32
==========================================
Starting make run on WIN-LBEUVJDAK3Q at Wed, 13 Oct 2021 17:40:55 +0800
Machine characteristics: Linux WIN-LBEUVJDAK3Q 5.10.60.1-microsoft-standard-WSL2 #1 SMP Wed Aug 25 23:20:18 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
-----------------------------------------
Using SLEPc directory: /usr/local/slepc
Using PETSc directory: /usr/local/petsc
Using PETSc arch: linux-gnu-complex-32
-----------------------------------------
SLEPC_VERSION_RELEASE    1
SLEPC_VERSION_MAJOR      3
SLEPC_VERSION_MINOR      16
SLEPC_VERSION_SUBMINOR   0
SLEPC_VERSION_PATCH      0
SLEPC_VERSION_DATE       "Sep 30, 2021"
SLEPC_VERSION_GIT        "v3.16.0"
SLEPC_VERSION_DATE_GIT   "2021-09-30 11:20:14 +0200"
SLEPC_VERSION_EQ(MAJOR,MINOR,SUBMINOR) \
SLEPC_VERSION_ SLEPC_VERSION_EQ
SLEPC_VERSION_LT(MAJOR,MINOR,SUBMINOR)          \
SLEPC_VERSION_LE(MAJOR,MINOR,SUBMINOR) \
SLEPC_VERSION_GT(MAJOR,MINOR,SUBMINOR) \
SLEPC_VERSION_GE(MAJOR,MINOR,SUBMINOR) \
-----------------------------------------
Using SLEPc configure options:
Using SLEPc configuration flags:
#define INCLUDED_SLEPCCONF_H
#define SLEPC_PETSC_DIR "/usr/local/petsc"
#define SLEPC_PETSC_ARCH "linux-gnu-complex-32"
#define SLEPC_DIR "/usr/local/slepc"
#define SLEPC_LIB_DIR "/usr/local/slepc/linux-gnu-complex-32/lib"
#define SLEPC_HAVE_SCALAPACK 1
#define SLEPC_SCALAPACK_HAVE_UNDERSCORE 1
#define SLEPC_HAVE_PACKAGES ":scalapack:"
-----------------------------------------
PETSC_VERSION_RELEASE    1
PETSC_VERSION_MAJOR      3
PETSC_VERSION_MINOR      16
PETSC_VERSION_SUBMINOR   0
PETSC_VERSION_PATCH      0
PETSC_VERSION_DATE       "Sep 29, 2021"
PETSC_VERSION_GIT        "v3.16.0"
PETSC_VERSION_DATE_GIT   "2021-09-29 18:30:02 -0500"
PETSC_VERSION_EQ(MAJOR,MINOR,SUBMINOR) \
PETSC_VERSION_ PETSC_VERSION_EQ
PETSC_VERSION_LT(MAJOR,MINOR,SUBMINOR)          \
PETSC_VERSION_LE(MAJOR,MINOR,SUBMINOR) \
PETSC_VERSION_GT(MAJOR,MINOR,SUBMINOR) \
PETSC_VERSION_GE(MAJOR,MINOR,SUBMINOR) \
-----------------------------------------
Using PETSc configure options: PETSC_ARCH=linux-gnu-complex-32 --COPTFLAGS=-O2 --CXXOPTFLAGS=-O2 --FOPTFLAGS=-O2 --with-make-np=2 --with-64-bit-indices=no --with-debugging=no --with-fortran-bindings=no --with-shared-libraries --download-hypre --download-metis --download-mumps --download-ptscotch --download-scalapack --download-suitesparse --download-superlu --download-superlu_dist --with-scalar-type=complex --with-packages-download-dir=/mnt/d/softwares/petsc --download-cmake
Using PETSc configuration flags:
#define INCLUDED_PETSCCONF_H
#define PETSC_ARCH "linux-gnu-complex-32"
#define PETSC_ATTRIBUTEALIGNED(size) __attribute((aligned(size)))
#define PETSC_Alignx(a,b)
#define PETSC_BLASLAPACK_UNDERSCORE 1
#define PETSC_CLANGUAGE_C 1
#define PETSC_CXX_INLINE inline
#define PETSC_CXX_RESTRICT __restrict
#define PETSC_C_INLINE inline
#define PETSC_C_RESTRICT __restrict
#define PETSC_DEPRECATED_ENUM(why) __attribute((deprecated))
#define PETSC_DEPRECATED_FUNCTION(why) __attribute((deprecated))
#define PETSC_DEPRECATED_MACRO(why) _Pragma(why)
#define PETSC_DEPRECATED_TYPEDEF(why) __attribute((deprecated))
#define PETSC_DIR "/usr/local/petsc"
#define PETSC_DIR_SEPARATOR '/'
#define PETSC_FORTRAN_CHARLEN_T size_t
#define PETSC_FORTRAN_TYPE_INITIALIZE  = -2
#define PETSC_FUNCTION_NAME_C __func__
#define PETSC_FUNCTION_NAME_CXX __func__
#define PETSC_HAVE_ACCESS 1
#define PETSC_HAVE_ATOLL 1
#define PETSC_HAVE_ATTRIBUTEALIGNED 1
#define PETSC_HAVE_BUILTIN_EXPECT 1
#define PETSC_HAVE_BZERO 1
#define PETSC_HAVE_C99_COMPLEX 1
#define PETSC_HAVE_CLOCK 1
#define PETSC_HAVE_CMAKE 1
#define PETSC_HAVE_CXX 1
#define PETSC_HAVE_CXX_COMPLEX 1
#define PETSC_HAVE_CXX_COMPLEX_FIX 1
#define PETSC_HAVE_CXX_DIALECT_CXX03 1
#define PETSC_HAVE_CXX_DIALECT_CXX11 1
#define PETSC_HAVE_CXX_DIALECT_CXX14 1
#define PETSC_HAVE_CXX_DIALECT_CXX17 1
#define PETSC_HAVE_DLADDR 1
#define PETSC_HAVE_DLCLOSE 1
#define PETSC_HAVE_DLERROR 1
#define PETSC_HAVE_DLFCN_H 1
#define PETSC_HAVE_DLOPEN 1
#define PETSC_HAVE_DLSYM 1
#define PETSC_HAVE_DOUBLE_ALIGN_MALLOC 1
#define PETSC_HAVE_DRAND48 1
#define PETSC_HAVE_DYNAMIC_LIBRARIES 1
#define PETSC_HAVE_ERF 1
#define PETSC_HAVE_F90_2PTR_ARG 1
#define PETSC_HAVE_FCNTL_H 1
#define PETSC_HAVE_FENV_H 1
#define PETSC_HAVE_FLOAT_H 1
#define PETSC_HAVE_FORK 1
#define PETSC_HAVE_FORTRAN_FLUSH 1
#define PETSC_HAVE_FORTRAN_GET_COMMAND_ARGUMENT 1
#define PETSC_HAVE_FORTRAN_TYPE_STAR 1
#define PETSC_HAVE_FORTRAN_UNDERSCORE 1
#define PETSC_HAVE_GETCWD 1
#define PETSC_HAVE_GETDOMAINNAME 1
#define PETSC_HAVE_GETHOSTBYNAME 1
#define PETSC_HAVE_GETHOSTNAME 1
#define PETSC_HAVE_GETPAGESIZE 1
#define PETSC_HAVE_GETRUSAGE 1
#define PETSC_HAVE_HYPRE 1
#define PETSC_HAVE_IMMINTRIN_H 1
#define PETSC_HAVE_INTTYPES_H 1
#define PETSC_HAVE_ISINF 1
#define PETSC_HAVE_ISNAN 1
#define PETSC_HAVE_ISNORMAL 1
#define PETSC_HAVE_LGAMMA 1
#define PETSC_HAVE_LOG2 1
#define PETSC_HAVE_LSEEK 1
#define PETSC_HAVE_MALLOC_H 1
#define PETSC_HAVE_MEMALIGN 1
#define PETSC_HAVE_MEMMOVE 1
#define PETSC_HAVE_METIS 1
#define PETSC_HAVE_MMAP 1
#define PETSC_HAVE_MPICH_NUMVERSION 30302300
#define PETSC_HAVE_MPIEXEC_ENVIRONMENTAL_VARIABLE MPIR_CVAR_CH3
#define PETSC_HAVE_MPIIO 1
#define PETSC_HAVE_MPI_COMBINER_CONTIGUOUS 1
#define PETSC_HAVE_MPI_COMBINER_DUP 1
#define PETSC_HAVE_MPI_COMBINER_NAMED 1
#define PETSC_HAVE_MPI_EXSCAN 1
#define PETSC_HAVE_MPI_F90MODULE 1
#define PETSC_HAVE_MPI_F90MODULE_VISIBILITY 1
#define PETSC_HAVE_MPI_FEATURE_DYNAMIC_WINDOW 1
#define PETSC_HAVE_MPI_FINALIZED 1
#define PETSC_HAVE_MPI_GET_ACCUMULATE 1
#define PETSC_HAVE_MPI_GET_LIBRARY_VERSION 1
#define PETSC_HAVE_MPI_IALLREDUCE 1
#define PETSC_HAVE_MPI_IBARRIER 1
#define PETSC_HAVE_MPI_INIT_THREAD 1
#define PETSC_HAVE_MPI_INT64_T 1
#define PETSC_HAVE_MPI_IN_PLACE 1
#define PETSC_HAVE_MPI_LONG_DOUBLE 1
#define PETSC_HAVE_MPI_NEIGHBORHOOD_COLLECTIVES 1
#define PETSC_HAVE_MPI_NONBLOCKING_COLLECTIVES 1
#define PETSC_HAVE_MPI_ONE_SIDED 1
#define PETSC_HAVE_MPI_PROCESS_SHARED_MEMORY 1
#define PETSC_HAVE_MPI_REDUCE_LOCAL 1
#define PETSC_HAVE_MPI_REDUCE_SCATTER 1
#define PETSC_HAVE_MPI_REDUCE_SCATTER_BLOCK 1
#define PETSC_HAVE_MPI_RGET 1
#define PETSC_HAVE_MPI_TYPE_DUP 1
#define PETSC_HAVE_MPI_TYPE_GET_ENVELOPE 1
#define PETSC_HAVE_MPI_WIN_CREATE 1
#define PETSC_HAVE_MUMPS 1
#define PETSC_HAVE_NANOSLEEP 1
#define PETSC_HAVE_NETDB_H 1
#define PETSC_HAVE_NETINET_IN_H 1
#define PETSC_HAVE_PACKAGES ":blaslapack:cmake:hypre:mathlib:metis:mpi:mumps:pthread:ptscotch:regex:scalapack:suitesparse:superlu:superlu_dist:x11:"
#define PETSC_HAVE_POPEN 1
#define PETSC_HAVE_PTHREAD 1
#define PETSC_HAVE_PTHREAD_BARRIER_T 1
#define PETSC_HAVE_PTHREAD_H 1
#define PETSC_HAVE_PTSCOTCH 1
#define PETSC_HAVE_PWD_H 1
#define PETSC_HAVE_RAND 1
#define PETSC_HAVE_READLINK 1
#define PETSC_HAVE_REALPATH 1
#define PETSC_HAVE_REAL___FLOAT128 1
#define PETSC_HAVE_REGEX 1
#define PETSC_HAVE_RTLD_GLOBAL 1
#define PETSC_HAVE_RTLD_LAZY 1
#define PETSC_HAVE_RTLD_LOCAL 1
#define PETSC_HAVE_RTLD_NOW 1
#define PETSC_HAVE_SCALAPACK 1
#define PETSC_HAVE_SCHED_CPU_SET_T 1
#define PETSC_HAVE_SCOTCH_PARMETIS_V3_NODEND 1
#define PETSC_HAVE_SETJMP_H 1
#define PETSC_HAVE_SLEEP 1
#define PETSC_HAVE_SNPRINTF 1
#define PETSC_HAVE_SOCKET 1
#define PETSC_HAVE_SO_REUSEADDR 1
#define PETSC_HAVE_STDINT_H 1
#define PETSC_HAVE_STRCASECMP 1
#define PETSC_HAVE_STRINGS_H 1
#define PETSC_HAVE_STRUCT_SIGACTION 1
#define PETSC_HAVE_SUITESPARSE 1
#define PETSC_HAVE_SUPERLU 1
#define PETSC_HAVE_SUPERLU_DIST 1
#define PETSC_HAVE_SYSINFO 1
#define PETSC_HAVE_SYS_PARAM_H 1
#define PETSC_HAVE_SYS_PROCFS_H 1
#define PETSC_HAVE_SYS_RESOURCE_H 1
#define PETSC_HAVE_SYS_SOCKET_H 1
#define PETSC_HAVE_SYS_SYSINFO_H 1
#define PETSC_HAVE_SYS_TIMES_H 1
#define PETSC_HAVE_SYS_TIME_H 1
#define PETSC_HAVE_SYS_TYPES_H 1
#define PETSC_HAVE_SYS_UTSNAME_H 1
#define PETSC_HAVE_SYS_WAIT_H 1
#define PETSC_HAVE_TGAMMA 1
#define PETSC_HAVE_TIME 1
#define PETSC_HAVE_TIME_H 1
#define PETSC_HAVE_UNAME 1
#define PETSC_HAVE_UNISTD_H 1
#define PETSC_HAVE_USLEEP 1
#define PETSC_HAVE_VA_COPY 1
#define PETSC_HAVE_VSNPRINTF 1
#define PETSC_HAVE_X 1
#define PETSC_HAVE_XMMINTRIN_H 1
#define PETSC_IS_COLORING_MAX USHRT_MAX
#define PETSC_IS_COLORING_VALUE_TYPE short
#define PETSC_IS_COLORING_VALUE_TYPE_F integer2
#define PETSC_LEVEL1_DCACHE_LINESIZE 64
#define PETSC_LIB_DIR "/usr/local/petsc/linux-gnu-complex-32/lib"
#define PETSC_MAX_PATH_LEN 4096
#define PETSC_MEMALIGN 16
#define PETSC_MPICC_SHOW "gcc -Wl,-Bsymbolic-functions -Wl,-z,relro -I/usr/include/x86_64-linux-gnu/mpich -L/usr/lib/x86_64-linux-gnu -lmpich"
#define PETSC_MPIU_IS_COLORING_VALUE_TYPE MPI_UNSIGNED_SHORT
#define PETSC_PREFETCH_HINT_NTA _MM_HINT_NTA
#define PETSC_PREFETCH_HINT_T0 _MM_HINT_T0
#define PETSC_PREFETCH_HINT_T1 _MM_HINT_T1
#define PETSC_PREFETCH_HINT_T2 _MM_HINT_T2
#define PETSC_PYTHON_EXE "/usr/bin/python3"
#define PETSC_Prefetch(a,b,c) _mm_prefetch((const char*)(a),(c))
#define PETSC_REPLACE_DIR_SEPARATOR '\\'
#define PETSC_SIGNAL_CAST
#define PETSC_SIZEOF_ENUM 4
#define PETSC_SIZEOF_INT 4
#define PETSC_SIZEOF_LONG 8
#define PETSC_SIZEOF_LONG_LONG 8
#define PETSC_SIZEOF_SHORT 2
#define PETSC_SIZEOF_SIZE_T 8
#define PETSC_SIZEOF_VOID_P 8
#define PETSC_SLSUFFIX "so"
#define PETSC_UINTPTR_T uintptr_t
#define PETSC_UNUSED __attribute((unused))
#define PETSC_USE_AVX512_KERNELS 1
#define PETSC_USE_BACKWARD_LOOP 1
#define PETSC_USE_COMPLEX 1
#define PETSC_USE_CTABLE 1
#define PETSC_USE_INFO 1
#define PETSC_USE_ISATTY 1
#define PETSC_USE_LOG 1
#define PETSC_USE_MALLOC_COALESCED 1
#define PETSC_USE_PROC_FOR_SIZE 1
#define PETSC_USE_REAL_DOUBLE 1
#define PETSC_USE_SHARED_LIBRARIES 1
#define PETSC_USE_SINGLE_LIBRARY 1
#define PETSC_USE_SOCKET_VIEWER 1
#define PETSC_USE_VISIBILITY_C 1
#define PETSC_USE_VISIBILITY_CXX 1
#define PETSC_USING_64BIT_PTR 1
#define PETSC_USING_F2003 1
#define PETSC_USING_F90FREEFORM 1
#define PETSC__BSD_SOURCE 1
#define PETSC__DEFAULT_SOURCE 1
#define PETSC__GNU_SOURCE 1
-----------------------------------------
Using C/C++ include paths: -I/usr/local/slepc/include -I/usr/local/slepc/linux-gnu-complex-32/include      -I/usr/local/petsc/include -I/usr/local/petsc/linux-gnu-complex-32/include
Using C/C++ compiler: mpicc -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -fstack-protector -fvisibility=hidden -O2
Using Fortran include/module paths: -I/usr/local/slepc/include -I/usr/local/slepc/linux-gnu-complex-32/include -I/usr/local/petsc/include -I/usr/local/petsc/linux-gnu-complex-32/include
Using Fortran compiler: mpif90 -fPIC -Wall -ffree-line-length-0 -Wno-unused-dummy-argument -O2
-----------------------------------------
Using C/C++ linker: mpicc
Using C/C++ flags: -fPIC -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -fstack-protector -fvisibility=hidden -O2
Using Fortran linker: mpif90
Using Fortran flags: -fPIC -Wall -ffree-line-length-0 -Wno-unused-dummy-argument -O2
-----------------------------------------
Using libraries: -Wl,-rpath,/usr/local/slepc/linux-gnu-complex-32/lib -L/usr/local/slepc/linux-gnu-complex-32/lib -lslepc         -Wl,-rpath,/usr/local/petsc/linux-gnu-complex-32/lib -L/usr/local/petsc/linux-gnu-complex-32/lib -Wl,-rpath,/usr/local/petsc/linux-gnu-complex-32/lib -L/usr/local/petsc/linux-gnu-complex-32/lib -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9 -lpetsc -lHYPRE -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord -lscalapack -lspqr -lumfpack -lklu -lcholmod -lbtf -lccolamd -lcolamd -lcamd -lamd -lsuitesparseconfig -lsuperlu -lsuperlu_dist -llapack -lblas -lptesmumps -lptscotchparmetis -lptscotch -lptscotcherr -lesmumps -lscotch -lscotcherr -lpthread -lmetis -lm -lX11 -lstdc++ -ldl -lmpichfort -lmpich -lgfortran -lm -lgfortran -lm -lgcc_s -lquadmath -lrt -lquadmath -lstdc++ -ldl
------------------------------------------
Using mpiexec: mpiexec
------------------------------------------
Using MAKEFLAGS: -j2 -l6.0  --no-print-directory -- PETSC_ARCH=linux-gnu-complex-32 PETSC_DIR=/usr/local/petsc SLEPC_DIR=/usr/local/slepc
==========================================
/usr/bin/python3 /usr/local/petsc/config/gmakegen.py --petsc-arch=linux-gnu-complex-32 --pkg-dir=/usr/local/slepc --pkg-name=slepc --pkg-pkgs=sys,eps,svd,pep,nep,mfn,lme --pkg-arch=linux-gnu-complex-32
/usr/bin/python3 /usr/local/petsc/config/gmakegentest.py --petsc-dir=/usr/local/petsc --petsc-arch=linux-gnu-complex-32 --testdir=./linux-gnu-complex-32/tests --srcdir=/usr/local/slepc/src --pkg-name=slepc --pkg-pkgs=sys,eps,svd,pep,nep,mfn,lme --pkg-arch=linux-gnu-complex-32 --pkg-dir=/usr/local/slepc
          CC linux-gnu-complex-32/obj/sys/slepcutil.o
Use "/usr/bin/make V=1" to see verbose compile lines, "/usr/bin/make V=0" to suppress.
          CC linux-gnu-complex-32/obj/sys/slepcinit.o
          CC linux-gnu-complex-32/obj/sys/slepcsc.o
          CC linux-gnu-complex-32/obj/sys/slepccontour.o
          CC linux-gnu-complex-32/obj/sys/dlregisslepc.o
          CC linux-gnu-complex-32/obj/sys/mat/matutil.o
          CC linux-gnu-complex-32/obj/sys/vec/pool.o
          CC linux-gnu-complex-32/obj/sys/vec/veccomp.o
          CC linux-gnu-complex-32/obj/sys/vec/vecutil.o
          CC linux-gnu-complex-32/obj/sys/classes/st/interface/stset.o
          CC linux-gnu-complex-32/obj/sys/classes/st/interface/stfunc.o
          CC linux-gnu-complex-32/obj/sys/classes/st/interface/stsles.o
          CC linux-gnu-complex-32/obj/sys/classes/st/interface/stsolve.o
          CC linux-gnu-complex-32/obj/sys/classes/st/interface/stregis.o
          CC linux-gnu-complex-32/obj/sys/classes/st/impls/shell/shell.o
          CC linux-gnu-complex-32/obj/sys/classes/st/interface/stshellmat.o
          CC linux-gnu-complex-32/obj/sys/classes/st/impls/filter/filter.o
          CC linux-gnu-complex-32/obj/sys/classes/st/impls/sinvert/sinvert.o
          CC linux-gnu-complex-32/obj/sys/classes/st/impls/filter/filtlan.o
          CC linux-gnu-complex-32/obj/sys/classes/st/impls/cayley/cayley.o
          CC linux-gnu-complex-32/obj/sys/classes/st/impls/shift/shift.o
          CC linux-gnu-complex-32/obj/sys/classes/st/impls/precond/precond.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvfunc.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvbasic.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvops.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvblas.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvglobal.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvlapack.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvorthog.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvbiorthog.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvkrylov.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvregis.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/interface/bvcontour.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/impls/mat/bvmat.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/impls/vecs/vecs.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/impls/contiguous/contig.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/impls/tensor/bvtensor.o
          CC linux-gnu-complex-32/obj/sys/classes/rg/interface/rgbasic.o
          CC linux-gnu-complex-32/obj/sys/classes/bv/impls/svec/svec.o
          CC linux-gnu-complex-32/obj/sys/classes/rg/interface/rgregis.o
          CC linux-gnu-complex-32/obj/sys/classes/rg/impls/polygon/rgpolygon.o
          CC linux-gnu-complex-32/obj/sys/classes/rg/impls/interval/rginterval.o
          CC linux-gnu-complex-32/obj/sys/classes/rg/impls/ellipse/rgellipse.o
          CC linux-gnu-complex-32/obj/sys/classes/rg/impls/ring/rgring.o
          CC linux-gnu-complex-32/obj/sys/classes/fn/interface/fnregis.o
          CC linux-gnu-complex-32/obj/sys/classes/fn/interface/fnbasic.o
          CC linux-gnu-complex-32/obj/sys/classes/fn/impls/fnutil.o
          CC linux-gnu-complex-32/obj/sys/classes/fn/impls/combine/fncombine.o
          CC linux-gnu-complex-32/obj/sys/classes/fn/impls/invsqrt/fninvsqrt.o
          CC linux-gnu-complex-32/obj/sys/classes/fn/impls/log/fnlog.o
          CC linux-gnu-complex-32/obj/sys/classes/fn/impls/sqrt/fnsqrt.o
          CC linux-gnu-complex-32/obj/sys/classes/fn/impls/rational/fnrational.o
          CC linux-gnu-complex-32/obj/sys/classes/fn/impls/phi/fnphi.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/interface/dsbasic.o
          CC linux-gnu-complex-32/obj/sys/classes/fn/impls/exp/fnexp.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/interface/dsops.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/dsutil.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/interface/dspriv.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/gnhep/dsgnhep.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/nep/dsnep.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/ghiep/dsghiep.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/ghiep/hz.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/ghiep/invit.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/nhep/dsnhep.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/nhepts/dsnhepts.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/ghep/dsghep.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/svd/dssvd.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/pep/dspep.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/hep/dshep.o
          CC linux-gnu-complex-32/obj/eps/impls/subspace/subspace.o
          CC linux-gnu-complex-32/obj/sys/classes/ds/impls/gsvd/dsgsvd.o
          CC linux-gnu-complex-32/obj/eps/impls/krylov/arnoldi/arnoldi.o
          CC linux-gnu-complex-32/obj/eps/impls/krylov/epskrylov.o
          CC linux-gnu-complex-32/obj/eps/impls/krylov/lanczos/lanczos.o
          CC linux-gnu-complex-32/obj/eps/impls/krylov/krylovschur/krylovschur.o
          CC linux-gnu-complex-32/obj/eps/impls/krylov/krylovschur/ks-indef.o
          CC linux-gnu-complex-32/obj/eps/impls/krylov/krylovschur/ks-twosided.o
          CC linux-gnu-complex-32/obj/eps/impls/krylov/krylovschur/ks-slice.o
          CC linux-gnu-complex-32/obj/eps/impls/ciss/ciss.o
          CC linux-gnu-complex-32/obj/eps/impls/lyapii/lyapii.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/davidson.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/dvdcalcpairs.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/dvdinitv.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/dvdschm.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/dvdimprovex.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/dvdtestconv.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/dvdupdatev.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/dvdutils.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/dvdgd2.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/gd/gd.o
          CC linux-gnu-complex-32/obj/eps/impls/davidson/jd/jd.o
          CC linux-gnu-complex-32/obj/eps/impls/cg/rqcg/rqcg.o
          CC linux-gnu-complex-32/obj/eps/impls/power/power.o
          CC linux-gnu-complex-32/obj/eps/impls/external/scalapack/scalapack.o
          CC linux-gnu-complex-32/obj/eps/impls/cg/lobpcg/lobpcg.o
          CC linux-gnu-complex-32/obj/eps/impls/lapack/lapack.o
          CC linux-gnu-complex-32/obj/eps/interface/epsmon.o
          CC linux-gnu-complex-32/obj/eps/interface/epsbasic.o
          CC linux-gnu-complex-32/obj/eps/interface/epsdefault.o
          CC linux-gnu-complex-32/obj/eps/interface/epsview.o
          CC linux-gnu-complex-32/obj/eps/interface/epsregis.o
          CC linux-gnu-complex-32/obj/eps/interface/epssetup.o
          CC linux-gnu-complex-32/obj/eps/interface/epsopts.o
          CC linux-gnu-complex-32/obj/eps/interface/dlregiseps.o
          CC linux-gnu-complex-32/obj/eps/interface/epssolve.o
          CC linux-gnu-complex-32/obj/svd/impls/randomized/rsvd.o
          CC linux-gnu-complex-32/obj/svd/impls/external/scalapack/svdscalap.o
          CC linux-gnu-complex-32/obj/svd/impls/lanczos/gklanczos.o
          CC linux-gnu-complex-32/obj/svd/impls/trlanczos/trlanczos.o
          CC linux-gnu-complex-32/obj/svd/impls/cyclic/cyclic.o
          CC linux-gnu-complex-32/obj/svd/impls/cross/cross.o
          CC linux-gnu-complex-32/obj/svd/interface/svdregis.o
          CC linux-gnu-complex-32/obj/svd/impls/lapack/svdlapack.o
          CC linux-gnu-complex-32/obj/svd/interface/svddefault.o
          CC linux-gnu-complex-32/obj/svd/interface/svdbasic.o
          CC linux-gnu-complex-32/obj/svd/interface/svdopts.o
          CC linux-gnu-complex-32/obj/svd/interface/svdview.o
          CC linux-gnu-complex-32/obj/svd/interface/svdsolve.o
          CC linux-gnu-complex-32/obj/svd/interface/svdsetup.o
          CC linux-gnu-complex-32/obj/svd/interface/dlregissvd.o
          CC linux-gnu-complex-32/obj/svd/interface/svdmon.o
          CC linux-gnu-complex-32/obj/pep/impls/peputils.o
          CC linux-gnu-complex-32/obj/pep/impls/krylov/pepkrylov.o
          CC linux-gnu-complex-32/obj/pep/impls/krylov/toar/ptoar.o
          CC linux-gnu-complex-32/obj/pep/impls/krylov/qarnoldi/qarnoldi.o
          CC linux-gnu-complex-32/obj/pep/impls/krylov/stoar/stoar.o
          CC linux-gnu-complex-32/obj/pep/impls/krylov/toar/nrefine.o
          CC linux-gnu-complex-32/obj/pep/impls/ciss/pciss.o
          CC linux-gnu-complex-32/obj/pep/impls/krylov/stoar/qslice.o
          CC linux-gnu-complex-32/obj/pep/impls/linear/linear.o
          CC linux-gnu-complex-32/obj/pep/impls/jd/pjd.o
          CC linux-gnu-complex-32/obj/pep/impls/linear/qeplin.o
          CC linux-gnu-complex-32/obj/pep/interface/pepmon.o
          CC linux-gnu-complex-32/obj/pep/interface/pepbasic.o
          CC linux-gnu-complex-32/obj/pep/interface/pepview.o
          CC linux-gnu-complex-32/obj/pep/interface/pepdefault.o
          CC linux-gnu-complex-32/obj/pep/interface/pepregis.o
          CC linux-gnu-complex-32/obj/pep/interface/pepsetup.o
          CC linux-gnu-complex-32/obj/pep/interface/pepopts.o
          CC linux-gnu-complex-32/obj/pep/interface/pepsolve.o
          CC linux-gnu-complex-32/obj/pep/interface/dlregispep.o
          CC linux-gnu-complex-32/obj/pep/interface/peprefine.o
          CC linux-gnu-complex-32/obj/nep/impls/interpol/interpol.o
          CC linux-gnu-complex-32/obj/nep/impls/nepdefl.o
          CC linux-gnu-complex-32/obj/nep/impls/slp/slp.o
          CC linux-gnu-complex-32/obj/nep/impls/ciss/nciss.o
          CC linux-gnu-complex-32/obj/nep/impls/slp/slp-twosided.o
          CC linux-gnu-complex-32/obj/nep/impls/rii/rii.o
          CC linux-gnu-complex-32/obj/nep/impls/narnoldi/narnoldi.o
          CC linux-gnu-complex-32/obj/nep/impls/nleigs/nleigs-fullb.o
          CC linux-gnu-complex-32/obj/nep/interface/nepmon.o
          CC linux-gnu-complex-32/obj/nep/interface/nepbasic.o
          CC linux-gnu-complex-32/obj/nep/impls/nleigs/nleigs.o
          CC linux-gnu-complex-32/obj/nep/interface/nepdefault.o
          CC linux-gnu-complex-32/obj/nep/interface/nepview.o
          CC linux-gnu-complex-32/obj/nep/interface/nepregis.o
          CC linux-gnu-complex-32/obj/nep/interface/nepsetup.o
          CC linux-gnu-complex-32/obj/nep/interface/nepopts.o
          CC linux-gnu-complex-32/obj/nep/interface/nepsolve.o
          CC linux-gnu-complex-32/obj/nep/interface/nepresolv.o
          CC linux-gnu-complex-32/obj/nep/interface/dlregisnep.o
          CC linux-gnu-complex-32/obj/nep/interface/neprefine.o
          CC linux-gnu-complex-32/obj/mfn/impls/krylov/mfnkrylov.o
          CC linux-gnu-complex-32/obj/mfn/interface/mfnmon.o
          CC linux-gnu-complex-32/obj/mfn/impls/expokit/mfnexpokit.o
          CC linux-gnu-complex-32/obj/mfn/interface/mfnregis.o
          CC linux-gnu-complex-32/obj/mfn/interface/mfnbasic.o
          CC linux-gnu-complex-32/obj/mfn/interface/mfnsetup.o
          CC linux-gnu-complex-32/obj/mfn/interface/mfnopts.o
          CC linux-gnu-complex-32/obj/mfn/interface/mfnsolve.o
          CC linux-gnu-complex-32/obj/mfn/interface/dlregismfn.o
          CC linux-gnu-complex-32/obj/lme/interface/lmemon.o
          CC linux-gnu-complex-32/obj/lme/impls/krylov/lmekrylov.o
          CC linux-gnu-complex-32/obj/lme/interface/lmeregis.o
          CC linux-gnu-complex-32/obj/lme/interface/lmebasic.o
          CC linux-gnu-complex-32/obj/lme/interface/lmeopts.o
          CC linux-gnu-complex-32/obj/lme/interface/lmedense.o
          CC linux-gnu-complex-32/obj/lme/interface/lmesetup.o
          CC linux-gnu-complex-32/obj/lme/interface/dlregislme.o
          CC linux-gnu-complex-32/obj/lme/interface/lmesolve.o
     CLINKER linux-gnu-complex-32/lib/libslepc.so.3.16.0
Now to check if the library is working do:
make SLEPC_DIR=/usr/local/slepc PETSC_DIR=/usr/local/petsc check
wwshunan@WIN-LBEUVJDAK3Q:/mnt/d/softwares/dolfinx/complex-build$ PETSC_ARCH=linux-gnu-complex-32 SLEPC_DIR=/usr/local/slepc cmake -G Ninja  ../cpp
-- Test PETSC_TEST_RUNS with shared library linking - Success
-- Asking Python module FFCX for location of UFC...
-- HDF5: Using hdf5 compiler wrapper to determine C configuration
-- Checking for package 'SCOTCH-PT'
-- Found SCOTCH (version 6.1.1)
-- Performing test SCOTCH_TEST_RUNS
-- Performing test SCOTCH_TEST_RUNS - Success
-- Checking for one of the modules 'crayslepc_real;SLEPc'
-- SLEPc could not be found. Be sure to set SLEPC_DIR as an environment variable. (missing: SLEPC_FOUND) (Required is at least version "3.10")
-- ParMETIS could not be found/configured. (missing: PARMETIS_TEST_RUNS PARMETIS_INCLUDE_DIRS PARMETIS_VERSION PARMETIS_VERSION_OK) (Required is at least version "4.0.2")
-- Checking for package 'KaHIP'
-- Performing Test KAHIP_TEST_RUNS
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
PARHIP_LIBRARY
    linked by target "cmTC_dfc1f" in directory /mnt/d/softwares/dolfinx/complex-build/CMakeFiles/CMakeTmp

CMake Error at /usr/share/cmake-3.16/Modules/CheckCXXSourceRuns.cmake:97 (try_run):
  Failed to configure test project build system.
Call Stack (most recent call first):
  cmake/modules/FindKaHIP.cmake:92 (check_cxx_source_runs)
  CMakeLists.txt:222 (find_package)


-- Configuring incomplete, errors occurred!
See also "/mnt/d/softwares/dolfinx/complex-build/CMakeFiles/CMakeOutput.log".
wwshunan@WIN-LBEUVJDAK3Q:/mnt/d/softwares/dolfinx/complex-build$ echo $SLEPC_DIR
/usr/local/slepc

I will provide more detail if you need it. It can find the slepc in some heads and not in other heads. For example slepc can be found in HEAD e5b9ba4d8ff989f88ced8cd43fced29a946c19e5. Strange behaviour.

Could you echo your $PETSC_DIR and $PETSC_ARCH as well?

wwshunan@WIN-LBEUVJDAK3Q:/usr/local/petsc$ echo $PETSC_DIR $PETSC_ARCH
/usr/local/petsc linux-gnu-complex-32

It is rather strange that the build cant find the slepc dir.

However, your error message seems related to Kahip rather than slepc.

I can help you further if you provide:

  • Which commit of:
    • Basix
    • FFcx
    • Dolfin-x
    • ufl

that you are using, as well as the version of slepc that you are using.

ufl: f042055a446f60b06440d46de449fc4f3002abc0
dolfinx: 5065500f1f256fe54548ccf6fc41487afa983f79
Basix: 283c9dffa3e3803b30be60a020a88c0bf0578606 (HEAD → main, origin/main, origin/HEAD)
ffcx: 2857072dd106651add752f3313ba726df4913738
slepc: 3.16.0
Since I tried several dolfinx commit, the error now is:

wwshunan@WIN-LBEUVJDAK3Q:/mnt/d/softwares/dolfinx/build$ PETSC_ARCH=linux-gnu-complex-32 SLEPC_DIR=/usr/local/slepc cmake -G Ninja  ../cpp
-- Found Boost 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0
--   Requested configuration: QUIET REQUIRED COMPONENTS timer;filesystem
-- Found boost_headers 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0
-- Found boost_timer 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_timer-1.71.0
--   [x] libboost_timer.so.1.71.0
--   [ ] libboost_timer.a
-- Adding boost_timer dependencies: chrono;headers
-- Found boost_chrono 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_chrono-1.71.0
--   [x] libboost_chrono.so.1.71.0
--   [ ] libboost_chrono.a
-- Adding boost_chrono dependencies: headers
-- Found boost_filesystem 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0
--   [x] libboost_filesystem.so.1.71.0
--   [ ] libboost_filesystem.a
-- Adding boost_filesystem dependencies: headers
-- Test PETSC_TEST_RUNS with shared library linking - Success
-- HDF5: Using hdf5 compiler wrapper to determine C configuration
-- Checking for package 'SCOTCH-PT'
-- Found SCOTCH (version 6.1.1)
-- Performing test SCOTCH_TEST_RUNS
-- Performing test SCOTCH_TEST_RUNS - Success
-- Asking Python module FFCX for location of UFC...
-- Checking for one of the modules 'crayslepc_real;slepc;SLEPc'
-- Test SLEPC_TEST_RUNS with shared library linking - Success
-- Checking for package 'KaHIP'
-- Performing Test KAHIP_TEST_RUNS
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
PARHIP_LIBRARY
    linked by target "cmTC_c772a" in directory /mnt/d/softwares/dolfinx/build/CMakeFiles/CMakeTmp

CMake Error at /usr/share/cmake-3.16/Modules/CheckCXXSourceRuns.cmake:97 (try_run):
  Failed to configure test project build system.
Call Stack (most recent call first):
  cmake/modules/FindKaHIP.cmake:92 (check_cxx_source_runs)
  CMakeLists.txt:197 (find_package)


-- Configuring incomplete, errors occurred!
See also "/mnt/d/softwares/dolfinx/build/CMakeFiles/CMakeOutput.log".

Dear dokken,
Can I install the dolfinx docker published last year?

We do not keep versions of dolfinx on docker (just yet). i have some snapshots of older versions at: Docker Hub
that you could try to use

dokken, thank you very much

Your system has problems with KaHIP. If that’s not specifically the feature that you want to test then I recommend switching it off completely. It’s just in the way.

1 Like

dparsons, thank you. I reinstalled KaHIP and the relevant problem is solved. However, a confusing error is reported even if I have installed slepc successfully and set the SLEPC_DIR:

-- The following OPTIONAL packages have not been found:

 * SLEPc (required version >= 3.10), Scalable Library for Eigenvalue Problem Computations, <http://slepc.upv.es/>

The error is also reported when I tried to install dolfinx:

  -- Check size of PetscInt
  -- Check size of PetscInt - failed
  -- Looking for PETSC_USE_COMPLEX
  -- Looking for PETSC_USE_COMPLEX - not found
  -- Checking for one of the modules 'crayslepc_real;slepc;SLEPc'
  -- Found PythonInterp: /usr/bin/python3 (found version "3.8.10")
  -- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.8.so
  -- Performing Test HAS_FLTO
  -- Performing Test HAS_FLTO - Success
  -- LTO enabled
  -- Performing Test HAVE_PEDANTIC
  -- Performing Test HAVE_PEDANTIC - Success
  -- Checking for package 'PETSc4Py'
  -- petsc4py version 3.16.0 found
  -- Found PETSc4py: /home/wwshunan/.local/lib/python3.8/site-packages/petsc4py/include
  -- Found MPI4PY: /usr/local/lib/python3.8/dist-packages/mpi4py/include
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /tmp/pip-req-build-v3paee4d/build/temp.linux-x86_64-3.8
  Scanning dependencies of target cpp
  [  7%] Building CXX object CMakeFiles/cpp.dir/dolfinx/wrappers/dolfin.cpp.o
  [ 21%] Building CXX object CMakeFiles/cpp.dir/dolfinx/wrappers/fem.cpp.o
  [ 21%] Building CXX object CMakeFiles/cpp.dir/dolfinx/wrappers/common.cpp.o
  In file included from /usr/local/include/dolfinx/common/MPI.h:14,
                   from /tmp/pip-req-build-v3paee4d/dolfinx/wrappers/MPICommWrapper.h:9,
                   from /tmp/pip-req-build-v3paee4d/dolfinx/wrappers/common.cpp:7:
  /usr/local/include/dolfinx/graph/AdjacencyList.h:9:10: fatal error: Eigen/Dense: No such file or directory
      9 | #include <Eigen/Dense>
        |          ^~~~~~~~~~~~~
  compilation terminated.
  In file included from /usr/local/include/dolfinx/common/MPI.h:14,
                   from /tmp/pip-req-build-v3paee4d/dolfinx/wrappers/MPICommWrapper.h:9,
                   from /tmp/pip-req-build-v3paee4d/dolfinx/wrappers/caster_mpi.h:9,
                   from /tmp/pip-req-build-v3paee4d/dolfinx/wrappers/fem.cpp:7:
  /usr/local/include/dolfinx/graph/AdjacencyList.h:9:10: fatal error: Eigen/Dense: No such file or directory
      9 | #include <Eigen/Dense>