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/)
-   -   How to get the surface area between two phases in VOF model (https://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 15: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 19:27

Interfacial area could be calculated by the following:

Magnitude of Gradient(Alpha) * Volume

Hope it helps.

Cloud January 10, 2014 02: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.

amachado January 26, 2017 08:03

vof gradient
 
I am using this code, it works and you don't need UDS.

Code:

#include "udf.h"
#define CON 1

DEFINE_ADJUST(store_gradient, domain)
{
Thread *t;
Thread **pt;
cell_t c;
int phase_domain_index = 0.;
Domain *pDomain = DOMAIN_SUB_DOMAIN(domain,phase_domain_index);
{
Alloc_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL);
Scalar_Reconstruction(pDomain, SV_VOF,-1,SV_VOF_RG,NULL);
Scalar_Derivatives(pDomain,SV_VOF,-1,SV_VOF_G,SV_VOF_RG,
Vof_Deriv_Accumulate);
}


mp_thread_loop_c (t,domain,pt)
if (FLUID_THREAD_P(t))
{
Thread *ppt = pt[phase_domain_index];

begin_c_loop (c,t)
{
C_UDMI(c,t,0) = C_VOF_G(c,ppt)[0];
}
end_c_loop (c,t)
}
Free_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL);
}


doruk March 6, 2018 04:19

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 :


I looked for everywhere for the VOF area density functions in Fluent User Guide but I couldnt find these equations. Can anyone guide me to find those pages ?

xiatt March 11, 2018 20:36

Quote:

Originally Posted by doruk (Post 683963)
I looked for everywhere for the VOF area density functions in Fluent User Guide but I couldnt find these equations. Can anyone guide me to find those pages ?

Hi,have your problem been solved? I need your help.

doruk March 12, 2018 02:57

I am sorry but i also couldnt fix my problem

xiatt March 12, 2018 03:30

Quote:

Originally Posted by doruk (Post 684768)
I am sorry but i also couldnt fix my problem

thank you. if you fix your problem someday, please tell me

ENGRTAHIR September 12, 2018 09:53

interface surface area
 
Quote:

Originally Posted by xiatt (Post 684777)
thank you. if you fix your problem someday, please tell me

Hi if you have fix the problem. Let me know also
I am also doing the same calculation

julio September 20, 2018 11:22

Why Fluent says that the periodic condition is not compatible with the VOF model ?
 
[QUOTE=LyngHoo;381000]Hi,
I realized a simulation of a free surface flow in the presence of periodic roughness with the VOF model. I remarked that when we impose the pressure gradient for the entire domain, the velocity of the air phase will be 100 x the velocity of the water phase.
Is it for this reason Fluent says that the periodic condition is not compatible with VOF?
To avoid this problem I used a UDF to impose this pressure gradient only in the water phase and I solved the problem.
Is the procedure I followed is logical?
How to contact Fluent for this problem?


All times are GMT -4. The time now is 12:47.