mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of /home/dm4/OpenFOAM/OpenFOAM-dev
This commit is contained in:
@ -69,11 +69,26 @@
|
||||
</Documentation>
|
||||
</IntVectorProperty>
|
||||
|
||||
<!-- Interpolate Fields check-box -->
|
||||
<IntVectorProperty
|
||||
name="UiInterpolateVolFields"
|
||||
command="SetInterpolateVolFields"
|
||||
number_of_elements="1"
|
||||
is_internal="1"
|
||||
default_values="1"
|
||||
animateable="0">
|
||||
<BooleanDomain name="bool"/>
|
||||
<Documentation>
|
||||
Interpolate volume fields into point fields
|
||||
</Documentation>
|
||||
</IntVectorProperty>
|
||||
|
||||
<!-- Extrapolate Patches check-box -->
|
||||
<IntVectorProperty
|
||||
name="ExtrapolatePatches"
|
||||
name="UiExtrapolatePatches"
|
||||
command="SetExtrapolatePatches"
|
||||
number_of_elements="1"
|
||||
is_internal="1"
|
||||
default_values="0"
|
||||
animateable="0">
|
||||
<BooleanDomain name="bool"/>
|
||||
|
||||
@ -59,7 +59,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
|
||||
pqAutoGeneratedObjectPanel(proxy, p)
|
||||
{
|
||||
// create first sublayout (at top of the panel)
|
||||
QGridLayout *form = new QGridLayout();
|
||||
QGridLayout* form = new QGridLayout();
|
||||
this->PanelLayout->addLayout(form, 0, 0, 1, -1);
|
||||
|
||||
vtkSMProperty* prop = 0;
|
||||
@ -107,6 +107,9 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
|
||||
);
|
||||
}
|
||||
|
||||
QFrame* hline1 = new QFrame(this);
|
||||
hline1->setFrameStyle(QFrame::HLine | QFrame::Sunken);
|
||||
form->addWidget(hline1, 1, 0, 1, 2);
|
||||
|
||||
// checkbox for caching mesh
|
||||
if ((prop = this->proxy()->GetProperty("UiCacheMesh")) != 0)
|
||||
@ -124,7 +127,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
|
||||
"Cache the fvMesh in memory."
|
||||
);
|
||||
|
||||
form->addWidget(CacheMesh_, 1, 0, Qt::AlignLeft);
|
||||
form->addWidget(CacheMesh_, 2, 0, Qt::AlignLeft);
|
||||
connect
|
||||
(
|
||||
CacheMesh_,
|
||||
@ -152,7 +155,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
|
||||
);
|
||||
|
||||
// row/col 0,1
|
||||
form->addWidget(ShowPatchNames_, 1, 1, Qt::AlignLeft);
|
||||
form->addWidget(ShowPatchNames_, 2, 1, Qt::AlignLeft);
|
||||
connect
|
||||
(
|
||||
ShowPatchNames_,
|
||||
@ -180,7 +183,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
|
||||
);
|
||||
|
||||
// row/col 1,0
|
||||
form->addWidget(IncludeSets_, 2, 0, Qt::AlignLeft);
|
||||
form->addWidget(IncludeSets_, 3, 0, Qt::AlignLeft);
|
||||
connect
|
||||
(
|
||||
IncludeSets_,
|
||||
@ -209,7 +212,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
|
||||
);
|
||||
|
||||
// row/col 1,1
|
||||
form->addWidget(IncludeZones_, 2, 1, Qt::AlignLeft);
|
||||
form->addWidget(IncludeZones_, 3, 1, Qt::AlignLeft);
|
||||
connect
|
||||
(
|
||||
IncludeZones_,
|
||||
@ -219,6 +222,63 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel
|
||||
);
|
||||
}
|
||||
|
||||
// checkbox for vol field interpolation
|
||||
if ((prop = this->proxy()->GetProperty("UiInterpolateVolFields")) != 0)
|
||||
{
|
||||
// immediate update on the Server Manager side
|
||||
prop->SetImmediateUpdate(true);
|
||||
|
||||
InterpolateVolFields_ = new QCheckBox("Interpolate volFields");
|
||||
InterpolateVolFields_->setChecked
|
||||
(
|
||||
vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
|
||||
);
|
||||
InterpolateVolFields_->setToolTip
|
||||
(
|
||||
"Interpolate volFields into pointFields"
|
||||
);
|
||||
|
||||
// row/col 1,1
|
||||
form->addWidget(InterpolateVolFields_, 4, 0, Qt::AlignLeft);
|
||||
connect
|
||||
(
|
||||
InterpolateVolFields_,
|
||||
SIGNAL(stateChanged(int)),
|
||||
this,
|
||||
SLOT(InterpolateVolFieldsToggled())
|
||||
);
|
||||
}
|
||||
|
||||
// checkbox for extrapolate patches
|
||||
if ((prop = this->proxy()->GetProperty("UiExtrapolatePatches")) != 0)
|
||||
{
|
||||
// immediate update on the Server Manager side
|
||||
prop->SetImmediateUpdate(true);
|
||||
|
||||
ExtrapolatePatches_ = new QCheckBox("Extrapolate Patches");
|
||||
ExtrapolatePatches_->setChecked
|
||||
(
|
||||
vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0)
|
||||
);
|
||||
ExtrapolatePatches_->setToolTip
|
||||
(
|
||||
"Extrapolate internalField to non-constraint patches"
|
||||
);
|
||||
|
||||
// row/col 1,1
|
||||
form->addWidget(ExtrapolatePatches_, 4, 1, Qt::AlignLeft);
|
||||
connect
|
||||
(
|
||||
ExtrapolatePatches_,
|
||||
SIGNAL(stateChanged(int)),
|
||||
this,
|
||||
SLOT(ExtrapolatePatchesToggled())
|
||||
);
|
||||
}
|
||||
|
||||
QFrame* hline2 = new QFrame(this);
|
||||
hline2->setFrameStyle(QFrame::HLine | QFrame::Sunken);
|
||||
form->addWidget(hline2, 5, 0, 1, 2);
|
||||
}
|
||||
|
||||
|
||||
@ -255,8 +315,7 @@ void pqPV3FoamReaderPanel::ZeroTimeToggled()
|
||||
this->proxy()->GetProperty("UiZeroTime")
|
||||
)->SetElement(0, ZeroTime_->isChecked());
|
||||
|
||||
// update everything
|
||||
RefreshPressed();
|
||||
this->setModified();
|
||||
}
|
||||
|
||||
|
||||
@ -306,7 +365,32 @@ void pqPV3FoamReaderPanel::IncludeZonesToggled()
|
||||
{
|
||||
this->proxy()->UpdatePropertyInformation(prop);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void pqPV3FoamReaderPanel::ExtrapolatePatchesToggled()
|
||||
{
|
||||
vtkSMProperty* prop;
|
||||
|
||||
vtkSMIntVectorProperty::SafeDownCast
|
||||
(
|
||||
this->proxy()->GetProperty("UiExtrapolatePatches")
|
||||
)->SetElement(0, ExtrapolatePatches_->isChecked());
|
||||
|
||||
this->setModified();
|
||||
}
|
||||
|
||||
|
||||
void pqPV3FoamReaderPanel::InterpolateVolFieldsToggled()
|
||||
{
|
||||
vtkSMProperty* prop;
|
||||
|
||||
vtkSMIntVectorProperty::SafeDownCast
|
||||
(
|
||||
this->proxy()->GetProperty("UiInterpolateVolFields")
|
||||
)->SetElement(0, InterpolateVolFields_->isChecked());
|
||||
|
||||
this->setModified();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -77,6 +77,13 @@ class pqPV3FoamReaderPanel
|
||||
//- IncludeZones checkbox
|
||||
QCheckBox* IncludeZones_;
|
||||
|
||||
//- InterpolateVolFields checkbox
|
||||
QCheckBox* InterpolateVolFields_;
|
||||
|
||||
//- ExtrapolatePatches checkbox
|
||||
QCheckBox* ExtrapolatePatches_;
|
||||
|
||||
|
||||
protected slots:
|
||||
|
||||
void CacheMeshToggled();
|
||||
@ -85,6 +92,8 @@ protected slots:
|
||||
void ShowPatchNamesToggled();
|
||||
void IncludeSetsToggled();
|
||||
void IncludeZonesToggled();
|
||||
void InterpolateVolFieldsToggled();
|
||||
void ExtrapolatePatchesToggled();
|
||||
|
||||
|
||||
public:
|
||||
@ -97,7 +106,6 @@ public:
|
||||
|
||||
//- Destructor
|
||||
// virtual ~pqPV3FoamReaderPanel();
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -85,6 +85,7 @@ vtkPV3FoamReader::vtkPV3FoamReader()
|
||||
IncludeSets = 0;
|
||||
IncludeZones = 0;
|
||||
ShowPatchNames = 0;
|
||||
InterpolateVolFields = 1;
|
||||
|
||||
UpdateGUI = 0;
|
||||
|
||||
|
||||
@ -121,6 +121,11 @@ public:
|
||||
virtual void SetShowPatchNames(int);
|
||||
vtkGetMacro(ShowPatchNames, int);
|
||||
|
||||
// Description:
|
||||
// OpenFOAM volField interpolation
|
||||
vtkSetMacro(InterpolateVolFields, int);
|
||||
vtkGetMacro(InterpolateVolFields, int);
|
||||
|
||||
// Description:
|
||||
// Get the current timestep
|
||||
int GetTimeStep();
|
||||
@ -170,6 +175,7 @@ public:
|
||||
|
||||
void SelectionModified();
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
//- Construct null
|
||||
@ -203,6 +209,7 @@ protected:
|
||||
//- The file name for this case
|
||||
char* FileName;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
//- Disallow default bitwise copy construct
|
||||
@ -224,6 +231,7 @@ private:
|
||||
int IncludeSets;
|
||||
int IncludeZones;
|
||||
int ShowPatchNames;
|
||||
int InterpolateVolFields;
|
||||
|
||||
//- Dummy variable/switch to invoke a reader update
|
||||
int UpdateGUI;
|
||||
|
||||
@ -505,6 +505,7 @@ class vtkPV3Foam
|
||||
const fvMesh&,
|
||||
const PtrList<PrimitivePatchInterpolation<primitivePatch> >&,
|
||||
const IOobjectList&,
|
||||
const bool interpFields,
|
||||
vtkMultiBlockDataSet* output
|
||||
);
|
||||
|
||||
|
||||
@ -120,25 +120,27 @@ void Foam::vtkPV3Foam::convertVolFields
|
||||
}
|
||||
|
||||
|
||||
bool interpFields = reader_->GetInterpolateVolFields();
|
||||
|
||||
convertVolFields<scalar>
|
||||
(
|
||||
mesh, ppInterpList, objects, output
|
||||
mesh, ppInterpList, objects, interpFields, output
|
||||
);
|
||||
convertVolFields<vector>
|
||||
(
|
||||
mesh, ppInterpList, objects, output
|
||||
mesh, ppInterpList, objects, interpFields, output
|
||||
);
|
||||
convertVolFields<sphericalTensor>
|
||||
(
|
||||
mesh, ppInterpList, objects, output
|
||||
mesh, ppInterpList, objects, interpFields, output
|
||||
);
|
||||
convertVolFields<symmTensor>
|
||||
(
|
||||
mesh, ppInterpList, objects, output
|
||||
mesh, ppInterpList, objects, interpFields, output
|
||||
);
|
||||
convertVolFields<tensor>
|
||||
(
|
||||
mesh, ppInterpList, objects, output
|
||||
mesh, ppInterpList, objects, interpFields, output
|
||||
);
|
||||
|
||||
if (debug)
|
||||
|
||||
@ -48,6 +48,7 @@ void Foam::vtkPV3Foam::convertVolFields
|
||||
const fvMesh& mesh,
|
||||
const PtrList<PrimitivePatchInterpolation<primitivePatch> >& ppInterpList,
|
||||
const IOobjectList& objects,
|
||||
const bool interpFields,
|
||||
vtkMultiBlockDataSet* output
|
||||
)
|
||||
{
|
||||
@ -74,6 +75,19 @@ void Foam::vtkPV3Foam::convertVolFields
|
||||
|
||||
// Interpolated field (demand driven)
|
||||
autoPtr<GeometricField<Type, pointPatchField, pointMesh> > ptfPtr;
|
||||
if (interpFields)
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
Info<< "convertVolFieldBlock interpolating:" << tf.name()
|
||||
<< endl;
|
||||
}
|
||||
|
||||
ptfPtr.reset
|
||||
(
|
||||
volPointInterpolation::New(tf.mesh()).interpolate(tf).ptr()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// Convert activated internalMesh regions
|
||||
@ -154,14 +168,17 @@ void Foam::vtkPV3Foam::convertVolFields
|
||||
datasetNo
|
||||
);
|
||||
|
||||
convertPatchPointField
|
||||
(
|
||||
tf.name(),
|
||||
ppInterpList[patchId].faceToPointInterpolate(tpptf)(),
|
||||
output,
|
||||
arrayRangePatches_,
|
||||
datasetNo
|
||||
);
|
||||
if (interpFields)
|
||||
{
|
||||
convertPatchPointField
|
||||
(
|
||||
tf.name(),
|
||||
ppInterpList[patchId].faceToPointInterpolate(tpptf)(),
|
||||
output,
|
||||
arrayRangePatches_,
|
||||
datasetNo
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -174,14 +191,17 @@ void Foam::vtkPV3Foam::convertVolFields
|
||||
datasetNo
|
||||
);
|
||||
|
||||
convertPatchPointField
|
||||
(
|
||||
tf.name(),
|
||||
ppInterpList[patchId].faceToPointInterpolate(ptf)(),
|
||||
output,
|
||||
arrayRangePatches_,
|
||||
datasetNo
|
||||
);
|
||||
if (interpFields)
|
||||
{
|
||||
convertPatchPointField
|
||||
(
|
||||
tf.name(),
|
||||
ppInterpList[patchId].faceToPointInterpolate(ptf)(),
|
||||
output,
|
||||
arrayRangePatches_,
|
||||
datasetNo
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -285,29 +305,18 @@ void Foam::vtkPV3Foam::convertVolFieldBlock
|
||||
decompLst[datasetNo]
|
||||
);
|
||||
|
||||
if (!ptfPtr.valid())
|
||||
if (ptfPtr.valid())
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
Info<< "convertVolFieldBlock interpolating:" << tf.name()
|
||||
<< endl;
|
||||
}
|
||||
|
||||
ptfPtr.reset
|
||||
convertPointField
|
||||
(
|
||||
volPointInterpolation::New(tf.mesh()).interpolate(tf).ptr()
|
||||
ptfPtr(),
|
||||
tf,
|
||||
output,
|
||||
range,
|
||||
datasetNo,
|
||||
decompLst[datasetNo]
|
||||
);
|
||||
}
|
||||
|
||||
convertPointField
|
||||
(
|
||||
ptfPtr(),
|
||||
tf,
|
||||
output,
|
||||
range,
|
||||
datasetNo,
|
||||
decompLst[datasetNo]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -120,11 +120,17 @@ do
|
||||
-archOption | --archOption)
|
||||
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
|
||||
archOption="$2"
|
||||
# replace WM_ARCH_OPTION=...
|
||||
_inlineSed \
|
||||
etc/bashrc \
|
||||
'/^[^#]/s@WM_ARCH_OPTION=.*@WM_ARCH_OPTION='"$archOption@" \
|
||||
"Replacing WM_ARCH_OPTION setting by '$archOption'"
|
||||
current_archOption=`grep WM_ARCH_OPTION= etc/bashrc | sed "s/export WM_ARCH_OPTION=//"`
|
||||
if [ "$archOption" != "$current_archOption" ]
|
||||
then
|
||||
# replace WM_ARCH_OPTION=...
|
||||
_inlineSed \
|
||||
etc/bashrc \
|
||||
'/^[^#]/s@WM_ARCH_OPTION=.*@WM_ARCH_OPTION='"$archOption@" \
|
||||
"Replacing WM_ARCH_OPTION setting by '$archOption'"
|
||||
else
|
||||
echo "WM_ARCH_OPTION already set to $archOption"
|
||||
fi
|
||||
shift 2
|
||||
;;
|
||||
-paraviewInstall | --paraviewInstall)
|
||||
|
||||
@ -94,7 +94,7 @@ Foam::cyclicAMIFvPatchField<Type>::cyclicAMIFvPatchField
|
||||
"cyclicAMIFvPatchField<Type>::cyclicAMIFvPatchField"
|
||||
"("
|
||||
"const fvPatch&, "
|
||||
"const Field<Type>&, "
|
||||
"const DimensionedField<Type, volMesh>&, "
|
||||
"const dictionary&"
|
||||
")",
|
||||
dict
|
||||
@ -106,7 +106,7 @@ Foam::cyclicAMIFvPatchField<Type>::cyclicAMIFvPatchField
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
|
||||
if (this->coupled())
|
||||
if (!dict.found("value") && this->coupled())
|
||||
{
|
||||
this->evaluate(Pstream::blocking);
|
||||
}
|
||||
|
||||
@ -367,6 +367,52 @@ Foam::scalar Foam::liquidProperties::D(scalar p, scalar T, scalar Wb) const
|
||||
}
|
||||
|
||||
|
||||
Foam::scalar Foam::liquidProperties::pvInvert(scalar p)
|
||||
{
|
||||
scalar T = Tc_;
|
||||
scalar deltaT = 10.0;
|
||||
scalar dp0 = pv(p, T) - p;
|
||||
|
||||
|
||||
label n = 0;
|
||||
|
||||
while ((n < 200) && (mag(deltaT) > 1.0e-3))
|
||||
{
|
||||
n++;
|
||||
scalar pBoil = pv(p, T);
|
||||
scalar dp = pBoil - p;
|
||||
|
||||
if ((dp > 0.0) && (dp0 > 0.0))
|
||||
{
|
||||
T -= deltaT;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((dp < 0.0) && (dp0 < 0.0))
|
||||
{
|
||||
T += deltaT;
|
||||
}
|
||||
else
|
||||
{
|
||||
deltaT *= 0.5;
|
||||
if ((dp > 0.0) && (dp0 < 0.0))
|
||||
{
|
||||
T -= deltaT;
|
||||
}
|
||||
else
|
||||
{
|
||||
T += deltaT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dp0 = dp;
|
||||
}
|
||||
|
||||
return T;
|
||||
}
|
||||
|
||||
|
||||
void Foam::liquidProperties::writeData(Ostream& os) const
|
||||
{
|
||||
|
||||
|
||||
@ -251,6 +251,10 @@ public:
|
||||
//- Vapour diffussivity [m2/s] with specified binary pair
|
||||
virtual scalar D(scalar p, scalar T, scalar Wb) const;
|
||||
|
||||
//- Invert the vapour pressure relationship to retrieve the
|
||||
// boiling temperuture as a function of temperature
|
||||
virtual scalar pvInvert(scalar p);
|
||||
|
||||
|
||||
// I-O
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@ FoamFile
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object p;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -23,36 +24,52 @@ boundaryField
|
||||
inlet
|
||||
{
|
||||
type uniformTotalPressure;
|
||||
rho none;
|
||||
psi none;
|
||||
gamma 1;
|
||||
p0 40;
|
||||
pressure table
|
||||
(
|
||||
(0 10)
|
||||
(1 40)
|
||||
);
|
||||
p0 40; // only used for restarts
|
||||
U U;
|
||||
phi phi;
|
||||
rho none;
|
||||
psi none;
|
||||
gamma 1;
|
||||
value uniform 40;
|
||||
}
|
||||
|
||||
outlet1
|
||||
{
|
||||
type fixedValue;
|
||||
value uniform 10;
|
||||
}
|
||||
|
||||
outlet2
|
||||
{
|
||||
type fixedValue;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
baffles
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
fan_half0
|
||||
{
|
||||
type fan;
|
||||
patchType cyclic;
|
||||
jump uniform 0;
|
||||
f 2(100 -0.1);
|
||||
value uniform 0;
|
||||
}
|
||||
fan_half1
|
||||
{
|
||||
type fan;
|
||||
patchType cyclic;
|
||||
jump uniform 0;
|
||||
f 2(100 -0.1);
|
||||
value uniform 0;
|
||||
}
|
||||
defaultFaces
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
Reference in New Issue
Block a user