CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Community Contributions

[isoAdvector] Is it possible to add isoAdvector capabilities to interphaseChangeFoam?

Register Blogs Community New Posts Updated Threads Search

Like Tree2Likes
  • 2 Post By srikrishnan_balasubramani

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   July 12, 2017, 05:33
Default Is it possible to add isoAdvector capabilities to interphaseChangeFoam?
  #1
New Member
 
万超辉
Join Date: Oct 2016
Posts: 3
Rep Power: 10
chaohui is on a distinguished road
Quote:
Originally Posted by roenby View Post
Dear foam’ers

Today we release the first version of our new geometric Volume-of-Fluid (VOF) algorithm for general meshes, isoAdvector:

https://github.com/isoAdvector/isoAdvector

The performance of and conceptueal ideas behind the method are described in the paper, “A computational method for sharp interface advection” just published in Royal Society Open Science:

http://dx.doi.org/10.1098/rsos.160405

We hope the large part of the CFD community working with interfacial flows will benefit from the improved accuracy and interface sharpness obtained with isoAdvector.

The isoAdvector code and concept are still under development. Therefore, if you test the code, we would appreciate if you could give us a few lines of feedback with description of your case setup and the effect isoAdvector has on your runs. The best way to give feedback is to write a post on cfd-online.com/Forums/openfoam/ under the relevant category and tag the post 'isoadvector'.

Kind regards,
Johan Roenby
can this method couple with interphasechangfoam or does interisofoam can add cavitation model ? if yes ,dose it may lead to better result about cavitation compared with interphasechangfoam?


[Moderator note: Moved from thread IsoAdvector release ]

Last edited by wyldckat; August 27, 2017 at 09:40. Reason: see "Moderator note:"
chaohui is offline   Reply With Quote

Old   July 13, 2017, 05:32
Default
  #2
Member
 
Johan Roenby
Join Date: May 2011
Location: Denmark
Posts: 93
Rep Power: 21
roenby will become famous soon enough
I don't know enough about how interphasechangfoam works to answer these questions. Can someone else answer these questions?
roenby is offline   Reply With Quote

Old   July 13, 2017, 06:35
Default
  #3
Senior Member
 
Andrea Ferrari
Join Date: Dec 2010
Posts: 319
Rep Power: 16
Andrea_85 is on a distinguished road
Cavitation requires source terms in alphaEqn and as far as i understood isoAdvector does not support that for the moment. So i think the answer is no.
Andrea_85 is offline   Reply With Quote

Old   July 13, 2017, 09:55
Default
  #4
Member
 
Rodrigo
Join Date: Mar 2010
Posts: 98
Rep Power: 16
guin is on a distinguished road
Quote:
Originally Posted by roenby View Post
I don't know enough about how interphasechangfoam works to answer these questions. Can someone else answer these questions?
You basically need to introduce source terms in the calculation of the alpha transport equation. The trick is to get them into isoAdvection::advect(), where the equation is been solved. I played a little bit adding comments before and after the actual implemented code in order to show where would this come from and which could be the final alternative.

