-
Notifications
You must be signed in to change notification settings - Fork 95
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
Solution blow-up for Stokes problem #828
Comments
Hi @ConnorMallon can you try with larger values of the integration degree |
Hey @fverdugo! The problem still remains after increasing |
Hey @oriolcg , have you ever had a problem similar to this when solving for flow problems in a channel ? If I solve the Stokes problem in a channel I get the same solution blowup on the Neumann boundary when using a fine mesh: module StokesChannel
using Test
using Gridap
import Gridap: ∇
u_in((x,y)) = VectorValue(y*(1-y),0)
u_s(x) = VectorValue(0,0)
hN(x) = VectorValue(0,0)
domain = (0,4,0,1)
partition = (400,100)
model = CartesianDiscreteModel(domain,partition)
labels = get_face_labeling(model)
add_tag_from_tags!(labels,"inlet",[1,3,7])
add_tag_from_tags!(labels,"no_slip",[2,4,5,6,])
add_tag_from_tags!(labels,"outlet",[8])
order = 2
reffe_u = ReferenceFE(lagrangian,VectorValue{2,Float64},order)
reffe_p = ReferenceFE(lagrangian,Float64,order-1)
V = TestFESpace(model,reffe_u,labels=labels,dirichlet_tags=["inlet","no_slip"],conformity=:H1)
Q = TestFESpace(model,reffe_p,labels=labels,conformity=:H1)
U = TrialFESpace(V,[u_in,u_s])
P = TrialFESpace(Q)
Y = MultiFieldFESpace([V,Q])
X = MultiFieldFESpace([U,P])
Ω = Triangulation(model)
Γ = BoundaryTriangulation(model,labels,tags="outlet")
n_Γ = get_normal_vector(Γ)
degree = order
dΩ = Measure(Ω,degree)
dΓ = Measure(Γ,degree)
a((u,p),(v,q)) = ∫( ∇(v)⊙∇(u) - (∇⋅v)*p + q*(∇⋅u) )*dΩ
l((v,q)) = ∫( v⋅hN )*dΓ
op = AffineFEOperator(a,l,X,Y)
uh, ph = solve(op)
writevtk(Ω,"stokes_sol",cellfields=["uh"=>uh,"ph"=>ph])
end # module Not that the blowup doesn't occur for courser meshes. The problem goes away with P0 elements for the pressure. |
problem is related to the linear solver. change the ls or add terms in the bottom right block to avoid the issue (e.g. |
Refining the mesh in
![image](https://user-images.githubusercontent.com/54877270/190304752-88b14efa-3998-4c2d-8113-24c49107f67e.png)
test/GridapTests/StokesTaylorHoodTests.jl
( to e.g.partition = (200,200)
) results in some unexpected behaviour. The solution blows up at some locations on the boundary:The driver reproducing the results:
The text was updated successfully, but these errors were encountered: