Spring pendulum system fortran program

Click For Summary

Discussion Overview

The discussion revolves around the numerical solution of a pendulum-spring system using Fortran programming. Participants are seeking assistance with coding and solving the equations of motion for this system, which involves coupled differential equations.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Homework-related

Main Points Raised

  • One participant requests Fortran code for the numerical solution of the pendulum-spring system.
  • Another participant encourages sharing progress and suggests reviewing previous related threads for guidance.
  • A participant provides a snippet of their Fortran code but expresses uncertainty about the numerical solution of the coupled equations of motion.
  • Questions are raised about the specifics of the pendulum-spring system, including the nature of the system and the equations of motion being used.
  • Clarifications are made regarding the method being used, with one participant correcting their earlier mention of the Runge-Kutta method to Euler's Method for a second-order differential equation.
  • A suggestion is made to convert the second-order ordinary differential equations (ODEs) into first-order ODEs by introducing phase/state variables.

Areas of Agreement / Disagreement

Participants express varying levels of understanding and approaches to the problem, with no consensus reached on the best method for solving the equations or the specifics of the implementation.

Contextual Notes

Participants note the importance of variable naming and explicit declarations in Fortran, highlighting potential pitfalls in the language's variable handling.

Casco
Messages
82
Reaction score
1
I just want to know if someone has the fortran code for the numerical solution of the pendulum with a spring. And if it is so, can it write it here?
 
Physics news on Phys.org
Casco said:
I just want to know if someone has the fortran code for the numerical solution of the pendulum with a spring. And if it is so, can it write it here?

Have you tried to do this on your own already? https://www.physicsforums.com/showthread.php?t=94379" Show what you've done so far so we can help you.
 
Last edited by a moderator:
Ok, this is what I have:

PROGRAM DIFFERENTIAL_EQUATIONS_SYSTEM

WRITE (*,*) 'WRITE A, B, N, ALF1 AND ALF2'
READ (*,*) A,B,N,ALF1,ALF2
H=(B-A)/N
T=A
W1=ALF1
W2=ALF2

OPEN(10,FILE='RUNGE_KUTTA_HIGHER_ORDER.TXT')

DO I=1,N

WRITE (10,*) T,W2
WRITE (*,*) T,W2

W1=W1+H*F1(T,W1,W2)
W2=W2+H*F2(T,W1,W2)
T=A+I*H

END DO
END

FUNCTION F1(T,W1,W2)
REAL W1,W2,T
F1=W1
RETURN
END

FUNCTION F2(T,W1,W2)
REAL W1,W2,T
F2=-3.0*W2-(9.8/3.0)*SIN(W1)
RETURN
END

maybe my way of programming is not the best. What I have are the equations of motion for the pendulum-spring system, they are coupled, and I don't know how to solve them numerically, any help?

And it would be any advice to improve my programming it is welcomed.
 
Could you please explain a bit more about the problem and your code? When you say pendulum-spring system, do you mean a rigid pendulum with a mass on the end is hanging from a spring? Can you show us the equations of motion you're using? And what method are you trying to use, 2nd-order Runge-Kutta?

As for the variables, I'm guessing A and B are initial and final times, N is number of timesteps, ALF1 and ALF2 are initial angles of the spring and pendulum, respectively. Correct? More descriptive variable names in general are very helpful if anyone besides yourself needs to understand your code.

A Fortran tip you may not be aware of: declare your variables explicity everywhere (like how you did in your functions: REAL W1,W2,T), and put IMPLICIT NONE as the first line in all of your programs and functions/subroutines, which forces you to declare your varibles. If you do not explicity declare varibles, Fortran implicity does so in the following manner. If the first letter of your variable name is I, J, K, L, M or N, it will be an INTEGER, otherwise it will be a REAL. This is widely considered to be one of the worst features of Fortran, and using IMPLICIT NONE is always recommended. In your code there are no problems with this, but it's easy to make mistakes.
 
PICsmith said:
Could you please explain a bit more about the problem and your code? When you say pendulum-spring system, do you mean a rigid pendulum with a mass on the end is hanging from a spring? Can you show us the equations of motion you're using? And what method are you trying to use, 2nd-order Runge-Kutta?

The theory is on the pages 42-43 of the book.pdf file. I made a mistake with the name of the code, the method it isn't Runge-Kutta it is Euler's Method but for a second order differential equation.

All you assume on second paragraph it is right, about the variables. And thanks for the tip, I will keep it in mind.
 

Attachments

Last edited:
You'll have to introduce some phase/state variables to convert those two 2nd-order ODEs into four 1st-order ODEs, and then solve those. http://12000.org/my_courses/UC_davis/spring_2011/MAE_121_eng_dynamics/lab/lab_one/report/report.htm" (eqn 3 and the ones above it). Hope that helps.
 
Last edited by a moderator:

Similar threads

Replies
7
Views
3K
Replies
4
Views
3K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
6K
  • · Replies 3 ·
Replies
3
Views
5K
  • · Replies 8 ·
Replies
8
Views
1K