Code:
void Foam::isoAdvection::advect()
{
    isoDebug(Info << "Enter advect" << endl;)

    //Interpolating alpha1 cell centre values to mesh points (vertices)
    ap_ = vpi_.interpolate(alpha1_.oldTime());

    //Initialising dVf with upwind values, i.e. phi[fLabel]*alpha1[upwindCell]*dt    
    dVf_ = upwind<scalar>(mesh_, phi_).flux(alpha1_.oldTime())*
        mesh_.time().deltaT();

    //Do the isoAdvection on surface cells
    timeIntegratedFlux();

    //Syncronize processor patches
    syncProcPatches(dVf_, phi_);

    //Adjust dVf for unbounded cells
    limitFluxes();
    
    // Advect the free surface (here we go...)
    //--------------------------------------------------------------------------
  //ddt(alpha1_) + div(alphaPhi) = Su + Sp*alpha1_; // (MAIN IDEA)
  //ddt(alpha1_) + fvc::surfaceIntegrate(alphaPhi) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate(upwind<scalar>(mesh_, phi_).flux(alpha1_.oldTime())) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate([upwind<scalar>(mesh_, phi_).flux(alpha1_.oldTime())*mesh_.time().deltaT()]/mesh_.time().deltaT()) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate([dVf]/mesh_.time().deltaT()) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate(dVf)/mesh_.time().deltaT() = Su + Sp*alpha1_;
  //(alpha1_ - alpha1_.oldTime())/mesh_.time().deltaT() + fvc::surfaceIntegrate(dVf)/mesh_.time().deltaT() = Su + Sp*alpha1_;
  //alpha1_ - alpha1_.oldTime() + fvc::surfaceIntegrate(dVf) = mesh_.time().deltaT()*(Su+Sp*alpha1_);

    alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_); // (CURRENT STATE) ...+ mesh_.time().deltaT()*(Su+Sp*alpha1_) 
    
  //alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*(Su+Sp*alpha1_);
  //alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su + mesh_.time().deltaT()*Sp*alpha1_;
  //alpha1_ - mesh_.time().deltaT()*Sp*alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su;
  //alpha1_ * (1.0 - mesh_.time().deltaT()*Sp) = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su;
  //alpha1_ = ( alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su ) / (1.0 - mesh_.time().deltaT()*Sp); // (SUGGESTION)
  //----------------------------------------------------------------------------

    alpha1_.correctBoundaryConditions();
}
Sp and Su might be taken from interPhaseChangeFoam, etc., as well as the relevant ones in pEqn.H.

As for the advantage/drawbacks... all the ones related with sharper interfaces, I guess. But anyone should try this out first and report about the experience.
guin is offline   Reply With Quote

Old   October 22, 2017, 14:19
Default adding isoadvector to intercondensatingevaporatingfoam
  #5
Senior Member
 
sandy
Join Date: Feb 2016
Location: .
Posts: 117
Rep Power: 10
saddy is on a distinguished road
Hello guys
i know it's a little bit old thread, but nevertheless,
i want to ask is it possible to add isoadvector to intercondensatingevaporatingFoam just like one can modify interfoam to isoflow.
i am using intercondensatingevaporatingfoam from -v1612+ and v1706+ both
can you guys comment....plz help
Quote:
Originally Posted by guin View Post
You basically need to introduce source terms in the calculation of the alpha transport equation. The trick is to get them into isoAdvection::advect(), where the equation is been solved. I played a little bit adding comments before and after the actual implemented code in order to show where would this come from and which could be the final alternative.

Code:
void Foam::isoAdvection::advect()
{
    isoDebug(Info << "Enter advect" << endl;)

    //Interpolating alpha1 cell centre values to mesh points (vertices)
    ap_ = vpi_.interpolate(alpha1_.oldTime());

    //Initialising dVf with upwind values, i.e. phi[fLabel]*alpha1[upwindCell]*dt    
    dVf_ = upwind<scalar>(mesh_, phi_).flux(alpha1_.oldTime())*
        mesh_.time().deltaT();

    //Do the isoAdvection on surface cells
    timeIntegratedFlux();

    //Syncronize processor patches
    syncProcPatches(dVf_, phi_);

    //Adjust dVf for unbounded cells
    limitFluxes();
    
    // Advect the free surface (here we go...)
    //--------------------------------------------------------------------------
  //ddt(alpha1_) + div(alphaPhi) = Su + Sp*alpha1_; // (MAIN IDEA)
  //ddt(alpha1_) + fvc::surfaceIntegrate(alphaPhi) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate(upwind<scalar>(mesh_, phi_).flux(alpha1_.oldTime())) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate([upwind<scalar>(mesh_, phi_).flux(alpha1_.oldTime())*mesh_.time().deltaT()]/mesh_.time().deltaT()) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate([dVf]/mesh_.time().deltaT()) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate(dVf)/mesh_.time().deltaT() = Su + Sp*alpha1_;
  //(alpha1_ - alpha1_.oldTime())/mesh_.time().deltaT() + fvc::surfaceIntegrate(dVf)/mesh_.time().deltaT() = Su + Sp*alpha1_;
  //alpha1_ - alpha1_.oldTime() + fvc::surfaceIntegrate(dVf) = mesh_.time().deltaT()*(Su+Sp*alpha1_);

    alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_); // (CURRENT STATE) ...+ mesh_.time().deltaT()*(Su+Sp*alpha1_) 
    
  //alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*(Su+Sp*alpha1_);
  //alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su + mesh_.time().deltaT()*Sp*alpha1_;
  //alpha1_ - mesh_.time().deltaT()*Sp*alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su;
  //alpha1_ * (1.0 - mesh_.time().deltaT()*Sp) = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su;
  //alpha1_ = ( alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su ) / (1.0 - mesh_.time().deltaT()*Sp); // (SUGGESTION)
  //----------------------------------------------------------------------------

    alpha1_.correctBoundaryConditions();
}
Sp and Su might be taken from interPhaseChangeFoam, etc., as well as the relevant ones in pEqn.H.

