mirror of
https://github.com/josdejong/mathjs.git
synced 2026-01-18 14:59:29 +00:00
Added electrical units and unit tests
This commit is contained in:
parent
b9614dd9c2
commit
dfbc575bc1
@ -1136,6 +1136,33 @@ function factory (type, config, load, typed) {
|
||||
PRESSURE: {
|
||||
dimensions: [1, -1, -2, 0, 0, 0, 0, 0, 0]
|
||||
},
|
||||
|
||||
ELECTRIC_CHARGE: {
|
||||
dimensions: [0, 0, 1, 1, 0, 0, 0, 0, 0]
|
||||
},
|
||||
ELECTRIC_CAPACITANCE: {
|
||||
dimensions: [-1, -2, 4, 2, 0, 0, 0, 0, 0]
|
||||
},
|
||||
ELECTRIC_POTENTIAL: {
|
||||
dimensions: [1, 2, -3, -1, 0, 0, 0, 0, 0]
|
||||
},
|
||||
ELECTRIC_RESISTANCE: {
|
||||
dimensions: [1, 2, -3, -2, 0, 0, 0, 0, 0]
|
||||
},
|
||||
ELECTRIC_INDUCTANCE: {
|
||||
dimensions: [1, 2, -2, -2, 0, 0, 0, 0, 0]
|
||||
},
|
||||
ELECTRIC_CONDUCTANCE: {
|
||||
dimensions: [-1, -2, 3, 2, 0, 0, 0, 0, 0]
|
||||
},
|
||||
MAGNETIC_FLUX: {
|
||||
dimensions: [1, 2, -2, -1, 0, 0, 0, 0, 0]
|
||||
},
|
||||
MAGNETIC_FLUX_DENSITY: {
|
||||
dimensions: [1, 0, -2, -1, 0, 0, 0, 0, 0]
|
||||
},
|
||||
|
||||
|
||||
ANGLE: {
|
||||
dimensions: [0, 0, 0, 0, 0, 0, 0, 1, 0]
|
||||
},
|
||||
@ -1964,6 +1991,21 @@ function factory (type, config, load, typed) {
|
||||
value: 1055.05585262,
|
||||
offset: 0
|
||||
},
|
||||
eV: {
|
||||
name: 'eV',
|
||||
base: BASE_UNITS.ENERGY,
|
||||
prefixes: PREFIXES.SHORT,
|
||||
value: 1.602176565e-19,
|
||||
offset: 0
|
||||
},
|
||||
electronvolt: {
|
||||
name: 'electronvolt',
|
||||
base: BASE_UNITS.ENERGY,
|
||||
prefixes: PREFIXES.LONG,
|
||||
value: 1.602176565e-19,
|
||||
offset: 0
|
||||
},
|
||||
|
||||
|
||||
// Power
|
||||
W: {
|
||||
@ -2004,6 +2046,129 @@ function factory (type, config, load, typed) {
|
||||
offset: 0
|
||||
},
|
||||
|
||||
// Electric charge
|
||||
coulomb: {
|
||||
name: 'coulomb',
|
||||
base: BASE_UNITS.ELECTRIC_CHARGE,
|
||||
prefixes: PREFIXES.LONG,
|
||||
value: 1,
|
||||
offset: 0,
|
||||
},
|
||||
C: {
|
||||
name: 'C',
|
||||
base: BASE_UNITS.ELECTRIC_CHARGE,
|
||||
prefixes: PREFIXES.SHORT,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
// Electric capacitance
|
||||
farad: {
|
||||
name: 'farad',
|
||||
base: BASE_UNITS.ELECTRIC_CAPACITANCE,
|
||||
prefixes: PREFIXES.LONG,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
F: {
|
||||
name: 'F',
|
||||
base: BASE_UNITS.ELECTRIC_CAPACITANCE,
|
||||
prefixes: PREFIXES.SHORT,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
// Electric potential
|
||||
volt: {
|
||||
name: 'volt',
|
||||
base: BASE_UNITS.ELECTRIC_POTENTIAL,
|
||||
prefixes: PREFIXES.LONG,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
V: {
|
||||
name: 'V',
|
||||
base: BASE_UNITS.ELECTRIC_POTENTIAL,
|
||||
prefixes: PREFIXES.SHORT,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
// Electric resistance
|
||||
ohm: {
|
||||
name: 'ohm',
|
||||
base: BASE_UNITS.ELECTRIC_RESISTANCE,
|
||||
prefixes: PREFIXES.LONG,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
/*
|
||||
Ω: {
|
||||
name: 'Ω',
|
||||
base: BASE_UNITS.ELECTRIC_RESISTANCE,
|
||||
prefixes: PREFIXES.SHORT,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
*/
|
||||
// Electric inductance
|
||||
henry: {
|
||||
name: 'henry',
|
||||
base: BASE_UNITS.ELECTRIC_INDUCTANCE,
|
||||
prefixes: PREFIXES.LONG,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
H: {
|
||||
name: 'H',
|
||||
base: BASE_UNITS.ELECTRIC_INDUCTANCE,
|
||||
prefixes: PREFIXES.SHORT,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
// Electric conductance
|
||||
siemens: {
|
||||
name: 'siemens',
|
||||
base: BASE_UNITS.ELECTRIC_CONDUCTANCE,
|
||||
prefixes: PREFIXES.LONG,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
S: {
|
||||
name: 'S',
|
||||
base: BASE_UNITS.ELECTRIC_CONDUCTANCE,
|
||||
prefixes: PREFIXES.SHORT,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
// Magnetic flux
|
||||
weber: {
|
||||
name: 'weber',
|
||||
base: BASE_UNITS.MAGNETIC_FLUX,
|
||||
prefixes: PREFIXES.LONG,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
Wb: {
|
||||
name: 'Wb',
|
||||
base: BASE_UNITS.MAGNETIC_FLUX,
|
||||
prefixes: PREFIXES.SHORT,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
// Magnetic flux density
|
||||
tesla: {
|
||||
name: 'tesla',
|
||||
base: BASE_UNITS.MAGNETIC_FLUX_DENSITY,
|
||||
prefixes: PREFIXES.LONG,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
T: {
|
||||
name: 'T',
|
||||
base: BASE_UNITS.MAGNETIC_FLUX_DENSITY,
|
||||
prefixes: PREFIXES.SHORT,
|
||||
value: 1,
|
||||
offset: 0
|
||||
},
|
||||
|
||||
// Binary
|
||||
b: {
|
||||
name: 'b',
|
||||
@ -2083,8 +2248,20 @@ function factory (type, config, load, typed) {
|
||||
gradients: 'grad',
|
||||
cycles: 'cycle',
|
||||
|
||||
joules: 'joule',
|
||||
watts: 'watt',
|
||||
BTUs: 'BTU',
|
||||
|
||||
amperes: 'ampere',
|
||||
moles: 'mole'
|
||||
coulombs: 'coulomb',
|
||||
volts: 'volts',
|
||||
ohms: 'ohm',
|
||||
farads: 'farad',
|
||||
webers: 'weber',
|
||||
teslas: 'tesla',
|
||||
electronvolts: 'electronvolt',
|
||||
moles: 'mole'
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
@ -2095,22 +2272,30 @@ function factory (type, config, load, typed) {
|
||||
var UNIT_SYSTEMS = {
|
||||
si: {
|
||||
// Base units
|
||||
NONE: {unit: UNIT_NONE, prefix: PREFIXES.NONE['']},
|
||||
LENGTH: {unit: UNITS.m, prefix: PREFIXES.SHORT['']},
|
||||
MASS: {unit: UNITS.g, prefix: PREFIXES.SHORT['k']},
|
||||
TIME: {unit: UNITS.s, prefix: PREFIXES.SHORT['']},
|
||||
CURRENT: {unit: UNITS.A, prefix: PREFIXES.SHORT['']},
|
||||
TEMPERATURE: {unit: UNITS.K, prefix: PREFIXES.SHORT['']},
|
||||
LUMINOUS_INTENSITY: {unit: UNITS.cd, prefix: PREFIXES.SHORT['']},
|
||||
AMOUNT_OF_SUBSTANCE: {unit: UNITS.mol, prefix: PREFIXES.SHORT['']},
|
||||
ANGLE: {unit: UNITS.rad, prefix: PREFIXES.SHORT['']},
|
||||
BIT: {unit: UNITS.bit, prefix: PREFIXES.SHORT['']},
|
||||
NONE: {unit: UNIT_NONE, prefix: PREFIXES.NONE['']},
|
||||
LENGTH: {unit: UNITS.m, prefix: PREFIXES.SHORT['']},
|
||||
MASS: {unit: UNITS.g, prefix: PREFIXES.SHORT['k']},
|
||||
TIME: {unit: UNITS.s, prefix: PREFIXES.SHORT['']},
|
||||
CURRENT: {unit: UNITS.A, prefix: PREFIXES.SHORT['']},
|
||||
TEMPERATURE: {unit: UNITS.K, prefix: PREFIXES.SHORT['']},
|
||||
LUMINOUS_INTENSITY: {unit: UNITS.cd, prefix: PREFIXES.SHORT['']},
|
||||
AMOUNT_OF_SUBSTANCE: {unit: UNITS.mol, prefix: PREFIXES.SHORT['']},
|
||||
ANGLE: {unit: UNITS.rad, prefix: PREFIXES.SHORT['']},
|
||||
BIT: {unit: UNITS.bit, prefix: PREFIXES.SHORT['']},
|
||||
|
||||
// Derived units
|
||||
FORCE: {unit: UNITS.N, prefix: PREFIXES.SHORT['']},
|
||||
ENERGY: {unit: UNITS.J, prefix: PREFIXES.SHORT['']},
|
||||
POWER: {unit: UNITS.W, prefix: PREFIXES.SHORT['']},
|
||||
PRESSURE: {unit: UNITS.Pa, prefix: PREFIXES.SHORT['']},
|
||||
FORCE: {unit: UNITS.N, prefix: PREFIXES.SHORT['']},
|
||||
ENERGY: {unit: UNITS.J, prefix: PREFIXES.SHORT['']},
|
||||
POWER: {unit: UNITS.W, prefix: PREFIXES.SHORT['']},
|
||||
PRESSURE: {unit: UNITS.Pa, prefix: PREFIXES.SHORT['']},
|
||||
ELECTRIC_CHARGE: {unit: UNITS.C, prefix: PREFIXES.SHORT['']},
|
||||
ELECTRIC_CAPACITANCE: {unit: UNITS.F, prefix: PREFIXES.SHORT['']},
|
||||
ELECTRIC_POTENTIAL: {unit: UNITS.V, prefix: PREFIXES.SHORT['']},
|
||||
ELECTRIC_RESISTANCE: {unit: UNITS.ohm, prefix: PREFIXES.SHORT['']},
|
||||
ELECTRIC_INDUCTANCE: {unit: UNITS.H, prefix: PREFIXES.SHORT['']},
|
||||
ELECTRIC_CONDUCTANCE: {unit: UNITS.S, prefix: PREFIXES.SHORT['']},
|
||||
MAGNETIC_FLUX: {unit: UNITS.Wb, prefix: PREFIXES.SHORT['']},
|
||||
MAGNETIC_FLUX_DENSITY: {unit: UNITS.T, prefix: PREFIXES.SHORT['']}
|
||||
}
|
||||
};
|
||||
|
||||
@ -2120,6 +2305,8 @@ function factory (type, config, load, typed) {
|
||||
UNIT_SYSTEMS.cgs.MASS = {unit: UNITS.g, prefix: PREFIXES.SHORT['']};
|
||||
UNIT_SYSTEMS.cgs.FORCE = {unit: UNITS.dyn, prefix: PREFIXES.SHORT['']};
|
||||
UNIT_SYSTEMS.cgs.ENERGY = {unit: UNITS.erg, prefix: PREFIXES.NONE['']};
|
||||
// there are wholly 4 unique cgs systems for electricity and magnetism,
|
||||
// so let's not worry about it unless somebody complains
|
||||
|
||||
UNIT_SYSTEMS.us = JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));
|
||||
UNIT_SYSTEMS.us.LENGTH = {unit: UNITS.ft, prefix: PREFIXES.NONE['']};
|
||||
|
||||
@ -704,5 +704,17 @@ describe('unit', function() {
|
||||
});
|
||||
});
|
||||
|
||||
// TODO: test the value of each of the available units...
|
||||
describe('UNITS', function() {
|
||||
it('should be of the correct value and dimension', function() {
|
||||
assert.equal(new Unit(1, 's A'), new Unit(1, 'C'));
|
||||
assert.equal(new Unit(1, 'W/A'), new Unit(1, 'V'));
|
||||
assert.equal(new Unit(1, 'V/A'), new Unit(1, 'ohm'));
|
||||
assert.equal(new Unit(1, 'C/V'), new Unit(1, 'F'));
|
||||
assert.equal(new Unit(1, 'J/A'), new Unit(1, 'Wb'));
|
||||
assert.equal(new Unit(1, 'Wb/m^2'), new Unit(1, 'T'));
|
||||
assert.equal(new Unit(1, 'Wb/A'), new Unit(1, 'H'));
|
||||
assert.equal(new Unit(1, 'ohm^-1'), new Unit(1, 'S'));
|
||||
assert.equal(new Unit(1, 'eV'), new Unit(1.602176565e-19, 'J'));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user