# melting problem (...continuing)

 Register Blogs Members List Search Today's Posts Mark Forums Read

January 27, 2012, 05:40
melting problem (...continuing)
#1
Member

Join Date: Nov 2011
Location: Berlin
Posts: 31
Rep Power: 13
Dear Foamers,

I began modeling the solidification/melting processes on metals with openFoam. For this kind of problems there exists already a "meltFoam"(erfConvectiveMeltingPimpleFoam) - solver presented by fabian roesler some months ago.

Quote:
 Originally Posted by fabian_roesler Hi I was writing a new melting solver for non-isothermal phase change. It can be used for isothermal melting as well. In the near future I want to combine meltFoam with my new solver which is significantly faster than the old solver. I although wrote an article about my work. Have a look here: F. Rösler, D. Brüggemann (2011): Shell-and-tube type latent heat thermal energy storage: numerical analysis and comparison with experiments. Heat and Mass Transfer, Vol. 47 Issue 8 , 1027-1033, DOI: 10.1007/s00231-011-0866-9 http://www.springerlink.com/content/b1tp01k2u7q8j432/ What do you plan to do? Regards Fabian
I would like to extend it for another kind of problem, which describes the effect of segregation of elements while the solidificaten process.
(see eg. http://en.wikipedia.org/wiki/Scheil_equation).
Here you observe a redistribution of element concentration at the phase front according to different solubilities in the solid and liquid phase.
The distribution or segregation coeeficient k = c_s/c_l describes this relation.
How to get this into the solver?
For this, I introduced two new Fields volScalarField cSol and cLiq for the concentrations in liquid and solid phase in "createFields.H".
Assumuing that the amount of species is small, it does not disturb the mean transport, and a separate transport eqn. can be definded for the liquid phase (alpha is the fraction of liquid phase, DLiq the
Diffusion coefficient):
{
fvScalarMatrix cLiqEqn
(
fvm::ddt(cLiq)
+ fvm::div(phi, cLiq)
- alpha * fvm::laplacian(DLiq, cPliq)
);
// this needs a source/sink term here for segregation/sulution to/from solid phase via cLiq = k * cSol
pLiqSegEqn.solve();
};

I thought to introduce a temporal field cTmp to track the amount of species in transfer after each timestep and update the cLiq and cSol cells where dAlpha/dt > 0 (=where melting/solidification happens)
manually in a loop over the domain with a forAll(alpha, cellI){...}, but somehow this is just a workaround.

My Question to the experts:
is there a elegant way to describe this effect directly in cLiqEqn? Do I need another cSolEqn? How to couple cLiq and cSol?
(My try and error procedure so far ended with compilation errors or dimensional faults...)
Thank you for sharing your ideas!
dzi

 April 17, 2012, 09:41 Me too #2 Member   Anja Miehe Join Date: Dec 2009 Location: Freiberg / Germany Posts: 48 Rep Power: 15 Hello dzi, I am trying something similar. One which paper are you building? My base is the often cited Bennon and Incropera Model from 1987. So far, I have also troubles with the source terms, especially as i am dealing with continuous casting so that I cannot neglect a part of the source. Regards, Anja

April 23, 2012, 08:06
#3
Member

Join Date: Nov 2011
Location: Berlin
Posts: 31
Rep Power: 13
Hello Anja,
i used the openfoam programming tutorials (about how to add additional scalars and their eqns), the wikipedia entry about scheil and some Papers about the darcyterms and entalpy porouisity technique (D. Brent, V. R. Voller, and K. J. Reid). Afterwards a lot of try-error to get it working (- still not correctly, but the effects are visible). But I think most important was the erfCon-solver and article (Heat Mass Transfer (2011) 47:1027–1033) about presented by Fabian a while ago.. (thanks again for that!)
best regards
dirk

Quote:
 Originally Posted by AnjaMiehe Hello dzi, I am trying something similar. One which paper are you building? My base is the often cited Bennon and Incropera Model from 1987. So far, I have also troubles with the source terms, especially as i am dealing with continuous casting so that I cannot neglect a part of the source. Regards, Anja

 April 24, 2012, 03:28 #4 Member   Anja Miehe Join Date: Dec 2009 Location: Freiberg / Germany Posts: 48 Rep Power: 15 Hello Dirk, Thanks for your answer. I am using the code by Fabian Rösler and I have read the paper by him as well as the paper for the d'Arcy Term and the techniques for the energy equation. However, I still have problems with the additional source terms in the concentration equation. Would you share some code? The ideas I had in coding do compile but do I do get errors on solving. Regards, Anja

May 2, 2012, 04:16
#5
Member

Join Date: Nov 2011
Location: Berlin
Posts: 31
Rep Power: 13
hi anja,
i observed that the solution is very sensible to the diffusion coefficient (->instable if too high). In principle it works like described above with the governing eqn for the concentration, where the source term for cLiq is given by the change of alpha.

{
dAlpha = alpha - alpha.oldTime();
cTmp = - dAlpha * cLiq * k / runTime.deltaT();
fvScalarMatrix liqSegEqn
(
fvm::ddt(cLliq)
+ fvm::div(phi, cLiq)
- alpha * fvm::laplacian(DLiq, cLiq)
== cTmp
);

pLiqSegEqn.solve();
};

As mentioned, there is still a error for the total bilance over time evolution which I could not fix yet.

best dirk

Quote:
 Originally Posted by AnjaMiehe Hello Dirk, Thanks for your answer. I am using the code by Fabian Rösler and I have read the paper by him as well as the paper for the d'Arcy Term and the techniques for the energy equation. However, I still have problems with the additional source terms in the concentration equation. Would you share some code? The ideas I had in coding do compile but do I do get errors on solving. Regards, Anja

 May 14, 2012, 04:32 another problem for the solver #6 Member   Join Date: Nov 2011 Location: Berlin Posts: 31 Rep Power: 13 Hi, I fond another strange behaviour of this solver. If I use it for the mirrored problem (i.e. the solidification goes form left to right) the solution changes. because laplacian(DLiq, cLiq) gives either positive or negative values, depending on the direction. But why? Idea: use the abs value of it, but this wont compile. How can I write: alpha * fvm::laplacian(DLiq, cLiq) as mag(alpha * fvm::laplacian(DLiq, cLiq)) or similar? Here the solver again: { dAlpha = alpha - alpha.oldTime(); cTmp = - dAlpha * cLiq * k / runTime.deltaT(); fvScalarMatrix liqSegEqn ( fvm::ddt(cLliq) + fvm::div(phi, cLiq) - alpha * fvm::laplacian(DLiq, cLiq) // <- this term acts as source or as sink, depending on the direction of solidifiaction == cTmp ); liqSegEqn.solve(); }; The other problem: "large" diffusion coefficients for DLiq(>1e-6) end in no usable, funny patterns for the concentration - also for smaller timesteps. What else could I adjust? Thanks for any hint. dirk

 Tags alloy, melting, segregation, solidification