diff --git a/src/Base/Unit.cpp b/src/Base/Unit.cpp index 48e4ee4bf5f4..5447ffd08b0f 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -467,6 +467,11 @@ 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::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 + return QString(); } @@ -493,3 +498,8 @@ Unit Unit::Pressure(-1,1,-2); // kg/m*s^2 or N/m^2 or PSI Unit Unit::Force (1,1,-2); Unit Unit::Work (2,1,-2); Unit Unit::Power (2,1,-3); + +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); diff --git a/src/Base/Unit.h b/src/Base/Unit.h index 9473b3499498..19d280218fc9 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -116,6 +116,10 @@ class BaseExport Unit static Unit Work; static Unit Power; + static Unit ThermalConductivity; + static Unit ThermalExpansionCoefficient; + static Unit SpecificHeat; + static Unit ThermalTransferCoefficient; //@} protected: diff --git a/src/Base/UnitsSchemaInternal.cpp b/src/Base/UnitsSchemaInternal.cpp index cb8fef897a31..4515e11c8608 100644 --- a/src/Base/UnitsSchemaInternal.cpp +++ b/src/Base/UnitsSchemaInternal.cpp @@ -92,6 +92,28 @@ QString UnitsSchemaInternal::schemaTranslate(Base::Quantity quant,double &factor unitString = QString::fromLatin1("kg/mm^3"); factor = 1.0; } + }else if (unit == Unit::ThermalConductivity){ + if (UnitValue < 1000){ + unitString = QString::fromLatin1("W/mm/K"); + factor = 1.0; + }else{ + unitString = QString::fromLatin1("W/m/K"); + factor = 1000.0; + } + }else if (unit == Unit::ThermalExpansionCoefficient){ + if(UnitValue < 0.001){ + unitString = QString::fromLatin1("um/m/K"); + factor = 0.000001; + }else{ + unitString = QString::fromLatin1("mm/mm/K"); + factor = 1.0; + } + }else if (unit == Unit::SpecificHeat){ + unitString = QString::fromLatin1("J/kg/K"); + factor = 1000000.0; + }else if (unit == Unit::ThermalTransferCoefficient){ + unitString = QString::fromLatin1("W/m^2/K"); + factor = 1.0; }else if ((unit == Unit::Pressure) || (unit == Unit::Stress)){ if(UnitValue < 10.0){// Pa is the smallest unitString = QString::fromLatin1("Pa"); diff --git a/src/Base/UnitsSchemaMKS.cpp b/src/Base/UnitsSchemaMKS.cpp index c7d61369c4ad..a851fefa1bcf 100644 --- a/src/Base/UnitsSchemaMKS.cpp +++ b/src/Base/UnitsSchemaMKS.cpp @@ -109,6 +109,28 @@ QString UnitsSchemaMKS::schemaTranslate(Base::Quantity quant,double &factor,QStr unitString = QString::fromLatin1("Pa"); factor = 1.0; } + }else if (unit == Unit::ThermalConductivity){ + if (UnitValue < 1000){ + unitString = QString::fromLatin1("W/mm/K"); + factor = 1.0; + }else{ + unitString = QString::fromLatin1("W/m/K"); + factor = 1000.0; + } + }else if (unit == Unit::ThermalExpansionCoefficient){ + if(UnitValue < 0.001){ + unitString = QString::fromLatin1("um/m/K"); + factor = 0.000001; + }else{ + unitString = QString::fromLatin1("m/m/K"); + factor = 1.0; + } + }else if (unit == Unit::SpecificHeat){ + unitString = QString::fromLatin1("J/kg/K"); + factor = 1000000.0; + }else if (unit == Unit::ThermalTransferCoefficient){ + unitString = QString::fromLatin1("W/m^2/K"); + factor = 1.0; }else{ // default action for all cases without special treatment: unitString = quant.getUnit().getString();