-
Notifications
You must be signed in to change notification settings - Fork 2
Alternative discretizations #48
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
base: master
Are you sure you want to change the base?
Conversation
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #48 +/- ##
========================================
Coverage 0.00% 0.00%
========================================
Files 19 27 +8
Lines 2220 3396 +1176
========================================
- Misses 2220 3396 +1176
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
I'm getting an error with GMG in Hunt problem. The command mpirun -n 4 julia --project=. -e 'using GridapPETSc; using SparseMatricesCSR; using SparseArrays; using GridapMHD:hunt;
hunt(
nc=(4,4),
np=(2,2),
backend=:mpi,
L=1.0,
B=(0.,50.,0.),
debug=false,
vtk=true,
title="hunt-H1H1-gmg",
solver= Dict(
:solver => :h1h1blocks,
:matrix_type => SparseMatrixCSC{Float64,Int},
:vector_type => Vector{Float64},
:block_solvers => [:gmg,:julia,:julia],
:petsc_options => "-ksp_error_if_not_converged true -ksp_converged_reason"
),
fluid_disc = :Qk_dPkm1,
current_disc = :H1,
ranks_per_level = [(2,2,1),(2,2,1)],
ζᵤ = 10.0
)
'gives this output ...
[7.805e+00 s in MAIN] fe_spaces
┌ Error:
│ exception =
│ ArgumentError: Collection is empty, must contain exactly 1 element
│ Stacktrace:
│ [1] _only
│ @ ./iterators.jl:1550 [inlined]
│ [2] only
│ @ ./iterators.jl:1545 [inlined]
│ [3] #1
│ @ ~/.julia/packages/GridapSolvers/gqvqX/src/PatchBasedSmoothers/PatchTransferOperators.jl:25 [inlined]
│ [4] iterate
│ @ ./generator.jl:48 [inlined]
│ [5] _collect(c::Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, itr::Base.Generator{Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, GridapSolvers.PatchBasedSmoothers.var"#1#4"{Gridap.Arrays.Table{Int32, Vector{Int32}, Vector{Int32}}, GridapSolvers.PatchBasedSmoothers.var"#is_interior#3"{Vector{Int32}}}}, ::Base.EltypeUnknown, isz::Base.HasShape{1})
│ @ Base ./array.jl:800
│ [6] collect_similar(cont::Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, itr::Base.Generator{Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, GridapSolvers.PatchBasedSmoothers.var"#1#4"{Gridap.Arrays.Table{Int32, Vector{Int32}, Vector{Int32}}, GridapSolvers.PatchBasedSmoothers.var"#is_interior#3"{Vector{Int32}}}})
│ @ Base ./array.jl:709
│ [7] map(f::Function, A::Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}})
│ @ Base ./abstractarray.jl:3371
│ [8] CoarsePatchTopology(model::Gridap.Adaptivity.AdaptedDiscreteModel{3, 3, Gridap.Geometry.CartesianDiscreteModel{3, Float64, GridapMHD.Meshers.var"#map1#19"{Float64, Float64, Float64}}, Gridap.Geometry.CartesianDiscreteModel{3, Float64, GridapMHD.Meshers.var"#map1#19"{Float64, Float64, Float64}}, Gridap.Adaptivity.AdaptivityGlue{Gridap.Adaptivity.RefinementGlue, 3, Vector{Vector{Int64}}, Vector{Int64}, FillArrays.Fill{Gridap.Adaptivity.RefinementRule{Gridap.ReferenceFEs.ExtrusionPolytope{3}}, 1, Tuple{Base.OneTo{Int64}}}, Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, FillArrays.Fill{Bool, 1, Tuple{Base.OneTo{Int64}}}}}, coarse_ids::Vector{Int32})
│ @ GridapSolvers.PatchBasedSmoothers ~/.julia/packages/GridapSolvers/gqvqX/src/PatchBasedSmoothers/PatchTransferOperators.jl:23
│ [9] #6
│ @ ~/.julia/packages/GridapSolvers/gqvqX/src/PatchBasedSmoothers/PatchTransferOperators.jl:36 [inlined]
...@JordiManyer am I doing something wrong? Full log: Detailsmpirun -n 4 julia --project=. -e 'using GridapPETSc; using SparseMatricesCSR; using SparseArrays; using GridapMHD:hunt;
hunt(
nc=(4,4),
np=(2,2),
backend=:mpi,
L=1.0,
B=(0.,50.,0.),
debug=false,
vtk=true,
title="hunt-H1H1-gmg",
solver= Dict(
:solver => :h1h1blocks,
:matrix_type => SparseMatrixCSC{Float64,Int},
:vector_type => Vector{Float64},
:block_solvers => [:gmg,:julia,:julia],
:petsc_options => "-ksp_error_if_not_converged true -ksp_converged_reason"
),
fluid_disc = :Qk_dPkm1,
current_disc = :H1,
ranks_per_level = [(2,2,1),(2,2,1)],
ζᵤ = 10.0
)
'
No protocol specified
┌ Info: 2-level CartesianModelHierarchy:
│ > Level 1: 8x8x3 CartesianDescriptor distributed in 2x2x1 ranks
└ > Level 2: 4x4x3 CartesianDescriptor distributed in 2x2x1 ranks
[8.786e+00 s in MAIN] pre_process
┌ Info: Parameters ::
│ > x0 => zero
│ > debug => false
│ > multigrid => {
│ > tests => {
│ }
│ > trials => {
│ }
│ > num_refs_coarse => 0
│ }
│ > jac_assemble => false
│ > bcs => {
│ > φ => {
│ > values => 0.0
│ > tags => conducting
│ }
│ > j => {
│ > values => (0.0, 0.0, 0.0)
│ > tags => insulating
│ }
│ > u => {
│ > values => (0.0, 0.0, 0.0)
│ > tags => noslip
│ }
│ }
│ > solve => true
│ > solid => nothing
│ > fespaces => {
│ > φ_conformity => H1
│ > fluid_disc => Qk_dPkm1
│ > φ_constraint => nothing
│ > u_conformity => H1
│ > p_constraint => nothing
│ > order_u => 2
│ > order_φ => 2
│ > j_conformity => L2
│ > k => 2
│ > order_p => 1
│ > rt_scaling => nothing
│ > q => 5
│ > current_disc => H1
│ > p_conformity => L2
│ > order_j => 2
│ > formulation => H1H1
│ }
│ > solver => {
│ > petsc_options => -ksp_error_if_not_converged true -ksp_converged_reason
│ > rtol => 1.0e-10
│ > atol => 1.0e-8
│ > solver => h1h1blocks
│ > niter => 20
│ > niter_ls => 15
│ }
│ > fluid => {
│ > α => 1.0
│ > B => (0.0, 1.0, 0.0)
│ > domain => nothing
│ > μ => 10.0
│ > σ => 1.0
│ > convection => newton
│ > ζⱼ => 0.0
│ > g => (0.0, 0.0, 0.0)
│ > β => 1.0
│ > ζᵤ => 10.0
│ > γ => 2500.0
│ > f => (0.0, 0.0, 1.0)
│ > divg => 0.0
│ }
│ > check_valid => true
│ > continuation => nothing
│ > transient => nothing
└ > res_assemble => false
[7.805e+00 s in MAIN] fe_spaces
┌ Error:
│ exception =
│ ArgumentError: Collection is empty, must contain exactly 1 element
│ Stacktrace:
│ [1] _only
│ @ ./iterators.jl:1550 [inlined]
│ [2] only
│ @ ./iterators.jl:1545 [inlined]
│ [3] #1
│ @ ~/.julia/packages/GridapSolvers/gqvqX/src/PatchBasedSmoothers/PatchTransferOperators.jl:25 [inlined]
│ [4] iterate
│ @ ./generator.jl:48 [inlined]
│ [5] _collect(c::Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, itr::Base.Generator{Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, GridapSolvers.PatchBasedSmoothers.var"#1#4"{Gridap.Arrays.Table{Int32, Vector{Int32}, Vector{Int32}}, GridapSolvers.PatchBasedSmoothers.var"#is_interior#3"{Vector{Int32}}}}, ::Base.EltypeUnknown, isz::Base.HasShape{1})
│ @ Base ./array.jl:800
│ [6] collect_similar(cont::Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, itr::Base.Generator{Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, GridapSolvers.PatchBasedSmoothers.var"#1#4"{Gridap.Arrays.Table{Int32, Vector{Int32}, Vector{Int32}}, GridapSolvers.PatchBasedSmoothers.var"#is_interior#3"{Vector{Int32}}}})
│ @ Base ./array.jl:709
│ [7] map(f::Function, A::Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}})
│ @ Base ./abstractarray.jl:3371
│ [8] CoarsePatchTopology(model::Gridap.Adaptivity.AdaptedDiscreteModel{3, 3, Gridap.Geometry.CartesianDiscreteModel{3, Float64, GridapMHD.Meshers.var"#map1#19"{Float64, Float64, Float64}}, Gridap.Geometry.CartesianDiscreteModel{3, Float64, GridapMHD.Meshers.var"#map1#19"{Float64, Float64, Float64}}, Gridap.Adaptivity.AdaptivityGlue{Gridap.Adaptivity.RefinementGlue, 3, Vector{Vector{Int64}}, Vector{Int64}, FillArrays.Fill{Gridap.Adaptivity.RefinementRule{Gridap.ReferenceFEs.ExtrusionPolytope{3}}, 1, Tuple{Base.OneTo{Int64}}}, Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, FillArrays.Fill{Bool, 1, Tuple{Base.OneTo{Int64}}}}}, coarse_ids::Vector{Int32})
│ @ GridapSolvers.PatchBasedSmoothers ~/.julia/packages/GridapSolvers/gqvqX/src/PatchBasedSmoothers/PatchTransferOperators.jl:23
│ [9] #6
│ @ ~/.julia/packages/GridapSolvers/gqvqX/src/PatchBasedSmoothers/PatchTransferOperators.jl:36 [inlined]
│ [10] map(::GridapSolvers.PatchBasedSmoothers.var"#6#7", ::PartitionedArrays.MPIArray{Gridap.Adaptivity.AdaptedDiscreteModel{3, 3, Gridap.Geometry.CartesianDiscreteModel{3, Float64, GridapMHD.Meshers.var"#map1#19"{Float64, Float64, Float64}}, Gridap.Geometry.CartesianDiscreteModel{3, Float64, GridapMHD.Meshers.var"#map1#19"{Float64, Float64, Float64}}, Gridap.Adaptivity.AdaptivityGlue{Gridap.Adaptivity.RefinementGlue, 3, Vector{Vector{Int64}}, Vector{Int64}, FillArrays.Fill{Gridap.Adaptivity.RefinementRule{Gridap.ReferenceFEs.ExtrusionPolytope{3}}, 1, Tuple{Base.OneTo{Int64}}}, Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, FillArrays.Fill{Bool, 1, Tuple{Base.OneTo{Int64}}}}}, 1}, ::PartitionedArrays.MPIArray{PartitionedArrays.PermutedLocalIndices{PartitionedArrays.LocalIndicesWithConstantBlockSize{3}}, 1})
│ @ PartitionedArrays ~/.julia/packages/PartitionedArrays/py6uo/src/mpi_array.jl:229
│ [11] CoarsePatchTopology(model::GridapDistributed.GenericDistributedDiscreteModel{3, 3, PartitionedArrays.MPIArray{Gridap.Adaptivity.AdaptedDiscreteModel{3, 3, Gridap.Geometry.CartesianDiscreteModel{3, Float64, GridapMHD.Meshers.var"#map1#19"{Float64, Float64, Float64}}, Gridap.Geometry.CartesianDiscreteModel{3, Float64, GridapMHD.Meshers.var"#map1#19"{Float64, Float64, Float64}}, Gridap.Adaptivity.AdaptivityGlue{Gridap.Adaptivity.RefinementGlue, 3, Vector{Vector{Int64}}, Vector{Int64}, FillArrays.Fill{Gridap.Adaptivity.RefinementRule{Gridap.ReferenceFEs.ExtrusionPolytope{3}}, 1, Tuple{Base.OneTo{Int64}}}, Gridap.Arrays.Table{Int64, Vector{Int64}, Vector{Int64}}, FillArrays.Fill{Bool, 1, Tuple{Base.OneTo{Int64}}}}}, 1}, Vector{PartitionedArrays.PRange}, GridapDistributed.DistributedAdaptedDiscreteModelCache{GridapDistributed.DistributedCartesianDescriptor{PartitionedArrays.MPIArray{Int64, 1}, Tuple{Int64, Int64, Int64}, Gridap.Geometry.CartesianDescriptor{3, Float64, GridapMHD.Meshers.var"#map1#19"{Float64, Float64, Float64}}}, GridapDistributed.DistributedCartesianDescriptor{PartitionedArrays.MPIArray{Int64, 1}, Tuple{Int64, Int64, Int64}, Gridap.Geometry.CartesianDescriptor{3, Float64, GridapMHD.Meshers.var"#map1#19"{Float64, Float64, Float64}}}, PartitionedArrays.PRange{PartitionedArrays.MPIArray{PartitionedArrays.PermutedLocalIndices{PartitionedArrays.LocalIndicesWithConstantBlockSize{3}}, 1}}}})
│ @ GridapSolvers.PatchBasedSmoothers ~/.julia/packages/GridapSolvers/gqvqX/src/PatchBasedSmoothers/PatchTransferOperators.jl:35
│ [12] (::GridapMHD.var"#73#74"{GridapSolvers.MultilevelTools.FESpaceHierarchy{Vector{GridapSolvers.MultilevelTools.FESpaceHierarchyLevel{A, Nothing} where A}, Vector{Union{GridapDistributed.MPIVoidVector{Int64}, PartitionedArrays.MPIArray{Int64, 1}}}, GridapSolvers.MultilevelTools.FESpaceHierarchyLevel{A, Nothing} where A}, GridapMHD.var"#weakform#76"{Dict{Symbol, Any}}})(lev::Int64)
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/Solvers/gmg.jl:66
│ [13] (::GridapSolvers.MultilevelTools.var"#11#12"{GridapMHD.var"#73#74"{GridapSolvers.MultilevelTools.FESpaceHierarchy{Vector{GridapSolvers.MultilevelTools.FESpaceHierarchyLevel{A, Nothing} where A}, Vector{Union{GridapDistributed.MPIVoidVector{Int64}, PartitionedArrays.MPIArray{Int64, 1}}}, GridapSolvers.MultilevelTools.FESpaceHierarchyLevel{A, Nothing} where A}, GridapMHD.var"#weakform#76"{Dict{Symbol, Any}}}})(ranks::PartitionedArrays.MPIArray{Int64, 1}, ai::Int64)
│ @ GridapSolvers.MultilevelTools ~/.julia/packages/GridapSolvers/gqvqX/src/MultilevelTools/HierarchicalArrays.jl:109
│ [14] #4
│ @ ./generator.jl:37 [inlined]
│ [15] iterate
│ @ ./generator.jl:48 [inlined]
│ [16] collect(itr::Base.Generator{Base.Iterators.Zip{Tuple{SubArray{Union{GridapDistributed.MPIVoidVector{Int64}, PartitionedArrays.MPIArray{Int64, 1}}, 1, Vector{Union{GridapDistributed.MPIVoidVector{Int64}, PartitionedArrays.MPIArray{Int64, 1}}}, Tuple{UnitRange{Int64}}, true}, SubArray{Int64, 1, LinearIndices{1, Tuple{Base.OneTo{Int64}}}, Tuple{UnitRange{Int64}}, true}}}, Base.var"#4#5"{GridapSolvers.MultilevelTools.var"#11#12"{GridapMHD.var"#73#74"{GridapSolvers.MultilevelTools.FESpaceHierarchy{Vector{GridapSolvers.MultilevelTools.FESpaceHierarchyLevel{A, Nothing} where A}, Vector{Union{GridapDistributed.MPIVoidVector{Int64}, PartitionedArrays.MPIArray{Int64, 1}}}, GridapSolvers.MultilevelTools.FESpaceHierarchyLevel{A, Nothing} where A}, GridapMHD.var"#weakform#76"{Dict{Symbol, Any}}}}}})
│ @ Base ./array.jl:780
│ [17] map
│ @ ./abstractarray.jl:3495 [inlined]
│ [18] map(f::GridapMHD.var"#73#74"{GridapSolvers.MultilevelTools.FESpaceHierarchy{Vector{GridapSolvers.MultilevelTools.FESpaceHierarchyLevel{A, Nothing} where A}, Vector{Union{GridapDistributed.MPIVoidVector{Int64}, PartitionedArrays.MPIArray{Int64, 1}}}, GridapSolvers.MultilevelTools.FESpaceHierarchyLevel{A, Nothing} where A}, GridapMHD.var"#weakform#76"{Dict{Symbol, Any}}}, a::GridapSolvers.MultilevelTools.HierarchicalArray{Int64, SubArray{Int64, 1, LinearIndices{1, Tuple{Base.OneTo{Int64}}}, Tuple{UnitRange{Int64}}, true}, SubArray{Union{GridapDistributed.MPIVoidVector{Int64}, PartitionedArrays.MPIArray{Int64, 1}}, 1, Vector{Union{GridapDistributed.MPIVoidVector{Int64}, PartitionedArrays.MPIArray{Int64, 1}}}, Tuple{UnitRange{Int64}}, true}})
│ @ GridapSolvers.MultilevelTools ~/.julia/packages/GridapSolvers/gqvqX/src/MultilevelTools/HierarchicalArrays.jl:107
│ [19] gmg_patch_prolongations(tests::GridapSolvers.MultilevelTools.FESpaceHierarchy{Vector{GridapSolvers.MultilevelTools.FESpaceHierarchyLevel{A, Nothing} where A}, Vector{Union{GridapDistributed.MPIVoidVector{Int64}, PartitionedArrays.MPIArray{Int64, 1}}}, GridapSolvers.MultilevelTools.FESpaceHierarchyLevel{A, Nothing} where A}, weakform::GridapMHD.var"#weakform#76"{Dict{Symbol, Any}})
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/Solvers/gmg.jl:62
│ [20] gmg_solver(::Val{:H1H1}, ::Val{:h1h1blocks}, params::Dict{Symbol, Any})
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/Solvers/gmg.jl:94
│ [21] get_block_solver(::Val{:gmg}, params::Dict{Symbol, Any})
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/Solvers/gmg.jl:5
│ [22] (::GridapMHD.var"#97#99"{Dict{Symbol, Any}})(s::Symbol)
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/Solvers/h1h1blocks.jl:15
│ [23] iterate
│ @ ./generator.jl:48 [inlined]
│ [24] _collect(c::Vector{Symbol}, itr::Base.Generator{Vector{Symbol}, GridapMHD.var"#97#99"{Dict{Symbol, Any}}}, ::Base.EltypeUnknown, isz::Base.HasShape{1})
│ @ Base ./array.jl:800
│ [25] collect_similar(cont::Vector{Symbol}, itr::Base.Generator{Vector{Symbol}, GridapMHD.var"#97#99"{Dict{Symbol, Any}}})
│ @ Base ./array.jl:709
│ [26] map(f::Function, A::Vector{Symbol})
│ @ Base ./abstractarray.jl:3371
│ [27] H1H1BlockSolver(op::Gridap.FESpaces.FEOperatorFromWeakForm, params::Dict{Symbol, Any})
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/Solvers/h1h1blocks.jl:15
│ [28] _solver(::Val{:h1h1blocks}, op::Gridap.FESpaces.FEOperatorFromWeakForm, params::Dict{Symbol, Any})
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/main.jl:190
│ [29] _solver(op::Gridap.FESpaces.FEOperatorFromWeakForm, params::Dict{Symbol, Any})
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/main.jl:174
│ [30] main(_params::Dict{Symbol, Any}; output::Dict{Symbol, Any})
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/main.jl:147
│ [31] (::GridapMHD.var"#111#112"{Dict{Symbol, Any}})()
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/Applications/hunt.jl:201
│ [32] with(f::GridapMHD.var"#111#112"{Dict{Symbol, Any}}; kwargs::@Kwargs{args::Vector{SubString{String}}})
│ @ GridapPETSc ~/.julia/packages/GridapPETSc/iYLxh/src/Environment.jl:38
│ [33] _hunt(; distribute::PartitionedArrays.var"#88#89"{MPI.Comm, Bool}, rank_partition::Tuple{Int64, Int64}, nc::Tuple{Int64, Int64}, ν::Float64, ρ::Float64, σ::Float64, B::Tuple{Float64, Float64, Float64}, f::Tuple{Float64, Float64, Float64}, ζᵤ::Float64, ζⱼ::Float64, μ::Int64, L::Float64, u0::Float64, B0::Float64, σw1::Float64, σw2::Float64, tw::Float64, order::Int64, order_j::Int64, nsums::Int64, vtk::Bool, title::String, path::String, debug::Bool, res_assemble::Bool, jac_assemble::Bool, solve::Bool, solver::Dict{Symbol, Any}, formulation::Symbol, initial_value::Symbol, rt_scaling::Bool, verbose::Bool, BL_adapted::Bool, kmap_x::Int64, kmap_y::Int64, ranks_per_level::Vector{Tuple{Int64, Int64, Int64}}, adaptivity_method::Int64, fluid_disc::Symbol, current_disc::Symbol)
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/Applications/hunt.jl:200
│ [34] _hunt
│ @ ~/Prog/GridapMHD.jl/src/Applications/hunt.jl:41 [inlined]
│ [35] #105
│ @ ~/Prog/GridapMHD.jl/src/Applications/hunt.jl:23 [inlined]
│ [36] with_mpi(f::GridapMHD.var"#105#108"{Tuple{Int64, Int64}, String, @Kwargs{nc::Tuple{Int64, Int64}, L::Float64, B::Tuple{Float64, Float64, Float64}, debug::Bool, vtk::Bool, solver::Dict{Symbol, Any}, fluid_disc::Symbol, current_disc::Symbol, ranks_per_level::Vector{Tuple{Int64, Int64, Int64}}, ζᵤ::Float64}, String}; comm::MPI.Comm, duplicate_comm::Bool)
│ @ PartitionedArrays ~/.julia/packages/PartitionedArrays/py6uo/src/mpi_array.jl:73
│ [37] with_mpi
│ @ ~/.julia/packages/PartitionedArrays/py6uo/src/mpi_array.jl:64 [inlined]
│ [38] hunt(; backend::Symbol, np::Tuple{Int64, Int64}, title::String, nruns::Int64, path::String, kwargs::@Kwargs{nc::Tuple{Int64, Int64}, L::Float64, B::Tuple{Float64, Float64, Float64}, debug::Bool, vtk::Bool, solver::Dict{Symbol, Any}, fluid_disc::Symbol, current_disc::Symbol, ranks_per_level::Vector{Tuple{Int64, Int64, Int64}}, ζᵤ::Float64})
│ @ GridapMHD ~/Prog/GridapMHD.jl/src/Applications/hunt.jl:22
│ [39] top-level scope
│ @ none:2
│ [40] eval
│ @ ./boot.jl:430 [inlined]
│ [41] exec_options(opts::Base.JLOptions)
│ @ Base ./client.jl:296
│ [42] _start()
│ @ Base ./client.jl:531
└ @ PartitionedArrays ~/.julia/packages/PartitionedArrays/py6uo/src/mpi_array.jl:75
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
with errorcode 1.
NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
|
|
Can you update all branches and try again? |
|
Already done, cavity works. Could periodic mesh be an issue? BTW, cavity only works with PETSc 3.23.4 but not with 3.15.4, seems to be a requirement of GridapSolvers, I remember you mentioned it. Could it be interesting to add a message elsewhere? Let me know whether you want me to open an issue about this, I could still reproduce the error I get with 3.15.4. |
Ok yeah, the periodic meshes thing makes sense. I'll have a look.
Has nothing to do with GridapSolvers, it has to do with GridapPETSc. Basically the old version only worked with old versions of PETSc. I did changes to make it work with newer versions of PETSc, but it made old versions break. I have a new PR open in GridapPETSc, with some nice changes to how memory is handled. Can you try to use that to see if it makes a difference? Otherwise I can just add a comment in GridapPETSc's documentation, I don't think it's a big deal since one can simply update PETSc. |
|
This works for me: using Gridap
using Gridap.Geometry, Gridap.Arrays
using GridapSolvers
using GridapSolvers: PatchBasedSmoothers
using PartitionedArrays, GridapDistributed
parts = (2,2,1)
ranks = with_debug() do distribute
distribute(LinearIndices((prod(parts),)))
end
cmodel = CartesianDiscreteModel((0,1,0,1),(5,5);isperiodic=(true,true))
cmodel = CartesianDiscreteModel(ranks,parts,(0,1,0,1,0,1),(4,4,3);isperiodic=(false,false,true))
model = Gridap.Adaptivity.refine(cmodel)
glue = Gridap.Adaptivity.get_adaptivity_glue(model)
ptopo = PatchBasedSmoothers.CoarsePatchTopology(model);so I think you did not update all your branches like I suggested. Can you do go into your environment and update all your packages? |
|
Confirmed. Hunt with isotropic refinement (0a1dad9) runs. |
Adds support and solvers for the H1-H1 and HDiv-HDiv discretizations of the MHD equations.
Requires: