C:\> Rostislav Persion's Projects

.:: Rain Drop Terminal Velocity ::.
Finding out the maximum speed of a rain drop given it's size


This program produces multiple rain drop simulations across a domain of possible rain drop diameters. The largest possible rain drop is 5mm diameter. This is because at larger sizes the drops break apart into smaller parts.

Here is a chart I made using the data from my simulation (terminal velocity / diameter of rain drop)





   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:  using System.Threading.Tasks;
   6:  using System.IO;
   7:   
   8:  namespace RainDrop001
   9:  {
  10:      class Program
  11:      {
  12:   
  13:          static double Drag(double velocity, double diameter) // COMPUTE AIR DRAG
  14:          {
  15:              double area = Math.PI * Math.Pow(diameter / 2, 2);
  16:              //F = .5 * density_of_air * velocity^2 * drag_coef * area
  17:              return .5 * 1.225 * Math.Pow(velocity, 2) * .47 * area * Math.Sign(velocity);
  18:          }
  19:   
  20:          static void Main(string[] args)
  21:          {
  22:   
  23:   
  24:   
  25:   
  26:   
  27:   
  28:   
  29:              for (double d = 0.01; d < 5; d += .01)
  30:              {
  31:   
  32:                  double height = 500;        // initial height
  33:                  double diam = d * 0.001;        // diameter of rain drop 
  34:                  double mass = ((4 / 3) * Math.PI * Math.Pow(diam / 2, 3)) * 1000;
  35:   
  36:                  double v = 0;               // initial velocity
  37:   
  38:                  double dt = 0.0001;         // delta time
  39:   
  40:                  while (height > 0)
  41:                  {
  42:                      double a = (-Drag(v, diam) / mass) - 9.8; // calculate acceleration
  43:                      v += a * dt;
  44:                      height += v * dt;
  45:   
  46:                  }
  47:   
  48:   
  49:                  //File.AppendAllText(@"C:\Users\Rostislav\Desktop\raindrop.txt", d.ToString() + ", " + Math.Round(-v * 2.23694, 2).ToString() + Environment.NewLine);
  50:   
  51:                  Console.ForegroundColor = ConsoleColor.Green;
  52:                  Console.WriteLine("DIAMETER (mm): " + d);
  53:                  Console.WriteLine("SPEED (mph): " + Math.Round(v * 2.23694, 2));
  54:                  Console.WriteLine("ENERGY (Joules): " + .5 * mass * Math.Pow(v,2));
  55:                  Console.WriteLine();
  56:   
  57:              }
  58:              Console.WriteLine("DONE.");
  59:              Console.ReadLine();
  60:          }
  61:      }
  62:  }