44 scalar EulerFaD2dt2Scheme<Type>::deltaT_()
const 46 return mesh().time().deltaTValue();
51 scalar 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()+
')',
85 scalar halfRdeltaT2 = 0.5*rDeltaT2.value();
100 tdt2dt2.
ref().primitiveFieldRef() =
101 halfRdeltaT2*dt.
value()
102 *(coefft*SS0 - (coefft*SS0 + coefft00*S0S00) + coefft00*S0S00)
109 return tmp<GeometricField<Type, faPatchField, areaMesh>>
111 new GeometricField<Type, faPatchField, areaMesh>
131 4.0/
sqr(
mesh().time().deltaT() +
mesh().time().deltaT0());
135 mesh().thisDb().newIOobject
137 "d2dt2("+vf.
name()+
')',
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();
156 return tmp<GeometricField<Type, faPatchField, areaMesh>>
158 new GeometricField<Type, faPatchField, areaMesh>
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()+
')',
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();
241 return tmp<GeometricField<Type, faPatchField, areaMesh>>
243 new GeometricField<Type, faPatchField, areaMesh>
252 - (coefft*SS0rhoRho0 + coefft00*S0S00rho0Rho00)
255 + (coefft00*S0S00rho0Rho00)
256 *vf.
oldTime().oldTime().primitiveField()
258 rDeltaT2.value()*
rho.value()*
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()+
')',
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()
333 return tmp<GeometricField<Type, faPatchField, areaMesh>>
335 new GeometricField<Type, faPatchField, areaMesh>
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 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.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
const dimensionSet & dimensions() const noexcept
Return const reference to dimensions.
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.
Request registration (bool: true)
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)