As for the advantage/drawbacks... all the ones related with sharper interfaces, I guess. But anyone should try this out first and report about the experience.
saddy is offline   Reply With Quote

Old   August 28, 2018, 11:39
Default
  #6
New Member
 
Srikrishnan Balasubramanian
Join Date: Jul 2017
Location: Erlangen
Posts: 7
Rep Power: 9
srikrishnan_balasubramani is on a distinguished road
Hi Dr. Roenby,


First of all, thanks for your incredible work.

I tried to change the interIsoFoam for phasechange flows.
Based on Rodrigo's comment, I added the source terms for the alpha equations. (thanks rodrigo)

The solution runs fine until certain time and then I get a lot foam warnings and finally the simulation stops.



Here is the warning message :


PIMPLE: iteration 1
--> FOAM Warning :
From function void Foam::isoCutFace::cutPoints(const pointField&, const scalarField&, Foam::scalar, Foam:ynamicList<Foam::Vector<double> >&)
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 669
cutPoints = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)) for pts = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)), f - f0 = 3(1.77292e-15 -9.8908e-15 -1.3714e-15) and f0 = 0
--> FOAM Warning :
From function void Foam::isoCutFace::cutPoints(const pointField&, const scalarField&, Foam::scalar, Foam:ynamicList<Foam::Vector<double> >&)
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 669
cutPoints = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)) for pts = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)), f - f0 = 3(1.76423e-15 -9.89949e-15 -1.38009e-15) and f0 = 8.68645e-18
--> FOAM Warning :
From function void Foam::isoCutFace::quadAreaCoeffs(const Foam:ynamicList<Foam::Vector<double> >&, const Foam:ynamicList<Foam::Vector<double> >&, Foam::scalar&, Foam::scalar&) const
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 707
Vertex face was cut at pf0 = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05))
--> FOAM Warning :
From function void Foam::isoCutFace::quadAreaCoeffs(const Foam:ynamicList<Foam::Vector<double> >&, const Foam:ynamicList<Foam::Vector<double> >&, Foam::scalar&, Foam::scalar&) const
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 716
Vertex face was cut at pf1 = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05))
Number of isoAdvector surface cells = 43264
isoAdvection: Before conservative bounding: min(alpha) = -1.94668e-05, max(alpha) = 1 + -0.000175214
isoAdvection: After conservative bounding: min(alpha) = -3.61432e-12, max(alpha) = 1 + -0.000175231
isoAdvection: time consumption = 47%
Phase-1 volume fraction = 0.119029 Min(alpha.water) = 0 Max(alpha.water) = 0.999825
--> FOAM Warning :
From function void Foam::isoCutFace::cutPoints(const pointField&, const scalarField&, Foam::scalar, Foam:ynamicList<Foam::Vector<double> >&)
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 669
cutPoints = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)) for pts = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)), f - f0 = 3(1.77198e-15 -9.88832e-15 -1.3703e-15) and f0 = 0
--> FOAM Warning :
From function void Foam::isoCutFace::cutPoints(const pointField&, const scalarField&, Foam::scalar, Foam:ynamicList<Foam::Vector<double> >&)
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 669
cutPoints = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)) for pts = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)), f - f0 = 3(1.76329e-15 -9.89701e-15 -1.37899e-15) and f0 = 8.68645e-18
--> FOAM Warning :
From function void Foam::isoCutFace::quadAreaCoeffs(const Foam:ynamicList<Foam::Vector<double> >&, const Foam:ynamicList<Foam::Vector<double> >&, Foam::scalar&, Foam::scalar&) const
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 707
Vertex face was cut at pf0 = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05))
--> FOAM Warning :
From function void Foam::isoCutFace::quadAreaCoeffs(const Foam:ynamicList<Foam::Vector<double> >&, const Foam:ynamicList<Foam::Vector<double> >&, Foam::scalar&, Foam::scalar&) const
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 716
Vertex face was cut at pf1 = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05))
Number of isoAdvector surface cells = 43264
isoAdvection: Before conservative bounding: min(alpha) = -2.71233e-05, max(alpha) = 1 + -0.000175231
isoAdvection: After conservative bounding: min(alpha) = -1.45423e-12, max(alpha) = 1 + -0.000175247
isoAdvection: time consumption = 47%
Phase-1 volume fraction = 0.119027 Min(alpha.water) = 0 Max(alpha.water) = 0.999825
--> FOAM Warning :
From function void Foam::isoCutFace::cutPoints(const pointField&, const scalarField&, Foam::scalar, Foam:ynamicList<Foam::Vector<double> >&)
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 669
cutPoints = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)) for pts = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)), f - f0 = 3(1.77281e-15 -9.88353e-15 -1.37721e-15) and f0 = 0
--> FOAM Warning :
From function void Foam::isoCutFace::cutPoints(const pointField&, const scalarField&, Foam::scalar, Foam:ynamicList<Foam::Vector<double> >&)
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 669
cutPoints = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)) for pts = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)), f - f0 = 3(1.76413e-15 -9.89222e-15 -1.38589e-15) and f0 = 8.68645e-18
--> FOAM Warning :
From function void Foam::isoCutFace::quadAreaCoeffs(const Foam:ynamicList<Foam::Vector<double> >&, const Foam:ynamicList<Foam::Vector<double> >&, Foam::scalar&, Foam::scalar&) const
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 707
Vertex face was cut at pf0 = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05))
--> FOAM Warning :
From function void Foam::isoCutFace::quadAreaCoeffs(const Foam:ynamicList<Foam::Vector<double> >&, const Foam:ynamicList<Foam::Vector<double> >&, Foam::scalar&, Foam::scalar&) const
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 716
Vertex face was cut at pf1 = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05))
Number of isoAdvector surface cells = 43264
isoAdvection: Before conservative bounding: min(alpha) = -1.58733e-05, max(alpha) = 1 + -0.000175247
isoAdvection: After conservative bounding: min(alpha) = -3.4395e-12, max(alpha) = 1 + -0.000175264
isoAdvection: time consumption = 47%
Phase-1 volume fraction = 0.119025 Min(alpha.water) = 0 Max(alpha.water) = 0.999825
--> FOAM Warning :
From function void Foam::isoCutFace::cutPoints(const pointField&, const scalarField&, Foam::scalar, Foam:ynamicList<Foam::Vector<double> >&)
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 669
cutPoints = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)) for pts = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)), f - f0 = 3(1.77266e-15 -9.88052e-15 -1.37948e-15) and f0 = 0
--> FOAM Warning :
From function void Foam::isoCutFace::cutPoints(const pointField&, const scalarField&, Foam::scalar, Foam:ynamicList<Foam::Vector<double> >&)
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 669
cutPoints = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)) for pts = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)), f - f0 = 3(1.76397e-15 -9.8892e-15 -1.38817e-15) and f0 = 8.68645e-18
--> FOAM Warning :
From function void Foam::isoCutFace::quadAreaCoeffs(const Foam:ynamicList<Foam::Vector<double> >&, const Foam:ynamicList<Foam::Vector<double> >&, Foam::scalar&, Foam::scalar&) const
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 707
Vertex face was cut at pf0 = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05))
--> FOAM Warning :
From function void Foam::isoCutFace::quadAreaCoeffs(const Foam:ynamicList<Foam::Vector<double> >&, const Foam:ynamicList<Foam::Vector<double> >&, Foam::scalar&, Foam::scalar&) const
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 716
Vertex face was cut at pf1 = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05))
Number of isoAdvector surface cells = 43266
isoAdvection: Before conservative bounding: min(alpha) = -2.03621e-05, max(alpha) = 1 + -0.000175264
isoAdvection: After conservative bounding: min(alpha) = -1.4312e-12, max(alpha) = 1 + -0.00017528
isoAdvection: time consumption = 47%
Phase-1 volume fraction = 0.119023 Min(alpha.water) = 0 Max(alpha.water) = 0.999825
--> FOAM Warning :
From function void Foam::isoCutFace::cutPoints(const pointField&, const scalarField&, Foam::scalar, Foam:ynamicList<Foam::Vector<double> >&)
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 669
cutPoints = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)) for pts = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)), f - f0 = 3(1.77065e-15 -9.88057e-15 -1.37311e-15) and f0 = 0
--> FOAM Warning :
From function void Foam::isoCutFace::cutPoints(const pointField&, const scalarField&, Foam::scalar, Foam:ynamicList<Foam::Vector<double> >&)
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 669
cutPoints = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)) for pts = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05)), f - f0 = 3(1.76196e-15 -9.88926e-15 -1.3818e-15) and f0 = 8.68645e-18
--> FOAM Warning :
From function void Foam::isoCutFace::quadAreaCoeffs(const Foam:ynamicList<Foam::Vector<double> >&, const Foam:ynamicList<Foam::Vector<double> >&, Foam::scalar&, Foam::scalar&) const
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 707
Vertex face was cut at pf0 = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05))
--> FOAM Warning :
From function void Foam::isoCutFace::quadAreaCoeffs(const Foam:ynamicList<Foam::Vector<double> >&, const Foam:ynamicList<Foam::Vector<double> >&, Foam::scalar&, Foam::scalar&) const
in file fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C at line 716
Vertex face was cut at pf1 = 3((-0.000205501 0.00754821 -5.28758e-05) (-0.000233354 0.00755288 -7.26279e-05) (-0.000219663 0.00753114 -5.45055e-05))
Number of isoAdvector surface cells = 43265
isoAdvection: Before conservative bounding: min(alpha) = -0.00026042, max(alpha) = 1 + -0.00017528
isoAdvection: After conservative bounding: min(alpha) = -3.41937e-12, max(alpha) = 1 + -0.000175297
isoAdvection: time consumption = 47%
Phase-1 volume fraction = 0.11902 Min(alpha.water) = 0 Max(alpha.water) = 0.999825
GAMG: Solving for p_rgh, Initial residual = 0.0358953, Final residual = 0.000537933, No Iterations 2
time step continuity errors : sum local = 6.95233e-08, global = -7.09544e-09, cumulative = -0.000199076
GAMG: Solving for p_rgh, Initial residual = 0.0209545, Final residual = 0.000479413, No Iterations 2
time step continuity errors : sum local = 6.45061e-08, global = -7.96381e-10, cumulative = -0.000199077
GAMG: Solving for p_rgh, Initial residual = 0.01146, Final residual = 8.86714e-08, No Iterations 20
time step continuity errors : sum local = 1.20871e-11, global = -2.28937e-13, cumulative = -0.000199077
smoothSolver: Solving for omega, Initial residual = 0.00597309, Final residual = 7.71023e-09, No Iterations 5
smoothSolver: Solving for k, Initial residual = 0.0152823, Final residual = 3.69396e-09, No Iterations 6
ExecutionTime = 31976.8 s ClockTime = 32003 s




