Base: Add surface charge density unit

This commit is contained in:
André Kapelrud
2025-01-06 13:02:10 -03:00
committed by marioalexis
parent f24d24c9ac
commit aaa976953d
7 changed files with 37 additions and 1 deletions

View File

@@ -2060,6 +2060,7 @@ void Application::initTypes()
App::PropertyElectricalInductance ::init();
App::PropertyElectricalResistance ::init();
App::PropertyElectricCharge ::init();
App::PropertySurfaceChargeDensity ::init();
App::PropertyElectricCurrent ::init();
App::PropertyElectricPotential ::init();
App::PropertyElectromagneticPotential ::init();

View File

@@ -392,6 +392,17 @@ PropertyElectricCharge::PropertyElectricCharge()
setUnit(Base::Unit::ElectricCharge);
}
//**************************************************************************
// PropertySurfaceChargeDensity
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TYPESYSTEM_SOURCE(App::PropertySurfaceChargeDensity, App::PropertyQuantity)
PropertySurfaceChargeDensity::PropertySurfaceChargeDensity()
{
setUnit(Base::Unit::SurfaceChargeDensity);
}
//**************************************************************************
// PropertyElectricCurrent
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

View File

@@ -361,6 +361,19 @@ public:
~PropertyElectricCharge() override = default;
};
/** SurfaceChargeDensity property
* This is a property for representing surface charge density. It is basically a float
* property. On the Gui it has a quantity like C/m^2.
*/
class AppExport PropertySurfaceChargeDensity: public PropertyQuantity
{
TYPESYSTEM_HEADER_WITH_OVERRIDE();
public:
PropertySurfaceChargeDensity();
~PropertySurfaceChargeDensity() override = default;
};
/** ElectricCurrent property
* This is a property for representing electric currents. It is basically a
* float property. On the Gui it has a quantity like A.

View File

@@ -587,7 +587,7 @@ std::string Unit::getString() const
std::string Unit::getTypeString() const
{
static std::array<std::pair<Unit, std::string>, 55> unitSpecs {{
static std::array<std::pair<Unit, std::string>, 56> unitSpecs {{
{ Unit::Acceleration, "Acceleration" },
{ Unit::AmountOfSubstance, "AmountOfSubstance" },
{ Unit::Angle, "Angle" },
@@ -603,6 +603,7 @@ std::string Unit::getTypeString() const
{ Unit::ElectricalInductance, "ElectricalInductance" },
{ Unit::ElectricalResistance, "ElectricalResistance" },
{ Unit::ElectricCharge, "ElectricCharge" },
{ Unit::SurfaceChargeDensity, "SurfaceChargeDensity" },
{ Unit::ElectricCurrent, "ElectricCurrent" },
{ Unit::ElectricPotential, "ElectricPotential" },
{ Unit::ElectromagneticPotential, "ElectromagneticPotential" },
@@ -681,6 +682,7 @@ const Unit Unit::ElectricalConductivity (-3, -1, 3, 2);
const Unit Unit::ElectricalInductance (2, 1, -2, -2);
const Unit Unit::ElectricalResistance (2, 1, -3, -2);
const Unit Unit::ElectricCharge (0, 0, 1, 1);
const Unit Unit::SurfaceChargeDensity (-2, 0, 1, 1);
const Unit Unit::ElectricPotential (2, 1, -3, -1);
const Unit Unit::ElectromagneticPotential (1, 1, -2, -1);
const Unit Unit::Force (1, 1, -2);

View File

@@ -110,6 +110,7 @@ public:
static const Unit ElectricCurrent;
static const Unit ElectricPotential;
static const Unit ElectricCharge;
static const Unit SurfaceChargeDensity;
static const Unit MagneticFieldStrength;
static const Unit MagneticFlux;
static const Unit MagneticFluxDensity;

View File

@@ -364,6 +364,10 @@ UnitsSchemaInternal::schemaTranslate(const Quantity& quant, double& factor, std:
unitString = "C";
factor = 1.0;
}
else if (unit == Unit::SurfaceChargeDensity) {
unitString = "C/m^2";
factor = 1e-6;
}
else if (unit == Unit::CurrentDensity) {
if (UnitValue <= 1e3) {
unitString = "A/m^2";

View File

@@ -312,6 +312,10 @@ UnitsSchemaMKS::schemaTranslate(const Quantity& quant, double& factor, std::stri
unitString = "C";
factor = 1.0;
}
else if (unit == Unit::SurfaceChargeDensity) {
unitString = "C/m^2";
factor = 1e-6;
}
else if (unit == Unit::CurrentDensity) {
if (UnitValue <= 1e3) {
unitString = "A/m^2";