diff options
| author | Keith Packard <keithp@keithp.com> | 2009-06-17 23:22:25 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2009-06-17 23:22:25 -0700 | 
| commit | 49bf37767d2453869f2ca2c0832d1124322c66e0 (patch) | |
| tree | 43281d8c6378760f431416f330bcfceb84acc973 | |
| parent | e59520e343c2573b1b92c0b3c4aaa93e51bc55d3 (diff) | |
Add ejection computation utility
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | Makefile.am | 2 | ||||
| -rw-r--r-- | configure.ac | 1 | ||||
| -rw-r--r-- | utils/Makefile.am | 1 | ||||
| -rwxr-xr-x | utils/ejection | 64 | 
4 files changed, 67 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am index 7bfda5bc..a619ae2b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1 +1 @@ -SUBDIRS=src aoview cctools +SUBDIRS=src aoview cctools utils diff --git a/configure.ac b/configure.ac index f7587a3a..178a53f4 100644 --- a/configure.ac +++ b/configure.ac @@ -57,4 +57,5 @@ cctools/s51/Makefile  cctools/ccmanual/Makefile  cctools/ccdump/Makefile  cctools/aoload/Makefile +utils/Makefile  ]) diff --git a/utils/Makefile.am b/utils/Makefile.am new file mode 100644 index 00000000..b0260c87 --- /dev/null +++ b/utils/Makefile.am @@ -0,0 +1 @@ +dist_bin_SCRIPTS = ejection diff --git a/utils/ejection b/utils/ejection new file mode 100755 index 00000000..81eb83d0 --- /dev/null +++ b/utils/ejection @@ -0,0 +1,64 @@ +#!/usr/bin/env nickle + +void main () { +	real R = 22.16 * 12;	/* in lbf / lbm (gas constant for ffff powder */ +	real T = 3307; /* combustion temperature for BP */ +	real d_mm; /* diameter(mm) */ +	real l_mm; /* length(mm) */ +	real f_N;   /* force(N) */ +	real f_lb; +	real A_mm²; /* area of bulkhead (mm²) */ +	real A_in²; +	real V_mm³; /* free volume (mm³) */ +	real V_in³; +	real M_lb;  /* mass of BP in lb */ +	real M_g; +	real P_Nmm²;	/* pressure (N/mm²) */ +	real P_lbin²; /* pressure (psi) */ + +	if (dim(argv) != 4) { +		File::fprintf(stderr, +			      "usage: %s diameter(mm) length(mm) force(N)\n", +			      argv[0]); +		exit(1); +	} + +	d_mm = string_to_real(argv[1]); +	l_mm = string_to_real(argv[2]); +	f_N = string_to_real(argv[3]); +	f_lb = f_N * 0.22480894; + +	A_mm² = pi * (d_mm/2) ** 2; +	V_mm³ = A_mm² * l_mm; + +	A_in² = A_mm² / (25.4**2); +	V_in³ = V_mm³ / (25.4**3); + +	P_Nmm² = f_N / A_mm²; + +	P_lbin² = P_Nmm² * 0.22480894 * (25.4 ** 2); + +	M_lb = (P_lbin² * V_in³) / (R * T); +	M_g = M_lb * 453.59237; + +	printf ("Input parameters:\n"); +	printf ("    Diameter: %.1g (mm) %.3g (in)\n", +		d_mm, d_mm / 25.4); +	printf ("    Length: %.1g (mm) %.3g (in)\n", +		l_mm, l_mm / 25.4); +	printf ("    Force: %.1g (N) %.3g (lb)\n", +		f_N, f_lb); + +	printf ("Chamber values:\n"); +	printf ("    Area: %.0f (mm²) %.3g (in²)\n", +		A_mm², A_in²); +	printf ("    Volume: %.0f (mm³) %.3g (in³)\n", +		V_mm³, V_in³); +	printf ("    Pressure: %.2g (lb/in²) %.5g (N/mm²)\n", +		P_lbin², P_Nmm²); + +	printf ("Results:\n"); +	printf ("    FFFF powder: %.3g (g)\n", M_g); +} + +main();  | 
