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/)
-   -   How to get the surface area between two phases in VOF model (http://www.cfd-online.com/Forums/fluent-udf/104545-how-get-surface-area-between-two-phases-vof-model.html)

Cloud July 12, 2012 00:19

How to get the surface area between two phases in VOF model
 
Do anyone know if there has a macro to get the surface area between two phases in VOF model. I used Geo-Reconstrust Discretization for VOF.
I found C_VOF_S(c,t) and Get_Surface_Distance(cell_t c, Thread *t) in "sg_vof.h". I wanted to use them to found what did they return. But always fluent return errors:

Error:
FLUENT received fatal signal (ACCESS_VIOLATION)
1. Note exact events leading to error.
2. Save case/data under new name.
3. Exit program and restart to continue.
4. Report error to your distributor.

I tried mixture thread and one phase thread for t in C_VOF_S(c,t) and Get_Surface_Distance(cell_t c, Thread *t),but the errors still exist.

LyngHoo September 10, 2012 03:34

Hi, Cloud,
Have you solve you problem? I need to calculate the interface area in VOF model, and I'm wondering how to implement this. If you've solve this problem, plz help.
Thank you !

Blackhawks84 February 5, 2013 16:16

any luck?
 
Hi,

I just posted a similar question and I am wondering if you guys have found out how to obtain the area of the interface using an UDF?

Bradley

vig February 17, 2013 20:27

Interfacial area could be calculated by the following:

Magnitude of Gradient(Alpha) * Volume

Hope it helps.

Cloud January 10, 2014 03:41

Quote:

Originally Posted by vig (Post 408353)
Interfacial area could be calculated by the following:

Magnitude of Gradient(Alpha) * Volume

Hope it helps.

Thanks! It's helpful. Another question: Which literature can I find this equation ?
Does the fluent help has this equation?

classic1573 August 8, 2014 23:53

Quote:

Originally Posted by Cloud (Post 469401)
Thanks! It's helpful. Another question: Which literature can I find this equation ?
Does the fluent help has this equation?


Hi,
I also confused with such a difficult question when i want to simulate the gas-liquid flow in a falling film reactor. how to get the the interface area in a cell using UDF micros? there were an equation in "help" to calculate the area density, area =2.0*[alpha]*the gradient of [alpha]. But this equation may be a wrong one. Besides of this, how to get the gradient of [alpha]? when you use the macro C_VOF_G, there will be notes: access violate.

Are you from China? Maybe we can discuss this problem in Chinese.my e-mail:classic1573@163.com:)

6863523 August 21, 2014 21:31

Hi vig,
I wonder if the equation is also applied to the wick-vapor interface?
Regards,
Bill

mehdi kamyabi April 16, 2016 07:52

Finding interface area
 
Dear All
Hello
Finding the premier of the interface (in 2-D cases) or surface of interface (in 3-D simulations) is my concern also. I didn't found how I can use Ansys for calculating these parameters. using the equation Area = Magnitude of Gradient(Alpha) * Volume is not straightforward because in addition to non- constant valued of Gradient(Alpha) in all domain, finding its amount has been not predicted in Fluent. So now my question is how I can find the solution for this matter.
Thanks

JS_P&WC October 17, 2016 15:29

UDF for surface between 2 phases
 
Here are 2 different ways of obtaining the area_density between 2 phases :
2.0 * magnitude(gradient(alpha)) * alpha
magnitude(gradient(alpha)) * Cell_Volume
I don't know which one is appropriate, but those 2 were mentioned across Fluent's help guide and within the previous posts :

/* ######################################
Steps to take to make it work
1. Read in the converged case and data
2. Link the udf (Define->User Defined->Functions->Compiled)
3. Hook adjust funtion (Define->User Defined->Function Hooks->Adjust Function)
4. Define UDM (Define->User Defined->Memory 3)
5. Define UDS (Define->User Defined->Scalars 2)
6. Turn off all equations (Solve->Controls->Solution)
7. Do one iterations
8. Execute store_gradient (Define->User Defined->Execute On Demand)
9. Execute store_area_density_1 (Define->User Defined->Execute On Demand)
10.Execute store_area_density_2 (Define->User Defined->Execute On Demand)
######################################*/
 
# include "udf.h"
# define domain_ID 2
 
DEFINE_ADJUST(adjust_gradient, domain)
{
Thread *t;
cell_t c;
face_t f;
 
domain = Get_Domain(domain_ID);
 
/* Fill UDS with the variable. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{
/* Obtains VOF at cell center and saves it as scalar */
C_UDSI(c,t,0) = C_VOF(c,t);
/* Obtains Cell Volume and saves it as scalar */
C_UDSI(c,t,1) = C_VOLUME(c,t);
}
end_c_loop (c,t)
}
 
