mesh-adaptation / animate

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

Update Clement on boundary #41

Closed jwallwork23 closed 9 months ago

jwallwork23 commented 9 months ago

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'

Originally posted by @ddundo in https://github.com/pyroteus/animate/issues/40#issuecomment-1736180329

jwallwork23 commented 9 months ago

Temporary fix applied in #11.