GSoC 2021 Report Prakhar Saxena : Creating a Rich Beam Solver and Extending Continuum Mechanics Module - sympy/sympy GitHub Wiki

This report summarizes the work done in my GSoC 2021 project under Sympy titled as Creating a Rich Beam Solver and Extending Continuum Mechanics Module. My mentors were Ishan Joshi and Nikhil Maan. A step by step development of the project is available at prakharsaxena.tech.

About Me

I am Prakhar Saxena, a fourth-year undergraduate majoring in Civil Engineering from the Indian Institute of Technology (BHU) Varanasi.

Project Overview: Phase-wise short description

I have divided the project into four phases which include the community bonding period, and the three coding phases.

  1. Community Bonding Period: This phase was mostly spent on interacting with the mentors and setting up my blog website. I also planned about the implementations of the other phases.
  2. Phase-1: This phase focused on adding functions that were currently missing from the Beam3D class. These including plotting functions for Shear Force, Bending Moment, Slope and Deflection in Beam3D class.
  3. Phase-2: In this phase, I added a new functionality called Influence Line Diagrams(I.L.D.). The functions for calculating and plotting I.L.D.s for Reactions, Shear and Moment were added.
  4. Phase-3: In this phase, I implemented minor functions which are available in the Beam class but haven’t been implemented for Beam3D class. These included plotting functions for shear stress and functions to calculate maximum shear force, bending moment and deflection.

Pull Requests

This section describes the actual work done during the coding period. The following PRs have been merged.

Phase-1

  • #19237: This PR added plotting functions for Shear Force in Beam3D class.
  • #21582: This PR added plotting functions for Bending Moment in Beam3D class.
  • #21583: This PR added plotting functions for Slope in Beam3D class.
  • #21640: This PR added plotting functions for Deflection in Beam3D class.
  • #21648: This PR added plotting functions for all loading results in Beam3D class.

Phase-2

  • #21714: This PR added functions for calculating plotting I.L.D. for Reactions.
  • #21810: This PR added functions for calculating plotting I.L.D. for Shear.
  • #21871: This PR added functions for calculating plotting I.L.D. for Moment.

Phase-3

  • #21877: This PR added functions for plotting Shear Stress in Beam class and Beam3D class.
  • #21919: This PR added functions for finding max shear force, bending moment and deflection in Beam3D class

Future Work

I have completed all the work I mentioned in my proposal and it has been merged as well.

  • A class for truss can be developed to further extend continuum mechanics module.
  • Functions for stress-strain analysis can also be added.

Conclusion

This summer has been a great learning experience for me. I learnt a lot about writing production level code and also learnt about testing and debugging. I definitely plan to continue contributing to Sympy and further extend the Continuum Mechanics module to include other structures like Truss, Arches, Cables, etc. I would also like to thank my mentors Ishan Joshi and Nikhil Maan for always helping me with new concepts, reviewing my PRs and providing quick responses.