diff --git a/src/Base/Unit.cpp b/src/Base/Unit.cpp index 13c4fedc52..53c494dc95 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -481,11 +481,13 @@ QString Unit::getTypeString(void) const if(*this == Unit::Force ) return QString::fromLatin1("Force"); else if(*this == Unit::Work ) return QString::fromLatin1("Work"); else if(*this == Unit::Power ) return QString::fromLatin1("Power"); else + if(*this == Unit::SpecificEnergy ) return QString::fromLatin1("SpecificEnergy"); else if(*this == Unit::ThermalConductivity ) return QString::fromLatin1("ThermalConductivity"); else if(*this == Unit::ThermalExpansionCoefficient ) return QString::fromLatin1("ThermalExpansionCoefficient"); else if(*this == Unit::SpecificHeat ) return QString::fromLatin1("SpecificHeat"); else if(*this == Unit::ThermalTransferCoefficient ) return QString::fromLatin1("ThermalTransferCoefficient"); else if(*this == Unit::HeatFlux ) return QString::fromLatin1("HeatFlux"); else + if(*this == Unit::DynamicViscosity ) return QString::fromLatin1("DynamicViscosity"); else if(*this == Unit::KinematicViscosity ) return QString::fromLatin1("KinematicViscosity"); else return QString(); @@ -515,9 +517,11 @@ Unit Unit::Force (1,1,-2); Unit Unit::Work (2,1,-2); Unit Unit::Power (2,1,-3); +Unit Unit::SpecificEnergy (2,0,-2); Unit Unit::ThermalConductivity (1,1,-3,0,-1); Unit Unit::ThermalExpansionCoefficient (0,0,0,0,-1); Unit Unit::SpecificHeat (2,0,-2,0,-1); Unit Unit::ThermalTransferCoefficient (0,1,-3,0,-1); Unit Unit::HeatFlux (0,1,-3,0,0); +Unit Unit::DynamicViscosity (-1,1,-1); // SI unit: kg/m/s Unit Unit::KinematicViscosity (2,0,-1); // SI unit: m^2/s, https://en.wikipedia.org/wiki/Viscosity#Kinematic_viscosity diff --git a/src/Base/Unit.h b/src/Base/Unit.h index 79db435d6f..fc11a75341 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -116,11 +116,13 @@ public: static Unit Work; static Unit Power; + static Unit SpecificEnergy; static Unit ThermalConductivity; static Unit ThermalExpansionCoefficient; static Unit SpecificHeat; static Unit ThermalTransferCoefficient; static Unit HeatFlux; + static Unit DynamicViscosity; static Unit KinematicViscosity; //@} diff --git a/src/Base/UnitsSchemaInternal.cpp b/src/Base/UnitsSchemaInternal.cpp index 56e961d99e..1116e5d3a5 100644 --- a/src/Base/UnitsSchemaInternal.cpp +++ b/src/Base/UnitsSchemaInternal.cpp @@ -167,6 +167,10 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact unitString = QString::fromLatin1("W"); factor = 1000000; } + else if (unit == Unit::SpecificEnergy) { + unitString = QString::fromLatin1("m^2/s^2"); + factor = 1000000; + } else if (unit == Unit::HeatFlux) { unitString = QString::fromLatin1("W/m^2"); factor = 1.0; @@ -175,6 +179,10 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact unitString = QString::fromLatin1("mm/s"); factor = 1.0; } + else if (unit == Unit::DynamicViscosity) { + unitString = QString::fromLatin1("kg/(m*s)"); + factor = 0.001; + } else { // default action for all cases without special treatment: unitString = quant.getUnit().getString(); diff --git a/src/Base/UnitsSchemaMKS.cpp b/src/Base/UnitsSchemaMKS.cpp index 645bfb952e..e7b5b69151 100644 --- a/src/Base/UnitsSchemaMKS.cpp +++ b/src/Base/UnitsSchemaMKS.cpp @@ -160,6 +160,10 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q unitString = QString::fromLatin1("W"); factor = 1000000; } + else if (unit == Unit::SpecificEnergy) { + unitString = QString::fromLatin1("m^2/s^2"); + factor = 1000000; + } else if (unit == Unit::HeatFlux) { unitString = QString::fromLatin1("W/m^2"); factor = 1.0; @@ -168,6 +172,10 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q unitString = QString::fromLatin1("mm/s"); factor = 1.0; } + else if (unit == Unit::DynamicViscosity) { + unitString = QString::fromLatin1("kg/(m*s)"); + factor = 0.001; + } else { // default action for all cases without special treatment: unitString = quant.getUnit().getString();