If you have any idea about it, try to help me.

For your info, below is the details at some particular time where I don't get warnings.


PIMPLE: iteration 1
Number of isoAdvector surface cells = 10983
isoAdvection: Before conservative bounding: min(alpha) = -0.00250367, max(alpha) = 1 + 3.7198e-05
isoAdvection: After conservative bounding: min(alpha) = -9.19778e-07, max(alpha) = 1 + 1.30901e-07
isoAdvection: time consumption = 11%
Phase-1 volume fraction = 0.991469 Min(alpha.water) = 0 Max(alpha.water) = 1
Number of isoAdvector surface cells = 11627
isoAdvection: Before conservative bounding: min(alpha) = -0.00225283, max(alpha) = 1 + 3.71182e-05
isoAdvection: After conservative bounding: min(alpha) = -1.53212e-06, max(alpha) = 1 + 2.09213e-07
isoAdvection: time consumption = 11%
Phase-1 volume fraction = 0.991457 Min(alpha.water) = 0 Max(alpha.water) = 1
Number of isoAdvector surface cells = 11656
isoAdvection: Before conservative bounding: min(alpha) = -0.00108297, max(alpha) = 1 + 0.000133022
isoAdvection: After conservative bounding: min(alpha) = -1.55246e-06, max(alpha) = 1 + 1.5678e-07
isoAdvection: time consumption = 11%
Phase-1 volume fraction = 0.991445 Min(alpha.water) = 0 Max(alpha.water) = 1
Number of isoAdvector surface cells = 11660
isoAdvection: Before conservative bounding: min(alpha) = -0.00110323, max(alpha) = 1 + 3.72188e-05
isoAdvection: After conservative bounding: min(alpha) = -9.14948e-06, max(alpha) = 1 + 2.18349e-07
isoAdvection: time consumption = 11%
Phase-1 volume fraction = 0.991432 Min(alpha.water) = 0 Max(alpha.water) = 1
Number of isoAdvector surface cells = 11655
isoAdvection: Before conservative bounding: min(alpha) = -0.00219646, max(alpha) = 1 + 3.73554e-05
isoAdvection: After conservative bounding: min(alpha) = -5.02188e-05, max(alpha) = 1 + 1.28155e-07
isoAdvection: time consumption = 11%
Phase-1 volume fraction = 0.99142 Min(alpha.water) = 0 Max(alpha.water) = 1
GAMG: Solving for p_rgh, Initial residual = 0.521383, Final residual = 0.0155201, No Iterations 1
time step continuity errors : sum local = 2.29426e-05, global = -3.93426e-09, cumulative = -1.76012e-05
GAMG: Solving for p_rgh, Initial residual = 0.25023, Final residual = 0.00734931, No Iterations 1
time step continuity errors : sum local = 8.20731e-06, global = -1.7044e-09, cumulative = -1.76029e-05
GAMG: Solving for p_rgh, Initial residual = 0.148065, Final residual = 9.90889e-08, No Iterations 277
time step continuity errors : sum local = 1.01872e-10, global = -3.75169e-13, cumulative = -1.76029e-05
smoothSolver: Solving for omega, Initial residual = 0.00370818, Final residual = 1.8865e-09, No Iterations 4
smoothSolver: Solving for k, Initial residual = 0.0173377, Final residual = 5.85093e-09, No Iterations 5
ExecutionTime = 406.54 s ClockTime = 407 s


