List of commits:
Subject Hash Author Date (UTC)
Updated Grimes kernel with collision frequency limits, Added mixture temperature equation 2294a5b9a45433d75edee92e86db104a3b94ab65 Anurag M 2018-08-16 21:36:02
Updated Grimes Kernel f608acb3b6da226f28f41de412f6af9f55dc1f42 Anurag M 2018-08-16 13:35:57
Minor changes to Grimes kernel, still not functional cc44c1e64b44719780ae6b0f3445055854f7cf99 Anurag M 2018-08-16 08:12:02
Updated code to be compatible with OpenFOAM6, integrated latest commits from OpenQBMM-dev a6cab1ad0759989cf0d8b3d5a3dafa7e25fdde82 Anurag M 2018-08-15 17:29:12
update coalescence buoyancyInducedSI, small speedup ce96614597feb467bc73ff4b3d8d3b622c2942f2 Cyrille Bonamy 2018-05-17 22:38:21
Updated test cases to work with OF5.0 a94165663b5086612bd57bed9915bb0b13c616ae Anurag.Misra 2018-04-27 11:57:40
Moved ifPorous back to time directory due to problems with case decomposition, changed write settings instead d7c92de5c17607f86b7fe614ac49964762826e84 Anurag M 2018-04-27 09:29:51
moved location of ifPorous to constant directory to avoid problems with restarting case 7765cfdc95e2733af395f004754f21d4310fb249 Anurag M 2018-04-27 08:17:50
Added lower bound for the efficiency term in buoyancyInduced kernel 37484d897975e1c3ecb20462a68bd0cd09925f9e Anurag M 2018-04-26 13:16:23
moved lookup of fields to constructor for efficiency, added spatially inhomogeneous buoyancyInduced kernel 7a444cf89c257318fabfee2618a45a96231eebcc Anurag M 2018-04-24 17:14:42
included constant coalescence kernel for testing... 21d0518c24475f61f326fbf4942345ac7bd8106b Anurag M 2018-04-23 17:56:36
modified case batchSettlerFine 9e6d0df52ab1b47d72c44f79cbf2b9f3fe9d051f Anurag M 2018-04-23 14:43:20
cleaned directory structure, fixed conflicting references to other libraries 97b6c823c552d5c690a78677cf1fbbfd9258388b Anurag M 2018-04-23 14:31:37
Implemented latest changes from OpenQBMM code 309b00b557e56d25057cf1a8cd5b30b80b32aada Anurag Misra 2018-04-05 07:17:32
updated batchSettlerFine case d475795ed3fe338ac7a8732e41ffc4e57d61c4ff Anurag Misra 2018-02-12 17:49:22
included latest QBMM updates, renamed diameterModel and alphaContactAngle entries to avoid conflict with OpenFOAM defaults d3d8fbc70cd9754d8552ae9adf930a5723e94d1c Anurag Misra 2018-02-12 17:24:17
updated test case 845e8a7326d6e5132cc6903390233b60f44a6616 Anurag Misra 2018-01-31 16:17:55
suppressed debug message, modified case for test run beecf9d98ab64fc5d5eb00e8f061a02370c9e814 Anurag Misra 2018-01-31 16:06:31
Added coalescence kernel to solver, switched on coalescence in case dictionary, cleaned up case batchSettlerFine 33502e69ba649befc30d1206f00f53ab3ae53b6d Anurag Misra 2018-01-31 14:44:39
Suppressed coalescence due to conflict, switched on dummy aggregation model in test case to test code stability e38a0560ffb1c6e68d7dc410f03a152689477078 Anurag Misra 2018-01-30 09:13:31
Commit 2294a5b9a45433d75edee92e86db104a3b94ab65 - Updated Grimes kernel with collision frequency limits, Added mixture temperature equation
Author: Anurag M
Author date (UTC): 2018-08-16 21:36
Committer name: Anurag M
Committer date (UTC): 2018-08-16 21:36
Parent(s): f608acb3b6da226f28f41de412f6af9f55dc1f42
Signing key:
Tree: e7bb7542b61573ff1a462c6e061bf132d06091f1
File Lines added Lines deleted
multiphaseEulerPbeFoam/TEqns.H 18 34
multiphaseEulerPbeFoam/createFields.H 14 0
multiphaseEulerPbeFoam/multiphaseDisperseSystem/multiphaseDisperseSystem.C 64 0
multiphaseEulerPbeFoam/multiphaseDisperseSystem/multiphaseDisperseSystem.H 12 0
multiphaseEulerPbeFoam/multiphaseEulerPbeFoam.C 1 1
multiphaseEulerPbeFoam/quadratureMethods/populationBalanceModels/populationBalanceSubModels/aggregationKernels/Grimes/Grimes.C 18 6
multiphaseEulerPbeFoam/quadratureMethods/populationBalanceModels/populationBalanceSubModels/aggregationKernels/Grimes/Grimes.H 4 1
File multiphaseEulerPbeFoam/TEqns.H changed (mode: 100644) (index 159946e..bdd3fa2)
1 1 { {
2 volScalarField kByCp1("kByCp1", alpha1*(k1/Cp1/rho1 + sqr(Ct)*nut2/Prt));
3 volScalarField kByCp2("kByCp2", alpha2*(k2/Cp2/rho2 + nut2/Prt));
2 volScalarField rhoCp = fluid.rho()*fluid.Cp();
4 3
5 fvScalarMatrix T1Eqn
6 (
7 fvm::ddt(alpha1, T1)
8 + fvm::div(alphaPhi1, T1)
9 - fvm::laplacian(kByCp1, T1)
10 ==
11 heatTransferCoeff*T2/Cp1/rho1
12 - fvm::Sp(heatTransferCoeff/Cp1/rho1, T1)
13 + alpha1*Dp1Dt/Cp1/rho1
14 + fvOptions(alpha1, rho1, T1)
15 );
4 surfaceScalarField rhoPhi("rhoPhi", phi*1.0/fvc::interpolate(1.0/rho));
5
6 surfaceScalarField kByCpf = fvc::interpolate(fluid.kappa()/rhoCp);
7
8 //- Turbulent Prandtl number term not included
9 //surfaceScalarField kByCpf = fvc::interpolate(fluid.kappa()/rhoCp + turbulence->nut()/fluid.Prt());
16 10
17 fvScalarMatrix T2Eqn
18 (
19 fvm::ddt(alpha2, T2)
20 + fvm::div(alphaPhi2, T2)
21 - fvm::laplacian(kByCp2, T2)
11 fvScalarMatrix TEqn
12 (
13 fvm::ddt(T)
14 + fvm::div(phi, T)
15 - fvm::laplacian(kByCpf, T)
22 16 == ==
23 heatTransferCoeff*T1/Cp2/rho2
24 - fvm::Sp(heatTransferCoeff/Cp2/rho2, T2)
25 + alpha2*Dp2Dt/Cp2/rho2
26 + fvOptions(alpha2, rho2, T2)
27 );
17 fvOptions(T)
18 // + sources(T)
19 );
28 20
29 T1Eqn.relax();
30 fvOptions.constrain(T1Eqn);
31 T1Eqn.solve();
32 fvOptions.correct(T1);
21 TEqn.relax();
33 22
34 T2Eqn.relax();
35 fvOptions.constrain(T1Eqn);
36 T2Eqn.solve();
37 fvOptions.correct(T1);
23 fvOptions.constrain(TEqn);
38 24
39 // Update compressibilities
40 psi1 = 1.0/(R1*T1);
41 psi2 = 1.0/(R2*T2);
25 TEqn.solve();
42 26 } }
File multiphaseEulerPbeFoam/createFields.H changed (mode: 100644) (index bca660e..48ff818)
... ... setRefCell
117 117 ); );
118 118 mesh.setFluxRequired(p_rgh.name()); mesh.setFluxRequired(p_rgh.name());
119 119
120 Info<< "Reading field T\n" <<endl;
121 volScalarField T
122 (
123 IOobject
124 (
125 "T",
126 runTime.timeName(),
127 mesh,
128 IOobject::MUST_READ,
129 IOobject::AUTO_WRITE
130 ),
131 mesh
132 );
133
120 134 #include "createMRFZones.H" #include "createMRFZones.H"
121 135
122 136 /* This part done through setFields /* This part done through setFields
File multiphaseEulerPbeFoam/multiphaseDisperseSystem/multiphaseDisperseSystem.C changed (mode: 100644) (index 1d3f4d7..9996d82)
... ... Foam::multiphaseDisperseSystem::rho(const label patchi) const
506 506 return trho; return trho;
507 507 } }
508 508
509 Foam::tmp<Foam::volScalarField> Foam::multiphaseDisperseSystem::Cp() const
510 {
511 PtrDictionary<phaseModel>::const_iterator iter = phases_.begin();
512
513 tmp<volScalarField> tCp = iter()*iter().Cp();
514 volScalarField& Cp = tCp.ref();
515
516 for (++iter; iter != phases_.end(); ++iter)
517 {
518 Cp += iter()*iter().Cp();
519 }
520
521 return tCp;
522 }
523
524
525 Foam::tmp<Foam::scalarField>
526 Foam::multiphaseDisperseSystem::Cp(const label patchi) const
527 {
528 PtrDictionary<phaseModel>::const_iterator iter = phases_.begin();
529
530 tmp<scalarField> tCp = iter().boundaryField()[patchi]*iter().Cp().value();
531 scalarField& Cp = tCp.ref();
532
533 for (++iter; iter != phases_.end(); ++iter)
534 {
535 Cp += iter().boundaryField()[patchi]*iter().Cp().value();
536 }
537
538 return tCp;
539 }
540
541 Foam::tmp<Foam::volScalarField> Foam::multiphaseDisperseSystem::kappa() const
542 {
543 PtrDictionary<phaseModel>::const_iterator iter = phases_.begin();
544
545 tmp<volScalarField> tkappa = iter()*iter().kappa();
546 volScalarField& kappa = tkappa.ref();
547
548 for (++iter; iter != phases_.end(); ++iter)
549 {
550 kappa += iter()*iter().kappa();
551 }
552
553 return tkappa;
554 }
555
556
557 Foam::tmp<Foam::scalarField>
558 Foam::multiphaseDisperseSystem::kappa(const label patchi) const
559 {
560 PtrDictionary<phaseModel>::const_iterator iter = phases_.begin();
561
562 tmp<scalarField> tkappa = iter().boundaryField()[patchi]*iter().kappa().value();
563 scalarField& kappa = tkappa.ref();
564
565 for (++iter; iter != phases_.end(); ++iter)
566 {
567 kappa += iter().boundaryField()[patchi]*iter().kappa().value();
568 }
569
570 return tkappa;
571 }
572
509 573
510 574 Foam::tmp<Foam::volScalarField> Foam::multiphaseDisperseSystem::nu() const Foam::tmp<Foam::volScalarField> Foam::multiphaseDisperseSystem::nu() const
511 575 { {
File multiphaseEulerPbeFoam/multiphaseDisperseSystem/multiphaseDisperseSystem.H changed (mode: 100644) (index 033e4f6..e7498d9)
... ... public:
260 260 //- Return the mixture density for patch //- Return the mixture density for patch
261 261 tmp<scalarField> rho(const label patchi) const; tmp<scalarField> rho(const label patchi) const;
262 262
263 //- Return the mixture specific heat capacity
264 tmp<volScalarField> Cp() const;
265
266 //- Return the mixture specific heat capacity for patch
267 tmp<scalarField> Cp(const label patchi) const;
268
269 //- Return the mixture thermal conductivity
270 tmp<volScalarField> kappa() const;
271
272 //- Return the mixture thermal conductivity for patch
273 tmp<scalarField> kappa(const label patchi) const;
274
263 275 //- Return the mixture laminar viscosity //- Return the mixture laminar viscosity
264 276 tmp<volScalarField> nu() const; tmp<volScalarField> nu() const;
265 277
File multiphaseEulerPbeFoam/multiphaseEulerPbeFoam.C changed (mode: 100644) (index 50a82e7..39c551e)
... ... int main(int argc, char *argv[])
95 95 rho = fluid.rho(); rho = fluid.rho();
96 96 #include "zonePhaseVolumes.H" #include "zonePhaseVolumes.H"
97 97
98 //#include "TEqns.H"
98 #include "TEqns.H"
99 99 #include "UEqns.H" #include "UEqns.H"
100 100
101 101 // Solve populationBalance move in the fluid solve process // Solve populationBalance move in the fluid solve process
File multiphaseEulerPbeFoam/quadratureMethods/populationBalanceModels/populationBalanceSubModels/aggregationKernels/Grimes/Grimes.C changed (mode: 100644) (index e94fee1..81fec4c)
... ... Foam::populationBalanceSubModels::aggregationKernels::Grimes
68 68 B_(dict.lookupOrDefault<scalar>("B", 1.65e-31)), B_(dict.lookupOrDefault<scalar>("B", 1.65e-31)),
69 69 //T_(mesh_.lookupObject<volScalarField>(IOobject::groupName("T", thisPhaseName_))), //T_(mesh_.lookupObject<volScalarField>(IOobject::groupName("T", thisPhaseName_))),
70 70 T_(356.15), T_(356.15),
71 minCollisionFreq_(dict.lookupOrDefault<scalar>("minCollisionFrequency", 1.0e-20)),
71 72 rhoC_(readScalar(contPhaseDict_.lookup("rho"))), rhoC_(readScalar(contPhaseDict_.lookup("rho"))),
72 73 rhoD_(readScalar(thisPhaseDict_.lookup("rho"))), rhoD_(readScalar(thisPhaseDict_.lookup("rho"))),
73 74 g_(9.81), g_(9.81),
 
... ... Foam::populationBalanceSubModels::aggregationKernels::Grimes::Ka
114 115 scalar Pe_ = pow(3.0/(4.0*Foam::constant::mathematical::pi),1.0/3.0) scalar Pe_ = pow(3.0/(4.0*Foam::constant::mathematical::pi),1.0/3.0)
115 116 *(std::fabs(rhoD_-rhoC_)*g_)/(kB_*T_) *(std::fabs(rhoD_-rhoC_)*g_)/(kB_*T_)
116 117 *pow(1 - alphaD_[celli],Ksv_) *pow(1 - alphaD_[celli],Ksv_)
117 *vProduct_*vDiff_;
118 *vProduct_*vDiff_;
118 119
119 scalar t_bc = 1.046
120 scalar omega_(
121 max(
122 Kcr_*(kB_*T_/(6.0*nuC_*rhoC_))
123 *pow(vSum_,2.0)/vProduct_
124 *(1.0 + Pe_ + (4.496*pow(Pe_,1.0/3.0)))
125 ,minCollisionFreq_
126 )
127 );
128
129 // Info << " omega_ " << omega_ << endl;
130
131 scalar t_bc(
132 1.046
120 133 *pow(3.0/(4.0*Foam::constant::mathematical::pi),3.0/2.0) *pow(3.0/(4.0*Foam::constant::mathematical::pi),3.0/2.0)
121 134 *(nuC_*rhoC_*std::fabs(rhoD_-rhoC_)*g_)/(pow(gamma_,3.0/2.0)*pow(B_,1.0/2.0)) *(nuC_*rhoC_*std::fabs(rhoD_-rhoC_)*g_)/(pow(gamma_,3.0/2.0)*pow(B_,1.0/2.0))
122 *pow(vProduct_/vSum_,9.0/2.0);
135 *pow(vProduct_/vSum_,9.0/2.0)
136 );
123 137
124 138 //if (std::fabs(Urelative_ - 0.00025) > SMALL) //if (std::fabs(Urelative_ - 0.00025) > SMALL)
125 139 // Urelative_ = 0.00025; // Urelative_ = 0.00025;
126 140
127 141 return Ca_.value() return Ca_.value()
128 *Kcr_*(kB_*T_/(6.0*nuC_*rhoC_))
129 *pow(vSum_,2.0)/vProduct_
130 *(1.0 + Pe_ + (4.496*pow(Pe_,1.0/3.0)))
142 *omega_
131 143 *exp(-t_bc/Kce_); *exp(-t_bc/Kce_);
132 144 } }
133 145
File multiphaseEulerPbeFoam/quadratureMethods/populationBalanceModels/populationBalanceSubModels/aggregationKernels/Grimes/Grimes.H changed (mode: 100644) (index d2e68c1..04b7e82)
... ... private:
102 102
103 103 //- Temperature of continuous phase //- Temperature of continuous phase
104 104 //volScalarField T_; //volScalarField T_;
105 scalar T_;
105 scalar T_;
106
107 //- Minimum collision frequency
108 scalar minCollisionFreq_;
106 109
107 110 //- Density of the continuous phase //- Density of the continuous phase
108 111 scalar rhoC_; scalar rhoC_;
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/velagala/MultiPhaseQBMM

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/velagala/MultiPhaseQBMM

Clone this repository using git:
git clone git://git.rocketgit.com/user/velagala/MultiPhaseQBMM

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main