Added stiffness units to FreeCAD [mN/m, N/m, kN/m, MN/m]

This commit is contained in:
Preslav
2021-08-11 21:18:10 +01:00
committed by Preslav Aleksandrov
parent 09d9caf438
commit 4ab37fc0ca
14 changed files with 454 additions and 342 deletions

View File

@@ -248,6 +248,12 @@ EXPO [eE][-+]?[0-9]+
"kN" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloNewton; yylval.quantity.unitStr = yytext; return UNIT; // kilo Newton
"MN" COUNTCHARS; yylval.quantity.scaler = Quantity::MegaNewton; yylval.quantity.unitStr = yytext; return UNIT; // mega Newton
"N/m" COUNTCHARS; yylval.quantity.scaler = Quantity::NewtonPerMeter; yylval.quantity.unitStr = yytext; return UNIT; // NewtonPerMeter (N/m or kg/s^2)
"mN/m" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliNewtonPerMeter; yylval.quantity.unitStr = yytext; return UNIT; // milli NewtonPerMeter
"kN/m" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloNewtonPerMeter; yylval.quantity.unitStr = yytext; return UNIT; // kilo NewtonPerMeter
"MN/m" COUNTCHARS; yylval.quantity.scaler = Quantity::MegaNewtonPerMeter; yylval.quantity.unitStr = yytext; return UNIT; // mega NewtonPerMeter
"Pa" COUNTCHARS; yylval.quantity.scaler = Quantity::Pascal; yylval.quantity.unitStr = yytext; return UNIT; // Pascal (kg/m*s^2 or N/m^2)
"kPa" COUNTCHARS; yylval.quantity.scaler = Quantity::KiloPascal; yylval.quantity.unitStr = yytext; return UNIT; // kilo Pascal
"MPa" COUNTCHARS; yylval.quantity.scaler = Quantity::MegaPascal; yylval.quantity.unitStr = yytext; return UNIT; // mega Pascal

View File

@@ -707,6 +707,11 @@ App.Units.MilliNewton = App.Units.Quantity('mN')
App.Units.KiloNewton = App.Units.Quantity('kN')
App.Units.MegaNewton = App.Units.Quantity('MN')
App.Units.NewtonPerMeter = App.Units.Quantity('N/m')
App.Units.MilliNewtonPerMeter = App.Units.Quantity('mN/m')
App.Units.KiloNewtonPerMeter = App.Units.Quantity('kN/m')
App.Units.MegaNewtonPerMeter = App.Units.Quantity('MN/m')
App.Units.Pascal = App.Units.Quantity('Pa')
App.Units.KiloPascal = App.Units.Quantity('kPa')
App.Units.MegaPascal = App.Units.Quantity('MPa')
@@ -828,6 +833,8 @@ App.Units.Force = App.Units.Unit(1,1,-2)
App.Units.Work = App.Units.Unit(2,1,-2)
App.Units.Power = App.Units.Unit(2,1,-3)
App.Units.Stiffness = App.Units.Unit(0,1,-2)
App.Units.SpecificEnergy = App.Units.Unit(2,0,-2)
App.Units.ThermalConductivity = App.Units.Unit(1,1,-3,0,-1)
App.Units.ThermalExpansionCoefficient = App.Units.Unit(0,0,0,0,-1)

View File

@@ -314,6 +314,11 @@ Quantity Quantity::MilliNewton (1.0 ,Unit(1,1,-2));
Quantity Quantity::KiloNewton (1e+6 ,Unit(1,1,-2));
Quantity Quantity::MegaNewton (1e+9 ,Unit(1,1,-2));
Quantity Quantity::NewtonPerMeter (1.00 ,Unit(0,1,-2)); //Newton per meter (N/m or kg/s^2)
Quantity Quantity::MilliNewtonPerMeter (1e-3 ,Unit(0,1,-2));
Quantity Quantity::KiloNewtonPerMeter (1e3 ,Unit(0,1,-2));
Quantity Quantity::MegaNewtonPerMeter (1e6 ,Unit(0,1,-2));
Quantity Quantity::Pascal (0.001 ,Unit(-1,1,-2)); // Pascal (kg/m/s^2 or N/m^2)
Quantity Quantity::KiloPascal (1.00 ,Unit(-1,1,-2));
Quantity Quantity::MegaPascal (1000.0 ,Unit(-1,1,-2));

View File

@@ -244,6 +244,11 @@ public:
static Quantity KiloNewton;
static Quantity MegaNewton;
static Quantity NewtonPerMeter;
static Quantity MilliNewtonPerMeter;
static Quantity KiloNewtonPerMeter;
static Quantity MegaNewtonPerMeter;
static Quantity Pascal;
static Quantity KiloPascal;
static Quantity MegaPascal;

File diff suppressed because it is too large Load Diff

View File

