Skip to content

Operations between objects on the boundary and not #177

@zjwegert

Description

@zjwegert

In #176 I encountered the following issue when trying to do operations between an FEFunction defined via a BoundaryTriangulation and another that is on the background model. Here is an MWE:

using Gridap
using GridapDistributed
using PartitionedArrays

np = (2,2)
ranks = with_debug() do distribute
  distribute(LinearIndices((prod(np),)))
end

domain = (0,1,0,1)
partition = (5,5)
model = CartesianDiscreteModel(ranks,np,domain,partition)
Γ = BoundaryTriangulation(model)
V1 = FESpace(Γ,ReferenceFE(lagrangian,Float64,1))
V2 = FESpace(model,ReferenceFE(lagrangian,Float64,1))
uh1 = zero(V1);
uh2 = zero(V2);
uh1*uh2

This produces an unreachable error because _to_common_domain fails to find a common domain even though it should. This appears to be because of the following: for DistributedTriangulations resulting from BoundaryTriangulation, we're in Case 4 of add_ghost_cells, so we create a new create a new triangulation with the ghost cells. The issue then appears to be that the glue information is missing, so both cases of

is_change_possible(_trian_a,_trian_b)
is_change_possible(_trian_b,_trian_a)

return false.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions