groovyBC problem with radiation boundary
Hi,
I am trying to use the following boundary condition with groovyBC: k*dT/dn = h*(T-Tinf)+(sigma*emissivity)*(T^4-Tinf^4) where, k= thermal conductivity=5.91 [W/mK] h = heat transfer coefficient =12.4 [W/m2K] Tinf =300K emissivity=0.775 What happens in my case is that the simulation diverges after some time steps. Does anyone implemented this boundary condition in OpenFOAM? or any idea how to solve this problem??? Thanks in advance. |
Quote:
|
Thanks gschaider,
yes it's because of time steps. When I minimize the time steps the problem solved |
Quote:
|
Quote:
Can you please explain this a little bit more? How can I avoid overshooting? What does fractionExpression has to do with this? Thank you, Mojtaba |
Quote:
The thing is that an infinitely fast heat transfer it is basically a Dirichlet condition. For a "very fast" HT it is something in between a Dirichlet and a Neuman. If you implement a pure Neuman you get the overshoots in this case (just sit down with pen an paper, discretize a boundary cell with a big temperatur difference, a big heat transfer coeff and a big timestep and you'll see the overshoot). You can get rid of this by making the timestep very small or by using a mixed conditon |
how to implement radiation BC...
Quote:
Could you, please, help me with the implementation of this boundary condition using groovyBC? I'm new in it and some days ago I was trying to solve a problem where I had to use exactly that BC but I didn't know how to do that using groovyBC. I have been reading and looking for more info about the use of groovyBC but I'm stuck with this problem... Thanks in advance! |
Hi sorry for the late response. For implementing this boundary condition you can do as follows:
type groovyBC; variables "h=10;k=50;sigma=5.6e-7;E=0.7;Tinf=300;"; gradientExpression "h/k*(T-Tinf)+(sigma/k)*E*(T-Tinf)*(T-Tinf)*(T-Tinf)*(T-Tinf)"; fractionExpression "0"; values are given as dummy. Use your time step smaller. Its works for me. cheers |
Thank you Mohammad!
Now I realised that maybe this is not exactly what I was looking for because in my case the radiation heat flux is known. Therefore, maybe i shoud make some change to adapt your boundary conditions to my case. Anyway, thank you so much! Your help was very useful to me and it helped me to understand a little how groovyBC works! :) Although I still need to practise quite a lote to learn the power of groovyBC... Cheers! |
Apropos, you can solve the nonlinear equation k*dT/dn = h*(T-Tinf)+(sigma*emissivity)*(T^4-Tinf^4) concerning T by Newton method (few iterations are enough). And for better stability use a relaxation: Tnew=alpha*T+(1-alpha)*Told where alpha < 1. But it is necessary to rewrite k*dT/dn as k/delta*(T-Tinner). I do not know how to find Tinner exactly but something like that can be helpful: Tinner = Twall-snGrad(T)*mag(delta()).
|
Quote:
Thank you |
Quote:
f(T) = k*dT/dn - h*(T-Tinf)-(sigma*emissivity)*(T^4-Tinf^4) You should solve the equation: f(T) = 0. dT/dn should be rewritten as k*dT/dn = k/delta*(T-Tinner), where Tinner = Twall-snGrad(T)*mag(delta()), Twall and snGrad(T) are from previous time step. You should calculate df/dT: df/dT = k/delta - h - 4*(sigma*emissivity)*T^3 Please check the signs - I am not sure :) Hope this helps you. |
Quote:
Do you know how to control convergence of BC?. My problem has non-linear bc and takes 200 to 4000 (depending of parameters) iterations (when Newton's method is used). But I do not know how to control the convergence of bc, only modifying simple.correctNonOrthogonal() loop in laplacianFoam by trial and error. |
Quote:
|
All times are GMT -4. The time now is 05:24. |