Thanks in advance.


regards,
krishna

Last edited by srikrishnan_balasubramani; August 29, 2018 at 07:45.
srikrishnan_balasubramani is offline   Reply With Quote

Old   May 17, 2019, 15:04
Default
  #7
New Member
 
Yağmur GÜLEÇ
Join Date: May 2014
Posts: 9
Rep Power: 12
yagmur_89 is on a distinguished road
Dear Srikrishnan Balasubramanian,

I would like to try isoAdvection with a source term as well. But I was wondering if you solved why the warnings showed up in the log file.

Thanks,
Best Regards,
yagmur_89 is offline   Reply With Quote

Old   May 17, 2019, 17:12
Default
  #8
New Member
 
Srikrishnan Balasubramanian
Join Date: Jul 2017
Location: Erlangen
Posts: 7
Rep Power: 9
srikrishnan_balasubramani is on a distinguished road
I am not sure about the reason for warnings. Initially, I used tetra and hexa mesh combined, from Ansys. May be this was the reason for warnings. Later, I used snappy hex mesh. Since then I din get warnings. May be mesh was the reason.
Aabadani and aliyah. like this.
srikrishnan_balasubramani is offline   Reply With Quote

Old   August 17, 2020, 04:16
Default changes
  #9
Member
 
Al
Join Date: May 2019
Posts: 37
Rep Power: 7
aliyah. is on a distinguished road
Quote:
Originally Posted by guin View Post
You basically need to introduce source terms in the calculation of the alpha transport equation. The trick is to get them into isoAdvection::advect(), where the equation is been solved. I played a little bit adding comments before and after the actual implemented code in order to show where would this come from and which could be the final alternative.

