From 5da01ab8b0acac041fe554396f2abc30ef4d8541 Mon Sep 17 00:00:00 2001 From: qingfengxia Date: Sat, 23 May 2020 00:03:09 +0200 Subject: [PATCH] Base: add VolExpansionCoeff and complete KinematicViscosity unit --- src/Base/Unit.cpp | 2 ++ src/Base/Unit.h | 1 + src/Base/UnitsSchemaInternal.cpp | 32 ++++++++++++++++++++++++++------ src/Base/UnitsSchemaMKS.cpp | 14 ++++++++++++++ 4 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/Base/Unit.cpp b/src/Base/Unit.cpp index f3c63b763f..bbf1f18010 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -456,6 +456,7 @@ QString Unit::getTypeString(void) const if(*this == Unit::SpecificEnergy ) return QString::fromLatin1("SpecificEnergy"); if(*this == Unit::ThermalConductivity ) return QString::fromLatin1("ThermalConductivity"); if(*this == Unit::ThermalExpansionCoefficient ) return QString::fromLatin1("ThermalExpansionCoefficient"); + if(*this == Unit::VolumetricThermalExpansionCoefficient ) return QString::fromLatin1("VolumetricThermalExpansionCoefficient"); if(*this == Unit::SpecificHeat ) return QString::fromLatin1("SpecificHeat"); if(*this == Unit::ThermalTransferCoefficient ) return QString::fromLatin1("ThermalTransferCoefficient"); if(*this == Unit::HeatFlux ) return QString::fromLatin1("HeatFlux"); @@ -513,6 +514,7 @@ 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::VolumetricThermalExpansionCoefficient (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); diff --git a/src/Base/Unit.h b/src/Base/Unit.h index 8eb733ee99..eb539a13a4 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -137,6 +137,7 @@ public: static Unit SpecificEnergy; static Unit ThermalConductivity; static Unit ThermalExpansionCoefficient; + static Unit VolumetricThermalExpansionCoefficient; static Unit SpecificHeat; static Unit ThermalTransferCoefficient; static Unit HeatFlux; diff --git a/src/Base/UnitsSchemaInternal.cpp b/src/Base/UnitsSchemaInternal.cpp index 6340abfb68..556371e8ad 100644 --- a/src/Base/UnitsSchemaInternal.cpp +++ b/src/Base/UnitsSchemaInternal.cpp @@ -161,7 +161,7 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact else if (unit == Unit::ThermalConductivity) { if (UnitValue > 1000000) { unitString = QString::fromLatin1("W/mm/K"); - factor = 1000000.0; + factor = 1e6; } else { unitString = QString::fromLatin1("W/m/K"); @@ -170,7 +170,7 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact } else if (unit == Unit::ThermalExpansionCoefficient) { if (UnitValue < 0.001) { - unitString = QString::fromUtf8("\xC2\xB5m/m/K"); + unitString = QString::fromUtf8("\xC2\xB5m/m/K"); // micro-meter/meter/K factor = 0.000001; } else { @@ -178,9 +178,19 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact factor = 1.0; } } + else if (unit == Unit::VolumetricThermalExpansionCoefficient) { + if (UnitValue < 0.001) { + unitString = QString::fromUtf8("mm^3/m^3/K"); + factor = 1e-9; + } + else { + unitString = QString::fromLatin1("m^3/m^3/K"); + factor = 1.0; + } + } else if (unit == Unit::SpecificHeat) { unitString = QString::fromLatin1("J/kg/K"); - factor = 1000000.0; + factor = 1e6; } else if (unit == Unit::ThermalTransferCoefficient) { unitString = QString::fromLatin1("W/m^2/K"); @@ -298,7 +308,7 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact } else if (unit == Unit::HeatFlux) { unitString = QString::fromLatin1("W/m^2"); - factor = 1.0; + factor = 1; // unit signiture (0,1,-3,0,0) is length independent } else if (unit == Unit::ElectricCharge) { unitString = QString::fromLatin1("C"); @@ -417,8 +427,18 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact factor = 1.0; } else if (unit == Unit::DynamicViscosity) { - unitString = QString::fromLatin1("kg/(m*s)"); - factor = 0.001; + unitString = QString::fromLatin1("kg/(mm*s)"); + factor = 1.0; + } + else if (unit == Unit::KinematicViscosity) { + if (UnitValue < 1e3) { + unitString = QString::fromLatin1("mm^2/s"); + factor = 1.0; + } + else { + unitString = QString::fromLatin1("m^2/s"); + factor = 1e6; + } } else { // default action for all cases without special treatment: diff --git a/src/Base/UnitsSchemaMKS.cpp b/src/Base/UnitsSchemaMKS.cpp index b01c86c3a7..55bfabbca1 100644 --- a/src/Base/UnitsSchemaMKS.cpp +++ b/src/Base/UnitsSchemaMKS.cpp @@ -203,6 +203,16 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q factor = 1.0; } } + else if (unit == Unit::VolumetricThermalExpansionCoefficient) { + if (UnitValue < 0.001) { + unitString = QString::fromUtf8("mm^3/m^3/K"); + factor = 1e-9; + } + else { + unitString = QString::fromLatin1("m^3/m^3/K"); + factor = 1.0; + } + } else if (unit == Unit::SpecificHeat) { unitString = QString::fromLatin1("J/kg/K"); factor = 1000000.0; @@ -423,6 +433,10 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q unitString = QString::fromLatin1("kg/(m*s)"); factor = 0.001; } + else if (unit == Unit::KinematicViscosity) { + unitString = QString::fromLatin1("m^2/s)"); + factor = 1e6; + } else { // default action for all cases without special treatment: unitString = quant.getUnit().getString();