source: trunk/src/core/RpUnitsStd.cc @ 122

Last change on this file since 122 was 116, checked in by dkearney, 19 years ago
  1. rewrote RpUnits::define(...) and RpUnits::convert(...) fxns.
  2. added functionality so you no longer need to call add_presets(...)
  3. RpUnits can now handle conversions as follows 1cm2/Vs -> 1e-7m2/kVus
  4. Cannot handle conversions dealing with Temperature very well because

Temperature conversions have offsets (+/- 32...). you can still do
F->C and Fs->Cs, but Fms->Cs provides unreliable results. (not to
mention that i'm still unsure how to do a conversion like this.

  1. still need to add Fo (delta fahrenheit) and Co (delta celcius)

units and conversions. These should not be effected by the notorious
temperature

  1. adjusted RpUnits_test.cc for testing. python.fortran and matlab

bindings have not been tested yet.

File size: 4.0 KB
Line 
1/*
2 * ======================================================================
3 *  Copyright (c) 2004-2005  Purdue Research Foundation
4 *
5 *  See the file "license.terms" for information on usage and
6 *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
7 * ======================================================================
8 */
9#include <RpUnitsStd.h>
10#include <math.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16/****************************************
17 * METRIC CONVERSIONS
18 ****************************************/
19
20
21double centi2base (double centi)
22{
23   return centi*1e-2;
24}
25
26double milli2base (double milli)
27{
28    return milli*1e-3;
29}
30
31double micro2base (double micro)
32{
33    return micro*1e-6;
34}
35
36double nano2base (double nano)
37{
38    return nano*1e-9;
39}
40
41double pico2base (double pico)
42{
43    return pico*1e-12;
44}
45
46double femto2base (double femto)
47{
48    return femto*1e-15;
49}
50
51double atto2base (double atto)
52{
53    return atto*1e-18;
54}
55
56double kilo2base (double kilo)
57{
58    return kilo*1e3;
59}
60
61double mega2base (double mega)
62{
63    return mega*1e6;
64}
65
66double giga2base (double giga)
67{
68    return giga*1e9;
69}
70
71double tera2base (double tera)
72{
73    return tera*1e12;
74}
75
76double peta2base (double peta)
77{
78    return peta*1e15;
79}
80
81double base2centi (double base)
82{
83    return base*1e2;
84}
85
86double base2milli (double base)
87{
88    return base*1e3;
89}
90
91double base2micro (double base)
92{
93    return base*1e6;
94}
95
96double base2nano (double base)
97{
98    return base*1e9;
99}
100
101double base2pico (double base)
102{
103    return base*1e12;
104}
105
106double base2femto (double base)
107{
108    return base*1e15;
109}
110
111double base2atto (double base)
112{
113    return base*1e18;
114}
115
116double base2kilo (double base)
117{
118    return base*1e-3;
119}
120
121double base2mega (double base)
122{
123    return base*1e-6;
124}
125
126double base2giga (double base)
127{
128    return base*1e-9;
129}
130
131double base2tera (double base)
132{
133    return base*1e-12;
134}
135
136double base2peta (double base)
137{
138    return base*1e-15;
139}
140
141/****************************************
142 * METRIC TO NON-METRIC CONVERSIONS
143 * LENGTH CONVERSIONS
144 * http://www.nodc.noaa.gov/dsdt/ucg/
145 ****************************************/
146
147double angstrom2meter (double angstrom)
148{
149        return angstrom*(1.0e-10);
150}
151
152double meter2angstrom (double meter)
153{
154        return meter*(1.0e10);
155}
156
157double meter2inch (double meter)
158{
159        return meter*(39.37008);
160}
161
162double inch2meter (double in)
163{
164        return (in/(39.37008));
165}
166
167double meter2feet (double meter)
168{
169        return (meter*(3.280840));
170}
171
172double feet2meter (double ft)
173{
174        return (ft/(3.280840));
175}
176
177double meter2yard (double meter)
178{
179        return (meter*(1.093613));
180}
181
182double yard2meter (double yd)
183{
184        return (yd/(1.093613));
185}
186
187/****************************************
188 * TEMPERATURE CONVERSIONS
189 ****************************************/
190
191double fahrenheit2centigrade (double F)
192{
193        return ((F-32.0)/(9.0/5.0));
194}
195
196double centigrade2fahrenheit (double C)
197{
198        return ((C*(9.0/5.0))+32.0);
199}
200
201double centigrade2kelvin (double C)
202{
203        return (C+273.15);
204}
205
206double kelvin2centigrade (double K)
207{
208        return (K-273.15);
209}
210
211double rankine2kelvin (double R)
212{
213        return ((9.0/5.0)*R);
214}
215
216double kelvin2rankine (double K)
217{
218        return ((5.0/9.0)*K);
219}
220
221double fahrenheit2kelvin (double F)
222{
223        return ((F+459.67)*(5.0/9.0));
224}
225
226double kelvin2fahrenheit (double K)
227{
228        return (((9.0/5.0)*K)-459.67);
229}
230
231/****************************************
232 * ENERGY CONVERSIONS
233 ****************************************/
234
235double electronVolt2joule (double eV)
236{
237        return (eV*1.602177e-19);
238}
239
240double joule2electronVolt (double J)
241{
242        return (J/1.602177e-19);
243}
244
245/****************************************
246 * MISC VOLUME CONVERSIONS
247 ****************************************/
248
249double cubicMeter2usGallon (double m3)
250{
251        return (m3*264.1721);
252}
253
254double usGallon2cubicMeter (double gal)
255{
256        return (gal/264.1721);
257}
258
259double cubicFeet2usGallon (double ft3)
260{
261        return (ft3*7.48051);
262}
263
264double usGallon2cubicFeet (double gal)
265{
266        return (gal/7.48051);
267}
268
269
270#ifdef __cplusplus
271}
272#endif
Note: See TracBrowser for help on using the repository browser.