Balaje Kalyanaraman

PhD Student at the University of Newcastle, Australia

# Google Summer of Code blog

• ### Wrapping up GSoC

This is the final post in the Google Summer of Code 2021 series, and here I wish to summarize the project. This post is my official submission of my work for the final evaluation. During the summer of code, I wrote five blog posts related to the project which can be found on the my GSoC webpage. Along with the posts, I have also posted the progress report which can be found at the end of the page. I will briefly go through the new features and list all the Pull Requests submitted to the organization’s main repository that contains my contribution. For demonstrating the new features added, I use the following script:

• ### Interpolation for Raviart Thomas Basis Functions

GSoC project update time! So after the first evaluation, I continued working on the project to extend the interpolation algorithm to Raviart-Thomas elements. In this post I will be summarizing how I went about doing that. Before I begin, I want to point you to couple of things. The main GSoC blog page has a list that summarizes my project progress. I figured I should have it in the main page for easy access. You can also find some Gridap.jl code that I wrote during the project. Second are the two other blog posts:

• ### Interpolation for Lagrangian Elements - II

Continuing from where we left off in the previous post, I will explain how I went about finishing tasks #4 to #6 in the list. Just to recall, in the previous blog post, I explained how to create the source finite element space and the FEFunction. I also covered on how to create the target mesh. To interpolate the old FEFunction onto the new mesh, we need to evaluate the old FEFunction on the cell dofs of the new mesh. This can be done using the drivers that I discussed in the first blog post. Here’s how it went…

• ### Interpolation for Lagrangian Elements - I

It’s time for another GSoC project update. During the last couple of weeks, I have been working on building the method for performing interpolations between different meshes. I will be explaining this task list in detail and finish up by describing where this will eventually lead to. I will also briefly talk about some of the challenges I faced as I was going through the list. There are six tasks in the list, and I have listed them down below:

• ### Google Summer of Code 2021 - Community Bonding

It’s time for a GSoC project update! May 18 to June 8 in the Google Summer of Code timeline was the community bonding period, where the student spends about a month knowing more about the organization and the community. In the previous post, I spoke about the general application process, converging on a topic for the summer of code. In this short post, I will be talking about what goes on during the bonding period. Note that this can vary between the various organizations in GSoC, for example, differing in the tech that they use for communication etc.

• ### Google Summer of Code with Gridap.jl

I am excited to share that I will participate in the 2021 edition of the Google Summer of Code (GSoC) with Gridap under the NumFOCUS organization. I will be working with Eric Neiva, Oriol Colomés and Santiago Badia during the program. The topic of my project is A fast finite element interpolator in Gridap.jl. In this short blog post, I will share my experiences writing a proposal for the GSoC project. Feel free to click on the links to read the conversation.

# Overview (Updated)

• Implementation for evaluating FEFunction on arbitrary points. This covers both Lagrange and RT elements.

• Extending interpolate_everywhere(::FEFunction, ::FESpace) for different ::FEFunction and ::FESpace. There are two subtasks here.

• Lagrange DOF Basis. Local Branch
• Making nlsolve more robust by providing optional parameters. This is for handling somewhat distorted elements.
• Interpolation for Lagrange elements.
• Finding an effective way to integrate that into the package. I thought of modifying FESpaces._cell_vals to accommodate the new functionality.
• Raviart Thomas DOF Basis. Local Branch
• Enable evaluate for implementing single point evaluation for AbstractVector{Monomial{D,T}}. This was done by Eric and Alberto. This fixed an error that I was getting while evaluating RT Functions at arbitrary points.
• Interpolation for RT Elements. Most of the code is the same for Lagrange elements, but I had to invoke ReferenceFEs._eval_moment_dof_basis! to convert the point value to the respective DOF.
• To find a way to add the interpolation code into the package.

Relevant Code: