CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (http://www.cfd-online.com/Forums/fluent-udf/)
-   -   Car fire in an underground park - Simulate a temperature sensor (http://www.cfd-online.com/Forums/fluent-udf/73372-car-fire-underground-park-simulate-temperature-sensor.html)

psc3 March 5, 2010 19:11

Car fire in an underground park - Simulate a temperature sensor
 
Dear All,

I need to simulate a car fire in an underground park and I've got a problem.

I want to simulate a temperature sensor that starts a momentum source when the temperature reaches a specific value.

I think the best way to simulate it is to create a UDF that starts the momentum source when the temperature at the cell x is at a temperature T.

Something like, if C_T(cell,thread)==T we have momentum. Else no.

Is it possible for me to identify a certain cell in order to establish this condition?

If not, does anyone have an alternative for me?

Thanks in advance!!!

Pedro

gearboy March 8, 2010 03:47

Quote:

Originally Posted by pedroscosta (Post 248780)
Dear All,

I need to simulate a car fire in an underground park and I've got a problem.

I want to simulate a temperature sensor that starts a momentum source when the temperature reaches a specific value.

I think the best way to simulate it is to create a UDF that starts the momentum source when the temperature at the cell x is at a temperature T.

Something like, if C_T(cell,thread)==T we have momentum. Else no.

Is it possible for me to identify a certain cell in order to establish this condition?

If not, does anyone have an alternative for me?

Thanks in advance!!!

Pedro

Maybe you can use the coordinate to judge which the right cell is.
The simplest scheme is to use the cell whose distance to your specified location is the least. Of course, this is not a very concise scheme if your grid is not fine enough.

psc3 March 8, 2010 06:54

Quote:

Originally Posted by gearboy (Post 248922)
Maybe you can use the coordinate to judge which the right cell is.
The simplest scheme is to use the cell whose distance to your specified location is the least. Of course, this is not a very concise scheme if your grid is not fine enough.

Thanks for your suggestion!

I'll try it.

Pedro

gearboy March 12, 2010 00:38

Quote:

Originally Posted by pedroscosta (Post 248780)
Dear All,

I need to simulate a car fire in an underground park and I've got a problem.

I want to simulate a temperature sensor that starts a momentum source when the temperature reaches a specific value.

I think the best way to simulate it is to create a UDF that starts the momentum source when the temperature at the cell x is at a temperature T.

Something like, if C_T(cell,thread)==T we have momentum. Else no.

Is it possible for me to identify a certain cell in order to establish this condition?

If not, does anyone have an alternative for me?

Thanks in advance!!!

Pedro

Here is the example, Note: the location of the specified point must be in the computational domain, otherwise error will occur.

#include "udf.h"
DEFINE_ON_DEMAND(find_cell)
{
cell_t c;
Thread *t;
CX_Cell_Id cx_cell;
real NV_VEC(pt);
real c_centroid[ND_ND];
NV_D(pt, =, 0.5, 0.3, 0.2); //coordinate of your specified location,it must be in the domain coordinate range
CX_Start_ND_Point_Search();
cx_cell=*CX_Find_Cell_With_Point(pt);
CX_End_ND_Point_Search();
c=RP_CELL(&cx_cell); //the right cell number
t = RP_THREAD(&cx_cell); // the thread
C_CENTROID(c_centroid,c,t);
Message0("coordinate of the specified point: x=%g,y=%g,z=%g\n",pt[0],pt[1],pt[2]);
Message0("coordinate of the cell found: x=%g,y=%g,z=%g\n",c_centroid[0],c_centroid[1],c_centroid[2]);
}

psc3 March 12, 2010 15:48

Quote:

Originally Posted by gearboy (Post 249646)
Here is the example, Note: the location of the specified point must be in the computational domain, otherwise error will occur.

#include "udf.h"
DEFINE_ON_DEMAND(find_cell)
{
cell_t c;
Thread *t;
CX_Cell_Id cx_cell;
real NV_VEC(pt);
real c_centroid[ND_ND];
NV_D(pt, =, 0.5, 0.3, 0.2); //coordinate of your specified location,it must be in the domain coordinate range
CX_Start_ND_Point_Search();
cx_cell=*CX_Find_Cell_With_Point(pt);
CX_End_ND_Point_Search();
c=RP_CELL(&cx_cell); //the right cell number
t = RP_THREAD(&cx_cell); // the thread
C_CENTROID(c_centroid,c,t);
Message0("coordinate of the specified point: x=%g,y=%g,z=%g\n",pt[0],pt[1],pt[2]);
Message0("coordinate of the cell found: x=%g,y=%g,z=%g\n",c_centroid[0],c_centroid[1],c_centroid[2]);
}

1000 thanks, now I know how to use cx_find_cell_with_point! :)

psc3 May 15, 2010 08:34

just replace

real NV_VEC(pt); to float NV_VEC(pt);

Pedro

ganggang January 3, 2011 22:14

Quote:

Originally Posted by gearboy (Post 249646)
Here is the example, Note: the location of the specified point must be in the computational domain, otherwise error will occur.

#include "udf.h"
DEFINE_ON_DEMAND(find_cell)
{
cell_t c;
Thread *t;
CX_Cell_Id cx_cell;
real NV_VEC(pt);
real c_centroid[ND_ND];
NV_D(pt, =, 0.5, 0.3, 0.2); //coordinate of your specified location,it must be in the domain coordinate range
CX_Start_ND_Point_Search();
cx_cell=*CX_Find_Cell_With_Point(pt);
CX_End_ND_Point_Search();
c=RP_CELL(&cx_cell); //the right cell number
t = RP_THREAD(&cx_cell); // the thread
C_CENTROID(c_centroid,c,t);
Message0("coordinate of the specified point: x=%g,y=%g,z=%g\n",pt[0],pt[1],pt[2]);
Message0("coordinate of the cell found: x=%g,y=%g,z=%g\n",c_centroid[0],c_centroid[1],c_centroid[2]);
}


I have place the above program in UDF and replace with float NV_VEC(pt). But it always remind that there is an assignment error in cx_cell=*CX_Find_Cell_With_Point(pt); I don't konw why and beg your instructions.

Seppl March 12, 2012 10:48

Hello I get the following error:

Quote:

..\..\src\find.c(14) : error C2100: illegal indirection
..\..\src\find.c(14) : error C2440: '=' : cannot convert from 'int' to 'CX_Cell_Id'
I just copied the code above and line 14 is:

Quote:

cx_cell=*CX_Find_Cell_With_Point(pt);


Can anyone please say what the problem is?

Blackhawks84 August 8, 2012 16:54

Quote:

Originally Posted by Seppl (Post 348950)
Hello I get the following error:



I just copied the code above and line 14 is:



Can anyone please say what the problem is?

I have the same problem, does anyone know the solution???

upeksa June 9, 2014 06:16

I know this is an old post, but I have faced the same problem as Blackhawks84 and Seppl.

Can anybody help me?

Cheers


All times are GMT -4. The time now is 15:20.