Switch packet code from timer thread to ao_alarm
[fw/altos] / ao-utils / ao-ejection
1 #!/usr/bin/env nickle
2
3 void main () {
4         real R = 22.16 * 12;    /* in lbf / lbm (gas constant for ffff powder */
5         real T = 3307; /* combustion temperature for BP */
6         real d_mm; /* diameter(mm) */
7         real l_mm; /* length(mm) */
8         real f_N;   /* force(N) */
9         real f_lb;
10         real A_mm²; /* area of bulkhead (mm²) */
11         real A_in²;
12         real V_mm³; /* free volume (mm³) */
13         real V_in³;
14         real M_lb;  /* mass of BP in lb */
15         real M_g;
16         real P_Nmm²;   /* pressure (N/mm²) */
17         real P_lbin²; /* pressure (psi) */
18
19         if (dim(argv) != 4) {
20                 File::fprintf(stderr,
21                               "usage: %s diameter(mm) length(mm) force(N)\n",
22                               argv[0]);
23                 exit(1);
24         }
25
26         d_mm = string_to_real(argv[1]);
27         l_mm = string_to_real(argv[2]);
28         f_N = string_to_real(argv[3]);
29         f_lb = f_N * 0.22480894;
30
31         A_mm² = pi * (d_mm/2) ** 2;
32         V_mm³ = A_mm² * l_mm;
33
34         A_in² = A_mm² / (25.4**2);
35         V_in³ = V_mm³ / (25.4**3);
36
37         P_Nmm² = f_N / A_mm²;
38
39         P_lbin² = P_Nmm² * 0.22480894 * (25.4 ** 2);
40
41         M_lb = (P_lbin² * V_in³) / (R * T);
42         M_g = M_lb * 453.59237;
43
44         printf ("Input parameters:\n");
45         printf ("    Diameter: %.1g (mm) %.3g (in)\n",
46                 d_mm, d_mm / 25.4);
47         printf ("    Length: %.1g (mm) %.3g (in)\n",
48                 l_mm, l_mm / 25.4);
49         printf ("    Force: %.1g (N) %.3g (lb)\n",
50                 f_N, f_lb);
51
52         printf ("Chamber values:\n");
53         printf ("    Area: %.0f (mm²) %.3g (in²)\n",
54                 A_mm², A_in²);
55         printf ("    Volume: %.0f (mm³) %.3g (in³)\n",
56                 V_mm³, V_in³);
57         printf ("    Pressure: %.2g (lb/in²) %.5g (N/mm²)\n",
58                 P_lbin², P_Nmm²);
59
60         printf ("Results:\n");
61         printf ("    FFFF powder: %.3g (g)\n", M_g);
62 }
63
64 main();