mesh-adaptation / animate

Anisotropic mesh adaptation toolkit for Firedrake
MIT License
5 stars 0 forks source link

Add install scripts #40

Closed jwallwork23 closed 9 months ago

jwallwork23 commented 9 months ago

Closes #39. Linked PR: https://github.com/pyroteus/goalie/pull/57.

@ddundo I know you were having some installation issues. Maybe try using this script? I did a fresh install and things seem to work okay for me. I have updated the PETSc branch (jwallwork23/parmmg-rebased).

ddundo commented 9 months ago

Hey @jwallwork23, I couldn't solve the Failed building wheel for islpy error that I was getting, so I made a completely new instance on the server I'm using and then managed to install using this script here. Thanks again for the help!

Then testing animate gives me this error ModuleNotFoundError: No module named 'parameterized', which I then install. Then everything passes apart from FAILED test/test_recovery.py::TestRecoveryBowl::test_boundary_Clement_0 - AttributeError: 'Cofunction' object has no attribute 'exterior_facet_node_map'. Here's the full log:

_____________________________________________________________________________________________________________________________________ TestRecoveryBowl.test_boundary_Clement_0 _____________________________________________________________________________________________________________________________________

a = (<test_recovery.TestRecoveryBowl testMethod=test_boundary_Clement_0>,), kw = {}

    @wraps(func)
    def standalone_func(*a, **kw):
>       return func(*(a + p.args), **p.kwargs, **kw)

../../lib/python3.10/site-packages/parameterized/parameterized.py:620:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
test/test_recovery.py:183: in test_boundary_Clement
    metric.compute_boundary_hessian(f, method="Clement")
petsc4py/PETSc/Log.pyx:115: in petsc4py.PETSc.Log.EventDecorator.decorator.wrapped_func
    ???
petsc4py/PETSc/Log.pyx:116: in petsc4py.PETSc.Log.EventDecorator.decorator.wrapped_func
    ???
animate/metric.py:198: in compute_boundary_hessian
    return self.assign(recover_boundary_hessian(f, method=method, **kwargs))
petsc4py/PETSc/Log.pyx:115: in petsc4py.PETSc.Log.EventDecorator.decorator.wrapped_func
    ???
petsc4py/PETSc/Log.pyx:116: in petsc4py.PETSc.Log.EventDecorator.decorator.wrapped_func
    ???
animate/recovery.py:181: in recover_boundary_hessian
    c = clement_interpolant(source, boundary=True, target_space=P1_vec)
petsc4py/PETSc/Log.pyx:115: in petsc4py.PETSc.Log.EventDecorator.decorator.wrapped_func
    ???
petsc4py/PETSc/Log.pyx:116: in petsc4py.PETSc.Log.EventDecorator.decorator.wrapped_func
    ???
animate/interpolation.py:130: in clement_interpolant
    firedrake.par_loop((tdomain, instructions), dX, keys)
petsc4py/PETSc/Log.pyx:115: in petsc4py.PETSc.Log.EventDecorator.decorator.wrapped_func
    ???
petsc4py/PETSc/Log.pyx:116: in petsc4py.PETSc.Log.EventDecorator.decorator.wrapped_func
    ???
../firedrake/firedrake/parloops.py:321: in par_loop
    op2args += [mkarg(func, intent) for (func, intent) in args.values()]
../firedrake/firedrake/parloops.py:321: in <listcomp>
    op2args += [mkarg(func, intent) for (func, intent) in args.values()]
../firedrake/firedrake/parloops.py:320: in mkarg
    return f.dat(intent, _map['nodes'](f))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

x = Cofunction(FiredrakeDualSpace(FunctionSpace(<firedrake.mesh.MeshTopology object at 0x7f0cc105e230>, VectorElement(Fini...nge', triangle, 0), dim=2), name=None), Mesh(VectorElement(FiniteElement('Lagrange', triangle, 1), dim=2), 814)), 1614)

>           'nodes': lambda x: x.exterior_facet_node_map(),
            'itspace': indirect_measure
        },
        'direct': {
            'nodes': lambda x: None,
            'itspace': lambda mesh, measure: mesh
        }
    }
E   AttributeError: 'Cofunction' object has no attribute 'exterior_facet_node_map'
jwallwork23 commented 9 months ago

Hi @ddundo, good to hear you have a working installation now.

  1. The parameterized issue will go away once this PR is merged because I am adding it to requirements.txt.
  2. For the other issue, it looks like something changed in Firedrake/UFL/PyOP2. I opened #41 to address this later as it only seems to affect Clement on the boundary, which I don't think anyone is using.

Will go ahead and merge this PR! Cheers