forked from mpusz/mp-units
refactor: scalar and complex renamed to real_scalar and complex_scalar respectively + concepts refactoring + electromagnetism fixes
This commit is contained in:
@@ -54,8 +54,8 @@ QUANTITY_SPEC(electric_current_density, electric_charge_density* velocity);
|
||||
QUANTITY_SPEC(linear_electric_current_density, surface_density_of_electric_charge* velocity); // vector
|
||||
QUANTITY_SPEC(electric_field_strength, force / electric_charge); // vector
|
||||
QUANTITY_SPEC(electric_potential, electric_field_strength* length,
|
||||
quantity_character::scalar); // TODO what is a correct equation here?
|
||||
QUANTITY_SPEC(electric_potential_difference, electric_potential, quantity_character::scalar);
|
||||
quantity_character::real_scalar); // TODO what is a correct equation here?
|
||||
QUANTITY_SPEC(electric_potential_difference, electric_potential, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(voltage, electric_potential);
|
||||
inline constexpr auto electric_tension = voltage;
|
||||
QUANTITY_SPEC(induced_voltage, voltage); // TODO what is a correct equation here?
|
||||
@@ -73,19 +73,20 @@ inline constexpr auto light_speed_in_vacuum = speed_of_light_in_vacuum;
|
||||
inline constexpr auto luminal_speed = speed_of_light_in_vacuum;
|
||||
QUANTITY_SPEC(electric_constant, inverse(magnetic_constant* pow<2>(speed_of_light_in_vacuum)));
|
||||
inline constexpr auto permittivity_of_vacuum = electric_constant;
|
||||
QUANTITY_SPEC(permittivity, electric_flux_density / electric_field_strength, quantity_character::scalar);
|
||||
QUANTITY_SPEC(permittivity, electric_flux_density / electric_field_strength, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(relative_permittivity, dimensionless, permittivity / electric_constant);
|
||||
QUANTITY_SPEC(electric_susceptibility, dimensionless,
|
||||
electric_polarization / electric_constant / electric_field_strength, quantity_character::scalar);
|
||||
QUANTITY_SPEC(electric_flux, electric_flux_density* area, quantity_character::scalar);
|
||||
electric_polarization / electric_constant / electric_field_strength, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(electric_flux, electric_flux_density* area, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(displacement_current_density, electric_flux_density / time); // vector
|
||||
QUANTITY_SPEC(displacement_current, electric_current, displacement_current_density* area, quantity_character::scalar);
|
||||
QUANTITY_SPEC(displacement_current, electric_current, displacement_current_density* area,
|
||||
quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(total_current, electric_current);
|
||||
QUANTITY_SPEC(total_current_density, electric_current_density); // vector
|
||||
QUANTITY_SPEC(magnetic_flux, magnetic_flux_density* area, quantity_character::scalar);
|
||||
QUANTITY_SPEC(magnetic_flux, magnetic_flux_density* area, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(magnetic_vector_potential,
|
||||
magnetic_flux_density* length); // vector // TODO what is a correct equation here?
|
||||
QUANTITY_SPEC(protoflux, magnetic_vector_potential* displacement, quantity_character::scalar);
|
||||
QUANTITY_SPEC(protoflux, magnetic_vector_potential* displacement, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(linked_magnetic_flux, magnetic_flux);
|
||||
QUANTITY_SPEC(total_magnetic_flux, magnetic_flux);
|
||||
QUANTITY_SPEC(magnetic_moment, electric_current* area, quantity_character::vector);
|
||||
@@ -93,23 +94,24 @@ inline constexpr auto magnetic_area_moment = magnetic_moment;
|
||||
QUANTITY_SPEC(magnetization, magnetic_moment / volume); // vector
|
||||
QUANTITY_SPEC(magnetic_field_strength, magnetization); // vector
|
||||
inline constexpr auto magnetizing_field = magnetic_field_strength;
|
||||
QUANTITY_SPEC(permeability, magnetic_flux_density / magnetic_field_strength, quantity_character::scalar);
|
||||
QUANTITY_SPEC(permeability, magnetic_flux_density / magnetic_field_strength, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(relative_permeability, dimensionless, permeability / magnetic_constant);
|
||||
QUANTITY_SPEC(magnetic_susceptibility, dimensionless, magnetization / magnetic_field_strength,
|
||||
quantity_character::scalar);
|
||||
quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(magnetic_polarization, magnetic_constant* magnetization); // vector
|
||||
QUANTITY_SPEC(magnetic_dipole_moment, magnetic_constant* magnetic_moment); // vector
|
||||
QUANTITY_SPEC(coercivity, magnetic_field_strength, quantity_character::scalar);
|
||||
QUANTITY_SPEC(coercivity, magnetic_field_strength, quantity_character::real_scalar);
|
||||
inline constexpr auto coercive_field_strength = coercivity;
|
||||
QUANTITY_SPEC(electromagnetic_energy_density, electric_field_strength* electric_flux_density,
|
||||
quantity_character::scalar);
|
||||
quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(Poynting_vector, electric_field_strength* magnetic_field_strength); // vector
|
||||
QUANTITY_SPEC(source_voltage, voltage);
|
||||
inline constexpr auto source_tension = source_voltage;
|
||||
QUANTITY_SPEC(magnetic_potential, electric_current); // TODO what is a correct equation here?
|
||||
QUANTITY_SPEC(magnetic_tension, electric_current, magnetic_field_strength* position_vector, quantity_character::scalar);
|
||||
QUANTITY_SPEC(magnetic_tension, electric_current, magnetic_field_strength* position_vector,
|
||||
quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(magnetomotive_force, electric_current, magnetic_field_strength* position_vector,
|
||||
quantity_character::scalar);
|
||||
quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(number_of_turns_in_a_winding, dimensionless);
|
||||
QUANTITY_SPEC(reluctance, magnetic_tension / magnetic_flux);
|
||||
QUANTITY_SPEC(permeance, inverse(reluctance));
|
||||
@@ -118,15 +120,15 @@ inline constexpr auto self_inductance = inductance;
|
||||
QUANTITY_SPEC(mutual_inductance, protoflux / electric_current);
|
||||
QUANTITY_SPEC(coupling_factor, dimensionless, mutual_inductance / pow<1, 2>(pow<2>(self_inductance)));
|
||||
QUANTITY_SPEC(leakage_factor, dimensionless, pow<2>(coupling_factor));
|
||||
QUANTITY_SPEC(conductivity, electric_current_density / electric_field_strength, quantity_character::scalar);
|
||||
QUANTITY_SPEC(conductivity, electric_current_density / electric_field_strength, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(resistivity, inverse(conductivity));
|
||||
QUANTITY_SPEC(electromagnetism_power, power, voltage* electric_current); // different name than in ISQ
|
||||
inline constexpr auto instantaneous_power = electromagnetism_power;
|
||||
QUANTITY_SPEC(resistance, voltage / electric_current);
|
||||
QUANTITY_SPEC(conductance, inverse(resistance));
|
||||
QUANTITY_SPEC(phase_difference, phase_angle);
|
||||
QUANTITY_SPEC(electric_current_phasor, electric_current, quantity_character::complex);
|
||||
QUANTITY_SPEC(voltage_phasor, voltage, quantity_character::complex);
|
||||
QUANTITY_SPEC(electric_current_phasor, electric_current, quantity_character::complex_scalar);
|
||||
QUANTITY_SPEC(voltage_phasor, voltage, quantity_character::complex_scalar);
|
||||
inline constexpr auto electric_tension_phasor = voltage_phasor;
|
||||
QUANTITY_SPEC(impedance, voltage_phasor / electric_current_phasor); // complex
|
||||
inline constexpr auto complex_impedance = impedance; // complex
|
||||
@@ -134,23 +136,23 @@ QUANTITY_SPEC(impedance_of_vacuum, impedance); // comple
|
||||
inline constexpr auto wave_impedance_in_vacuum = impedance_of_vacuum; // complex
|
||||
QUANTITY_SPEC(
|
||||
resistance_to_alternating_current, impedance,
|
||||
quantity_character::scalar); // called resistance in the latest ISQ (we use the old name to avoid ambiguity)
|
||||
QUANTITY_SPEC(reactance, impedance, quantity_character::scalar);
|
||||
QUANTITY_SPEC(apparent_impedance, impedance, quantity_character::scalar);
|
||||
quantity_character::real_scalar); // called resistance in the latest ISQ (we use the old name to avoid ambiguity)
|
||||
QUANTITY_SPEC(reactance, impedance, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(apparent_impedance, impedance, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(admittance, inverse(impedance)); // complex
|
||||
inline constexpr auto complex_admittance = admittance; // complex
|
||||
QUANTITY_SPEC(admittance_of_vacuum, admittance, inverse(impedance_of_vacuum)); // complex
|
||||
QUANTITY_SPEC(
|
||||
conductance_for_alternating_current, conductance,
|
||||
quantity_character::scalar); // called resistance in the latest ISQ (we use the old name to avoid ambiguity)
|
||||
QUANTITY_SPEC(susceptance, admittance);
|
||||
QUANTITY_SPEC(apparent_admittance, admittance, quantity_character::scalar);
|
||||
quantity_character::real_scalar); // called resistance in the latest ISQ (we use the old name to avoid ambiguity)
|
||||
QUANTITY_SPEC(susceptance, admittance, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(apparent_admittance, admittance, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(quality_factor, dimensionless, reactance / resistance);
|
||||
QUANTITY_SPEC(loss_factor, dimensionless, inverse(quality_factor));
|
||||
QUANTITY_SPEC(loss_angle, angular_measure);
|
||||
QUANTITY_SPEC(active_power, isq::power, inverse(period) * (instantaneous_power * time));
|
||||
QUANTITY_SPEC(complex_power, voltage_phasor* electric_current_phasor); // complex // separate kind
|
||||
QUANTITY_SPEC(apparent_power, complex_power, quantity_character::scalar);
|
||||
QUANTITY_SPEC(apparent_power, complex_power, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(power_factor, dimensionless, active_power / apparent_power);
|
||||
QUANTITY_SPEC(reactive_power, isq::mass* pow<2>(isq::length) / pow<3>(isq::time)); // separate kind
|
||||
QUANTITY_SPEC(non_active_power, pow<1, 2>(pow<2>(apparent_power))); // separate kind
|
||||
|
||||
@@ -60,16 +60,16 @@ QUANTITY_SPEC(impulse, force* time); // vector
|
||||
QUANTITY_SPEC(angular_momentum, position_vector* momentum); // vector
|
||||
QUANTITY_SPEC(moment_of_inertia, angular_momentum / angular_velocity, quantity_character::tensor);
|
||||
QUANTITY_SPEC(moment_of_force, position_vector* force); // vector
|
||||
QUANTITY_SPEC(torque, moment_of_force, quantity_character::scalar);
|
||||
QUANTITY_SPEC(torque, moment_of_force, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(angular_impulse, moment_of_force* time); // vector
|
||||
QUANTITY_SPEC(pressure, force / area, quantity_character::scalar);
|
||||
QUANTITY_SPEC(pressure, force / area, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(gauge_pressure, pressure);
|
||||
QUANTITY_SPEC(stress, pressure, quantity_character::tensor);
|
||||
QUANTITY_SPEC(normal_stress, pressure, quantity_character::scalar);
|
||||
QUANTITY_SPEC(shear_stress, pressure, quantity_character::scalar);
|
||||
QUANTITY_SPEC(normal_stress, pressure, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(shear_stress, pressure, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(strain, dimensionless, quantity_character::tensor);
|
||||
QUANTITY_SPEC(relative_linear_strain, length / length);
|
||||
QUANTITY_SPEC(shear_strain, dimensionless, displacement / thickness, quantity_character::scalar);
|
||||
QUANTITY_SPEC(shear_strain, dimensionless, displacement / thickness, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(relative_volume_strain, volume / volume);
|
||||
QUANTITY_SPEC(Poisson_number, dimensionless, width / length);
|
||||
QUANTITY_SPEC(modulus_of_elasticity, normal_stress / relative_linear_strain);
|
||||
@@ -82,30 +82,32 @@ QUANTITY_SPEC(compressibility, inverse(volume) * (volume / pressure));
|
||||
QUANTITY_SPEC(second_axial_moment_of_area, pow<2>(radial_distance) * area);
|
||||
QUANTITY_SPEC(second_polar_moment_of_area, pow<2>(radial_distance) * area);
|
||||
QUANTITY_SPEC(section_modulus, second_axial_moment_of_area / radial_distance);
|
||||
QUANTITY_SPEC(static_friction_coefficient, dimensionless, static_friction_force / force, quantity_character::scalar);
|
||||
QUANTITY_SPEC(static_friction_coefficient, dimensionless, static_friction_force / force,
|
||||
quantity_character::real_scalar);
|
||||
inline constexpr auto static_friction_factor = static_friction_coefficient;
|
||||
inline constexpr auto coefficient_of_static_friction = static_friction_coefficient;
|
||||
QUANTITY_SPEC(kinetic_friction_factor, dimensionless, kinetic_friction_force / force, quantity_character::scalar);
|
||||
QUANTITY_SPEC(kinetic_friction_factor, dimensionless, kinetic_friction_force / force, quantity_character::real_scalar);
|
||||
inline constexpr auto dynamic_friction_factor = kinetic_friction_factor;
|
||||
QUANTITY_SPEC(rolling_resistance_factor, force / force, quantity_character::scalar);
|
||||
QUANTITY_SPEC(rolling_resistance_factor, force / force, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(drag_coefficient, dimensionless, drag_force / (mass_density * pow<2>(speed) * area),
|
||||
quantity_character::scalar);
|
||||
quantity_character::real_scalar);
|
||||
inline constexpr auto drag_factor = drag_coefficient;
|
||||
QUANTITY_SPEC(dynamic_viscosity, shear_stress* length / velocity, quantity_character::scalar);
|
||||
QUANTITY_SPEC(dynamic_viscosity, shear_stress* length / velocity, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(kinematic_viscosity, dynamic_viscosity / mass_density);
|
||||
QUANTITY_SPEC(surface_tension, force / length, quantity_character::scalar); // TODO what is a correct equation here?
|
||||
QUANTITY_SPEC(power, mass* pow<2>(length) / pow<3>(time)); // not in ISO 80000
|
||||
QUANTITY_SPEC(mechanical_power, power, force* velocity, quantity_character::scalar);
|
||||
QUANTITY_SPEC(surface_tension, force / length,
|
||||
quantity_character::real_scalar); // TODO what is a correct equation here?
|
||||
QUANTITY_SPEC(power, mass* pow<2>(length) / pow<3>(time)); // not in ISO 80000
|
||||
QUANTITY_SPEC(mechanical_power, power, force* velocity, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(mechanical_energy, energy); // differs from ISO 80000
|
||||
QUANTITY_SPEC(potential_energy, mechanical_energy); // differs from ISO 80000
|
||||
QUANTITY_SPEC(kinetic_energy, mechanical_energy, mass* pow<2>(speed)); // differs from ISO 80000
|
||||
QUANTITY_SPEC(mechanical_work, force* displacement, quantity_character::scalar);
|
||||
QUANTITY_SPEC(mechanical_work, force* displacement, quantity_character::real_scalar);
|
||||
inline constexpr auto work = mechanical_work;
|
||||
QUANTITY_SPEC(mechanical_efficiency, mechanical_power / mechanical_power);
|
||||
QUANTITY_SPEC(mass_flow, mass_density* velocity); // vector
|
||||
QUANTITY_SPEC(mass_flow_rate, mass_flow* area, quantity_character::scalar);
|
||||
QUANTITY_SPEC(mass_flow_rate, mass_flow* area, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(mass_change_rate, mass / time);
|
||||
QUANTITY_SPEC(volume_flow_rate, velocity* area, quantity_character::scalar);
|
||||
QUANTITY_SPEC(volume_flow_rate, velocity* area, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(action, energy* time);
|
||||
|
||||
} // namespace mp_units::isq
|
||||
|
||||
@@ -57,7 +57,7 @@ QUANTITY_SPEC(propagation_coefficient, cotes_angle_constant / length);
|
||||
QUANTITY_SPEC(angular_momentum, position_vector* momentum / cotes_angle_constant); // vector
|
||||
QUANTITY_SPEC(moment_of_inertia, angular_momentum / angular_velocity, quantity_character::tensor);
|
||||
QUANTITY_SPEC(moment_of_force, position_vector* force / cotes_angle_constant); // vector
|
||||
QUANTITY_SPEC(torque, moment_of_force, quantity_character::scalar);
|
||||
QUANTITY_SPEC(torque, moment_of_force, quantity_character::real_scalar);
|
||||
QUANTITY_SPEC(angular_impulse, moment_of_force* time); // vector
|
||||
QUANTITY_SPEC(loss_angle, angular_measure);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user