Base: Units: add units for thermomechanical analysis

This commit is contained in:
vdwalts 2016-08-01 21:56:08 +01:00 committed by wmayer
parent 984e7994a4
commit f9c5661096
4 changed files with 58 additions and 0 deletions

View File

@ -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);

View File

@ -116,6 +116,10 @@ public:
static Unit Work;
static Unit Power;
static Unit ThermalConductivity;
static Unit ThermalExpansionCoefficient;
static Unit SpecificHeat;
static Unit ThermalTransferCoefficient;
//@}
protected:

View File

@ -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");

View File

@ -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();