44 fixedValueFvPatchVectorField(
p, iF),
47 cyclicPatchLabel_(-1),
54 maxOpenFractionDelta_(0),
68 fixedValueFvPatchVectorField(ptf,
p, iF, mapper),
70 cyclicPatchName_(ptf.cyclicPatchName_),
71 cyclicPatchLabel_(ptf.cyclicPatchLabel_),
72 orientation_(ptf.orientation_),
73 initWallSf_(ptf.initWallSf_),
74 initCyclicSf_(ptf.initCyclicSf_),
75 nbrCyclicSf_(ptf.nbrCyclicSf_),
76 openFraction_(ptf.openFraction_),
77 openingTime_(ptf.openingTime_),
78 maxOpenFractionDelta_(ptf.maxOpenFractionDelta_),
91 fixedValueFvPatchVectorField(
p, iF,
dict, false),
92 pName_(
dict.getOrDefault<
word>(
"p",
"p")),
95 orientation_(
dict.
get<label>(
"orientation")),
104 ).neighbFvPatch().Sf()
106 openFraction_(
dict.
get<scalar>(
"openFraction")),
107 openingTime_(
dict.
get<scalar>(
"openingTime")),
108 maxOpenFractionDelta_(
dict.
get<scalar>(
"maxOpenFractionDelta")),
111 fvPatchVectorField::operator=(
Zero);
121 fixedValueFvPatchVectorField(ptf),
123 cyclicPatchName_(ptf.cyclicPatchName_),
124 cyclicPatchLabel_(ptf.cyclicPatchLabel_),
125 orientation_(ptf.orientation_),
126 initWallSf_(ptf.initWallSf_),
127 initCyclicSf_(ptf.initCyclicSf_),
128 nbrCyclicSf_(ptf.nbrCyclicSf_),
129 openFraction_(ptf.openFraction_),
130 openingTime_(ptf.openingTime_),
131 maxOpenFractionDelta_(ptf.maxOpenFractionDelta_),
143 fixedValueFvPatchVectorField(ptf, iF),
145 cyclicPatchName_(ptf.cyclicPatchName_),
146 cyclicPatchLabel_(ptf.cyclicPatchLabel_),
147 orientation_(ptf.orientation_),
148 initWallSf_(ptf.initWallSf_),
149 initCyclicSf_(ptf.initCyclicSf_),
150 nbrCyclicSf_(ptf.nbrCyclicSf_),
151 openFraction_(ptf.openFraction_),
152 openingTime_(ptf.openingTime_),
153 maxOpenFractionDelta_(ptf.maxOpenFractionDelta_),
165 fixedValueFvPatchVectorField::autoMap(m);
174 initWallSf_ =
patch().patchSlice(areas);
175 initCyclicSf_ =
patch().boundaryMesh()
179 nbrCyclicSf_ = refCast<const cyclicFvPatch>
185 ).neighbFvPatch().patch().patchSlice(areas);
195 fixedValueFvPatchVectorField::rmap(ptf, addr);
199 initWallSf_ =
patch().patchSlice(areas);
200 initCyclicSf_ =
patch().boundaryMesh()
204 nbrCyclicSf_ = refCast<const cyclicFvPatch>
210 ).neighbFvPatch().patch().patchSlice(areas);
222 if (curTimeIndex_ != this->db().time().
timeIndex())
229 const fvPatch& cyclicPatch =
patch().boundaryMesh()[cyclicPatchLabel_];
230 const labelList& cyclicFaceCells = cyclicPatch.patch().faceCells();
231 const fvPatch& nbrPatch = refCast<const cyclicFvPatch>
235 const labelList& nbrFaceCells = nbrPatch.patch().faceCells();
237 scalar forceDiff = 0;
240 forAll(cyclicFaceCells, facei)
242 forceDiff +=
p[cyclicFaceCells[facei]]*
mag(initCyclicSf_[facei]);
246 forAll(nbrFaceCells, facei)
248 forceDiff -=
p[nbrFaceCells[facei]]*
mag(nbrCyclicSf_[facei]);
259 this->db().time().deltaTValue()/openingTime_,
260 maxOpenFractionDelta_
262 *(orientation_*
sign(forceDiff)),
268 Info<<
"openFraction = " << openFraction_ <<
endl;
271 const vectorField newSfw((1 - openFraction_)*initWallSf_);
274 Sfw[facei] = newSfw[facei];
280 openFraction_*initCyclicSf_;
282 mag(cyclicPatch.Sf());
285 openFraction_*nbrCyclicSf_;
289 curTimeIndex_ = this->db().time().timeIndex();
292 fixedValueFvPatchVectorField::updateCoeffs();
303 os.
writeEntry(
"maxOpenFractionDelta", maxOpenFractionDelta_);
305 writeEntry(
"value",
os);
316 activeBaffleVelocityFvPatchVectorField