Code:
void Foam::isoAdvection::advect()
{
    isoDebug(Info << "Enter advect" << endl;)

    //Interpolating alpha1 cell centre values to mesh points (vertices)
    ap_ = vpi_.interpolate(alpha1_.oldTime());

    //Initialising dVf with upwind values, i.e. phi[fLabel]*alpha1[upwindCell]*dt    
    dVf_ = upwind<scalar>(mesh_, phi_).flux(alpha1_.oldTime())*
        mesh_.time().deltaT();

    //Do the isoAdvection on surface cells
    timeIntegratedFlux();

    //Syncronize processor patches
    syncProcPatches(dVf_, phi_);

    //Adjust dVf for unbounded cells
    limitFluxes();
    
    // Advect the free surface (here we go...)
    //--------------------------------------------------------------------------
  //ddt(alpha1_) + div(alphaPhi) = Su + Sp*alpha1_; // (MAIN IDEA)
  //ddt(alpha1_) + fvc::surfaceIntegrate(alphaPhi) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate(upwind<scalar>(mesh_, phi_).flux(alpha1_.oldTime())) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate([upwind<scalar>(mesh_, phi_).flux(alpha1_.oldTime())*mesh_.time().deltaT()]/mesh_.time().deltaT()) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate([dVf]/mesh_.time().deltaT()) = Su + Sp*alpha1_;
  //ddt(alpha1_) + fvc::surfaceIntegrate(dVf)/mesh_.time().deltaT() = Su + Sp*alpha1_;
  //(alpha1_ - alpha1_.oldTime())/mesh_.time().deltaT() + fvc::surfaceIntegrate(dVf)/mesh_.time().deltaT() = Su + Sp*alpha1_;
  //alpha1_ - alpha1_.oldTime() + fvc::surfaceIntegrate(dVf) = mesh_.time().deltaT()*(Su+Sp*alpha1_);

    alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_); // (CURRENT STATE) ...+ mesh_.time().deltaT()*(Su+Sp*alpha1_) 
    
  //alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*(Su+Sp*alpha1_);
  //alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su + mesh_.time().deltaT()*Sp*alpha1_;
  //alpha1_ - mesh_.time().deltaT()*Sp*alpha1_ = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su;
  //alpha1_ * (1.0 - mesh_.time().deltaT()*Sp) = alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su;
  //alpha1_ = ( alpha1_.oldTime() - fvc::surfaceIntegrate(dVf_) + mesh_.time().deltaT()*Su ) / (1.0 - mesh_.time().deltaT()*Sp); // (SUGGESTION)
  //----------------------------------------------------------------------------

    alpha1_.correctBoundaryConditions();
}
Sp and Su might be taken from interPhaseChangeFoam, etc., as well as the relevant ones in pEqn.H.

