Skip to content

Commit

Permalink
Base: Units: add units for thermomechanical analysis
Browse files Browse the repository at this point in the history
  • Loading branch information
stoflap authored and wwmayer committed Aug 4, 2016
1 parent 984e799 commit f9c5661
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/Base/Unit.cpp
Expand Up @@ -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();

}
Expand All @@ -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);
4 changes: 4 additions & 0 deletions src/Base/Unit.h
Expand Up @@ -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:
Expand Down
22 changes: 22 additions & 0 deletions src/Base/UnitsSchemaInternal.cpp
Expand Up @@ -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");
Expand Down
22 changes: 22 additions & 0 deletions src/Base/UnitsSchemaMKS.cpp
Expand Up @@ -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();
Expand Down

0 comments on commit f9c5661

Please sign in to comment.