GSoC 2017 Application Abramova Tatyana: Linear elasticity - sympy/sympy GitHub Wiki

Personal information

  • Full name: Abramova Tatyana
  • University: Moscow Institute of Physics and Technology, Department of General and Applied Physics, and Independent University of Moscow
  • Short bio: I am a first-year student of DGAP MIPT, chair of Particle physics. I like to make computer models of physical processes and investigate the accuracy of calculations made by computer using conservation laws.
  • Email : [email protected]
  • Github : abramovat

Programming details

I use the last version of Ubuntu and prefer Sublime text 3 editor, because it is comfortable to use. I have got 4 year c++(mostly algorithms) and one year python (modeling and visualization of elastic collision, gravitational interaction and distribution inner energy (temperature) in the system of rigid bodies) coding experience. I have used only v-python to do this, because I hadn't known about sympy. Also, I have web programming experience : php+mysql+html+css+js and python(django). I like python more than other languages because I don't have to waste time to algorithm realization, I can just come up with the idea and bring it to life easily. For the same reason I like sympy, because I can implement my ideas bypassing routine computational obstacle. Sympy allows to solve rather complicated differential equations arising in physical problems by one click. The simplest example is the general solution of the equation of damped harmonic oscillations.

>>> from sympy import symbols, cos, Function, dsolve, Eq
>>> x = Function('x')
>>> t, v, w, phi, k, a = symbols('t v w phi k, a')
>>> eq = Eq(x(t).diff(t, 2) + k * x(t).diff(t, 1) + w**2 * x(t), a * cos(v*t + phi))
>>> dsolve(eq)
Eq(x(t), C1*exp(t*(-k - sqrt(k**2 - 4*w**2))/2) + C2*exp(t*(-k + sqrt(k**2 - 4*w**2))/2) + a*k*v*sin(phi + t*v)/(k**2*v**2 + (v**2 - w**2)**2) - a*v**2*cos(phi + t*v)/(k**2*v**2 + (v**2 - w**2)**2) + a*w**2*cos(phi + t*v)/(k**2*v**2 + (v**2 - w**2)**2))

I have used git several times. I haven't contributed to open source projects before, but I have one pull request to sympy #12480.

Project idea:

The main aim of the project is to create the model of non-rigid body and solve problems about calculations of some characteristics of state of the body (deformations, external and internal forces, normal and share stress, displacement of its parts). Conditions of balance and continuity should be observed in each point of the body, and at the edge of the body internal and external forces should correlate with each other. To solve this problem there are several groups of equations:

  1. 3 static equations (balance of the forces on the whole body)
  2. 6 geometric equations (relation between deformations (linear deformation and shear angle) and displacements)
  3. 6 physical equations (relation between normal and shear stress and deformations)

There are 15 equations with 15 variables, so the system can be solved using some boundary conditions.

Firstly, the class of non-rigid body should be created. It will contain non-rigid bodies' properties like stress and shear tensors, displacement of its parts, yield point and others. Secondly, the forces applied to the body should be added. Thirdly, calculations of some quantities can be conducted.

For calculation of freeform body I will divide it into some pieces by the amount of planes, which are parallel to the coordinate planes. The pieces approximately can be represented as tetrahedrons and parallelepipeds. Thereby, all needed calculations should be conducted for tetrahedrons and parallelepipeds and also for some simple bodies. Then I will calculate the parameters of the whole body by considering interaction of its parts forming tetrahedrons and parallelepipeds.

Also, the adiabatic process could be added. Furthermore, bodies in the system can have different temperatures, the material can have a thermal conductivity. After calculation of all quantities, equations of motion of the non-rigid body might be generated. For that I can use already added LagrangesMethod and KanesMethod or create something new that would be more applicable for non-rigid bodies. After creating motion of non-rigid bodies visualization of it could be supplemented.

I have taken course of mechanics in MIPT, there was several lectures related with this theme. I have found some books and lectures about mathematical model of deformations of non-rigid bodies. The most useful and understandable materials for me are lectures of Ildar Karimov - professor of Kazan Federal University and book "Theory of elasticity", Sergey Demidov. There are the full description of the process of deformation.

Timeline:

Week 1:

  • Creating class of non-rigid body. It should contain some constants of the material of the body, its form, stress tensor, strain tensor.

Week 2:

  • Output of the strain tensor using parameters of displacements (the second group of equations).
  • Decomposition of the strain tensor on low deformation strain tensor and tensor of rotation of rigid body.
  • Verification of conditions for compatibility of deformations.

Week 3:

  • Implementation of the results of the previous work to tetrahedron and parallelepiped.
  • Transformation of strain tensor when coordinate system changes.

Week 4:

  • Separation of all forces into surface and volume constituents, forces applied to the center of mass and forces causing deformation.
  • Transition to the coordinate system associated with the center of mass of the body.

Week 5:

  • Output of the vector of stress in the exact point and stress tensor of the body using array of forces.

Week 6:

  • Transformation of the stress tensor when coordinate system changes.
  • Calculation of the ellipsoid of stress tensor for simple bodies.

Week 7:

  • Interrelation between strain and stress tensors (matrix form of the Hook's law).

Week 8:

  • Calculation of displacement and stress using array of forces.

Week 9:

  • Calculation of displacement and stress using array of volume forces and displacement of the surface.

Week 10:

  • Calculation of array of forces using displacement or stress tensor.

Week 11:

  • Solution of the task for the system of simple bodies (bodies of regular shape).

Week 12:

  • Splitting of the body, which form is given by the surface equation, into tetrahedrons and parallelepipeds.
  • Solution of the task for measurable bodies.

Week 13:

  • Buffer week(appending tests and documentation).