CoEulerDdtScheme.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 | Copyright (C) 2011-2015 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "CoEulerDdtScheme.H"
27 #include "surfaceInterpolate.H"
28 #include "fvcDiv.H"
29 #include "fvMatrices.H"
30 
31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32 
33 namespace Foam
34 {
35 
36 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
37 
38 namespace fv
39 {
40 
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 
43 template<class Type>
45 {
46  const surfaceScalarField cofrDeltaT(CofrDeltaT());
47 
48  tmp<volScalarField> tcorDeltaT
49  (
50  new volScalarField
51  (
52  IOobject
53  (
54  "CorDeltaT",
55  cofrDeltaT.instance(),
56  mesh()
57  ),
58  mesh(),
59  dimensionedScalar("CorDeltaT", cofrDeltaT.dimensions(), 0.0),
60  zeroGradientFvPatchScalarField::typeName
61  )
62  );
63 
64  volScalarField& corDeltaT = tcorDeltaT();
65 
66  const labelUList& owner = mesh().owner();
67  const labelUList& neighbour = mesh().neighbour();
68 
69  forAll(owner, faceI)
70  {
71  corDeltaT[owner[faceI]] =
72  max(corDeltaT[owner[faceI]], cofrDeltaT[faceI]);
73 
74  corDeltaT[neighbour[faceI]] =
75  max(corDeltaT[neighbour[faceI]], cofrDeltaT[faceI]);
76  }
77 
79  corDeltaT.boundaryField();
80 
81  forAll(bcorDeltaT, patchi)
82  {
83  const fvsPatchScalarField& pcofrDeltaT =
84  cofrDeltaT.boundaryField()[patchi];
85 
86  const fvPatch& p = pcofrDeltaT.patch();
87  const labelUList& faceCells = p.patch().faceCells();
88 
89  forAll(pcofrDeltaT, patchFacei)
90  {
91  corDeltaT[faceCells[patchFacei]] = max
92  (
93  corDeltaT[faceCells[patchFacei]],
94  pcofrDeltaT[patchFacei]
95  );
96  }
97  }
98 
99  corDeltaT.correctBoundaryConditions();
100 
101  //corDeltaT = max(corDeltaT, max(corDeltaT)/100.0);
102 
103  return tcorDeltaT;
104 }
105 
106 
107 template<class Type>
109 {
110  const dimensionedScalar& deltaT = mesh().time().deltaT();
111 
112  const surfaceScalarField& phi =
113  static_cast<const objectRegistry&>(mesh())
114  .lookupObject<surfaceScalarField>(phiName_);
115 
116  if (phi.dimensions() == dimensionSet(0, 3, -1, 0, 0))
117  {
119  (
121  *(mag(phi)/mesh().magSf())
122  *deltaT
123  );
124 
125  return max(Co/maxCo_, scalar(1))/deltaT;
126  }
127  else if (phi.dimensions() == dimensionSet(1, 0, -1, 0, 0))
128  {
129  const volScalarField& rho =
130  static_cast<const objectRegistry&>(mesh())
131  .lookupObject<volScalarField>(rhoName_).oldTime();
132 
134  (
136  *(mag(phi)/(fvc::interpolate(rho)*mesh().magSf()))
137  *deltaT
138  );
139 
140  return max(Co/maxCo_, scalar(1))/deltaT;
141  }
142  else
143  {
145  << "Incorrect dimensions of phi: " << phi.dimensions()
146  << abort(FatalError);
147 
148  return tmp<surfaceScalarField>(NULL);
149  }
150 }
151 
152 
153 template<class Type>
156 (
157  const dimensioned<Type>& dt
158 )
159 {
160  const volScalarField rDeltaT(CorDeltaT());
161 
162  IOobject ddtIOobject
163  (
164  "ddt("+dt.name()+')',
165  mesh().time().timeName(),
166  mesh()
167  );
168 
169  if (mesh().moving())
170  {
172  (
174  (
175  ddtIOobject,
176  mesh(),
178  (
179  "0",
180  dt.dimensions()/dimTime,
182  )
183  )
184  );
185 
186  tdtdt().internalField() =
187  rDeltaT.internalField()*dt.value()
188  *(1.0 - mesh().Vsc0()/mesh().Vsc());
189 
190  return tdtdt;
191  }
192  else
193  {
195  (
197  (
198  ddtIOobject,
199  mesh(),
201  (
202  "0",
203  dt.dimensions()/dimTime,
205  ),
207  )
208  );
209  }
210 }
211 
212 
213 template<class Type>
216 (
218 )
219 {
220  const volScalarField rDeltaT(CorDeltaT());
221 
222  IOobject ddtIOobject
223  (
224  "ddt("+vf.name()+')',
225  mesh().time().timeName(),
226  mesh()
227  );
228 
229  if (mesh().moving())
230  {
232  (
234  (
235  ddtIOobject,
236  mesh(),
237  rDeltaT.dimensions()*vf.dimensions(),
238  rDeltaT.internalField()*
239  (
240  vf.internalField()
241  - vf.oldTime().internalField()*mesh().Vsc0()/mesh().Vsc()
242  ),
243  rDeltaT.boundaryField()*
244  (
245  vf.boundaryField() - vf.oldTime().boundaryField()
246  )
247  )
248  );
249  }
250  else
251  {
253  (
255  (
256  ddtIOobject,
257  rDeltaT*(vf - vf.oldTime())
258  )
259  );
260  }
261 }
262 
263 
264 template<class Type>
267 (
268  const dimensionedScalar& rho,
270 )
271 {
272  const volScalarField rDeltaT(CorDeltaT());
273 
274  IOobject ddtIOobject
275  (
276  "ddt("+rho.name()+','+vf.name()+')',
277  mesh().time().timeName(),
278  mesh()
279  );
280 
281  if (mesh().moving())
282  {
284  (
286  (
287  ddtIOobject,
288  mesh(),
289  rDeltaT.dimensions()*rho.dimensions()*vf.dimensions(),
290  rDeltaT.internalField()*rho.value()*
291  (
292  vf.internalField()
293  - vf.oldTime().internalField()*mesh().Vsc0()/mesh().Vsc()
294  ),
295  rDeltaT.boundaryField()*rho.value()*
296  (
297  vf.boundaryField() - vf.oldTime().boundaryField()
298  )
299  )
300  );
301  }
302  else
303  {
305  (
307  (
308  ddtIOobject,
309  rDeltaT*rho*(vf - vf.oldTime())
310  )
311  );
312  }
313 }
314 
315 
316 template<class Type>
319 (
320  const volScalarField& rho,
322 )
323 {
324  const volScalarField rDeltaT(CorDeltaT());
325 
326  IOobject ddtIOobject
327  (
328  "ddt("+rho.name()+','+vf.name()+')',
329  mesh().time().timeName(),
330  mesh()
331  );
332 
333  if (mesh().moving())
334  {
336  (
338  (
339  ddtIOobject,
340  mesh(),
341  rDeltaT.dimensions()*rho.dimensions()*vf.dimensions(),
342  rDeltaT.internalField()*
343  (
344  rho.internalField()*vf.internalField()
345  - rho.oldTime().internalField()
346  *vf.oldTime().internalField()*mesh().Vsc0()/mesh().Vsc()
347  ),
348  rDeltaT.boundaryField()*
349  (
350  rho.boundaryField()*vf.boundaryField()
351  - rho.oldTime().boundaryField()
352  *vf.oldTime().boundaryField()
353  )
354  )
355  );
356  }
357  else
358  {
360  (
362  (
363  ddtIOobject,
364  rDeltaT*(rho*vf - rho.oldTime()*vf.oldTime())
365  )
366  );
367  }
368 }
369 
370 
371 template<class Type>
374 (
375  const volScalarField& alpha,
376  const volScalarField& rho,
378 )
379 {
380  const volScalarField rDeltaT(CorDeltaT());
381 
382  IOobject ddtIOobject
383  (
384  "ddt("+alpha.name()+','+rho.name()+','+vf.name()+')',
385  mesh().time().timeName(),
386  mesh()
387  );
388 
389  if (mesh().moving())
390  {
392  (
394  (
395  ddtIOobject,
396  mesh(),
397  rDeltaT.dimensions()
398  *alpha.dimensions()*rho.dimensions()*vf.dimensions(),
399  rDeltaT.internalField()*
400  (
401  alpha.internalField()
402  *rho.internalField()
403  *vf.internalField()
404 
405  - alpha.oldTime().internalField()
406  *rho.oldTime().internalField()
407  *vf.oldTime().internalField()*mesh().Vsc0()/mesh().Vsc()
408  ),
409  rDeltaT.boundaryField()*
410  (
411  alpha.boundaryField()
412  *rho.boundaryField()
413  *vf.boundaryField()
414 
415  - alpha.oldTime().boundaryField()
416  *rho.oldTime().boundaryField()
417  *vf.oldTime().boundaryField()
418  )
419  )
420  );
421  }
422  else
423  {
425  (
427  (
428  ddtIOobject,
429  rDeltaT
430  *(
431  alpha*rho*vf
432  - alpha.oldTime()*rho.oldTime()*vf.oldTime()
433  )
434  )
435  );
436  }
437 }
438 
439 
440 template<class Type>
443 (
445 )
446 {
447  tmp<fvMatrix<Type> > tfvm
448  (
449  new fvMatrix<Type>
450  (
451  vf,
452  vf.dimensions()*dimVol/dimTime
453  )
454  );
455 
456  fvMatrix<Type>& fvm = tfvm();
457 
458  scalarField rDeltaT(CorDeltaT()().internalField());
459 
460  fvm.diag() = rDeltaT*mesh().Vsc();
461 
462  if (mesh().moving())
463  {
464  fvm.source() = rDeltaT*vf.oldTime().internalField()*mesh().Vsc0();
465  }
466  else
467  {
468  fvm.source() = rDeltaT*vf.oldTime().internalField()*mesh().Vsc();
469  }
470 
471  return tfvm;
472 }
473 
474 
475 template<class Type>
478 (
479  const dimensionedScalar& rho,
481 )
482 {
483  tmp<fvMatrix<Type> > tfvm
484  (
485  new fvMatrix<Type>
486  (
487  vf,
488  rho.dimensions()*vf.dimensions()*dimVol/dimTime
489  )
490  );
491  fvMatrix<Type>& fvm = tfvm();
492 
493  scalarField rDeltaT(CorDeltaT()().internalField());
494 
495  fvm.diag() = rDeltaT*rho.value()*mesh().Vsc();
496 
497  if (mesh().moving())
498  {
499  fvm.source() = rDeltaT
500  *rho.value()*vf.oldTime().internalField()*mesh().Vsc0();
501  }
502  else
503  {
504  fvm.source() = rDeltaT
505  *rho.value()*vf.oldTime().internalField()*mesh().Vsc();
506  }
507 
508  return tfvm;
509 }
510 
511 
512 template<class Type>
515 (
516  const volScalarField& rho,
518 )
519 {
520  tmp<fvMatrix<Type> > tfvm
521  (
522  new fvMatrix<Type>
523  (
524  vf,
525  rho.dimensions()*vf.dimensions()*dimVol/dimTime
526  )
527  );
528  fvMatrix<Type>& fvm = tfvm();
529 
530  scalarField rDeltaT(CorDeltaT()().internalField());
531 
532  fvm.diag() = rDeltaT*rho.internalField()*mesh().Vsc();
533 
534  if (mesh().moving())
535  {
536  fvm.source() = rDeltaT
537  *rho.oldTime().internalField()
538  *vf.oldTime().internalField()*mesh().Vsc0();
539  }
540  else
541  {
542  fvm.source() = rDeltaT
543  *rho.oldTime().internalField()
544  *vf.oldTime().internalField()*mesh().Vsc();
545  }
546 
547  return tfvm;
548 }
549 
550 
551 template<class Type>
554 (
555  const volScalarField& alpha,
556  const volScalarField& rho,
558 )
559 {
560  tmp<fvMatrix<Type> > tfvm
561  (
562  new fvMatrix<Type>
563  (
564  vf,
565  alpha.dimensions()*rho.dimensions()*vf.dimensions()*dimVol/dimTime
566  )
567  );
568  fvMatrix<Type>& fvm = tfvm();
569 
570  scalarField rDeltaT(CorDeltaT()().internalField());
571 
572  fvm.diag() = rDeltaT*alpha.internalField()*rho.internalField()*mesh().Vsc();
573 
574  if (mesh().moving())
575  {
576  fvm.source() = rDeltaT
577  *alpha.oldTime().internalField()
578  *rho.oldTime().internalField()
579  *vf.oldTime().internalField()*mesh().Vsc0();
580  }
581  else
582  {
583  fvm.source() = rDeltaT
584  *alpha.oldTime().internalField()
585  *rho.oldTime().internalField()
586  *vf.oldTime().internalField()*mesh().Vsc();
587  }
588 
589  return tfvm;
590 }
591 
592 
593 template<class Type>
596 (
599 )
600 {
601  const surfaceScalarField rDeltaT(fvc::interpolate(CorDeltaT()));
602 
603  fluxFieldType phiCorr
604  (
605  mesh().Sf() & (Uf.oldTime() - fvc::interpolate(U.oldTime()))
606  );
607 
608  return tmp<fluxFieldType>
609  (
610  new fluxFieldType
611  (
612  IOobject
613  (
614  "ddtCorr(" + U.name() + ',' + Uf.name() + ')',
615  mesh().time().timeName(),
616  mesh()
617  ),
618  this->fvcDdtPhiCoeff
619  (
620  U.oldTime(),
621  (mesh().Sf() & Uf.oldTime()),
622  phiCorr
623  )
624  *rDeltaT*phiCorr
625  )
626  );
627 }
628 
629 
630 template<class Type>
633 (
635  const fluxFieldType& phi
636 )
637 {
638  const surfaceScalarField rDeltaT(fvc::interpolate(CorDeltaT()));
639 
640  fluxFieldType phiCorr
641  (
642  phi.oldTime() - (mesh().Sf() & fvc::interpolate(U.oldTime()))
643  );
644 
645  return tmp<fluxFieldType>
646  (
647  new fluxFieldType
648  (
649  IOobject
650  (
651  "ddtCorr(" + U.name() + ',' + phi.name() + ')',
652  mesh().time().timeName(),
653  mesh()
654  ),
655  this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr)
656  *rDeltaT*phiCorr
657  )
658  );
659 }
660 
661 
662 template<class Type>
665 (
666  const volScalarField& rho,
669 )
670 {
671  if
672  (
673  U.dimensions() == dimVelocity
674  && Uf.dimensions() == dimDensity*dimVelocity
675  )
676  {
677  const surfaceScalarField rDeltaT(fvc::interpolate(CorDeltaT()));
678 
680  (
681  rho.oldTime()*U.oldTime()
682  );
683 
684  fluxFieldType phiCorr
685  (
686  mesh().Sf() & (Uf.oldTime() - fvc::interpolate(rhoU0))
687  );
688 
689  return tmp<fluxFieldType>
690  (
691  new fluxFieldType
692  (
693  IOobject
694  (
695  "ddtCorr("
696  + rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
697  mesh().time().timeName(),
698  mesh()
699  ),
700  this->fvcDdtPhiCoeff
701  (
702  rhoU0,
703  mesh().Sf() & Uf.oldTime(),
704  phiCorr
705  )
706  *rDeltaT*phiCorr
707  )
708  );
709  }
710  else if
711  (
712  U.dimensions() == dimDensity*dimVelocity
713  && Uf.dimensions() == dimDensity*dimVelocity
714  )
715  {
716  return fvcDdtUfCorr(U, Uf);
717  }
718  else
719  {
721  << "dimensions of Uf are not correct"
722  << abort(FatalError);
723 
724  return fluxFieldType::null();
725  }
726 }
727 
728 
729 template<class Type>
732 (
733  const volScalarField& rho,
735  const fluxFieldType& phi
736 )
737 {
738  if
739  (
740  U.dimensions() == dimVelocity
741  && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
742  )
743  {
744  dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
745 
747  (
748  rho.oldTime()*U.oldTime()
749  );
750 
751  fluxFieldType phiCorr
752  (
753  phi.oldTime() - (mesh().Sf() & fvc::interpolate(rhoU0))
754  );
755 
756  return tmp<fluxFieldType>
757  (
758  new fluxFieldType
759  (
760  IOobject
761  (
762  "ddtCorr("
763  + rho.name() + ',' + U.name() + ',' + phi.name() + ')',
764  mesh().time().timeName(),
765  mesh()
766  ),
767  this->fvcDdtPhiCoeff(rhoU0, phi.oldTime(), phiCorr)
768  *rDeltaT*phiCorr
769  )
770  );
771  }
772  else if
773  (
774  U.dimensions() == rho.dimensions()*dimVelocity
775  && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
776  )
777  {
778  return fvcDdtPhiCorr(U, phi);
779  }
780  else
781  {
783  << "dimensions of phi are not correct"
784  << abort(FatalError);
785 
786  return fluxFieldType::null();
787  }
788 }
789 
790 
791 template<class Type>
793 (
795 )
796 {
798  (
800  (
801  IOobject
802  (
803  "meshPhi",
804  mesh().time().timeName(),
805  mesh(),
808  ),
809  mesh(),
811  )
812  );
813 }
814 
815 
816 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
817 
818 } // End namespace fv
819 
820 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
821 
822 } // End namespace Foam
823 
824 // ************************************************************************* //
Foam::IOobject
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Definition: IOobject.H:91
Foam::fv::CoEulerDdtScheme::CofrDeltaT
tmp< surfaceScalarField > CofrDeltaT() const
Return the reciprocal of the face-Courant-number limited time-step.
Definition: CoEulerDdtScheme.C:108
p
p
Definition: pEqn.H:62
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: UList.H:406
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:118
Foam::dimVelocity
const dimensionSet dimVelocity
Foam::dimDensity
const dimensionSet dimDensity
Foam::fv::CoEulerDdtScheme::fvcDdt
tmp< GeometricField< Type, fvPatchField, volMesh > > fvcDdt(const dimensioned< Type > &)
Definition: CoEulerDdtScheme.C:156
phi
surfaceScalarField & phi
Definition: setRegionFluidFields.H:8
Foam::constant::atomic::alpha
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
Definition: readThermalProperties.H:216
Foam::fvc::interpolate
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate(const GeometricField< Type, fvPatchField, volMesh > &vf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
Definition: surfaceInterpolate.C:110
Foam::fvsPatchField
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
Definition: fvsPatchField.H:65
Foam::GeometricField::oldTime
const GeometricField< Type, PatchField, GeoMesh > & oldTime() const
Return old time field.
Definition: GeometricField.C:804
fvcDiv.H
Calculate the divergence of the given field.
Foam::dimensioned::name
const word & name() const
Return const reference to name.
Definition: dimensionedType.C:235
Foam::GeometricField::boundaryField
GeometricBoundaryField & boundaryField()
Return reference to GeometricBoundaryField.
Definition: GeometricField.C:735
Foam::dimensioned::value
const Type & value() const
Return const reference to value.
Definition: dimensionedType.C:261
Foam::fv::CoEulerDdtScheme::fvmDdt
tmp< fvMatrix< Type > > fvmDdt(const GeometricField< Type, fvPatchField, volMesh > &)
Definition: CoEulerDdtScheme.C:443
Foam::dimensionSet
Dimension set for the base types.
Definition: dimensionSet.H:116
Foam::mag
dimensioned< scalar > mag(const dimensioned< Type > &)
Foam::surfaceInterpolation::deltaCoeffs
const surfaceScalarField & deltaCoeffs() const
Return reference to cell-centre difference coefficients.
Definition: surfaceInterpolation.C:89
Foam::IOobject::NO_WRITE
@ NO_WRITE
Definition: IOobject.H:118
U
U
Definition: pEqn.H:46
fvMatrices.H
A special matrix type and solver, designed for finite volume solutions of scalar equations.
Foam::objectRegistry
Registry of regIOobjects.
Definition: objectRegistry.H:50
Foam::dimTime
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
Definition: dimensionSets.H:51
Foam::dimArea
const dimensionSet dimArea(sqr(dimLength))
Definition: dimensionSets.H:57
Foam::fv::CoEulerDdtScheme::CorDeltaT
tmp< volScalarField > CorDeltaT() const
Return the reciprocal of the Courant-number limited time-step.
Definition: CoEulerDdtScheme.C:44
Foam::Field
Pre-declare SubField and related Field type.
Definition: Field.H:57
Foam::IOobject::NO_READ
@ NO_READ
Definition: IOobject.H:111
Foam::fvPatch
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:61
Foam::GeometricField::internalField
InternalField & internalField()
Return internal field.
Definition: GeometricField.C:724
Foam::dimensionedScalar
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Definition: dimensionedScalarFwd.H:41
Foam::FatalError
error FatalError
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:18
Foam::dimensioned
Generic dimensioned Type class.
Definition: dimensionedScalarFwd.H:41
surfaceInterpolate.H
Surface Interpolation.
Foam::calculatedFvPatchField
This boundary condition is not designed to be evaluated; it is assmued that the value is assigned via...
Definition: calculatedFvPatchField.H:65
Foam
Namespace for OpenFOAM.
Definition: combustionModel.C:30
Foam::abort
errorManip< error > abort(error &err)
Definition: errorManip.H:131
Foam::fv::CoEulerDdtScheme::fvcDdtUfCorr
tmp< fluxFieldType > fvcDdtUfCorr(const GeometricField< Type, fvPatchField, volMesh > &U, const GeometricField< Type, fvsPatchField, surfaceMesh > &Uf)
Definition: CoEulerDdtScheme.C:596
Foam::GeometricField::correctBoundaryConditions
void correctBoundaryConditions()
Correct boundary field.
Definition: GeometricField.C:885
rho
rho
Definition: pEqn.H:3
internalField
conserve internalField()+
Foam::max
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
fv
labelList fv(nPoints)
FatalErrorInFunction
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Definition: error.H:318
Foam::fvsPatchField::patch
const fvPatch & patch() const
Return patch.
Definition: fvsPatchField.H:278
Foam::fv::CoEulerDdtScheme::fvcDdtPhiCorr
tmp< fluxFieldType > fvcDdtPhiCorr(const GeometricField< Type, fvPatchField, volMesh > &U, const fluxFieldType &phi)
Definition: CoEulerDdtScheme.C:633
Foam::pTraits
Traits class for primitives.
Definition: pTraits.H:50
Foam::fvMatrix::source
Field< Type > & source()
Definition: fvMatrix.H:291
Foam::UList
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Definition: HashTable.H:60
patchi
label patchi
Definition: getPatchFieldScalar.H:1
timeName
word timeName
Definition: getTimeIndex.H:3
CoEulerDdtScheme.H
Foam::fvMatrix< Type >
Foam::dimVol
const dimensionSet dimVol(dimVolume)
Definition: dimensionSets.H:59
Foam::fv::CoEulerDdtScheme::meshPhi
tmp< surfaceScalarField > meshPhi(const GeometricField< Type, fvPatchField, volMesh > &)
Definition: CoEulerDdtScheme.C:793
Foam::dimensioned::dimensions
const dimensionSet & dimensions() const
Return const reference to dimensions.
Definition: dimensionedType.C:248
Foam::dimVolume
const dimensionSet dimVolume(pow3(dimLength))
Definition: dimensionSets.H:58
Foam::GeometricField
Generic GeometricField class.
Definition: surfaceFieldsFwd.H:52
Uf
Uf
Definition: pEqn.H:78
Foam::GeometricField::GeometricBoundaryField
Definition: GeometricField.H:105