Removed unneeded lib dependency from mdInitialise
[foam-extend-3.2.git] / applications / solvers / surfaceTracking / bubbleInterTrackFoam / updateMovingReferenceFrame.H
blobc081e4931d3b155cde894146c5a7aac5f57d61cf
2     vector Cb0 = Cb;
4     if (interface.twoFluids())
5     {
6         Cb = gSum((1.0 - fluidIndicator.internalField())*
7             mesh.C().internalField()*mesh.V())/
8             gSum((1.0 - fluidIndicator.internalField())*mesh.V());
9     }
10     else
11     {
12         scalar Va = gSum(mesh.V().field());
13         vector Ra = gSum(mesh.C().internalField()*mesh.V().field())/Va;
15         scalar Vb =
16           - gSum
17             (
18                 mesh.Cf().boundaryField()[interface.aPatchID()]
19               & mesh.Sf().boundaryField()[interface.aPatchID()]
20             )/3;
22         scalar V = Va + Vb;
24         Cb = (V*Cbf - Va*Ra)/Vb;
26         if (mesh.nGeometricD() != 3)
27         {
28             FatalErrorIn(args.executable())
29                 << "One-fluid bubble centroid calc "
30                     << "is not implemented for 2d mesh"
31                     << abort(FatalError);
32         }
33     }
35     Info << "\nCurrent bubble centre: " << Cb << endl;
37     dimensionedVector dUF
38     (
39         "dUF",
40         dimVelocity,
41         lambdaFf*(Cb-Cbf)/runTime.deltaT0().value()
42       + lambdaF0*(Cb-Cb0)/runTime.deltaT0().value()
43     );
45     XF += (UF + 0.5*dUF)*runTime.deltaT0();
46     Info << "Current bubble position: " << XF << endl;
48 //     dimensionedVector UF00 ("UF00", dimVelocity, UF0.value());
49 //     UF0 = UF;
50     UF += dUF;
51     Info << "Current bubble velocity: " << UF << endl;
53     aF = dUF/runTime.deltaT0();
54 //     aF = (3.0*UF - 4.0*UF0 + UF00)/(2.0*runTime.deltaT0());
55     Info << "Current bubble acceleration: " << aF << endl;
57     if
58     (
59         U.boundaryField()[spacePatchID].type()
60      == inletOutletFvPatchVectorField::typeName
61     )
62     {
63         inletOutletFvPatchVectorField& spaceU =
64             refCast<inletOutletFvPatchVectorField>
65             (
66                 U.boundaryField()[spacePatchID]
67             );
69         spaceU.refValue() = -UF.value();
70     }
71     else
72     {
73         FatalErrorIn(args.executable())
74             << "Velocity boundary condition at space patch is not "
75                 << inletOutletFvPatchVectorField::typeName
76                 << abort(FatalError);
77     }
79     // Update movingReferenceFrame dictionary
80     if (movingReferenceFrame.found("Cb"))
81     {
82         movingReferenceFrame.remove("Cb");
83     }
84     movingReferenceFrame.add("Cb", Cb);
86     if (movingReferenceFrame.found("Cbf"))
87     {
88         movingReferenceFrame.remove("Cbf");
89     }
90     movingReferenceFrame.add("Cbf", Cbf);
92     if (movingReferenceFrame.found("XF"))
93     {
94         movingReferenceFrame.remove("XF");
95     }
96     movingReferenceFrame.add("XF", XF);
98     if (movingReferenceFrame.found("UF"))
99     {
100         movingReferenceFrame.remove("UF");
101     }
102     movingReferenceFrame.add("UF", UF);
104     if (movingReferenceFrame.found("aF"))
105     {
106         movingReferenceFrame.remove("aF");
107     }
108     aF.name() = "aF";
109     movingReferenceFrame.add("aF", aF);