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/)
-   -   Interfacial area UDF for 3 phase flow (https://www.cfd-online.com/Forums/fluent-udf/227695-interfacial-area-udf-3-phase-flow.html)

Anshs June 6, 2020 21:31

Interfacial area UDF for 3 phase flow
 
1 Attachment(s)
I'm trying to compute the interfacial area between 2 phases, given that there are 3 phases. I have tried a UDF here. The three phases are water, oil, air. Computing the area between air (phase 2) and water (phase 0) only.

Attachment 78219

I had constructed a code for 2 phase flows, but now I want to implement in 3 phases:

2 phase code:

Code:

#include "udf.h"

DEFINE_ADJUST(store_gradient, domain)

{

Thread *t;
Thread **pt;
cell_t c;


double A_inter3;


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];


C_UDMI(c,t,0) = NV_MAG(C_VOF_G(c,ppt)) ;

A_inter3 += C_UDMI(c, t, 0)*C_VOLUME(c, ppt) ;


Free_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL);

}

}


3 phase code: ( in code ppti = water , and pptj = air )


Code:

#include "udf.h"

DEFINE_ADJUST(store_gradient, domain)

{

Thread *t;
Thread **pt;
cell_t c;


double A_inter3;


int pdi = 0.;
int pdf = 2.;

Domain *pDomaini = DOMAIN_SUB_DOMAIN(domain,pdi);

{
Alloc_Storage_Vars(pDomaini,SV_VOF_RG,SV_VOF_G,SV_NULL);
Scalar_Reconstruction(pDomaini, SV_VOF,-1,SV_VOF_RG,NULL);
Scalar_Derivatives(pDomaini,SV_VOF,-1,SV_VOF_G,SV_VOF_RG,
Vof_Deriv_Accumulate);
}

Domain *pDomainj = DOMAIN_SUB_DOMAIN(domain,pdj);

{
Alloc_Storage_Vars(pDomainj,SV_VOF_RG,SV_VOF_G,SV_NULL);
Scalar_Reconstruction(pDomainj, SV_VOF,-1,SV_VOF_RG,NULL);
Scalar_Derivatives(pDomainj,SV_VOF,-1,SV_VOF_G,SV_VOF_RG,
Vof_Deriv_Accumulate);
}


mp_thread_loop_c (t,domain,pt)

Thread *ppti = pt[pdi];
Thread *pptj = pt[pdi];

if ( ( C_VOF(c,ppti)*C_VOF(c,pptj) > 0.21 ) && (C_VOF(c,ppti) + C_VOF(c,pptj) >0.95) )
{


C_UDMI(c,t,0) = NV_MAG(C_VOF_G(c,ppti)) ;

A_inter3 += C_UDMI(c, t, 0)*C_VOLUME(c, ppti) ;



Free_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL);

}

}


AlexanderZ June 9, 2020 00:51

any question?

in your code you do have
Code:

Thread *ppti = pt[pdi];
Thread *pptj = pt[pdi];


Anshs June 9, 2020 08:56

3 phase code not working
 
Quote:

Originally Posted by AlexanderZ (Post 773843)
any question?

in your code you do have
Code:

Thread *ppti = pt[pdi];
Thread *pptj = pt[pdi];


Yes, my 3 phase code is not working.

AlexanderZ June 10, 2020 00:08

are you going to describe your issues or you expect people here can guess them?

vinerm June 15, 2020 04:12

Interfacial Area
 
Are you getting all values as 0? If that is the case, then try plotting the UDM where you are saving gradients.

Anshs June 25, 2020 10:13

3 phase area
 
Quote:

Originally Posted by vinerm (Post 774430)
Are you getting all values as 0? If that is the case, then try plotting the UDM where you are saving gradients.


I hawe tried compiling this udf, and getting the following error: Can you please help me.



Error:

Code:

Copied D:\ladle final - Copy/D:\ladle final - Copy\area_ud.c to D:
ew_ladle\ladle_x_files\dp0\FFF-5\Fluent\libudf\src
udf_names.c and user_nt.udf files in 2ddp are upto date.
(system "copy "C:\PROGRA~1\ANSYSI~1\v180\fluent"\fluent18.0.0\src\udf\makefile_nt.udf "D:
ew_ladle\ladle_x_files\dp0\FFF-5\Fluent\libudf\win64\2ddp\makefile" ")
        1 file(s) copied.