As for the advantage/drawbacks... all the ones related with sharper interfaces, I guess. But anyone should try this out first and report about the experience.
Hi, thanks for this suggestion and guidance. How did you define the Su and Sp in isoAdvection.H. I used scalarField& Su; or Foam::fvm::Su; But there were errors in it.

the second question is that I want to add fvm::Sp(divU, alpha1) , fvm::Sp(vDotvAlphal, alpha1) and vDotcAlphal to the definition of alpha instead of Su and Sp. How can I define these in isoAdvection.H and use it in the isoAdvection.c?
aliyah. is offline   Reply With Quote

Old   June 21, 2024, 13:21
Default An issue regarding having access to RDF function of isoAdvection scheme
  #10
New Member
 
SiaVash
Join Date: May 2023
Posts: 2
Rep Power: 0
SiavashB is on a distinguished road
Dear Foamers,
I have an issue regarding running a case in which I am using a modified interIsoFoam solver with openFoam-v2312. The modified interIsoFoam is compiled and in a part of code I need to have access to the reconstructedDistanceFunction (RDF) from the mesh, and I am using a code as below:

Code:
RDFFunction = mesh.lookupObject<volScalarField>("reconstructedDistanceFunction")

I also called all of the needed libraries in interIsoFoam.C as below:

Code:
#include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "isoAdvection.H"
#include "EulerDdtScheme.H"
#include "localEulerDdtScheme.H"
#include "CrankNicolsonDdtScheme.H"
#include "subCycle.H"
#include "incompressibleTwoPhaseMixture.H"
#include "immiscibleIncompressibleTwoPhaseMixture.H"
#include "incompressibleInterPhaseTransportModel.H"
#include "pimpleControl.H"
#include "fvOptions.H"
#include "CorrectPhi.H"
#include "fvcSmooth.H"
#include "dynamicRefineFvMesh.H"
#include "volPointInterpolation.H"
It seems by calling isoAdvection.H, I have to get access to reconstructedDistanceFunction but I get an error that I don't know how to solve it.

