melting problem (...continuing)
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:
(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 
Me too
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 
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 tryerror to get it working ( still not correctly, but the effects are visible). But I think most important was the erfConsolver and article (Heat Mass Transfer (2011) 47:1027–1033) about presented by Fabian a while ago.. (thanks again for that!) best regards dirk Quote:

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 
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:

another problem for the solver
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(>1e6) end in no usable, funny patterns for the concentration  also for smaller timesteps. What else could I adjust? Thanks for any hint. dirk 
All times are GMT 4. The time now is 22:38. 