(chdir "D:\new_ladle\ladle_x_files\dp0\FFF-5\Fluent\libudf")(chdir "win64\2ddp")# Linking libudf.dll because of user_nt.udf udf_names.obj area_ud.obj
Microsoft (R) Incremental Linker Version 14.00.24213.1
Copyright (C) Microsoft Corporation.  All rights reserved.

LINK : fatal error LNK1104: cannot open file 'libudf.dll'

Done.


UDF:

Code:

#include "udf.h"

DEFINE_ADJUST(store_gradient, domain)

{

Thread *t;
Thread **pt;
cell_t c;


double A_inter3;


int pdi = 0.;
int pdf = 2.;

Domain *pDomaini = DOMAIN_SUB_DOMAIN(domain,pdi);

{
Alloc_Storage_Vars(pDomaini,SV_VOF_RG,SV_VOF_G,SV_NULL);
Scalar_Reconstruction(pDomaini, SV_VOF,-1,SV_VOF_RG,NULL);
Scalar_Derivatives(pDomaini,SV_VOF,-1,SV_VOF_G,SV_VOF_RG,
Vof_Deriv_Accumulate);
}

Domain *pDomainf = DOMAIN_SUB_DOMAIN(domain,pdf);

{
Alloc_Storage_Vars(pDomainf,SV_VOF_RG,SV_VOF_G,SV_NULL);
Scalar_Reconstruction(pDomainf, SV_VOF,-1,SV_VOF_RG,NULL);
Scalar_Derivatives(pDomainf,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 *ppti = pt[0];
Thread *pptf = pt[2];

if ( ( C_VOF(c,ppti)*C_VOF(c,pptf) > 0.21 ) && (C_VOF(c,ppti) + C_VOF(c,pptf) >0.95) )
{


C_UDMI(c,t,0) = NV_MAG(C_VOF_G(c,ppti)) ;

A_inter3 += C_UDMI(c, t, 0)*C_VOLUME(c, ppti) ;

}

}

Message("\n : Area Density= %f\n", C_UDMI(c, t, 0));

Free_Storage_Vars(pDomaini,SV_VOF_RG,SV_VOF_G,SV_NULL);

Free_Storage_Vars(pDomainf,SV_VOF_RG,SV_VOF_G,SV_NULL);


}

 


On 2020-06-25 18:46, anshs wrote:

#include "udf.h"

DEFINE_ADJUST(store_gradient, domain)

{

Thread *t;
Thread **pt;
cell_t c;


double A_inter3;


int pdi = 0.;
int pdf = 2.;

Domain *pDomaini = DOMAIN_SUB_DOMAIN(domain,pdi);

{
Alloc_Storage_Vars(pDomaini,SV_VOF_RG,SV_VOF_G,SV_NULL);
Scalar_Reconstruction(pDomaini, SV_VOF,-1,SV_VOF_RG,NULL);
Scalar_Derivatives(pDomaini,SV_VOF,-1,SV_VOF_G,SV_VOF_RG,
Vof_Deriv_Accumulate);
}

Domain *pDomainj = DOMAIN_SUB_DOMAIN(domain,pdj);

{
Alloc_Storage_Vars(pDomainj,SV_VOF_RG,SV_VOF_G,SV_NULL);
Scalar_Reconstruction(pDomainj, SV_VOF,-1,SV_VOF_RG,NULL);
Scalar_Derivatives(pDomainj,SV_VOF,-1,SV_VOF_G,SV_VOF_RG,
Vof_Deriv_Accumulate);
}


mp_thread_loop_c (t,domain,pt)

Thread *ppti = pt[pdi];
Thread *pptj = pt[pdi];

if ( ( C_VOF(c,ppti)*C_VOF(c,pptj) > 0.21 ) && (C_VOF(c,ppti) + C_VOF(c,pptj) >0.95) )
{


C_UDMI(c,t,0) = NV_MAG(C_VOF_G(c,ppti)) ;

A_inter3 += C_UDMI(c, t, 0)*C_VOLUME(c, ppti) ;



Free_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL);

}

}



All times are GMT -4. The time now is 06:58.