Balaje Kalyanaraman

PhD Student at the University of Newcastle, Australia

I write new blog posts every now and then. Do give them a read and let me know what you think.

• Shape from Shading - Revisited

A few years ago, I worked on Hamilton Jacobi Equations at the Tata Institute of Fundamental Research as an undergraduate. One of the interesting applications of Hamilton Jacobi Equations is the shape from shading problem. I had a great time working with my mentor Prof. G.D.Veerappa Gowda and my friend Sanath Keshav on the project.

• Virtual element solution with Gridap

It is always exciting to explore whether a particular package can be extended to implement different methods with some of the low-level API available within the package. So, I wanted to answer the question - Can Gridap.jl can be used to implement the virtual element method? Virtual element methods can be seen as a generalization of the finite element method on arbitrary shaped polygon. At the time of writing this, Gridap.jl supports simplices and hypercubes to build the discretization. However, it is possible to use the underlying machinery to implement the lowest order virtual element method using Gridap.jl. In this post, I will be briefly discussing the implementation.

• 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:

• Mixed DG methods for Biharmonic Equation

Let us take the biharmonic problem on $$\Omega$$ along with the clamped conditions on the boundary $$\partial\Omega$$.

• Generating Pretty Unicode Plots

A couple of months ago while I was learning Julia programming, I came across this tweet

• 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.

• iceFem - A FreeFem package for wave induced ice-shelf vibrations

Happy New Year everyone! 2020 was definitely a difficult and challenging year for all of us and I hope 2021 will be better. In this quick post, I would like to share an update regarding the new project I was talking about in the last post.

• A New Project

It is quarantine time and that means, it is time to keep myself busier than usual. And what better time to write a blog post! Exploring finite elements with FreeFem++ has been a wonderful experience so far and it has helped me out so much throughout my PhD. The grammar of FreeFem++ enables flexibility in programming while still leaving a high degree of control with the user. The video below shows a fluid simulation in which a jet of fluid entering a porous medium (a trapezoid) vertically. Since we have an obstacle, the fluid escapes from the sides of the porous medium. Thef code is a single script which can work with any polynomial degree of approximation ($$P1,P2,P3$$ finite element spaces).

• Virtual elements, biorthogonal projections and the peculiarity of second order VEM

When I began writing this post on 26th November, I was on a train from Wollongong to Newcastle. Being a long ride back home, I decided to work on this blog post about VEM. But I ended up finishing and pushing this post on 5th December.

• A note on Gradient Recovery for the Virtual Element Method

I recently published a paper on Gradient Recovery technique based on oblique projection for the virtual element method in the ANZIAM journal as a part of CTAC proceedings [1]. The idea behind the gradient recovery technique is to project the virtual element gradient onto the $$L^2$$ space using an oblique projection. You can find the finite element equivalent, for example, in this paper [3].

• Hydroelasticity

Recently I visited Harbin, China to attend a PhD summer school on Ocean Engineering which was organized by the University of Dundee and Harbin Engineering University. The scientific topic of the Summer School was Hydroelasticity of Fixed and Floating Bodies. The summer school contained lectures on hydroelasticity and soon after we were assigned a group project at the end of the summer school.

• The Perspective Model

In the previous post, I spoke about Shape from Shading – the idea and the concepts related to shape from shading, in particular orthographic shape from shading. Also I presented some of my results that were obtained for a synthetic test image. In this post, I would like to talk about another model for shape from shading – the Perspective Shape from Shading.

• Shape from Shading (SFS)

The idea of SFS is to reconstruct an object (Shape) from a 2D Image (Shading). There are a lot of ways to reconstruct a 3D Object from a 2D Image. Similar methods include Shape from Stereo, Shape from Contours, Shape from Silhouettes etc.

• Tracking Objects without color

Object tracking is one of the most important aspects of Computer Vision. Nowadays human security guards are being replaced by automated tracking robots for two main reasons; ONE: robots can detect even the subtlest of motions and record them efficiently; TWO: robots don’t get bored staring into the same space, even for days.

• Autobrightness

This post is about an application that I tried to make using the OpenCV Image Processing Library. This application can detect the changes in brightness of the environment and adjust your laptop’s screen brightness accordingly.