[Base] add electrical conductivity

- this is necessary to perform electrodynamics simulations. Since the typical values are in the range of 1e6 S/m, we need the new units kS and MS

- since this is for simulations, also add electrical conductivity to the FEM material cards
This commit is contained in:
donovaly
2021-03-22 01:01:07 +01:00
committed by wmayer
parent 04cf845d77
commit bcc669b930
13 changed files with 514 additions and 438 deletions

View File

@@ -274,6 +274,8 @@ EXPO [eE][-+]?[0-9]+
"kV" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloVolt; yylval.quantity.unitStr = yytext; return UNIT; // kilo Volt
"mV" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliVolt; yylval.quantity.unitStr = yytext; return UNIT; // milli Volt
"MS" COUNTCHARS; yylval.quantity.scaler = Quantity::MegaSiemens; yylval.quantity.unitStr = yytext; return UNIT; // mega Siemens
"kS" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloSiemens; yylval.quantity.unitStr = yytext; return UNIT; // kilo Siemens
"S" COUNTCHARS; yylval.quantity.scaler = Quantity::Siemens; yylval.quantity.unitStr = yytext; return UNIT; // Siemens (A^2*s^3/kg/m^2)
"mS" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliSiemens; yylval.quantity.unitStr = yytext; return UNIT; // milli Siemens
"uS" COUNTCHARS; yylval.quantity.scaler = Quantity::MicroSiemens; yylval.quantity.unitStr = yytext; return UNIT; // micro Siemens

View File

@@ -731,6 +731,8 @@ App.Units.Volt = App.Units.Quantity('V')
App.Units.MilliVolt = App.Units.Quantity('mV')
App.Units.KiloVolt = App.Units.Quantity('kV')
App.Units.MegaSiemens = App.Units.Quantity('MS')
App.Units.KiloSiemens = App.Units.Quantity('kS')
App.Units.Siemens = App.Units.Quantity('S')
App.Units.MilliSiemens = App.Units.Quantity('mS')
App.Units.MicroSiemens = App.Units.Quantity('uS')
@@ -807,6 +809,7 @@ App.Units.ElectricalCapacitance = App.Units.Unit(-2,-1,4,2)
App.Units.ElectricalInductance = App.Units.Unit(2,1,-2,-2)
App.Units.ElectricalConductance = App.Units.Unit(-2,-1,3,2)
App.Units.ElectricalResistance = App.Units.Unit(2,1,-3,-2)
App.Units.ElectricalConductivity = App.Units.Unit(-3,-1,3,2)
App.Units.AmountOfSubstance = App.Units.Unit(0,0,0,0,0,1)
App.Units.LuminousIntensity = App.Units.Unit(0,0,0,0,0,0,1)

View File

@@ -331,6 +331,8 @@ Quantity Quantity::Volt (1e+6 ,Unit(2,1,-3,-1)); // Volt (k
Quantity Quantity::MilliVolt (1e+3 ,Unit(2,1,-3,-1));
Quantity Quantity::KiloVolt (1e+9 ,Unit(2,1,-3,-1));
Quantity Quantity::MegaSiemens (1.0 ,Unit(-2,-1,3,2));
Quantity Quantity::KiloSiemens (1e-3 ,Unit(-2,-1,3,2));
Quantity Quantity::Siemens (1e-6 ,Unit(-2,-1,3,2)); // Siemens (A^2*s^3/kg/m^2)
Quantity Quantity::MilliSiemens (1e-9 ,Unit(-2,-1,3,2));
Quantity Quantity::MicroSiemens (1e-12 ,Unit(-2,-1,3,2));

View File

@@ -268,6 +268,8 @@ public:
static Quantity MilliVolt;
static Quantity KiloVolt;
static Quantity MegaSiemens;
static Quantity KiloSiemens;
static Quantity Siemens;
static Quantity MilliSiemens;
static Quantity MicroSiemens;

File diff suppressed because it is too large Load Diff

View File

@@ -164,6 +164,8 @@ CGRP '\,'[0-9][0-9][0-9]
"kV" yylval = Quantity::KiloVolt; return UNIT; // kilo Volt
"mV" yylval = Quantity::MilliVolt; return UNIT; // milli Volt
"MS" yylval = Quantity::MegaSiemens; return UNIT; // mega Siemens
"kS" yylval = Quantity::KiloSiemens; return UNIT; // kilo Siemens
"S" yylval = Quantity::Siemens; return UNIT; // Siemens (A^2*s^3/kg/m^2)
"mS" yylval = Quantity::MilliSiemens; return UNIT; // milli Siemens
"\xC2\xB5S" yylval = Quantity::MicroSiemens; return UNIT; // micro Siemens

View File