After compiling the code without any error, as soon as I start the run of the code I face this error:


Code:
FOAM FATAL ERROR: (openfoam-2312 patch=240220)

    failed lookup of reconstructedDistanceFunction (objectRegistry region0)
    available objects of type volScalarField:

23
(
FeFilter
sgm_0
interfaceProperties:K
K
PhiFilte
alpha.water
rho
Ue
sgm
p_rgh
eps
interfaceNeighbourMaker
nu
nu1
rhoESubGrid
rho_0
nu2
rhoE
alpha.air
eps_0
H
D
interfaceCellMaker
)
    From const Type& Foam::objectRegistry::lookupObject(const Foam::word&, bool) const [with Type = Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>]
    in file /usr/lib/openfoam/openfoam2312/src/OpenFOAM/lnInclude/objectRegistryTemplates.C at line 628.
I am using this command which is very similar to a code with openfoam-v1812. The point is that, they also compiled the TwoPhaseFlow library developed by DLR and by Dr. Johan Roenby and Dr. Henning Scheufler.


I would appreciate it if anyone can help me to fix this problem.

Regards,
Siavash
SiavashB is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Other] refineWallLayer Error Yuby OpenFOAM Meshing & Mesh Conversion 2 November 11, 2021 12:04
[PyFoam] and paraview eelcovv OpenFOAM Community Contributions 28 May 30, 2016 10:23
Add Singhal model into interPhaseChangeFoam zhouhoucun OpenFOAM Running, Solving & CFD 0 April 28, 2015 05:32
interphasechangeFoam: How to add U to Residual plotting with gnuplot? shipman OpenFOAM Post-Processing 4 June 15, 2014 23:30
InterPhaseChangeFoam ERROR shipman OpenFOAM Running, Solving & CFD 37 March 23, 2014 13:43


All times are GMT -4. The time now is 19:58.