CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (https://www.cfd-online.com/Forums/fluent-udf/)
-   -   UDF : heat source located in a solid (https://www.cfd-online.com/Forums/fluent-udf/121445-udf-heat-source-located-solid.html)

cdiako July 29, 2013 04:50

UDF : heat source located in a solid
 
Hello,

I am an user of FINE/Open. I would like to make a comparison with Fluent. Therefore, I need a little help in Fluent. In my domain, I have a fluid part and a solid part. In the solid, I'd like inserting a localized heat source in function of x, y and z. Is it possible? (and in the definition of the coordinates, it slightly exceeds? eg, due to an imprecise geometry, my x-coordinate exceeds of 1 mm, how Fluent work?)

You can help me to construct the udf ? if I have this coordonates for the heat source :

- x : x=0 to 0.001
- y : y=0 to 0.0015
- z : z=0.001 to 0.00012

vol=0.001*0.0015*0.0002;
HS=10/vol;

thanks a lot !

flotus1 July 29, 2013 10:59

Yes, defining a local heat source via UDF is possible. Here is part of a UDF I used for a similar purpose:

Code:

#include "udf.h"

DEFINE_SOURCE(sourceterm,c,t,dS,eqn)
{
  real x[ND_ND];          //some variable declaration
  real source;

  C_CENTROID(x,c,t);      //reads the position of the cell centroid and writes it to the field x
  source = 1.0            //instead of the constant heat source, apply whatever function f(x[0],x[1]x[2],...) you need
  return source;          //returns the value of the heatsource for the cell
}

After interpreting or compiling this UDF, you can choose "sourceterm" as a sourceterm in the domain.

The DEFINE_SOURCE macro used here loops automatically over all cells in the domain. Consequently, the source term is applied cell-wise which means it has a conatant value in a cell.
I am sure you can work out the exact function using a few if-statements. x[0] holds the x-coordinate, x[1] the y-coordinate and x[2] the z-coordinate of the cell centroid.


Edit:
Quote:

- x : x=0 to 0.001
- y : y=0 to 0.0015
- z : z=0.001 to 0.00012

vol=0.001*0.0015*0.0002;
HS=10/vol;
too many or not enough zeros...

cdiako July 30, 2013 04:08

Thank you ! The code is correct like this? (indeed, I made little mistake for the z coordinate)

#include "udf.h"

DEFINE_SOURCE(sourceterm,c,t,dS,eqn)
{
real x[ND_ND];
real source;
real vol;

C_CENTROID(x,c,t);

if(x[0]=>0 && x[0]<=0.001 && x[1]=>0 && x[1]<=0.0015 && x[2]=>0.001 && x[2]<=0.0012)
{
vol=0.001*0.0015*0.0002;
source=10/vol;
}
else
{
source=0;
}

return source;
}

flotus1 July 30, 2013 05:21

Looks fine.

cdiako July 30, 2013 07:55

It's strange, I have no warning in the compilation, but the temperature in the solid doesn't increase. An idea?

flotus1 July 30, 2013 08:22

1 Attachment(s)
Quote:

After interpreting or compiling this UDF, you can choose "sourceterm" as a sourceterm in the domain.
Did you add the source term to your domain?
Simply interpreting the UDF does not acrivate any source terms.

Attachment 23889

cdiako July 30, 2013 08:27

Yes yes, I find the error. I was stupid, I made a mistake in one of the coordinates. Thank you for your help !

David UTFSM MEC October 8, 2013 18:56

Quote:

Originally Posted by cdiako (Post 442813)
Yes yes, I find the error. I was stupid, I made a mistake in one of the coordinates. Thank you for your help !

Hey hi! i have the same problem, i need to put on mi domain a constant heat, momentum and mass source on a localized point on the cell zone ( in this case water liquid). Cause of the options of Fluent it self only allows to loop the source on all the fluid cell zone, i realized that i haved to find the way to program with UDF to indicate just a certain point, in this case the centroid of the cell. I also intempted to make two bodies and assign the fluid zone to both, but the all turns real messy with the zones that are created. My question is, this udf will help me with my problem? wich are the steps for writing my udf. IŽll really appreciated your help =D


All times are GMT -4. The time now is 22:38.