diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.cpp index f3548dbffe823eb5b275ba6ca32cca7bb42a73af..5d7500c690a609ff68ed9962d15a33c40f3fa8fe 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.cpp @@ -585,122 +585,6 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) } } - - //this->swapDistributions(); - //for (int x3 = minX3 - ghostLayerWidth + 1; x3 < maxX3 + ghostLayerWidth - 1; x3++) { - // for (int x2 = minX2 - ghostLayerWidth + 1; x2 < maxX2 + ghostLayerWidth - 1; x2++) { - // for (int x1 = minX1 - ghostLayerWidth + 1; x1 < maxX1 + ghostLayerWidth - 1; x1++) { - // if (!bcArray->isSolid(x1, x2, x3) && !bcArray->isUndefined(x1, x2, x3)) { - // findNeighbors(phaseFieldOld, x1, x2, x3); - // findNeighbors2(phaseField, x1, x2, x3); - // // if (((phi[DIR_000] <= phiLim) /* && (phi2[DIR_000] > phiLim)*/)) - // //{ - // // real sumVx = 0; - // // real sumVy = 0; - // // real sumVz = 0; - // // real sumWeight = 1.e-100; - // // for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { - // // if ((phi[fdir] > phiLim)) { - // // sumVx += WEIGTH[fdir] * (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + - // // D3Q27System::DX2[fdir], - // // x3 + D3Q27System::DX3[fdir]); - // // sumVy += WEIGTH[fdir] * (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + - // // D3Q27System::DX2[fdir], - // // x3 + D3Q27System::DX3[fdir]); - // // sumVz += WEIGTH[fdir] * (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + - // // D3Q27System::DX2[fdir], - // // x3 + D3Q27System::DX3[fdir]); - // // sumWeight += WEIGTH[fdir]; - // // } - // // } - // // if (sumWeight > 1.e-10) { - // // (*vxNode)(x1, x2, x3) = sumVx/sumWeight; - // // (*vyNode)(x1, x2, x3) = sumVy / sumWeight; - // // (*vzNode)(x1, x2, x3) = sumVz / sumWeight; - // // } - - // //} - // { - // int x1p = x1 + 1; - // int x2p = x2 + 1; - // int x3p = x3 + 1; - - // real mfcbb = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); - // real mfbcb = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); - // real mfbbc = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); - // real mfccb = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); - // real mfacb = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); - // real mfcbc = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); - // real mfabc = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); - // real mfbcc = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); - // real mfbac = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); - // real mfccc = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); - // real mfacc = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); - // real mfcac = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); - // real mfaac = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); - // real mfabb = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); - // real mfbab = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); - // real mfbba = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); - // real mfaab = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); - // real mfcab = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); - // real mfaba = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); - // real mfcba = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); - // real mfbaa = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); - // real mfbca = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); - // real mfaaa = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); - // real mfcaa = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); - // real mfaca = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); - // real mfcca = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); - // real mfbbb = (*this->zeroDistributionsH1)(x1, x2, x3); - - // // findNeighbors(phaseField, x1, x2, x3); - - // real dX1_phi = gradX1_phi2(); - // real dX2_phi = gradX2_phi2(); - // real dX3_phi = gradX3_phi2(); - - // real denom = - // sqrt(dX1_phi * dX1_phi + dX2_phi * dX2_phi + dX3_phi * dX3_phi) + 1.0e-20; //+ 1e-9+1e-3; - // real normX1 = dX1_phi / denom; - // real normX2 = dX2_phi / denom; - // real normX3 = dX3_phi / denom; - // real velocityTimesNormal=normX1*(*vxNode)(x1, x2, x3)+normX2*(*vyNode)(x1, x2, x3)+normX3*(*vzNode)(x1, x2, x3); - // if (velocityTimesNormal < 0) { - - // real cx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) + - // (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) + - // (mfcbb - mfabb)); - // real cy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) + - // (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) + - // (mfbcb - mfbab)); - // real cz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) + - // (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) + - // (mfbbc - mfbba)); - - // real vx = (c6o1 * cx - - // (normX1 * oneOverInterfaceScale * (phi[DIR_000] - phiH) * (phi[DIR_000] - phiL)) / - // (phiH - phiL)) / - // (c6o1 * phi[DIR_000]); - // real vy = (c6o1 * cy - - // (normX2 * oneOverInterfaceScale * (phi[DIR_000] - phiH) * (phi[DIR_000] - phiL)) / - // (phiH - phiL)) / - // (c6o1 * phi[DIR_000]); - // real vz = (c6o1 * cz - - // (normX3 * oneOverInterfaceScale * (phi[DIR_000] - phiH) * (phi[DIR_000] - phiL)) / - // (phiH - phiL)) / - // (c6o1 * phi[DIR_000]); - - // (*vxNode)(x1, x2, x3) = (vx + (*vxNode)(x1, x2, x3))*c1o2; - // (*vyNode)(x1, x2, x3) = (vy + (*vyNode)(x1, x2, x3))*c1o2; - // (*vzNode)(x1, x2, x3) = (vz + (*vzNode)(x1, x2, x3))*c1o2; - // } - // } - // } - // } - // } - // } - // this->swapDistributions(); - SPtr<DistributionArray3D> distribution = this->getDataSet()->getFdistributions(); real ff[27]; for (int x3 = minX3 - 1; x3 < maxX3 + 1; x3++) { @@ -1027,8 +911,38 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // eqBCN = eqBC; // distribution->setDistributionForDirection(LaplacePressure* WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio*0) - fL - 0*(feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, // x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); - distribution->setDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio) - fL, x1, x2, x3, fdir); - + real vLink = -(D3Q27System::DX1[fdir] * (*vxNode)(x1 + D3Q27System::DX1[fdir], + x2 + D3Q27System::DX2[fdir], + x3 + D3Q27System::DX3[fdir]) + + D3Q27System::DX2[fdir] * (*vyNode)(x1 + D3Q27System::DX1[fdir], + x2 + D3Q27System::DX2[fdir], + x3 + D3Q27System::DX3[fdir]) + + D3Q27System::DX3[fdir] * (*vzNode)(x1 + D3Q27System::DX1[fdir], + x2 + D3Q27System::DX2[fdir], + x3 + D3Q27System::DX3[fdir])); + distribution->setDistributionForDirection( + laplacePressureBC * WEIGTH[fdir] + (fBC + fG) / densityRatio + + c1o2* ( (eqBCN + eqGN) * (c1o1 -2* c1o1 / densityRatio) - fL) + + //alternative to antiBB is BB + c1o2*(fL- WEIGTH[fdir]*(c6o1*vLink + +c2o1*(*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])))+ + //(-fL*vLink/(c1o1-vLink))+ + //!BB + + 0*(fL - feqOLD)+ + 0*(c2o1 - collFactorL) * (fL - feqOLD) / (c1o1 - collFactorL), + x1, x2, x3, fdir); + /* std::cout + << "eqBCN=" << eqBCN << " eqGN=" << eqGN + << (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], + x3 + D3Q27System::DX3[fdir]) + << " " + << + (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], + x3 + D3Q27System::DX3[fdir]) + << " "<<(*vzNode)(x1 + D3Q27System::DX1[fdir], + x2 + D3Q27System::DX2[fdir], + x3 + D3Q27System::DX3[fdir])<< "\n";*/ @@ -1238,8 +1152,27 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //real fBC = feqNew + (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) ; - - distribution->setDistributionForDirection(laplacePressureBC* WEIGTH[fdir] + (fBC + fG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio) - fL , x1, x2, x3, fdir); + real vLink = -(D3Q27System::DX1[fdir] * (*vxNode)(x1 + D3Q27System::DX1[fdir], + x2 + D3Q27System::DX2[fdir], + x3 + D3Q27System::DX3[fdir]) + + D3Q27System::DX2[fdir] * (*vyNode)(x1 + D3Q27System::DX1[fdir], + x2 + D3Q27System::DX2[fdir], + x3 + D3Q27System::DX3[fdir]) + + D3Q27System::DX3[fdir] * (*vzNode)(x1 + D3Q27System::DX1[fdir], + x2 + D3Q27System::DX2[fdir], + x3 + D3Q27System::DX3[fdir])); + distribution->setDistributionForDirection( + laplacePressureBC * WEIGTH[fdir] + (fBC + fG) / densityRatio + + c1o2* ( (eqBCN + eqGN) * (c1o1 -2* c1o1 / densityRatio) - fL) + + //alternative to antiBB is BB + c1o2*(fL- WEIGTH[fdir]*(c6o1*vLink + +c2o1*(*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])))+ + //(-fL*vLink/(c1o1-vLink))+ + //!BB + + 0*(fL - feqOLD)+ + 0*(c2o1 - collFactorL) * (fL - feqOLD) / (c1o1 - collFactorL), + x1, x2, x3, fdir); // real number = 666; @@ -1355,12 +1288,12 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // // D3Q27System::getIncompFeqForDirection(fdir, (*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), // // (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // // 16.07.23 attempt to make it at least momentum conserving - // real fG = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); - // real fBCPseudo = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1 , x2 , x3 ), + // fG = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + // fBCPseudo = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1 , x2 , x3 ), // (*vxNode)(x1 , x2 , x3 ), (*vyNode)(x1 , x2 , x3 ), // (*vzNode)(x1 , x2 , x3 )) + fG - D3Q27System::getIncompFeqForDirection(fdir, (*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), // (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); - ////} + //} //real eqBCN = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), // (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); @@ -4236,12 +4169,13 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) real Dxy = -c3o1 * collFactorM * mfbba; real Dxz = -c3o1 * collFactorM * mfbab; real Dyz = -c3o1 * collFactorM * mfabb; - // if (phi[DIR_000] > phiLim) + //if ((phi[DIR_000] > phiLim) + //if (((phi[DIR_000] < 0.9) || (phi[DIR_000]>0.1)) if (((phi[DIR_000] > phiLim) && ((phi[DIR_P00] <= phiLim) || (phi[DIR_M00] <= phiLim) || (phi[DIR_00P] <= phiLim) || (phi[DIR_00M] <= phiLim) || (phi[DIR_0M0] <= phiLim) || (phi[DIR_0P0] <= phiLim) || (phi[DIR_PP0] <= phiLim) || (phi[DIR_PM0] <= phiLim) || (phi[DIR_P0P] <= phiLim) || (phi[DIR_P0M] <= phiLim) || (phi[DIR_MP0] <= phiLim) || (phi[DIR_MM0] <= phiLim) || (phi[DIR_M0P] <= phiLim) || (phi[DIR_M0M] <= phiLim) || (phi[DIR_0PM] <= phiLim) || (phi[DIR_0MM] <= phiLim) || (phi[DIR_0PP] <= phiLim) || (phi[DIR_0MP] <= phiLim) || (phi[DIR_PPP] <= phiLim) || (phi[DIR_PMP] <= phiLim) || (phi[DIR_MPP] <= phiLim) || (phi[DIR_MMP] <= phiLim) || (phi[DIR_PPM] <= phiLim) || (phi[DIR_PMM] <= phiLim) || (phi[DIR_MPM] <= phiLim) || (phi[DIR_MMM] <= phiLim))) - /* + || ((phi[DIR_000] <= phiLim) && ((phi[DIR_P00] > phiLim) || (phi[DIR_M00] > phiLim) || (phi[DIR_00P] > phiLim) || (phi[DIR_00M] > phiLim) || (phi[DIR_0M0] > phiLim) || (phi[DIR_0P0] > phiLim) || (phi[DIR_PP0] > phiLim) || (phi[DIR_PM0] > phiLim) || (phi[DIR_P0P] > phiLim) || (phi[DIR_P0M] > phiLim) || (phi[DIR_MP0] > phiLim) || (phi[DIR_MM0] > phiLim) || (phi[DIR_M0P] > phiLim) || (phi[DIR_M0M] > phiLim) || (phi[DIR_0PM] > phiLim) || (phi[DIR_0MM] > phiLim) || (phi[DIR_0PP] > phiLim) || (phi[DIR_0MP] > phiLim) || (phi[DIR_PPP] > phiLim) || (phi[DIR_PMP] > phiLim) || (phi[DIR_MPP] > phiLim) || @@ -4253,7 +4187,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) real eddyR = -(Dxy * Dxy + Dxz * Dxz + c1o3 * dxux * dxux) * (dxux) - (Dxy * Dxy + Dyz * Dyz + c1o3 * dyuy * dyuy) * dyuy - (Dxz * Dxz + Dyz * Dyz + c1o3 * dzuz * dzuz) * dzuz - c2o1 * Dxy * Dxz * Dyz; real eddyQ = Dxy * Dxz + Dxy * Dyz + Dxz * Dyz + c1o2 * (dxux * dxux + dyuy * dyuy + dzuz * dzuz); //real nuEddy = 5.0e5 * (eddyR / (eddyQ + 1e-100)) * (dX1_phi * dX1_phi + dX2_phi * dX2_phi + dX3_phi * dX3_phi); - real nuEddy = 5.0e3 * (eddyR / (eddyQ + 1e-100));//was 5.0e3 + real nuEddy = 5.0e3 * (eddyR / (eddyQ + 1e-100)); nuEddy = (nuEddy < c1o1 / collFactorM) ? c1o1 / collFactorM : nuEddy; collFactorM = c1o1 / nuEddy; // collFactorM = c1o1 / (c1o1 / collFactorM +1.e2*nuEddy*(dX1_phi*dX1_phi+dX2_phi*dX2_phi+dX3_phi*dX3_phi)); @@ -4992,9 +4926,11 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) real MomXDenom = sqrt(MomX1 * MomX1 + MomX2 * MomX2 + MomX3 * MomX3) + 1.0e-100; real scaleNorm = (normX1 * MomX1 + normX2 * MomX2 + normX3 * MomX3) / MomXDenom; - scaleNorm = scaleNorm * scaleNorm; //(c1o2 + c1o2 * scaleNorm) * scaleNorm; // scaleNorm * (c1o1+(c2o1*concentration - c1o1) * (c2o1*concentration - c1o1) * (scaleNorm-c1o1)); // *scaleNorm* scaleNorm; - - if (phi[DIR_000] > phiLim) + //scaleNorm = scaleNorm * scaleNorm; //(c1o2 + c1o2 * scaleNorm) * scaleNorm; // scaleNorm * (c1o1+(c2o1*concentration - c1o1) * (c2o1*concentration - c1o1) * (scaleNorm-c1o1)); // *scaleNorm* scaleNorm; + //scaleNorm = scaleNorm * scaleNorm; + //scaleNorm = scaleNorm * scaleNorm; + //scaleNorm = scaleNorm * scaleNorm; + if (true)//(phi[DIR_000] > phiLim) //(true) // ((phi[DIR_000] > phiLim)||(normX1*vvx+normX2*vvy+normX3*vvz<0)) { normX1 = (normX1 * (c1o1 - mixNormal) + mixNormal * MomX1 / MomXDenom) * scaleNorm; @@ -5021,8 +4957,13 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) normX2 = (normX2 * (c1o1 - mixNormal) + mixNormal * MomX2 / MomXDenom) * scaleNorm; normX3 = (normX3 * (c1o1 - mixNormal) + mixNormal * MomX3 / MomXDenom) * scaleNorm; real scaleAdvectionContribution = (c1o1 - (concentration - phiL) / (phiH - phiL) * c2o1) ; - scaleAdvectionContribution = scaleAdvectionContribution * scaleAdvectionContribution * scaleAdvectionContribution * scaleAdvectionContribution * scaleAdvectionContribution; - cx = scaleAdvectionContribution * (cx * (c1o1 - omegaD) + omegaD * vvx * concentration + normX1 * (c1o1 - 0.5 * omegaD) * (phiH - concentration) * (concentration - phiL) * c1o3 * oneOverInterfaceScale / (phiH - phiL)) + // scaleAdvectionContribution = scaleAdvectionContribution * scaleAdvectionContribution * scaleAdvectionContribution * scaleAdvectionContribution * scaleAdvectionContribution; + //scaleAdvectionContribution = scaleAdvectionContribution * scaleAdvectionContribution * + // scaleAdvectionContribution * scaleAdvectionContribution * + // scaleAdvectionContribution; + // scaleAdvectionContribution = 0; + // scaleAdvectionContribution = (concentration > 0.0001) ? 0 : 1; + cx = scaleAdvectionContribution * (cx * (c1o1 - omegaD) + omegaD * vvx * concentration + normX1 * (c1o1 - 0.5 * omegaD) * (phiH - concentration) * (concentration - phiL) * c1o3 * oneOverInterfaceScale / (phiH - phiL)) +(c1o1-scaleAdvectionContribution)*(cx - normX1FD* (oneOverInterfaceScale * (concentration - phiH) * (concentration - phiL)) / ((phiH - phiL)) * c1o3); cy = scaleAdvectionContribution * (cy * (c1o1 - omegaD) + omegaD * vvy * concentration + normX2 * (c1o1 - 0.5 * omegaD) * (phiH - concentration) * (concentration - phiL) * c1o3 * oneOverInterfaceScale / (phiH - phiL)) +(c1o1 - scaleAdvectionContribution) *