From b45e4419bd2576ce1af0bccbf42031c8a101bb18 Mon Sep 17 00:00:00 2001 From: qingfengxia Date: Thu, 15 Sep 2016 18:32:02 +0100 Subject: [PATCH] add help text for thermal fluid boundary for CFD --- .../Fem/App/FemConstraintFluidBoundary.cpp | 18 ++++--- .../Gui/TaskFemConstraintFluidBoundary.cpp | 50 +++++++++++++------ 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/src/Mod/Fem/App/FemConstraintFluidBoundary.cpp b/src/Mod/Fem/App/FemConstraintFluidBoundary.cpp index 63dbcd3df..2b0c8af66 100644 --- a/src/Mod/Fem/App/FemConstraintFluidBoundary.cpp +++ b/src/Mod/Fem/App/FemConstraintFluidBoundary.cpp @@ -42,9 +42,9 @@ using namespace Fem; PROPERTY_SOURCE(Fem::ConstraintFluidBoundary, Fem::Constraint); -// also defined in TaskFemConstraintFluidBoundary.cpp and foamcasebuilder/basicbuilder.py, -// please update simultaneously -// the second (index 1) is the default enum, as index 0 causes compiling error +// also defined in TaskFemConstraintFluidBoundary.cpp and FoamCaseBuilder/BasicBuilder.py, +// update simultaneously +// the second (index 1) item is the default enum, as index 0 causes compiling error static const char* BoundaryTypes[] = {"inlet","wall","outlet","interface","freestream", NULL}; static const char* WallSubtypes[] = {"unspecific", "fixed", "slip", "moving", NULL}; static const char* InletSubtypes[] = {"unspecific","totalPressure","uniformVelocity","volumetricFlowRate","massFlowRate", NULL}; @@ -53,14 +53,16 @@ static const char* InterfaceSubtypes[] = {"unspecific","symmetry","wedge","cycli static const char* FreestreamSubtypes[] = {"unspecific", "freestream",NULL}; // see Ansys fluet manual: Turbulence Specification method -static const char* TurbulenceSpecifications[] = {"Intensity&LengthScale","Intensity&HydraulicDiameter",NULL}; -// activate the heat transfer and radiation model in Solver object explorer +static const char* TurbulenceSpecifications[] = {"intensity&DissipationRate", "intensity&LengthScale","intensity&ViscosityRatio","intensity&HydraulicDiameter",NULL}; /* only used in TaskPanel -static const char* TurbulenceSpecificationHelpTexts[] = {"see Ansys fluet manual: Turbulence Specification method", - "or fully devloped internal flow, Turbulence intensity (0-1.0) 0.05 typical", NULL}; +static const char* TurbulenceSpecificationHelpTexts[] = { + * "see Ansys fluet manual: Turbulence Specification method", + * "not specified, solver will guess a value based e.g. 0.05 for inlet", + * "or fully devloped internal flow, Turbulence intensity (0-1.0) 0.05 typical", NULL}; */ -// HTC value type, not sure it is supported in OpenFOAM +// activate the heat transfer and radiation model in Solver object explorer +// also defined in FoamCaseBuilder/HeatTransferBuilder.py, update simultaneously static const char* ThermalBoundaryTypes[] = {"fixedValue","zeroGradient", "fixedGradient", "mixed", "HTC","coupled", NULL}; /* only used in TaskPanel static const char* ThermalBoundaryHelpTexts[] = {"fixed Temperature [K]", "no heat transfer ()", "fixed value heat flux [W/m2]", diff --git a/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.cpp b/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.cpp index 0cd6bccee..3c8493def 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintFluidBoundary.cpp @@ -70,24 +70,36 @@ using namespace Fem; //also defined in FemConstrainFluidBoundary and foamcasebuilder/basicbuilder.py, please update simultaneously //the second (index 1) is the default enum, as index 0 causes compiling error -//static const char* BoundaryTypes[] = {"inlet","wall","outlet","interface","freestream", NULL}; -static const char* WallSubtypes[] = {"unspecific", "fixed", "slip", "moving", NULL}; +//static const char* BoundaryTypes[] = {"inlet","wall","outlet","freestream", "interface", NULL}; +static const char* WallSubtypes[] = {"unspecific", "fixed", "slip", "partialSlip", "moving", "rough", NULL}; static const char* InletSubtypes[] = {"unspecific","totalPressure","uniformVelocity","volumetricFlowRate","massFlowRate",NULL}; static const char* OutletSubtypes[] = {"unspecific","totalPressure","staticPressure","uniformVelocity", "outFlow", NULL}; -static const char* InterfaceSubtypes[] = {"unspecific","symmetry","wedge","cyclic","empty", NULL}; +static const char* InterfaceSubtypes[] = {"unspecific","symmetryPlane","wedge","cyclic","empty", "coupled", NULL}; static const char* FreestreamSubtypes[] = {"unspecific", "freestream",NULL}; +static const char* InterfaceSubtypeHelpTexts[] = { + "invalid,select other valid interface subtype", + "symmetry plane but not axis-sym axis line", + "axis symmetric front and back surfaces", + "periodic boundary in pair, treated as physical connected", + "front and back for single layer 2D mesh, also axis-sym axis line", + "exchange boundary vale with external program, need extra manual setup like file name", NULL}; + +// defined in file FemConstraintFluidBoundary: // see Ansys fluet manual: Turbulence Specification method -//static const char* TurbulenceSpecifications[] = {"Intensity&LengthScale","Intensity&HydraulicDiameter",NULL}; +//static const char* TurbulenceSpecifications[] = {"intensity&DissipationRate", "intensity&LengthScale","intensity&ViscosityRatio", "intensity&HydraulicDiameter",NULL}; //activate the heat transfer and radiation model in Solver object explorer -static const char* TurbulenceSpecificationHelpTexts[] = {"see Ansys fluet manual: Turbulence Specification method", - "or fully devloped internal flow, Turbulence intensity (0-1.0) 0.05 typical", NULL}; +static const char* TurbulenceSpecificationHelpTexts[] = { + "explicitly specific intensity k [SI unit] and dissipation rate epsilon [] / omega []", + "intensity (0.05 ~ 0.15) and characteristic length scale of max eddy [m]", + "intensity (0.05 ~ 0.15) and turbulent viscosity ratio", + "for fully devloped internal flow, Turbulence intensity (0-1.0) 0.05 typical", NULL}; -//static const char* ThermalBoundaryTypes[] = {"fixedValue","zeroGradient", "fixedGradient", "mixed", "HTC","coupled", NULL}; +//static const char* ThermalBoundaryTypes[] = {"fixedValue","zeroGradient", "fixedGradient", "mixed", "heatFlux", "HTC","coupled", NULL}; //const char* ThermalBoundaryTypes[] = {"fixedValue","zeroGradient", "fixedGradient", "mixed", "coupled",NULL}; -static const char* ThermalBoundaryHelpTexts[] = {"fixed Temperature [K]", "no heat transfer ()", "fixed value heat flux [W/m2]", - "mixed fixedGradient and fixedValue", "Heat transfer coeff [W/(M2)/K]", "conjugate heat transfer with solid", NULL}; - +static const char* ThermalBoundaryHelpTexts[] = {"fixed Temperature [K]", "no heat transfer on boundary()", "fixed value gradient [W/m]", + "mixed fixedGradient and fixedValue", "fixed heat flux [W/m2]", "Heat transfer coeff [W/(M2)/K]", "conjugate heat transfer with solid", NULL}; +// enable & disable quantityUI once valueType is selected // internal function not declared in header file void initComboBox(QComboBox* combo, const std::vector& textItems, const char* sItem) @@ -307,6 +319,7 @@ void TaskFemConstraintFluidBoundary::updateSubtypeUI() std::string subtype = Base::Tools::toStdString(ui->comboSubtype->currentText()); if (boundaryType == "inlet" || boundaryType == "outlet") { + ui->tabBasicBoundary->setEnabled(true); if (subtype == "totalPressure" || subtype == "staticPressure"){ ui->labelBoundaryValue->setText(QString::fromUtf8("pressure [Pa]")); ui->buttonDirection->setEnabled(false); @@ -329,8 +342,7 @@ void TaskFemConstraintFluidBoundary::updateSubtypeUI() } else { ui->labelBoundaryValue->setText(QString::fromUtf8("unspecific")); - ui->buttonDirection->setEnabled(false); - ui->lineDirection->setEnabled(false); + ui->tabBasicBoundary->setEnabled(false); } } if (boundaryType == "wall") { @@ -341,7 +353,11 @@ void TaskFemConstraintFluidBoundary::updateSubtypeUI() ui->lineDirection->setEnabled(false); } else if (subtype == "slip") { - ui->labelBoundaryValue->setText(QString::fromUtf8("slip speed (m/s)")); + ui->labelBoundaryValue->setText(QString::fromUtf8("not needed")); + ui->tabBasicBoundary->setEnabled(false); + } + else if (subtype == "partialSlip") { + ui->labelBoundaryValue->setText(QString::fromUtf8("slip ratio(0~1)")); ui->tabBasicBoundary->setEnabled(true); ui->buttonDirection->setEnabled(false); ui->lineDirection->setEnabled(false); @@ -351,6 +367,12 @@ void TaskFemConstraintFluidBoundary::updateSubtypeUI() ui->tabBasicBoundary->setEnabled(false); } } + if (boundaryType == "interface") { + ui->tabBasicBoundary->setEnabled(false); + //show help text + int iInterface = ui->comboSubtype->currentIndex(); + ui->labelHelpText->setText(tr(InterfaceSubtypeHelpTexts[iInterface])); + } } @@ -364,7 +386,7 @@ void TaskFemConstraintFluidBoundary::updateThermalBoundaryUI() { Fem::ConstraintFluidBoundary* pcConstraint = static_cast(ConstraintView->getObject()); std::string thermalBoundaryType = pcConstraint->ThermalBoundaryType.getValueAsString(); - //to hide/disable UI + //to hide/disable UI according to subtype ui->labelHelpText->setText(tr(ThermalBoundaryHelpTexts[ui->comboThermalBoundaryType->currentIndex()])); }