[ANN] Gridap.jl: A feature-rich Finite Element ecosystem 100% in Julia

Just come back from JuliaCon, really nice work for the Gridap.

I just met the same issue as johnh.
Regarding it, I think it would be much better to note in README Gmsh sdk is needed rather than Gmsh itself. Otherwise the sentence gmsh_jl = joinpath(gmsh_root,"lib","gmsh.jl") won’t work.

2 Likes

Yes, we need to clarify this.

In any way, an artifact would be even better!

1 Like

Great package, love the simple API!
I would really like to see importing hexahedra (and pyramids) work in the future. I had a look at the code, but could not get my head around the index juggling

Have you tried it for hexs? Which kind of error do you get? Perhaps you can open an issue in GitHub - gridap/GridapGmsh.jl: Gmsh generated meshes for Gridap

1 Like

Is this supposed to work? It saw this issue opened by yourself:
https://github.com/gridap/GridapGmsh.jl/issues/3
so I concluded this is not in a working state. I get errors like this for quad and hex meshes:
ERROR: BoundsError: attempt to access 1365-element Array{Int64,1} at index [0]
for meshes that open perfectly fine in gmsh.

Yes, the issue is correct. Hex meshes are not suposed to work at the moment. I assume that the fix should not be very difficult.

1 Like

Impressive work! I am now reading the tutorial and codes learn how to use it. I am wondering that if linear constrains on DoF of nodes can be set in the Gridap now. If so some speical boundary condition, i.e. periodic boundary condition, can be implemented. Thanks!

The answer is yes, yes.

For periodic conditions (now only for Cartesian meshes)

dimain = (0,1,0,1,0,0.01)
cells = (4,4,3)
model = CartesianDiscreteModel(domain,cells;isperiodic=(false,false,true))

For linear DOF constraints:

https://github.com/gridap/Gridap.jl/blob/master/test/FESpacesTests/FESpacesWithLinearConstraintsTests.jl

hope it helps

Is it, or will it be, possible to have nonlinear boundary conditions in Gridap? Like for example grad(u)*n = u^4, or grad(u)*n = u/(u+1)?

Yes, sure. You only need to include n_Γ⋅∇(u) - f(u) in your residual, by doing something like this:

n_Γ = get_normal_vector(trian_Γ)
@law f(u) = u^4
t_Γ = FETerm( (u,v) ->  v*(n_Γ⋅∇(u) - f(u)) , trian_Γ,quad_Γ)

where trian_Γ is the BoundaryTriangulation instance of your boundary, and quad_Γ the corresponding CellQuadrature. Do not forget to add the term t_Γ when creating the FEOperator.

1 Like