From 618b73422cdece25f8cd0d589725efb94378ace5 Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Wed, 6 Dec 2023 17:15:40 +1100 Subject: [PATCH 01/14] WIP --- src/FESpaces.jl | 267 +++--------------------- src/OctreeDistributedDiscreteModels.jl | 278 ++++++++++++++++++++++++- 2 files changed, 292 insertions(+), 253 deletions(-) diff --git a/src/FESpaces.jl b/src/FESpaces.jl index 62d4708..bd2af82 100644 --- a/src/FESpaces.jl +++ b/src/FESpaces.jl @@ -195,37 +195,6 @@ function _build_constraint_coefficients_matrix_in_ref_space(Dc, reffe::Tuple{<:R end -# To-think: might this info go to the glue? -# If it is required in different scenarios, I would say it may make sense -function _generate_hanging_faces_to_cell_and_lface(num_regular_faces, - num_hanging_faces, - gridap_cell_faces) - # Locate for each hanging face the owner cell among the set of cells - # to which it belongs and local position within that cell - # By convention, the owner cell is the cell with minimum identifer among - # all in the set. This convention is used here, and in other parts of the code. - # Breaking this convention here may affect the consistency of other parts of the code. - hanging_faces_to_cell = Vector{Int}(undef, num_hanging_faces) - hanging_faces_to_lface = Vector{Int}(undef, num_hanging_faces) - hanging_faces_to_cell .= -1 - for cell = 1:length(gridap_cell_faces) - s = gridap_cell_faces.ptrs[cell] - e = gridap_cell_faces.ptrs[cell+1] - l = e - s - for j = 1:l - fid = gridap_cell_faces.data[s+j-1] - if fid > num_regular_faces - fid_hanging = fid - num_regular_faces - if (hanging_faces_to_cell[fid_hanging]==-1) - hanging_faces_to_cell[fid_hanging] = cell - hanging_faces_to_lface[fid_hanging] = j - end - end - end - end - hanging_faces_to_cell, hanging_faces_to_lface -end - function _generate_hanging_faces_owner_face_dofs(num_hanging_faces, face_dofs, hanging_faces_glue, @@ -435,151 +404,6 @@ function _generate_constraints!(Df, @debug "sDOF_to_coeffs [$(Df)]= $(sDOF_to_coeffs)" end -function _compute_owner_faces_lids(Df,Dc,num_hanging_faces,hanging_faces_glue,cell_faces) - num_owner_faces = 0 - owner_faces_lids = Dict{Int,Tuple{Int,Int,Int}}() - for fid_hanging = 1:num_hanging_faces - ocell, ocell_lface, _ = hanging_faces_glue[fid_hanging] - if (ocell!=-1) - ocell_dim = face_dim(Val{Dc}, ocell_lface) - if (ocell_dim == Df) - ocell_lface_within_dim = face_lid_within_dim(Val{Dc}, ocell_lface) - owner_face = cell_faces[ocell][ocell_lface_within_dim] - if !(haskey(owner_faces_lids, owner_face)) - num_owner_faces += 1 - owner_faces_lids[owner_face] = (num_owner_faces, ocell, ocell_lface) - end - end - end - end - owner_faces_lids -end - - -# count how many different owner faces -# for each owner face -# track the global IDs of its face vertices from the perspective of the subfaces -# for each owner face -# compute permutation id -function _compute_owner_faces_pindex_and_lids(Dc, - num_hanging_faces, - hanging_faces_glue, - hanging_faces_to_cell, - hanging_faces_to_lface, - cell_vertices, - cell_faces, - lface_to_cvertices, - pindex_to_cfvertex_to_fvertex) - - owner_faces_lids =_compute_owner_faces_lids(Dc-1,Dc, - num_hanging_faces,hanging_faces_glue,cell_faces) - - @debug "owner_faces_lids [Df=$(Dc-1) Dc=$(Dc)]: $(owner_faces_lids)" - - num_owner_faces = length(keys(owner_faces_lids)) - num_face_vertices = length(first(lface_to_cvertices)) - owner_face_vertex_ids = Vector{Int}(undef, num_face_vertices * num_owner_faces) - owner_face_vertex_ids .= -1 - - for fid_hanging = 1:num_hanging_faces - ocell, ocell_lface, subface = hanging_faces_glue[fid_hanging] - @debug "[$(MPI.Comm_rank(MPI.COMM_WORLD))]: fid_hanging=$(fid_hanging) ocell=$(ocell) ocell_lface=$(ocell_lface) subface=$(subface)" - - if (ocell!=-1) - oface_dim = face_dim(Val{Dc}, ocell_lface) - if (oface_dim == Dc-1) - cell = hanging_faces_to_cell[fid_hanging] - lface = hanging_faces_to_lface[fid_hanging] - cvertex = lface_to_cvertices[lface][subface] - vertex = cell_vertices[cell][cvertex] - ocell_lface_within_dim = face_lid_within_dim(Val{Dc}, ocell_lface) - owner_face = cell_faces[ocell][ocell_lface_within_dim] - owner_face_lid, _ = owner_faces_lids[owner_face] - @debug "[$(MPI.Comm_rank(MPI.COMM_WORLD))]: cell=$(cell) lface=$(lface) cvertex=$(cvertex) vertex=$(vertex) owner_face=$(owner_face) owner_face_lid=$(owner_face_lid)" - @debug "[$(MPI.Comm_rank(MPI.COMM_WORLD))]: owner_face_vertex_ids[$((owner_face_lid-1)*num_face_vertices+subface)] = $(vertex)" - owner_face_vertex_ids[(owner_face_lid-1)*num_face_vertices+subface] = vertex - end - end - end - @debug "owner_face_vertex_ids [Dc=$(Dc)]: $(owner_face_vertex_ids)" - - owner_faces_pindex = Vector{Int}(undef, num_owner_faces) - for owner_face in keys(owner_faces_lids) - (owner_face_lid, ocell, ocell_lface) = owner_faces_lids[owner_face] - ocell_lface_within_dim = face_lid_within_dim(Val{Dc}, ocell_lface) - # Compute permutation id by comparing - # 1. cell_vertices[ocell][ocell_lface] - # 2. owner_face_vertex_ids - pindexfound = false - cfvertex_to_cvertex = lface_to_cvertices[ocell_lface_within_dim] - for (pindex, cfvertex_to_fvertex) in enumerate(pindex_to_cfvertex_to_fvertex) - found = true - for (cfvertex, fvertex) in enumerate(cfvertex_to_fvertex) - vertex1 = owner_face_vertex_ids[(owner_face_lid-1)*num_face_vertices+fvertex] - cvertex = cfvertex_to_cvertex[cfvertex] - vertex2 = cell_vertices[ocell][cvertex] - @debug "[$(MPI.Comm_rank(MPI.COMM_WORLD))]: cell_vertices[$(ocell)][$(cvertex)]=$(cell_vertices[ocell][cvertex]) owner_face_vertex_ids[$((owner_face_lid-1)*num_face_vertices+fvertex)]=$(owner_face_vertex_ids[(owner_face_lid-1)*num_face_vertices+fvertex])" - # -1 can only happen in the interface of two - # ghost cells at different refinement levels - if (vertex1 != vertex2) && (vertex1 != -1) - found = false - break - end - end - if found - owner_faces_pindex[owner_face_lid] = pindex - pindexfound = true - break - end - end - @assert pindexfound "Valid pindex not found" - end - @debug "owner_faces_pindex: $(owner_faces_pindex)" - - owner_faces_pindex, owner_faces_lids -end - - -function _compute_owner_edges_pindex_and_lids( - num_hanging_edges, - hanging_edges_glue, - hanging_edges_to_cell, - hanging_edges_to_ledge, - cell_vertices, - cell_edges) - Dc=3 - owner_edges_lids =_compute_owner_faces_lids(1, - Dc, - num_hanging_edges, - hanging_edges_glue, - cell_edges) - - num_owner_edges = length(keys(owner_edges_lids)) - owner_edges_pindex = Vector{Int}(undef, num_owner_edges) - - ledge_to_cvertices = Gridap.ReferenceFEs.get_faces(HEX, 1, 0) - - # Go over hanging edges - # Find the owner hanging edge - for fid_hanging = 1:num_hanging_edges - ocell, ocell_ledge, subedge = hanging_edges_glue[fid_hanging] - ocell_dim = face_dim(Val{Dc}, ocell_ledge) - if (ocell!=-1 && ocell_dim==1) - ocell_ledge_within_dim = face_lid_within_dim(Val{Dc}, ocell_ledge) - cell = hanging_edges_to_cell[fid_hanging] - ledge = hanging_edges_to_ledge[fid_hanging] - gvertex1 = cell_vertices[cell][ledge_to_cvertices[ledge][subedge]] - gvertex2 = cell_vertices[ocell][ledge_to_cvertices[ocell_ledge_within_dim][subedge]] - @debug "fid_hanging=$(fid_hanging) cell=$(cell) ledge=$(ledge) ocell=$(ocell) ocell_ledge=$(ocell_ledge) subedge=$(subedge) gvertex1=$(gvertex1) gvertex2=$(gvertex2)" - pindex = gvertex1==gvertex2 ? 1 : 2 - owner_edge=cell_edges[ocell][ocell_ledge_within_dim] - owner_edge_lid, _ = owner_edges_lids[owner_edge] - owner_edges_pindex[owner_edge_lid]=pindex - end - end - owner_edges_pindex, owner_edges_lids -end - using Gridap.ReferenceFEs function get_nodes_permutations(reffe::GenericLagrangianRefFE{GradConformity}) @@ -660,42 +484,37 @@ function generate_constraints(dmodel::OctreeDistributedDiscreteModel{Dc}, hanging_faces_glue = map(non_conforming_glue) do ncglue Tuple(ncglue.hanging_faces_glue[d] for d = 1:Dc) end + hanging_faces_to_cell = map(non_conforming_glue) do ncglue + Tuple(ncglue.hanging_faces_to_cell[d] for d = 1:Dc) + end + hanging_faces_to_lface = map(non_conforming_glue) do ncglue + Tuple(ncglue.hanging_faces_to_lface[d] for d = 1:Dc) + end + owner_faces_pindex=map(non_conforming_glue) do ncglue + Tuple(ncglue.owner_faces_pindex[d] for d = 1:Dc) + end + owner_faces_lids=map(non_conforming_glue) do ncglue + Tuple(ncglue.owner_faces_lids[d] for d = 1:Dc) + end sDOF_to_dof, sDOF_to_dofs, sDOF_to_coeffs = map(gridap_cell_faces, num_regular_faces, num_hanging_faces, hanging_faces_glue, + hanging_faces_to_cell, + hanging_faces_to_lface, + owner_faces_pindex, + owner_faces_lids, dmodel.models, spaces_wo_constraints) do gridap_cell_faces, - num_regular_faces, - num_hanging_faces, - hanging_faces_glue, - model, - V - - hanging_faces_to_cell = Vector{Vector{Int}}(undef, Dc) - hanging_faces_to_lface = Vector{Vector{Int}}(undef, Dc) - - # Locate for each hanging vertex a cell to which it belongs - # and local position within that cell - hanging_faces_to_cell[1], - hanging_faces_to_lface[1] = _generate_hanging_faces_to_cell_and_lface(num_regular_faces[1], - num_hanging_faces[1], - gridap_cell_faces[1]) - - if (Dc == 3) - hanging_faces_to_cell[2], - hanging_faces_to_lface[2] = _generate_hanging_faces_to_cell_and_lface(num_regular_faces[2], - num_hanging_faces[2], - gridap_cell_faces[2]) - end - - # Locate for each hanging facet a cell to which it belongs - # and local position within that cell - hanging_faces_to_cell[Dc], - hanging_faces_to_lface[Dc] = - _generate_hanging_faces_to_cell_and_lface(num_regular_faces[Dc], - num_hanging_faces[Dc], - gridap_cell_faces[Dc]) + num_regular_faces, + num_hanging_faces, + hanging_faces_glue, + hanging_faces_to_cell, + hanging_faces_to_lface, + owner_faces_pindex, + owner_faces_lids, + model, + V basis, reffe_args, reffe_kwargs = reffe cell_reffe = ReferenceFE(Dc == 2 ? QUAD : HEX, basis, reffe_args...; reffe_kwargs...) @@ -727,43 +546,7 @@ function generate_constraints(dmodel::OctreeDistributedDiscreteModel{Dc}, sDOF_to_dofs = Vector{Int}[] sDOF_to_coeffs = Vector{Float64}[] - facet_polytope = Dc == 2 ? SEGMENT : QUAD - if (Dc == 3) - edget_polytope = SEGMENT - end - basis, reffe_args, reffe_kwargs = reffe - pindex_to_cfvertex_to_fvertex = Gridap.ReferenceFEs.get_vertex_permutations(facet_polytope) - - if (Dc == 3) - edge_reffe = ReferenceFE(edget_polytope, basis, reffe_args...; reffe_kwargs...) - pindex_to_cevertex_to_evertex = Gridap.ReferenceFEs.get_vertex_permutations(edget_polytope) - end - - owner_faces_pindex = Vector{Vector{Int}}(undef, Dc - 1) - owner_faces_lids = Vector{Dict{Int,Tuple{Int,Int,Int}}}(undef, Dc - 1) - - lface_to_cvertices = Gridap.ReferenceFEs.get_faces(Dc == 2 ? QUAD : HEX, Dc - 1, 0) - owner_faces_pindex[Dc-1], owner_faces_lids[Dc-1] = _compute_owner_faces_pindex_and_lids(Dc, - num_hanging_faces[Dc], - hanging_faces_glue[Dc], - hanging_faces_to_cell[Dc], - hanging_faces_to_lface[Dc], - gridap_cell_faces[1], - gridap_cell_faces[Dc], - lface_to_cvertices, - pindex_to_cfvertex_to_fvertex) - - if (Dc == 3) - owner_faces_pindex[1], owner_faces_lids[1]= - _compute_owner_edges_pindex_and_lids( - num_hanging_faces[2], - hanging_faces_glue[2], - hanging_faces_to_cell[2], - hanging_faces_to_lface[2], - gridap_cell_faces[1], - gridap_cell_faces[2]) - end face_dofs_permutations = Vector{Vector{Vector{Int}}}(undef, Dc-1) face_dofs_permutations[Dc-1] = diff --git a/src/OctreeDistributedDiscreteModels.jl b/src/OctreeDistributedDiscreteModels.jl index 193ffbd..3446e38 100644 --- a/src/OctreeDistributedDiscreteModels.jl +++ b/src/OctreeDistributedDiscreteModels.jl @@ -3,36 +3,240 @@ const nothing_flag = Cint(0) const refine_flag = Cint(1) const coarsen_flag = Cint(2) -struct NonConformingGlue{Dc,A,B,C} - num_regular_faces :: A # <:AbstractVector{<:AbstractVector{<:Integer}} - num_hanging_faces :: B # <:AbstractVector{<:AbstractVector{<:Integer}} - hanging_faces_glue :: C # <:AbstractVector{<:AbstractVector{<:Tuple{<:Integer,:Integer,Integer}}}} - function NonConformingGlue(num_regular_faces,num_hanging_faces,hanging_faces_glue) +struct NonConformingGlue{Dc,A,B,C,D,E,F,G} + num_regular_faces :: A # <:AbstractVector{<:AbstractVector{<:Integer}} + num_hanging_faces :: B # <:AbstractVector{<:AbstractVector{<:Integer}} + hanging_faces_glue :: C # <:AbstractVector{<:AbstractVector{<:Tuple{<:Integer,:Integer,Integer}}}} + hanging_faces_to_cell :: D # <:AbstractVector{<:AbstractVector{<:Integer}} + hanging_faces_to_lface :: E # <:AbstractVector{<:AbstractVector{<:Integer}} + owner_faces_pindex :: F # <:AbstractVector{<:AbstractVector{<:Integer}} + owner_faces_lids :: G # <:AbstractVector{<:Dict{Int,Tuple{Int,Int,Int}}} + function NonConformingGlue(num_regular_faces, + num_hanging_faces, + hanging_faces_glue, + hanging_faces_to_cell, + hanging_faces_to_lface, + owner_faces_pindex, + owner_faces_lids) Dc = length(num_regular_faces) @assert length(num_hanging_faces)==Dc @assert length(hanging_faces_glue)==Dc A = typeof(num_regular_faces) B = typeof(num_hanging_faces) C = typeof(hanging_faces_glue) - new{Dc,A,B,C}(num_regular_faces,num_hanging_faces,hanging_faces_glue) + D = typeof(hanging_faces_to_cell) + E = typeof(hanging_faces_to_lface) + F = typeof(owner_faces_pindex) + G = typeof(owner_faces_lids) + new{Dc,A,B,C,D,E,F,G}(num_regular_faces, + num_hanging_faces, + hanging_faces_glue, + hanging_faces_to_cell, + hanging_faces_to_lface, + owner_faces_pindex, + owner_faces_lids) end end +function _compute_owner_faces_lids(Df,Dc,num_hanging_faces,hanging_faces_glue,cell_faces) + num_owner_faces = 0 + owner_faces_lids = Dict{Int,Tuple{Int,Int,Int}}() + for fid_hanging = 1:num_hanging_faces + ocell, ocell_lface, _ = hanging_faces_glue[fid_hanging] + if (ocell!=-1) + ocell_dim = face_dim(Val{Dc}, ocell_lface) + if (ocell_dim == Df) + ocell_lface_within_dim = face_lid_within_dim(Val{Dc}, ocell_lface) + owner_face = cell_faces[ocell][ocell_lface_within_dim] + if !(haskey(owner_faces_lids, owner_face)) + num_owner_faces += 1 + owner_faces_lids[owner_face] = (num_owner_faces, ocell, ocell_lface) + end + end + end + end + owner_faces_lids +end + + +# count how many different owner faces +# for each owner face +# track the global IDs of its face vertices from the perspective of the subfaces +# for each owner face +# compute permutation id +function _compute_owner_faces_pindex_and_lids(Dc, + num_hanging_faces, + hanging_faces_glue, + hanging_faces_to_cell, + hanging_faces_to_lface, + cell_vertices, + cell_faces, + lface_to_cvertices, + pindex_to_cfvertex_to_fvertex) + + owner_faces_lids =_compute_owner_faces_lids(Dc-1,Dc, + num_hanging_faces,hanging_faces_glue,cell_faces) + + @debug "owner_faces_lids [Df=$(Dc-1) Dc=$(Dc)]: $(owner_faces_lids)" + + num_owner_faces = length(keys(owner_faces_lids)) + num_face_vertices = length(first(lface_to_cvertices)) + owner_face_vertex_ids = Vector{Int}(undef, num_face_vertices * num_owner_faces) + owner_face_vertex_ids .= -1 + + for fid_hanging = 1:num_hanging_faces + ocell, ocell_lface, subface = hanging_faces_glue[fid_hanging] + @debug "[$(MPI.Comm_rank(MPI.COMM_WORLD))]: fid_hanging=$(fid_hanging) ocell=$(ocell) ocell_lface=$(ocell_lface) subface=$(subface)" + + if (ocell!=-1) + oface_dim = face_dim(Val{Dc}, ocell_lface) + if (oface_dim == Dc-1) + cell = hanging_faces_to_cell[fid_hanging] + lface = hanging_faces_to_lface[fid_hanging] + cvertex = lface_to_cvertices[lface][subface] + vertex = cell_vertices[cell][cvertex] + ocell_lface_within_dim = face_lid_within_dim(Val{Dc}, ocell_lface) + owner_face = cell_faces[ocell][ocell_lface_within_dim] + owner_face_lid, _ = owner_faces_lids[owner_face] + @debug "[$(MPI.Comm_rank(MPI.COMM_WORLD))]: cell=$(cell) lface=$(lface) cvertex=$(cvertex) vertex=$(vertex) owner_face=$(owner_face) owner_face_lid=$(owner_face_lid)" + @debug "[$(MPI.Comm_rank(MPI.COMM_WORLD))]: owner_face_vertex_ids[$((owner_face_lid-1)*num_face_vertices+subface)] = $(vertex)" + owner_face_vertex_ids[(owner_face_lid-1)*num_face_vertices+subface] = vertex + end + end + end + @debug "owner_face_vertex_ids [Dc=$(Dc)]: $(owner_face_vertex_ids)" + + owner_faces_pindex = Vector{Int}(undef, num_owner_faces) + for owner_face in keys(owner_faces_lids) + (owner_face_lid, ocell, ocell_lface) = owner_faces_lids[owner_face] + ocell_lface_within_dim = face_lid_within_dim(Val{Dc}, ocell_lface) + # Compute permutation id by comparing + # 1. cell_vertices[ocell][ocell_lface] + # 2. owner_face_vertex_ids + pindexfound = false + cfvertex_to_cvertex = lface_to_cvertices[ocell_lface_within_dim] + for (pindex, cfvertex_to_fvertex) in enumerate(pindex_to_cfvertex_to_fvertex) + found = true + for (cfvertex, fvertex) in enumerate(cfvertex_to_fvertex) + vertex1 = owner_face_vertex_ids[(owner_face_lid-1)*num_face_vertices+fvertex] + cvertex = cfvertex_to_cvertex[cfvertex] + vertex2 = cell_vertices[ocell][cvertex] + @debug "[$(MPI.Comm_rank(MPI.COMM_WORLD))]: cell_vertices[$(ocell)][$(cvertex)]=$(cell_vertices[ocell][cvertex]) owner_face_vertex_ids[$((owner_face_lid-1)*num_face_vertices+fvertex)]=$(owner_face_vertex_ids[(owner_face_lid-1)*num_face_vertices+fvertex])" + # -1 can only happen in the interface of two + # ghost cells at different refinement levels + if (vertex1 != vertex2) && (vertex1 != -1) + found = false + break + end + end + if found + owner_faces_pindex[owner_face_lid] = pindex + pindexfound = true + break + end + end + @assert pindexfound "Valid pindex not found" + end + @debug "owner_faces_pindex: $(owner_faces_pindex)" + + owner_faces_pindex, owner_faces_lids +end + + +function _compute_owner_edges_pindex_and_lids( + num_hanging_edges, + hanging_edges_glue, + hanging_edges_to_cell, + hanging_edges_to_ledge, + cell_vertices, + cell_edges) + Dc=3 + owner_edges_lids =_compute_owner_faces_lids(1, + Dc, + num_hanging_edges, + hanging_edges_glue, + cell_edges) + + num_owner_edges = length(keys(owner_edges_lids)) + owner_edges_pindex = Vector{Int}(undef, num_owner_edges) + + ledge_to_cvertices = Gridap.ReferenceFEs.get_faces(HEX, 1, 0) + + # Go over hanging edges + # Find the owner hanging edge + for fid_hanging = 1:num_hanging_edges + ocell, ocell_ledge, subedge = hanging_edges_glue[fid_hanging] + ocell_dim = face_dim(Val{Dc}, ocell_ledge) + if (ocell!=-1 && ocell_dim==1) + ocell_ledge_within_dim = face_lid_within_dim(Val{Dc}, ocell_ledge) + cell = hanging_edges_to_cell[fid_hanging] + ledge = hanging_edges_to_ledge[fid_hanging] + gvertex1 = cell_vertices[cell][ledge_to_cvertices[ledge][subedge]] + gvertex2 = cell_vertices[ocell][ledge_to_cvertices[ocell_ledge_within_dim][subedge]] + @debug "fid_hanging=$(fid_hanging) cell=$(cell) ledge=$(ledge) ocell=$(ocell) ocell_ledge=$(ocell_ledge) subedge=$(subedge) gvertex1=$(gvertex1) gvertex2=$(gvertex2)" + pindex = gvertex1==gvertex2 ? 1 : 2 + owner_edge=cell_edges[ocell][ocell_ledge_within_dim] + owner_edge_lid, _ = owner_edges_lids[owner_edge] + owner_edges_pindex[owner_edge_lid]=pindex + end + end + owner_edges_pindex, owner_edges_lids +end + function _create_conforming_model_non_conforming_glue(model::GridapDistributed.DistributedDiscreteModel{Dc}) where Dc non_conforming_glue = map(local_views(model)) do model num_regular_faces=Vector{Int}(undef,Dc) num_hanging_faces=Vector{Int}(undef,Dc) hanging_faces_glue=Vector{Tuple{Int,Int,Int}}(undef,Dc) + hanging_faces_to_cell=Vector{Int}(undef,Dc) + hanging_faces_to_lface=Vector{Int}(undef,Dc) + owner_faces_pindex=Vector{Int}(undef,Dc) + owner_faces_lids=Vector{Int}(undef,Dc) for d=1:Dc num_regular_faces[d]=num_faces(model,d-1) num_hanging_faces[d]=0 end - NonConformingGlue(num_regular_faces,num_hanging_faces,hanging_faces_glue) + NonConformingGlue(num_regular_faces, + num_hanging_faces, + hanging_faces_glue, + hanging_faces_to_cell, + hanging_faces_to_lface, + owner_faces_pindex, + owner_faces_lids) end return non_conforming_glue end +function _generate_hanging_faces_to_cell_and_lface(num_regular_faces, + num_hanging_faces, + gridap_cell_faces) + # Locate for each hanging face the owner cell among the set of cells + # to which it belongs and local position within that cell + # By convention, the owner cell is the cell with minimum identifer among + # all in the set. This convention is used here, and in other parts of the code. + # Breaking this convention here may affect the consistency of other parts of the code. + hanging_faces_to_cell = Vector{Int}(undef, num_hanging_faces) + hanging_faces_to_lface = Vector{Int}(undef, num_hanging_faces) + hanging_faces_to_cell .= -1 + for cell = 1:length(gridap_cell_faces) + s = gridap_cell_faces.ptrs[cell] + e = gridap_cell_faces.ptrs[cell+1] + l = e - s + for j = 1:l + fid = gridap_cell_faces.data[s+j-1] + if fid > num_regular_faces + fid_hanging = fid - num_regular_faces + if (hanging_faces_to_cell[fid_hanging]==-1) + hanging_faces_to_cell[fid_hanging] = cell + hanging_faces_to_lface[fid_hanging] = j + end + end + end + end + hanging_faces_to_cell, hanging_faces_to_lface +end + mutable struct OctreeDistributedDiscreteModel{Dc,Dp,A,B,C,D,E,F} <: GridapDistributed.DistributedDiscreteModel{Dc,Dp} parts :: A dmodel :: B @@ -2383,7 +2587,11 @@ function generate_cell_faces_and_non_conforming_glue(::Type{Val{Dc}}, num_regular_faces, num_hanging_faces, gridap_cell_faces, - hanging_faces_glue = + hanging_faces_glue, + hanging_faces_to_cell, + hanging_faces_to_lface, + owner_faces_pindex, + owner_faces_lids = map(partition(cell_prange), element_nodes_with_ghosts, face_code_with_ghosts) do indices, @@ -2884,11 +3092,53 @@ function generate_cell_faces_and_non_conforming_glue(::Type{Val{Dc}}, end hanging_faces_glue[Dc] = hanging_faces_owner_cell_and_lface + hanging_faces_to_cell = Vector{Vector{Int}}(undef, Dc) + hanging_faces_to_lface = Vector{Vector{Int}}(undef, Dc) + for i=1:Dc + # Locate for each hanging facet a cell to which it belongs + # and local position within that cell + hanging_faces_to_cell[Dc], + hanging_faces_to_lface[Dc] = + _generate_hanging_faces_to_cell_and_lface(num_regular_faces[Dc], + num_hanging_faces[Dc], + gridap_cell_faces[Dc]) + end + + owner_faces_pindex = Vector{Vector{Int}}(undef, Dc - 1) + owner_faces_lids = Vector{Dict{Int,Tuple{Int,Int,Int}}}(undef, Dc - 1) + + lface_to_cvertices = Gridap.ReferenceFEs.get_faces(Dc == 2 ? QUAD : HEX, Dc - 1, 0) + pindex_to_cfvertex_to_fvertex = Gridap.ReferenceFEs.get_vertex_permutations(Dc == 2 ? SEGMENT : QUAD) + + owner_faces_pindex[Dc-1], owner_faces_lids[Dc-1] = _compute_owner_faces_pindex_and_lids(Dc, + num_hanging_faces[Dc], + hanging_faces_glue[Dc], + hanging_faces_to_cell[Dc], + hanging_faces_to_lface[Dc], + gridap_cell_faces[1], + gridap_cell_faces[Dc], + lface_to_cvertices, + pindex_to_cfvertex_to_fvertex) + + if (Dc == 3) + owner_faces_pindex[1], owner_faces_lids[1]= + _compute_owner_edges_pindex_and_lids( + num_hanging_faces[2], + hanging_faces_glue[2], + hanging_faces_to_cell[2], + hanging_faces_to_lface[2], + gridap_cell_faces[1], + gridap_cell_faces[2]) + end return num_regular_faces, num_hanging_faces, gridap_cell_faces, - hanging_faces_glue + hanging_faces_glue, + hanging_faces_to_cell, + hanging_faces_to_lface, + owner_faces_pindex, + owner_faces_lids end |> tuple_of_arrays @@ -2899,8 +3149,14 @@ function generate_cell_faces_and_non_conforming_glue(::Type{Val{Dc}}, gridap_cell_faces[i] end end - non_conforming_glue=map(num_regular_faces,num_hanging_faces,hanging_faces_glue) do nrf, nhf, hfg - NonConformingGlue(nrf, nhf, hfg) + non_conforming_glue=map(num_regular_faces, + num_hanging_faces, + hanging_faces_glue, + hanging_faces_to_cell, + hanging_faces_to_lface, + owner_faces_pindex, + owner_faces_lids) do nrf, nhf, hfg, hfc, hfl, ofp,ofl + NonConformingGlue(nrf, nhf, hfg, hfc, hfl, ofp, ofl) end gridap_cell_faces_out,non_conforming_glue end From 73d39e2a340ff3de049cc1e6b4ebd4d91baca079 Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Mon, 18 Dec 2023 12:08:18 +1100 Subject: [PATCH 02/14] DG on non-conforming meshes working in serial --- test/test.jl | 493 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 493 insertions(+) create mode 100644 test/test.jl diff --git a/test/test.jl b/test/test.jl new file mode 100644 index 0000000..9d36f1a --- /dev/null +++ b/test/test.jl @@ -0,0 +1,493 @@ +using Gridap +using PartitionedArrays +using GridapDistributed +using GridapP4est +using MPI +using FillArrays +using Test + +include("CoarseDiscreteModelsTools.jl") + + +# struct FaceToCellGlue{A,B,C,D} <: GridapType +# face_to_bgface::A +# bgface_to_lcell::B +# face_to_cell::Vector{Int32} +# face_to_lface::Vector{Int8} +# face_to_lcell::Vector{Int8} +# face_to_ftype::C +# cell_to_ctype::D +# cell_to_lface_to_pindex::Table{Int8,Vector{Int8},Vector{Int32}} +# ctype_to_lface_to_ftype::Vector{Vector{Int8}} +# end + +struct FaceToCellGlueNonConforming{A,B,C,D} <: GridapType + face_is_owner :: Vector{Bool} + face_to_subface :: Vector{Int8} + face_to_cell_glue:: Gridap.Geometry.FaceToCellGlue{A,B,C,D} +end + +# function Base.getproperty(a::FaceToCellGlueNonConforming, sym::Symbol) +# if sym == :face_to_bgface +# a.face_to_cell_glue.face_to_bgface +# elseif sym == :bgface_to_lcell +# a.face_to_cell_glue.bgface_to_lcell +# elseif sym == :face_to_cell +# a.face_to_cell_glue.face_to_cell +# elseif sym == :face_to_lface +# a.face_to_cell_glue.face_to_lface +# elseif sym == :face_to_lcell +# a.face_to_cell_glue.face_to_lcell +# elseif sym == :face_to_ftype +# a.face_to_cell_glue.face_to_ftype +# elseif sym == :cell_to_ctype +# a.face_to_cell_glue.cell_to_ctype +# elseif sym == :cell_to_lface_to_pindex +# a.face_to_cell_glue.cell_to_lface_to_pindex +# elseif sym == :ctype_to_lface_to_ftype +# a.face_to_cell_glue.ctype_to_lface_to_ftype +# else +# getfield(a, sym) +# end +# end + +function FaceToCellGlueNonConforming(topo, + cell_grid, + face_grid, + face_to_bgface, + bgface_to_lcell, + face_is_owner, + face_to_subface, + ncglue) + + face_to_cell_glue=Gridap.Geometry.FaceToCellGlue(topo, + cell_grid, + face_grid, + face_to_bgface, + bgface_to_lcell) + + # Adjust face_to_cell_glue.cell_to_lface_to_pindex + # TO-DO ... + + FaceToCellGlueNonConforming(face_is_owner, + face_to_subface, + face_to_cell_glue) +end + +function _generate_owner_face_to_subfaces(model,ncglue::GridapP4est.NonConformingGlue{D}) where D + num_children=GridapP4est.get_num_children(Val{D-1}) + + # Generate owner_face_to_subfaces_ptrs + num_owner_faces=length(keys(ncglue.owner_faces_lids[D-1])) + owner_face_to_subfaces_ptrs = Vector{Int}(undef, num_owner_faces+1) + owner_face_to_subfaces_ptrs .= num_children + length_to_ptrs!(owner_face_to_subfaces_ptrs) + + topology=Gridap.Geometry.get_grid_topology(model) + cell_faces=Gridap.Geometry.get_faces(topology,D,D-1) + + num_hanging_faces = ncglue.num_hanging_faces[D] + num_regular_faces = ncglue.num_regular_faces[D] + + # Generate owner_face_to_subfaces_data + owner_face_to_subfaces_data=Vector{Int}(undef,owner_face_to_subfaces_ptrs[end]-1) + for i=1:num_hanging_faces + (ocell,ocell_lface,subface)=ncglue.hanging_faces_glue[D][i] + ocell_lface_within_dim =GridapP4est. face_lid_within_dim(Val{D}, ocell_lface) + owner_gface=cell_faces[ocell][ocell_lface_within_dim] + (lowner,_,_)=ncglue.owner_faces_lids[D-1][owner_gface] + spos=owner_face_to_subfaces_ptrs[lowner] + owner_face_to_subfaces_data[spos+subface-1]=num_regular_faces+i + end + Gridap.Arrays.Table(owner_face_to_subfaces_data,owner_face_to_subfaces_ptrs) +end + + +function Gridap.Geometry.SkeletonTriangulation(model::DiscreteModel{D}, + ncglue::GridapP4est.NonConformingGlue{D}) where {D} + + num_regular_faces=ncglue.num_regular_faces[D] + owner_faces_lids=ncglue.owner_faces_lids + + topo=Gridap.Geometry.get_grid_topology(model) + is_boundary_face=Gridap.Geometry.get_isboundary_face(topo,D-1) + + # Include all regular faces wich are + # either owner or not in the boundary + face_to_regular_bgface=Int[] + for (gface,ibf) in enumerate(is_boundary_face) + if gface <= num_regular_faces + if (!ibf) + push!(face_to_regular_bgface,gface) + else + if (haskey(owner_faces_lids[D-1],gface)) + push!(face_to_regular_bgface,gface) + end + end + end + end + + # IMPORTANT NOTE: Plus side contains the hanging side of all cell interfaces, while + # Minus side the "owner" side of all cell interfaces. This is a must. + # For facet integration purposes, the Jacobian of the geometrical mapping + # is extracted from the plus side. + + # Plus side + regular_bgface_to_lcell_minus=Vector{Int8}(undef,num_regular_faces) + regular_bgface_to_lcell_minus.=2 + for i=1:length(is_boundary_face) + if ( i<=num_regular_faces && + is_boundary_face[i] && + !(haskey(owner_faces_lids[D-1],i))) + regular_bgface_to_lcell_minus[i]=1 + end + end + plus=BoundaryTriangulation( + model, + face_to_regular_bgface, + regular_bgface_to_lcell_minus, + ncglue) + + + # Minus side + regular_bgface_to_lcell_plus=Fill(Int8(1),num_regular_faces) + minus=BoundaryTriangulation( + model, + face_to_regular_bgface, + regular_bgface_to_lcell_plus, + ncglue) + + + SkeletonTriangulation(plus,minus) +end + +function Gridap.Geometry.BoundaryTriangulation( + model::DiscreteModel{D}, + face_to_regular_bgface::AbstractVector{<:Integer}, + regular_bgface_to_lcell::AbstractVector{<:Integer}, + ncglue::GridapP4est.NonConformingGlue{D}) where D + + @assert length(regular_bgface_to_lcell)==ncglue.num_regular_faces[D] + + T=eltype(face_to_regular_bgface) + face_to_bgface=T[] + face_is_owner=Bool[] + face_to_subface=Int8[] + bgface_to_lcell=Vector{T}(undef, + ncglue.num_regular_faces[D]+ncglue.num_hanging_faces[D]) + + bgface_to_lcell.=1 + + num_children=GridapP4est.get_num_children(Val{D-1}) + owner_face_to_subfaces=_generate_owner_face_to_subfaces(model,ncglue) + + # Generate face_to_bgface AND bgface_to_lcell + for (i,gface) in enumerate(face_to_regular_bgface) + if (haskey(ncglue.owner_faces_lids[D-1],gface)) + # Regular face is owner of several other hanging faces + if (regular_bgface_to_lcell[gface]==1) + bgface_to_lcell[gface]=1 + for i=1:num_children + push!(face_to_bgface, gface) + push!(face_is_owner,true) + push!(face_to_subface,i) + end + else + # Find all subfaces of current owner face! + (lowner,_,_)=ncglue.owner_faces_lids[D-1][gface] + subfaces=owner_face_to_subfaces[lowner] + for i=1:num_children + push!(face_to_bgface, subfaces[i]) + bgface_to_lcell[subfaces[i]]=1 + push!(face_is_owner,false) + push!(face_to_subface,-1) + end + end + else + # Regular face which is not owner of any other hanging face + push!(face_to_bgface, gface) + bgface_to_lcell[gface]=regular_bgface_to_lcell[gface] + push!(face_is_owner,false) + push!(face_to_subface,-1) + end + end + + topo = Gridap.Geometry.get_grid_topology(model) + cell_grid = get_grid(model) + bgface_grid = Gridap.Geometry.Grid(ReferenceFE{D-1},model) + bgface_grid = view(bgface_grid,face_to_bgface) + + glue=FaceToCellGlueNonConforming(topo, + cell_grid, + bgface_grid, + face_to_bgface, + bgface_to_lcell, + face_is_owner, + face_to_subface, + ncglue) + + trian = Gridap.Geometry.BodyFittedTriangulation(model,bgface_grid,face_to_bgface) + BoundaryTriangulation(trian,glue) +end + +struct SubfaceRefCoordsMap{A} <: Gridap.Arrays.Map + face_is_owner :: Vector{Bool} + face_to_subface :: Vector{Int8} + ref_rule :: A +end + +function Gridap.Arrays.return_cache(f::SubfaceRefCoordsMap,gface::Integer) + ref_grid=Gridap.Adaptivity.get_ref_grid(f.ref_rule) + poly=Gridap.Adaptivity.get_polytope(f.ref_rule) + poly_vertices=Gridap.Geometry.get_vertex_coordinates(poly) + cell_coordinates=get_cell_coordinates(ref_grid) + cache_cell_coordinates=array_cache(cell_coordinates) + poly_vertices,cell_coordinates,cache_cell_coordinates +end + +function Gridap.Arrays.evaluate!(cache,f::SubfaceRefCoordsMap,gface::Integer) + poly_vertices,cell_coordinates,cache_cell_coordinates=cache + if (f.face_is_owner[gface]) + subface=f.face_to_subface[gface] + getindex!(cache_cell_coordinates,cell_coordinates,subface) + else + poly_vertices + end +end + +function _compute_face_to_q_vertex_coords(trian::BoundaryTriangulation,glue) + d = num_cell_dims(trian) + cell_grid = get_grid(get_background_model(trian.trian)) + polytopes = map(Gridap.ReferenceFEs.get_polytope, Gridap.Geometry.get_reffes(cell_grid)) + cell_to_ctype = glue.cell_to_ctype + ctype_to_lvertex_to_qcoords = map(Gridap.Geometry.get_vertex_coordinates, polytopes) + ctype_to_lface_to_lvertices = map((p)->Gridap.Geometry.get_faces(p,d,0), polytopes) + ctype_to_lface_to_pindex_to_perm = map( (p)->Gridap.Geometry.get_face_vertex_permutations(p,d), polytopes) + + P = eltype(eltype(ctype_to_lvertex_to_qcoords)) + D = num_components(P) + T = eltype(P) + ctype_to_lface_to_pindex_to_qcoords = Vector{Vector{Vector{Point{D,T}}}}[] + + for (ctype, lface_to_pindex_to_perm) in enumerate(ctype_to_lface_to_pindex_to_perm) + lvertex_to_qcoods = ctype_to_lvertex_to_qcoords[ctype] + lface_to_pindex_to_qcoords = Vector{Vector{Point{D,T}}}[] + for (lface, pindex_to_perm) in enumerate(lface_to_pindex_to_perm) + cfvertex_to_lvertex = ctype_to_lface_to_lvertices[ctype][lface] + nfvertices = length(cfvertex_to_lvertex) + pindex_to_qcoords = Vector{Vector{Point{D,T}}}(undef,length(pindex_to_perm)) + for (pindex, cfvertex_to_ffvertex) in enumerate(pindex_to_perm) + ffvertex_to_qcoords = zeros(Point{D,T},nfvertices) + for (cfvertex, ffvertex) in enumerate(cfvertex_to_ffvertex) + lvertex = cfvertex_to_lvertex[cfvertex] + qcoords = lvertex_to_qcoods[lvertex] + ffvertex_to_qcoords[ffvertex] = qcoords + end + pindex_to_qcoords[pindex] = ffvertex_to_qcoords + end + push!(lface_to_pindex_to_qcoords,pindex_to_qcoords) + end + push!(ctype_to_lface_to_pindex_to_qcoords,lface_to_pindex_to_qcoords) + end + + Gridap.Geometry.FaceCompressedVector(ctype_to_lface_to_pindex_to_qcoords,glue) +end + +function Gridap.Geometry.get_glue(trian::BoundaryTriangulation{Dc,Dp,A,<:FaceToCellGlueNonConforming}, + ::Val{D},::Val{D}) where {D,Dc,Dp,A} + tface_to_mface = trian.glue.face_to_cell_glue.face_to_cell + + face_to_q_vertex_coords = + _compute_face_to_q_vertex_coords(trian,trian.glue.face_to_cell_glue) + f(p) = + Gridap.ReferenceFEs.get_shapefuns(Gridap.ReferenceFEs.LagrangianRefFE(Float64,Gridap.ReferenceFEs.get_polytope(p),1)) + ftype_to_shapefuns = map( f, Gridap.Geometry.get_reffes(trian) ) + face_to_shapefuns = Gridap.ReferenceFEs.expand_cell_data(ftype_to_shapefuns,trian.glue.face_to_cell_glue.face_to_ftype) + face_s_q = lazy_map(Gridap.Fields.linear_combination,face_to_q_vertex_coords,face_to_shapefuns) + + # Map subface to cell ref space + ref_rule=nothing + if Dc==1 + ref_rule=Gridap.Adaptivity.RefinementRule(SEGMENT,2) + else + @assert Dc==2 + ref_rule=Gridap.Adaptivity.RedRefinementRule(QUAD) + end + + m=SubfaceRefCoordsMap(trian.glue.face_is_owner,trian.glue.face_to_subface,ref_rule) + subface_ref_coords = lazy_map(m, Gridap.Arrays.IdentityVector(length(trian.glue.face_to_subface)) ) + face_to_q_vertex_coords = lazy_map(evaluate,face_s_q,subface_ref_coords) + face_s_q = lazy_map(Gridap.Fields.linear_combination,face_to_q_vertex_coords,face_to_shapefuns) + + tface_to_mface_map = face_s_q + mface_to_tface = nothing + Gridap.Geometry.FaceToFaceGlue(tface_to_mface,tface_to_mface_map,mface_to_tface) +end + +function Gridap.Geometry.get_facet_normal(trian::BoundaryTriangulation{Dc,Dp,A,<:FaceToCellGlueNonConforming}) where {Dc,Dp,A} + Gridap.Geometry.get_facet_normal(trian, trian.glue.face_to_cell_glue) +end + +function Gridap.Geometry.get_facet_normal(trian::BoundaryTriangulation, glue) + + cell_grid = Gridap.Geometry.get_grid(Gridap.Geometry.get_background_model(trian.trian)) + + ## Reference normal + function f(r) + p = Gridap.ReferenceFEs.get_polytope(r) + lface_to_n = Gridap.ReferenceFEs.get_facet_normal(p) + lface_to_pindex_to_perm = Gridap.ReferenceFEs.get_face_vertex_permutations(p,num_cell_dims(p)-1) + nlfaces = length(lface_to_n) + lface_pindex_to_n = [ fill(lface_to_n[lface],length(lface_to_pindex_to_perm[lface])) for lface in 1:nlfaces ] + lface_pindex_to_n + end + ctype_lface_pindex_to_nref = map(f, Gridap.Geometry.get_reffes(cell_grid)) + face_to_nref = Gridap.Geometry.FaceCompressedVector(ctype_lface_pindex_to_nref,glue) + face_s_nref = lazy_map(Gridap.Fields.constant_field,face_to_nref) + + # Inverse of the Jacobian transpose + cell_q_x = get_cell_map(cell_grid) + cell_q_Jt = lazy_map(∇,cell_q_x) + cell_q_invJt = lazy_map(Operation(Gridap.Fields.pinvJt),cell_q_Jt) + face_q_invJt = lazy_map(Reindex(cell_q_invJt),glue.face_to_cell) + + # Change of domain + D = num_cell_dims(cell_grid) + glue = get_glue(trian,Val(D)) + face_s_q = glue.tface_to_mface_map + face_s_invJt = lazy_map(∘,face_q_invJt,face_s_q) + face_s_n = lazy_map(Broadcasting(Operation(Gridap.Geometry.push_normal)),face_s_invJt,face_s_nref) + Gridap.Fields.MemoArray(face_s_n) +end + + +MPI.Init() +nprocs = MPI.Comm_size(MPI.COMM_WORLD) +ranks = with_mpi() do distribute + distribute(LinearIndices((prod(nprocs),))) +end + +coarse_model=setup_model(Val{2},1) +dmodel=OctreeDistributedDiscreteModel(ranks,coarse_model,0) + +ref_coarse_flags=map(ranks,partition(get_cell_gids(dmodel.dmodel))) do rank,indices + flags=zeros(Int,length(indices)) + flags.=nothing_flag + flags[2]=refine_flag + flags +end + +fmodel,glue=adapt(dmodel,ref_coarse_flags); + +function Gridap.Geometry.SkeletonTriangulation( + model::OctreeDistributedDiscreteModel;kwargs...) + SkeletonTriangulation(no_ghost,model;kwargs...) +end + +function _create_local_skeleton_triangulation(model,ncglue) + SkeletonTriangulation(model,ncglue) +end + +function _create_local_skeleton_triangulation(model::Gridap.Adaptivity.AdaptedDiscreteModel,ncglue) + trian=SkeletonTriangulation(Gridap.Adaptivity.get_model(model),ncglue) + return Gridap.Adaptivity.AdaptedTriangulation(trian,model) +end + +function Gridap.Geometry.SkeletonTriangulation( + portion,model::OctreeDistributedDiscreteModel{Dc};kwargs...) where Dc + gids = get_face_gids(model.dmodel,Dc) + trians = map(local_views(model.dmodel), + partition(gids), + model.non_conforming_glue) do model, gids, ncglue + _create_local_skeleton_triangulation(model,ncglue) + # SkeletonTriangulation(portion,gids,model;kwargs...) + end + GridapDistributed.DistributedTriangulation(trians,model) +end + +Λ=SkeletonTriangulation(fmodel) +dΛ=Measure(Λ,2) + +Q = FESpace(fmodel, + ReferenceFE(lagrangian,Float64,1); + conformity=:L2) + +qh_dofs=pfill(1.0, partition(Q.gids)) +qh=FEFunction(Q,qh_dofs) + +dcm=∫(qh.minus)dΛ +dcp=∫(qh.plus)dΛ + + +Ω = Triangulation(fmodel) +map(local_views(∫(qh.minus)dΛ),local_views(Λ),local_views(Ω)) do dc,Λ,Ω + println(get_array(dc)) + Gridap.CellData.is_change_possible(Λ,Ω) +end + + ∫(qh.plus)dΛ + + + +Λd=SkeletonTriangulation(dmodel) +dΛd=Measure(Λd,2) + +Qd = FESpace(dmodel, + ReferenceFE(lagrangian,Float64,1); + conformity=:L2) + +qhd_dofs=pfill(1.0, partition(Qd.gids)) +qhd=FEFunction(Qd,qhd_dofs) + +∫(qhd.plus)dΛd + +# Now with DG +h = 2 +γ = 10 + + +Ω = Triangulation(fmodel) +#Γn = Boundary(fmodel,tags="neumann") +#n_Γn = get_normal_vector(Γn) + +k = 2 +dΩ = Measure(Ω,2*k) +u((x,y)) = (x+y)^k +f(x) = -Δ(u,x) +#g = n_Γn⋅∇(u) + +reffe = ReferenceFE(lagrangian,Float64,k) +V_dg = FESpace(fmodel,reffe,conformity=:L2) + +Λ = Skeleton(fmodel) +Γd = Boundary(fmodel,tags="boundary") + +dΛ = Measure(Λ,2*k) +dΓd = Measure(Γd,2*k) + +n_Γd = get_normal_vector(Γd) +n_Λ = get_normal_vector(Λ) + +v=get_fe_basis(V_dg) +ub=get_trial_fe_basis(V_dg) + +ub*n_Λ + +(γ/h)*jump(v*n_Λ)⋅jump(ub*n_Λ) + +a_dg(u,v) = + ∫( ∇(v)⋅∇(u) )*dΩ + + ∫( (γ/h)*v*u - v*(n_Γd⋅∇(u)) - (n_Γd⋅∇(v))*u )*dΓd + + ∫( (γ/h)*jump(v*n_Λ)⋅jump(u*n_Λ) - + jump(v*n_Λ)⋅mean(∇(u)) - + mean(∇(v))⋅jump(u*n_Λ) )*dΛ + +l_dg(v) = + ∫( v*f )*dΩ + + #∫( v*g )dΓn + + ∫( (γ/h)*v*u - (n_Γd⋅∇(v))*u )*dΓd + +op = AffineFEOperator(a_dg,l_dg,V_dg,V_dg) +uh = solve(op) +eh = u - uh +@test sqrt(sum( ∫(abs2(eh))dΩ )) < 1.0e-9 \ No newline at end of file From ece0e9c0dcd24df4534025e9ba109d30e6a69503 Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Mon, 18 Dec 2023 13:44:05 +1100 Subject: [PATCH 03/14] Facet integration now working with non-oriented meshes --- test/test.jl | 56 +++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/test/test.jl b/test/test.jl index 9d36f1a..955b28a 100644 --- a/test/test.jl +++ b/test/test.jl @@ -27,29 +27,23 @@ struct FaceToCellGlueNonConforming{A,B,C,D} <: GridapType face_to_cell_glue:: Gridap.Geometry.FaceToCellGlue{A,B,C,D} end -# function Base.getproperty(a::FaceToCellGlueNonConforming, sym::Symbol) -# if sym == :face_to_bgface -# a.face_to_cell_glue.face_to_bgface -# elseif sym == :bgface_to_lcell -# a.face_to_cell_glue.bgface_to_lcell -# elseif sym == :face_to_cell -# a.face_to_cell_glue.face_to_cell -# elseif sym == :face_to_lface -# a.face_to_cell_glue.face_to_lface -# elseif sym == :face_to_lcell -# a.face_to_cell_glue.face_to_lcell -# elseif sym == :face_to_ftype -# a.face_to_cell_glue.face_to_ftype -# elseif sym == :cell_to_ctype -# a.face_to_cell_glue.cell_to_ctype -# elseif sym == :cell_to_lface_to_pindex -# a.face_to_cell_glue.cell_to_lface_to_pindex -# elseif sym == :ctype_to_lface_to_ftype -# a.face_to_cell_glue.ctype_to_lface_to_ftype -# else -# getfield(a, sym) -# end -# end +function _adjust_cell_to_lface_to_pindex!(f2cg_nc,Df,ncglue,cell_faces) + f2cg=f2cg_nc.face_to_cell_glue + face_to_cell=f2cg.face_to_cell + face_to_lface=f2cg.face_to_lface + cell_to_lface_to_pindex=f2cg.cell_to_lface_to_pindex + for i=1:length(f2cg_nc.face_is_owner) + if (f2cg_nc.face_is_owner[i]) + cell=face_to_cell[i] + lface=face_to_lface[i] + gface=cell_faces[cell][lface] + (oface,_,_)=ncglue.owner_faces_lids[Df][gface] + pindex=ncglue.owner_faces_pindex[Df][oface] + s=f2cg.cell_to_lface_to_pindex.ptrs[cell] + f2cg.cell_to_lface_to_pindex.data[s+lface-1]=pindex + end + end +end function FaceToCellGlueNonConforming(topo, cell_grid, @@ -66,14 +60,18 @@ function FaceToCellGlueNonConforming(topo, face_to_bgface, bgface_to_lcell) - # Adjust face_to_cell_glue.cell_to_lface_to_pindex - # TO-DO ... + f2cg_nc=FaceToCellGlueNonConforming(face_is_owner, + face_to_subface, + face_to_cell_glue) - FaceToCellGlueNonConforming(face_is_owner, - face_to_subface, - face_to_cell_glue) + Dc=num_cell_dims(cell_grid) + Df=num_cell_dims(face_grid) + cell_faces=Gridap.Geometry.get_faces(topo,Dc,Df) + _adjust_cell_to_lface_to_pindex!(f2cg_nc,Df,ncglue,cell_faces) + f2cg_nc end + function _generate_owner_face_to_subfaces(model,ncglue::GridapP4est.NonConformingGlue{D}) where D num_children=GridapP4est.get_num_children(Val{D-1}) @@ -367,7 +365,7 @@ ranks = with_mpi() do distribute distribute(LinearIndices((prod(nprocs),))) end -coarse_model=setup_model(Val{2},1) +coarse_model=setup_model(Val{2},2) dmodel=OctreeDistributedDiscreteModel(ranks,coarse_model,0) ref_coarse_flags=map(ranks,partition(get_cell_gids(dmodel.dmodel))) do rank,indices From 60139346696b9297353dd16f6584b0a4cfb5ac01 Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Mon, 18 Dec 2023 16:23:03 +1100 Subject: [PATCH 04/14] Facet integration on non-conforming meshes working with P=2 processes --- test/test.jl | 55 ++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/test/test.jl b/test/test.jl index 955b28a..be3bfc4 100644 --- a/test/test.jl +++ b/test/test.jl @@ -89,6 +89,7 @@ function _generate_owner_face_to_subfaces(model,ncglue::GridapP4est.NonConformin # Generate owner_face_to_subfaces_data owner_face_to_subfaces_data=Vector{Int}(undef,owner_face_to_subfaces_ptrs[end]-1) + owner_face_to_subfaces_data.=-1 for i=1:num_hanging_faces (ocell,ocell_lface,subface)=ncglue.hanging_faces_glue[D][i] ocell_lface_within_dim =GridapP4est. face_lid_within_dim(Val{D}, ocell_lface) @@ -100,7 +101,6 @@ function _generate_owner_face_to_subfaces(model,ncglue::GridapP4est.NonConformin Gridap.Arrays.Table(owner_face_to_subfaces_data,owner_face_to_subfaces_ptrs) end - function Gridap.Geometry.SkeletonTriangulation(model::DiscreteModel{D}, ncglue::GridapP4est.NonConformingGlue{D}) where {D} @@ -126,7 +126,7 @@ function Gridap.Geometry.SkeletonTriangulation(model::DiscreteModel{D}, end # IMPORTANT NOTE: Plus side contains the hanging side of all cell interfaces, while - # Minus side the "owner" side of all cell interfaces. This is a must. + # Minus side the "owner" side of all cell interfaces. This is a MUST. # For facet integration purposes, the Jacobian of the geometrical mapping # is extracted from the plus side. @@ -179,26 +179,33 @@ function Gridap.Geometry.BoundaryTriangulation( num_children=GridapP4est.get_num_children(Val{D-1}) owner_face_to_subfaces=_generate_owner_face_to_subfaces(model,ncglue) + println("[$(MPI.Comm_rank(MPI.COMM_WORLD))]: owner_face_to_subfaces=$(owner_face_to_subfaces)") + # Generate face_to_bgface AND bgface_to_lcell for (i,gface) in enumerate(face_to_regular_bgface) if (haskey(ncglue.owner_faces_lids[D-1],gface)) + # Find all subfaces of current owner face! + (lowner,_,_)=ncglue.owner_faces_lids[D-1][gface] + subfaces=owner_face_to_subfaces[lowner] + # Regular face is owner of several other hanging faces if (regular_bgface_to_lcell[gface]==1) bgface_to_lcell[gface]=1 for i=1:num_children - push!(face_to_bgface, gface) - push!(face_is_owner,true) - push!(face_to_subface,i) + if (subfaces[i]!=-1) + push!(face_to_bgface, gface) + push!(face_is_owner,true) + push!(face_to_subface,i) + end end else - # Find all subfaces of current owner face! - (lowner,_,_)=ncglue.owner_faces_lids[D-1][gface] - subfaces=owner_face_to_subfaces[lowner] for i=1:num_children - push!(face_to_bgface, subfaces[i]) - bgface_to_lcell[subfaces[i]]=1 - push!(face_is_owner,false) - push!(face_to_subface,-1) + if (subfaces[i]!=-1) + push!(face_to_bgface, subfaces[i]) + bgface_to_lcell[subfaces[i]]=1 + push!(face_is_owner,false) + push!(face_to_subface,-1) + end end end else @@ -365,8 +372,8 @@ ranks = with_mpi() do distribute distribute(LinearIndices((prod(nprocs),))) end -coarse_model=setup_model(Val{2},2) -dmodel=OctreeDistributedDiscreteModel(ranks,coarse_model,0) +coarse_model=setup_model(Val{2},1) +dmodel=OctreeDistributedDiscreteModel(ranks,coarse_model,1) ref_coarse_flags=map(ranks,partition(get_cell_gids(dmodel.dmodel))) do rank,indices flags=zeros(Int,length(indices)) @@ -377,19 +384,11 @@ end fmodel,glue=adapt(dmodel,ref_coarse_flags); -function Gridap.Geometry.SkeletonTriangulation( - model::OctreeDistributedDiscreteModel;kwargs...) - SkeletonTriangulation(no_ghost,model;kwargs...) -end - -function _create_local_skeleton_triangulation(model,ncglue) - SkeletonTriangulation(model,ncglue) -end - -function _create_local_skeleton_triangulation(model::Gridap.Adaptivity.AdaptedDiscreteModel,ncglue) - trian=SkeletonTriangulation(Gridap.Adaptivity.get_model(model),ncglue) +function Gridap.Geometry.SkeletonTriangulation(model::Gridap.Adaptivity.AdaptedDiscreteModel{D}, + ncglue::GridapP4est.NonConformingGlue{D}) where {D} + trian = SkeletonTriangulation(Gridap.Adaptivity.get_model(model),ncglue) return Gridap.Adaptivity.AdaptedTriangulation(trian,model) -end +end function Gridap.Geometry.SkeletonTriangulation( portion,model::OctreeDistributedDiscreteModel{Dc};kwargs...) where Dc @@ -397,8 +396,8 @@ function Gridap.Geometry.SkeletonTriangulation( trians = map(local_views(model.dmodel), partition(gids), model.non_conforming_glue) do model, gids, ncglue - _create_local_skeleton_triangulation(model,ncglue) - # SkeletonTriangulation(portion,gids,model;kwargs...) + trian=SkeletonTriangulation(model,ncglue) + GridapDistributed.filter_cells_when_needed(portion,gids,trian) end GridapDistributed.DistributedTriangulation(trians,model) end From 1fb85fe26532a07fc0c9c9e0b80e371a9d89475c Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Tue, 19 Dec 2023 19:16:06 +1100 Subject: [PATCH 05/14] * Transferred functionality from test.jl to src/Geometry.jl. * Added DG-SIP tests to test/PoissonNonConformingOctreeModelsTests.jl --- Manifest.toml | 782 ++++++++++++++++++ Project.toml | 1 - src/Geometry.jl | 293 +++++++ src/GridapP4est.jl | 2 + test/PoissonNonConformingOctreeModelsTests.jl | 258 +++++- test/test.jl | 378 --------- 6 files changed, 1295 insertions(+), 419 deletions(-) create mode 100644 Manifest.toml create mode 100644 src/Geometry.jl diff --git a/Manifest.toml b/Manifest.toml new file mode 100644 index 0000000..7f24f5b --- /dev/null +++ b/Manifest.toml @@ -0,0 +1,782 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.1" +manifest_format = "2.0" +project_hash = "7e46d237c9708d86f11c75163102834814e76bba" + +[[deps.AbstractFFTs]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" +uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" +version = "1.5.0" + + [deps.AbstractFFTs.extensions] + AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + AbstractFFTsTestExt = "Test" + + [deps.AbstractFFTs.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.AbstractTrees]] +git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.4" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "cde29ddf7e5726c9fb511f340244ea3481267608" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "3.7.2" +weakdeps = ["StaticArrays"] + + [deps.Adapt.extensions] + AdaptStaticArraysExt = "StaticArrays" + +[[deps.ArgCheck]] +git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" +uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" +version = "2.3.0" + +[[deps.ArgParse]] +deps = ["Logging", "TextWrap"] +git-tree-sha1 = "3102bce13da501c9104df33549f511cd25264d7d" +uuid = "c7e460c6-2fb9-53a9-8c5b-16f535851c63" +version = "1.1.4" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "247efbccf92448be332d154d6ca56b9fcdd93c31" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.6.1" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.ArrayLayouts]] +deps = ["FillArrays", "LinearAlgebra"] +git-tree-sha1 = "b08a4043e1c14096ef8efe4dd97e07de5cacf240" +uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" +version = "1.4.5" +weakdeps = ["SparseArrays"] + + [deps.ArrayLayouts.extensions] + ArrayLayoutsSparseArraysExt = "SparseArrays" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.AutoHashEquals]] +deps = ["Pkg"] +git-tree-sha1 = "daaeb6f7f77b88c072a83a2451801818acb5c63b" +uuid = "15f4f7f2-30c1-5605-9d31-71845cf9641f" +version = "2.1.0" + +[[deps.BSON]] +git-tree-sha1 = "2208958832d6e1b59e49f53697483a84ca8d664e" +uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" +version = "0.3.7" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BlockArrays]] +deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra"] +git-tree-sha1 = "fc69cbdb4277042f72c6e59cbc7024fbe3034b89" +uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" +version = "0.16.39" + +[[deps.CEnum]] +git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" +uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" +version = "0.4.2" + +[[deps.CircularArrays]] +deps = ["OffsetArrays"] +git-tree-sha1 = "3f7b8a37359ae592cfa7aca7f811da045deff222" +uuid = "7a955b69-7140-5f4e-a0ed-f168c5e2e749" +version = "1.3.3" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[deps.Combinatorics]] +git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" +uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" +version = "1.0.2" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.0" + +[[deps.Compat]] +deps = ["UUIDs"] +git-tree-sha1 = "886826d76ea9e72b35fcd000e535588f7b60f21d" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.10.1" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.2+0" + +[[deps.ConstructionBase]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.5.4" + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseStaticArraysExt = "StaticArrays" + + [deps.ConstructionBase.weakdeps] + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.15" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.Distances]] +deps = ["LinearAlgebra", "Statistics", "StatsAPI"] +git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" +uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" +version = "0.10.11" + + [deps.Distances.extensions] + DistancesChainRulesCoreExt = "ChainRulesCore" + DistancesSparseArraysExt = "SparseArrays" + + [deps.Distances.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.FFTW]] +deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] +git-tree-sha1 = "ec22cbbcd01cba8f41eecd7d44aac1f23ee985e3" +uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" +version = "1.7.2" + +[[deps.FFTW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" +uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" +version = "3.3.10+0" + +[[deps.FastGaussQuadrature]] +deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"] +git-tree-sha1 = "58d83dd5a78a36205bdfddb82b1bb67682e64487" +uuid = "442a2c76-b920-505d-bb47-c5924d526838" +version = "0.4.9" + +[[deps.FileIO]] +deps = ["Pkg", "Requires", "UUIDs"] +git-tree-sha1 = "299dc33549f68299137e51e6d49a13b5b1da9673" +uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" +version = "1.16.1" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FillArrays]] +deps = ["LinearAlgebra", "Random"] +git-tree-sha1 = "5b93957f6dcd33fc343044af3d48c215be2562f1" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.9.3" + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" + + [deps.FillArrays.weakdeps] + PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.FiniteDiff]] +deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] +git-tree-sha1 = "c6e4a1fbe73b31a3dea94b1da449503b8830c306" +uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" +version = "2.21.1" + + [deps.FiniteDiff.extensions] + FiniteDiffBandedMatricesExt = "BandedMatrices" + FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" + FiniteDiffStaticArraysExt = "StaticArrays" + + [deps.FiniteDiff.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.36" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[deps.Gridap]] +deps = ["AbstractTrees", "BSON", "BlockArrays", "Combinatorics", "DataStructures", "DocStringExtensions", "FastGaussQuadrature", "FileIO", "FillArrays", "ForwardDiff", "JLD2", "JSON", "LineSearches", "LinearAlgebra", "NLsolve", "NearestNeighbors", "PolynomialBases", "QuadGK", "Random", "SparseArrays", "SparseMatricesCSR", "StaticArrays", "Test", "WriteVTK"] +git-tree-sha1 = "fe79997f0439dc89f29ac47308db2f5159b352e7" +repo-rev = "facet_integration_non_conforming_meshes" +repo-url = "https://github.com/gridap/Gridap.jl" +uuid = "56d4f2e9-7ea1-5844-9cf6-b9c51ca7ce8e" +version = "0.17.21" + +[[deps.GridapDistributed]] +deps = ["BlockArrays", "FillArrays", "Gridap", "LinearAlgebra", "MPI", "PartitionedArrays", "SparseArrays", "SparseMatricesCSR", "WriteVTK"] +git-tree-sha1 = "cb4599aab10d4c11d9545aa4e9f322b015e529b7" +uuid = "f9701e48-63b3-45aa-9a63-9bc6c271f355" +version = "0.3.5" + +[[deps.IntelOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "31d6adb719886d4e32e38197aae466e98881320b" +uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" +version = "2024.0.0+0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.IterativeSolvers]] +deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] +git-tree-sha1 = "b435d190ef8369cf4d79cc9dd5fba88ba0165307" +uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" +version = "0.9.3" + +[[deps.JLD2]] +deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] +git-tree-sha1 = "9bbb5130d3b4fa52846546bca4791ecbdfb52730" +uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" +version = "0.4.38" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.3" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "7.84.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.10.2+0" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + +[[deps.LightXML]] +deps = ["Libdl", "XML2_jll"] +git-tree-sha1 = "3a994404d3f6709610701c7dabfc03fed87a81f8" +uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179" +version = "0.9.1" + +[[deps.LineSearches]] +deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] +git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d" +uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" +version = "7.2.0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.26" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.MKL_jll]] +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "72dc3cf284559eb8f53aa593fe62cb33f83ed0c0" +uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" +version = "2024.0.0+0" + +[[deps.MPI]] +deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] +git-tree-sha1 = "4e3136db3735924f96632a5b40a5979f1f53fa07" +uuid = "da04e1cc-30fd-572f-bb4f-1f8673147195" +version = "0.20.19" + + [deps.MPI.extensions] + AMDGPUExt = "AMDGPU" + CUDAExt = "CUDA" + + [deps.MPI.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + +[[deps.MPICH_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "2ee75365ca243c1a39d467e35ffd3d4d32eef11e" +uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" +version = "4.1.2+1" + +[[deps.MPIPreferences]] +deps = ["Libdl", "Preferences"] +git-tree-sha1 = "8f6af051b9e8ec597fa09d8885ed79fd582f33c9" +uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" +version = "0.1.10" + +[[deps.MPItrampoline_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "6979eccb6a9edbbb62681e158443e79ecc0d056a" +uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" +version = "5.3.1+0" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.11" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.MicrosoftMPI_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "b01beb91d20b0d1312a9471a36017b5b339d26de" +uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" +version = "10.1.4+1" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.NLSolversBase]] +deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] +git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" +uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" +version = "7.8.3" + +[[deps.NLsolve]] +deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"] +git-tree-sha1 = "019f12e9a1a7880459d0173c182e6a99365d7ac1" +uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" +version = "4.5.1" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + +[[deps.NearestNeighbors]] +deps = ["Distances", "StaticArrays"] +git-tree-sha1 = "3ef8ff4f011295fd938a521cb605099cecf084ca" +uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" +version = "0.4.15" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OffsetArrays]] +deps = ["Adapt"] +git-tree-sha1 = "2ac17d29c523ce1cd38e27785a7d23024853a4bb" +uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" +version = "1.12.10" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+0" + +[[deps.OpenMPI_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "e25c1778a98e34219a00455d6e4384e017ea9762" +uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" +version = "4.1.6+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.3" + +[[deps.P4est_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "Pkg", "TOML", "Zlib_jll"] +git-tree-sha1 = "70c2d9a33b8810198314a5722ee3e9520110b28d" +uuid = "6b5a15aa-cf52-5330-8376-5e5d90283449" +version = "2.8.1+2" + +[[deps.P4est_wrapper]] +deps = ["CEnum", "Libdl", "MPI", "P4est_jll"] +git-tree-sha1 = "c182e067e6bac213c6e75e4139d01ebfb7ea0a58" +uuid = "3743d7c0-8adf-11ea-380b-7d33b0ecc1da" +version = "0.2.0" + +[[deps.Parameters]] +deps = ["OrderedCollections", "UnPack"] +git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" +uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" +version = "0.12.3" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.PartitionedArrays]] +deps = ["CircularArrays", "Distances", "FillArrays", "IterativeSolvers", "LinearAlgebra", "MPI", "Printf", "Random", "SparseArrays", "SparseMatricesCSR"] +git-tree-sha1 = "149d2287770c6a533507d74beaa73d76c0727922" +uuid = "5a9dfac6-5c52-46f7-8278-5e2210713be9" +version = "0.3.4" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.0" + +[[deps.PkgVersion]] +deps = ["Pkg"] +git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" +uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" +version = "0.3.3" + +[[deps.PolynomialBases]] +deps = ["ArgCheck", "AutoHashEquals", "FFTW", "FastGaussQuadrature", "LinearAlgebra", "Requires", "SimpleUnPack", "SpecialFunctions"] +git-tree-sha1 = "aa1877430a7e8b0c7a35ea095c415d462af0870f" +uuid = "c74db56a-226d-5e98-8bb0-a6049094aeea" +version = "0.4.21" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "9ebcd48c498668c7fa0e97a9cae873fbee7bfee1" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.9.1" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.1" + +[[deps.SimpleUnPack]] +git-tree-sha1 = "58e6353e72cde29b90a69527e56df1b5c3d8c437" +uuid = "ce78b400-467f-4804-87d8-8f486da07d0a" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.SparseMatricesCSR]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "38677ca58e80b5cad2382e5a1848f93b054ad28d" +uuid = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" +version = "0.6.7" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.3.1" + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + + [deps.SpecialFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "fba11dbe2562eecdfcac49a05246af09ee64d055" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.8.1" + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + + [deps.StaticArrays.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.2" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TextWrap]] +git-tree-sha1 = "9250ef9b01b66667380cf3275b3f7488d0e25faf" +uuid = "b718987f-49a8-5099-9789-dcd902bef87d" +version = "1.0.1" + +[[deps.TranscodingStreams]] +deps = ["Random", "Test"] +git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.9.13" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.UnPack]] +git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" +uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +version = "1.0.2" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.VTKBase]] +git-tree-sha1 = "c2d0db3ef09f1942d08ea455a9e252594be5f3b6" +uuid = "4004b06d-e244-455f-a6ce-a5f9919cc534" +version = "1.0.1" + +[[deps.WriteVTK]] +deps = ["Base64", "CodecZlib", "FillArrays", "LightXML", "TranscodingStreams", "VTKBase"] +git-tree-sha1 = "41f0dc2a8f6fd860c266b91fd5cdf4fead65ae69" +uuid = "64499a7a-5c06-52f2-abe2-ccb03c286192" +version = "1.18.1" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "801cbe47eae69adc50f36c3caec4758d2650741b" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.12.2+0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.48.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" diff --git a/Project.toml b/Project.toml index 804c3ba..0a1a28b 100644 --- a/Project.toml +++ b/Project.toml @@ -17,7 +17,6 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] ArgParse = "1" FillArrays = "0.8.4, 0.9, 0.10, 0.11, 0.12, 1" -Gridap = "0.17.20" GridapDistributed = "0.3.1" MPI = "0.20" P4est_wrapper = "0.2.0" diff --git a/src/Geometry.jl b/src/Geometry.jl new file mode 100644 index 0000000..97af0bf --- /dev/null +++ b/src/Geometry.jl @@ -0,0 +1,293 @@ +struct FaceToCellGlueNonConforming{A,B,C,D} <: GridapType + face_is_owner :: Vector{Bool} + face_to_subface :: Vector{Int8} + face_to_cell_glue:: Gridap.Geometry.FaceToCellGlue{A,B,C,D} +end + +function _adjust_cell_to_lface_to_pindex!(f2cg_nc,Df,ncglue,cell_faces) + f2cg=f2cg_nc.face_to_cell_glue + face_to_cell=f2cg.face_to_cell + face_to_lface=f2cg.face_to_lface + cell_to_lface_to_pindex=f2cg.cell_to_lface_to_pindex + for i=1:length(f2cg_nc.face_is_owner) + if (f2cg_nc.face_is_owner[i]) + cell=face_to_cell[i] + lface=face_to_lface[i] + gface=cell_faces[cell][lface] + (oface,_,_)=ncglue.owner_faces_lids[Df][gface] + pindex=ncglue.owner_faces_pindex[Df][oface] + s=f2cg.cell_to_lface_to_pindex.ptrs[cell] + f2cg.cell_to_lface_to_pindex.data[s+lface-1]=pindex + end + end +end + +function FaceToCellGlueNonConforming(topo, + cell_grid, + face_grid, + face_to_bgface, + bgface_to_lcell, + face_is_owner, + face_to_subface, + ncglue) + + face_to_cell_glue=Gridap.Geometry.FaceToCellGlue(topo, + cell_grid, + face_grid, + face_to_bgface, + bgface_to_lcell) + + f2cg_nc=FaceToCellGlueNonConforming(face_is_owner, + face_to_subface, + face_to_cell_glue) + + Dc=num_cell_dims(cell_grid) + Df=num_cell_dims(face_grid) + cell_faces=Gridap.Geometry.get_faces(topo,Dc,Df) + _adjust_cell_to_lface_to_pindex!(f2cg_nc,Df,ncglue,cell_faces) + f2cg_nc +end + + +function _generate_owner_face_to_subfaces(model,ncglue::GridapP4est.NonConformingGlue{D}) where D + num_children=GridapP4est.get_num_children(Val{D-1}) + + # Generate owner_face_to_subfaces_ptrs + num_owner_faces=length(keys(ncglue.owner_faces_lids[D-1])) + owner_face_to_subfaces_ptrs = Vector{Int}(undef, num_owner_faces+1) + owner_face_to_subfaces_ptrs .= num_children + length_to_ptrs!(owner_face_to_subfaces_ptrs) + + topology=Gridap.Geometry.get_grid_topology(model) + cell_faces=Gridap.Geometry.get_faces(topology,D,D-1) + + num_hanging_faces = ncglue.num_hanging_faces[D] + num_regular_faces = ncglue.num_regular_faces[D] + + # Generate owner_face_to_subfaces_data + owner_face_to_subfaces_data=Vector{Int}(undef,owner_face_to_subfaces_ptrs[end]-1) + owner_face_to_subfaces_data.=-1 + for i=1:num_hanging_faces + (ocell,ocell_lface,subface)=ncglue.hanging_faces_glue[D][i] + if (ocell!=-1) + ocell_lface_within_dim =GridapP4est.face_lid_within_dim(Val{D}, ocell_lface) + owner_gface=cell_faces[ocell][ocell_lface_within_dim] + (lowner,_,_)=ncglue.owner_faces_lids[D-1][owner_gface] + spos=owner_face_to_subfaces_ptrs[lowner] + owner_face_to_subfaces_data[spos+subface-1]=num_regular_faces+i + end + end + Gridap.Arrays.Table(owner_face_to_subfaces_data,owner_face_to_subfaces_ptrs) +end + +function Gridap.Geometry.SkeletonTriangulation(model::DiscreteModel{D}, + ncglue::GridapP4est.NonConformingGlue{D}) where {D} + + num_regular_faces=ncglue.num_regular_faces[D] + owner_faces_lids=ncglue.owner_faces_lids + + topo=Gridap.Geometry.get_grid_topology(model) + is_boundary_face=Gridap.Geometry.get_isboundary_face(topo,D-1) + + # Include all regular faces wich are + # either owner or not in the boundary + face_to_regular_bgface=Int[] + for (gface,ibf) in enumerate(is_boundary_face) + if gface <= num_regular_faces + if (!ibf) + push!(face_to_regular_bgface,gface) + else + if (haskey(owner_faces_lids[D-1],gface)) + push!(face_to_regular_bgface,gface) + end + end + end + end + + # IMPORTANT NOTE: Plus side contains the hanging side of all cell interfaces, while + # Minus side the "owner" side of all cell interfaces. This is a MUST. + # For facet integration purposes, the Jacobian of the geometrical mapping + # is extracted from the plus side. + + # Plus side + regular_bgface_to_lcell_minus=Vector{Int8}(undef,num_regular_faces) + regular_bgface_to_lcell_minus.=2 + for i=1:length(is_boundary_face) + if ( i<=num_regular_faces && + is_boundary_face[i] && + !(haskey(owner_faces_lids[D-1],i))) + regular_bgface_to_lcell_minus[i]=1 + end + end + plus=BoundaryTriangulation( + model, + face_to_regular_bgface, + regular_bgface_to_lcell_minus, + ncglue) + + + # Minus side + regular_bgface_to_lcell_plus=Fill(Int8(1),num_regular_faces) + minus=BoundaryTriangulation( + model, + face_to_regular_bgface, + regular_bgface_to_lcell_plus, + ncglue) + + + SkeletonTriangulation(plus,minus) +end + +function Gridap.Geometry.BoundaryTriangulation( + model::DiscreteModel{D}, + face_to_regular_bgface::AbstractVector{<:Integer}, + regular_bgface_to_lcell::AbstractVector{<:Integer}, + ncglue::GridapP4est.NonConformingGlue{D}) where D + + @assert length(regular_bgface_to_lcell)==ncglue.num_regular_faces[D] + + T=eltype(face_to_regular_bgface) + face_to_bgface=T[] + face_is_owner=Bool[] + face_to_subface=Int8[] + bgface_to_lcell=Vector{T}(undef, + ncglue.num_regular_faces[D]+ncglue.num_hanging_faces[D]) + + bgface_to_lcell.=1 + + num_children=GridapP4est.get_num_children(Val{D-1}) + owner_face_to_subfaces=_generate_owner_face_to_subfaces(model,ncglue) + + @debug "[$(MPI.Comm_rank(MPI.COMM_WORLD))]: owner_face_to_subfaces=$(owner_face_to_subfaces)" + + # Generate face_to_bgface AND bgface_to_lcell + for (i,gface) in enumerate(face_to_regular_bgface) + if (haskey(ncglue.owner_faces_lids[D-1],gface)) + # Find all subfaces of current owner face! + (lowner,_,_)=ncglue.owner_faces_lids[D-1][gface] + subfaces=owner_face_to_subfaces[lowner] + + # Regular face is owner of several other hanging faces + if (regular_bgface_to_lcell[gface]==1) + bgface_to_lcell[gface]=1 + for i=1:num_children + if (subfaces[i]!=-1) + push!(face_to_bgface, gface) + push!(face_is_owner,true) + push!(face_to_subface,i) + end + end + else + for i=1:num_children + if (subfaces[i]!=-1) + push!(face_to_bgface, subfaces[i]) + bgface_to_lcell[subfaces[i]]=1 + push!(face_is_owner,false) + push!(face_to_subface,-1) + end + end + end + else + # Regular face which is not owner of any other hanging face + push!(face_to_bgface, gface) + bgface_to_lcell[gface]=regular_bgface_to_lcell[gface] + push!(face_is_owner,false) + push!(face_to_subface,-1) + end + end + + topo = Gridap.Geometry.get_grid_topology(model) + cell_grid = get_grid(model) + bgface_grid = Gridap.Geometry.Grid(ReferenceFE{D-1},model) + bgface_grid = view(bgface_grid,face_to_bgface) + + glue=FaceToCellGlueNonConforming(topo, + cell_grid, + bgface_grid, + face_to_bgface, + bgface_to_lcell, + face_is_owner, + face_to_subface, + ncglue) + + trian = Gridap.Geometry.BodyFittedTriangulation(model,bgface_grid,face_to_bgface) + BoundaryTriangulation(trian,glue) +end + +function Gridap.Geometry.SkeletonTriangulation(model::Gridap.Adaptivity.AdaptedDiscreteModel{D}, + ncglue::GridapP4est.NonConformingGlue{D}) where {D} + trian = SkeletonTriangulation(Gridap.Adaptivity.get_model(model),ncglue) + return Gridap.Adaptivity.AdaptedTriangulation(trian,model) +end + +function Gridap.Geometry.SkeletonTriangulation( + portion,model::OctreeDistributedDiscreteModel{Dc};kwargs...) where Dc + gids = get_face_gids(model.dmodel,Dc) + trians = map(local_views(model.dmodel), + partition(gids), + model.non_conforming_glue) do model, gids, ncglue + trian=SkeletonTriangulation(model,ncglue) + GridapDistributed.filter_cells_when_needed(portion,gids,trian) + end + GridapDistributed.DistributedTriangulation(trians,model) +end + +struct SubfaceRefCoordsMap{A} <: Gridap.Arrays.Map + face_is_owner :: Vector{Bool} + face_to_subface :: Vector{Int8} + ref_rule :: A +end + +function Gridap.Arrays.return_cache(f::SubfaceRefCoordsMap,gface::Integer) + ref_grid=Gridap.Adaptivity.get_ref_grid(f.ref_rule) + poly=Gridap.Adaptivity.get_polytope(f.ref_rule) + poly_vertices=Gridap.Geometry.get_vertex_coordinates(poly) + cell_coordinates=get_cell_coordinates(ref_grid) + cache_cell_coordinates=array_cache(cell_coordinates) + poly_vertices,cell_coordinates,cache_cell_coordinates +end + +function Gridap.Arrays.evaluate!(cache,f::SubfaceRefCoordsMap,gface::Integer) + poly_vertices,cell_coordinates,cache_cell_coordinates=cache + if (f.face_is_owner[gface]) + subface=f.face_to_subface[gface] + getindex!(cache_cell_coordinates,cell_coordinates,subface) + else + poly_vertices + end +end + +function Gridap.Geometry.get_glue(trian::BoundaryTriangulation{Dc,Dp,A,<:FaceToCellGlueNonConforming}, + ::Val{D},::Val{D}) where {D,Dc,Dp,A} + tface_to_mface = trian.glue.face_to_cell_glue.face_to_cell + + face_to_q_vertex_coords = + Gridap.Geometry._compute_face_to_q_vertex_coords(trian,trian.glue.face_to_cell_glue) + f(p) = + Gridap.ReferenceFEs.get_shapefuns(Gridap.ReferenceFEs.LagrangianRefFE(Float64,Gridap.ReferenceFEs.get_polytope(p),1)) + ftype_to_shapefuns = map( f, Gridap.Geometry.get_reffes(trian) ) + face_to_shapefuns = Gridap.ReferenceFEs.expand_cell_data(ftype_to_shapefuns,trian.glue.face_to_cell_glue.face_to_ftype) + face_s_q = lazy_map(Gridap.Fields.linear_combination,face_to_q_vertex_coords,face_to_shapefuns) + + # Map subface to cell ref space + ref_rule=nothing + if Dc==1 + ref_rule=Gridap.Adaptivity.RefinementRule(SEGMENT,2) + else + @assert Dc==2 + ref_rule=Gridap.Adaptivity.RedRefinementRule(QUAD) + end + + m=SubfaceRefCoordsMap(trian.glue.face_is_owner,trian.glue.face_to_subface,ref_rule) + subface_ref_coords = lazy_map(m, Gridap.Arrays.IdentityVector(length(trian.glue.face_to_subface)) ) + face_to_q_vertex_coords = lazy_map(evaluate,face_s_q,subface_ref_coords) + face_s_q = lazy_map(Gridap.Fields.linear_combination,face_to_q_vertex_coords,face_to_shapefuns) + + tface_to_mface_map = face_s_q + mface_to_tface = nothing + Gridap.Geometry.FaceToFaceGlue(tface_to_mface,tface_to_mface_map,mface_to_tface) +end + +function Gridap.Geometry.get_facet_normal(trian::BoundaryTriangulation{Dc,Dp,A,<:FaceToCellGlueNonConforming}) where {Dc,Dp,A} + Gridap.Geometry.get_facet_normal(trian, trian.glue.face_to_cell_glue) +end diff --git a/src/GridapP4est.jl b/src/GridapP4est.jl index e1d41c2..5b790e0 100644 --- a/src/GridapP4est.jl +++ b/src/GridapP4est.jl @@ -15,9 +15,11 @@ module GridapP4est include("Environment.jl") include("UniformlyRefinedForestOfOctreesDiscreteModels.jl") include("OctreeDistributedDiscreteModels.jl") + include("Geometry.jl") include("GridapFixes.jl") include("FESpaces.jl") include("AdaptivityFlagsMarkingStrategies.jl") + export UniformlyRefinedForestOfOctreesDiscreteModel export OctreeDistributedDiscreteModel diff --git a/test/PoissonNonConformingOctreeModelsTests.jl b/test/PoissonNonConformingOctreeModelsTests.jl index 057bbca..c8fcab1 100644 --- a/test/PoissonNonConformingOctreeModelsTests.jl +++ b/test/PoissonNonConformingOctreeModelsTests.jl @@ -32,12 +32,23 @@ module PoissonNonConformingOctreeModelsTests u,f end - function test_transfer_ops_and_redistribute(ranks,dmodel,order,T::Type) + function test_transfer_ops_and_redistribute(ranks,dmodel,order,cg_or_dg,T::Type) + @assert cg_or_dg == :cg || cg_or_dg == :dg + if (cg_or_dg==:dg) + @assert T==Float64 + end + + conformity=cg_or_dg==:cg ? :H1 : :L2 + # Define manufactured functions u,f = generate_analytical_problem_functions(T,order) degree = 2*order+1 reffe=ReferenceFE(lagrangian,T,order) - VH=FESpace(dmodel,reffe;dirichlet_tags="boundary") + if (cg_or_dg == :cg) + VH=FESpace(dmodel,reffe,conformity=conformity;dirichlet_tags="boundary") + else + VH=FESpace(dmodel,reffe,conformity=conformity) + end UH=TrialFESpace(VH,u) ref_coarse_flags=map(ranks,partition(get_cell_gids(dmodel.dmodel))) do rank,indices flags=zeros(Cint,length(indices)) @@ -58,16 +69,46 @@ module PoissonNonConformingOctreeModelsTests # print(glue.n2o_faces_map[end]); print("\n") # end # end - Vh=FESpace(fmodel,reffe,conformity=:H1;dirichlet_tags="boundary") + if (cg_or_dg == :cg) + Vh=FESpace(fmodel,reffe,conformity=conformity;dirichlet_tags="boundary") + else + Vh=FESpace(fmodel,reffe,conformity=conformity) + end Uh=TrialFESpace(Vh,u) ΩH = Triangulation(dmodel) dΩH = Measure(ΩH,degree) - aH(u,v) = ∫( ∇(v)⊙∇(u) )*dΩH - bH(v) = ∫(v⋅f)*dΩH + if (cg_or_dg==:cg) + aHcg(u,v) = ∫( ∇(v)⊙∇(u) )*dΩH + bHcg(v) = ∫(v⋅f)*dΩH + op = AffineFEOperator(aHcg,bHcg,UH,VH) + else + h = 2 + γ = 10 + + ΛH = Skeleton(dmodel) + ΓH = Boundary(dmodel,tags="boundary") + + dΛH = Measure(ΛH,2*order) + dΓH = Measure(ΓH,2*order) + + n_ΓH = get_normal_vector(ΓH) + n_ΛH = get_normal_vector(ΛH) + + aHdg(u,v) = + ∫( ∇(v)⋅∇(u) )*dΩH + + ∫( (γ/h)*v*u - v*(n_ΓH⋅∇(u)) - (n_ΓH⋅∇(v))*u )*dΓH + + ∫( (γ/h)*jump(v*n_ΛH)⋅jump(u*n_ΛH) - + jump(v*n_ΛH)⋅mean(∇(u)) - + mean(∇(v))⋅jump(u*n_ΛH) )*dΛH + + bHdg(v) = + ∫( v*f )*dΩH + + ∫( (γ/h)*v*u - (n_ΓH⋅∇(v))*u )*dΓH + op = AffineFEOperator(aHdg,bHdg,UH,VH) + end - op = AffineFEOperator(aH,bH,UH,VH) uH = solve(op) e = u - uH @@ -85,10 +126,36 @@ module PoissonNonConformingOctreeModelsTests Ωh = Triangulation(fmodel) dΩh = Measure(Ωh,degree) - ah(u,v) = ∫( ∇(v)⊙∇(u) )*dΩh - bh(v) = ∫(v⋅f)*dΩh + if (cg_or_dg==:cg) + ahcg(u,v) = ∫( ∇(v)⊙∇(u) )*dΩh + bhcg(v) = ∫(v⋅f)*dΩh + op = AffineFEOperator(ahcg,bhcg,Uh,Vh) + else + h = 2 + γ = 10 + + Λh = Skeleton(fmodel) + Γh = Boundary(fmodel,tags="boundary") + + dΛh = Measure(Λh,2*order) + dΓh = Measure(Γh,2*order) + + n_Γh = get_normal_vector(Γh) + n_Λh = get_normal_vector(Λh) + + ahdg(u,v) = + ∫( ∇(v)⋅∇(u) )*dΩh + + ∫( (γ/h)*v*u - v*(n_Γh⋅∇(u)) - (n_Γh⋅∇(v))*u )*dΓh + + ∫( (γ/h)*jump(v*n_Λh)⋅jump(u*n_Λh) - + jump(v*n_Λh)⋅mean(∇(u)) - + mean(∇(v))⋅jump(u*n_Λh) )*dΛh + + bhdg(v) = + ∫( v*f )*dΩh + + ∫( (γ/h)*v*u - (n_Γh⋅∇(v))*u )*dΓh + op = AffineFEOperator(ahdg,bhdg,Uh,Vh) + end - op = AffineFEOperator(ah,bh,Uh,Vh) uh = solve(op) e = u - uh @@ -140,18 +207,51 @@ module PoissonNonConformingOctreeModelsTests el2 = sqrt(sum( ∫( e⋅e )*dΩH )) fmodel_red, red_glue=GridapDistributed.redistribute(fmodel); - Vhred=FESpace(fmodel_red,reffe,conformity=:H1;dirichlet_tags="boundary") - Uhred=TrialFESpace(Vhred,u) + + if (cg_or_dg==:cg) + Vhred=FESpace(fmodel_red,reffe,conformity=conformity;dirichlet_tags="boundary") + Uhred=TrialFESpace(Vhred,u) + else + Vhred=FESpace(fmodel_red,reffe,conformity=conformity) + Uhred=TrialFESpace(Vhred,u) + end Ωhred = Triangulation(fmodel_red) dΩhred = Measure(Ωhred,degree) - ahred(u,v) = ∫( ∇(v)⊙∇(u) )*dΩhred - bhred(v) = ∫(v⋅f)*dΩhred + if (cg_or_dg==:cg) + ahcgred(u,v) = ∫( ∇(v)⊙∇(u) )*dΩhred + bhcgred(v) = ∫(v⋅f)*dΩhred + op = AffineFEOperator(ahcgred,bhcgred,Uhred,Vhred) + else + h = 2 + γ = 10 + + Λhred = Skeleton(fmodel_red) + Γhred = Boundary(fmodel_red,tags="boundary") + + dΛhred = Measure(Λhred,2*order) + dΓhred = Measure(Γhred,2*order) + + n_Γhred = get_normal_vector(Γhred) + n_Λhred = get_normal_vector(Λhred) + + ahdgred(u,v) = + ∫( ∇(v)⋅∇(u) )*dΩhred + + ∫( (γ/h)*v*u - v*(n_Γhred⋅∇(u)) - (n_Γhred⋅∇(v))*u )*dΓhred + + ∫( (γ/h)*jump(v*n_Λhred)⋅jump(u*n_Λhred) - + jump(v*n_Λhred)⋅mean(∇(u)) - + mean(∇(v))⋅jump(u*n_Λhred) )*dΛhred + + bhdgred(v) = + ∫( v*f )*dΩhred + + ∫( (γ/h)*v*u - (n_Γhred⋅∇(v))*u )*dΓhred + op = AffineFEOperator(ahdgred,bhdgred,Uhred,Vhred) + end - op = AffineFEOperator(ahred,bhred,Uhred,Vhred) - uhred = solve(op) - e = u - uhred + + uhred = solve(op) + e = u - uhred el2 = sqrt(sum( ∫( e⋅e )*dΩhred )) println("[SOLVE FINE REDISTRIBUTED] el2 < tol: $(el2) < $(tol)") @assert el2 < tol @@ -169,8 +269,14 @@ module PoissonNonConformingOctreeModelsTests function test_refine_and_coarsen_at_once(ranks, dmodel::OctreeDistributedDiscreteModel{Dc}, order, + cg_or_dg, T::Type) where Dc + @assert cg_or_dg == :cg || cg_or_dg == :dg + if (cg_or_dg==:dg) + @assert T==Float64 + end + # Define manufactured functions u,f = generate_analytical_problem_functions(T,order) @@ -187,19 +293,55 @@ module PoissonNonConformingOctreeModelsTests end fmodel,glue=adapt(dmodel,ref_coarse_flags); + conformity=cg_or_dg==:cg ? :H1 : :L2 + reffe=ReferenceFE(lagrangian,T,order) - VH=FESpace(dmodel,reffe,conformity=:H1;dirichlet_tags="boundary") + if (conformity==:L2) + VH=FESpace(dmodel,reffe,conformity=conformity) + else + VH=FESpace(dmodel,reffe,conformity=conformity;dirichlet_tags="boundary") + end UH=TrialFESpace(VH,u) - Vh=FESpace(fmodel,reffe,conformity=:H1;dirichlet_tags="boundary") + if (conformity==:L2) + Vh=FESpace(fmodel,reffe,conformity=conformity) + else + Vh=FESpace(fmodel,reffe,conformity=conformity;dirichlet_tags="boundary") + end Uh=TrialFESpace(Vh,u) ΩH = Triangulation(dmodel) dΩH = Measure(ΩH,degree) - aH(u,v) = ∫( ∇(v)⊙∇(u) )*dΩH - bH(v) = ∫(v⋅f)*dΩH + if (cg_or_dg==:cg) + aHcg(u,v) = ∫( ∇(v)⊙∇(u) )*dΩH + bHcg(v) = ∫(v⋅f)*dΩH + op = AffineFEOperator(aHcg,bHcg,UH,VH) + else + h = 2 + γ = 10 + + ΛH = Skeleton(dmodel) + ΓH = Boundary(dmodel,tags="boundary") + + dΛH = Measure(ΛH,2*order) + dΓH = Measure(ΓH,2*order) + + n_ΓH = get_normal_vector(ΓH) + n_ΛH = get_normal_vector(ΛH) + + aHdg(u,v) = + ∫( ∇(v)⋅∇(u) )*dΩH + + ∫( (γ/h)*v*u - v*(n_ΓH⋅∇(u)) - (n_ΓH⋅∇(v))*u )*dΓH + + ∫( (γ/h)*jump(v*n_ΛH)⋅jump(u*n_ΛH) - + jump(v*n_ΛH)⋅mean(∇(u)) - + mean(∇(v))⋅jump(u*n_ΛH) )*dΛH + + bHdg(v) = + ∫( v*f )*dΩH + + ∫( (γ/h)*v*u - (n_ΓH⋅∇(v))*u )*dΓH + op = AffineFEOperator(aHdg,bHdg,UH,VH) + end - op = AffineFEOperator(aH,bH,UH,VH) uH = solve(op) e = u - uH @@ -214,10 +356,39 @@ module PoissonNonConformingOctreeModelsTests Ωh = Triangulation(fmodel) dΩh = Measure(Ωh,degree) - ah(u,v) = ∫( ∇(v)⊙∇(u) )*dΩh - bh(v) = ∫(v⋅f)*dΩh + if (cg_or_dg==:cg) + ahcg(u,v) = ∫( ∇(v)⊙∇(u) )*dΩh + bhcg(v) = ∫(v⋅f)*dΩh + op = AffineFEOperator(ahcg,bhcg,Uh,Vh) + else + h = 2 + γ = 10 + + Λh = Skeleton(fmodel) + Γh = Boundary(fmodel,tags="boundary") + + dΛh = Measure(Λh,2*order) + dΓh = Measure(Γh,2*order) + + n_Γh = get_normal_vector(Γh) + n_Λh = get_normal_vector(Λh) + + ahdg(u,v) = + ∫( ∇(v)⋅∇(u) )*dΩh + + ∫( (γ/h)*v*u - v*(n_Γh⋅∇(u)) - (n_Γh⋅∇(v))*u )*dΓh + + # with p=4 MPI tasks, (γ/h)*jump(v*n_Λh)⋅jump(u*n_Λh) fails! + # did not have time you to understand the cause, workaround + # is the line below + ∫( (γ/h)*(jump(v*n_Λh)⋅jump(u*n_Λh)) - + jump(v*n_Λh)⋅mean(∇(u)) - + mean(∇(v))⋅jump(u*n_Λh) )*dΛh + + bhdg(v) = + ∫( v*f )*dΩh + + ∫( (γ/h)*v*u - (n_Γh⋅∇(v))*u )*dΓh + op = AffineFEOperator(ahdg,bhdg,Uh,Vh) + end - op = AffineFEOperator(ah,bh,Uh,Vh) uh = solve(op) e = u - uh @@ -235,30 +406,30 @@ module PoissonNonConformingOctreeModelsTests @assert el2 < tol end - function test_2d(ranks,order,T::Type;num_amr_steps=5) + function test_2d(ranks,order,cg_or_dg,T::Type;num_amr_steps=5) coarse_model=CartesianDiscreteModel((0,1,0,1),(1,1)) dmodel=OctreeDistributedDiscreteModel(ranks,coarse_model,2) - test_refine_and_coarsen_at_once(ranks,dmodel,order,T) + test_refine_and_coarsen_at_once(ranks,dmodel,order,cg_or_dg,T) rdmodel=dmodel for i=1:num_amr_steps - rdmodel=test_transfer_ops_and_redistribute(ranks,rdmodel,order,T) + rdmodel=test_transfer_ops_and_redistribute(ranks,rdmodel,order,cg_or_dg,T) end end - function test_3d(ranks,order,T::Type;num_amr_steps=5) + function test_3d(ranks,order,cg_or_dg,T::Type;num_amr_steps=5) coarse_model=CartesianDiscreteModel((0,1,0,1,0,1),(1,1,1)) dmodel=OctreeDistributedDiscreteModel(ranks,coarse_model,2) - test_refine_and_coarsen_at_once(ranks,dmodel,order,T) + test_refine_and_coarsen_at_once(ranks,dmodel,order,cg_or_dg,T) rdmodel=dmodel for i=1:num_amr_steps - rdmodel=test_transfer_ops_and_redistribute(ranks,rdmodel,order,T) + rdmodel=test_transfer_ops_and_redistribute(ranks,rdmodel,order,cg_or_dg,T) end end - function test(ranks,TVDc::Type{Val{Dc}}, perm, order,T::Type) where Dc + function test(ranks,TVDc::Type{Val{Dc}}, perm, order,cg_or_dg,T::Type) where Dc coarse_model = setup_model(TVDc,perm) model = OctreeDistributedDiscreteModel(ranks, coarse_model, 1) - test_transfer_ops_and_redistribute(ranks,model,order,T) + test_transfer_ops_and_redistribute(ranks,model,order,cg_or_dg,T) end function _field_type(::Val{Dc}, scalar_or_vector::Symbol) where Dc @@ -274,15 +445,22 @@ module PoissonNonConformingOctreeModelsTests # debug_logger = ConsoleLgger(stderr, Logging.Debug) # global_logger(debug_logger); # Enable the debug logger globally ranks = distribute(LinearIndices((MPI.Comm_size(MPI.COMM_WORLD),))) - for Dc=2:3, perm=1:4, order=1:4, scalar_or_vector in (:scalar,) - test(ranks,Val{Dc},perm,order,_field_type(Val{Dc}(),scalar_or_vector)) - end - for Dc=2:3, perm in (1,2), order in (1,4), scalar_or_vector in (:vector,) - test(ranks,Val{Dc},perm,order,_field_type(Val{Dc}(),scalar_or_vector)) + # for Dc=2:3, perm=1:4, order=1:4, scalar_or_vector in (:scalar,) + # test(ranks,Val{Dc},perm,order,:cg,_field_type(Val{Dc}(),scalar_or_vector)) + # end + for Dc=2:3, perm in (1,2,4), order=(1,2), scalar_or_vector in (:scalar,) + test(ranks,Val{Dc},perm,order,:dg,_field_type(Val{Dc}(),scalar_or_vector)) end - for order=2:2, scalar_or_vector in (:scalar,:vector) - test_2d(ranks,order,_field_type(Val{2}(),scalar_or_vector), num_amr_steps=5) - test_3d(ranks,order,_field_type(Val{3}(),scalar_or_vector), num_amr_steps=4) + # for Dc=2:3, perm in (1,2), order in (1,4), scalar_or_vector in (:vector,) + # test(ranks,Val{Dc},perm,order,:cg,_field_type(Val{Dc}(),scalar_or_vector)) + # end + for order=2:2, scalar_or_vector in (:scalar,) + test_2d(ranks,order,:dg,_field_type(Val{2}(),scalar_or_vector), num_amr_steps=5) + test_3d(ranks,order,:dg,_field_type(Val{3}(),scalar_or_vector), num_amr_steps=4) end + # for order=2:2, scalar_or_vector in (:scalar,:vector) + # test_2d(ranks,order,:cg,_field_type(Val{2}(),scalar_or_vector), num_amr_steps=5) + # test_3d(ranks,order,:cg,_field_type(Val{3}(),scalar_or_vector), num_amr_steps=4) + # end end end \ No newline at end of file diff --git a/test/test.jl b/test/test.jl index be3bfc4..24f9b57 100644 --- a/test/test.jl +++ b/test/test.jl @@ -8,364 +8,6 @@ using Test include("CoarseDiscreteModelsTools.jl") - -# struct FaceToCellGlue{A,B,C,D} <: GridapType -# face_to_bgface::A -# bgface_to_lcell::B -# face_to_cell::Vector{Int32} -# face_to_lface::Vector{Int8} -# face_to_lcell::Vector{Int8} -# face_to_ftype::C -# cell_to_ctype::D -# cell_to_lface_to_pindex::Table{Int8,Vector{Int8},Vector{Int32}} -# ctype_to_lface_to_ftype::Vector{Vector{Int8}} -# end - -struct FaceToCellGlueNonConforming{A,B,C,D} <: GridapType - face_is_owner :: Vector{Bool} - face_to_subface :: Vector{Int8} - face_to_cell_glue:: Gridap.Geometry.FaceToCellGlue{A,B,C,D} -end - -function _adjust_cell_to_lface_to_pindex!(f2cg_nc,Df,ncglue,cell_faces) - f2cg=f2cg_nc.face_to_cell_glue - face_to_cell=f2cg.face_to_cell - face_to_lface=f2cg.face_to_lface - cell_to_lface_to_pindex=f2cg.cell_to_lface_to_pindex - for i=1:length(f2cg_nc.face_is_owner) - if (f2cg_nc.face_is_owner[i]) - cell=face_to_cell[i] - lface=face_to_lface[i] - gface=cell_faces[cell][lface] - (oface,_,_)=ncglue.owner_faces_lids[Df][gface] - pindex=ncglue.owner_faces_pindex[Df][oface] - s=f2cg.cell_to_lface_to_pindex.ptrs[cell] - f2cg.cell_to_lface_to_pindex.data[s+lface-1]=pindex - end - end -end - -function FaceToCellGlueNonConforming(topo, - cell_grid, - face_grid, - face_to_bgface, - bgface_to_lcell, - face_is_owner, - face_to_subface, - ncglue) - - face_to_cell_glue=Gridap.Geometry.FaceToCellGlue(topo, - cell_grid, - face_grid, - face_to_bgface, - bgface_to_lcell) - - f2cg_nc=FaceToCellGlueNonConforming(face_is_owner, - face_to_subface, - face_to_cell_glue) - - Dc=num_cell_dims(cell_grid) - Df=num_cell_dims(face_grid) - cell_faces=Gridap.Geometry.get_faces(topo,Dc,Df) - _adjust_cell_to_lface_to_pindex!(f2cg_nc,Df,ncglue,cell_faces) - f2cg_nc -end - - -function _generate_owner_face_to_subfaces(model,ncglue::GridapP4est.NonConformingGlue{D}) where D - num_children=GridapP4est.get_num_children(Val{D-1}) - - # Generate owner_face_to_subfaces_ptrs - num_owner_faces=length(keys(ncglue.owner_faces_lids[D-1])) - owner_face_to_subfaces_ptrs = Vector{Int}(undef, num_owner_faces+1) - owner_face_to_subfaces_ptrs .= num_children - length_to_ptrs!(owner_face_to_subfaces_ptrs) - - topology=Gridap.Geometry.get_grid_topology(model) - cell_faces=Gridap.Geometry.get_faces(topology,D,D-1) - - num_hanging_faces = ncglue.num_hanging_faces[D] - num_regular_faces = ncglue.num_regular_faces[D] - - # Generate owner_face_to_subfaces_data - owner_face_to_subfaces_data=Vector{Int}(undef,owner_face_to_subfaces_ptrs[end]-1) - owner_face_to_subfaces_data.=-1 - for i=1:num_hanging_faces - (ocell,ocell_lface,subface)=ncglue.hanging_faces_glue[D][i] - ocell_lface_within_dim =GridapP4est. face_lid_within_dim(Val{D}, ocell_lface) - owner_gface=cell_faces[ocell][ocell_lface_within_dim] - (lowner,_,_)=ncglue.owner_faces_lids[D-1][owner_gface] - spos=owner_face_to_subfaces_ptrs[lowner] - owner_face_to_subfaces_data[spos+subface-1]=num_regular_faces+i - end - Gridap.Arrays.Table(owner_face_to_subfaces_data,owner_face_to_subfaces_ptrs) -end - -function Gridap.Geometry.SkeletonTriangulation(model::DiscreteModel{D}, - ncglue::GridapP4est.NonConformingGlue{D}) where {D} - - num_regular_faces=ncglue.num_regular_faces[D] - owner_faces_lids=ncglue.owner_faces_lids - - topo=Gridap.Geometry.get_grid_topology(model) - is_boundary_face=Gridap.Geometry.get_isboundary_face(topo,D-1) - - # Include all regular faces wich are - # either owner or not in the boundary - face_to_regular_bgface=Int[] - for (gface,ibf) in enumerate(is_boundary_face) - if gface <= num_regular_faces - if (!ibf) - push!(face_to_regular_bgface,gface) - else - if (haskey(owner_faces_lids[D-1],gface)) - push!(face_to_regular_bgface,gface) - end - end - end - end - - # IMPORTANT NOTE: Plus side contains the hanging side of all cell interfaces, while - # Minus side the "owner" side of all cell interfaces. This is a MUST. - # For facet integration purposes, the Jacobian of the geometrical mapping - # is extracted from the plus side. - - # Plus side - regular_bgface_to_lcell_minus=Vector{Int8}(undef,num_regular_faces) - regular_bgface_to_lcell_minus.=2 - for i=1:length(is_boundary_face) - if ( i<=num_regular_faces && - is_boundary_face[i] && - !(haskey(owner_faces_lids[D-1],i))) - regular_bgface_to_lcell_minus[i]=1 - end - end - plus=BoundaryTriangulation( - model, - face_to_regular_bgface, - regular_bgface_to_lcell_minus, - ncglue) - - - # Minus side - regular_bgface_to_lcell_plus=Fill(Int8(1),num_regular_faces) - minus=BoundaryTriangulation( - model, - face_to_regular_bgface, - regular_bgface_to_lcell_plus, - ncglue) - - - SkeletonTriangulation(plus,minus) -end - -function Gridap.Geometry.BoundaryTriangulation( - model::DiscreteModel{D}, - face_to_regular_bgface::AbstractVector{<:Integer}, - regular_bgface_to_lcell::AbstractVector{<:Integer}, - ncglue::GridapP4est.NonConformingGlue{D}) where D - - @assert length(regular_bgface_to_lcell)==ncglue.num_regular_faces[D] - - T=eltype(face_to_regular_bgface) - face_to_bgface=T[] - face_is_owner=Bool[] - face_to_subface=Int8[] - bgface_to_lcell=Vector{T}(undef, - ncglue.num_regular_faces[D]+ncglue.num_hanging_faces[D]) - - bgface_to_lcell.=1 - - num_children=GridapP4est.get_num_children(Val{D-1}) - owner_face_to_subfaces=_generate_owner_face_to_subfaces(model,ncglue) - - println("[$(MPI.Comm_rank(MPI.COMM_WORLD))]: owner_face_to_subfaces=$(owner_face_to_subfaces)") - - # Generate face_to_bgface AND bgface_to_lcell - for (i,gface) in enumerate(face_to_regular_bgface) - if (haskey(ncglue.owner_faces_lids[D-1],gface)) - # Find all subfaces of current owner face! - (lowner,_,_)=ncglue.owner_faces_lids[D-1][gface] - subfaces=owner_face_to_subfaces[lowner] - - # Regular face is owner of several other hanging faces - if (regular_bgface_to_lcell[gface]==1) - bgface_to_lcell[gface]=1 - for i=1:num_children - if (subfaces[i]!=-1) - push!(face_to_bgface, gface) - push!(face_is_owner,true) - push!(face_to_subface,i) - end - end - else - for i=1:num_children - if (subfaces[i]!=-1) - push!(face_to_bgface, subfaces[i]) - bgface_to_lcell[subfaces[i]]=1 - push!(face_is_owner,false) - push!(face_to_subface,-1) - end - end - end - else - # Regular face which is not owner of any other hanging face - push!(face_to_bgface, gface) - bgface_to_lcell[gface]=regular_bgface_to_lcell[gface] - push!(face_is_owner,false) - push!(face_to_subface,-1) - end - end - - topo = Gridap.Geometry.get_grid_topology(model) - cell_grid = get_grid(model) - bgface_grid = Gridap.Geometry.Grid(ReferenceFE{D-1},model) - bgface_grid = view(bgface_grid,face_to_bgface) - - glue=FaceToCellGlueNonConforming(topo, - cell_grid, - bgface_grid, - face_to_bgface, - bgface_to_lcell, - face_is_owner, - face_to_subface, - ncglue) - - trian = Gridap.Geometry.BodyFittedTriangulation(model,bgface_grid,face_to_bgface) - BoundaryTriangulation(trian,glue) -end - -struct SubfaceRefCoordsMap{A} <: Gridap.Arrays.Map - face_is_owner :: Vector{Bool} - face_to_subface :: Vector{Int8} - ref_rule :: A -end - -function Gridap.Arrays.return_cache(f::SubfaceRefCoordsMap,gface::Integer) - ref_grid=Gridap.Adaptivity.get_ref_grid(f.ref_rule) - poly=Gridap.Adaptivity.get_polytope(f.ref_rule) - poly_vertices=Gridap.Geometry.get_vertex_coordinates(poly) - cell_coordinates=get_cell_coordinates(ref_grid) - cache_cell_coordinates=array_cache(cell_coordinates) - poly_vertices,cell_coordinates,cache_cell_coordinates -end - -function Gridap.Arrays.evaluate!(cache,f::SubfaceRefCoordsMap,gface::Integer) - poly_vertices,cell_coordinates,cache_cell_coordinates=cache - if (f.face_is_owner[gface]) - subface=f.face_to_subface[gface] - getindex!(cache_cell_coordinates,cell_coordinates,subface) - else - poly_vertices - end -end - -function _compute_face_to_q_vertex_coords(trian::BoundaryTriangulation,glue) - d = num_cell_dims(trian) - cell_grid = get_grid(get_background_model(trian.trian)) - polytopes = map(Gridap.ReferenceFEs.get_polytope, Gridap.Geometry.get_reffes(cell_grid)) - cell_to_ctype = glue.cell_to_ctype - ctype_to_lvertex_to_qcoords = map(Gridap.Geometry.get_vertex_coordinates, polytopes) - ctype_to_lface_to_lvertices = map((p)->Gridap.Geometry.get_faces(p,d,0), polytopes) - ctype_to_lface_to_pindex_to_perm = map( (p)->Gridap.Geometry.get_face_vertex_permutations(p,d), polytopes) - - P = eltype(eltype(ctype_to_lvertex_to_qcoords)) - D = num_components(P) - T = eltype(P) - ctype_to_lface_to_pindex_to_qcoords = Vector{Vector{Vector{Point{D,T}}}}[] - - for (ctype, lface_to_pindex_to_perm) in enumerate(ctype_to_lface_to_pindex_to_perm) - lvertex_to_qcoods = ctype_to_lvertex_to_qcoords[ctype] - lface_to_pindex_to_qcoords = Vector{Vector{Point{D,T}}}[] - for (lface, pindex_to_perm) in enumerate(lface_to_pindex_to_perm) - cfvertex_to_lvertex = ctype_to_lface_to_lvertices[ctype][lface] - nfvertices = length(cfvertex_to_lvertex) - pindex_to_qcoords = Vector{Vector{Point{D,T}}}(undef,length(pindex_to_perm)) - for (pindex, cfvertex_to_ffvertex) in enumerate(pindex_to_perm) - ffvertex_to_qcoords = zeros(Point{D,T},nfvertices) - for (cfvertex, ffvertex) in enumerate(cfvertex_to_ffvertex) - lvertex = cfvertex_to_lvertex[cfvertex] - qcoords = lvertex_to_qcoods[lvertex] - ffvertex_to_qcoords[ffvertex] = qcoords - end - pindex_to_qcoords[pindex] = ffvertex_to_qcoords - end - push!(lface_to_pindex_to_qcoords,pindex_to_qcoords) - end - push!(ctype_to_lface_to_pindex_to_qcoords,lface_to_pindex_to_qcoords) - end - - Gridap.Geometry.FaceCompressedVector(ctype_to_lface_to_pindex_to_qcoords,glue) -end - -function Gridap.Geometry.get_glue(trian::BoundaryTriangulation{Dc,Dp,A,<:FaceToCellGlueNonConforming}, - ::Val{D},::Val{D}) where {D,Dc,Dp,A} - tface_to_mface = trian.glue.face_to_cell_glue.face_to_cell - - face_to_q_vertex_coords = - _compute_face_to_q_vertex_coords(trian,trian.glue.face_to_cell_glue) - f(p) = - Gridap.ReferenceFEs.get_shapefuns(Gridap.ReferenceFEs.LagrangianRefFE(Float64,Gridap.ReferenceFEs.get_polytope(p),1)) - ftype_to_shapefuns = map( f, Gridap.Geometry.get_reffes(trian) ) - face_to_shapefuns = Gridap.ReferenceFEs.expand_cell_data(ftype_to_shapefuns,trian.glue.face_to_cell_glue.face_to_ftype) - face_s_q = lazy_map(Gridap.Fields.linear_combination,face_to_q_vertex_coords,face_to_shapefuns) - - # Map subface to cell ref space - ref_rule=nothing - if Dc==1 - ref_rule=Gridap.Adaptivity.RefinementRule(SEGMENT,2) - else - @assert Dc==2 - ref_rule=Gridap.Adaptivity.RedRefinementRule(QUAD) - end - - m=SubfaceRefCoordsMap(trian.glue.face_is_owner,trian.glue.face_to_subface,ref_rule) - subface_ref_coords = lazy_map(m, Gridap.Arrays.IdentityVector(length(trian.glue.face_to_subface)) ) - face_to_q_vertex_coords = lazy_map(evaluate,face_s_q,subface_ref_coords) - face_s_q = lazy_map(Gridap.Fields.linear_combination,face_to_q_vertex_coords,face_to_shapefuns) - - tface_to_mface_map = face_s_q - mface_to_tface = nothing - Gridap.Geometry.FaceToFaceGlue(tface_to_mface,tface_to_mface_map,mface_to_tface) -end - -function Gridap.Geometry.get_facet_normal(trian::BoundaryTriangulation{Dc,Dp,A,<:FaceToCellGlueNonConforming}) where {Dc,Dp,A} - Gridap.Geometry.get_facet_normal(trian, trian.glue.face_to_cell_glue) -end - -function Gridap.Geometry.get_facet_normal(trian::BoundaryTriangulation, glue) - - cell_grid = Gridap.Geometry.get_grid(Gridap.Geometry.get_background_model(trian.trian)) - - ## Reference normal - function f(r) - p = Gridap.ReferenceFEs.get_polytope(r) - lface_to_n = Gridap.ReferenceFEs.get_facet_normal(p) - lface_to_pindex_to_perm = Gridap.ReferenceFEs.get_face_vertex_permutations(p,num_cell_dims(p)-1) - nlfaces = length(lface_to_n) - lface_pindex_to_n = [ fill(lface_to_n[lface],length(lface_to_pindex_to_perm[lface])) for lface in 1:nlfaces ] - lface_pindex_to_n - end - ctype_lface_pindex_to_nref = map(f, Gridap.Geometry.get_reffes(cell_grid)) - face_to_nref = Gridap.Geometry.FaceCompressedVector(ctype_lface_pindex_to_nref,glue) - face_s_nref = lazy_map(Gridap.Fields.constant_field,face_to_nref) - - # Inverse of the Jacobian transpose - cell_q_x = get_cell_map(cell_grid) - cell_q_Jt = lazy_map(∇,cell_q_x) - cell_q_invJt = lazy_map(Operation(Gridap.Fields.pinvJt),cell_q_Jt) - face_q_invJt = lazy_map(Reindex(cell_q_invJt),glue.face_to_cell) - - # Change of domain - D = num_cell_dims(cell_grid) - glue = get_glue(trian,Val(D)) - face_s_q = glue.tface_to_mface_map - face_s_invJt = lazy_map(∘,face_q_invJt,face_s_q) - face_s_n = lazy_map(Broadcasting(Operation(Gridap.Geometry.push_normal)),face_s_invJt,face_s_nref) - Gridap.Fields.MemoArray(face_s_n) -end - - MPI.Init() nprocs = MPI.Comm_size(MPI.COMM_WORLD) ranks = with_mpi() do distribute @@ -384,24 +26,6 @@ end fmodel,glue=adapt(dmodel,ref_coarse_flags); -function Gridap.Geometry.SkeletonTriangulation(model::Gridap.Adaptivity.AdaptedDiscreteModel{D}, - ncglue::GridapP4est.NonConformingGlue{D}) where {D} - trian = SkeletonTriangulation(Gridap.Adaptivity.get_model(model),ncglue) - return Gridap.Adaptivity.AdaptedTriangulation(trian,model) -end - -function Gridap.Geometry.SkeletonTriangulation( - portion,model::OctreeDistributedDiscreteModel{Dc};kwargs...) where Dc - gids = get_face_gids(model.dmodel,Dc) - trians = map(local_views(model.dmodel), - partition(gids), - model.non_conforming_glue) do model, gids, ncglue - trian=SkeletonTriangulation(model,ncglue) - GridapDistributed.filter_cells_when_needed(portion,gids,trian) - end - GridapDistributed.DistributedTriangulation(trians,model) -end - Λ=SkeletonTriangulation(fmodel) dΛ=Measure(Λ,2) @@ -424,8 +48,6 @@ end ∫(qh.plus)dΛ - - Λd=SkeletonTriangulation(dmodel) dΛd=Measure(Λd,2) From e4363cd166928285eaf8d9024d1132f05718e5f6 Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Wed, 20 Dec 2023 11:58:03 +1100 Subject: [PATCH 06/14] Removing working file test.jl --- test/test.jl | 112 --------------------------------------------------- 1 file changed, 112 deletions(-) delete mode 100644 test/test.jl diff --git a/test/test.jl b/test/test.jl deleted file mode 100644 index 24f9b57..0000000 --- a/test/test.jl +++ /dev/null @@ -1,112 +0,0 @@ -using Gridap -using PartitionedArrays -using GridapDistributed -using GridapP4est -using MPI -using FillArrays -using Test - -include("CoarseDiscreteModelsTools.jl") - -MPI.Init() -nprocs = MPI.Comm_size(MPI.COMM_WORLD) -ranks = with_mpi() do distribute - distribute(LinearIndices((prod(nprocs),))) -end - -coarse_model=setup_model(Val{2},1) -dmodel=OctreeDistributedDiscreteModel(ranks,coarse_model,1) - -ref_coarse_flags=map(ranks,partition(get_cell_gids(dmodel.dmodel))) do rank,indices - flags=zeros(Int,length(indices)) - flags.=nothing_flag - flags[2]=refine_flag - flags -end - -fmodel,glue=adapt(dmodel,ref_coarse_flags); - -Λ=SkeletonTriangulation(fmodel) -dΛ=Measure(Λ,2) - -Q = FESpace(fmodel, - ReferenceFE(lagrangian,Float64,1); - conformity=:L2) - -qh_dofs=pfill(1.0, partition(Q.gids)) -qh=FEFunction(Q,qh_dofs) - -dcm=∫(qh.minus)dΛ -dcp=∫(qh.plus)dΛ - - -Ω = Triangulation(fmodel) -map(local_views(∫(qh.minus)dΛ),local_views(Λ),local_views(Ω)) do dc,Λ,Ω - println(get_array(dc)) - Gridap.CellData.is_change_possible(Λ,Ω) -end - - ∫(qh.plus)dΛ - -Λd=SkeletonTriangulation(dmodel) -dΛd=Measure(Λd,2) - -Qd = FESpace(dmodel, - ReferenceFE(lagrangian,Float64,1); - conformity=:L2) - -qhd_dofs=pfill(1.0, partition(Qd.gids)) -qhd=FEFunction(Qd,qhd_dofs) - -∫(qhd.plus)dΛd - -# Now with DG -h = 2 -γ = 10 - - -Ω = Triangulation(fmodel) -#Γn = Boundary(fmodel,tags="neumann") -#n_Γn = get_normal_vector(Γn) - -k = 2 -dΩ = Measure(Ω,2*k) -u((x,y)) = (x+y)^k -f(x) = -Δ(u,x) -#g = n_Γn⋅∇(u) - -reffe = ReferenceFE(lagrangian,Float64,k) -V_dg = FESpace(fmodel,reffe,conformity=:L2) - -Λ = Skeleton(fmodel) -Γd = Boundary(fmodel,tags="boundary") - -dΛ = Measure(Λ,2*k) -dΓd = Measure(Γd,2*k) - -n_Γd = get_normal_vector(Γd) -n_Λ = get_normal_vector(Λ) - -v=get_fe_basis(V_dg) -ub=get_trial_fe_basis(V_dg) - -ub*n_Λ - -(γ/h)*jump(v*n_Λ)⋅jump(ub*n_Λ) - -a_dg(u,v) = - ∫( ∇(v)⋅∇(u) )*dΩ + - ∫( (γ/h)*v*u - v*(n_Γd⋅∇(u)) - (n_Γd⋅∇(v))*u )*dΓd + - ∫( (γ/h)*jump(v*n_Λ)⋅jump(u*n_Λ) - - jump(v*n_Λ)⋅mean(∇(u)) - - mean(∇(v))⋅jump(u*n_Λ) )*dΛ - -l_dg(v) = - ∫( v*f )*dΩ + - #∫( v*g )dΓn + - ∫( (γ/h)*v*u - (n_Γd⋅∇(v))*u )*dΓd - -op = AffineFEOperator(a_dg,l_dg,V_dg,V_dg) -uh = solve(op) -eh = u - uh -@test sqrt(sum( ∫(abs2(eh))dΩ )) < 1.0e-9 \ No newline at end of file From 43481c27461ee3a5276a7f4cd0f20302e604a45f Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Fri, 3 May 2024 21:32:54 +1000 Subject: [PATCH 07/14] Update Manifest --- Manifest.toml | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index 7b6cc06..daf0c34 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.9.1" manifest_format = "2.0" -project_hash = "3211ef80fdc2a2f6884783f8a902eccdd0433758" +project_hash = "dc7f8ef0ad963971c01d90a6c9f93300c4e2e589" [[deps.AbstractFFTs]] deps = ["LinearAlgebra"] @@ -240,9 +240,9 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" [[deps.FillArrays]] deps = ["LinearAlgebra"] -git-tree-sha1 = "bfe82a708416cf00b73a3198db0859c82f741558" +git-tree-sha1 = "57f08d5665e76397e96b168f9acc12ab17c84a68" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.10.0" +version = "1.10.2" [deps.FillArrays.extensions] FillArraysPDMatsExt = "PDMats" @@ -286,11 +286,11 @@ uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" [[deps.Gridap]] deps = ["AbstractTrees", "BSON", "BlockArrays", "Combinatorics", "DataStructures", "DocStringExtensions", "FastGaussQuadrature", "FileIO", "FillArrays", "ForwardDiff", "JLD2", "JSON", "LineSearches", "LinearAlgebra", "NLsolve", "NearestNeighbors", "PolynomialBases", "QuadGK", "Random", "SparseArrays", "SparseMatricesCSR", "StaticArrays", "Statistics", "Test", "WriteVTK"] -git-tree-sha1 = "8061628fd79c97ec1977b9a6b09204cb55edd8ae" +git-tree-sha1 = "3cfc8ec602aad3cd99b2ddb41820604c8b8537c5" repo-rev = "facet_integration_non_conforming_meshes" repo-url = "https://github.com/gridap/Gridap.jl" uuid = "56d4f2e9-7ea1-5844-9cf6-b9c51ca7ce8e" -version = "0.18.1" +version = "0.18.2" [[deps.GridapDistributed]] deps = ["BlockArrays", "FillArrays", "Gridap", "LinearAlgebra", "MPI", "PartitionedArrays", "SparseArrays", "SparseMatricesCSR", "WriteVTK"] @@ -306,9 +306,9 @@ version = "2.10.0+0" [[deps.IntelOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5fdf2fe6724d8caabf43b557b84ce53f3b7e2f6b" +git-tree-sha1 = "be50fe8df3acbffa0274a744f1a99d29c45a57f4" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2024.0.2+0" +version = "2024.1.0+0" [[deps.InteractiveUtils]] deps = ["Markdown"] @@ -411,10 +411,10 @@ version = "0.3.27" uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl"] -git-tree-sha1 = "72dc3cf284559eb8f53aa593fe62cb33f83ed0c0" +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] +git-tree-sha1 = "80b2833b56d466b3858d565adcd16a4a05f2089b" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2024.0.0+0" +version = "2024.1.0+0" [[deps.MPI]] deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] @@ -432,21 +432,21 @@ version = "0.20.19" [[deps.MPICH_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "656036b9ed6f942d35e536e249600bc31d0f9df8" +git-tree-sha1 = "d8a7bf80c88326ebc98b7d38437208c3a0f20725" uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.2.0+0" +version = "4.2.1+0" [[deps.MPIPreferences]] deps = ["Libdl", "Preferences"] -git-tree-sha1 = "8f6af051b9e8ec597fa09d8885ed79fd582f33c9" +git-tree-sha1 = "c105fe467859e7f6e9a852cb15cb4301126fac07" uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" -version = "0.1.10" +version = "0.1.11" [[deps.MPItrampoline_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "77c3bd69fdb024d75af38713e883d0f249ce19c2" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "3f884417b47a96d87e7c6219f8f7b30ce67f4f2c" uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.3.2+0" +version = "5.3.3+0" [[deps.MacroTools]] deps = ["Markdown", "Random"] @@ -788,6 +788,12 @@ deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" version = "1.48.0+0" +[[deps.oneTBB_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2021.12.0+0" + [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" From 02d5e3174eb8d9ea3f9babf57f2a6b450f71010b Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Thu, 29 Aug 2024 09:46:45 +1000 Subject: [PATCH 08/14] No need for manifest anymore --- Manifest.toml | 800 -------------------------------------------------- 1 file changed, 800 deletions(-) delete mode 100644 Manifest.toml diff --git a/Manifest.toml b/Manifest.toml deleted file mode 100644 index daf0c34..0000000 --- a/Manifest.toml +++ /dev/null @@ -1,800 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.9.1" -manifest_format = "2.0" -project_hash = "dc7f8ef0ad963971c01d90a6c9f93300c4e2e589" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - - [deps.AbstractFFTs.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.AbstractTrees]] -git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.5" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgParse]] -deps = ["Logging", "TextWrap"] -git-tree-sha1 = "d4eccacaa3a632e8717556479d45502af44b4c17" -uuid = "c7e460c6-2fb9-53a9-8c5b-16f535851c63" -version = "1.1.5" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "c5aeb516a84459e0318a02507d2261edad97eb75" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.7.1" - - [deps.ArrayInterface.extensions] - ArrayInterfaceBandedMatricesExt = "BandedMatrices" - ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" - ArrayInterfaceCUDAExt = "CUDA" - ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" - ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" - ArrayInterfaceTrackerExt = "Tracker" - - [deps.ArrayInterface.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ArrayLayouts]] -deps = ["FillArrays", "LinearAlgebra"] -git-tree-sha1 = "33207a8be6267bc389d0701e97a9bce6a4de68eb" -uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "1.9.2" -weakdeps = ["SparseArrays"] - - [deps.ArrayLayouts.extensions] - ArrayLayoutsSparseArraysExt = "SparseArrays" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.AutoHashEquals]] -deps = ["Pkg"] -git-tree-sha1 = "daaeb6f7f77b88c072a83a2451801818acb5c63b" -uuid = "15f4f7f2-30c1-5605-9d31-71845cf9641f" -version = "2.1.0" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.BlockArrays]] -deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra"] -git-tree-sha1 = "9a9610fbe5779636f75229e423e367124034af41" -uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" -version = "0.16.43" - -[[deps.CEnum]] -git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.4.2" - -[[deps.CircularArrays]] -deps = ["OffsetArrays"] -git-tree-sha1 = "e24a6f390e5563583bb4315c73035b5b3f3e7ab4" -uuid = "7a955b69-7140-5f4e-a0ed-f168c5e2e749" -version = "1.4.0" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.4" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "c955881e3c981181362ae4088b35995446298b80" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.14.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.2+0" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.5" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - - [deps.Distances.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.FFTW]] -deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" -uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.8.0" - -[[deps.FFTW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" -uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+0" - -[[deps.FastGaussQuadrature]] -deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "fd923962364b645f3719855c88f7074413a6ad92" -uuid = "442a2c76-b920-505d-bb47-c5924d526838" -version = "1.0.2" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "57f08d5665e76397e96b168f9acc12ab17c84a68" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.10.2" - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - - [deps.FillArrays.weakdeps] - PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] -git-tree-sha1 = "73d1214fec245096717847c62d389a5d2ac86504" -uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.22.0" - - [deps.FiniteDiff.extensions] - FiniteDiffBandedMatricesExt = "BandedMatrices" - FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" - FiniteDiffStaticArraysExt = "StaticArrays" - - [deps.FiniteDiff.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.Gridap]] -deps = ["AbstractTrees", "BSON", "BlockArrays", "Combinatorics", "DataStructures", "DocStringExtensions", "FastGaussQuadrature", "FileIO", "FillArrays", "ForwardDiff", "JLD2", "JSON", "LineSearches", "LinearAlgebra", "NLsolve", "NearestNeighbors", "PolynomialBases", "QuadGK", "Random", "SparseArrays", "SparseMatricesCSR", "StaticArrays", "Statistics", "Test", "WriteVTK"] -git-tree-sha1 = "3cfc8ec602aad3cd99b2ddb41820604c8b8537c5" -repo-rev = "facet_integration_non_conforming_meshes" -repo-url = "https://github.com/gridap/Gridap.jl" -uuid = "56d4f2e9-7ea1-5844-9cf6-b9c51ca7ce8e" -version = "0.18.2" - -[[deps.GridapDistributed]] -deps = ["BlockArrays", "FillArrays", "Gridap", "LinearAlgebra", "MPI", "PartitionedArrays", "SparseArrays", "SparseMatricesCSR", "WriteVTK"] -git-tree-sha1 = "53c27134cd80fabb3a845cbc588486444a2f0571" -uuid = "f9701e48-63b3-45aa-9a63-9bc6c271f355" -version = "0.4.0" - -[[deps.Hwloc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ca0f6bf568b4bfc807e7537f081c81e35ceca114" -uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.10.0+0" - -[[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "be50fe8df3acbffa0274a744f1a99d29c45a57f4" -uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2024.1.0+0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterativeSolvers]] -deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] -git-tree-sha1 = "59545b0a2b27208b0650df0a46b8e3019f85055b" -uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" -version = "0.9.4" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] -git-tree-sha1 = "5ea6acdd53a51d897672edb694e3cc2912f3f8a7" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.46" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.LightXML]] -deps = ["Libdl", "XML2_jll"] -git-tree-sha1 = "3a994404d3f6709610701c7dabfc03fed87a81f8" -uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179" -version = "0.9.1" - -[[deps.LineSearches]] -deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] -git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d" -uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.2.0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "18144f3e9cbe9b15b070288eef858f71b291ce37" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.27" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] -git-tree-sha1 = "80b2833b56d466b3858d565adcd16a4a05f2089b" -uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2024.1.0+0" - -[[deps.MPI]] -deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] -git-tree-sha1 = "4e3136db3735924f96632a5b40a5979f1f53fa07" -uuid = "da04e1cc-30fd-572f-bb4f-1f8673147195" -version = "0.20.19" - - [deps.MPI.extensions] - AMDGPUExt = "AMDGPU" - CUDAExt = "CUDA" - - [deps.MPI.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MPICH_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "d8a7bf80c88326ebc98b7d38437208c3a0f20725" -uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.2.1+0" - -[[deps.MPIPreferences]] -deps = ["Libdl", "Preferences"] -git-tree-sha1 = "c105fe467859e7f6e9a852cb15cb4301126fac07" -uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" -version = "0.1.11" - -[[deps.MPItrampoline_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "3f884417b47a96d87e7c6219f8f7b30ce67f4f2c" -uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.3.3+0" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" - -[[deps.MicrosoftMPI_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f12a29c4400ba812841c6ace3f4efbb6dbb3ba01" -uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.4+2" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" - -[[deps.NLSolversBase]] -deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" -uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.8.3" - -[[deps.NLsolve]] -deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"] -git-tree-sha1 = "019f12e9a1a7880459d0173c182e6a99365d7ac1" -uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" -version = "4.5.1" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NearestNeighbors]] -deps = ["Distances", "StaticArrays"] -git-tree-sha1 = "ded64ff6d4fdd1cb68dfcbb818c69e144a5b2e4c" -uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" -version = "0.4.16" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.OffsetArrays]] -git-tree-sha1 = "e64b4f5ea6b7389f6f046d13d4896a8f9c1ba71e" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.14.0" -weakdeps = ["Adapt"] - - [deps.OffsetArrays.extensions] - OffsetArraysAdaptExt = "Adapt" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" - -[[deps.OpenMPI_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "e25c1778a98e34219a00455d6e4384e017ea9762" -uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "4.1.6+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.P4est_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "Pkg", "TOML", "Zlib_jll"] -git-tree-sha1 = "70c2d9a33b8810198314a5722ee3e9520110b28d" -uuid = "6b5a15aa-cf52-5330-8376-5e5d90283449" -version = "2.8.1+2" - -[[deps.P4est_wrapper]] -deps = ["CEnum", "Libdl", "MPI", "P4est_jll"] -git-tree-sha1 = "149b5fa81221f2e51498428b688e4510e4a74d79" -uuid = "3743d7c0-8adf-11ea-380b-7d33b0ecc1da" -version = "0.2.2" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartitionedArrays]] -deps = ["CircularArrays", "Distances", "FillArrays", "IterativeSolvers", "LinearAlgebra", "MPI", "Printf", "Random", "SparseArrays", "SparseMatricesCSR"] -git-tree-sha1 = "149d2287770c6a533507d74beaa73d76c0727922" -uuid = "5a9dfac6-5c52-46f7-8278-5e2210713be9" -version = "0.3.4" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.0" - -[[deps.PkgVersion]] -deps = ["Pkg"] -git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" -uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" -version = "0.3.3" - -[[deps.PolynomialBases]] -deps = ["ArgCheck", "AutoHashEquals", "FFTW", "FastGaussQuadrature", "LinearAlgebra", "Requires", "SimpleUnPack", "SpecialFunctions"] -git-tree-sha1 = "aa1877430a7e8b0c7a35ea095c415d462af0870f" -uuid = "c74db56a-226d-5e98-8bb0-a6049094aeea" -version = "0.4.21" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.4" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA", "Serialization"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.SimpleUnPack]] -git-tree-sha1 = "58e6353e72cde29b90a69527e56df1b5c3d8c437" -uuid = "ce78b400-467f-4804-87d8-8f486da07d0a" -version = "1.1.0" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.SparseMatricesCSR]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "38677ca58e80b5cad2382e5a1848f93b054ad28d" -uuid = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" -version = "0.6.7" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.3.1" - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - - [deps.SpecialFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "bf074c045d3d5ffd956fa0a461da38a44685d6b2" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.3" - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - - [deps.StaticArrays.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.2" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TextWrap]] -git-tree-sha1 = "9250ef9b01b66667380cf3275b3f7488d0e25faf" -uuid = "b718987f-49a8-5099-9789-dcd902bef87d" -version = "1.0.1" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "71509f04d045ec714c4748c785a59045c3736349" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.7" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.VTKBase]] -git-tree-sha1 = "c2d0db3ef09f1942d08ea455a9e252594be5f3b6" -uuid = "4004b06d-e244-455f-a6ce-a5f9919cc534" -version = "1.0.1" - -[[deps.WriteVTK]] -deps = ["Base64", "CodecZlib", "FillArrays", "LightXML", "TranscodingStreams", "VTKBase"] -git-tree-sha1 = "48b9e8e9c83865e99e57f027d4edfa94e0acddae" -uuid = "64499a7a-5c06-52f2-abe2-ccb03c286192" -version = "1.19.1" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "532e22cf7be8462035d092ff21fada7527e2c488" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.12.6+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" - -[[deps.oneTBB_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" -uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" -version = "2021.12.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" From 25d0fa062b72532a8ed88c9d60b948104f6b4a04 Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Thu, 29 Aug 2024 09:47:20 +1000 Subject: [PATCH 09/14] Bumped Gridap.jl deps to 0.18.5 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index dbe28dd..b3057b5 100644 --- a/Project.toml +++ b/Project.toml @@ -17,7 +17,7 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] ArgParse = "1" FillArrays = "0.8.4, 0.9, 0.10, 0.11, 0.12, 1" -Gridap = "0.18.2" +Gridap = "0.18.5" GridapDistributed = "0.4" MPI = "0.20" P4est_wrapper = "0.2.2" From 9f47c6ac6c1d57aeedeccd87a6402702c94c3201 Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Thu, 29 Aug 2024 16:23:38 +1000 Subject: [PATCH 10/14] Adding Manifest again temporarily --- Manifest.toml | 796 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 796 insertions(+) create mode 100644 Manifest.toml diff --git a/Manifest.toml b/Manifest.toml new file mode 100644 index 0000000..55d6949 --- /dev/null +++ b/Manifest.toml @@ -0,0 +1,796 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.1" +manifest_format = "2.0" +project_hash = "b42a77eb17b53f16ce0bcb0d0a70d6aa007bb846" + +[[deps.AbstractFFTs]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" +uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" +version = "1.5.0" + + [deps.AbstractFFTs.extensions] + AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + AbstractFFTsTestExt = "Test" + + [deps.AbstractFFTs.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.AbstractTrees]] +git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.5" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.0.4" +weakdeps = ["StaticArrays"] + + [deps.Adapt.extensions] + AdaptStaticArraysExt = "StaticArrays" + +[[deps.ArgCheck]] +git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" +uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" +version = "2.3.0" + +[[deps.ArgParse]] +deps = ["Logging", "TextWrap"] +git-tree-sha1 = "22cf435ac22956a7b45b0168abbc871176e7eecc" +uuid = "c7e460c6-2fb9-53a9-8c5b-16f535851c63" +version = "1.2.0" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "c5aeb516a84459e0318a02507d2261edad97eb75" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.7.1" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.ArrayLayouts]] +deps = ["FillArrays", "LinearAlgebra"] +git-tree-sha1 = "0dd7edaff278e346eb0ca07a7e75c9438408a3ce" +uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" +version = "1.10.3" +weakdeps = ["SparseArrays"] + + [deps.ArrayLayouts.extensions] + ArrayLayoutsSparseArraysExt = "SparseArrays" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.AutoHashEquals]] +deps = ["Pkg"] +git-tree-sha1 = "daaeb6f7f77b88c072a83a2451801818acb5c63b" +uuid = "15f4f7f2-30c1-5605-9d31-71845cf9641f" +version = "2.1.0" + +[[deps.BSON]] +git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" +uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" +version = "0.3.9" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BlockArrays]] +deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra"] +git-tree-sha1 = "9a9610fbe5779636f75229e423e367124034af41" +uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" +version = "0.16.43" + +[[deps.CEnum]] +git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" +uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" +version = "0.4.2" + +[[deps.CircularArrays]] +deps = ["OffsetArrays"] +git-tree-sha1 = "e24a6f390e5563583bb4315c73035b5b3f3e7ab4" +uuid = "7a955b69-7140-5f4e-a0ed-f168c5e2e749" +version = "1.4.0" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "bce6804e5e6044c6daab27bb533d1295e4a2e759" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.6" + +[[deps.Combinatorics]] +git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" +uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" +version = "1.0.2" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools"] +git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.1" + +[[deps.Compat]] +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.16.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.2+0" + +[[deps.ConstructionBase]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "a33b7ced222c6165f624a3f2b55945fac5a598d9" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.5.7" + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseStaticArraysExt = "StaticArrays" + + [deps.ConstructionBase.weakdeps] + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.20" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.Distances]] +deps = ["LinearAlgebra", "Statistics", "StatsAPI"] +git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" +uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" +version = "0.10.11" + + [deps.Distances.extensions] + DistancesChainRulesCoreExt = "ChainRulesCore" + DistancesSparseArraysExt = "SparseArrays" + + [deps.Distances.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.FFTW]] +deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] +git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" +uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" +version = "1.8.0" + +[[deps.FFTW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" +uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" +version = "3.3.10+0" + +[[deps.FastGaussQuadrature]] +deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"] +git-tree-sha1 = "fd923962364b645f3719855c88f7074413a6ad92" +uuid = "442a2c76-b920-505d-bb47-c5924d526838" +version = "1.0.2" + +[[deps.FileIO]] +deps = ["Pkg", "Requires", "UUIDs"] +git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" +uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" +version = "1.16.3" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FillArrays]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "fd0002c0b5362d7eb952450ad5eb742443340d6e" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.12.0" + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" + + [deps.FillArrays.weakdeps] + PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.FiniteDiff]] +deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] +git-tree-sha1 = "73d1214fec245096717847c62d389a5d2ac86504" +uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" +version = "2.22.0" + + [deps.FiniteDiff.extensions] + FiniteDiffBandedMatricesExt = "BandedMatrices" + FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" + FiniteDiffStaticArraysExt = "StaticArrays" + + [deps.FiniteDiff.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.36" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[deps.Gridap]] +deps = ["AbstractTrees", "BSON", "BlockArrays", "Combinatorics", "DataStructures", "DocStringExtensions", "FastGaussQuadrature", "FileIO", "FillArrays", "ForwardDiff", "JLD2", "JSON", "LineSearches", "LinearAlgebra", "NLsolve", "NearestNeighbors", "PolynomialBases", "Preferences", "QuadGK", "Random", "SparseArrays", "SparseMatricesCSR", "StaticArrays", "Statistics", "Test", "WriteVTK"] +git-tree-sha1 = "efc1f4860ffcb06caf3b05716540f753fb75a5e8" +repo-rev = "facet_integration_non_conforming_meshes" +repo-url = "https://github.com/gridap/Gridap.jl" +uuid = "56d4f2e9-7ea1-5844-9cf6-b9c51ca7ce8e" +version = "0.18.5" + +[[deps.GridapDistributed]] +deps = ["BlockArrays", "FillArrays", "Gridap", "LinearAlgebra", "MPI", "PartitionedArrays", "SparseArrays", "SparseMatricesCSR", "WriteVTK"] +git-tree-sha1 = "72b7eb03a098c79860f8676bf3959449285516f5" +uuid = "f9701e48-63b3-45aa-9a63-9bc6c271f355" +version = "0.4.4" + +[[deps.Hwloc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "5e19e1e4fa3e71b774ce746274364aef0234634e" +uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" +version = "2.11.1+0" + +[[deps.IntelOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "14eb2b542e748570b56446f4c50fbfb2306ebc45" +uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" +version = "2024.2.0+0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.IterativeSolvers]] +deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] +git-tree-sha1 = "59545b0a2b27208b0650df0a46b8e3019f85055b" +uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" +version = "0.9.4" + +[[deps.JLD2]] +deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "PrecompileTools", "Requires", "TranscodingStreams"] +git-tree-sha1 = "049950edff105ff73918d29dbf109220ff364157" +uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" +version = "0.4.52" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.3" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "7.84.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.10.2+0" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + +[[deps.LightXML]] +deps = ["Libdl", "XML2_jll"] +git-tree-sha1 = "3a994404d3f6709610701c7dabfc03fed87a81f8" +uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179" +version = "0.9.1" + +[[deps.LineSearches]] +deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] +git-tree-sha1 = "e4c3be53733db1051cc15ecf573b1042b3a712a1" +uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" +version = "7.3.0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.28" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.MKL_jll]] +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] +git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f" +uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" +version = "2024.2.0+0" + +[[deps.MPI]] +deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] +git-tree-sha1 = "5465632f9dd11aea0d912cb64a6f80640092a33e" +uuid = "da04e1cc-30fd-572f-bb4f-1f8673147195" +version = "0.20.21" + + [deps.MPI.extensions] + AMDGPUExt = "AMDGPU" + CUDAExt = "CUDA" + + [deps.MPI.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + +[[deps.MPICH_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "19d4bd098928a3263693991500d05d74dbdc2004" +uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" +version = "4.2.2+0" + +[[deps.MPIPreferences]] +deps = ["Libdl", "Preferences"] +git-tree-sha1 = "c105fe467859e7f6e9a852cb15cb4301126fac07" +uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" +version = "0.1.11" + +[[deps.MPItrampoline_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "8c35d5420193841b2f367e658540e8d9e0601ed0" +uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" +version = "5.4.0+0" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.13" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.MicrosoftMPI_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f12a29c4400ba812841c6ace3f4efbb6dbb3ba01" +uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" +version = "10.1.4+2" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.NLSolversBase]] +deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] +git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" +uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" +version = "7.8.3" + +[[deps.NLsolve]] +deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"] +git-tree-sha1 = "019f12e9a1a7880459d0173c182e6a99365d7ac1" +uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" +version = "4.5.1" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + +[[deps.NearestNeighbors]] +deps = ["Distances", "StaticArrays"] +git-tree-sha1 = "91a67b4d73842da90b526011fa85c5c4c9343fe0" +uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" +version = "0.4.18" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OffsetArrays]] +git-tree-sha1 = "1a27764e945a152f7ca7efa04de513d473e9542e" +uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" +version = "1.14.1" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+0" + +[[deps.OpenMPI_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "e25c1778a98e34219a00455d6e4384e017ea9762" +uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" +version = "4.1.6+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.3" + +[[deps.P4est_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "Pkg", "TOML", "Zlib_jll"] +git-tree-sha1 = "70c2d9a33b8810198314a5722ee3e9520110b28d" +uuid = "6b5a15aa-cf52-5330-8376-5e5d90283449" +version = "2.8.1+2" + +[[deps.P4est_wrapper]] +deps = ["CEnum", "Libdl", "MPI", "P4est_jll"] +git-tree-sha1 = "d3730f758f8364d734dd35506ea3639db301d87a" +uuid = "3743d7c0-8adf-11ea-380b-7d33b0ecc1da" +version = "0.2.3" + +[[deps.Parameters]] +deps = ["OrderedCollections", "UnPack"] +git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" +uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" +version = "0.12.3" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.1" + +[[deps.PartitionedArrays]] +deps = ["CircularArrays", "Distances", "FillArrays", "IterativeSolvers", "LinearAlgebra", "MPI", "Printf", "Random", "SparseArrays", "SparseMatricesCSR"] +git-tree-sha1 = "149d2287770c6a533507d74beaa73d76c0727922" +uuid = "5a9dfac6-5c52-46f7-8278-5e2210713be9" +version = "0.3.4" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.0" + +[[deps.PkgVersion]] +deps = ["Pkg"] +git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" +uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" +version = "0.3.3" + +[[deps.PolynomialBases]] +deps = ["ArgCheck", "AutoHashEquals", "FFTW", "FastGaussQuadrature", "LinearAlgebra", "Requires", "SimpleUnPack", "SpecialFunctions"] +git-tree-sha1 = "b62fd0464edfffce54393cd617135af30fa47006" +uuid = "c74db56a-226d-5e98-8bb0-a6049094aeea" +version = "0.4.22" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.1" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.3" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "e237232771fdafbae3db5c31275303e056afaa9f" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.10.1" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.1" + +[[deps.SimpleUnPack]] +git-tree-sha1 = "58e6353e72cde29b90a69527e56df1b5c3d8c437" +uuid = "ce78b400-467f-4804-87d8-8f486da07d0a" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.SparseMatricesCSR]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "38677ca58e80b5cad2382e5a1848f93b054ad28d" +uuid = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" +version = "0.6.7" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.4.0" + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + + [deps.SpecialFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "eeafab08ae20c62c44c8399ccb9354a04b80db50" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.7" + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + + [deps.StaticArrays.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.3" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TextWrap]] +git-tree-sha1 = "43044b737fa70bc12f6105061d3da38f881a3e3c" +uuid = "b718987f-49a8-5099-9789-dcd902bef87d" +version = "1.0.2" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "e84b3a11b9bece70d14cce63406bbc79ed3464d2" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.11.2" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.UnPack]] +git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" +uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +version = "1.0.2" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.VTKBase]] +git-tree-sha1 = "c2d0db3ef09f1942d08ea455a9e252594be5f3b6" +uuid = "4004b06d-e244-455f-a6ce-a5f9919cc534" +version = "1.0.1" + +[[deps.WriteVTK]] +deps = ["Base64", "CodecZlib", "FillArrays", "LightXML", "TranscodingStreams", "VTKBase"] +git-tree-sha1 = "46664bb833f24e4fe561192e3753c9168c3b71b2" +uuid = "64499a7a-5c06-52f2-abe2-ccb03c286192" +version = "1.19.2" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "1165b0443d0eca63ac1e32b8c0eb69ed2f4f8127" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.13.3+0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.48.0+0" + +[[deps.oneTBB_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2021.12.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" From 398d12c2059b460bed02052a2053a5b606a7c0bc Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Thu, 29 Aug 2024 20:19:06 +1000 Subject: [PATCH 11/14] Added a new parameter with the pXest_refinement_rule_type to the VoidOctreeDistributedDiscreteModel constructor that receives the MPI ranks and the initial coarse model. This is required for redistribution purposes, namely when we redistribute a model from a subcommunicator to a larger communicator. We now require to know the pXest_refinement_rule_type in those processors in the larger communicator that do not belong to the subcommunicator. --- Manifest.toml | 2 +- src/OctreeDistributedDiscreteModels.jl | 12 +++++++----- test/OctreeDistributedDiscreteModelsTests.jl | 8 +++++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index 55d6949..4535647 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -286,7 +286,7 @@ uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" [[deps.Gridap]] deps = ["AbstractTrees", "BSON", "BlockArrays", "Combinatorics", "DataStructures", "DocStringExtensions", "FastGaussQuadrature", "FileIO", "FillArrays", "ForwardDiff", "JLD2", "JSON", "LineSearches", "LinearAlgebra", "NLsolve", "NearestNeighbors", "PolynomialBases", "Preferences", "QuadGK", "Random", "SparseArrays", "SparseMatricesCSR", "StaticArrays", "Statistics", "Test", "WriteVTK"] -git-tree-sha1 = "efc1f4860ffcb06caf3b05716540f753fb75a5e8" +git-tree-sha1 = "df5ac52e9d1f14e2f5c773a82f0e14c665009b3e" repo-rev = "facet_integration_non_conforming_meshes" repo-url = "https://github.com/gridap/Gridap.jl" uuid = "56d4f2e9-7ea1-5844-9cf6-b9c51ca7ce8e" diff --git a/src/OctreeDistributedDiscreteModels.jl b/src/OctreeDistributedDiscreteModels.jl index 5671330..6a7bd72 100644 --- a/src/OctreeDistributedDiscreteModels.jl +++ b/src/OctreeDistributedDiscreteModels.jl @@ -297,7 +297,7 @@ mutable struct OctreeDistributedDiscreteModel{Dc,Dp,A,B,C,D,E,F} <: GridapDistri ptr_pXest_connectivity, ptr_pXest, pXest_type::PXestType, - pXest_refinement_rule_type::Union{Nothing,PXestRefinementRuleType}, + pXest_refinement_rule_type::PXestRefinementRuleType, owns_ptr_pXest_connectivity::Bool, gc_ref) @@ -401,7 +401,7 @@ function OctreeDistributedDiscreteModel(parts::AbstractVector{<:Integer}, ## HUGE WARNING: Shouldn't we provide here the complementary of parts ## instead of parts? Otherwise, when calling _free!(...) ## we cannot trust on parts. - return VoidOctreeDistributedDiscreteModel(coarse_model,parts) + return VoidOctreeDistributedDiscreteModel(coarse_model,parts,PXestUniformRefinementRuleType()) end end @@ -415,7 +415,9 @@ end const VoidOctreeDistributedDiscreteModel{Dc,Dp,A,C,D} = OctreeDistributedDiscreteModel{Dc,Dp,A,Nothing,C,D,Nothing} -function VoidOctreeDistributedDiscreteModel(coarse_model::DiscreteModel{Dc,Dp},parts) where {Dc,Dp} +function VoidOctreeDistributedDiscreteModel(coarse_model::DiscreteModel{Dc,Dp}, + parts, + pXest_refinement_rule_type::PXestRefinementRuleType) where {Dc,Dp} ptr_pXest_connectivity = setup_pXest_connectivity(coarse_model) OctreeDistributedDiscreteModel(Dc, Dp, @@ -426,7 +428,7 @@ function VoidOctreeDistributedDiscreteModel(coarse_model::DiscreteModel{Dc,Dp},p ptr_pXest_connectivity, nothing, _dim_to_pXest_type(Dc), - nothing, + pXest_refinement_rule_type, true, nothing) end @@ -441,7 +443,7 @@ function VoidOctreeDistributedDiscreteModel(model::OctreeDistributedDiscreteMode model.ptr_pXest_connectivity, nothing, _dim_to_pXest_type(Dc), - nothing, + model.pXest_refinement_rule_type, false, model) end diff --git a/test/OctreeDistributedDiscreteModelsTests.jl b/test/OctreeDistributedDiscreteModelsTests.jl index c6446dd..30e0f90 100644 --- a/test/OctreeDistributedDiscreteModelsTests.jl +++ b/test/OctreeDistributedDiscreteModelsTests.jl @@ -64,9 +64,11 @@ module OctreeDistributedDiscreteModelsTests level_parts = generate_level_parts(ranks,num_parts_x_level) coarse_model = CartesianDiscreteModel(domain,nc) model = OctreeDistributedDiscreteModel(level_parts[2],coarse_model,1) - vmodel1 = GridapP4est.VoidOctreeDistributedDiscreteModel(model,ranks) - vmodel2 = GridapP4est.VoidOctreeDistributedDiscreteModel(coarse_model,ranks) - + vmodel1 = GridapP4est.VoidOctreeDistributedDiscreteModel(model, + ranks) + vmodel2 = GridapP4est.VoidOctreeDistributedDiscreteModel(coarse_model, + ranks, + GridapP4est.PXestUniformRefinementRuleType()) # Refining and distributing fmodel , rglue = refine(model,parts=level_parts[1]) dfmodel, dglue = redistribute(fmodel) From 636e1a319ca97a626c96ef80827724e6d50a5cc5 Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Fri, 30 Aug 2024 09:34:00 +1000 Subject: [PATCH 12/14] Removed Manifest again --- Manifest.toml | 796 -------------------------------------------------- 1 file changed, 796 deletions(-) delete mode 100644 Manifest.toml diff --git a/Manifest.toml b/Manifest.toml deleted file mode 100644 index 4535647..0000000 --- a/Manifest.toml +++ /dev/null @@ -1,796 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.9.1" -manifest_format = "2.0" -project_hash = "b42a77eb17b53f16ce0bcb0d0a70d6aa007bb846" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - - [deps.AbstractFFTs.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.AbstractTrees]] -git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.5" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgParse]] -deps = ["Logging", "TextWrap"] -git-tree-sha1 = "22cf435ac22956a7b45b0168abbc871176e7eecc" -uuid = "c7e460c6-2fb9-53a9-8c5b-16f535851c63" -version = "1.2.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "c5aeb516a84459e0318a02507d2261edad97eb75" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.7.1" - - [deps.ArrayInterface.extensions] - ArrayInterfaceBandedMatricesExt = "BandedMatrices" - ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" - ArrayInterfaceCUDAExt = "CUDA" - ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" - ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" - ArrayInterfaceTrackerExt = "Tracker" - - [deps.ArrayInterface.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ArrayLayouts]] -deps = ["FillArrays", "LinearAlgebra"] -git-tree-sha1 = "0dd7edaff278e346eb0ca07a7e75c9438408a3ce" -uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "1.10.3" -weakdeps = ["SparseArrays"] - - [deps.ArrayLayouts.extensions] - ArrayLayoutsSparseArraysExt = "SparseArrays" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.AutoHashEquals]] -deps = ["Pkg"] -git-tree-sha1 = "daaeb6f7f77b88c072a83a2451801818acb5c63b" -uuid = "15f4f7f2-30c1-5605-9d31-71845cf9641f" -version = "2.1.0" - -[[deps.BSON]] -git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" -uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" -version = "0.3.9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.BlockArrays]] -deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra"] -git-tree-sha1 = "9a9610fbe5779636f75229e423e367124034af41" -uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" -version = "0.16.43" - -[[deps.CEnum]] -git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.4.2" - -[[deps.CircularArrays]] -deps = ["OffsetArrays"] -git-tree-sha1 = "e24a6f390e5563583bb4315c73035b5b3f3e7ab4" -uuid = "7a955b69-7140-5f4e-a0ed-f168c5e2e749" -version = "1.4.0" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "bce6804e5e6044c6daab27bb533d1295e4a2e759" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.6" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools"] -git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.1" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.16.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.2+0" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "a33b7ced222c6165f624a3f2b55945fac5a598d9" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.7" - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - - [deps.ConstructionBase.weakdeps] - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.11" - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - - [deps.Distances.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.FFTW]] -deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" -uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.8.0" - -[[deps.FFTW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" -uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+0" - -[[deps.FastGaussQuadrature]] -deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "fd923962364b645f3719855c88f7074413a6ad92" -uuid = "442a2c76-b920-505d-bb47-c5924d526838" -version = "1.0.2" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.3" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "fd0002c0b5362d7eb952450ad5eb742443340d6e" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.12.0" - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - - [deps.FillArrays.weakdeps] - PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] -git-tree-sha1 = "73d1214fec245096717847c62d389a5d2ac86504" -uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.22.0" - - [deps.FiniteDiff.extensions] - FiniteDiffBandedMatricesExt = "BandedMatrices" - FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" - FiniteDiffStaticArraysExt = "StaticArrays" - - [deps.FiniteDiff.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.Gridap]] -deps = ["AbstractTrees", "BSON", "BlockArrays", "Combinatorics", "DataStructures", "DocStringExtensions", "FastGaussQuadrature", "FileIO", "FillArrays", "ForwardDiff", "JLD2", "JSON", "LineSearches", "LinearAlgebra", "NLsolve", "NearestNeighbors", "PolynomialBases", "Preferences", "QuadGK", "Random", "SparseArrays", "SparseMatricesCSR", "StaticArrays", "Statistics", "Test", "WriteVTK"] -git-tree-sha1 = "df5ac52e9d1f14e2f5c773a82f0e14c665009b3e" -repo-rev = "facet_integration_non_conforming_meshes" -repo-url = "https://github.com/gridap/Gridap.jl" -uuid = "56d4f2e9-7ea1-5844-9cf6-b9c51ca7ce8e" -version = "0.18.5" - -[[deps.GridapDistributed]] -deps = ["BlockArrays", "FillArrays", "Gridap", "LinearAlgebra", "MPI", "PartitionedArrays", "SparseArrays", "SparseMatricesCSR", "WriteVTK"] -git-tree-sha1 = "72b7eb03a098c79860f8676bf3959449285516f5" -uuid = "f9701e48-63b3-45aa-9a63-9bc6c271f355" -version = "0.4.4" - -[[deps.Hwloc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5e19e1e4fa3e71b774ce746274364aef0234634e" -uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.11.1+0" - -[[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "14eb2b542e748570b56446f4c50fbfb2306ebc45" -uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2024.2.0+0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterativeSolvers]] -deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] -git-tree-sha1 = "59545b0a2b27208b0650df0a46b8e3019f85055b" -uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" -version = "0.9.4" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "PrecompileTools", "Requires", "TranscodingStreams"] -git-tree-sha1 = "049950edff105ff73918d29dbf109220ff364157" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.52" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.LightXML]] -deps = ["Libdl", "XML2_jll"] -git-tree-sha1 = "3a994404d3f6709610701c7dabfc03fed87a81f8" -uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179" -version = "0.9.1" - -[[deps.LineSearches]] -deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] -git-tree-sha1 = "e4c3be53733db1051cc15ecf573b1042b3a712a1" -uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.3.0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] -git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f" -uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2024.2.0+0" - -[[deps.MPI]] -deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] -git-tree-sha1 = "5465632f9dd11aea0d912cb64a6f80640092a33e" -uuid = "da04e1cc-30fd-572f-bb4f-1f8673147195" -version = "0.20.21" - - [deps.MPI.extensions] - AMDGPUExt = "AMDGPU" - CUDAExt = "CUDA" - - [deps.MPI.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - -[[deps.MPICH_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "19d4bd098928a3263693991500d05d74dbdc2004" -uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.2.2+0" - -[[deps.MPIPreferences]] -deps = ["Libdl", "Preferences"] -git-tree-sha1 = "c105fe467859e7f6e9a852cb15cb4301126fac07" -uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" -version = "0.1.11" - -[[deps.MPItrampoline_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "8c35d5420193841b2f367e658540e8d9e0601ed0" -uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.4.0+0" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" - -[[deps.MicrosoftMPI_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f12a29c4400ba812841c6ace3f4efbb6dbb3ba01" -uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.4+2" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" - -[[deps.NLSolversBase]] -deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" -uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.8.3" - -[[deps.NLsolve]] -deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"] -git-tree-sha1 = "019f12e9a1a7880459d0173c182e6a99365d7ac1" -uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" -version = "4.5.1" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NearestNeighbors]] -deps = ["Distances", "StaticArrays"] -git-tree-sha1 = "91a67b4d73842da90b526011fa85c5c4c9343fe0" -uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" -version = "0.4.18" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.OffsetArrays]] -git-tree-sha1 = "1a27764e945a152f7ca7efa04de513d473e9542e" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.14.1" -weakdeps = ["Adapt"] - - [deps.OffsetArrays.extensions] - OffsetArraysAdaptExt = "Adapt" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" - -[[deps.OpenMPI_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "e25c1778a98e34219a00455d6e4384e017ea9762" -uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "4.1.6+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.P4est_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "Pkg", "TOML", "Zlib_jll"] -git-tree-sha1 = "70c2d9a33b8810198314a5722ee3e9520110b28d" -uuid = "6b5a15aa-cf52-5330-8376-5e5d90283449" -version = "2.8.1+2" - -[[deps.P4est_wrapper]] -deps = ["CEnum", "Libdl", "MPI", "P4est_jll"] -git-tree-sha1 = "d3730f758f8364d734dd35506ea3639db301d87a" -uuid = "3743d7c0-8adf-11ea-380b-7d33b0ecc1da" -version = "0.2.3" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" - -[[deps.PartitionedArrays]] -deps = ["CircularArrays", "Distances", "FillArrays", "IterativeSolvers", "LinearAlgebra", "MPI", "Printf", "Random", "SparseArrays", "SparseMatricesCSR"] -git-tree-sha1 = "149d2287770c6a533507d74beaa73d76c0727922" -uuid = "5a9dfac6-5c52-46f7-8278-5e2210713be9" -version = "0.3.4" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.0" - -[[deps.PkgVersion]] -deps = ["Pkg"] -git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" -uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" -version = "0.3.3" - -[[deps.PolynomialBases]] -deps = ["ArgCheck", "AutoHashEquals", "FFTW", "FastGaussQuadrature", "LinearAlgebra", "Requires", "SimpleUnPack", "SpecialFunctions"] -git-tree-sha1 = "b62fd0464edfffce54393cd617135af30fa47006" -uuid = "c74db56a-226d-5e98-8bb0-a6049094aeea" -version = "0.4.22" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "e237232771fdafbae3db5c31275303e056afaa9f" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.10.1" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA", "Serialization"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.SimpleUnPack]] -git-tree-sha1 = "58e6353e72cde29b90a69527e56df1b5c3d8c437" -uuid = "ce78b400-467f-4804-87d8-8f486da07d0a" -version = "1.1.0" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.SparseMatricesCSR]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "38677ca58e80b5cad2382e5a1848f93b054ad28d" -uuid = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" -version = "0.6.7" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - - [deps.SpecialFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "eeafab08ae20c62c44c8399ccb9354a04b80db50" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.7" - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - - [deps.StaticArrays.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TextWrap]] -git-tree-sha1 = "43044b737fa70bc12f6105061d3da38f881a3e3c" -uuid = "b718987f-49a8-5099-9789-dcd902bef87d" -version = "1.0.2" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "e84b3a11b9bece70d14cce63406bbc79ed3464d2" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.11.2" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.VTKBase]] -git-tree-sha1 = "c2d0db3ef09f1942d08ea455a9e252594be5f3b6" -uuid = "4004b06d-e244-455f-a6ce-a5f9919cc534" -version = "1.0.1" - -[[deps.WriteVTK]] -deps = ["Base64", "CodecZlib", "FillArrays", "LightXML", "TranscodingStreams", "VTKBase"] -git-tree-sha1 = "46664bb833f24e4fe561192e3753c9168c3b71b2" -uuid = "64499a7a-5c06-52f2-abe2-ccb03c286192" -version = "1.19.2" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "1165b0443d0eca63ac1e32b8c0eb69ed2f4f8127" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.3+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" - -[[deps.oneTBB_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" -uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" -version = "2021.12.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" From 49b71bc58ed531121015f7420ddc7d892f9c3951 Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Fri, 30 Aug 2024 09:34:33 +1000 Subject: [PATCH 13/14] Bump Gridap version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index b3057b5..1c39130 100644 --- a/Project.toml +++ b/Project.toml @@ -17,7 +17,7 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] ArgParse = "1" FillArrays = "0.8.4, 0.9, 0.10, 0.11, 0.12, 1" -Gridap = "0.18.5" +Gridap = "0.18.6" GridapDistributed = "0.4" MPI = "0.20" P4est_wrapper = "0.2.2" From d247687fdb8a2c5fa14388589ecbb049ee566822 Mon Sep 17 00:00:00 2001 From: "Alberto F. Martin" Date: Fri, 30 Aug 2024 09:39:57 +1000 Subject: [PATCH 14/14] Reactivating CG tests --- test/PoissonNonConformingOctreeModelsTests.jl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/PoissonNonConformingOctreeModelsTests.jl b/test/PoissonNonConformingOctreeModelsTests.jl index 7c2cf57..b473628 100644 --- a/test/PoissonNonConformingOctreeModelsTests.jl +++ b/test/PoissonNonConformingOctreeModelsTests.jl @@ -454,16 +454,16 @@ module PoissonNonConformingOctreeModelsTests for Dc=2:3, perm in (1,2,4), order=(1,2), scalar_or_vector in (:scalar,) test(ranks,Val{Dc},perm,order,:dg,_field_type(Val{Dc}(),scalar_or_vector)) end - # for Dc=2:3, perm in (1,2), order in (1,4), scalar_or_vector in (:vector,) - # test(ranks,Val{Dc},perm,order,:cg,_field_type(Val{Dc}(),scalar_or_vector)) - # end + for Dc=2:3, perm in (1,2), order in (1,4), scalar_or_vector in (:vector,) + test(ranks,Val{Dc},perm,order,:cg,_field_type(Val{Dc}(),scalar_or_vector)) + end for order=2:2, scalar_or_vector in (:scalar,) test_2d(ranks,order,:dg,_field_type(Val{2}(),scalar_or_vector), num_amr_steps=5) test_3d(ranks,order,:dg,_field_type(Val{3}(),scalar_or_vector), num_amr_steps=4) end - # for order=2:2, scalar_or_vector in (:scalar,:vector) - # test_2d(ranks,order,:cg,_field_type(Val{2}(),scalar_or_vector), num_amr_steps=5) - # test_3d(ranks,order,:cg,_field_type(Val{3}(),scalar_or_vector), num_amr_steps=4) - # end + for order=2:2, scalar_or_vector in (:scalar,:vector) + test_2d(ranks,order,:cg,_field_type(Val{2}(),scalar_or_vector), num_amr_steps=5) + test_3d(ranks,order,:cg,_field_type(Val{3}(),scalar_or_vector), num_amr_steps=4) + end end end