Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Distributed P-refinement GMG #5

Merged
merged 5 commits into from
Feb 3, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Minor changes
JordiManyer committed Feb 3, 2023

Unverified

This user has not yet uploaded their public signing key.
commit ddd0b690657cec00e11304f9cb56fe686dff1c6a
3 changes: 1 addition & 2 deletions src/LinearSolvers/GMGLinearSolvers.jl
Original file line number Diff line number Diff line change
@@ -236,9 +236,8 @@ function apply_GMG_level!(lev::Integer,xh::Union{PVector,Nothing},rh::Union{PVec
# Interpolate dxH in finer space
mul!(dxh,interp,dxH)

# Update solution
# Update solution & residual
xh .= xh .+ dxh
# Update residual
mul!(Adxh, Ah, dxh)
rh .= rh .- Adxh

1 change: 0 additions & 1 deletion src/LinearSolvers/LinearSolvers.jl
Original file line number Diff line number Diff line change
@@ -5,7 +5,6 @@ using LinearAlgebra
using Gridap
using Gridap.Algebra
using PartitionedArrays
using GridapP4est
using GridapPETSc

using GridapSolvers.MultilevelTools
36 changes: 0 additions & 36 deletions src/MultilevelTools/GridapDistributedExtensions.jl
Original file line number Diff line number Diff line change
@@ -34,42 +34,6 @@ function change_parts(::Type{<:GridapDistributed.DistributedCellField},x,new_par
return GridapDistributed.DistributedCellField(fields)
end

"""
function change_parts(::Type{<:GridapDistributed.DistributedSingleFieldFEFunction},x,new_parts)
if isa(x,GridapDistributed.DistributedSingleFieldFEFunction)
fields = change_parts(local_views(x),new_parts)
metadata = GridapDistributed.DistributedFEFunctionData(change_parts(x.metadata.free_values,new_parts))
else
fields = change_parts(nothing,new_parts;default=void(CellField))
metadata = GridapDistributed.DistributedFEFunctionData(change_parts(nothing,new_parts;default=Float64[]))
end
return GridapDistributed.DistributedCellField(fields,metadata)
end
"""

"""
function change_parts(::Type{<:PRange},x::Union{PRange,Nothing}, new_parts)
if isa(x,PRange)
ngids = x.ngids
partition = change_parts(x.partition,new_parts;default=void(IndexSet))
exchanger = x.exchanger
gid_to_part = x.gid_to_part
ghost = x.ghost
else
ngids = 0
partition = change_parts(nothing,new_parts;default=void(IndexSet))
exchanger = empty_exchanger(new_parts)
gid_to_part = nothing
ghost = false
end
return PRange(ngids,partition,exchanger,gid_to_part,ghost)
end

function void(::Type{IndexSet})
return IndexSet(0,Int[],Int32[],Int32[],Int32[],Int32[],Dict{Int,Int32}())
end
"""

# DistributedFESpaces

function get_test_space(U::GridapDistributed.DistributedSingleFieldFESpace)
1 change: 0 additions & 1 deletion src/MultilevelTools/MultilevelTools.jl
Original file line number Diff line number Diff line change
@@ -15,7 +15,6 @@ using GridapDistributed

import LinearAlgebra: mul!
import GridapDistributed: local_views
import GridapP4est: i_am_in, i_am_main


export change_parts
17 changes: 0 additions & 17 deletions src/MultilevelTools/RefinementTools.jl
Original file line number Diff line number Diff line change
@@ -1,21 +1,4 @@

# DistributedRefinedDiscreteModels

const DistributedAdaptedDiscreteModel{Dc,Dp} = GridapDistributed.DistributedDiscreteModel{Dc,Dp,<:AbstractPData{<:AdaptedDiscreteModel{Dc,Dp}}}

function DistributedAdaptedDiscreteModel(model::GridapDistributed.AbstractDistributedDiscreteModel,
parent::GridapDistributed.AbstractDistributedDiscreteModel,
glue::AbstractPData{<:AdaptivityGlue})
models = map_parts(local_views(model),local_views(parent),glue) do model, parent, glue
AdaptedDiscreteModel(model,parent,glue)
end
return GridapDistributed.DistributedDiscreteModel(models,get_cell_gids(model))
end

function Gridap.Adaptivity.get_adaptivity_glue(model::DistributedAdaptedDiscreteModel)
return map_parts(Gridap.Adaptivity.get_adaptivity_glue,local_views(model))
end

# DistributedAdaptedTriangulations

const DistributedAdaptedTriangulation{Dc,Dp} = GridapDistributed.DistributedTriangulation{Dc,Dp,<:AbstractPData{<:AdaptedTriangulation{Dc,Dp}}}
2 changes: 1 addition & 1 deletion test/mpi/DistributedGridTransferOperatorsTests.jl
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ function run(parts,num_parts_x_level,coarse_grid_partition,num_refs_coarse)
u(x) = x[1] + x[2]
reffe = ReferenceFE(lagrangian,Float64,order)

tests = TestFESpace(mh,reffe,dirichlet_tags="boundary")
tests = TestFESpace(mh,reffe;dirichlet_tags="boundary")
trials = TrialFESpace(tests,u)

qdegree = order*2+1
2 changes: 1 addition & 1 deletion test/mpi/GMGLinearSolversHDivRTTests.jl
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ function main(parts, coarse_grid_partition, num_parts_x_level, num_refs_coarse,

qdegree = 2*(order+1)
reffe = ReferenceFE(raviart_thomas,Float64,order)
tests = TestFESpace(mh,reffe,dirichlet_tags="boundary")
tests = TestFESpace(mh,reffe;dirichlet_tags="boundary")
trials = TrialFESpace(tests,u)

biform(u,v,dΩ) = ∫(v⋅u)dΩ + ∫(α*divergence(v)⋅divergence(u))dΩ
2 changes: 1 addition & 1 deletion test/mpi/GMGLinearSolversLaplacianTests.jl
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ function main(parts, coarse_grid_partition, num_parts_x_level, num_refs_coarse,

qdegree = 2*(order+1)
reffe = ReferenceFE(lagrangian,Float64,order)
tests = TestFESpace(mh,reffe,conformity=:H1,dirichlet_tags="boundary")
tests = TestFESpace(mh,reffe;conformity=:H1,dirichlet_tags="boundary")
trials = TrialFESpace(tests,u)

biform(u,v,dΩ) = ∫(v*u)dΩ + ∫(α*∇(v)⋅∇(u))dΩ
2 changes: 1 addition & 1 deletion test/mpi/GMGLinearSolversMUMPSTests.jl
Original file line number Diff line number Diff line change
@@ -49,7 +49,7 @@ function main(parts, coarse_grid_partition, num_parts_x_level, num_refs_coarse,

qdegree = 2*(order+1)
reffe = ReferenceFE(lagrangian,Float64,order)
tests = TestFESpace(mh,reffe,conformity=:H1,dirichlet_tags="boundary")
tests = TestFESpace(mh,reffe;conformity=:H1,dirichlet_tags="boundary")
trials = TrialFESpace(tests,u)

biform(u,v,dΩ) = ∫(∇(v)⋅∇(u))dΩ
2 changes: 1 addition & 1 deletion test/mpi/GMGLinearSolversPoissonTests.jl
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ function main(parts, coarse_grid_partition, num_parts_x_level, num_refs_coarse,

qdegree = 2*(order+1)
reffe = ReferenceFE(lagrangian,Float64,order)
tests = TestFESpace(mh,reffe,conformity=:H1,dirichlet_tags="boundary")
tests = TestFESpace(mh,reffe;conformity=:H1,dirichlet_tags="boundary")
trials = TrialFESpace(tests,u)

biform(u,v,dΩ) = ∫(∇(v)⋅∇(u))dΩ
2 changes: 1 addition & 1 deletion test/mpi/GMGLinearSolversVectorLaplacianTests.jl
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ function main(parts, coarse_grid_partition, num_parts_x_level, num_refs_coarse,

qdegree = 2*(order+1)
reffe = ReferenceFE(lagrangian,VectorValue{2,Float64},order)
tests = TestFESpace(mh,reffe,conformity=:H1,dirichlet_tags="boundary")
tests = TestFESpace(mh,reffe;conformity=:H1,dirichlet_tags="boundary")
trials = TrialFESpace(tests,u)

biform(u,v,dΩ) = ∫(v⋅u)dΩ + ∫(α*∇(v)⊙∇(u))dΩ
2 changes: 1 addition & 1 deletion test/mpi/RefinementToolsTests.jl
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ function run(parts,num_parts_x_level,coarse_grid_partition,num_refs_coarse)
order = 1
sol(x) = x[1] + x[2]
reffe = ReferenceFE(lagrangian,Float64,order)
tests = TestFESpace(mh,reffe,conformity=:H1,dirichlet_tags="boundary")
tests = TestFESpace(mh,reffe;conformity=:H1,dirichlet_tags="boundary")
trials = TrialFESpace(tests,sol)

quad_order = 3*order+1
2 changes: 1 addition & 1 deletion test/mpi/RestrictDofsTests.jl
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ function main(parts, coarse_grid_partition, num_parts_x_level, num_refs_coarse,

qdegree = 2*(order+1)
reffe = ReferenceFE(lagrangian,Float64,order)
tests = TestFESpace(mh,reffe,conformity=:H1,dirichlet_tags="boundary")
tests = TestFESpace(mh,reffe;conformity=:H1,dirichlet_tags="boundary")
trials = TrialFESpace(tests,u)

biform(u,v,dΩ) = ∫(∇(v)⋅∇(u))dΩ
2 changes: 1 addition & 1 deletion test/mpi/RichardsonSmoothersTests.jl
Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@ function main(parts,partition)
order = 1
qorder = order*2 + 1
reffe = ReferenceFE(lagrangian,Float64,order)
Vh = TestFESpace(model,reffe,conformity=:H1,dirichlet_tags="boundary")
Vh = TestFESpace(model,reffe;conformity=:H1,dirichlet_tags="boundary")
Uh = TrialFESpace(Vh,sol)
u = interpolate(sol,Uh)