44scalar EulerFaD2dt2Scheme<Type>::deltaT_()
const
46 return mesh().time().deltaTValue();
51scalar EulerFaD2dt2Scheme<Type>::deltaT0_()
const
53 return mesh().time().deltaT0Value();
65 scalar deltaT = deltaT_();
66 scalar deltaT0 = deltaT0_();
69 4.0/
sqr(
mesh().time().deltaT() +
mesh().time().deltaT0());
71 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
72 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
76 mesh().thisDb().newIOobject
78 "d2dt2("+dt.
name()+
')',
79 { IOobject::REGISTER }
85 scalar halfRdeltaT2 = 0.5*rDeltaT2.
value();
100 tdt2dt2.ref().primitiveFieldRef() =
101 halfRdeltaT2*dt.
value()
102 *(coefft*SS0 - (coefft*SS0 + coefft00*S0S00) + coefft00*S0S00)
131 4.0/
sqr(
mesh().time().deltaT() +
mesh().time().deltaT0());
135 mesh().thisDb().newIOobject
137 "d2dt2("+vf.
name()+
')',
138 { IOobject::REGISTER }
142 scalar deltaT = deltaT_();
143 scalar deltaT0 = deltaT0_();
145 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
146 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
147 scalar coefft0 = coefft + coefft00;
151 scalar halfRdeltaT2 = 0.5*rDeltaT2.
value();
167 - (coefft*SS0 + coefft00*S0S00)
170 + (coefft00*S0S00)*vf.
oldTime().oldTime().primitiveField()
175 - coefft0*vf.
oldTime().boundaryField()
176 + coefft00*vf.
oldTime().oldTime().boundaryField()
183 return tmp<GeometricField<Type, faPatchField, areaMesh>>
185 new GeometricField<Type, faPatchField, areaMesh>
192 + coefft00*vf.
oldTime().oldTime()
209 4.0/
sqr(
mesh().time().deltaT() +
mesh().time().deltaT0());
213 mesh().thisDb().newIOobject
215 "d2dt2("+
rho.name()+
','+vf.
name()+
')',
216 { IOobject::REGISTER }
220 scalar deltaT = deltaT_();
221 scalar deltaT0 = deltaT0_();
223 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
224 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
225 scalar coefft0 = coefft + coefft00;
229 scalar halfRdeltaT2 = 0.5*rDeltaT2.
value();
252 - (coefft*SS0rhoRho0 + coefft00*S0S00rho0Rho00)
255 + (coefft00*S0S00rho0Rho00)
256 *vf.
oldTime().oldTime().primitiveField()
261 - coefft0*vf.
oldTime().boundaryField()
262 + coefft00*vf.
oldTime().oldTime().boundaryField()
270 return tmp<GeometricField<Type, faPatchField, areaMesh>>
272 new GeometricField<Type, faPatchField, areaMesh>
275 rDeltaT2 *
rho.value() *
279 + coefft00*vf.
oldTime().oldTime()
296 4.0/
sqr(
mesh().time().deltaT() +
mesh().time().deltaT0());
300 mesh().thisDb().newIOobject
302 "d2dt2("+
rho.name()+
','+vf.
name()+
')',
303 { IOobject::REGISTER }
307 scalar deltaT = deltaT_();
308 scalar deltaT0 = deltaT0_();
310 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
311 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
315 scalar halfRdeltaT2 = 0.5*rDeltaT2.
value();
316 scalar quarterRdeltaT2 = 0.25*rDeltaT2.
value();
321 *(
rho.primitiveField() +
rho.oldTime().primitiveField())
328 rho.oldTime().primitiveField()
329 +
rho.oldTime().oldTime().primitiveField()
344 - (coefft*SS0rhoRho0 + coefft00*S0S00rho0Rho00)
347 + (coefft00*S0S00rho0Rho00)
348 *vf.
oldTime().oldTime().primitiveField()
353 *(
rho.boundaryField() +
rho.oldTime().boundaryField())
360 +
rho.oldTime().boundaryField()
364 rho.oldTime().boundaryField()
365 +
rho.oldTime().oldTime().boundaryField()
371 rho.oldTime().boundaryField()
372 +
rho.oldTime().oldTime().boundaryField()
373 )*vf.
oldTime().oldTime().boundaryField()
385 return tmp<GeometricField<Type, faPatchField, areaMesh>>
387 new GeometricField<Type, faPatchField, areaMesh>
393 - (coefft*rhoRho0 + coefft00*rho0Rho00)*vf.
oldTime()
394 + coefft00*rho0Rho00*vf.
oldTime().oldTime()
420 scalar deltaT = deltaT_();
421 scalar deltaT0 = deltaT0_();
423 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
424 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
425 scalar coefft0 = coefft + coefft00;
427 scalar rDeltaT2 = 4.0/
sqr(deltaT + deltaT0);
431 scalar halfRdeltaT2 = rDeltaT2/2.0;
436 fam.diag() = (coefft*halfRdeltaT2)*SS0;
438 fam.source() = halfRdeltaT2*
440 (coefft*SS0 + coefft00*S0S00)
443 - (coefft00*S0S00)*vf.
oldTime().oldTime().primitiveField()
448 fam.diag() = (coefft*rDeltaT2)*
mesh().S();
450 fam.source() = rDeltaT2*
mesh().S()*
452 coefft0*vf.
oldTime().primitiveField()
453 - coefft00*vf.
oldTime().oldTime().primitiveField()
481 scalar deltaT = deltaT_();
482 scalar deltaT0 = deltaT0_();
484 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
485 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
487 scalar rDeltaT2 = 4.0/
sqr(deltaT + deltaT0);
491 scalar halfRdeltaT2 = 0.5*rDeltaT2;
496 fam.diag() =
rho.value()*(coefft*halfRdeltaT2)*SS0;
498 fam.source() = halfRdeltaT2*
rho.value()*
500 (coefft*SS0 + coefft00*S0S00)
503 - (coefft00*S0S00)*vf.
oldTime().oldTime().primitiveField()
508 fam.diag() = (coefft*rDeltaT2)*
mesh().S()*
rho.value();
510 fam.source() = rDeltaT2*
mesh().S()*
rho.value()*
512 (coefft + coefft00)*vf.
oldTime().primitiveField()
513 - coefft00*vf.
oldTime().oldTime().primitiveField()
539 scalar deltaT =deltaT_();
540 scalar deltaT0 = deltaT0_();
542 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
543 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
545 scalar rDeltaT2 = 4.0/
sqr(deltaT + deltaT0);
549 scalar quarterRdeltaT2 = 0.25*rDeltaT2;
554 *(
rho.primitiveField() +
rho.oldTime().primitiveField())
561 rho.oldTime().primitiveField()
562 +
rho.oldTime().oldTime().primitiveField()
566 fam.diag() = (coefft*quarterRdeltaT2)*SS0rhoRho0;
568 fam.source() = quarterRdeltaT2*
570 (coefft*SS0rhoRho0 + coefft00*S0S00rho0Rho00)
573 - (coefft00*S0S00rho0Rho00)
574 *vf.
oldTime().oldTime().primitiveField()
579 scalar halfRdeltaT2 = 0.5*rDeltaT2;
583 rho.primitiveField() +
rho.oldTime().primitiveField()
588 rho.oldTime().primitiveField()
589 +
rho.oldTime().oldTime().primitiveField()
592 fam.diag() = (coefft*halfRdeltaT2)*
mesh().S()*rhoRho0;
594 fam.source() = halfRdeltaT2*
mesh().S()*
596 (coefft*rhoRho0 + coefft00*rho0Rho00)
599 - (coefft00*rho0Rho00)
600 *vf.
oldTime().oldTime().primitiveField()
const dimensionSet & dimensions() const noexcept
Return dimensions.
Generic GeometricField class.
const GeometricField< Type, PatchField, GeoMesh > & oldTime() const
Return old time field.
const Internal::FieldType & primitiveField() const noexcept
Return a const-reference to the internal field values.
const Boundary & boundaryField() const noexcept
Return const-reference to the boundary field.
Defines the attributes of an object for which implicit objectRegistry management is supported,...
const word & name() const noexcept
Return the object name.
Generic dimensioned Type class.
const dimensionSet & dimensions() const noexcept
Return const reference to dimensions.
const word & name() const noexcept
Return const reference to name.
const Type & value() const noexcept
Return const reference to value.
A special matrix type and solver, designed for finite area solutions of scalar equations....
static const word & calculatedType() noexcept
The type name for calculated patch fields.
tmp< faMatrix< Type > > famD2dt2(const GeometricField< Type, faPatchField, areaMesh > &)
const faMesh & mesh() const
Return mesh reference.
tmp< GeometricField< Type, faPatchField, areaMesh > > facD2dt2(const dimensioned< Type >)
A class for managing temporary objects.
T & ref() const
Return non-const reference to the contents of a non-null managed pointer.
Namespace for finite-area.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
const dimensionSet dimArea(sqr(dimLength))
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
GeometricField< scalar, faPatchField, areaMesh > areaScalarField
static constexpr const zero Zero
Global zero (0).
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Calculate the matrix for the second temporal derivative.