@@ -138,6 +138,11 @@ CGRP '\,'[0-9][0-9][0-9]
"kN" yylval = Quantity::KiloNewton; return UNIT; // kilo Newton
"MN" yylval = Quantity::MegaNewton; return UNIT; // mega Newton
"N/m" yylval = Quantity::NewtonPerMeter; return UNIT; // Newton per meter (N/m or kg/s^2)
"mN/m" yylval = Quantity::MilliNewtonPerMeter;return UNIT; // milli Newton per meter
"kN/m" yylval = Quantity::KiloNewtonPerMeter; return UNIT; // kilo Newton per meter
"MN/m" yylval = Quantity::MegaNewtonPerMeter; return UNIT; // mega Newton per meter
"Pa" yylval = Quantity::Pascal; return UNIT; // Pascal (kg/m/s^2 or N/m^2)
"kPa" yylval = Quantity::KiloPascal; return UNIT; // kilo Pascal
"MPa" yylval = Quantity::MegaPascal; return UNIT; // mega Pascal

View File

@@ -454,6 +454,7 @@ QString Unit::getTypeString(void) const
if(*this == Unit::Force ) return QString::fromLatin1("Force");
if(*this == Unit::Work ) return QString::fromLatin1("Work");
if(*this == Unit::Power ) return QString::fromLatin1("Power");
if(*this == Unit::Stiffness ) return QString::fromLatin1("Stiffness");
if(*this == Unit::SpecificEnergy ) return QString::fromLatin1("SpecificEnergy");
if(*this == Unit::ThermalConductivity ) return QString::fromLatin1("ThermalConductivity");
if(*this == Unit::ThermalExpansionCoefficient ) return QString::fromLatin1("ThermalExpansionCoefficient");
@@ -509,6 +510,9 @@ Unit Unit::UltimateTensileStrength (-1,1,-2);
Unit Unit::YieldStrength (-1,1,-2);
Unit Unit::YoungsModulus (-1,1,-2);
// Stiffness [kg/s^-2]
Unit Unit::Stiffness (0,1,-2);
Unit Unit::Force (1,1,-2);
Unit Unit::Work (2,1,-2);
Unit Unit::Power (2,1,-3);

View File

@@ -134,6 +134,8 @@ public:
static Unit YieldStrength;
static Unit YoungsModulus;
static Unit Stiffness;
static Unit Force;
static Unit Work;
static Unit Power;

View File

@@ -132,6 +132,10 @@ QString UnitsSchemaImperial1::schemaTranslate(const Quantity &quant, double &fac
factor = 6.894744825494;
}
}
else if (unit == Unit::Stiffness) { // Conversion to lbf/in
unitString = QString::fromLatin1("lbf/in");
factor = 4.448222/0.0254;
}
else if (unit == Unit::Velocity) {
unitString = QString::fromLatin1("in/min");
factor = 25.4/60;

View File

@@ -218,6 +218,25 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact
factor = 0.001;
}
}
else if ((unit == Unit::Stiffness)) {
if (UnitValue < 1){// mN/m is the smallest
unitString = QString::fromLatin1("mN/m");
factor = 1e-3;
}
if (UnitValue < 1e3) {
unitString = QString::fromLatin1("N/m");
factor = 1.0;
}
else if (UnitValue < 1e6) {
unitString = QString::fromLatin1("kN/m");
factor = 1e3;
}
else {
unitString = QString::fromLatin1("MN/m");
factor = 1e6;
}
}
else if (unit == Unit::Force) {
if (UnitValue < 1e3) {
unitString = QString::fromLatin1("mN");

View File

@@ -169,6 +169,25 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q
factor = 0.001;
}
}
else if ((unit == Unit::Stiffness)) {
if (UnitValue < 1){// mN/m is the smallest
unitString = QString::fromLatin1("mN/m");
factor = 1e-3;
}
if (UnitValue < 1e3) {
unitString = QString::fromLatin1("N/m");
factor = 1.0;
}
else if (UnitValue < 1e6) {
unitString = QString::fromLatin1("kN/m");
factor = 1e3;
}
else {
unitString = QString::fromLatin1("MN/m");
factor = 1e6;
}
}
else if (unit == Unit::ThermalConductivity) {
if (UnitValue > 1000000) {
unitString = QString::fromLatin1("W/mm/K");

View File

@@ -87,6 +87,7 @@ DlgUnitsCalculator::DlgUnitsCalculator( QWidget* parent, Qt::WindowFlags fl )
<< Base::Unit::ElectricPotential
<< Base::Unit::Frequency
<< Base::Unit::Force
<< Base::Unit::Stiffness
<< Base::Unit::HeatFlux
<< Base::Unit::Length
<< Base::Unit::LuminousIntensity

View File

@@ -92,6 +92,10 @@ YieldStrength =
; https://en.wikipedia.org/wiki/Young%27s_modulus
YoungsModulus =
; Stiffness (or Spring Stiffness) in [FreeCAD Stiffness unit]
; https://en.wikipedia.org/wiki/Stiffness
Stiffness =
[Thermal]
; Specific capacity in [FreeCAD SpecificHeat unit]

View File

@@ -138,6 +138,10 @@
Type: 'Quantity'
URL: 'https://en.wikipedia.org/wiki/Young%27s_modulus'
Description: "Young's modulus (or E-Module) in [FreeCAD Pressure unit]"
Stiffness:
Type: 'Quantity'
URL: 'https://en.wikipedia.org/wiki/Stiffness'
Description: "Stiffness (or Spring Stiffness) in [FreeCAD Stiffness unit]"
- Thermal:
SpecificHeat:
Type: 'Quantity'