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

GSoC 2021: A fast finite element interpolator in Gridap.jl #5

Open
Balaje opened this issue Mar 19, 2021 · 17 comments
Open

GSoC 2021: A fast finite element interpolator in Gridap.jl #5

Balaje opened this issue Mar 19, 2021 · 17 comments
Labels

Comments

@Balaje
Copy link

Balaje commented Mar 19, 2021

Hi all,

I am Balaje, a PhD student in Mathematics. Saw the project list for Gridap.jl for GSoC 2021. I am interested in the topic - Gridap.jl data-driven applications via Flux.jl and wish to contribute. I have good experience implementing numerical methods for solving PDEs in other languages but new to Julia and Flux.

Thanks,
Balaje

P.S: A general question on the application process. Are the projects limited to the ones listed on the ideas page? Can we propose an idea as a student? Thanks.

@ericneiva ericneiva added applicant GSOC 2021 Google Summer of Code 2021 labels Mar 19, 2021
@ericneiva
Copy link
Member

Hi, @Balaje, thanks for your interest! Having experience implementing NMs 4 PDEs will definitely make up for being new into Julia. So, do not hesitate to apply 🙂

Regarding your question, we encourage you to bring forward your own proposal, based on, e.g., your research interests. Please, share your idea with us on this issue. We can help you adjusting it to a suitable GSOC proposal for Gridap.

Best regards,
Eric

@Balaje
Copy link
Author

Balaje commented Mar 19, 2021

Hi, @ericneiva,

Thanks for your reply. I am interested in exploring more on the Virtual Element Methods and their applications - I was thinking about implementing the higher-order Virtual Element Methods in Gridap on polygonal meshes. I have done some implementation for VEM (second-order) in MATLAB on polygonal meshes, including some error computations (you find the code here). I am wondering if I could try and build a package for this in Gridap and extend this to the data-driven applications project.

Regards,
Balaje

@ericneiva
Copy link
Member

Great, @Balaje, we'll have a look at it and will contact you soon!

@ericneiva
Copy link
Member

Hi, @Balaje, I have spoken with @santiagobadia, co-mentor of the GridapFlux.jl idea, on a GSOC proposal on VEM.

Although we are very interested in this functionality, the amount of effort and expertise required in Gridap go well beyond the scope of a GSOC proposal, e.g. it requires significant changes in the API. We think having VEM in Gridap is a task better suited for a bigger project.

I will be happy to read about any other ideas you want to put forward, either related to GridapFlux.jl or not. Please, keep in mind that any idea should fit the time frame of GSOC and be adequate for an entry-level developer in Gridap.

Cheers!

@Balaje
Copy link
Author

Balaje commented Mar 23, 2021

Thanks, @ericneiva. I understand. I am still interested in the original topic of developing GridapFlux.jl and would like to submit a proposal on that. It's a good opportunity for me to work on the intersection of data science and PDE.

Cheers,
Balaje

@santiagobadia
Copy link
Member

Hi @Balaje

As you can see in Gridap, we can deal with finite element and standard DG schemes.

Hybridised formulations require another workflow, with cell-wise solvers and skeleton/bulk spaces interacting in a form that involves cell-interior and cell-boundary terms. That is something we don't have yet in the high-level API. As @ericneiva said, we are not sure it is realistic as a 2 month project for getting started.

In any case, we are working on an implementation of hybridised formulations. When we have the machinery working (e.g., for HDG or HHO), we can contact you to implement the VEM method. That will be more realistic. But we are simply not there yet.

@Balaje
Copy link
Author

Balaje commented Mar 23, 2021

Hi @santiagobadia

I am not sure how the HDG/HHO method works, but I just had a skim through this article here - https://arxiv.org/pdf/1703.05136.pdf and it seems that the HHO method uses the L^2 and elliptic projectors like VEM. I was wondering how close are these projectors to the VEM setting?

Maybe you may have this already - but perhaps instead of the full VEM in Julia, I could start by constructing these local projection operators. Would this be a realistic 2-month project?

Cheers,
Balaje

@santiagobadia
Copy link
Member

Hi @Balaje

E.g., HHO is a conforming version of (conforming) VEM. Usually conforming means harder implementation. With a collaborator, we are working on an ongoing implementation of hybrid methods now, so we decided not to include it as a GSoC, because 1) it requires a deep understanding of Gridap and 2) not to be forced to finish this dev before the GSoC starts. When we will have this machinery, we can try to use it for VEM. The VEM extension of what we are doing would be a nice project for you, but still challenging (I think VEM is at another level of complexity compared to HHO due to the conformity). You can write a VEM project for GSoC if you like and we can mentor, but it comes with some uncertainty (the hybrid work we are doing now should be finished before starting).

If you want to write a project on this, it would make use of a new workflow in Gridap that permits to define cell-wise solvers that involve 1) hybrid unknowns defined on the mesh skeleton and 2) unknowns defined on the bulk of the cell. The space in 1) can be conforming, so suitable for the (conforming) VEM. We will also need to implement (recursively, for increasing facet dimensions) the shape functions on the boundary. We can also consider other topics like how to deal with polytopal meshes in Gridap (we have a version that relies on simplicial submeshes). Just some ideas... and probably try to define a target problem for this dev. A research output would certainly be motivating.

Think about it and we can have a chat if you want to proceed. It seems you are in Australia, it simplifies things...

@Balaje
Copy link
Author

Balaje commented Mar 24, 2021

