Skip to content

Commit 2a5b3a3

Browse files
committed
for in UEqn
1 parent 79c8e39 commit 2a5b3a3

File tree

4 files changed

+147
-55
lines changed

4 files changed

+147
-55
lines changed

src/dfGenMatrixIncompressible/GenFvMatrix.H

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,13 @@ gaussDivFvcdiv
111111
const GeometricField<Type, fvPatchField, volMesh>& vf
112112
);
113113

114+
template<class Type>
115+
tmp<GeometricField<Type, fvPatchField, volMesh>>
116+
fvcSurfaceIntegrate
117+
(
118+
const tmp<GeometricField<Type, fvsPatchField, surfaceMesh>>& tssf
119+
);
120+
114121

115122
// fvm::laplacian
116123

src/dfGenMatrixIncompressible/GenMatrix_U.C

Lines changed: 69 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
#include "immiscibleIncompressibleTwoPhaseMixture.H"
1414
#include "turbulentTransportModel.H"
1515

16+
#include "turbulenceModel.H"
17+
#include "autoPtr.H"
18+
#include "runTimeSelectionTables.H"
19+
1620
namespace Foam{
1721

1822
tmp<fvVectorMatrix>
@@ -50,15 +54,59 @@ GenMatrix_U(
5054
scalar rDeltaT = 1.0/mesh.time().deltaTValue();
5155

5256
// interField
53-
fvm.lower() = -weights.primitiveField()*rhoPhi.primitiveField();
54-
// fvm.upper() = fvm.lower() + rhoPhi.primitiveField();
55-
fvm.upper() = -weights.primitiveField()*rhoPhi.primitiveField() + rhoPhi.primitiveField();
56-
fvm.negSumDiag(); // diag[i] = - (sum_of_lower_coeffs[i] + sum_of_upper_coeffs[i]) 先设置对流项
57-
58-
fvm.diag() += rDeltaT*rho.primitiveField()*mesh.Vsc(); // 再加上瞬态项
59-
fvm.source() = rDeltaT
60-
*rho.oldTime().primitiveField()
61-
*U.oldTime().primitiveField()*mesh.Vsc();
57+
// fvm.lower() = -weights.primitiveField()*rhoPhi.primitiveField();
58+
// // fvm.upper() = fvm.lower() + rhoPhi.primitiveField();
59+
// fvm.upper() = -weights.primitiveField()*rhoPhi.primitiveField() + rhoPhi.primitiveField();
60+
// fvm.negSumDiag();
61+
// fvm.diag() += rDeltaT*rho.primitiveField()*mesh.Vsc(); // 再加上瞬态项
62+
// fvm.source() = rDeltaT
63+
// *rho.oldTime().primitiveField()
64+
// *U.oldTime().primitiveField()*mesh.Vsc();
65+
66+
67+
vector* __restrict__ sourcePtr = fvm.source().begin();
68+
scalar* __restrict__ diagPtr = fvm.diag().begin();
69+
scalar* __restrict__ lowerPtr = fvm.lower().begin();
70+
scalar* __restrict__ upperPtr = fvm.upper().begin();
71+
72+
const labelUList& l = fvm.lduAddr().lowerAddr();
73+
const labelUList& u = fvm.lduAddr().upperAddr();
74+
75+
const scalar* const __restrict__ weightsPtr = weights.primitiveField().begin();
76+
const scalar* const __restrict__ rhoPhiPtr = rhoPhi.primitiveField().begin();
77+
const scalar* const __restrict__ rhoPtr = rho.primitiveField().begin();
78+
const scalar* const __restrict__ meshVscPtr = mesh.Vsc()().begin();
79+
const scalar* const __restrict__ rhoOldTimePtr = rho.oldTime().primitiveField().begin();
80+
81+
const vector* const __restrict__ UOldTimePtr = U.oldTime().primitiveField().begin();
82+
83+
const label nFaces = fvm.lower().size();
84+
const label nCells = fvm.diag().size();
85+
86+
for (label facei = 0; facei < nFaces; facei++)
87+
{
88+
scalar flux = weightsPtr[facei] * rhoPhiPtr[facei];
89+
lowerPtr[facei] = -flux;
90+
upperPtr[facei] = -flux + rhoPhiPtr[facei];
91+
}
92+
93+
for (label celli = 0; celli < nCells; celli++)
94+
{
95+
diagPtr[celli] = 0.0; // vector::zero;
96+
}
97+
98+
// 然后从 off-diagonal 项累积到对角线
99+
for (label facei = 0; facei < nFaces; facei++)
100+
{
101+
diagPtr[l[facei]] -= lowerPtr[facei]; // 从下三角累积
102+
diagPtr[u[facei]] -= upperPtr[facei]; // 从上三角累积
103+
}
104+
105+
for (label celli = 0; celli < nCells; celli++)
106+
{
107+
diagPtr[celli] += rDeltaT * rhoPtr[celli] * meshVscPtr[celli];
108+
sourcePtr[celli] = rDeltaT * rhoOldTimePtr[celli] * UOldTimePtr[celli] * meshVscPtr[celli];
109+
}
62110

63111
// boundaryField
64112
forAll(U.boundaryField(), patchi)
@@ -77,35 +125,26 @@ GenMatrix_U(
77125
fvm += fvc::surfaceIntegrate(rhoPhi*gcs.interpScheme().correction(U));
78126
}
79127

128+
// -------------------------------------------------------
80129

130+
81131

82-
// scalar* __restrict__ diagPtr_ddt = fvm.diag().begin();
83-
// scalar* __restrict__ sourcePtr_ddt = fvm.source().begin();
84-
// scalar* __restrict__ lowerPtr_ddt = fvm.lower().begin();
85-
// scalar* __restrict__ upperPtr_ddt = fvm.upper().begin();
86-
87-
// const labelUList& l = fvm.lduAddr().lowerAddr();
88-
// const labelUList& u = fvm.lduAddr().upperAddr();
89-
132+
// -------------------------------------------------------
90133
// interFoam
134+
// const alphaField& alpha;
91135

92136
tmp<fvVectorMatrix> tfvm
93137
(
94-
new fvVectorMatrix
95-
(
96-
(
97-
tfvm_DDT
98-
// + fvm::ddt(rho, U)
99-
// + fvm::div(rhoPhi, U)
100-
)
101-
// + MRF.DDt(rho, U)
102-
103-
==
104-
(- turbulence.divDevRhoReff(rho, U)) // fvOptions(rho, U)
105-
)
138+
tfvm_DDT
139+
// + fvm::ddt(rho, U)
140+
// + fvm::div(rhoPhi, U)
141+
// + MRF.DDt(rho, U)
142+
// + turbulence.divDevRhoReff(rho, U)
143+
- fvc::div((turbulence.alpha()*rho*turbulence.nuEff())*dev2(T(fvc::grad(U))))
144+
- fvm::laplacian(turbulence.alpha()*rho*turbulence.nuEff(), U)
145+
// - fvOptions(rho, U)
106146
);
107147

108-
109148
// @dfLowMachFoam
110149
// tmp<fvVectorMatrix> tUEqn
111150
// (

src/dfGenMatrixIncompressible/GenMatrix_p.C

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -106,28 +106,27 @@ GenMatrix_p(
106106

107107
// -------------------------------------------------------
108108

109-
109+
// tmp<GeometricField<Type, fvPatchField, volMesh>>
110+
// (
111+
// new GeometricField<Type, fvPatchField, volMesh>
112+
// (
113+
// "div("+phiHbyA->name()+')',
114+
// fvcSurfaceIntegrate(phiHbyA)
115+
// )
116+
// );
110117

111118
// interFoam pEqn.H
112119

113120
tmp<fvScalarMatrix> tfvm
114121
(
115-
new fvScalarMatrix
116-
(
117-
(
118-
tfvm_Lap
119-
// + fvm::laplacian(rAUf, p_rgh)
120-
)
121-
==
122-
(fvc::div(phiHbyA))
123-
)
122+
tfvm_Lap
123+
// + fvm::laplacian(rAUf, p_rgh)
124+
- fvc::div(phiHbyA)
124125
);
125126

126127
return tfvm;
127-
128128
}
129129

130-
131130
}
132131

133132

src/dfGenMatrixIncompressible/linearViscousStress.C

Lines changed: 60 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,69 @@
1-
#include "fvc.H"
2-
#include "fvm.H"
3-
#include "GenFvMatrix.H"
1+
// #include "linearViscousStress.H"
2+
// #include "fvc.H"
3+
// #include "fvm.H"
4+
// #include "GenFvMatrix.H"
45

5-
// namespace Foam
6-
// {
6+
// #include "incompressibleTwoPhaseMixture.H"
7+
// #include "immiscibleIncompressibleTwoPhaseMixture.H"
8+
// #include "turbulentTransportModel.H"
9+
// // namespace Foam
10+
// // {
11+
12+
// // tmp<fvVectorMatrix>
13+
// // turbulenceModelLinearViscousStressDivDevRhoReff
14+
// // (
15+
// // volVectorField& U,
16+
// // incompressible::turbulenceModel& turbulence
17+
// // )
18+
// // {
19+
// // return
20+
// // (
21+
// // - fvc::div((turbulence.alpha()*turbulence.rho()*turbulence.nuEff())*dev2(T(fvc::grad(U))))
22+
// // - fvm::laplacian(turbulence.alpha()*turbulence.rho()*turbulence.nuEff(), U)
23+
// // );
24+
// // }
25+
26+
// // }
727

8-
// tmp<fvVectorMatrix>
9-
// turbulenceModelLinearViscousStressDivDevRhoReff
28+
// template<class BasicTurbulenceModel>
29+
// Foam::linearViscousStress<BasicTurbulenceModel>::linearViscousStress
1030
// (
11-
// volVectorField& U,
12-
// incompressible::turbulenceModel& turbulence
31+
// const word& modelName,
32+
// const alphaField& alpha,
33+
// const rhoField& rho,
34+
// const volVectorField& U,
35+
// const surfaceScalarField& alphaRhoPhi,
36+
// const surfaceScalarField& phi,
37+
// const transportModel& transport,
38+
// const word& propertiesName
1339
// )
40+
// :
41+
// BasicTurbulenceModel
42+
// (
43+
// modelName,
44+
// alpha,
45+
// rho,
46+
// U,
47+
// alphaRhoPhi,
48+
// phi,
49+
// transport,
50+
// propertiesName
51+
// )
52+
// {}
53+
54+
// // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
55+
56+
// template<class BasicTurbulenceModel>
57+
// Foam::tmp<Foam::fvVectorMatrix>
58+
// Foam::linearViscousStress<BasicTurbulenceModel>::divDevRhoReff
59+
// (
60+
// const volScalarField& rho,
61+
// incompressible::turbulenceModel& turbulence
62+
// ) const
1463
// {
1564
// return
1665
// (
17-
// - fvc::div((turbulence.alpha()*turbulence.rho()*turbulence.nuEff())*dev2(T(fvc::grad(U))))
18-
// - fvm::laplacian(turbulence.alpha()*turbulence.rho()*turbulence.nuEff(), U)
66+
// - fvc::div((turbulence->alpha_*rho*turbulence->nuEff())*dev2(T(fvc::grad(U))))
67+
// - fvm::laplacian(turbulence->alpha_*rho*turbulence->nuEff(), U)
1968
// );
2069
// }
21-
22-
// }

0 commit comments

Comments
 (0)