GSOC Continuum mechanics 2D beam solving system

297 views
Skip to first unread message

SUBHASH SAURABH

unread,
Feb 10, 2018, 7:31:13 AM2/10/18
to sympy

Hello,

I want to work on the 2D beam solving system in GSOC this year.

I have some idea about beam stress/strain analysis as I having taken few courses(Solid Mechanics, Structural Analysis 1,2) related to it in my college(IIT Guwahati)

I have also submitted some PR to sympy repo.

Is there any bug , incomplete PR related to 2D beam solving system so that I can get familiar with it?

Thanks

Subhash Saurabh

Jason Moore

unread,
Feb 18, 2018, 2:53:38 PM2/18/18
to sy...@googlegroups.com
Subhash,

I recommend trying to solve beam problems with the existing code. You will discover limitations of the current software in that process.

Jason

--
You received this message because you are subscribed to the Google Groups "sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscribe@googlegroups.com.
To post to this group, send email to sy...@googlegroups.com.
Visit this group at https://groups.google.com/group/sympy.
To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/ad2c8be6-7bee-4bff-9c60-6aed1a8a5e50%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

SUBHASH SAURABH

unread,
Feb 23, 2018, 12:55:15 PM2/23/18
to sympy
 In this PR Sampad Saha mentioned to check if the beam bending works with units or not.

Currently it doesn't work and I think it requires some changes in the units module as well as in continuum_mechanics package.

For the code snippet

from sympy import *
from sympy.physics.units import meter, kilogram, newton, second, kilo
from sympy.physics.continuum_mechanics.beam import Beam
E
, I = symbols('E, I')
R1
, R2 = symbols('R1, R2')
b
= Beam(3*meter, E*newton/meter**2, I*meter**4)
b
.apply_load(-8*kilo*newton, 0, -1)
b
.apply_load(R1*kilo*newton, 1, -1)
b
.apply_load(R2*kilo*newton, 3, -1)
b
.apply_load(12*kilo*newton, 3, -2)
b
.bc_deflection = [(1, 0), (3, 0)]
b
.solve_for_reaction_loads(R1, R2)
print(b.reaction_loads)

 It currently gives ValueError

Jason Moore

unread,
Feb 25, 2018, 11:13:02 AM2/25/18
to sy...@googlegroups.com
Looks like a good starting point. i recommend opening an issue about this.

--
You received this message because you are subscribed to the Google Groups "sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscribe@googlegroups.com.
To post to this group, send email to sy...@googlegroups.com.
Visit this group at https://groups.google.com/group/sympy.

SUBHASH SAURABH

unread,
Feb 27, 2018, 10:16:09 AM2/27/18
to sympy
I am currently working on this problem and I will submit a PR as soon as possible.

SUBHASH SAURABH

unread,
Mar 5, 2018, 2:17:13 AM3/5/18
to sympy
While solving different beam problems I found that currently only determinate beams can be solved (simply supported, cantilever, overhanging).
However it is unable to solve indeterminate beams (fixed, propped cantilever and  continuous beams).

For fixed beam
>>> from sympy.physics.continuum_mechanics.beam import Beam
>>> from sympy import symbols, Piecewise

>>> E, I = symbols('E, I')
>>> R1, R2, R3, R4 = symbols('R1, R2, R3, R4')

>>> b = Beam(4, E, I)
>>> b.apply_load(R1, 0, -1)
>>> b.apply_load(R2, 0, -2)
>>> b.apply_load(R3, 4, -1)
>>> b.apply_load(R4, 4, -2)
>>> b.apply_load(6, 2, -1)
>>> b.bc_deflection = [(0, 0), (4, 0)]
>>> b.bc_slope = [(0,0), (4,0)]

>>> b.solve_for_reaction_loads(R1,R2,R3,R4)
>>>b.shear_force()
R3
*SingularityFunction(x, 4, 0) + R4*SingularityFunction(x, 4, -1) + (-R3 - 6)*SingularityFunction(x, 0, 0) + (4*R3 - R4 + 12)*SingularityFunction(x, 0, -1) + 6*SingularityFunction(x, 2, 0)
>>> b.bending_moment()
R3
*SingularityFunction(x, 4, 1) + R4*SingularityFunction(x, 4, 0) + (-R3 - 6)*SingularityFunction(x, 0, 1) + (4*R3 - R4 + 12)*SingularityFunction(x, 0, 0) + 6*SingularityFunction(x, 2, 1)

Currently it reduces from 4 reactions to 2 reactions .
However these type of problem can easily be solved using various methods for indeterminate analysis for example - three moment theorem .

SUBHASH SAURABH

unread,
Mar 8, 2018, 9:34:28 AM3/8/18
to sympy
I have gone through the current continuum mechanics package and I think the following can be implemented in this summer.

1. Improve the beam module so that it can solve for indeterminate beams.
2. Implement plotting of shear_force, bending_moment, slope and deflection.
3. Implement CrossSection class that can calculate second moment using the given cross-section.
4. Implement a JointBeam class that can join multiple beams and then the entire system can be solved.
5. Implement a function that gives the stress and strain at any given location (in 2D).
6. Implement a 3DBeam class that can solve a beam in 3D and can give the stress and strain any arbitrary point.

I will start working on the formal proposal from Monday.
Jason it will be great if you can suggest some other features that I have missed.


Jason Moore

unread,
Mar 8, 2018, 10:08:36 AM3/8/18
to sy...@googlegroups.com
Subash,

These all sound like great ideas! Looking forward to the proposal.

Jason

--
You received this message because you are subscribed to the Google Groups "sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscribe@googlegroups.com.
To post to this group, send email to sy...@googlegroups.com.
Visit this group at https://groups.google.com/group/sympy.

SUBHASH SAURABH

unread,
Mar 11, 2018, 8:40:39 AM3/11/18
to sympy
One more thing that I think can be implemented by Singularity function is Influence Line Diagram(ILD) . After implementing plotting for shear force and bending moment plotting of ILD can also be added.

We can implement a function compute_ild that takes position of a beam as argument and returns the ILD.

Jason what do think about it. Should I go ahead and include this in proposal as well .

Sartaj Singh

unread,
Mar 11, 2018, 9:34:38 AM3/11/18
to sy...@googlegroups.com
Hi Subhash,

I will suggest starting writing the proposal, and adding each piece of functionality piece by piece. It will help you think about the API more carefully and also give you an idea of the timeline. It's important to make a proposal that fits well with the GSoC timeline.

--
You received this message because you are subscribed to the Google Groups "sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscribe@googlegroups.com.
To post to this group, send email to sy...@googlegroups.com.
Visit this group at https://groups.google.com/group/sympy.

For more options, visit https://groups.google.com/d/optout.



--
Regards
Sartaj Singh

Mathematics and Computing,
Indian Institute of Technology,
Varanasi - 221 005 INDIA

SUBHASH SAURABH

unread,
Mar 14, 2018, 3:44:48 AM3/14/18
to sympy
I have completed my application and submitted it to Sympy wiki. Here is the link https://github.com/sympy/sympy/wiki/GSoC-2018-Application-Subhash-Saurabh:-Improving-2D-Beams-and-Implementing-3D-beams

Jason , Sartaj can you please review my application and suggest if any changes/addition are required.

Reply all
Reply to author
Forward
0 new messages