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

Last change on this file since 1617 was 1427, checked in by dkearney, 15 years ago

adding tesla, gauss, weber and maxwell magnetic field units.
noticed python bindings do not validate the to_units before converting,
o stuff like mM-3 is not converted to /mm3 when given back to the user.
this is a minor bug right now.

File size: 8.6 KB
RevLine 
[115]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 */
[103]9#include <RpUnitsStd.h>
10#include <math.h>
11
[534]12double invert (double inVal)
13{
14    return (1.0/inVal);
15}
16
[20]17/****************************************
18 * METRIC CONVERSIONS
19 ****************************************/
20
[534]21double deci2base (double deci)
22{
23   return deci*1e-1;
24}
25
[116]26double centi2base (double centi)
[20]27{
[116]28   return centi*1e-2;
[20]29}
30
[116]31double milli2base (double milli)
[20]32{
[116]33    return milli*1e-3;
[20]34}
35
[116]36double micro2base (double micro)
[20]37{
[116]38    return micro*1e-6;
[20]39}
40
[116]41double nano2base (double nano)
[20]42{
[116]43    return nano*1e-9;
[20]44}
45
[116]46double pico2base (double pico)
[20]47{
[116]48    return pico*1e-12;
[20]49}
50
[116]51double femto2base (double femto)
[20]52{
[116]53    return femto*1e-15;
[20]54}
55
[116]56double atto2base (double atto)
[20]57{
[116]58    return atto*1e-18;
[20]59}
60
[534]61double deca2base (double deca)
62{
63    return deca*1e1;
64}
65
66double hecto2base (double hecto)
67{
68    return hecto*1e2;
69}
70
[116]71double kilo2base (double kilo)
[20]72{
[116]73    return kilo*1e3;
[20]74}
75
[116]76double mega2base (double mega)
[20]77{
[116]78    return mega*1e6;
[20]79}
80
[116]81double giga2base (double giga)
[20]82{
[116]83    return giga*1e9;
[20]84}
85
[116]86double tera2base (double tera)
[20]87{
[116]88    return tera*1e12;
[20]89}
90
[116]91double peta2base (double peta)
[20]92{
[116]93    return peta*1e15;
[20]94}
95
[534]96double exa2base (double exa)
97{
98    return exa*1e18;
99}
100
101double base2deci (double base)
102{
103    return base*1e1;
104}
105
[116]106double base2centi (double base)
[20]107{
[116]108    return base*1e2;
[20]109}
110
[116]111double base2milli (double base)
[20]112{
[116]113    return base*1e3;
[20]114}
115
[116]116double base2micro (double base)
[20]117{
[116]118    return base*1e6;
[20]119}
120
[116]121double base2nano (double base)
[20]122{
[116]123    return base*1e9;
[20]124}
125
[116]126double base2pico (double base)
[20]127{
[116]128    return base*1e12;
[20]129}
130
[116]131double base2femto (double base)
[20]132{
[116]133    return base*1e15;
[20]134}
135
[116]136double base2atto (double base)
[20]137{
[116]138    return base*1e18;
[20]139}
140
[534]141double base2deca (double base)
142{
143    return base*1e-1;
144}
145
146double base2hecto (double base)
147{
148    return base*1e-2;
149}
150
[116]151double base2kilo (double base)
[20]152{
[116]153    return base*1e-3;
[20]154}
155
[116]156double base2mega (double base)
[20]157{
[116]158    return base*1e-6;
[20]159}
160
[116]161double base2giga (double base)
[20]162{
[116]163    return base*1e-9;
[20]164}
165
[116]166double base2tera (double base)
[20]167{
[116]168    return base*1e-12;
[20]169}
170
[116]171double base2peta (double base)
[20]172{
[116]173    return base*1e-15;
[20]174}
175
[534]176double base2exa (double base)
177{
178    return base*1e-18;
179}
180
[20]181/****************************************
182 * METRIC TO NON-METRIC CONVERSIONS
[68]183 * LENGTH CONVERSIONS
184 * http://www.nodc.noaa.gov/dsdt/ucg/
[20]185 ****************************************/
186
[116]187double angstrom2meter (double angstrom)
[20]188{
[382]189    return angstrom*(1.0e-10);
[20]190}
191
[116]192double meter2angstrom (double meter)
[20]193{
[382]194    return meter*(1.0e10);
[20]195}
196
[999]197double bohr2meter (double bohr)
198{
199    return bohr*(52.9177e-12);
200}
201
202double meter2bohr (double meter)
203{
204    return meter*(52.9177e12);
205}
206
[116]207double meter2inch (double meter)
[68]208{
[382]209    return meter*(39.37008);
[68]210}
211
[534]212double inch2meter (double inch)
[68]213{
[534]214    return (inch/(39.37008));
[68]215}
216
[534]217double inch2feet (double inch)
[68]218{
[534]219    return (inch/(12.00));
[68]220}
221
[534]222double feet2inch (double ft)
[68]223{
[534]224    return (ft*(12.00));
[68]225}
226
[534]227double inch2yard (double inch)
[68]228{
[534]229    return (inch/(36.00));
[68]230}
231
[534]232double yard2inch (double yd)
[68]233{
[534]234    return (yd*(36.00));
[68]235}
236
[593]237double inch2mile (double inch)
238{
239    return (inch/(63360));
240}
241
242double mile2inch (double mi)
243{
244    return (mi*(63360));
245}
246
[20]247/****************************************
248 * TEMPERATURE CONVERSIONS
249 ****************************************/
250
251double fahrenheit2centigrade (double F)
252{
[382]253    return ((F-32.0)/(9.0/5.0));
[20]254}
255
256double centigrade2fahrenheit (double C)
257{
[382]258    return ((C*(9.0/5.0))+32.0);
[20]259}
260
261double centigrade2kelvin (double C)
262{
[382]263    return (C+273.15);
[20]264}
265
266double kelvin2centigrade (double K)
267{
[382]268    return (K-273.15);
[20]269}
270
[68]271double rankine2kelvin (double R)
272{
[534]273    return ((5.0/9.0)*R);
[68]274}
[20]275
[68]276double kelvin2rankine (double K)
277{
[534]278    return ((9.0/5.0)*K);
[68]279}
280
281double fahrenheit2kelvin (double F)
282{
[382]283    return ((F+459.67)*(5.0/9.0));
[68]284}
285
286double kelvin2fahrenheit (double K)
287{
[382]288    return (((9.0/5.0)*K)-459.67);
[68]289}
290
[534]291double fahrenheit2rankine (double F)
292{
293    return (F+459.67);
294}
295
296double rankine2fahrenheit (double R)
297{
298    return (R-459.67);
299}
300
301double rankine2celcius (double R)
302{
303    return ((R*(5.0/9.0))-273.15);
304}
305
306double celcius2rankine (double C)
307{
308    return ((C + 273.15)*(9.0/5.0));
309}
310
[68]311/****************************************
312 * ENERGY CONVERSIONS
313 ****************************************/
314
315double electronVolt2joule (double eV)
316{
[382]317    return (eV*1.602177e-19);
[68]318}
319
320double joule2electronVolt (double J)
321{
[382]322    return (J/1.602177e-19);
[68]323}
324
[103]325/****************************************
326 * MISC VOLUME CONVERSIONS
327 ****************************************/
328
[116]329double cubicMeter2usGallon (double m3)
[103]330{
[382]331    return (m3*264.1721);
[103]332}
333
[116]334double usGallon2cubicMeter (double gal)
[103]335{
[382]336    return (gal/264.1721);
[103]337}
338
[116]339double cubicFeet2usGallon (double ft3)
[103]340{
[382]341    return (ft3*7.48051);
[103]342}
343
[116]344double usGallon2cubicFeet (double gal)
[103]345{
[382]346    return (gal/7.48051);
[103]347}
348
[534]349double cubicMeter2liter (double m3)
350{
351    return (m3*1e3);
352}
353
354double liter2cubicMeter (double L)
355{
356    return (L*1e-3);
357}
358
[382]359/****************************************
360 * ANGLE CONVERSIONS
361 * http://www.metrication.com/
362 ****************************************/
[103]363
[382]364double rad2deg (double rad)
365{
366    return (rad*(180.00/M_PI));
367}
368
369double deg2rad (double deg)
370{
371    return (deg*(M_PI/180.00));
372}
373
374double rad2grad (double rad)
375{
376    return (rad*(200.00/M_PI));
377}
378
379double grad2rad (double grad)
380{
381    return (grad*(M_PI/200.00));
382}
383
384double deg2grad (double deg)
385{
386    return (deg*(10.00/9.00));
387}
388
389double grad2deg (double grad)
390{
391    return (grad*(9.00/10.00));
392}
393
[515]394/****************************************
395 * TIME CONVERSIONS
396 ****************************************/
397
398double sec2min (double sec)
399{
400    return (sec/60.00);
401}
402
403double min2sec (double min)
404{
405    return (min*60.00);
406}
407
408double sec2hour (double sec)
409{
410    return (sec/3600.00);
411}
412
413double hour2sec (double hour)
414{
415    return (hour*3600.00);
416}
417
418double sec2day (double sec)
419{
420    return (sec/86400.00);
421}
422
423double day2sec (double day)
424{
425    return (day*86400.00);
426}
427
[525]428/****************************************
429 * PRESSURE CONVERSIONS
430 * http://www.ilpi.com/msds/ref/pressureunits.html
431 * http://en.wikipedia.org/wiki/Bar_%28unit%29
432 ****************************************/
[515]433
[525]434double bar2Pa (double bar)
435{
436    return (bar*100000.00);
437}
[515]438
[525]439double Pa2bar (double Pa)
440{
441    return (Pa/100000.00);
442}
443
444double bar2atm (double bar)
445{
446    return (bar*0.98692);
447}
448
449double atm2bar (double atm)
450{
451    return (atm/0.98692);
452}
453
454double bar2torr (double bar)
455{
456    return (bar*750.06);
457}
458
459double torr2bar (double torr)
460{
461    return (torr/750.06);
462}
463
464double bar2psi (double bar)
465{
466    return (bar*14.504);
467}
468
469double psi2bar (double psi)
470{
471    return (psi*0.0689476);
472}
473
474double Pa2atm (double Pa)
475{
476    return (Pa*9.8692e-6);
477}
478
479double atm2Pa (double atm)
480{
481    // need to check this conversion
482    // tests fail
483    return (atm*101325.024);
484}
485
486double Pa2torr (double Pa)
487{
488    return (Pa*7.5006e-3);
489}
490
491double torr2Pa (double torr)
492{
493    return (torr/7.5006e-3);
494}
495
496double Pa2psi (double Pa)
497{
498    return (Pa*145.04e-6);
499}
500
501double psi2Pa (double psi)
502{
503    // need to check this conversion
504    // test fails because of truncation
505    return (psi*6894.7625831);
506}
507
508double torr2atm (double torr)
509{
510    return (torr*1.3158e-3);
511}
512
513double atm2torr (double atm)
514{
515    return (atm*760);
516}
517
518double torr2psi (double torr)
519{
520    return (torr*19.337e-3);
521}
522
523double psi2torr (double psi)
524{
525    return (psi*51.71496);
526}
527
528double torr2mmHg (double torr)
529{
530    return (torr);
531}
532
533double mmHg2torr (double mmHg)
534{
535    return (mmHg);
536}
537
[534]538double psi2atm (double psi)
539{
540    return (psi*68.046e-3);
541}
[525]542
[534]543double atm2psi (double atm)
544{
545    return (atm*14.696);
546}
547
548/****************************************
549 * CONCENTRATION CONVERSIONS
550 * http://en.wikipedia.org/wiki/PH
551 ****************************************/
552
553double pH2pOH (double pH)
554{
555    // This formula is valid exactly for
556    // temperature = 298.15 K (25 °C) only,
557    // but is acceptable for most lab calculations
558    return (14.00 - pH);
559}
560
561double pOH2pH (double pOH)
562{
563    // This formula is valid exactly for
564    // temperature = 298.15 K (25 °C) only,
565    // but is acceptable for most lab calculations
566    return (14.00 - pOH);
567}
568
[1427]569/****************************************
570 * MAGNETIC CONVERSIONS
571 * http://en.wikipedia.org/wiki/Tesla_(unit)
572 * http://en.wikipedia.org/wiki/Gauss_(unit)
573 * http://en.wikipedia.org/wiki/Maxwell_(unit)
574 * http://en.wikipedia.org/wiki/Weber_(unit)
575 ****************************************/
576
577double tesla2gauss (double tesla)
578{
579    return (tesla*1e4);
580}
581
582double gauss2tesla (double gauss)
583{
584    return (gauss*1e-4);
585}
586
587double maxwell2weber (double maxwell)
588{
589    return (maxwell*1e-8);
590}
591
592double weber2maxwell (double weber)
593{
594    return (weber*1e8);
595}
596
Note: See TracBrowser for help on using the repository browser.