In this section, we will explore how to use Fortran to simulate physical systems. This involves understanding the mathematical models that describe physical phenomena and implementing these models in Fortran code. We will cover the following topics:

  1. Introduction to Physical Simulations
  2. Modeling Physical Systems
  3. Numerical Methods for Simulations
  4. Implementing Simulations in Fortran
  5. Practical Example: Simulating a Pendulum
  6. Exercises

  1. Introduction to Physical Simulations

Physical simulations are used to model and study the behavior of physical systems. These simulations can range from simple systems, like a pendulum, to complex systems, like weather patterns or fluid dynamics.

Key Concepts:

  • Mathematical Models: Equations that describe the behavior of a physical system.
  • Numerical Methods: Techniques to approximate solutions to mathematical models.
  • Simulation: The process of using a computer to solve mathematical models and study the behavior of physical systems.

  1. Modeling Physical Systems

To simulate a physical system, we first need to create a mathematical model. This typically involves:

  • Defining the system: Identify the key components and variables.
  • Formulating equations: Use laws of physics (e.g., Newton's laws) to derive equations that describe the system.

Example: Simple Pendulum

A simple pendulum can be modeled using the following differential equation: \[ \frac{d^2\theta}{dt^2} + \frac{g}{L} \sin(\theta) = 0 \] where:

  • \(\theta\) is the angle of the pendulum.
  • \(g\) is the acceleration due to gravity.
  • \(L\) is the length of the pendulum.

  1. Numerical Methods for Simulations

Since many physical systems are described by differential equations, we need numerical methods to solve these equations. Common methods include:

  • Euler's Method: A simple, first-order method for solving ordinary differential equations (ODEs).
  • Runge-Kutta Methods: Higher-order methods that provide more accurate solutions.

Euler's Method:

\[ \theta_{n+1} = \theta_n + h \cdot \frac{d\theta}{dt} \] \[ \frac{d\theta}{dt} = \omega \] \[ \omega_{n+1} = \omega_n + h \cdot \frac{d\omega}{dt} \] \[ \frac{d\omega}{dt} = -\frac{g}{L} \sin(\theta) \]

  1. Implementing Simulations in Fortran

Let's implement the simulation of a simple pendulum using Euler's method in Fortran.

Code Example:

program pendulum_simulation
    implicit none
    real :: theta, omega, g, L, t, dt
    integer :: n, steps

    ! Initialize parameters
    g = 9.81
    L = 1.0
    theta = 0.1
    omega = 0.0
    t = 0.0
    dt = 0.01
    steps = 1000

    ! Open file to write results
    open(unit=1, file='pendulum_simulation.txt', status='replace')

    ! Time-stepping loop
    do n = 1, steps
        ! Write current state to file
        write(1, *) t, theta, omega

        ! Update state using Euler's method
        omega = omega - (g / L) * sin(theta) * dt
        theta = theta + omega * dt
        t = t + dt
    end do

    ! Close file
    close(1)

    print *, 'Simulation complete. Results written to pendulum_simulation.txt'
end program pendulum_simulation

Explanation:

  • Initialization: Set the initial conditions and parameters.
  • Time-stepping loop: Update the state of the system using Euler's method and write the results to a file.

  1. Practical Example: Simulating a Pendulum

Let's run the simulation and plot the results to visualize the motion of the pendulum.

Steps:

  1. Compile and run the Fortran program.
  2. Plot the results using a tool like GNUplot, Python (matplotlib), or any other plotting software.

Example Plot (using Python):

import matplotlib.pyplot as plt

# Read data from file
data = []
with open('pendulum_simulation.txt', 'r') as file:
    for line in file:
        data.append([float(x) for x in line.split()])

# Convert data to arrays
data = np.array(data)
time = data[:, 0]
theta = data[:, 1]

# Plot the results
plt.plot(time, theta)
plt.xlabel('Time (s)')
plt.ylabel('Angle (rad)')
plt.title('Pendulum Simulation')
plt.show()

  1. Exercises

Exercise 1: Damped Pendulum

Modify the pendulum simulation to include damping. The equation of motion becomes: \[ \frac{d^2\theta}{dt^2} + \frac{b}{m} \frac{d\theta}{dt} + \frac{g}{L} \sin(\theta) = 0 \] where \(b\) is the damping coefficient.

Solution:

program damped_pendulum_simulation
    implicit none
    real :: theta, omega, g, L, b, t, dt
    integer :: n, steps

    ! Initialize parameters
    g = 9.81
    L = 1.0
    b = 0.1
    theta = 0.1
    omega = 0.0
    t = 0.0
    dt = 0.01
    steps = 1000

    ! Open file to write results
    open(unit=1, file='damped_pendulum_simulation.txt', status='replace')

    ! Time-stepping loop
    do n = 1, steps
        ! Write current state to file
        write(1, *) t, theta, omega

        ! Update state using Euler's method
        omega = omega - (b / L) * omega * dt - (g / L) * sin(theta) * dt
        theta = theta + omega * dt
        t = t + dt
    end do

    ! Close file
    close(1)

    print *, 'Simulation complete. Results written to damped_pendulum_simulation.txt'
end program damped_pendulum_simulation

Exercise 2: Double Pendulum

Simulate a double pendulum system. The equations of motion are more complex and require solving a system of coupled differential equations.

Solution:

Due to the complexity, this exercise is left as an advanced challenge. Students are encouraged to research the equations of motion for a double pendulum and implement the simulation using numerical methods.

Conclusion

In this section, we have learned how to simulate physical systems using Fortran. We covered the basics of modeling physical systems, numerical methods for solving differential equations, and implemented a simple pendulum simulation. By practicing these concepts, you can extend your simulations to more complex systems and gain a deeper understanding of physical phenomena.

© Copyright 2024. All rights reserved