Base: Units for FEM, new heat and heat flux functions

This commit is contained in:
vdwalts
2016-12-20 18:10:25 +01:00
committed by Yorik van Havre
parent 93b7aceb0e
commit 59ac40a584
7 changed files with 30 additions and 6 deletions

View File

@@ -485,7 +485,7 @@ QString Unit::getTypeString(void) const
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::HeatFluxDensity ) return QString::fromLatin1("HeatFluxDensity"); else
if(*this == Unit::HeatFlux ) return QString::fromLatin1("HeatFlux"); else
return QString();
@@ -518,4 +518,4 @@ 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::HeatFluxDensity (0,1,-3,0,0);
Unit Unit::HeatFlux (0,1,-3,0,0);

View File

@@ -120,7 +120,7 @@ public:
static Unit ThermalExpansionCoefficient;
static Unit SpecificHeat;
static Unit ThermalTransferCoefficient;
static Unit HeatFluxDensity;
static Unit HeatFlux;
//@}
protected:

View File

@@ -54,6 +54,14 @@ QString UnitsSchemaCentimeters::schemaTranslate(const Base::Quantity& quant, dou
unitString = QString::fromLatin1("m^3");
factor = 1000000000.0;
}
else if (unit == Unit::Power) {
unitString = QString::fromLatin1("W");
factor = 1000000;
}
else if (unit == Unit::HeatFlux) {
unitString = QString::fromLatin1("W/m^2");
factor = 1.0;
}
else {
// default action for all cases without special treatment:
unitString = quant.getUnit().getString();

View File

@@ -155,6 +155,14 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact
factor = 0.001;
}
}
else if (unit == Unit::Power) {
unitString = QString::fromLatin1("W");
factor = 1000000;
}
else if (unit == Unit::HeatFlux) {
unitString = QString::fromLatin1("W/m^2");
factor = 1.0;
}
else {
// default action for all cases without special treatment:
unitString = quant.getUnit().getString();

View File

@@ -156,6 +156,14 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q
unitString = QString::fromLatin1("W/m^2/K");
factor = 1.0;
}
else if (unit == Unit::Power) {
unitString = QString::fromLatin1("W");
factor = 1000000;
}
else if (unit == Unit::HeatFlux) {
unitString = QString::fromLatin1("W/m^2");
factor = 1.0;
}
else {
// default action for all cases without special treatment:
unitString = quant.getUnit().getString();

View File

@@ -71,7 +71,7 @@ DlgUnitsCalculator::DlgUnitsCalculator( QWidget* parent, Qt::WindowFlags fl )
<< Base::Unit::AmountOfSubstance << Base::Unit::LuminoseIntensity << Base::Unit::Stress
<< Base::Unit::Pressure << Base::Unit::Force << Base::Unit::Work << Base::Unit::Power
<< Base::Unit::ThermalConductivity << Base::Unit::ThermalExpansionCoefficient
<< Base::Unit::SpecificHeat << Base::Unit::ThermalTransferCoefficient <<Base::Unit::HeatFluxDensity;
<< Base::Unit::SpecificHeat << Base::Unit::ThermalTransferCoefficient <<Base::Unit::HeatFlux;
for (QList<Base::Unit>::iterator it = units.begin(); it != units.end(); ++it) {
ui->unitsBox->addItem(it->getTypeString());
}

View File

@@ -110,7 +110,7 @@ TaskFemConstraintHeatflux::TaskFemConstraintHeatflux(ViewProviderFemConstraintHe
} else if (constraint_type == "DFlux") {
ui->rb_dflux->setChecked(1);
ui->sw_heatflux->setCurrentIndex(1);
Base::Quantity c = Base::Quantity(pcConstraint->DFlux.getValue(), Base::Unit::HeatFluxDensity);
Base::Quantity c = Base::Quantity(pcConstraint->DFlux.getValue(), Base::Unit::HeatFlux);
ui->if_heatflux->setValue(c);
}
@@ -196,7 +196,7 @@ void TaskFemConstraintHeatflux::Flux()
Fem::ConstraintHeatflux* pcConstraint = static_cast<Fem::ConstraintHeatflux*>(ConstraintView->getObject());
std::string name = ConstraintView->getObject()->getNameInDocument();
Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.ConstraintType = %s",name.c_str(), get_constraint_type().c_str());
Base::Quantity c = Base::Quantity(0, Base::Unit::HeatFluxDensity);
Base::Quantity c = Base::Quantity(0, Base::Unit::HeatFlux);
ui->if_heatflux->setValue(c);
pcConstraint->DFlux.setValue(0);
ui->sw_heatflux->setCurrentIndex(1);