Open tommbendall opened 3 years ago
I can confirm that the code snippet does run on the dual_base_fiat
branch (i.e. this is not an issue in #1743 and its associated FInAT and TSFC branches). Nevertheless I was under the impression from conversations with @dham that this should work on master albeit inefficiently. Perhaps @wence- or anyone else that originally added dual evaluation can comment? (FYI I haven't looked into the exact cause of the issue here as yet.)
Nevertheless I was under the impression from conversations with @dham that this should work on master albeit inefficiently. Perhaps @wence- or anyone else that originally added dual evaluation can comment? (FYI I haven't looked into the exact cause of the issue here as yet.)
It looks like the RTCF elements in master don't provide a dual basis?
They probably don't. @ReubenHill I don't think we discussed RTCF. I think we discussed RT.
It looks like the RTCF elements in master don't provide a dual basis?
Yeah, the implementation in FIAT of the Hdivelement does:
# splat any PointEvaluation functionals.
# they become a nasty mix of internal and external component DOFs
if newelement._oldmapping == "affine":
oldnodes = newelement.dual.nodes
newnodes = []
for node in oldnodes:
if isinstance(node, functional.PointEvaluation):
newnodes.append(functional.Functional(None, None, None, {}, "Undefined"))
else:
newnodes.append(node)
newelement.dual.nodes = newnodes
So we fake nodes with no point dicts.
See also #2077
This might be well-known already, but @ReubenHill suggested I add this here as it might be helpful for testing dual evaluation.
Minimum example:
gives an error like the following: