|
[Sponsors] |
January 27, 2012, 06:40 |
melting problem (...continuing)
|
#1 | |
Member
Join Date: Nov 2011
Location: Berlin
Posts: 31
Rep Power: 15 |
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 |
||
April 17, 2012, 10:41 |
Me too
|
#2 |
Member
Anja Miehe
Join Date: Dec 2009
Location: Freiberg / Germany
Posts: 48
Rep Power: 17 |
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, 09:06 |
|
#3 | |
Member
Join Date: Nov 2011
Location: Berlin
Posts: 31
Rep Power: 15 |
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:
|
||
April 24, 2012, 04:28 |
|
#4 |
Member
Anja Miehe
Join Date: Dec 2009
Location: Freiberg / Germany
Posts: 48
Rep Power: 17 |
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, 05:16 |
|
#5 | |
Member
Join Date: Nov 2011
Location: Berlin
Posts: 31
Rep Power: 15 |
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:
|
||
May 14, 2012, 05:32 |
another problem for the solver
|
#6 |
Member
Join Date: Nov 2011
Location: Berlin
Posts: 31
Rep Power: 15 |
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 |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
area does not match neighbour by ... % -- possible face ordering problem | St.Pacholak | OpenFOAM | 11 | September 4, 2024 05:28 |
conduction problem | venkataramana | OpenFOAM | 3 | December 1, 2013 08:30 |
natural convection problem for a CHT problem | Se-Hee | CFX | 2 | June 10, 2007 07:29 |
Adiabatic and Rotating wall (Convection problem) | ParodDav | CFX | 5 | April 29, 2007 20:13 |
Melting Problem | M | FLUENT | 0 | April 29, 2007 17:07 |