CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   melting problem: looking for appropriate solvers (https://www.cfd-online.com/Forums/openfoam-solving/93620-melting-problem-looking-appropriate-solvers.html)

tetra-eder March 16, 2016 10:31

Thanks for the answer Alex. You are right, the description was not very clear. Here are more details about the problem.
Let's assume a cylinder with a constant temperature (higher than melting temperature) at its boundary. The cylinder is surrounded by a phase change material, which is initially solid. The simulation starts at a time, when there is already some melt around the cylinder, so that motion through the melt is possible (technically I use the setFieldsDict to do this before I start the solver). When the heated cylinder now moves with a small velocity (<= the velocity of the phase interface), it will melt the solid phase change material in the direction of movement.
In a global reference frame the velocity of the solid phase change material is zero, the velocity of the liquid phase change material (melt) is influenced by the boussinesq term + its interaction with the moving cylinder wall and the velocity of the cylinder is given. In a body-fixed reference frame (which I want to use) the velocity of the cylinder is zero, the velocity of the solid phase change material is spatially constant and has the negative velocity that the cylinder would have in a global reference frame and the velocity of the melt is some value + the velocity of the solid phase change material.

I think I've found a solution in this thread (#169) for the problem.

ahmmedshakil March 16, 2016 22:00

Quote:

Originally Posted by tetra-eder (Post 589997)
Hi,
first I would like to thank for this very helpful thread.

I want to simulate a melting problem and I just thought that someone of you might help me.
A heat source is embedded into a phase change material and the heat source moves with a constant and given velocity. To solve for the phase change with convection, I use a solver based on Fabian Rösler's solver which was posted in this thread. I would like to use a fixed grid with a heat source fixed reference frame, so that the phase change material moves relative to the heat source. When using just an inlet and outlet condition for the velocity, the velocity changes within the solid phase, which is unphysical. I think the reason for this is mass conservation. Another possibility would be to add the velocity in the darcy term but this seems also not to work. Do you have any ideas how i can treat this relative motion phase change problem?

Thanks in advance!

Hi Tetra-eder,

Can you please post the governing equations ? I guess it should not be that tough. I have solved a similar problem, but not considering the melting. In my melting problem, I considered the fixed heat source, which was due to the problem I was solving.

Cheers,
shakil

tetra-eder March 17, 2016 03:03

Thanks for the answer, shakil. I also think that the problem is very similar. Could explain how you define the boundary conditions for U and p_rgh (or p)? And if you also used the solid velocity in the momentum equation, how you define this velocity?

The governing equations I use are similar or even the same that are already posted in this thread. Therefore I will not describe the variables, if its okay for you.

Conservation of energy:
\frac{\partial \left( \rho c T \right)}{\partial t}+\nabla\cdot\left(  \rho \mathbf{u} c T\right)=\nabla\cdot\left( \lambda\nabla T \right)-L\left( \frac{\partial\left( \rho \gamma_L \right)}{\partial t} +\nabla\cdot\left( \rho \mathbf{u} \gamma_L\right) \right)

Conservation of momentum:
\frac{\partial\left(\rho \mathbf{u}\right)}{\partial t}+\nabla\cdot\left( \rho \mathbf{u}\mathbf{u} \right)=-\nabla p + \nabla\cdot\left( \eta\nabla\mathbf{u}\right)-\rho \mathbf{g}\beta(T-T_0)-C\frac{\left( 1-\gamma_L \right)^2}{\gamma_L^3+\epsilon}\left( \mathbf{u}-\mathbf{u}_{\text{heatsource}} \right)

Conservation of mass:
\frac{\partial\rho}{\partial t}+\nabla\cdot \left( \rho\mathbf{u} \right)=0

This does of course not include a velocity superposition in the liquid phase but in a first step I neglect it due to the fact that the expected velocity is small compared to the convection in the melt.

One idea that came into my mind when I wrote down these equation was that some terms depending on the velocity of the solid phase were canceled out in the original derivation of the mixture formulation. Could this be the problem?

tetra-eder March 17, 2016 05:54

I solved the problem now. There were several reasons. The first was that I was not using the updated solver with u_heatsource. Since I have compiled Openfoam also in debug mode, I have two versions of my solver and only one has been updated during compilation and unfortunately this was not the one set in my environment :o. After this the velocity in the solid was constant as expected but for some reason the liquid fraction didn't move. And the problem was that I used a flag, which was set to false to de- or activate the convection of the liquid fraction in the heat equation. Now everything works as expected but I would like to discuss the boundary conditions with you. What I am using now is

Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      volScalarField;
    location    "0";
    object      p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 2 -2 0 0 0 0];

