CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   FLUENT (http://www.cfd-online.com/Forums/fluent/)
-   -   interface of directional solidification (http://www.cfd-online.com/Forums/fluent/49931-interface-directional-solidification.html)

wang rensong November 30, 2008 11:34

interface of directional solidification
 
I am modeling a system of multi-crystal silicon growth. I disabled the flow equation to solve only the energy one, starting from an clear solid-melt interface and I found during the crystal growth, the melt temperature goes to the melting point and so the whole melt gives out latent heat at the same time and results an wide liquid-solid mushy zone as well as an obscure solid-melt interface. That is not right for reality. anybody know how to fix it? my settings of liquidius and solidus temperature are same, the material is pure silicon, but that does not seem to work.

kuba December 1, 2008 06:30

Re: interface of directional solidification
 
Hi,

Is it czochralski crystal growth?


wang rensong December 1, 2008 20:39

Re: interface of directional solidification
 
no, it is DSS furnace

kuba December 2, 2008 04:37

Re: interface of directional solidification
 
Try to set one temp for solid and let say 0.001 K more for liquid ... maybe this will help

Gopal December 3, 2008 04:53

Re: interface of directional solidification
 
R u modeling it in steady state or transient?

wang rensong December 5, 2008 05:22

Re: interface of directional solidification
 
Transient, the steady state will never reach even in physics consideration. there is no use setting delta T to 0.00001. I have tossed the model and write my own udf and, tackled the problem.

Gopal December 5, 2008 06:18

Re: interface of directional solidification
 
By steady state I mean looking at a perticular instant.

Would be interesting to know how u tossed the model and written your own UDF

kuba December 5, 2008 06:32

Re: interface of directional solidification
 
Yes, I agree it would be better to see what you have already estimated? If you could post your udf then it would be more clear what we are talking about.

wang rensong December 7, 2008 22:08

Re: interface of directional solidification
 
below is my udf. the hypothesis is, the temperature gradient in melt is very small. I neglect the fluid flow and set a large thermal conductivity above the melt point.

#include "udf.h" #include "mem.h" #define Enthalpy 1317507.48 #define Latent_heat 72368.3 #define ID 8 static int last_ts = -1; /* Global variable. Time step is never <0 */ DEFINE_ADJUST(my_adjust5,d) { cell_t c,C0,C1; Thread *tf; Thread *t = Lookup_Thread(d,ID); int curr_ts,n,allow; face_t f; curr_ts = N_TIME; if (last_ts != curr_ts)

{

last_ts = curr_ts;

/* things to be done only on first iteration of each time step

can be put here */

begin_c_loop(c,t)

{

/*分辨是否有新的液"单元�� 入到固液界面,0表示液",1表示固" ,2表示界面*/

if(C_H(c,t)<=Enthalpy-100 && C_UDMI(c,t,0)==0)

{

/*Message("New boundary: C_H=%f,C_T=%f\n",C_H(c,t),C_T(c,t));*/

allow=0;

c_face_loop(c,t,n)

{

f = C_FACE(c,t,n);

tf = C_FACE_THREAD(c,t,n);

C0=F_C0(f,tf);

C1=F_C1(f,tf);

if(C0==c)

{

if(C_UDMI(C1,t,0)==1)

{allow=1;}

}

else

{

if(C_UDMI(C0,t,0)==1)

{allow=1;}

}

}

if(allow==1)

{

C_UDMI(c,t,0) = 2;

C_UDMI(c,t,1) = Latent_heat;

}

}

if(C_H(c,t)>Enthalpy+10 && C_UDMI(c,t,0)==1)

{

C_UDMI(c,t,0) = 2;

C_UDMI(c,t,1) = 0;

}

/*handle latent heat, 决定是否要退出界面*/

if(C_UDMI(c,t,0)==2)

{

if(C_UDMI(c,t,1)>Latent_heat+100)

{C_UDMI(c,t,0)=0;}

if(C_UDMI(c,t,1)<-10)

{C_UDMI(c,t,0)=1;}

if(C_UDMI(c,t,1)>=0 && C_UDMI(c,t,1)<=Latent_heat)

{

C_UDMI(c,t,1)+=C_H(c,t)-Enthalpy;

Message("the enthalpy is %f\n",C_H(c,t));

}

}

}

end_c_loop(c,t)

}

begin_c_loop(c,t) {

/*handle latent heat, 决定是否要退出界面*/

if(C_UDMI(c,t,0)==2)

{

C_H(c,t)=Enthalpy;

C_T(c,t)=1685;

} } end_c_loop(c,t) /*printf("%f\n",temppp);*/ }

/***********************************************/

DEFINE_ON_DEMAND(init_udm) {

Domain *d; /* declare domain pointer since it is not passed as an

argument to the DEFINE macro */

Thread *t;

Thread *tr;

cell_t c;

d = Get_Domain(1); /* Get the domain using Fluent utility */

tr = Lookup_Thread(d,ID);

/* Loop over all cell threads in the domain */

thread_loop_c(t,d)

{

begin_c_loop(c,t)

{

C_UDMI(c,t,0) = 0;

C_UDMI(c,t,1) = 0;

if(t==tr)

{

if(C_T(c,t)>1684.5 && C_T(c,t)<1685.5)

{

C_UDMI(c,t,0) = 2;

C_UDMI(c,t,1) = Latent_heat;

}

else

{

if(C_T(c,t)<=1684.5)

{C_UDMI(c,t,0) = 1;}

}

}

}

end_c_loop(c,t)

}

/* begin_c_loop(c,tr)

{

if(C_T(c,tr)>1684.6 && C_T(c,tr)<1685.4)

{C_UDMI(c,tr,1) = Latent_heat;}

}

end_c_loop(c,tr) */

}


All times are GMT -4. The time now is 10:18.