44 scalar backwardFaDdtScheme<Type>::deltaT_()
const 46 return mesh().time().deltaTValue();
51 scalar backwardFaDdtScheme<Type>::deltaT0_()
const 53 return mesh().time().deltaT0Value();
58 template<
class GeoField>
59 scalar backwardFaDdtScheme<Type>::deltaT0_(
const GeoField& vf)
const 61 if (vf.oldTime().timeIndex() == vf.oldTime().oldTime().timeIndex())
67 return mesh().time().deltaT0Value();
85 mesh().thisDb().newIOobject
92 scalar deltaT = deltaT_();
93 scalar deltaT0 = deltaT0_();
95 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
96 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
97 scalar coefft0 = coefft + coefft00;
111 tdtdt.
ref().primitiveFieldRef() = rDeltaT.
value()*dt.
value()*
113 coefft - (coefft0*
mesh().S0() - coefft00*
mesh().S00())/
mesh().S()
140 mesh().thisDb().newIOobject
142 "ddt("+dt.
name()+
')',
147 scalar deltaT = deltaT_();
148 scalar deltaT0 = deltaT0_();
150 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
151 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
152 scalar coefft0 = coefft + coefft00;
160 -rDeltaT*(coefft0 - coefft00)*dt
166 tdtdt0.ref().primitiveFieldRef() = (-rDeltaT.value()*dt.
value())*
168 (coefft0*
mesh().S0() - coefft00*
mesh().S00())/
mesh().S()
187 mesh().thisDb().newIOobject
189 "ddt("+vf.
name()+
')',
194 scalar deltaT = deltaT_();
195 scalar deltaT0 = deltaT0_(vf);
197 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
198 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
199 scalar coefft0 = coefft + coefft00;
209 rDeltaT.dimensions()*vf.dimensions(),
214 coefft0*vf.oldTime()()*
mesh().S0()
215 - coefft00*vf.oldTime().oldTime()()
221 coefft*vf.boundaryField() -
223 coefft0*vf.oldTime().boundaryField()
224 - coefft00*vf.oldTime().oldTime().boundaryField()
232 return tmp<GeometricField<Type, faPatchField, areaMesh>>
234 new GeometricField<Type, faPatchField, areaMesh>
240 - coefft0*vf.oldTime()
241 + coefft00*vf.oldTime().oldTime()
260 mesh().thisDb().newIOobject
262 "ddt0("+vf.
name()+
')',
267 scalar deltaT = deltaT_();
268 scalar deltaT0 = deltaT0_(vf);
270 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
271 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
272 scalar coefft0 = coefft + coefft00;
276 return tmp<GeometricField<Type, faPatchField, areaMesh>>
278 new GeometricField<Type, faPatchField, areaMesh>
282 rDeltaT.dimensions()*vf.dimensions(),
286 coefft0*vf.oldTime()()*
mesh().S0()
287 - coefft00*vf.oldTime().oldTime()()
294 coefft0*vf.oldTime().boundaryField()
295 - coefft00*vf.oldTime().oldTime().boundaryField()
303 return tmp<GeometricField<Type, faPatchField, areaMesh>>
305 new GeometricField<Type, faPatchField, areaMesh>
310 - coefft0*vf.oldTime()
311 + coefft00*vf.oldTime().oldTime()
331 mesh().thisDb().newIOobject
333 "ddt("+
rho.name()+
','+vf.
name()+
')',
338 scalar deltaT = deltaT_();
339 scalar deltaT0 = deltaT0_(vf);
341 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
342 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
343 scalar coefft0 = coefft + coefft00;
347 return tmp<GeometricField<Type, faPatchField, areaMesh>>
349 new GeometricField<Type, faPatchField, areaMesh>
353 rDeltaT.dimensions()*
rho.dimensions()*vf.dimensions(),
354 rDeltaT.value()*
rho.value()*
356 coefft*vf.internalField() -
358 coefft0*vf.oldTime()()*
mesh().S0()
359 - coefft00*vf.oldTime().oldTime()()
363 rDeltaT.value()*
rho.value()*
365 coefft*vf.boundaryField() -
367 coefft0*vf.oldTime().boundaryField()
368 - coefft00*vf.oldTime().oldTime().boundaryField()
376 return tmp<GeometricField<Type, faPatchField, areaMesh>>
378 new GeometricField<Type, faPatchField, areaMesh>
384 - coefft0*vf.oldTime()
385 + coefft00*vf.oldTime().oldTime()
404 mesh().thisDb().newIOobject
406 "ddt0("+
rho.name()+
','+vf.
name()+
')',
411 scalar deltaT = deltaT_();
412 scalar deltaT0 = deltaT0_(vf);
414 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
415 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
416 scalar coefft0 = coefft + coefft00;
420 return tmp<GeometricField<Type, faPatchField, areaMesh>>
422 new GeometricField<Type, faPatchField, areaMesh>
426 rDeltaT.dimensions()*
rho.dimensions()*vf.dimensions(),
427 rDeltaT.value()*
rho.value()*
430 coefft0*vf.oldTime()()*
mesh().S0()
431 - coefft00*vf.oldTime().oldTime()()
435 rDeltaT.value()*
rho.value()*
438 coefft0*vf.oldTime().boundaryField()
439 - coefft00*vf.oldTime().oldTime().boundaryField()
447 return tmp<GeometricField<Type, faPatchField, areaMesh>>
449 new GeometricField<Type, faPatchField, areaMesh>
454 - coefft0*vf.oldTime()
455 + coefft00*vf.oldTime().oldTime()
475 mesh().thisDb().newIOobject
477 "ddt("+
rho.name()+
','+vf.
name()+
')',
482 scalar deltaT = deltaT_();
483 scalar deltaT0 = deltaT0_(vf);
485 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
486 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
487 scalar coefft0 = coefft + coefft00;
491 return tmp<GeometricField<Type, faPatchField, areaMesh>>
493 new GeometricField<Type, faPatchField, areaMesh>
497 rDeltaT.dimensions()*
rho.dimensions()*vf.dimensions(),
500 coefft*
rho.internalField()*vf.internalField() -
502 coefft0*
rho.oldTime()()
503 *vf.oldTime()()*
mesh().S0()
504 - coefft00*
rho.oldTime().oldTime()()
505 *vf.oldTime().oldTime()()*
mesh().S00()
510 coefft*vf.boundaryField() -
512 coefft0*
rho.oldTime().boundaryField()
513 *vf.oldTime().boundaryField()
514 - coefft00*
rho.oldTime().oldTime().boundaryField()
515 *vf.oldTime().oldTime().boundaryField()
523 return tmp<GeometricField<Type, faPatchField, areaMesh>>
525 new GeometricField<Type, faPatchField, areaMesh>
531 - coefft0*
rho.oldTime()*vf.oldTime()
532 + coefft00*
rho.oldTime().oldTime()*vf.oldTime().oldTime()
552 mesh().thisDb().newIOobject
554 "ddt0("+
rho.name()+
','+vf.
name()+
')',
559 scalar deltaT = deltaT_();
560 scalar deltaT0 = deltaT0_(vf);
562 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
563 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
564 scalar coefft0 = coefft + coefft00;
568 return tmp<GeometricField<Type, faPatchField, areaMesh>>
570 new GeometricField<Type, faPatchField, areaMesh>
574 rDeltaT.dimensions()*
rho.dimensions()*vf.dimensions(),
578 coefft0*
rho.oldTime()()
579 *vf.oldTime()()*
mesh().S0()
580 - coefft00*
rho.oldTime().oldTime()()
581 *vf.oldTime().oldTime()()*
mesh().S00()
587 coefft0*
rho.oldTime().boundaryField()
588 *vf.oldTime().boundaryField()
589 - coefft00*
rho.oldTime().oldTime().boundaryField()
590 *vf.oldTime().oldTime().boundaryField()
598 return tmp<GeometricField<Type, faPatchField, areaMesh>>
600 new GeometricField<Type, faPatchField, areaMesh>
605 - coefft0*
rho.oldTime()*vf.oldTime()
606 + coefft00*
rho.oldTime().oldTime()*vf.oldTime().oldTime()
632 scalar rDeltaT = 1.0/deltaT_();
634 scalar deltaT = deltaT_();
635 scalar deltaT0 = deltaT0_(vf);
637 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
638 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
639 scalar coefft0 = coefft + coefft00;
641 fam.diag() = (coefft*rDeltaT)*
mesh().S();
645 fam.source() = rDeltaT*
648 - coefft00*vf.
oldTime().oldTime().primitiveField()
654 fam.source() = rDeltaT*
mesh().S()*
656 coefft0*vf.
oldTime().primitiveField()
657 - coefft00*vf.
oldTime().oldTime().primitiveField()
683 scalar rDeltaT = 1.0/deltaT_();
685 scalar deltaT = deltaT_();
686 scalar deltaT0 = deltaT0_(vf);
688 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
689 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
690 scalar coefft0 = coefft + coefft00;
692 fam.diag() = (coefft*rDeltaT*
rho.value())*
mesh().S();
696 fam.source() = rDeltaT*
rho.value()*
699 - coefft00*vf.
oldTime().oldTime().primitiveField()
705 fam.source() = rDeltaT*
mesh().S()*
rho.value()*
707 coefft0*vf.
oldTime().primitiveField()
708 - coefft00*vf.
oldTime().oldTime().primitiveField()
734 scalar rDeltaT = 1.0/deltaT_();
736 scalar deltaT = deltaT_();
737 scalar deltaT0 = deltaT0_(vf);
739 scalar coefft = 1 + deltaT/(deltaT + deltaT0);
740 scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
741 scalar coefft0 = coefft + coefft00;
743 fam.diag() = (coefft*rDeltaT)*
rho.primitiveField()*
mesh().S();
747 fam.source() = rDeltaT*
749 coefft0*
rho.oldTime().primitiveField()
751 - coefft00*
rho.oldTime().oldTime().primitiveField()
752 *vf.
oldTime().oldTime().primitiveField()*
mesh().S00()
757 fam.source() = rDeltaT*
mesh().S()*
759 coefft0*
rho.oldTime().primitiveField()
761 - coefft00*
rho.oldTime().oldTime().primitiveField()
762 *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.
tmp< GeometricField< Type, faPatchField, areaMesh > > facDdt0(const dimensioned< Type >)
tmp< faMatrix< Type > > famDdt(const GeometricField< Type, faPatchField, areaMesh > &)
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.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
Generic GeometricField class.
Generic dimensioned Type class.
const dimensionSet & dimensions() const noexcept
Return const reference to dimensions.
static const word & calculatedType() noexcept
The type name for calculated patch fields.
tmp< GeometricField< Type, faPatchField, areaMesh > > facDdt(const dimensioned< Type >)
const word & name() const noexcept
Return const reference to name.
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 dimensionSet dimArea(sqr(dimLength))
const dimensionSet & dimensions() const noexcept
Return dimensions.
static constexpr const zero Zero
Global zero (0)