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

Implementing new elements in Gridap #402

Open
bhaveshshrimali opened this issue Sep 10, 2020 · 2 comments
Open

Implementing new elements in Gridap #402

bhaveshshrimali opened this issue Sep 10, 2020 · 2 comments

Comments

@bhaveshshrimali
Copy link

bhaveshshrimali commented Sep 10, 2020

Hi @fverdugo @santiagobadia,

In the meanwhile I try on getting a MWE on #400 , I wanted to ask about implementing new elements in Gridap. Specifically I wanted to implement and test the Crouzeix-Raviart elements, both conforming and non-conforming, in 2D/3D for incompressible hyperelasticity. These can be useful for applications in heterogeneous systems, where there is a discontinuity in stress/pressure. The standard Taylor-hood elements might offer poor convergence.

How much change in the FE pipeline is required to implement/test new elements in Gridap? If you can guide, then I can also take a stab at implementing these once I have a broad idea on the pipeline, and specifically where to make changes.

Thanks

@fverdugo
Copy link
Member

@bhaveshshrimali

Yes, it is easy to add new finite elements in Gridap, the code is designed to do this (and other) extensions. It would be very nice if you can add new ones!

Take a look at the sources of the Gridap.ReferenceFEs module. The doc strings are quite decent for this part. So, I think you will figure out how to add the new elements by you own.

We have an abstract interface for reference FEs, which shows which are the methods to be implemented by new reference FEs:

abstract type ReferenceFE{D} <: GridapType end

However, In many situations, you do not need to implement a new struct that inherents from ReferenceFE. You just need to fill a GenericReferenceFE with the corresponding objects. Take a look on how RT elements are implemented:

function RaviartThomasRefFE(::Type{et},p::Polytope,order::Integer) where et

@bhaveshshrimali
Copy link
Author

Sounds good !! Thanks a lot for the pointers. I will start taking a look at this soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants