45 scalar EulerFaD2dt2Scheme<Type>::deltaT_()
const 47 return mesh().time().deltaT().value();
52 scalar EulerFaD2dt2Scheme<Type>::deltaT0_()
const 54 return mesh().time().deltaT0().value();
66 scalar deltaT = deltaT_();
67 scalar deltaT0 = deltaT0_();
70 4.0/
sqr(
mesh().time().deltaT() +
mesh().time().deltaT0());
72 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
73 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
77 "d2dt2("+dt.
name()+
')',
78 mesh().time().timeName(),
86 scalar halfRdeltaT2 = rDeltaT2.
value()/2.0;
101 tdt2dt2.
ref().primitiveFieldRef() =
102 halfRdeltaT2*dt.
value()
103 *(coefft*SS0 - (coefft*SS0 + coefft00*S0S00) + coefft00*S0S00)
132 4.0/
sqr(
mesh().time().deltaT() +
mesh().time().deltaT0());
136 "d2dt2("+vf.
name()+
')',
137 mesh().time().timeName(),
143 scalar deltaT = deltaT_();
144 scalar deltaT0 = deltaT0_();
146 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
147 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
148 scalar coefft0 = coefft + coefft00;
152 scalar halfRdeltaT2 = rDeltaT2.
value()/2.0;
168 - (coefft*SS0 + coefft00*S0S00)
171 + (coefft00*S0S00)*vf.
oldTime().oldTime().primitiveField()
176 - coefft0*vf.
oldTime().boundaryField()
177 + coefft00*vf.
oldTime().oldTime().boundaryField()
184 return tmp<GeometricField<Type, faPatchField, areaMesh>>
186 new GeometricField<Type, faPatchField, areaMesh>
193 + coefft00*vf.
oldTime().oldTime()
210 4.0/
sqr(
mesh().time().deltaT() +
mesh().time().deltaT0());
214 "d2dt2("+
rho.name()+
','+vf.
name()+
')',
215 mesh().time().timeName(),
221 scalar deltaT = deltaT_();
222 scalar deltaT0 = deltaT0_();
224 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
225 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
226 scalar coefft0 = coefft + coefft00;
230 scalar halfRdeltaT2 = 0.5*rDeltaT2.
value();
251 - (coefft*SS0rhoRho0 + coefft00*S0S00rho0Rho00)
254 + (coefft00*S0S00rho0Rho00)
255 *vf.
oldTime().oldTime().primitiveField()
260 - coefft0*vf.
oldTime().boundaryField()
261 + coefft00*vf.
oldTime().oldTime().boundaryField()
269 return tmp<GeometricField<Type, faPatchField, areaMesh>>
271 new GeometricField<Type, faPatchField, areaMesh>
274 rDeltaT2 *
rho.value() *
278 + coefft00*vf.
oldTime().oldTime()
295 4.0/
sqr(
mesh().time().deltaT() +
mesh().time().deltaT0());
299 "d2dt2("+
rho.name()+
','+vf.
name()+
')',
300 mesh().time().timeName(),
306 scalar deltaT = deltaT_();
307 scalar deltaT0 = deltaT0_();
309 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
310 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
314 scalar halfRdeltaT2 = 0.5*rDeltaT2.
value();
315 scalar quarterRdeltaT2 = 0.25*rDeltaT2.
value();
320 *(
rho.primitiveField() +
rho.oldTime().primitiveField())
327 rho.oldTime().primitiveField()
328 +
rho.oldTime().oldTime().primitiveField()
343 - (coefft*SS0rhoRho0 + coefft00*S0S00rho0Rho00)
346 + (coefft00*S0S00rho0Rho00)
347 *vf.
oldTime().oldTime().primitiveField()
352 *(
rho.boundaryField() +
rho.oldTime().boundaryField())
359 +
rho.oldTime().boundaryField()
363 rho.oldTime().boundaryField()
364 +
rho.oldTime().oldTime().boundaryField()
370 rho.oldTime().boundaryField()
371 +
rho.oldTime().oldTime().boundaryField()
372 )*vf.
oldTime().oldTime().boundaryField()
384 return tmp<GeometricField<Type, faPatchField, areaMesh>>
386 new GeometricField<Type, faPatchField, areaMesh>
392 - (coefft*rhoRho0 + coefft00*rho0Rho00)*vf.
oldTime()
393 + coefft00*rho0Rho00*vf.
oldTime().oldTime()
419 scalar deltaT = deltaT_();
420 scalar deltaT0 = deltaT0_();
422 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
423 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
424 scalar coefft0 = coefft + coefft00;
426 scalar rDeltaT2 = 4.0/
sqr(deltaT + deltaT0);
430 scalar halfRdeltaT2 = rDeltaT2/2.0;
435 fam.diag() = (coefft*halfRdeltaT2)*SS0;
437 fam.source() = halfRdeltaT2*
439 (coefft*SS0 + coefft00*S0S00)
442 - (coefft00*S0S00)*vf.
oldTime().oldTime().primitiveField()
447 fam.diag() = (coefft*rDeltaT2)*
mesh().S();
449 fam.source() = rDeltaT2*
mesh().S()*
451 coefft0*vf.
oldTime().primitiveField()
452 - coefft00*vf.
oldTime().oldTime().primitiveField()
480 scalar deltaT = deltaT_();
481 scalar deltaT0 = deltaT0_();
483 scalar coefft = (deltaT + deltaT0)/(2*deltaT);
484 scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0);
486 scalar rDeltaT2 = 4.0/
sqr(deltaT + deltaT0);
490 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 Type & value() const noexcept
Return const reference to value.
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 word & name() const noexcept
Return the object name.
T & ref() const
Return non-const reference to the contents of a non-null managed pointer.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Generic GeometricField class.
Generic dimensioned Type class.
Ignore writing from objectRegistry::writeObject()
const dimensionSet & dimensions() const noexcept
Return const reference to dimensions.
Calculate the divergence of the given field.
static const word & calculatedType() noexcept
The type name for calculated patch fields.
tmp< faMatrix< Type > > famD2dt2(const GeometricField< Type, faPatchField, areaMesh > &)
const word & name() const noexcept
Return const reference to name.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
tmp< GeometricField< Type, faPatchField, areaMesh > > facD2dt2(const dimensioned< Type >)
A special matrix type and solver, designed for finite area solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
A class for managing temporary objects.
Defines the attributes of an object for which implicit objectRegistry management is supported...
Calculate the matrix for the second temporal derivative.
const Boundary & boundaryField() const noexcept
Return const-reference to the boundary field.
const dimensionSet dimArea(sqr(dimLength))
const dimensionSet & dimensions() const noexcept
Return dimensions.
GeometricField< scalar, faPatchField, areaMesh > areaScalarField
static constexpr const zero Zero
Global zero (0)