NDF-Poli-USP / spyro

Wave propagators for seismic domains with application to full waveform inversion.
GNU General Public License v3.0
33 stars 15 forks source link

Error : Unable to recognise "Line search" #108

Open acse-yw11823 opened 1 week ago

acse-yw11823 commented 1 week ago

Hello. I am currently using Mac M1. And running the following code ( the file in /spyro/paper/run_fwi_2d.py). It shows the error from the pybind11 ROL.Algorithm("Line Search", params). Does anyone know why `` "Line search"``` be recognized as a string instead of ROL::Step? Does anyone have a hint about solving it? Here is my code:

from firedrake import *
import numpy as np
import finat
from ROL.firedrake_vector import FiredrakeVector as FeVector
import ROL
from mpi4py import MPI

import spyro

# import gc
import psutil
import os

def get_memory_usage():
    """Return the memory usage in Mo."""
    process = psutil.Process(os.getpid())
    mem = process.memory_info()[0] / float(2**20)
    return mem

outdir = "fwi_p3_ho/"
if COMM_WORLD.rank == 0:
    mem = open(outdir + "mem.txt", "w")
    func = open(outdir + "func.txt", "w")

model = {}
model["opts"] = {
    "method": "KMV",  # either CG or KMV
    "quadrature": "KMV",  # Equi or KMV
    "degree": 3,  # p order
    "dimension": 2,  # dimension
    "regularization": False,  # regularization is on?
    "gamma": 1.0,  # regularization parameter
}
model["parallelism"] = {
    "type": "automatic",
}
model["mesh"] = {
    "Lz": 3.5,  # depth in km - always positive
    "Lx": 17.0,  # width in km - always positive
    "Ly": 0.0,  # thickness in km - always positive
    "meshfile": "meshes/marmousi_guess.msh",
    "initmodel": "velocity_models/marmousi_guess.hdf5",
    "truemodel": "not_used.hdf5",
}
model["BCs"] = {
    "status": True,  # True or false
    "outer_bc": "non-reflective",  # None or non-reflective (outer boundary condition)
    "damping_type": "polynomial",  # polynomial, hyperbolic, shifted_hyperbolic
    "exponent": 2,  # damping layer has a exponent variation
    "cmax": 4.5,  # maximum acoustic wave velocity in PML - km/s
    "R": 1e-6,  # theoretical reflection coefficient
    "lz": 0.9,  # thickness of the PML in the z-direction (km) - always positive
    "lx": 0.9,  # thickness of the PML in the x-direction (km) - always positive
    "ly": 0.0,  # thickness of the PML in the y-direction (km) - always positive
}
model["acquisition"] = {
    "source_type": "Ricker",
    "num_sources": 40,
    "source_pos": spyro.create_transect((-0.01, 1.0), (-0.01, 15.0), 40),
    "frequency": 5.0,
    "delay": 1.0,
    "num_receivers": 500,
    "receiver_locations": spyro.create_transect((-0.10, 0.1), (-0.10, 17.0), 500),
}
model["timeaxis"] = {
    "t0": 0.0,  # Initial time for event
    "tf": 5.00,  # Final time for event
    "dt": 0.001,
    "amplitude": 1,  # the Ricker has an amplitude of 1.
    "nspool": 1000,  # how frequently to output solution to pvds
    "fspool": 10,  # how frequently to save solution to RAM
    "skip": 4,
}
comm = spyro.utils.mpi_init(model)
mesh, V = spyro.io.read_mesh(model, comm)
if COMM_WORLD.rank == 0:
    print(f"The mesh has {V.dim()} degrees of freedom")
vp = spyro.io.interpolate(model, mesh, V, guess=True)
if comm.ensemble_comm.rank == 0:
    File("guess_velocity.pvd", comm=comm.comm).write(vp)
sources = spyro.Sources(model, mesh, V, comm)
receivers = spyro.Receivers(model, mesh, V, comm)
wavelet = spyro.full_ricker_wavelet(
    dt=model["timeaxis"]["dt"],
    tf=model["timeaxis"]["tf"],
    freq=model["acquisition"]["frequency"],
)
if comm.ensemble_comm.rank == 0:
    control_file = File(outdir + "control.pvd", comm=comm.comm)
    grad_file = File(outdir + "grad.pvd", comm=comm.comm)
quad_rule = finat.quadrature.make_quadrature(
    V.finat_element.cell, V.ufl_element().degree(), "KMV"
)
dxlump = dx(scheme=quad_rule)

water = np.where(vp.dat.data[:] < 1.51)

class L2Inner(object):
    def __init__(self):
        self.A = assemble(
            TrialFunction(V) * TestFunction(V) * dxlump, mat_type="matfree"
        )
        self.Ap = as_backend_type(self.A).mat()

    def eval(self, _u, _v):
        upet = as_backend_type(_u).vec()
        vpet = as_backend_type(_v).vec()
        A_u = self.Ap.createVecLeft()
        self.Ap.mult(upet, A_u)
        return vpet.dot(A_u)

def regularize_gradient(vp, dJ):
    """Tikhonov regularization"""
    m_u = TrialFunction(V)
    m_v = TestFunction(V)
    mgrad = m_u * m_v * dx(scheme=quad_rule)
    ffG = dot(grad(vp), grad(m_v)) * dx(scheme=quad_rule)
    G = mgrad - ffG
    lhsG, rhsG = lhs(G), rhs(G)
    gradreg = Function(V)
    grad_prob = LinearVariationalProblem(lhsG, rhsG, gradreg)
    grad_solver = LinearVariationalSolver(
        grad_prob,
        solver_parameters={
            "ksp_type": "preonly",
            "pc_type": "jacobi",
            "mat_type": "matfree",
        },
    )
    grad_solver.solve()
    dJ += gradreg
    return dJ

class Objective(ROL.Objective):
    def __init__(self, inner_product):
        ROL.Objective.__init__(self)
        self.inner_product = inner_product
        self.p_guess = None
        self.misfit = 0.0
        self.p_exact_recv = spyro.io.load_shots(model, comm)

    def value(self, x, tol):
        """Compute the functional"""
        J_total = np.zeros((1))
        self.p_guess, p_guess_recv = spyro.solvers.forward(
            model,
            mesh,
            comm,
            vp,
            sources,
            wavelet,
            receivers,
        )
        self.misfit = spyro.utils.evaluate_misfit(
            model, p_guess_recv, self.p_exact_recv
        )
        J_total[0] += spyro.utils.compute_functional(model, self.misfit, velocity=vp)
        J_total = COMM_WORLD.allreduce(J_total, op=MPI.SUM)
        J_total[0] /= comm.ensemble_comm.size
        if comm.comm.size > 1:
            J_total[0] /= comm.comm.size

        if COMM_WORLD.rank == 0:
            mem.write(str(get_memory_usage()))
            func.write(str(J_total[0]))
            mem.write("\n")
            func.write("\n")

        return J_total[0]

    def gradient(self, g, x, tol):
        """Compute the gradient of the functional"""
        dJ = Function(V, name="gradient")
        dJ_local = spyro.solvers.gradient(
            model,
            mesh,
            comm,
            vp,
            receivers,
            self.p_guess,
            self.misfit,
        )
        if comm.ensemble_comm.size > 1:
            comm.allreduce(dJ_local, dJ)
        else:
            dJ = dJ_local
        dJ /= comm.ensemble_comm.size
        if comm.comm.size > 1:
            dJ /= comm.comm.size
        # regularize the gradient if asked.
        if model["opts"]["regularization"]:
            dJ = regularize_gradient(vp, dJ)
        # mask the water layer
        dJ.dat.data[water] = 0.0
        # Visualize
        if comm.ensemble_comm.rank == 0:
            grad_file.write(dJ)
        g.scale(0)
        g.vec += dJ

    def update(self, x, flag, iteration):
        vp.assign(Function(V, x.vec, name="velocity"))
        # If iteration reduces functional, save it.
        if iteration >= 0:
            if comm.ensemble_comm.rank == 0:
                control_file.write(vp)

paramsDict = {
    "General": {"Secant": {"Type": "Limited-Memory BFGS", "Maximum Storage": 10}},
    "Step": {
        "Type": "Augmented Lagrangian",
        "Augmented Lagrangian": {
            "Subproblem Step Type": "Line Search",
            "Subproblem Iteration Limit": 5.0,
        },
        "Line Search": {"Descent Method": {"Type": "Quasi-Newton Step"}},
    },
    "Status Test": {
        "Gradient Tolerance": 1e-16,
        "Iteration Limit": 100,
        "Step Tolerance": 1.0e-16,
    },
}

params = ROL.ParameterList(paramsDict, "Parameters")

inner_product = L2Inner()

obj = Objective(inner_product)

u = Function(V, name="velocity").assign(vp)
opt = FeVector(u.vector(), inner_product)

# Add control bounds to the problem (uses more RAM)
xlo = Function(V)
xlo.interpolate(Constant(1.0))
x_lo = FeVector(xlo.vector(), inner_product)

xup = Function(V)
xup.interpolate(Constant(5.0))
x_up = FeVector(xup.vector(), inner_product)

bnd = ROL.Bounds(x_lo, x_up, 1.0)

algo = ROL.Algorithm("Line Search", params)

algo.run(opt, obj, bnd)

if comm.ensemble_comm.rank == 0:
    File("res.pvd", comm=comm.comm).write(vp)

if COMM_WORLD.rank == 0:
    func.close()
    mem.close()

And this is the error:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[2], [line 224](vscode-notebook-cell:?execution_count=2&line=224)
    [220](vscode-notebook-cell:?execution_count=2&line=220) u = Function(V, name="velocity").assign(vp)
    [222](vscode-notebook-cell:?execution_count=2&line=222) opt = FeVector(u.vector(), inner_product)
--> [224](vscode-notebook-cell:?execution_count=2&line=224) algo = ROL.Algorithm("Line Search", params)
    [226](vscode-notebook-cell:?execution_count=2&line=226) algo.run(opt, obj)
    [228](vscode-notebook-cell:?execution_count=2&line=228) if comm.ensemble_comm.rank == 0:

TypeError: __init__(): incompatible constructor arguments. The following argument types are supported:
    1. _ROL.Algorithm(arg0: ROL::Step<double>, arg1: _ROL.StatusTest)

Invoked with: 'Line Search', <_ROL.ParameterList object at 0x16c2aecf0>

Also, I was using pip install pyroltrilinos instead of pip install roltrilinos pip install ROL when I installing ROL. Not sure if this problem related to this.

Many thanks for the help !!!!

Olender commented 1 week ago

I haven't seen this problem before. Please try to install roltrillinos using the following:

source path/to/firedrake/bin/activate
sudo apt install patchelf
pip3 install --no-cache-dir roltrilinos
pip3 install --no-cache-dir ROL

If you are using MacOS I suggest following the instructions from Fireshape (https://github.com/fireshape/fireshape):

git clone -b rol-2.0-checkpointing https://github.com/APaganini/pyrol.git
git submodule update --init
python -m pip install pyrol/
acse-yw11823 commented 1 week ago

Many thanks for the reply! I am using MacOS and trying the method you suggested!

I haven't seen this problem before. Please try to install roltrillinos using the following:

source path/to/firedrake/bin/activate
sudo apt install patchelf
pip3 install --no-cache-dir roltrilinos
pip3 install --no-cache-dir ROL

If you are using MacOS I suggest following the instructions from Fireshape (https://github.com/fireshape/fireshape):

git clone -b rol-2.0-checkpointing https://github.com/APaganini/pyrol.git
git submodule update --init
python -m pip install pyrol/
acse-yw11823 commented 1 week ago

I followed the instructions in the terminal and encountered the following error. I recall a similar error occurring the first time I tried to install ROL. My professor suggested that I use pip install pyroltrilinos instead.

(firedrake) yw11823@IC-FVFL80FW1WGC paper % git clone -b rol-2.0-checkpointing https://github.com/APaganini/pyrol.git
git submodule update --init
python -m pip install pyrol/
Cloning into 'pyrol'...
remote: Enumerating objects: 1547, done.
remote: Counting objects: 100% (196/196), done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 1547 (delta 162), reused 159 (delta 140), pack-reused 1351
Receiving objects: 100% (1547/1547), 681.39 KiB | 622.00 KiB/s, done.
Resolving deltas: 100% (886/886), done.
Processing ./pyrol
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: pyroltrilinos
  Building wheel for pyroltrilinos (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for pyroltrilinos (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [427 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-14.0-arm64-cpython-311
      creating build/lib.macosx-14.0-arm64-cpython-311/ROL
      copying ROL/numpy_vector.py -> build/lib.macosx-14.0-arm64-cpython-311/ROL
      copying ROL/firedrake_vector.py -> build/lib.macosx-14.0-arm64-cpython-311/ROL
      copying ROL/__init__.py -> build/lib.macosx-14.0-arm64-cpython-311/ROL
      copying ROL/dolfin_vector.py -> build/lib.macosx-14.0-arm64-cpython-311/ROL
      running build_ext
      -- The C compiler identification is AppleClang 15.0.0.15000100
      -- The CXX compiler identification is AppleClang 15.0.0.15000100
      -- Detecting C compiler ABI info
      -- Detecting C compiler ABI info - done
      -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
      -- Detecting C compile features
      -- Detecting C compile features - done
      -- Detecting CXX compiler ABI info
      -- Detecting CXX compiler ABI info - done
      -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
      -- Detecting CXX compile features
      -- Detecting CXX compile features - done

      Configuring Trilinos build directory

      -- PROJECT_SOURCE_DIR='/Users/yw11823/ACSE/spyro/paper/pyrol/build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-src'
      -- PROJECT_BINARY_DIR='/Users/yw11823/ACSE/spyro/paper/pyrol/build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-build'
      -- Trilinos_TRIBITS_DIR='/Users/yw11823/ACSE/spyro/paper/pyrol/build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-src/cmake/tribits'
      -- TriBITS_VERSION_STRING='0.9 (Dev)'
      -- CMAKE_VERSION='3.29.4'
      -- CMAKE_GENERATOR='Unix Makefiles'
      -- CMAKE_HOST_SYSTEM_NAME='Darwin'
      -- Trilinos_HOSTNAME='IC-FVFL80FW1WGC'
      CMake Warning (dev) at build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-src/cmake/tribits/core/package_arch/TribitsFindPythonInterp.cmake:64 (find_package):
        Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
        are removed.  Run "cmake --help-policy CMP0148" for policy details.  Use
        the cmake_policy command to set the policy and suppress this warning.

      Call Stack (most recent call first):
        build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-src/cmake/tribits/core/package_arch/TribitsFindPythonInterp.cmake:80 (tribits_find_python)
        build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-src/cmake/tribits/core/package_arch/TribitsProjectImpl.cmake:109 (tribits_find_python_interp)
        build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-src/cmake/tribits/core/package_arch/TribitsProject.cmake:92 (tribits_project_impl)
        build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-src/CMakeLists.txt:103 (TRIBITS_PROJECT)
      This warning is for project developers.  Use -Wno-dev to suppress it.

      -- Found PythonInterp: /Users/yw11823/ACSE/irp/firedrake/bin/python (found suitable version "3.11.9", minimum required is "2.6")
      -- PYTHON_EXECUTABLE='/Users/yw11823/ACSE/irp/firedrake/bin/python'
      -- Found Git: /opt/homebrew/bin/git (found version "2.45.2")

      Setting up major user options ...

      -- The Current CXX Standard is : 17
      -- Setting Trilinos_ENABLE_TriKota=OFF because '/Users/yw11823/ACSE/spyro/paper/pyrol/build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-src/packages/TriKota/Dakota' does not exist!
      -- Trilinos_GENERATE_REPO_VERSION_FILE='ON'

      Trilinos repos versions:
      --------------------------------------------------------------------------------
      *** Base Git Repo: Trilinos
      edb07f888f [Wed Jan 31 02:13:01 2024 +0000] <angus@agibson.me>
      Reduce required CMake version to 3.22
       --------------------------------------------------------------------------------

      Reading list of native TPLs from /Users/yw11823/ACSE/spyro/paper/pyrol/build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-src/TPLsList.cmake

      -- After reading above TPLsList.cmake file: Trilinos_NUM_DEFINED_TPLS='122'

      Reading list of native packages from /Users/yw11823/ACSE/spyro/paper/pyrol/build/temp.macosx-14.0-arm64-cpython-311/ROL/_deps/trilinos-src/PackagesList.cmake

      -- After reading above PackagesList.cmake file: Trilinos_NUM_DEFINED_INTERNAL_TOPLEVEL_PACKAGES='60'

      Processing Project, Repository, and Package dependency files and building internal dependencies graph ...

      -- Trilinos_NUM_DEFINED_INTERNAL_PACKAGES='152'
      -- Tentatively enabling TPL 'DLlib'

      Package dependencies information:

      -- Trilinos_NUM_DEFINED_TPLS='122'

      -- Trilinos_NUM_DEFINED_INTERNAL_TOPLEVEL_PACKAGES='60'

      -- Trilinos_NUM_DEFINED_TOPLEVEL_PACKAGES='182'

      -- Trilinos_NUM_DEFINED_INTERNAL_PACKAGES='152'

      -- Trilinos_NUM_DEFINED_PACKAGES='274'

      Explicitly enabled top-level packages on input (by user):  ROL 1

      Explicitly enabled packages on input (by user):  ROL 1

      Explicitly disabled top-level packages on input (by user or by default):  PyTrilinos2 NewPackage 2

      Explicitly disabled packages on input (by user or by default):  ShyLU_NodeBasker SEACASExotec2 STKMiddle_mesh STKSearchUtil STKTransferUtil PanzerExprEval PyTrilinos2 NewPackage 8

      Explicitly enabled external packages/TPLs on input (by user):  DLlib 1

      Explicitly disabled external packages/TPLs on input (by user or by default):  MPI 1

      Disabling all packages that have a required dependency on disabled TPLs and optional package TPL support based on TPL_ENABLE_<TPL>=OFF ...

      Disabling subpackages for hard disables of parent packages due to Trilinos_ENABLE_<PARENT_PACKAGE>=OFF ...

      Disabling forward required packages and optional intra-package support that have a dependency on disabled packages Trilinos_ENABLE_<TRIBITS_PACKAGE>=OFF (or TPL_ENABLE_<TRIBITS_EXTERNAL_PACKAGE>=OFF) ...

      -- Setting Trilinos_ENABLE_STKCoupling=OFF because STKCoupling has a required library dependence on disabled package MPI
      -- Setting Trilinos_ENABLE_STKSearch=OFF because STKSearch has a required library dependence on disabled package MPI
      -- Setting Trilinos_ENABLE_STKMesh=OFF because STKMesh has a required library dependence on disabled package MPI
      -- Setting Trilinos_ENABLE_STKEmend=OFF because STKEmend has a required library dependence on disabled package MPI
      -- Setting Trilinos_ENABLE_ShyLU_DDFROSch=OFF because ShyLU_DDFROSch has a required library dependence on disabled package MPI
      -- Setting Trilinos_ENABLE_PanzerDofMgr=OFF because PanzerDofMgr has a required library dependence on disabled package MPI
      -- Setting Trilinos_ENABLE_PanzerDiscFE=OFF because PanzerDiscFE has a required library dependence on disabled package MPI
      -- Setting Trilinos_ENABLE_PanzerMiniEM=OFF because PanzerMiniEM has a required library dependence on disabled package MPI
      -- Setting Trilinos_ENABLE_STKTransfer=OFF because STKTransfer has a required library dependence on disabled package STKSearch
      -- Setting Trilinos_ENABLE_STKBalance=OFF because STKBalance has a required library dependence on disabled package STKSearch
      -- Setting Trilinos_ENABLE_Percept=OFF because Percept has a required library dependence on disabled package STKSearch
      -- Setting Trilinos_ENABLE_Krino=OFF because Krino has a required library dependence on disabled package STKSearch
      -- Setting Trilinos_ENABLE_STKTools=OFF because STKTools has a required library dependence on disabled package STKTransfer
      -- Setting Trilinos_ENABLE_STKIO=OFF because STKIO has a required library dependence on disabled package STKMesh
      -- Setting Trilinos_ENABLE_PanzerAdaptersSTK=OFF because PanzerAdaptersSTK has a required library dependence on disabled package STKMesh
      -- Setting Trilinos_ENABLE_ShyLU_DD=OFF because ShyLU_DD has a required library dependence on disabled package ShyLU_DDFROSch
      -- Setting Trilinos_ENABLE_ShyLU=OFF because ShyLU has a required library dependence on disabled package ShyLU_DD

      Enabling subpackages for hard enables of parent packages due to Trilinos_ENABLE_<PARENT_PACKAGE>=ON ...

      Disabling subpackage tests/examples based on parent package tests/examples disables ...

      Enabling subpackage tests/examples based on parent package tests/examples enables ...

      Enabling all required upstream packages for current set of enabled packages (Trilinos_ENABLE_SECONDARY_TESTED_CODE=ON) ...

      -- Setting Trilinos_ENABLE_Teuchos=ON because ROL has a required dependence on Teuchos
      -- Setting Trilinos_ENABLE_TeuchosCore=ON because Teuchos has a required dependence on TeuchosCore
      -- Setting Trilinos_ENABLE_TeuchosParser=ON because Teuchos has a required dependence on TeuchosParser
      -- Setting Trilinos_ENABLE_TeuchosParameterList=ON because Teuchos has a required dependence on TeuchosParameterList
      -- Setting Trilinos_ENABLE_TeuchosComm=ON because Teuchos has a required dependence on TeuchosComm
      -- Setting Trilinos_ENABLE_TeuchosNumerics=ON because Teuchos has a required dependence on TeuchosNumerics
      -- Setting Trilinos_ENABLE_TeuchosRemainder=ON because Teuchos has a required dependence on TeuchosRemainder
      -- Setting TPL_ENABLE_BLAS=ON because TeuchosNumerics has a required dependence on BLAS
      -- Setting TPL_ENABLE_LAPACK=ON because TeuchosNumerics has a required dependence on LAPACK

      Enabling all optional intra-package enables <TRIBITS_PACKAGE>_ENABLE_<DEPPACKAGE> that are not currently disabled if both sets of packages are enabled ...

      -- NOT setting TeuchosCore_ENABLE_Kokkos=ON since Kokkos is NOT enabled at this point!
      -- NOT setting TeuchosCore_ENABLE_BinUtils=ON since BinUtils is NOT enabled at this point!
      -- NOT setting TeuchosCore_ENABLE_Boost=ON since Boost is NOT enabled at this point!
      -- NOT setting TeuchosCore_ENABLE_ARPREC=ON since ARPREC is NOT enabled at this point!
      -- NOT setting TeuchosCore_ENABLE_QD=ON since QD is NOT enabled at this point!
      -- NOT setting TeuchosCore_ENABLE_QT=ON since QT is NOT enabled at this point!
      -- NOT setting TeuchosCore_ENABLE_quadmath=ON since quadmath is NOT enabled at this point!
      -- NOT setting TeuchosCore_ENABLE_yaml-cpp=ON since yaml-cpp is NOT enabled at this point!
      -- NOT setting TeuchosCore_ENABLE_Pthread=ON since Pthread is NOT enabled at this point!
      -- NOT setting TeuchosCore_ENABLE_Valgrind=ON since Valgrind is NOT enabled at this point!
      -- Setting TeuchosParser_ENABLE_TeuchosCore=ON since Trilinos_ENABLE_TeuchosParser=ON AND Trilinos_ENABLE_TeuchosCore=ON
      -- Setting TeuchosParameterList_ENABLE_TeuchosCore=ON since Trilinos_ENABLE_TeuchosParameterList=ON AND Trilinos_ENABLE_TeuchosCore=ON
      -- Setting TeuchosParameterList_ENABLE_TeuchosParser=ON since Trilinos_ENABLE_TeuchosParameterList=ON AND Trilinos_ENABLE_TeuchosParser=ON
      -- Setting TeuchosComm_ENABLE_TeuchosCore=ON since Trilinos_ENABLE_TeuchosComm=ON AND Trilinos_ENABLE_TeuchosCore=ON
      -- Setting TeuchosComm_ENABLE_TeuchosParameterList=ON since Trilinos_ENABLE_TeuchosComm=ON AND Trilinos_ENABLE_TeuchosParameterList=ON
      -- Setting TeuchosNumerics_ENABLE_TeuchosCore=ON since Trilinos_ENABLE_TeuchosNumerics=ON AND Trilinos_ENABLE_TeuchosCore=ON
      -- Setting TeuchosNumerics_ENABLE_TeuchosComm=ON since Trilinos_ENABLE_TeuchosNumerics=ON AND Trilinos_ENABLE_TeuchosComm=ON
      -- Setting TeuchosNumerics_ENABLE_BLAS=ON since Trilinos_ENABLE_TeuchosNumerics=ON AND TPL_ENABLE_BLAS=ON
      -- Setting TeuchosNumerics_ENABLE_LAPACK=ON since Trilinos_ENABLE_TeuchosNumerics=ON AND TPL_ENABLE_LAPACK=ON
      -- NOT setting TeuchosNumerics_ENABLE_Eigen=ON since Eigen is NOT enabled at this point!
      -- Setting TeuchosRemainder_ENABLE_TeuchosCore=ON since Trilinos_ENABLE_TeuchosRemainder=ON AND Trilinos_ENABLE_TeuchosCore=ON
      -- Setting Teuchos_ENABLE_TeuchosCore=ON since Trilinos_ENABLE_Teuchos=ON AND Trilinos_ENABLE_TeuchosCore=ON
      -- Setting Teuchos_ENABLE_TeuchosParser=ON since Trilinos_ENABLE_Teuchos=ON AND Trilinos_ENABLE_TeuchosParser=ON
      -- Setting Teuchos_ENABLE_TeuchosParameterList=ON since Trilinos_ENABLE_Teuchos=ON AND Trilinos_ENABLE_TeuchosParameterList=ON
      -- Setting Teuchos_ENABLE_TeuchosComm=ON since Trilinos_ENABLE_Teuchos=ON AND Trilinos_ENABLE_TeuchosComm=ON
      -- Setting Teuchos_ENABLE_TeuchosNumerics=ON since Trilinos_ENABLE_Teuchos=ON AND Trilinos_ENABLE_TeuchosNumerics=ON
      -- Setting Teuchos_ENABLE_TeuchosRemainder=ON since Trilinos_ENABLE_Teuchos=ON AND Trilinos_ENABLE_TeuchosRemainder=ON
      -- NOT setting Teuchos_ENABLE_TeuchosKokkosCompat=ON since TeuchosKokkosCompat is NOT enabled at this point!
      -- NOT setting Teuchos_ENABLE_TeuchosKokkosComm=ON since TeuchosKokkosComm is NOT enabled at this point!
      -- Setting ROL_ENABLE_Teuchos=ON since Trilinos_ENABLE_ROL=ON AND Trilinos_ENABLE_Teuchos=ON
      -- NOT setting ROL_ENABLE_Belos=ON since Belos is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Epetra=ON since Epetra is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Tpetra=ON since Tpetra is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Thyra=ON since Thyra is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Intrepid=ON since Intrepid is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_MiniTensor=ON since MiniTensor is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Shards=ON since Shards is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Amesos=ON since Amesos is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Amesos2=ON since Amesos2 is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Ifpack2=ON since Ifpack2 is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_MueLu=ON since MueLu is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Tempus=ON since Tempus is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Boost=ON since Boost is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_ArrayFireCPU=ON since ArrayFireCPU is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Eigen=ON since Eigen is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_pebbl=ON since pebbl is NOT enabled at this point!
      -- NOT setting ROL_ENABLE_Gtest=ON since Gtest is NOT enabled at this point!

      Set cache entries for optional packages/TPLs and tests/examples for packages actually enabled ...

      Enabling the shell of non-enabled parent packages (mostly for show) that have at least one subpackage enabled ...

      Adjust the set of internal and external packages:

      Final set of enabled top-level packages:  Teuchos ROL 2

      Final set of enabled packages:  TeuchosCore TeuchosParser TeuchosParameterList TeuchosComm TeuchosNumerics TeuchosRemainder Teuchos ROL 8

      Final set of non-enabled top-level packages:  TrilinosFrameworkTests TrilinosATDMConfigTests Gtest Kokkos KokkosKernels RTOp Sacado MiniTensor Epetra Zoltan Shards Triutils EpetraExt Tpetra TrilinosSS Thyra Xpetra Isorropia Pliris AztecOO Galeri Amesos Pamgen Zoltan2Core Ifpack ML Belos ShyLU_Node Amesos2 SEACAS Anasazi Ifpack2 Stratimikos Teko Intrepid Intrepid2 Compadre STK Percept Krino Phalanx NOX MueLu Zoltan2Sphynx Zoltan2 ShyLU_DD ShyLU Tempus Stokhos Piro Panzer PyTrilinos PyTrilinos2 NewPackage Adelus TrilinosCouplings TrilinosBuildStats TrilinosInstallTests 58

      Final set of non-enabled packages:  TrilinosFrameworkTests TrilinosATDMConfigTests Gtest Kokkos TeuchosKokkosCompat TeuchosKokkosComm KokkosKernels RTOp Sacado MiniTensor Epetra Zoltan Shards Triutils EpetraExt TpetraTSQR TpetraCore Tpetra TrilinosSS ThyraCore ThyraEpetraAdapters ThyraEpetraExtAdapters ThyraTpetraAdapters Thyra Xpetra Isorropia Pliris AztecOO Galeri Amesos Pamgen Zoltan2Core Ifpack ML Belos ShyLU_NodeHTS ShyLU_NodeTacho ShyLU_NodeBasker ShyLU_NodeFastILU ShyLU_Node Amesos2 SEACASExodus SEACASExodus_for SEACASExoIIv2for32 SEACASNemesis SEACASIoss SEACASChaco SEACASAprepro_lib SEACASSupes SEACASSuplib SEACASSuplibC SEACASSuplibCpp SEACASSVDI SEACASPLT SEACASAlgebra SEACASAprepro SEACASBlot SEACASConjoin SEACASEjoin SEACASEpu SEACASCpup SEACASExo2mat SEACASExodiff SEACASExomatlab SEACASExotxt SEACASExo_format SEACASEx1ex2v2 SEACASExotec2 SEACASFastq SEACASGjoin SEACASGen3D SEACASGenshell SEACASGrepos SEACASExplore SEACASMapvarlib SEACASMapvar SEACASMapvar-kd SEACASMat2exo SEACASNas2exo SEACASZellij SEACASNemslice SEACASNemspread SEACASNumbers SEACASSlice SEACASTxtexo SEACASEx2ex1v2 SEACAS Anasazi Ifpack2 Stratimikos Teko Intrepid Intrepid2 Compadre STKUtil STKCoupling STKMath STKSimd STKNGP_TEST STKExprEval STKTopology STKSearch STKMiddle_mesh STKTransfer STKMesh STKSearchUtil STKTransferUtil STKIO STKTools STKBalance STKUnit_test_utils STKUnit_tests STKDoc_tests STKEmend STK Percept Krino Phalanx NOX MueLu Zoltan2Sphynx Zoltan2 ShyLU_DDFROSch ShyLU_DDCore ShyLU_DDCommon ShyLU_DD ShyLU Tempus Stokhos Piro PanzerCore PanzerDofMgr PanzerDiscFE PanzerAdaptersSTK PanzerMiniEM PanzerExprEval Panzer PyTrilinos PyTrilinos2 NewPackage Adelus TrilinosCouplings TrilinosBuildStats TrilinosInstallTests 144

      Final set of enabled top-level external packages/TPLs:  BLAS LAPACK DLlib 3

      Final set of enabled external packages/TPLs:  BLAS LAPACK DLlib 3

      Final set of non-enabled top-level external packages/TPLs:  MKL yaml-cpp Peano CUDA CUBLAS CUSOLVER CUSPARSE Thrust Cusp ROCBLAS ROCSPARSE TBB Pthread HWLOC QTHREAD BinUtils ARPREC QD MPI Boost Scotch OVIS gpcd DataWarp METIS MTMETIS ParMETIS PuLP TopoManager LibTopoMap PaToH CppUnit ADOLC ADIC TVMET MF ExodusII Nemesis XDMF Zlib HDF5 CGNS Pnetcdf Netcdf ADIOS2 Faodel Cereal Catalyst2 y12m SuperLUDist SuperLUMT SuperLU Cholmod UMFPACK MA28 AMD CSparse HYPRE PETSC BLACS SCALAPACK MUMPS STRUMPACK PARDISO_MKL PARDISO Oski TAUCS ForUQTK Dakota HIPS MATLAB CASK SPARSKIT QT gtest BoostLib BoostAlbLib OpenNURBS Portals CrayPortals Gemini InfiniBand BGPDCMF BGQPAMI Pablo HPCToolkit Clp GLPK qpOASES Matio PAPI MATLABLib Eigen X11 Lemon GLM quadmath CAMAL RTlib AmgX VTune TASMANIAN ArrayFireCPU SimMesh SimModel SimParasolid SimAcis SimField Valgrind QUO ViennaCL Avatar mlpack pebbl MAGMASparse Check SARMA CDT mpi_advance 119

      Final set of non-enabled external packages/TPLs:  MKL yaml-cpp Peano CUDA CUBLAS CUSOLVER CUSPARSE Thrust Cusp ROCBLAS ROCSPARSE TBB Pthread HWLOC QTHREAD BinUtils ARPREC QD MPI Boost Scotch OVIS gpcd DataWarp METIS MTMETIS ParMETIS PuLP TopoManager LibTopoMap PaToH CppUnit ADOLC ADIC TVMET MF ExodusII Nemesis XDMF Zlib HDF5 CGNS Pnetcdf Netcdf ADIOS2 Faodel Cereal Catalyst2 y12m SuperLUDist SuperLUMT SuperLU Cholmod UMFPACK MA28 AMD CSparse HYPRE PETSC BLACS SCALAPACK MUMPS STRUMPACK PARDISO_MKL PARDISO Oski TAUCS ForUQTK Dakota HIPS MATLAB CASK SPARSKIT QT gtest BoostLib BoostAlbLib OpenNURBS Portals CrayPortals Gemini InfiniBand BGPDCMF BGQPAMI Pablo HPCToolkit Clp GLPK qpOASES Matio PAPI MATLABLib Eigen X11 Lemon GLM quadmath CAMAL RTlib AmgX VTune TASMANIAN ArrayFireCPU SimMesh SimModel SimParasolid SimAcis SimField Valgrind QUO ViennaCL Avatar mlpack pebbl MAGMASparse Check SARMA CDT mpi_advance 119

      Setting up export dependencies for all enabled packages ...

      Probing the environment ...

      -- USE_XSDK_DEFAULTS='FALSE'
      -- BUILD_SHARED_LIBS='ON'
      -- CMAKE_BUILD_TYPE='Release'
      -- CMAKE_C_COMPILER_ID='AppleClang'
      -- CMAKE_C_COMPILER_VERSION='15.0.0.15000100'
      -- CMAKE_CXX_COMPILER_ID='AppleClang'
      -- CMAKE_CXX_COMPILER_VERSION='15.0.0.15000100'
      -- The Fortran compiler identification is GNU 14.1.0
      -- Checking whether Fortran compiler has -isysroot
      -- Checking whether Fortran compiler has -isysroot - yes
      -- Checking whether Fortran compiler supports OSX deployment target flag
      -- Checking whether Fortran compiler supports OSX deployment target flag - yes
      -- Detecting Fortran compiler ABI info
      -- Detecting Fortran compiler ABI info - done
      -- Check for working Fortran compiler: /opt/homebrew/bin/gfortran - skipped
      -- Trilinos_SET_INSTALL_RPATH='TRUE'
      -- CMAKE_INSTALL_RPATH_USE_LINK_PATH='TRUE'
      -- Setting default CMAKE_MACOSX_RPATH=TRUE
      -- CMAKE_MACOSX_RPATH='TRUE'
      -- CMAKE_INSTALL_RPATH='$ORIGIN'
      -- Looking for C++ include sys/time.h
      -- Looking for C++ include sys/time.h - found
      -- Looking for C++ include time.h
      -- Looking for C++ include time.h - found
      -- Looking for C++ include stdint.h
      -- Looking for C++ include stdint.h - found
      -- Looking for C++ include inttypes.h
      -- Looking for C++ include inttypes.h - found
      -- Found Perl: /usr/bin/perl (found version "5.34.1")
      -- Fortran name mangling: LOWER UNDER
      -- Detecting Fortran/C Interface
      -- Detecting Fortran/C Interface - Found GLOBAL and MODULE mangling
      -- Verifying Fortran/CXX Compiler Compatibility
      -- Verifying Fortran/CXX Compiler Compatibility - Success
      -- Performing Test MATH_LIBRARY_IS_SUPPLIED
      -- Performing Test MATH_LIBRARY_IS_SUPPLIED - Success
      -- Performing Test FINITE_VALUE_HAVE_GLOBAL_ISNAN
      -- Performing Test FINITE_VALUE_HAVE_GLOBAL_ISNAN - Success
      -- Performing Test FINITE_VALUE_HAVE_STD_ISNAN
      -- Performing Test FINITE_VALUE_HAVE_STD_ISNAN - Success
      -- Performing Test FINITE_VALUE_HAVE_GLOBAL_ISINF
      -- Performing Test FINITE_VALUE_HAVE_GLOBAL_ISINF - Success
      -- Performing Test FINITE_VALUE_HAVE_STD_ISINF
      -- Performing Test FINITE_VALUE_HAVE_STD_ISINF - Success
      -- Found Doxygen: /opt/homebrew/bin/doxygen (found version "1.11.0") found components: doxygen missing components: dot

      Getting information for all enabled external packages/TPLs ...

      Processing enabled external package/TPL: BLAS (enabled by TeuchosNumerics, disable with -DTPL_ENABLE_BLAS=OFF)
      -- BLAS_LIBRARY_NAMES='blas blas_win32'
      -- Must find at least one lib in each of the lib sets "blas blas_win32"
      -- Searching for libs in BLAS_LIBRARY_DIRS=''
      -- Searching for a lib in the set "blas blas_win32":
      --   Searching for lib 'blas' ...
      --     Found lib '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libblas.tbd'
      -- TPL_BLAS_LIBRARIES='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libblas.tbd'
      Processing enabled external package/TPL: LAPACK (enabled by TeuchosNumerics, disable with -DTPL_ENABLE_LAPACK=OFF)
      -- LAPACK_LIBRARY_NAMES='lapack lapack_win32'
      -- Must find at least one lib in each of the lib sets "lapack lapack_win32"
      -- Searching for libs in LAPACK_LIBRARY_DIRS=''
      -- Searching for a lib in the set "lapack lapack_win32":
      --   Searching for lib 'lapack' ...
      --     Found lib '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/liblapack.tbd'
      -- TPL_LAPACK_LIBRARIES='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/liblapack.tbd'
      Processing enabled external package/TPL: DLlib (enabled explicitly, disable with -DTPL_ENABLE_DLlib=OFF)
      -- Attempting to tentatively enable TPL 'DLlib' ...
      -- DLlib_LIBRARY_NAMES='dl'
      -- Must find at least one lib in each of the lib sets "dl"
      -- Searching for libs in DLlib_LIBRARY_DIRS=''
      -- Searching for a lib in the set "dl":
      --   Searching for lib 'dl' ...
      --     Found lib '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libdl.tbd'
      -- TPL_DLlib_LIBRARIES='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libdl.tbd'
      -- Attempt to tentatively enable TPL 'DLlib' passed!

      Setting up testing support ...

      -- CTEST_DROP_METHOD='http'
      -- CTEST_DROP_SITE='testing.sandia.gov'
      -- CTEST_PROJECT_NAME='Trilinos'
      -- CTEST_DROP_LOCATION='/cdash/submit.php?project=Trilinos'
      -- CTEST_TRIGGER_SITE=''
      -- CTEST_DROP_SITE_CDASH='TRUE'

      Configuring individual enabled Trilinos packages ...

      Processing enabled top-level package: Teuchos (Core, Parser, ParameterList, Comm, Numerics, Remainder)
      -- Performing Test HAVE_GCC_ABI_DEMANGLE
      -- Performing Test HAVE_GCC_ABI_DEMANGLE - Success
      -- Performing Test HAVE_TEUCHOS_BLASFLOAT
      -- Performing Test HAVE_TEUCHOS_BLASFLOAT - Failed
      -- Performing Test HAVE_TEUCHOS_BLASFLOAT_APPLE_VECLIB_BUGFIX
      -- Performing Test HAVE_TEUCHOS_BLASFLOAT_APPLE_VECLIB_BUGFIX - Success
      -- Performing Test LAPACK_SLAPY2_WORKS
      -- Performing Test LAPACK_SLAPY2_WORKS - Failed
      -- Performing Test LAPACK_SLAPY2_WITH_DOUBLE_WORKS
      -- Performing Test LAPACK_SLAPY2_WITH_DOUBLE_WORKS - Success
      -- Performing Test HAVE_TEUCHOS_LAPACKLARND
      -- Performing Test HAVE_TEUCHOS_LAPACKLARND - Failed
      -- Performing Test HAVE_CXX_ATTRIBUTE_CONSTRUCTOR
      -- Performing Test HAVE_CXX_ATTRIBUTE_CONSTRUCTOR - Success
      -- C++ compiler supports __attribute__((constructor)) syntax
      -- Performing Test HAVE_CXX_ATTRIBUTE_WEAK
      -- Performing Test HAVE_CXX_ATTRIBUTE_WEAK - Failed
      -- C++ compiler does NOT support __attribute__((weak)) syntax and testing weak functions
      -- Performing Test HAVE_CXX_PRAGMA_WEAK
      -- Performing Test HAVE_CXX_PRAGMA_WEAK - Failed
      -- C++ compiler does NOT support #pragma weak syntax and testing weak functions
      Processing enabled top-level package: ROL (Libs)
      -- ROL has been configured to use the build options:
      --   ROL::Ptr           is implemented by std::shared_ptr
      --   ROL::ParameterList is implemented by boost::property_tree
      --   ROL::stacktrace    is implemented by Teuchos::stacktrace
      --   ROL::LinearAlgebra is implemented by Teuchos::SerialDense
      --   ROL::LAPACK        is implemented by Teuchos::LAPACK
      --   ROL::BLAS          is implemented by Teuchos::BLAS

      No ETI support requested by packages.

      Set up for creating a distribution ...

      Finished configuring Trilinos!

      -- If publishing results using Trilinos, please cite us: https://trilinos.github.io/cite.html
      -- Found Boost: /opt/homebrew/lib/cmake/Boost-1.85.0/BoostConfig.cmake (found version "1.85.0")
      CMake Error at CMakeLists.txt:50 (add_subdirectory):
        The source directory

          /Users/yw11823/ACSE/spyro/paper/pyrol/pybind11

        does not contain a CMakeLists.txt file.

      CMake Error at CMakeLists.txt:51 (pybind11_add_module):
        Unknown CMake command "pybind11_add_module".

      -- Configuring incomplete, errors occurred!
      Traceback (most recent call last):
        File "/Users/yw11823/ACSE/irp/firedrake/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/Users/yw11823/ACSE/irp/firedrake/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/yw11823/ACSE/irp/firedrake/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 415, in build_wheel
          return self._build_with_temp_dir(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 397, in _build_with_temp_dir
          self.run_setup()
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 313, in run_setup
          exec(code, locals())
        File "<string>", line 58, in <module>
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/__init__.py", line 103, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 184, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 200, in run_commands
          dist.run_commands()
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 976, in run_command
          super().run_command(command)
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/command/bdist_wheel.py", line 373, in run
          self.run_command("build")
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
          self.distribution.run_command(command)
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 976, in run_command
          super().run_command(command)
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/command/build.py", line 132, in run
          self.run_command(cmd_name)
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
          self.distribution.run_command(command)
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 976, in run_command
          super().run_command(command)
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/command/build_ext.py", line 93, in run
          _build_ext.run(self)
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py", line 359, in run
          self.build_extensions()
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py", line 479, in build_extensions
          self._build_extensions_serial()
        File "/private/var/folders/hx/g9tst_895vb2cxj5f1f0lghh0000gp/T/pip-build-env-frtpmy3v/overlay/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py", line 505, in _build_extensions_serial
          self.build_extension(ext)
        File "<string>", line 55, in build_extension
        File "/opt/homebrew/Cellar/python@3.11/3.11.9/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 413, in check_call
          raise CalledProcessError(retcode, cmd)
      subprocess.CalledProcessError: Command '['cmake', '/Users/yw11823/ACSE/spyro/paper/pyrol', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/yw11823/ACSE/spyro/paper/pyrol/build/lib.macosx-14.0-arm64-cpython-311/', '-DPYTHON_EXECUTABLE=/Users/yw11823/ACSE/irp/firedrake/bin/python', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_INSTALL_RPATH=$ORIGIN']' returned non-zero exit status 1.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pyroltrilinos
Failed to build pyroltrilinos
ERROR: Could not build wheels for pyroltrilinos, which is required to install pyproject.toml-based projects
Olender commented 1 week ago

Since I do not have a Mac available for testing, I am having difficulties reproducing this error. Until we can figure this out, are you familiar with using Docker?

acse-yw11823 commented 1 week ago

Oh, I see. I have Docker installed on my laptop but not familiar of using it. I was using the VScode all the time through the model this year :(. But if that's necessary I can give it a try.

Olender commented 1 week ago

I will try to get access to a Mac in my lab to try and figure this one out, but it might take a while. The problem is that pyrol is no longer maintained. Therefore PR #104 also does FWI using scipy. Pyadjoint should be getting TAO (from PETSc) support really soon and we plan to switch to that.

acse-yw11823 commented 1 week ago

Hello, I attempted to replace algo = ROL.Algorithm("Line Search", params) with algo = ROL.LinMoreAlgorithm(params). Although the program can run and produce some results, it eventually results in an error.

[/Users/yw11823/ACSE/irp/firedrake/src/firedrake/firedrake/function.py:325](https://file+.vscode-resource.vscode-cdn.net/Users/yw11823/ACSE/irp/firedrake/src/firedrake/firedrake/function.py:325): FutureWarning: The .split() method is deprecated, please use the .subfunctions property instead
  warnings.warn("The .split() method is deprecated, please use the .subfunctions property instead", category=FutureWarning)
[/Users/yw11823/ACSE/irp/firedrake/src/ufl/ufl/utils/sorting.py:84](https://file+.vscode-resource.vscode-cdn.net/Users/yw11823/ACSE/irp/firedrake/src/ufl/ufl/utils/sorting.py:84): UserWarning: Applying str() to a metadata value of type QuadratureRule, don't know if this is safe.
  warnings.warn(f"Applying str() to a metadata value of type {type(value).__name__}, "
Simulation time is:     0.0495 seconds
Simulation time is:     0.0995 seconds
Simulation time is:     0.1495 seconds
Simulation time is:     0.1995 seconds
Simulation time is:     0.2495 seconds
Simulation time is:     0.2995 seconds
Simulation time is:     0.3495 seconds
Simulation time is:     0.3995 seconds
Simulation time is:     0.4495 seconds
Simulation time is:     0.4995 seconds
Simulation time is:     0.5495 seconds
Simulation time is:     0.5995 seconds
Simulation time is:     0.6495 seconds
Simulation time is:     0.6995 seconds
Simulation time is:     0.7495 seconds
Simulation time is:     0.7995 seconds
Simulation time is:     0.8495 seconds
Simulation time is:     0.8995 seconds
Simulation time is:     0.9495 seconds
Simulation time is:     0.9995 seconds
Simulation time is:       1.05 seconds
Simulation time is:      1.099 seconds
Simulation time is:      1.149 seconds
Simulation time is:        1.2 seconds
Simulation time is:       1.25 seconds
...
 [1.54772293e-07 1.56699224e-07 1.58626155e-07 ... 1.58487047e-07
  1.56535717e-07 1.54584388e-07]
 [1.57751673e-07 1.59552135e-07 1.61352598e-07 ... 1.61060706e-07
  1.59232898e-07 1.57405089e-07]]
Output is truncated. View as a [scrollable element](command:cellOutput.enableScrolling?d2df57c0-7a17-4b6f-b3e2-ac167491f418) or open in a [text editor](command:workbench.action.openLargeOutput?d2df57c0-7a17-4b6f-b3e2-ac167491f418). Adjust cell output [settings](command:workbench.action.openSettings?%5B%22%40tag%3AnotebookOutputLayout%22%5D)...
[/Users/yw11823/ACSE/irp/firedrake/src/ufl/ufl/utils/sorting.py:84](https://file+.vscode-resource.vscode-cdn.net/Users/yw11823/ACSE/irp/firedrake/src/ufl/ufl/utils/sorting.py:84): UserWarning: Applying str() to a metadata value of type QuadratureRule, don't know if this is safe.
  warnings.warn(f"Applying str() to a metadata value of type {type(value).__name__}, "
[/Users/yw11823/ACSE/irp/firedrake/src/firedrake/firedrake/function.py:325](https://file+.vscode-resource.vscode-cdn.net/Users/yw11823/ACSE/irp/firedrake/src/firedrake/firedrake/function.py:325): FutureWarning: The .split() method is deprecated, please use the .subfunctions property instead
  warnings.warn("The .split() method is deprecated, please use the .subfunctions property instead", category=FutureWarning)
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
Cell In[28], [line 26](vscode-notebook-cell:?execution_count=28&line=26)
     [22](vscode-notebook-cell:?execution_count=28&line=22) # Set up the line search
     [23](vscode-notebook-cell:?execution_count=28&line=23) # algo = ROL.Algorithm("Line Search", params)
     [24](vscode-notebook-cell:?execution_count=28&line=24) algo = ROL.LinMoreAlgorithm(params)
---> [26](vscode-notebook-cell:?execution_count=28&line=26) algo.run(opt, obj, bnd)
     [28](vscode-notebook-cell:?execution_count=28&line=28) if comm.ensemble_comm.rank == 0:
     [29](vscode-notebook-cell:?execution_count=28&line=29)     File("res.pvd", comm=comm.comm).write(obj.vp)

Cell In[26], [line 40](vscode-notebook-cell:?execution_count=26&line=40)
     [37](vscode-notebook-cell:?execution_count=26&line=37) print("receivers:", receivers)
     [38](vscode-notebook-cell:?execution_count=26&line=38) print("self.misfit:", self.misfit)
---> [40](vscode-notebook-cell:?execution_count=26&line=40) dJ_local = spyro.solvers.gradient(
     [41](vscode-notebook-cell:?execution_count=26&line=41)     model,
     [42](vscode-notebook-cell:?execution_count=26&line=42)     mesh,
     [43](vscode-notebook-cell:?execution_count=26&line=43)     comm,
     [44](vscode-notebook-cell:?execution_count=26&line=44)     vp,
     [45](vscode-notebook-cell:?execution_count=26&line=45)     receivers,
     [46](vscode-notebook-cell:?execution_count=26&line=46)     self.p_guess,
     [47](vscode-notebook-cell:?execution_count=26&line=47)     self.misfit,
     [48](vscode-notebook-cell:?execution_count=26&line=48) )
     [50](vscode-notebook-cell:?execution_count=26&line=50) print("After calling spyro.solvers.gradient:")
     [52](vscode-notebook-cell:?execution_count=26&line=52) if comm.ensemble_comm.size > 1:
...
--> [293](https://file+.vscode-resource.vscode-cdn.net/Users/yw11823/ACSE/irp/spyro/~/ACSE/irp/spyro/spyro/solvers/gradient.py:293)     uufor.assign(guess.pop())
    [295](https://file+.vscode-resource.vscode-cdn.net/Users/yw11823/ACSE/irp/spyro/~/ACSE/irp/spyro/spyro/solvers/gradient.py:295)     grad_solver.solve()
    [296](https://file+.vscode-resource.vscode-cdn.net/Users/yw11823/ACSE/irp/spyro/~/ACSE/irp/spyro/spyro/solvers/gradient.py:296)     dJ += gradi

IndexError: pop from empty list
Output is truncated. View as a [scrollable element](command:cellOutput.enableScrolling?8ed81e03-a33b-45ff-8196-fe4c708706cb) or open in a [text editor](command:workbench.action.openLargeOutput?8ed81e03-a33b-45ff-8196-fe4c708706cb). Adjust cell output [settings](command:workbench.action.openSettings?%5B%22%40tag%3AnotebookOutputLayout%22%5D)...

By any chance do you have a clue with this?

Many thanks!!! Have a good day!