Articles

GSOC Week 5

simplify method helped me resolve a test case that was leading to failed tests and PR being unable to merged which was advised by my mentors. PR regarding the initialisation of the Arch class was merged and work on the solver was started. Some further study was required to develop the solver which consumed some extra time this week , currently the solver is capable of finding the reaction forces generated at supports if the supports are hinged.

GSOC Week 4

This week started the Phase-2 of my project and focussed on initialising the Arches class and implementing the supporting methods that would help in implementation of the later methods and solver. Properties available now :- get_parabola_eqn :- returns the equation of the shape of the arch supports:- returns support type get_loads:- returns the loads left_support and right_support :- return the position of the corresponding supports reaction_force:- returns the reaction forces generated at the supports Some Methods that include apply_load, remove_load, add_support, add_roap have also been added which may be modified later according to the need.

GSOC Week 3

Stuff Completed Draw Method for Cable Class Tension Plot for Cable Class Improvements in solver for Cable class Results Draw Method now allows us to visualize the cable shape and loads in a more intuitive way. Style of load for distributed loads was changed to ensure easier reading and better plots. Draw Method plots:- Tension Plots:- This week was focussed on finishing he work on the draw method and tension plot which ended up taking more time than what I had initially hoped for.

GSOC Week 2

As mentioned in the previous blog, this week was focussed on implementation of equations to get the desired shape of the cable and plot it along with getting the forces plotted. Plotting the Cable We have two types of loads and depending on them , can form the equation of the cable shape Point Loads: The user defined the x and y ccoordinates of the load and it is easy to simply use a line equation and make a piecewise function Uniformly distributed Loads: It takes up a parabolic shape under horizontal uniformly distributed loads whose equation could easily be found using the sympy solver For plotting I am using the plotting library already present in sympy which eases the work a lot.

GSOC Week 1

Small account of what was done The first week of GSoC started with closing an older pull request with some discussions on further improvements and changes to the existing Cable Class in the continuum_mechanics module and making some changes to pass precision tests. After this the work on the draw method was initialised. As a first step I decided to start plotting both the support. I decided to keep both the supports shape as a rectangle for better visibility.

GSoC Community Bonding Period Ends

What is the community bonding period? The GSoC Bonding Period allows us to setup the project, interact with the community , get familiar with the documentation, or as I would like to put it, getting prepared for the coding period so you can start coding effectively. Multiple interaction and QnA sessions were taken by Gooogle which to familiarise us with the entire process and also helped me get a new perspective on security, AI and inclusivity.
Google Summer of Code 2024

Google Summer of Code 2024

What is Google Summer of Code (GSoC) ? Google Summer of Code is an international program that seeks to bring in new contributors to the Open-Source Community by promoting their projects and providing stipends to the selected contributors. Many contributors begin contributing via code and documentation improvements before submitting their proposals which upholds the true spirit of the open-source community and also help the contributor familiarise themself with the trends and practices followed .

GSoC Community Bonding Period Ends

Planted May 27, 2024

What is the community bonding period?

The GSoC Bonding Period allows us to setup the project, interact with the community , get familiar with the documentation, or as I would like to put it, getting prepared for the coding period so you can start coding effectively.
Multiple interaction and QnA sessions were taken by Gooogle which to familiarise us with the entire process and also helped me get a new perspective on security, AI and inclusivity. The entire registration process was pretty smooth thanks to the entire team and my mentors who reminded and helped me through all the steps.

Discussions and Coding Period Start

An Existing Pull Request

I will be working on the continuum_mechanics module this summer and started by a discussion on a previous issue in the Cable class with my mentors Advait Pote and Ishan Pandhare. Some improvements and failing doctests were discussed on GitHub as well as on a Meet. I will be spending my first week on fixing the precision tests and getting the PR merged.

My initial attempts and failure

The current Cable class accurately calculates the tensions, reactions etc. at various points under the presence of concentrated or distributed loads. For this purpose it take the coordinates of the lowest point for cable under distributed loads and performs it operations, an attempt was made by me to take length of the cable and find out the coordinates of this lowest point (or sag). I attempted to form equations of a parabola and its length using a a formula for arc length

eq1 = Eq(a * x1**2 + b * x1 + c, y1)
eq2 = Eq(a * x2**2 + b * x2 + c, y2)
arc_length_expr = integrate(sqrt(1 + (2 * a * x + b)**2),(x, x1, x2))

eq3 = Eq(arc_length_expr, length)

solution = solve((eq1, eq2, eq3), (a, b, c))

However , I wasn’t successfull in getting a result and realised its due to the arc length formula and we might have to use a numerical method to get results. The current method , hence works fine for the time-being. Further Improvements Some additions will be made to the Cable class in the form of a Draw method and changes in solver to get some additional results to be used in the Draw method. As an idea we can also make a method to solve for concentrated loads where length is predefined and positions have to be determined. Currently it works by validating if the positions of the loads is valid. This way the module can be improved further. I will attempt to do the same as a part of extended project.