GSoC 2023 Project Report by Ishan Pandhare | Project titled "Extending Continuum mechanics module: Introducing classes for Cables and Improving the Truss class" - sympy/sympy GitHub Wiki

This report summarizes my work in Google Summer of Code '23 under Sympy, titled "Extending Continuum mechanics module: Introducing classes for Cables and Improving the Truss class". I was mentored by Prakhar Saxena and Advait Pote. A weekly report of my work is available here.

About Me

I am Ishan Pandhare, fourth-year undergraduate student from the Department of Mathematics and Computing at the Indian Institute of Technology (BHU), Varanasi.

Project Overview

The project was implemented in phases, in the following ways:

  • Community Bonding Period: I got acquainted with my mentors and planned my project with them during this period. Since there was some time left after the discussions, I decided to take a head start towards implementing my project.
  • Phase 1: As planned, I started working towards improving the methods of the Truss class. Specifically, I made some changes to the methods such that the methods were now able to process multiple inputs at once. A discussion with the mentors led me to make changes to the way some methods searched for duplicates, and required changes were made.
  • Phase 2: In this phase, I started implementing the Cable class, a new addition to the continuum_mechanics submodule. First, I started implementing the properties and methods of the class. These included apply_support, apply_load and remove load among others. Discussions with the mentors led to improvements in the initial implementations of these methods, and changed the initialization of the class. Once the class was implemented, the next big thing to implement was the solve method. This part was challenging as it required thorough knowledge of not just the technology, but also mechanics. There were two parts to be implemented:
    1. A solve method for point loads.
    2. A solve method for distributed loads.

Pull Requests

Please find all the PRs raised during this time

  • #25171: Modified methods of the Truss class to accept multiple inputs in a single call
  • #25272: Implemented the cable class
  • #25461: solve method for cable class

Future Work

  • I would like to implement a plotting function for tension in the cable.
  • I would also like to implement draw function for the cable class, and keep contributing to this submodule.

Conclusion

Google Summer of Code has been a great learning experience for me. I was able to write good code, gain experience by discussing with my mentors, learn to properly document my work and write good tests. I would like to thank Sympy for giving me this opportunity, and my mentors for helping and guiding me whenever I needed their guidance. It has been a great experience overall, and I plan to keep contributing to Sympy and further extend the arsenal of this submodule.