Hi @santiagobadia, @ericneiva,

I feel like I can do it - however, I understand that the Hybrid work needs to be finished before I begin working on the project. It is good in a way - since I get enough time to understand Gridap in the meantime. I can start to work on this right away. My plan for this would be to spend the next few days (3-4 days) understanding the basics - and by looking at it a little bit now, it seems to work quite like FreeFem. I could even try to solve a simple example problem from my research to give myself a quicker start.

After this comes the hard part when I go through Gridap/src to understand the working. For this, a good starting point would be helpful. It would be great to have a chat to get a little bit clearer about the workflow. I also have some questions regarding building the local solvers on the polytopes.

I am very much keen to get this started! Yes. I am currently in Newcastle. It should make things a lot easier!

Thanks,
Balaje

@Balaje
Copy link
Author

Balaje commented Mar 27, 2021

Hi @santiagobadia, @ericneiva,

I have been working with Gridap for the last couple of days to understand the syntax and the general workflow in Gridap/Julia. Here is my first attempt at solving an ice-shelf vibration problem for simple geometries using Gridap - https://github.com/Balaje/Gridap-Ice. It is an example of an FSI problem. The boundary condition on the fluid region of this problem takes the form of an integral equation that relates the normal derivative and the potential function. This is a problem I am currently working on as part of my PhD. I was able to find the solution using Gridap and also validate it by comparing it with an analytic solution. Gridap is great and simple to use! Most of the FEM workflow carries over directly from FreeFem.

Here are some ideas I've been thinking about:

  • Is there a way to get the interpolation matrix between the spaces defined on two different meshes, like in FreeFem https://doc.freefem.org/documentation/finite-element.html#interpolation-matrix? FreeFem also offers a way to perform an interpolation of functions between any two spaces by a simple "=" operator. You can find the details of it on the FreeFem website here: https://doc.freefem.org/documentation/finite-element.html#a-fast-finite-element-interpolator,
    I was wondering whether there is a simple FreeFem-esque way in Gridap. If it is not available yet, I could probably think of implementing this feature.

  • VEM, as you mentioned may take time due to the ongoing development of HHO. I am keen on developing VEM and if the new workflow is ready, I could work on extending that. I am also interested to know how to handle the integration over the polytope. Right now, I divide up the polygon into triangles and use quadratures on triangles and then add them up, which may not be the best way to do it. As you mentioned, this could be a part of the question on how to handle polytopal meshes on Gridap. If the workflow is not ready yet, VEM could be a great long term project.

  • This is more of an applied problem, where I could build a Gridap based package for studying wave-induced ice-shelf vibration problems. I have solved this using FreeFem (https://github.com/Balaje/iceFem). I think it might be cool to extend this to Gridap. Right now, I solve this only for a single body; I have been thinking of modelling interaction between multiple bodies.

These are some ideas I had in my mind for the past couple of days while using Gridap. Please let me know what you think. We could also have a chat to discuss this in detail.

Cheers,
Balaje

@ericneiva
Copy link
Member

ericneiva commented Mar 29, 2021

Hi, @Balaje,

Great to see you were able to implement an application in Gridap on your own! Thanks for the positive feedback!

Maybe the best thing we can do is to arrange a meeting to go briefly through the ideas in the bullet list and narrow down your topic for GSOC2021. The application period opened today (29th March)!

@santiagobadia, @Balaje, what do you think? Are you available any afternoon this week from 4PM AEDT (your time)?

@Balaje
Copy link
Author

Balaje commented Mar 30, 2021

Hi @ericneiva @santiagobadia. Sure, I am available at 4 PM any day this week.

@oriolcg
Copy link
Member

oriolcg commented Apr 8, 2021

Hi @Balaje,

I just read the thread of messages. Have you already had the meeting? I also volunteered as a co-mentor for a GSoC project with @santiagobadia and @ericneiva. I'm very interested in the applications that you are working on @Balaje. Actually, I'm currently developing a model for a monolithic solution of floating plates/beams using Gridap. This is a work I'm doing together with a master student at TU Delft targeting floating solar pannels, but it can be directly applied to ice.

Would you like to have a chat some time so you can better explain your model and I can go over what I'm trying to do using Gridap?

@Balaje
Copy link
Author

Balaje commented Apr 9, 2021

Hi @oriolcg,

I had a chat with @santiagobadia last Wednesday regarding the possible directions for GSoC from the list. We decided to work on developing the interpolation feature from FreeFem and I am currently working on a proposal for that. I am interested in the topic you are working on too and would like to know more! Can we have a chat later today, about 3 hours from now, if you are available?

@oriolcg
Copy link
Member

oriolcg commented Apr 9, 2021

Hi @Balaje,

Yes, I can do it today from 12:00 to 13:30 Amsterdam time. Would that work? Could you send me a zoom/skype/teams meeting link to my mail?

@ericneiva ericneiva changed the title GSoC 2021: Gridap.jl data-driven applications via Flux.jl GSoC 2021: A fast finite element interpolator in Gridap.jl Apr 12, 2021
@ericneiva
Copy link
Member

This is to keep track that we agreed with @Balaje to pursue a GSoC on implementing a fast finite element interpolator in Gridap.jl

He has also submitted a draft of this GSoC proposal to us.

@ericneiva
Copy link
Member

This is to keep track that the project has been awarded:

https://summerofcode.withgoogle.com/projects/#6175012823760896

Congratulations, @Balaje!

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

No branches or pull requests

4 participants