.:: 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: }