thread_loop_f (t,domain)
{
if (THREAD_STORAGE(t,SV_UDS_I(0))!=NULL)
begin_f_loop (f,t)
{
F_UDSI(f,t,0) = F_VOF(f,t);
}
end_f_loop (f,t)
}
 
}
 
DEFINE_ON_DEMAND(store_gradient)
{
Domain *domain;
cell_t c;
Thread *t;
 
domain=Get_Domain(1);
 
/* Fill the UDM with magnitude of gradient. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{
C_UDMI(c,t,0) = NV_MAG(C_UDSI_G(c,t,0));
}
end_c_loop (c,t)
}
}
 
DEFINE_ON_DEMAND(store_area_density_1)
{
Domain *domain;
cell_t c;
Thread *t;
 
domain=Get_Domain(1);
 
/* Fill the UDM with are_adensity. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{

C_UDMI(c,t,1) = 2.0 * NV_MAG(C_UDSI_G(c,t,0)) * C_UDSI(c,t,0) ;
}
end_c_loop (c,t)
}
}
 
DEFINE_ON_DEMAND(store_area_density_2)
{
Domain *domain;
cell_t c;
Thread *t;
 
domain=Get_Domain(1);
 
/* Fill the UDM with are_adensity. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{

C_UDMI(c,t,2) = NV_MAG(C_UDSI_G(c,t,0)) * C_UDSI(c,t,1) ;
}
end_c_loop (c,t)
}
}

- JS

Cloud October 19, 2016 20:53

Quote:

Originally Posted by JS_P&WC (Post 621824)
Here are 2 different ways of obtaining the area_density between 2 phases :
2.0 * magnitude(gradient(alpha)) * alpha
magnitude(gradient(alpha)) * Cell_Volume
I don't know which one is appropriate, but those 2 were mentioned across Fluent's help guide and within the previous posts :

/* ######################################
Steps to take to make it work
1. Read in the converged case and data
2. Link the udf (Define->User Defined->Functions->Compiled)
3. Hook adjust funtion (Define->User Defined->Function Hooks->Adjust Function)
4. Define UDM (Define->User Defined->Memory 3)
5. Define UDS (Define->User Defined->Scalars 2)
6. Turn off all equations (Solve->Controls->Solution)
7. Do one iterations
8. Execute store_gradient (Define->User Defined->Execute On Demand)
9. Execute store_area_density_1 (Define->User Defined->Execute On Demand)
10.Execute store_area_density_2 (Define->User Defined->Execute On Demand)
######################################*/
 
# include "udf.h"
# define domain_ID 2
 
DEFINE_ADJUST(adjust_gradient, domain)
{
Thread *t;
cell_t c;
face_t f;
 
domain = Get_Domain(domain_ID);
 
/* Fill UDS with the variable. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{
/* Obtains VOF at cell center and saves it as scalar */
C_UDSI(c,t,0) = C_VOF(c,t);
/* Obtains Cell Volume and saves it as scalar */
C_UDSI(c,t,1) = C_VOLUME(c,t);
}
end_c_loop (c,t)
}
 
thread_loop_f (t,domain)
{
if (THREAD_STORAGE(t,SV_UDS_I(0))!=NULL)
begin_f_loop (f,t)
{
F_UDSI(f,t,0) = F_VOF(f,t);
}
end_f_loop (f,t)
}
 
}
 
DEFINE_ON_DEMAND(store_gradient)
{
Domain *domain;
cell_t c;
Thread *t;
 
domain=Get_Domain(1);
 
/* Fill the UDM with magnitude of gradient. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{
C_UDMI(c,t,0) = NV_MAG(C_UDSI_G(c,t,0));
}
end_c_loop (c,t)
}
}
 
DEFINE_ON_DEMAND(store_area_density_1)
{
Domain *domain;
cell_t c;
Thread *t;
 
domain=Get_Domain(1);
 
/* Fill the UDM with are_adensity. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{

C_UDMI(c,t,1) = 2.0 * NV_MAG(C_UDSI_G(c,t,0)) * C_UDSI(c,t,0) ;
}
end_c_loop (c,t)
}
}
 
DEFINE_ON_DEMAND(store_area_density_2)
{
Domain *domain;
cell_t c;
Thread *t;
 
domain=Get_Domain(1);
 
/* Fill the UDM with are_adensity. */
thread_loop_c (t,domain)
{
begin_c_loop (c,t)
{

C_UDMI(c,t,2) = NV_MAG(C_UDSI_G(c,t,0)) * C_UDSI(c,t,1) ;
}
end_c_loop (c,t)
}
}

- JS

Thanks a lot. I will work on this UDF.


All times are GMT -4. The time now is 11:27.