internalField  uniform 0;

boundaryField
{
  inFlow
    {
        type            fixedFluxPressure;
        gradient      uniform 0;
        value          uniform 0;
    }
    outFlow
    {
        type            fixedFluxPressure;
        gradient      uniform 0;
        value          uniform 0;
    }
    sides
    {
        type            fixedFluxPressure;
        gradient      uniform 0;
        value          uniform 0;
    }
    heatSource
    {
        type            fixedFluxPressure;
        gradient        uniform 0;
        value          uniform 0;
    }
    frontAndBack
    {
        type            empty;
    }
}

Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      volVectorField;
    location    "0";
    object      U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 1 -1 0 0 0 0];

internalField  uniform (0 0.001 0);

boundaryField
{
    inFlow
    {
      type            fixedValue;
      value          uniform (0 0.001 0);
    }
    outFlow
    {
      type            zeroGradient;
    }
    sides
    {
      type            slip;
    }
    heatSource
    {
      type            fixedValue;
      value          uniform (0 0 0);
    }
    defaultFaces
    {
        type            empty;
    }
}

Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      volVectorField;
    location    "0";
    object      Us;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 1 -1 0 0 0 0];

internalField  uniform (0 0.001 0);

boundaryField
{
    inFlow
    {
      type            fixedValue;
      value          uniform (0 0.001 0);
    }
    outFlow
    {
      type          fixedValue;
      value        uniform (0 0.001 0);
    }
    sides
    {
      type          fixedValue;
      value        uniform (0 0.001 0);
    }
    heatSource
    {
      type            fixedValue;
      value          uniform (0 0 0);
    }
    defaultFaces
    {
        type            empty;
    }
}

Do you have any improvement suggestions, especially for p_rgh?

han0459 July 14, 2016 06:25

Help
 
Dear everyone,

Since I am a newbie in the openFoam, I could not compile the meltFoam in my openFoam 4. Is anybody has successfully compile the meltFoam in the openFoam 4? If so, please help me how to debug this problem. And is there any other good ideas to simulate the solidification using openFoam? Because I'd like to develop the algorithm of solidification in the future.

Thanks,

Alex

fabian_roesler July 15, 2016 03:57

Hi

Actually you do not have to compile anything, as the whole solver for solidification and melting is there as a new fvOption module since version 3.

Check this out:
http://cpp.openfoam.org/v4/a02447.html#details

Cheers

Fabian

han0459 July 15, 2016 23:48

Hi Fabian,

Thank you so much for your information. I hope I can use this solver successfully. If there is a problem, I will ask for help in the forum again:p.

Yours,

Alex Han

han0459 July 18, 2016 22:00

Sorry, I still have a little problem. There is no tutorial for the solidification, right?

Alex

fabian_roesler July 20, 2016 10:04

The solver doesn't differ between melting and solidification.
When a boundary is colder than the melting point, solidification starts.

Cheers

Fabian

han0459 July 21, 2016 01:13

Hello Fabian,

I am sorry to ask a dull question. You said I do not have to compile for the module. But how can I use the melting/solidification source? Because I have searched for the tutorial or guide in the internet to use melting/solidification FvOption. But unfortunately I failed. Could you please give some suggestions how to employ that module?

Thanks a lot !

Alex Han

kera November 9, 2016 04:30

Hello Foamers,

I have been a silent spectator of this forum for a while and it seems that now is the time for me to ask for questions and help.

I am also thankful to Fabian, Shakil and others for their valuable suggestions which I found very helpful.

Quote:

Originally Posted by kuechenrole (Post 545645)
Here is a revised version of my 3 phase attempt. Following the hints of SSSS the main changes are:
  • reduced size, 2D domain inkl. symmetryPlane
  • rho and cp is equal for liquid and solid
  • rho becomes a volScalarField featuring the Boussinesq approach
  • added TEqn.relax()

The TEqn still doesn't work. Just cooling the cube results in higher temperatures than initiated and filling the isothermal cube results in floating Point error after raising and dropping T and liquid fraction.

Two ideas are still open:
  • Do anybody know an alternative approach to convMeltFoam, which doesn't use the convective term fvc::div( *** , fl )?
  • How can terms in the TEqn, which depend on the melt fraction (alpha1 = liquid + solid) be limited, other than just multiplying it with alpha1?

Thanks,

ole

Hello Ole,

Were you able to solve your problem? I am actually trying to do the same and using the gallium case to bench mark my solver.

If I am not considering the gas phase "alpha2" the solver works just fine. The moment I introduce the gas phase in my case, I face 2 problems:

