kinematicSingleLayer.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2017 OpenFOAM Foundation
9  Copyright (C) 2019 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 \*---------------------------------------------------------------------------*/
28 
29 #include "kinematicSingleLayer.H"
30 #include "fvm.H"
31 #include "fvcDiv.H"
32 #include "fvcLaplacian.H"
33 #include "fvcSnGrad.H"
34 #include "fvcReconstruct.H"
35 #include "fvcVolumeIntegrate.H"
36 #include "fvcFlux.H"
38 #include "mappedWallPolyPatch.H"
39 #include "mapDistribute.H"
40 #include "filmThermoModel.H"
41 
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 
44 namespace Foam
45 {
46 namespace regionModels
47 {
48 namespace surfaceFilmModels
49 {
50 
51 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
52 
53 defineTypeNameAndDebug(kinematicSingleLayer, 0);
54 
55 addToRunTimeSelectionTable(surfaceFilmRegionModel, kinematicSingleLayer, mesh);
56 
57 // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
58 
60 {
62  {
63  const dictionary& solution = this->solution().subDict("PISO");
64  solution.readEntry("momentumPredictor", momentumPredictor_);
65  solution.readIfPresent("nOuterCorr", nOuterCorr_);
66  solution.readEntry("nCorr", nCorr_);
67  solution.readEntry("nNonOrthCorr", nNonOrthCorr_);
68 
69  return true;
70  }
71 
72  return false;
73 }
74 
75 
77 {
78  rho_ == filmThermo_->rho();
79  mu_ == filmThermo_->mu();
80  sigma_ == filmThermo_->sigma();
81 }
82 
83 
85 {
86  if (debug)
87  {
89  }
90 
91  rhoSpPrimary_ == dimensionedScalar(rhoSp_.dimensions(), Zero);
92  USpPrimary_ == dimensionedVector(USp_.dimensions(), Zero);
93  pSpPrimary_ == dimensionedScalar(pSp_.dimensions(), Zero);
94 }
95 
96 
98 {
100 
101  // Update fields from primary region via direct mapped
102  // (coupled) boundary conditions
107 }
108 
109 
111 {
112  if (debug)
113  {
114  InfoInFunction << endl;
115  }
116 
117  volScalarField::Boundary& rhoSpPrimaryBf =
119 
120  volVectorField::Boundary& USpPrimaryBf =
122 
123  volScalarField::Boundary& pSpPrimaryBf =
125 
126  // Convert accumulated source terms into per unit area per unit time
127  const scalar deltaT = time_.deltaTValue();
129  {
130  scalarField rpriMagSfdeltaT
131  (
132  (1.0/deltaT)
133  /primaryMesh().magSf().boundaryField()[patchi]
134  );
135 
136  rhoSpPrimaryBf[patchi] *= rpriMagSfdeltaT;
137  USpPrimaryBf[patchi] *= rpriMagSfdeltaT;
138  pSpPrimaryBf[patchi] *= rpriMagSfdeltaT;
139  }
140 
141  // Retrieve the source fields from the primary region via direct mapped
142  // (coupled) boundary conditions
143  // - fields require transfer of values for both patch AND to push the
144  // values into the first layer of internal cells
148 
149  // update addedMassTotal counter
150  if (time().writeTime())
151  {
152  if (debug)
153  {
154  rhoSp_.write();
155  USp_.write();
156  pSp_.write();
157  }
158 
159  scalar addedMassTotal = 0.0;
160  outputProperties().readIfPresent("addedMassTotal", addedMassTotal);
161  addedMassTotal += returnReduce(addedMassTotal_, sumOp<scalar>());
162  outputProperties().add("addedMassTotal", addedMassTotal, true);
163  addedMassTotal_ = 0.0;
164  }
165 }
166 
167 
169 {
170  return tmp<volScalarField>
171  (
172  new volScalarField
173  (
174  IOobject
175  (
176  typeName + ":pu",
177  time_.timeName(),
178  regionMesh(),
181  ),
182  pPrimary_ // pressure (mapped from primary region)
183  - pSp_ // accumulated particle impingement
184  - fvc::laplacian(sigma_, delta_) // surface tension
185  )
186  );
187 }
188 
189 
191 {
192  return tmp<volScalarField>
193  (
194  new volScalarField
195  (
196  IOobject
197  (
198  typeName + ":pp",
199  time_.timeName(),
200  regionMesh(),
203  ),
204  -rho_*gNormClipped() // hydrostatic effect only
205  )
206  );
207 }
208 
209 
211 {
213 }
214 
215 
217 {
218  if (debug)
219  {
220  InfoInFunction << endl;
221  }
222 
223  // Update injection model - mass returned is mass available for injection
225 
226  // Update transfer model - mass returned is mass available for transfer
228 
229  // Update mass source field
231 
232  turbulence_->correct();
233 }
234 
235 
237 {
238  const volScalarField deltaRho0(deltaRho_);
239 
240  solveContinuity();
241 
242  if (debug)
243  {
247  + dimensionedScalar("SMALL", dimMass*dimVolume, ROOTVSMALL);
248 
249  const scalar sumLocalContErr =
250  (
252  ).value();
253 
254  const scalar globalContErr =
255  (
257  ).value();
258 
260 
262  << "Surface film: " << type() << nl
263  << " time step continuity errors: sum local = "
264  << sumLocalContErr << ", global = " << globalContErr
265  << ", cumulative = " << cumulativeContErr_ << endl;
266  }
267 }
268 
269 
271 {
272  if (debug)
273  {
274  InfoInFunction << endl;
275  }
276 
277  solve
278  (
280  + fvc::div(phi_)
281  ==
282  - rhoSp_
283  );
284 }
285 
286 
288 {
289  // Push boundary film velocity values into internal field
290  for (label i=0; i<intCoupledPatchIDs_.size(); i++)
291  {
292  label patchi = intCoupledPatchIDs_[i];
293  const polyPatch& pp = regionMesh().boundaryMesh()[patchi];
294  UIndirectList<vector>(Uw_, pp.faceCells()) =
295  U_.boundaryField()[patchi];
296  }
297  Uw_ -= nHat()*(Uw_ & nHat());
299 
300  Us_ = turbulence_->Us();
301 }
302 
303 
305 (
306  const volScalarField& pu,
307  const volScalarField& pp
308 )
309 {
310  if (debug)
311  {
312  InfoInFunction << endl;
313  }
314 
315  // Momentum
317  (
318  fvm::ddt(deltaRho_, U_)
319  + fvm::div(phi_, U_)
320  ==
321  - USp_
322  // - fvm::SuSp(rhoSp_, U_)
323  - rhoSp_*U_
324  + forces_.correct(U_)
325  + turbulence_->Su(U_)
326  );
327 
328  fvVectorMatrix& UEqn = tUEqn.ref();
329 
330  UEqn.relax();
331 
332  if (momentumPredictor_)
333  {
334  solve
335  (
336  UEqn
337  ==
339  (
340  - fvc::interpolate(delta_)
341  * (
342  regionMesh().magSf()
343  * (
344  fvc::snGrad(pu, "snGrad(p)")
345  + fvc::snGrad(pp, "snGrad(p)")*fvc::interpolate(delta_)
346  + fvc::snGrad(delta_)*fvc::interpolate(pp)
347  )
348  - fvc::flux(rho_*gTan())
349  )
350  )
351  );
352 
353  // Remove any patch-normal components of velocity
354  U_ -= nHat()*(nHat() & U_);
355  U_.correctBoundaryConditions();
356  }
357 
358  return tUEqn;
359 }
360 
361 
363 (
364  const volScalarField& pu,
365  const volScalarField& pp,
366  const fvVectorMatrix& UEqn
367 )
368 {
369  if (debug)
370  {
371  InfoInFunction << endl;
372  }
373 
374  volScalarField rUA(1.0/UEqn.A());
375  U_ = rUA*UEqn.H();
376 
377  surfaceScalarField deltarUAf(fvc::interpolate(delta_*rUA));
379 
380  surfaceScalarField phiAdd
381  (
382  "phiAdd",
383  regionMesh().magSf()
384  * (
385  fvc::snGrad(pu, "snGrad(p)")
386  + fvc::snGrad(pp, "snGrad(p)")*fvc::interpolate(delta_)
387  )
388  - fvc::flux(rho_*gTan())
389  );
390  constrainFilmField(phiAdd, 0.0);
391 
393  (
394  "phid",
395  fvc::flux(U_*rho_) - deltarUAf*phiAdd*rhof
396  );
397  constrainFilmField(phid, 0.0);
398 
399  surfaceScalarField ddrhorUAppf
400  (
401  "deltaCoeff",
402  fvc::interpolate(delta_)*deltarUAf*rhof*fvc::interpolate(pp)
403  );
404 
405  regionMesh().setFluxRequired(delta_.name());
406 
407  for (int nonOrth=0; nonOrth<=nNonOrthCorr_; nonOrth++)
408  {
409  // Film thickness equation
410  fvScalarMatrix deltaEqn
411  (
412  fvm::ddt(rho_, delta_)
413  + fvm::div(phid, delta_)
414  - fvm::laplacian(ddrhorUAppf, delta_)
415  ==
416  - rhoSp_
417  );
418 
419  deltaEqn.solve();
420 
421  if (nonOrth == nNonOrthCorr_)
422  {
423  phiAdd +=
424  fvc::interpolate(pp)
425  * fvc::snGrad(delta_)
426  * regionMesh().magSf();
427 
428  phi_ == deltaEqn.flux();
429  }
430  }
431 
432  // Bound film thickness by a minimum of zero
433  delta_.max(0.0);
434 
435  // Update U field
436  U_ -= fvc::reconstruct(deltarUAf*phiAdd);
437 
438  // Remove any patch-normal components of velocity
439  U_ -= nHat()*(nHat() & U_);
440 
441  U_.correctBoundaryConditions();
442 
443  // Update film wall and surface velocities
444  updateSurfaceVelocities();
445 
446  // Continuity check
447  continuityCheck();
448 }
449 
450 
451 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
452 
453 kinematicSingleLayer::kinematicSingleLayer
454 (
455  const word& modelType,
456  const fvMesh& mesh,
457  const dimensionedVector& g,
458  const word& regionType,
459  const bool readFields
460 )
461 :
462  surfaceFilmRegionModel(modelType, mesh, g, regionType),
463 
464  momentumPredictor_(solution().subDict("PISO").lookup("momentumPredictor")),
465  nOuterCorr_(solution().subDict("PISO").lookupOrDefault("nOuterCorr", 1)),
466  nCorr_(solution().subDict("PISO").get<label>("nCorr")),
467  nNonOrthCorr_
468  (
469  solution().subDict("PISO").get<label>("nNonOrthCorr")
470  ),
471 
472  cumulativeContErr_(0.0),
473 
474  deltaSmall_("deltaSmall", dimLength, SMALL),
475  deltaCoLimit_(solution().lookupOrDefault("deltaCoLimit", 1e-4)),
476 
477  rho_
478  (
479  IOobject
480  (
481  "rhof",
482  time().timeName(),
483  regionMesh(),
486  ),
487  regionMesh(),
489  zeroGradientFvPatchScalarField::typeName
490  ),
491  mu_
492  (
493  IOobject
494  (
495  "muf",
496  time().timeName(),
497  regionMesh(),
500  ),
501  regionMesh(),
503  zeroGradientFvPatchScalarField::typeName
504  ),
505  sigma_
506  (
507  IOobject
508  (
509  "sigmaf",
510  time().timeName(),
511  regionMesh(),
514  ),
515  regionMesh(),
517  zeroGradientFvPatchScalarField::typeName
518  ),
519 
520  delta_
521  (
522  IOobject
523  (
524  "deltaf",
525  time().timeName(),
526  regionMesh(),
529  ),
530  regionMesh()
531  ),
532  alpha_
533  (
534  IOobject
535  (
536  "alpha",
537  time().timeName(),
538  regionMesh(),
541  ),
542  regionMesh(),
544  zeroGradientFvPatchScalarField::typeName
545  ),
546  U_
547  (
548  IOobject
549  (
550  "Uf",
551  time().timeName(),
552  regionMesh(),
555  ),
556  regionMesh()
557  ),
558  Us_
559  (
560  IOobject
561  (
562  "Usf",
563  time().timeName(),
564  regionMesh(),
567  ),
568  U_,
569  zeroGradientFvPatchScalarField::typeName
570  ),
571  Uw_
572  (
573  IOobject
574  (
575  "Uwf",
576  time().timeName(),
577  regionMesh(),
580  ),
581  U_,
582  zeroGradientFvPatchScalarField::typeName
583  ),
584  deltaRho_
585  (
586  IOobject
587  (
588  delta_.name() + "*" + rho_.name(),
589  time().timeName(),
590  regionMesh(),
593  ),
594  regionMesh(),
595  dimensionedScalar(delta_.dimensions()*rho_.dimensions(), Zero),
596  zeroGradientFvPatchScalarField::typeName
597  ),
598 
599  phi_
600  (
601  IOobject
602  (
603  "phi",
604  time().timeName(),
605  regionMesh(),
608  ),
609  regionMesh(),
611  ),
612 
613  primaryMassTrans_
614  (
615  IOobject
616  (
617  "primaryMassTrans",
618  time().timeName(),
619  regionMesh(),
622  ),
623  regionMesh(),
625  zeroGradientFvPatchScalarField::typeName
626  ),
627  cloudMassTrans_
628  (
629  IOobject
630  (
631  "cloudMassTrans",
632  time().timeName(),
633  regionMesh(),
636  ),
637  regionMesh(),
639  zeroGradientFvPatchScalarField::typeName
640  ),
641  cloudDiameterTrans_
642  (
643  IOobject
644  (
645  "cloudDiameterTrans",
646  time().timeName(),
647  regionMesh(),
650  ),
651  regionMesh(),
652  dimensionedScalar("minus1", dimLength, -1.0),
653  zeroGradientFvPatchScalarField::typeName
654  ),
655 
656  USp_
657  (
658  IOobject
659  (
660  "USpf",
661  time().timeName(),
662  regionMesh(),
665  ),
666  regionMesh(),
668  this->mappedPushedFieldPatchTypes<vector>()
669  ),
670  pSp_
671  (
672  IOobject
673  (
674  "pSpf",
675  time_.timeName(),
676  regionMesh(),
679  ),
680  regionMesh(),
682  this->mappedPushedFieldPatchTypes<scalar>()
683  ),
684  rhoSp_
685  (
686  IOobject
687  (
688  "rhoSpf",
689  time_.timeName(),
690  regionMesh(),
693  ),
694  regionMesh(),
696  this->mappedPushedFieldPatchTypes<scalar>()
697  ),
698 
699  USpPrimary_
700  (
701  IOobject
702  (
703  USp_.name(), // must have same name as USp_ to enable mapping
704  time().timeName(),
705  primaryMesh(),
708  ),
709  primaryMesh(),
710  dimensionedVector(USp_.dimensions(), Zero)
711  ),
712  pSpPrimary_
713  (
714  IOobject
715  (
716  pSp_.name(), // must have same name as pSp_ to enable mapping
717  time().timeName(),
718  primaryMesh(),
721  ),
722  primaryMesh(),
723  dimensionedScalar(pSp_.dimensions(), Zero)
724  ),
725  rhoSpPrimary_
726  (
727  IOobject
728  (
729  rhoSp_.name(), // must have same name as rhoSp_ to enable mapping
730  time().timeName(),
731  primaryMesh(),
734  ),
735  primaryMesh(),
736  dimensionedScalar(rhoSp_.dimensions(), Zero)
737  ),
738 
739  UPrimary_
740  (
741  IOobject
742  (
743  "U", // must have same name as U to enable mapping
744  time().timeName(),
745  regionMesh(),
748  ),
749  regionMesh(),
751  this->mappedFieldAndInternalPatchTypes<vector>()
752  ),
753  pPrimary_
754  (
755  IOobject
756  (
757  "p", // must have same name as p to enable mapping
758  time().timeName(),
759  regionMesh(),
762  ),
763  regionMesh(),
765  this->mappedFieldAndInternalPatchTypes<scalar>()
766  ),
767  rhoPrimary_
768  (
769  IOobject
770  (
771  "rho", // must have same name as rho to enable mapping
772  time().timeName(),
773  regionMesh(),
776  ),
777  regionMesh(),
779  this->mappedFieldAndInternalPatchTypes<scalar>()
780  ),
781  muPrimary_
782  (
783  IOobject
784  (
785  "thermo:mu", // must have same name as mu to enable mapping
786  time().timeName(),
787  regionMesh(),
790  ),
791  regionMesh(),
793  this->mappedFieldAndInternalPatchTypes<scalar>()
794  ),
795 
796  filmThermo_(filmThermoModel::New(*this, coeffs_)),
797 
798  availableMass_(regionMesh().nCells(), Zero),
799 
800  injection_(*this, coeffs_),
801 
802  transfer_(*this, coeffs_),
803 
804  turbulence_(filmTurbulenceModel::New(*this, coeffs_)),
805 
806  forces_(*this, coeffs_),
807 
808  addedMassTotal_(0.0)
809 {
810  if (readFields)
811  {
812  transferPrimaryRegionThermoFields();
813 
814  correctAlpha();
815 
816  correctThermoFields();
817 
818  deltaRho_ == delta_*rho_;
819 
821  (
822  IOobject
823  (
824  "phi",
825  time().timeName(),
826  regionMesh(),
829  false
830  ),
831  fvc::flux(deltaRho_*U_)
832  );
833 
834  phi_ == phi0;
835  }
836 }
837 
838 
839 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
840 
842 {}
843 
844 
845 // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
846 
848 (
849  const label patchi,
850  const label facei,
851  const scalar massSource,
852  const vector& momentumSource,
853  const scalar pressureSource,
854  const scalar energySource
855 )
856 {
857  if (debug)
858  {
860  << "\nSurface film: " << type() << ": adding to film source:" << nl
861  << " mass = " << massSource << nl
862  << " momentum = " << momentumSource << nl
863  << " pressure = " << pressureSource << endl;
864  }
865 
866  rhoSpPrimary_.boundaryFieldRef()[patchi][facei] -= massSource;
867  USpPrimary_.boundaryFieldRef()[patchi][facei] -= momentumSource;
868  pSpPrimary_.boundaryFieldRef()[patchi][facei] -= pressureSource;
869 
870  addedMassTotal_ += massSource;
871 }
872 
873 
875 {
876  if (debug)
877  {
878  InfoInFunction << endl;
879  }
880 
882 
884 
886 
888 
890 
891  correctAlpha();
892 
893  // Reset transfer fields
894  availableMass_ = mass();
898 }
899 
900 
902 {
903  if (debug)
904  {
905  InfoInFunction << endl;
906  }
907 
908  // Update sub-models to provide updated source contributions
909  updateSubmodels();
910 
911  // Solve continuity for deltaRho_
912  solveContinuity();
913 
914  // Implicit pressure source coefficient - constant
915  tmp<volScalarField> tpp(this->pp());
916 
917  for (int oCorr=1; oCorr<=nOuterCorr_; oCorr++)
918  {
919  // Explicit pressure source contribution - varies with delta_
920  tmp<volScalarField> tpu(this->pu());
921 
922  // Solve for momentum for U_
923  tmp<fvVectorMatrix> UEqn = solveMomentum(tpu(), tpp());
924 
925  // Film thickness correction loop
926  for (int corr=1; corr<=nCorr_; corr++)
927  {
928  // Solve thickness for delta_
929  solveThickness(tpu(), tpp(), UEqn());
930  }
931  }
932 
933  // Update deltaRho_ with new delta_
934  deltaRho_ == delta_*rho_;
935 }
936 
937 
939 {
940  if (debug)
941  {
942  InfoInFunction << endl;
943  }
944 
945  // Reset source terms for next time integration
947 }
948 
949 
951 {
952  scalar CoNum = 0.0;
953 
954  if (regionMesh().nInternalFaces() > 0)
955  {
956  const scalarField sumPhi
957  (
958  fvc::surfaceSum(mag(phi_))().primitiveField()
959  / (deltaRho_.primitiveField() + ROOTVSMALL)
960  );
961 
962  forAll(delta_, i)
963  {
964  if ((delta_[i] > deltaCoLimit_) && (alpha_[i] > 0.5))
965  {
966  CoNum = max(CoNum, sumPhi[i]/(delta_[i]*magSf()[i]));
967  }
968  }
969 
970  CoNum *= 0.5*time_.deltaTValue();
971  }
972 
974 
975  Info<< "Film max Courant number: " << CoNum << endl;
976 
977  return CoNum;
978 }
979 
980 
982 {
983  return U_;
984 }
985 
986 
988 {
989  return Us_;
990 }
991 
992 
994 {
995  return Uw_;
996 }
997 
998 
1000 {
1001  return deltaRho_;
1002 }
1003 
1004 
1006 {
1007  return phi_;
1008 }
1009 
1010 
1012 {
1013  return rho_;
1014 }
1015 
1016 
1018 {
1020  << "T field not available for " << type() << abort(FatalError);
1021 
1022  return volScalarField::null();
1023 }
1024 
1025 
1027 {
1029  << "Ts field not available for " << type() << abort(FatalError);
1030 
1031  return volScalarField::null();
1032 }
1033 
1034 
1036 {
1038  << "Tw field not available for " << type() << abort(FatalError);
1039 
1040  return volScalarField::null();
1041 }
1042 
1043 
1045 {
1047  << "hs field not available for " << type() << abort(FatalError);
1048 
1049  return volScalarField::null();
1050 }
1051 
1052 
1054 {
1056  << "Cp field not available for " << type() << abort(FatalError);
1057 
1058  return volScalarField::null();
1059 }
1060 
1061 
1063 {
1065  << "kappa field not available for " << type() << abort(FatalError);
1066 
1067  return volScalarField::null();
1068 }
1069 
1070 
1072 {
1073  return primaryMassTrans_;
1074 }
1075 
1076 
1078 {
1079  return cloudMassTrans_;
1080 }
1081 
1082 
1084 {
1085  return cloudDiameterTrans_;
1086 }
1087 
1088 
1090 {
1091  Info<< "\nSurface film: " << type() << endl;
1092 
1093  const scalarField& deltaInternal = delta_;
1094  const vectorField& Uinternal = U_;
1095  scalar addedMassTotal = 0.0;
1096  outputProperties().readIfPresent("addedMassTotal", addedMassTotal);
1097  addedMassTotal += returnReduce(addedMassTotal_, sumOp<scalar>());
1098 
1099  Info<< indent << "added mass = " << addedMassTotal << nl
1100  << indent << "current mass = "
1101  << gSum((deltaRho_*magSf())()) << nl
1102  << indent << "min/max(mag(U)) = " << gMin(mag(Uinternal)) << ", "
1103  << gMax(mag(Uinternal)) << nl
1104  << indent << "min/max(delta) = " << gMin(deltaInternal) << ", "
1105  << gMax(deltaInternal) << nl
1106  << indent << "coverage = "
1107  << gSum(alpha_.primitiveField()*magSf())/gSum(magSf()) << nl;
1108 
1109  injection_.info(Info);
1110  transfer_.info(Info);
1111 }
1112 
1113 
1115 {
1117  (
1118  IOobject
1119  (
1120  typeName + ":Srho",
1121  time().timeName(),
1122  primaryMesh(),
1125  false
1126  ),
1127  primaryMesh(),
1129  );
1130 }
1131 
1132 
1135  const label i
1136 ) const
1137 {
1139  (
1140  IOobject
1141  (
1142  typeName + ":Srho(" + Foam::name(i) + ")",
1143  time().timeName(),
1144  primaryMesh(),
1147  false
1148  ),
1149  primaryMesh(),
1151  );
1152 }
1153 
1154 
1156 {
1158  (
1159  IOobject
1160  (
1161  typeName + ":Sh",
1162  time().timeName(),
1163  primaryMesh(),
1166  false
1167  ),
1168  primaryMesh(),
1170  );
1171 }
1172 
1173 
1174 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
1175 
1176 } // End namespace surfaceFilmModels
1177 } // End namespace regionModels
1178 } // End namespace Foam
1179 
1180 // ************************************************************************* //
totalMass
dimensionedScalar totalMass
Definition: continuityErrs.H:4
Foam::expressions::patchExpr::debug
int debug
Static debugging option.
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::T
virtual const volScalarField & T() const
Return the film mean temperature [K].
Definition: kinematicSingleLayer.C:1017
Foam::IOobject::NO_WRITE
Definition: IOobject.H:130
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::read
virtual bool read()
Read control parameters from dictionary.
Definition: kinematicSingleLayer.C:59
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::correctThermoFields
virtual void correctThermoFields()
Correct the thermo fields.
Definition: kinematicSingleLayer.C:76
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::rhoSpPrimary_
volScalarField rhoSpPrimary_
Mass [kg/m2/s].
Definition: kinematicSingleLayer.H:185
Foam::fvc::reconstruct
tmp< GeometricField< typename outerProduct< vector, Type >::type, fvPatchField, volMesh >> reconstruct(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
Definition: fvcReconstruct.C:56
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::deltaCoLimit_
scalar deltaCoLimit_
Film thickness above which Courant number calculation in valid.
Definition: kinematicSingleLayer.H:106
Foam::dimPressure
const dimensionSet dimPressure
Foam::fvc::snGrad
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > snGrad(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
Definition: fvcSnGrad.C:47
Foam::fvc::surfaceSum
tmp< GeometricField< Type, fvPatchField, volMesh > > surfaceSum(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
Definition: fvcSurfaceIntegrate.C:135
sumLocalContErr
scalar sumLocalContErr
Definition: compressibleContinuityErrs.H:34
Foam::maxOp
Definition: ops.H:223
phid
surfaceScalarField phid("phid", fvc::interpolate(psi) *(fvc::flux(HbyA)+MRF.zeroFilter(rhorAUf *fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho))))
Foam::IOobject
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Definition: IOobject.H:104
InfoInFunction
#define InfoInFunction
Report an information message using Foam::Info.
Definition: messageStream.H:316
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::~kinematicSingleLayer
virtual ~kinematicSingleLayer()
Destructor.
Definition: kinematicSingleLayer.C:841
filmThermoModel.H
Foam::IOobject::AUTO_WRITE
Definition: IOobject.H:129
mappedWallPolyPatch.H
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::transferPrimaryRegionThermoFields
virtual void transferPrimaryRegionThermoFields()
Transfer thermo fields from the primary region to the film region.
Definition: kinematicSingleLayer.C:97
Foam::dimless
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
Dimensionless.
Definition: dimensionSets.H:50
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::Us_
volVectorField Us_
Velocity - surface [m/s].
Definition: kinematicSingleLayer.H:135
Foam::solution
Selector class for relaxation factors, solver type and solution.
Definition: solution.H:50
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:62
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::USpPrimary_
volVectorField USpPrimary_
Momentum [kg/m/s2].
Definition: kinematicSingleLayer.H:179
Foam::returnReduce
T returnReduce(const T &Value, const BinaryOp &bop, const int tag=Pstream::msgType(), const label comm=UPstream::worldComm)
Definition: PstreamReduceOps.H:94
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::USp_
volVectorField USp_
Momentum [kg/m/s2].
Definition: kinematicSingleLayer.H:166
Foam::TimeState::deltaT
dimensionedScalar deltaT() const
Return time step.
Definition: TimeStateI.H:54
Foam::regionModels::surfaceFilmModels::transferModelList::correct
virtual void correct(scalarField &availableMass, volScalarField &massToTransfer)
Correct kinematic transfers.
Definition: transferModelList.C:100
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::Us
virtual const volVectorField & Us() const
Return the film surface velocity [m/s].
Definition: kinematicSingleLayer.C:987
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::injection_
injectionModelList injection_
Cloud injection.
Definition: kinematicSingleLayer.H:213
Foam::dimLength
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
Definition: dimensionSets.H:53
Foam::regionModels::surfaceFilmModels::transferModelList::info
virtual void info(Ostream &os)
Provide some info.
Definition: transferModelList.C:153
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::preEvolveRegion
virtual void preEvolveRegion()
Pre-evolve film hook.
Definition: kinematicSingleLayer.C:874
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::primaryMassTrans_
volScalarField primaryMassTrans_
Film mass available for transfer to the primary region.
Definition: kinematicSingleLayer.H:150
Foam::tmp< volScalarField >
Foam::Zero
static constexpr const zero Zero
Global zero.
Definition: zero.H:128
Foam::dimVelocity
const dimensionSet dimVelocity
Foam::dimEnergy
const dimensionSet dimEnergy
Foam::dimDensity
const dimensionSet dimDensity
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::Ts
virtual const volScalarField & Ts() const
Return the film surface temperature [K].
Definition: kinematicSingleLayer.C:1026
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::turbulence_
autoPtr< filmTurbulenceModel > turbulence_
Turbulence model.
Definition: kinematicSingleLayer.H:219
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::filmThermo_
autoPtr< filmThermoModel > filmThermo_
Film thermo model.
Definition: kinematicSingleLayer.H:207
Foam::fvc::domainIntegrate
dimensioned< Type > domainIntegrate(const GeometricField< Type, fvPatchField, volMesh > &vf)
Definition: fvcVolumeIntegrate.C:88
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::U
virtual const volVectorField & U() const
Return the film velocity [m/s].
Definition: kinematicSingleLayer.C:981
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::deltaSmall_
const dimensionedScalar deltaSmall_
Small delta.
Definition: kinematicSingleLayer.H:103
Foam::GeometricField::primitiveField
const Internal::FieldType & primitiveField() const
Return a const-reference to the internal field.
Definition: GeometricFieldI.H:53
fvcSnGrad.H
Calculate the snGrad of the given volField.
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::evolveRegion
virtual void evolveRegion()
Evolve the film equations.
Definition: kinematicSingleLayer.C:901
Foam::Time::timeName
static word timeName(const scalar t, const int precision=precision_)
Definition: Time.C:764
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::solveContinuity
virtual void solveContinuity()
Solve continuity equation.
Definition: kinematicSingleLayer.C:270
Foam::regionModels::surfaceFilmModels::injectionModelList::info
virtual void info(Ostream &os)
Provide some info.
Definition: injectionModelList.C:126
fvcDiv.H
Calculate the divergence of the given field.
Foam::regionModels::regionModel::time
const Time & time() const
Return the reference to the time database.
Definition: regionModelI.H:39
Foam::fvc::div
tmp< GeometricField< Type, fvPatchField, volMesh > > div(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
Definition: fvcDiv.C:49
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::solveThickness
virtual void solveThickness(const volScalarField &pu, const volScalarField &pp, const fvVectorMatrix &UEqn)
Solve coupled velocity-thickness equations.
Definition: kinematicSingleLayer.C:363
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::rho_
volScalarField rho_
Density [kg/m3].
Definition: kinematicSingleLayer.H:114
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::sigma_
volScalarField sigma_
Surface tension [m/s2].
Definition: kinematicSingleLayer.H:120
Foam::polyMesh::boundaryMesh
const polyBoundaryMesh & boundaryMesh() const
Return boundary mesh.
Definition: polyMesh.H:435
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:337
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::continuityCheck
virtual void continuityCheck()
Continuity check.
Definition: kinematicSingleLayer.C:236
Foam::gSum
Type gSum(const FieldField< Field, Type > &f)
Definition: FieldFieldFunctions.C:594
Foam::regionModels::surfaceFilmModels::addToRunTimeSelectionTable
addToRunTimeSelectionTable(surfaceFilmRegionModel, kinematicSingleLayer, mesh)
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::availableMass_
scalarField availableMass_
Available mass for transfer via sub-models.
Definition: kinematicSingleLayer.H:210
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::pPrimary_
volScalarField pPrimary_
Pressure [Pa].
Definition: kinematicSingleLayer.H:195
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::Srho
virtual tmp< volScalarField::Internal > Srho() const
Return total mass source - Eulerian phase only.
Definition: kinematicSingleLayer.C:1114
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::muPrimary_
volScalarField muPrimary_
Viscosity [Pa.s].
Definition: kinematicSingleLayer.H:201
Foam::sumOp
Definition: ops.H:213
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:290
Foam::dimensionedVector
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.
Definition: dimensionedVector.H:50
Foam::regionModels::regionModel::primaryMesh
const fvMesh & primaryMesh() const
Return the reference to the primary mesh database.
Definition: regionModelI.H:33
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::gNormClipped
tmp< volScalarField > gNormClipped() const
Return the gravity normal-to-patch component contribution.
Definition: kinematicSingleLayerI.H:233
Foam::fvc::laplacian
tmp< GeometricField< Type, fvPatchField, volMesh > > laplacian(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
Definition: fvcLaplacian.C:47
Foam::regionModels::surfaceFilmModels::surfaceFilmRegionModel::read
virtual bool read()
Read control parameters from dictionary.
Definition: surfaceFilmRegionModel.C:46
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::cloudDiameterTrans_
volScalarField cloudDiameterTrans_
Parcel diameters originating from film to cloud.
Definition: kinematicSingleLayer.H:156
Foam::dimTime
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
Definition: dimensionSets.H:54
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::deltaRho_
volScalarField deltaRho_
Film thickness*density (helper field) [kg/m2].
Definition: kinematicSingleLayer.H:141
Foam::reduce
void reduce(const List< UPstream::commsStruct > &comms, T &Value, const BinaryOp &bop, const int tag, const label comm)
Definition: PstreamReduceOps.H:51
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::cloudMassTrans
virtual const volScalarField & cloudMassTrans() const
Return the film mass available for transfer to cloud.
Definition: kinematicSingleLayer.C:1077
tUEqn
tmp< fvVectorMatrix > tUEqn(fvm::ddt(rho, U)+fvm::div(phi, U)+MRF.DDt(rho, U)+turbulence->divDevRhoReff(U)==fvOptions(rho, U))
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::addedMassTotal_
scalar addedMassTotal_
Cumulative mass added via sources [kg].
Definition: kinematicSingleLayer.H:228
Foam::dimArea
const dimensionSet dimArea(sqr(dimLength))
Definition: dimensionSets.H:60
Foam::label
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:62
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::transferPrimaryRegionSourceFields
virtual void transferPrimaryRegionSourceFields()
Transfer source fields from the primary region to the film region.
Definition: kinematicSingleLayer.C:110
Foam::Field< scalar >
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::delta_
volScalarField delta_
Film thickness [m].
Definition: kinematicSingleLayer.H:126
Foam::regionModels::surfaceFilmModels::surfaceFilmRegionModel
Base class for surface film models.
Definition: surfaceFilmRegionModel.H:55
Foam::Info
messageStream Info
Information stream (uses stdout - output is on the master only)
DebugInFunction
#define DebugInFunction
Report an information message using Foam::Info.
Definition: messageStream.H:356
Foam::polyPatch
A patch is a list of labels that address the faces in the global face list.
Definition: polyPatch.H:66
Foam::fvm::laplacian
tmp< fvMatrix< Type > > laplacian(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
Definition: fvmLaplacian.C:48
Foam::name
word name(const complex &c)
Return string representation of complex.
Definition: complex.C:76
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::kappa
virtual const volScalarField & kappa() const
Return the film thermal conductivity [W/m/K].
Definition: kinematicSingleLayer.C:1062
Foam::cellModeller::lookup
const cellModel * lookup(const word &modelName)
Deprecated(2017-11) equivalent to cellModel::ptr static method.
Definition: cellModeller.H:46
Foam::regionModels::singleLayerRegion::magSf
virtual const volScalarField & magSf() const
Return the face area magnitudes / [m2].
Definition: singleLayerRegion.C:222
Foam::regionModels::regionModel::regionMesh
const fvMesh & regionMesh() const
Return the region mesh database.
Definition: regionModelI.H:63
Foam::dictionary::subDict
const dictionary & subDict(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a sub-dictionary.
Definition: dictionary.C:523
Foam::IOobject::READ_IF_PRESENT
Definition: IOobject.H:122
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::pp
virtual tmp< volScalarField > pp()
Implicit pressure source coefficient.
Definition: kinematicSingleLayer.C:190
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::cloudDiameterTrans
virtual const volScalarField & cloudDiameterTrans() const
Return the parcel diameters originating from film to cloud.
Definition: kinematicSingleLayer.C:1083
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::info
virtual void info()
Provide some feedback.
Definition: kinematicSingleLayer.C:1089
Foam::regionModels::regionModel::preEvolveRegion
virtual void preEvolveRegion()
Pre-evolve region.
Definition: regionModel.C:515
Foam::constant::electromagnetic::phi0
const dimensionedScalar phi0
Magnetic flux quantum: default SI units: [Wb].
Foam::dictionary::readEntry
bool readEntry(const word &keyword, T &val, enum keyType::option matchOpt=keyType::REGEX, bool mandatory=true) const
Definition: dictionaryTemplates.C:314
Foam::solve
SolverPerformance< Type > solve(faMatrix< Type > &, Istream &)
Solve returning the solution statistics given convergence tolerance.
Foam::dimensionedScalar
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Definition: dimensionedScalarFwd.H:43
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::Uw_
volVectorField Uw_
Velocity - wall [m/s].
Definition: kinematicSingleLayer.H:138
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::primaryMassTrans
virtual tmp< volScalarField > primaryMassTrans() const
Return mass transfer source - Eulerian phase only.
Definition: kinematicSingleLayer.C:1071
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::resetPrimaryRegionSourceTerms
virtual void resetPrimaryRegionSourceTerms()
Reset source term fields.
Definition: kinematicSingleLayer.C:84
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::solveMomentum
virtual tmp< fvVectorMatrix > solveMomentum(const volScalarField &pu, const volScalarField &pp)
Solve for film velocity.
Definition: kinematicSingleLayer.C:305
Foam::max
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
Definition: hashSets.C:47
Foam::regionModels::regionModel::outputProperties
const IOdictionary & outputProperties() const
Return const access to the output properties dictionary.
Definition: regionModelI.H:113
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::phi
virtual const surfaceScalarField & phi() const
Return the film flux [kg.m/s].
Definition: kinematicSingleLayer.C:1005
Foam::regionModels::regionModel::solution
const dictionary & solution() const
Return the solution dictionary.
Definition: regionModelI.H:106
timeName
word timeName
Definition: getTimeIndex.H:3
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::correctAlpha
virtual void correctAlpha()
Correct film coverage field.
Definition: kinematicSingleLayer.C:210
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::momentumPredictor_
Switch momentumPredictor_
Momentum predictor.
Definition: kinematicSingleLayer.H:88
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::hs
virtual const volScalarField & hs() const
Return the film surface enthalpy [J/kg].
Definition: kinematicSingleLayer.C:1044
fvm.H
Foam::FatalError
error FatalError
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:121
kinematicSingleLayer.H
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:6
addToRunTimeSelectionTable.H
Macros for easy insertion into run-time selection tables.
Foam::dimensioned< scalar >
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::U_
volVectorField U_
Velocity - mean [m/s].
Definition: kinematicSingleLayer.H:132
Foam::fvMesh
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:84
g
const uniformDimensionedVectorField & g
Definition: createFluidFields.H:24
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::dimMass
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
Definition: dimensionSets.H:52
Foam::abort
errorManip< error > abort(error &err)
Definition: errorManip.H:137
Foam::regionModels::surfaceFilmModels::filmThermoModel::New
static autoPtr< filmThermoModel > New(surfaceFilmRegionModel &film, const dictionary &dict)
Return a reference to the selected phase change model.
Definition: filmThermoModelNew.C:43
Foam::fvc::interpolate
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate(const GeometricField< Type, fvPatchField, volMesh > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::nCorr_
label nCorr_
Number of PISO-like correctors.
Definition: kinematicSingleLayer.H:94
Foam::indent
Ostream & indent(Ostream &os)
Indent stream.
Definition: Ostream.H:307
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::mass
tmp< volScalarField > mass() const
Return the current film mass.
Definition: kinematicSingleLayerI.H:199
CoNum
scalar CoNum
Definition: compressibleCourantNo.H:31
globalContErr
scalar globalContErr
Definition: compressibleContinuityErrs.H:37
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::pu
virtual tmp< volScalarField > pu()
Explicit pressure source contribution.
Definition: kinematicSingleLayer.C:168
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::UPrimary_
volVectorField UPrimary_
Velocity [m/s].
Definition: kinematicSingleLayer.H:192
Foam::readFields
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const wordHashSet &selectedFields, LIFOStack< regIOobject * > &storedObjects)
Read the selected GeometricFields of the templated type.
Definition: ReadFieldsTemplates.C:312
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::pSp_
volScalarField pSp_
Pressure [Pa].
Definition: kinematicSingleLayer.H:169
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::cumulativeContErr_
scalar cumulativeContErr_
Cumulative continuity error.
Definition: kinematicSingleLayer.H:100
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::phi_
surfaceScalarField phi_
Mass flux (includes film thickness) [kg.m/s].
Definition: kinematicSingleLayer.H:144
Foam::GeometricField::correctBoundaryConditions
void correctBoundaryConditions()
Correct boundary field.
Definition: GeometricField.C:909
Foam::regionModels::surfaceFilmModels::defineTypeNameAndDebug
defineTypeNameAndDebug(kinematicSingleLayer, 0)
FatalErrorInFunction
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Definition: error.H:355
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::addSources
virtual void addSources(const label patchi, const label facei, const scalar massSource, const vector &momentumSource, const scalar pressureSource, const scalar energySource=0)
External hook to add sources to the film.
Definition: kinematicSingleLayer.C:848
Foam::fvm::ddt
tmp< fvMatrix< Type > > ddt(const GeometricField< Type, fvPatchField, volMesh > &vf)
Definition: fvmDdt.C:48
Foam::sqr
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Definition: dimensionedSymmTensor.C:51
Foam::regionModels::regionModel::time_
const Time & time_
Reference to the time database.
Definition: regionModel.H:89
fvcLaplacian.H
Calculate the laplacian of the given field.
Foam::nl
constexpr char nl
Definition: Ostream.H:372
mapDistribute.H
Foam::regionModels::surfaceFilmModels::injectionModelList::correct
virtual void correct(scalarField &availableMass, volScalarField &massToInject, volScalarField &diameterToInject)
Correct.
Definition: injectionModelList.C:98
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::alpha_
volScalarField alpha_
Film coverage indicator, 1 = covered, 0 = uncovered [].
Definition: kinematicSingleLayer.H:129
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::pSpPrimary_
volScalarField pSpPrimary_
Pressure [Pa].
Definition: kinematicSingleLayer.H:182
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::mu_
volScalarField mu_
Dynamic viscosity [Pa.s].
Definition: kinematicSingleLayer.H:117
Foam::GeometricField::boundaryFieldRef
Boundary & boundaryFieldRef(const bool updateAccessTime=true)
Return a reference to the boundary field.
Definition: GeometricField.C:752
Foam::Vector< scalar >
Foam::TimeState::deltaTValue
scalar deltaTValue() const
Return time step value.
Definition: TimeStateI.H:42
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::nNonOrthCorr_
label nNonOrthCorr_
Number of non-orthogonal correctors.
Definition: kinematicSingleLayer.H:97
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::Uw
virtual const volVectorField & Uw() const
Return the film wall velocity [m/s].
Definition: kinematicSingleLayer.C:993
Foam::mag
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
fvcFlux.H
Calculate the face-flux of the given field.
Foam::type
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Definition: MSwindows.C:590
Foam::regionModels::singleLayerRegion::nHat
virtual const volVectorField & nHat() const
Return the patch normal vectors.
Definition: singleLayerRegion.C:209
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::rhoPrimary_
volScalarField rhoPrimary_
Density [kg/m3].
Definition: kinematicSingleLayer.H:198
Foam::constant::electromagnetic::e
const dimensionedScalar e
Elementary charge.
Definition: createFields.H:11
fvcVolumeIntegrate.H
Volume integrate volField creating a volField.
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::updateSurfaceVelocities
virtual void updateSurfaceVelocities()
Update film surface velocities.
Definition: kinematicSingleLayer.C:287
Foam::tmp::New
static tmp< T > New(Args &&... args)
Construct tmp of T with forwarding arguments.
Foam::fvMatrix
A special matrix type and solver, designed for finite volume solutions of scalar equations....
Definition: fvPatchField.H:76
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::Cp
virtual const volScalarField & Cp() const
Return the film specific heat capacity [J/kg/K].
Definition: kinematicSingleLayer.C:1053
Foam::fvMatrix::solve
SolverPerformance< Type > solve(const dictionary &)
Solve returning the solution statistics.
Definition: fvMatrixSolve.C:298
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::transfer_
transferModelList transfer_
Transfer with the continuous phase.
Definition: kinematicSingleLayer.H:216
Foam::regionModels::regionModel::intCoupledPatchIDs_
labelList intCoupledPatchIDs_
List of patch IDs internally coupled with the primary region.
Definition: regionModel.H:116
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::Sh
virtual tmp< volScalarField::Internal > Sh() const
Return enthalpy source - Eulerian phase only.
Definition: kinematicSingleLayer.C:1155
fvcReconstruct.H
Reconstruct volField from a face flux field.
Foam::UIndirectList
A List with indirect addressing.
Definition: fvMatrix.H:109
UEqn
fvVectorMatrix & UEqn
Definition: UEqn.H:13
Foam::dictionary::add
entry * add(entry *entryPtr, bool mergeEntry=false)
Add a new entry.
Definition: dictionary.C:703
Foam::GeometricField< scalar, fvPatchField, volMesh >::null
static const GeometricField< scalar, fvPatchField, volMesh > & null()
Return a null geometric field.
Definition: GeometricFieldI.H:32
Foam::gMin
Type gMin(const FieldField< Field, Type > &f)
Definition: FieldFieldFunctions.C:593
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::Tw
virtual const volScalarField & Tw() const
Return the film wall temperature [K].
Definition: kinematicSingleLayer.C:1035
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::postEvolveRegion
virtual void postEvolveRegion()
Post-evolve film hook.
Definition: kinematicSingleLayer.C:938
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::rho
virtual const volScalarField & rho() const
Return the film density [kg/m3].
Definition: kinematicSingleLayer.C:1011
Foam::fvc::flux
tmp< surfaceScalarField > flux(const volVectorField &vvf)
Return the face-flux field obtained from the given volVectorField.
Definition: fvcFlux.C:34
Foam::dimVolume
const dimensionSet dimVolume(pow3(dimLength))
Definition: dimensionSets.H:61
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::deltaRho
virtual const volScalarField & deltaRho() const
Return the film thickness*density (helper field) [kg/m3].
Definition: kinematicSingleLayer.C:999
rhof
surfaceScalarField rhof(fvc::interpolate(rho, "div(phi,rho)"))
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::updateSubmodels
virtual void updateSubmodels()
Update the film sub-models.
Definition: kinematicSingleLayer.C:216
Foam::GeometricField< scalar, fvPatchField, volMesh >
Foam::IOobject::NO_READ
Definition: IOobject.H:123
Foam::fvm::div
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
Definition: fvmDiv.C:48
Foam::regionModels::surfaceFilmModels::filmTurbulenceModel::New
static autoPtr< filmTurbulenceModel > New(surfaceFilmRegionModel &film, const dictionary &dict)
Return a reference to the selected injection model.
Definition: filmTurbulenceModelNew.C:43
Foam::fvMatrix::flux
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > flux() const
Return the face-flux field from the matrix.
Definition: fvMatrix.C:927
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::rhoSp_
volScalarField rhoSp_
Mass [kg/m2/s].
Definition: kinematicSingleLayer.H:172
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::cloudMassTrans_
volScalarField cloudMassTrans_
Film mass available for transfer to cloud.
Definition: kinematicSingleLayer.H:153
Foam::gMax
Type gMax(const FieldField< Field, Type > &f)
Definition: FieldFieldFunctions.C:592
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::nOuterCorr_
label nOuterCorr_
Number of outer correctors.
Definition: kinematicSingleLayer.H:91
Foam::dictionary::readIfPresent
bool readIfPresent(const word &keyword, T &val, enum keyType::option matchOpt=keyType::REGEX) const
Definition: dictionaryTemplates.C:417
Foam::GeometricField::boundaryField
const Boundary & boundaryField() const
Return const-reference to the boundary field.
Definition: GeometricFieldI.H:62
Foam::regionModels::surfaceFilmModels::kinematicSingleLayer::CourantNumber
virtual scalar CourantNumber() const
Courant number evaluation.
Definition: kinematicSingleLayer.C:950
Foam::IOobject::MUST_READ
Definition: IOobject.H:120
Foam::pos
dimensionedScalar pos(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:177