myUtilities.H
Go to the documentation of this file.
1 // This function is for swapping the upper and lower of a xxEqn
2 // Let's move it elswhere later
3 void DAIrkPimpleFoam::swap(List<scalar>& a, List<scalar>& b)
4 {
5  List<scalar> temp = a;
6  a = b;
7  b = temp;
8 }
9 
10 // L2 norm of a scalar list (or the primitive field of a volScalarField)
11 scalar DAIrkPimpleFoam::L2norm(const List<scalar>& v)
12 {
13  scalar L2norm_v = 0.0;
14 
15  forAll(v, cellI)
16  {
17  L2norm_v += sqr(v[cellI]);
18  }
19  L2norm_v = std::sqrt(L2norm_v);
20 
21  return L2norm_v;
22 }
23 // Scale off cell volumes
24 scalar DAIrkPimpleFoam::L2norm(const List<scalar>& v, const List<scalar>& V)
25 {
26  scalar L2norm_v = 0.0;
27 
28  forAll(v, cellI)
29  {
30  L2norm_v += sqr(v[cellI] / V[cellI]);
31  }
32  L2norm_v = std::sqrt(L2norm_v);
33 
34  return L2norm_v;
35 }
36 
37 // L2 norm of a vector list (or the primitive field of a volVectorField)
38 vector DAIrkPimpleFoam::L2norm(const List<vector>& U)
39 {
40  vector L2norm_U = vector::zero;
41 
42  forAll(U, cellI)
43  {
44  L2norm_U[0] += sqr(U[cellI][0]);
45  L2norm_U[1] += sqr(U[cellI][1]);
46  L2norm_U[2] += sqr(U[cellI][2]);
47  }
48  L2norm_U[0] = std::sqrt(L2norm_U[0]);
49  L2norm_U[1] = std::sqrt(L2norm_U[1]);
50  L2norm_U[2] = std::sqrt(L2norm_U[2]);
51 
52  return L2norm_U;
53 }
54 // Scale off cell volumes
55 vector DAIrkPimpleFoam::L2norm(const List<vector>& U, const List<scalar>& V)
56 {
57  vector L2norm_U = vector::zero;
58 
59  forAll(U, cellI)
60  {
61  L2norm_U[0] += sqr(U[cellI][0] / V[cellI]);
62  L2norm_U[1] += sqr(U[cellI][1] / V[cellI]);
63  L2norm_U[2] += sqr(U[cellI][2] / V[cellI]);
64  }
65  L2norm_U[0] = std::sqrt(L2norm_U[0]);
66  L2norm_U[1] = std::sqrt(L2norm_U[1]);
67  L2norm_U[2] = std::sqrt(L2norm_U[2]);
68 
69  return L2norm_U;
70 }
71 
72 // L2 norm of a surfaceScalarField
73 scalar DAIrkPimpleFoam::L2norm(const surfaceScalarField& Phi)
74 {
75  scalar L2norm_Phi = 0.0;
76 
77  forAll(Phi.primitiveField(), cellI)
78  {
79  L2norm_Phi += sqr(Phi.primitiveField()[cellI]);
80  }
81  forAll(Phi.boundaryField(), patchI)
82  {
83  forAll(Phi.boundaryField()[patchI], faceI)
84  {
85  L2norm_Phi += sqr(Phi.boundaryField()[patchI][faceI]);
86  }
87  }
88  L2norm_Phi = std::sqrt(L2norm_Phi);
89 
90  return L2norm_Phi;
91 }
92 // Scale off surface areas
93 scalar DAIrkPimpleFoam::L2norm(const surfaceScalarField& Phi, const surfaceScalarField& SfArea)
94 {
95  scalar L2norm_Phi = 0.0;
96 
97  forAll(Phi.primitiveField(), cellI)
98  {
99  L2norm_Phi += sqr(Phi.primitiveField()[cellI] / SfArea.primitiveField()[cellI]);
100  }
101  forAll(Phi.boundaryField(), patchI)
102  {
103  forAll(Phi.boundaryField()[patchI], faceI)
104  {
105  L2norm_Phi += sqr(Phi.boundaryField()[patchI][faceI] / SfArea.boundaryField()[patchI][faceI]);
106  }
107  }
108  L2norm_Phi = std::sqrt(L2norm_Phi);
109 
110  return L2norm_Phi;
111 }
112 
113 vector DAIrkPimpleFoam::getMaxAbs(const List<vector>& U)
114 {
115  vector maxAbsVec = {0.0, 0.0, 0.0};
116  forAll(U, cellI)
117  {
118  if (maxAbsVec[0] < std::abs(U[cellI][0]))
119  {
120  maxAbsVec[0] = std::abs(U[cellI][0]);
121  }
122 
123  if (maxAbsVec[1] < std::abs(U[cellI][1]))
124  {
125  maxAbsVec[1] = std::abs(U[cellI][1]);
126  }
127 
128  if (maxAbsVec[2] < std::abs(U[cellI][2]))
129  {
130  maxAbsVec[2] = std::abs(U[cellI][2]);
131  }
132  }
133 
134  return maxAbsVec;
135 }
U
volVectorField & U
Definition: createRefsPimpleDyM.H:7
swap
swap(pseudoUEqn.upper(), pseudoUEqn.lower())
forAll
forAll(nuTilda1, cellI)
Definition: nuTilda1EqnIrkPimple.H:19