1) Initially the TEqn takes too many iterations to converge
2) The melt fraction gamma has a very weird profile at the interface (i.e., (interface of alpha1 (solid+melt) and alpha2 (gas phase).

Would greatly appreciate if I could look into your code.

regards,
Ricky

kera November 21, 2016 09:11

Hello again,

I was able to solve the above mentioned problems up to an extent. But are there any test cases I could use to check my solver where all the 3 phases are present (i.e., phase1 air, phase2 (solid+melt)).

regards,
Ricky

akidess November 21, 2016 09:15

Tan, L. H., Leong, S. S., Leonardi, E., Barber, T. J., Jan. 2006. A numerical study of solid-liquid phase change with marangoni effects using a multiphase approach. Progress in Computational Fluid Dynamics, an International Journal 6 (6), 304-313.

kera November 22, 2016 05:30

Thank you, this is what I was looking for.

regards,
Ricky

pmdelgado2 November 22, 2016 17:21

@kera: Can you share what you did? Can you share your solver?

kera November 23, 2016 10:05

Hi Paul,

I am afraid, I am not allowed to share any thing related to this project for the time being, besides I have just tried to implement the algorithm presented by Kidess et al, in interFoam (which was not easy in my case as I am new to FOAM programming but thanks to all the help I could get from this thread) btw most of his presentations are availabe online. If you still need any help, I will try and help you out with my limited knowledge in this field.

Hello everyone.

Currently I am struggling to validate my solver, as the surface tension (\sigma) and its variation with temp (d\sigma/ dT) are merely used as user defined values in my code and I am not sure about the values which I have in hand, whether they are right or not and at the same time I am also stuck with initializing the intial conditions of the domain.

any help is really appreciated.

regards,
Ricky

kera December 5, 2016 14:32

Hello again!

I am not able to work on this project full time and hence not able to update the scenario more often.

I started working with the project from where I left off, I have implemented the velocity equation as below

\frac{\partial\left(\rho \mathbf{u}\right)}{\partial t}+\nabla\cdot\left( \rho \mathbf{u}\mathbf{u} \right)=-\nabla p + \nabla\cdot\left( \mu\nabla\mathbf{u}\right) + \rho(1-\beta(T-T_{ref}))\mathbf{g} + S_{Darcy} + F_{CSF} + F_{marangoni}

where F_{marangoni} = \frac{\partial \sigma}{\partial T} [\nabla T - \vec{n}(\vec{n} \cdot \nabla T)] and \vec{n} I have defined it in the same was as it is define in the curvature term.

I tried to validate the my solver with the above paper suggested by Anton Kidess but failed. I have attached an image of my result and as you can see its miles away from the results obtained by Tan et al and the interface diffusion is overwhelming .

Any help in this topic is really appreciated.

regards,
Ricky

PS: the liquid melt fraction is a linear function.

akidess December 12, 2016 05:51

In the paper you are trying to reproduce, there is metal on the bottom and gas at the top. Hence it's wrong that you initialized gamma to be zero at the right (the solid material).

kera December 12, 2016 10:09

Hello Anton,

Thank you for your reply.

Yes you are right. I didn't had to initialize gamma to be "zero" on the right.

I still think that there is a problem in my implementation of Marangoni force along with melting algorithm in interfoam.

I am currently following the work of Dr. Saldi, and when I tested my solver against his "Two-Phase Marangoni driven flow" (discussed in his thesis) the results were way off, i.e., the surface height at left and right walls were 0.194 and 0.204 respectively, which are still no where near to the experimental solution obtained by Sen and Davis (1982) .

I used the following boundary condition and schemes in my case:

Boundary Conditions:
Temp: Linear temperature distribution throughout the domain with left and right walls at T_{hot} and T_{cold} resp.

Velocity: fixedValue 0

Alpha: with 90deg contact angle at the walls and zeroGradient otherwise.

Schemes
Temp, Velocity: limitedLinear
alpha: vanLeer

I almost forgot to mention, I recalculated the fluid and thermal properties using the dimensionless numbers.

Thanks once agian.

Regards,
Ricky

akidess December 12, 2016 13:19

Quote:

Originally Posted by kera (Post 629292)
I am currently following the work of Dr. Saldi, and when I tested my solver against his "Two-Phase Marangoni driven flow" (discussed in his thesis) the results were way off, i.e., the surface height at left and right walls were 0.194 and 0.204 respectively, which are still no where near to the experimental solution obtained by Sen and Davis (1982) .

Sen and Davis do not present experimental results if I remember correctly. The results in that paper are based on a semi-analytic model. Based on what you put in you will obtain other results. What were the values you expected, for which dimensionless numbers?


All times are GMT -4. The time now is 07:25.