@@ -447,6 +447,7 @@ QString Unit::getTypeString(void) const
if(*this == Unit::ElectricalInductance ) return QString::fromLatin1("ElectricalInductance");
if(*this == Unit::ElectricalConductance ) return QString::fromLatin1("ElectricalConductance");
if(*this == Unit::ElectricalResistance ) return QString::fromLatin1("ElectricalResistance");
if(*this == Unit::ElectricalConductivity ) return QString::fromLatin1("ElectricalConductivity");
if(*this == Unit::AmountOfSubstance ) return QString::fromLatin1("AmountOfSubstance");
if(*this == Unit::LuminousIntensity ) return QString::fromLatin1("LuminousIntensity");
if(*this == Unit::Pressure ) return QString::fromLatin1("Pressure");
@@ -495,6 +496,7 @@ Unit Unit::ElectricalCapacitance(-2,-1,4,2);
Unit Unit::ElectricalInductance(2,1,-2,-2);
Unit Unit::ElectricalConductance(-2,-1,3,2);
Unit Unit::ElectricalResistance(2,1,-3,-2);
Unit Unit::ElectricalConductivity(-3,-1,3,2);
Unit Unit::AmountOfSubstance(0,0,0,0,0,1);
Unit Unit::LuminousIntensity(0,0,0,0,0,0,1);

View File

@@ -121,6 +121,7 @@ public:
static Unit ElectricalInductance;
static Unit ElectricalConductance;
static Unit ElectricalResistance;
static Unit ElectricalConductivity;
static Unit AmountOfSubstance;
static Unit LuminousIntensity;

View File

@@ -360,6 +360,24 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact
factor = 1e12;
}
}
else if (unit == Unit::ElectricalConductivity) {
if (UnitValue < 1e-3) {
unitString = QString::fromLatin1("mS/m");
factor = 1e-12;
}
else if (UnitValue < 1.0) {
unitString = QString::fromLatin1("S/m");
factor = 1e-9;
}
else if (UnitValue < 1e3) {
unitString = QString::fromLatin1("kS/m");
factor = 1e-6;
}
else {
unitString = QString::fromLatin1("MS/m");
factor = 1e-3;
}
}
else if (unit == Unit::ElectricalCapacitance) {
if (UnitValue < 1e-15) {
unitString = QString::fromLatin1("pF");

View File

@@ -307,6 +307,24 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q
factor = 1e12;
}
}
else if (unit == Unit::ElectricalConductivity) {
if (UnitValue < 1e-3) {
unitString = QString::fromLatin1("mS/m");
factor = 1e-12;
}
else if (UnitValue < 1.0) {
unitString = QString::fromLatin1("S/m");
factor = 1e-9;
}
else if (UnitValue < 1e3) {
unitString = QString::fromLatin1("kS/m");
factor = 1e-6;
}
else {
unitString = QString::fromLatin1("MS/m");
factor = 1e-3;
}
}
else if (unit == Unit::ElectricalCapacitance) {
if (UnitValue < 1e-15) {
unitString = QString::fromLatin1("pF");

View File

@@ -81,6 +81,7 @@ DlgUnitsCalculator::DlgUnitsCalculator( QWidget* parent, Qt::WindowFlags fl )
<< Base::Unit::ElectricalInductance
<< Base::Unit::ElectricalConductance
<< Base::Unit::ElectricalResistance
<< Base::Unit::ElectricalConductivity
<< Base::Unit::ElectricCharge
<< Base::Unit::ElectricCurrent
<< Base::Unit::ElectricPotential

View File

@@ -94,7 +94,7 @@ YoungsModulus =
[Thermal]
; Description to be updated
; Specific capacity in [FreeCAD SpecificHeat unit]
; https://en.wikipedia.org/wiki/Heat_capacity
SpecificHeat =
@@ -106,6 +106,15 @@ ThermalConductivity =
; https://en.wikipedia.org/wiki/Volumetric_thermal_expansion_coefficient
ThermalExpansionCoefficient =
[Electrical]
; The ratio to the permittivity of the vacuum
; https://en.wikipedia.org/wiki/Relative_permittivity
RelativePermittivity =
; The electrical conductivity in [FreeCAD ElectricalConductivity unit]
; https://en.wikipedia.org/wiki/Electrical_resistivity_and_conductivity
ElectricalConductivity =
[Architectural]
; Description to be updated

View File

@@ -142,11 +142,11 @@
SpecificHeat:
Type: 'Quantity'
URL: 'https://en.wikipedia.org/wiki/Heat_capacity'
Description: " "
Description: "Specific capacity in [FreeCAD SpecificHeat unit]"
ThermalConductivity:
Type: 'Quantity'
URL: 'https://en.wikipedia.org/wiki/Thermal_conductivity'
Description: "Thermal conductivity in [FreCAD ThermalConductivity unit]"
Description: "Thermal conductivity in [FreeCAD ThermalConductivity unit]"
ThermalExpansionCoefficient:
Type: 'Quantity'
URL: 'https://en.wikipedia.org/wiki/Volumetric_thermal_expansion_coefficient'
@@ -155,7 +155,11 @@
RelativePermittivity:
Type: 'Float'
URL: 'https://en.wikipedia.org/wiki/Relative_permittivity'
Description: "a material property, expressing the ratio to the permittivity of the Vacuum"
Description: "The ratio to the permittivity of the vacuum"
ElectricalConductivity:
Type: 'Quantity'
URL: 'https://en.wikipedia.org/wiki/Electrical_resistivity_and_conductivity'
Description: "The electrical conductivity in [FreeCAD ElectricalConductivity unit]"
- Architectural:
Color:
Type: 'String'