- #1
michimichi88
- 1
- 0
Hi everyone! I'm trying to simulate the encapsulation of pancreatic islets in a very simple chamber. It is made of one cylinder with diameter of 10mm, a coaxial capillary of diameter 1mm. In the cylinder there is a oilic phase and in the capillary flow polymeric material and islets. when islet plus polymer exit from capillary,they meet oil in a convergent situated at the base of the cylinder. This convergent is connected to another capillary, where flow encapsulated islets.
In the small capillary flow polymeric material and islet(respectively 87% and 13% of volume fraction), in the large capillary flows oil(100%). At the outlet of the small capillary, the islet should come encapsulate, thanks to the action of the instability of Rayleigh-Plateau and also to the action of the oil on the polymeric material. In other words these islets are inside a coating of polymeric material (named conformal). These two flows (oil and polymeric material plus islets) are coaxial flows.
I am trying to write a udf that permits me to calculate the coating thickness.
My idea is to create planes in the convergent and evaluate on them the coating thickness by a volume fraction study. In other words, on this plane my udf must calculate the volume fraction of islets and water, must remove the cells that contains a vof<0.0505, and least must evaluate the diameter of these two phases.
I think it's possible to do, but i have several problems.
First of all, I don't know if it's possible declare two or more phases when I use, for example, C_VOF(c,t). "t" is my thread: is it possible to declare two phase, using for example pt[1,2]?
Another problem is the function C_PHASE_DIAMETER(c,t). In various forums I found it use in this way "C_PHASE_DIAMETER(f,t). But, why put "f" and no "c"?
My udf is this:
/*C_PHASE_DIAMETER*/
#include "udf.h"
#include "stdio.h"
#include "stdlib.h"
DEFINE_EXECUTE_AT_END(diameter)
{
Domain *d=Get_Domain(1);
Thread **pt;
Thread *t;
cell_t c;
float diam_islet;
float diam_water_islet;
float radius_islet;
float radius_water;
float coating;
float vof_islet;
int ID[3]={3,10,13};
int i;
diam_islet=0.;
radius_islet=0.;
i=0;
mp_thread_loop_c(t,d,pt)
{
begin_c_loop(c,t)
{
for(i=0;i<=2;i++)
{
t=Lookup_Thread(d,ID);
vof_islet = C_VOF(c,pt[2]);
vof_water = C_VOF(c,pt[1]);
printf("%f\n", vof_islet);
if (vof_islet>0.0505 && vof_islet<=1)
{
diam_islet=C_PHASE_DIAMETER(c,pt[2]);
printf ("islets diameter: %f\n",diam_islet);
}
}
if (0.0505<=vof_water<=1)
{
diam_water=C_PHASE_DIAMETER(c,pt[1]);
printf("water diameter: %f\n", diam_water);
}
radius_islet=diam_islet/2;
printf("radius_islet: %f\n", radius_islet);
radius_water=diam_water/2;
printf("radius_water: %f\n", radius_water);
coating=radius_water-radius_islet;
printf("coating thickness is: %f\n", coating);
}
end_c_loop(c,t)
}
}}
I have an alternative idea: I can create a udf that gives back coordinates of cells in this way: I want to get x max and x min, y max and y min and z max and z min of the islets and of the coating based on the volume fraction (based on passage between different phases). In other words, I want to obtain coordinates max and min about the interface of my phases. Is it possible?
Another question is the following: I'm using an Euler Euler model, but the volume fraction of the islets is approximatively 13%. Is this method suitable for my problem, or DPM is more appropriate?
Thanks a lot!
Michela
In the small capillary flow polymeric material and islet(respectively 87% and 13% of volume fraction), in the large capillary flows oil(100%). At the outlet of the small capillary, the islet should come encapsulate, thanks to the action of the instability of Rayleigh-Plateau and also to the action of the oil on the polymeric material. In other words these islets are inside a coating of polymeric material (named conformal). These two flows (oil and polymeric material plus islets) are coaxial flows.
I am trying to write a udf that permits me to calculate the coating thickness.
My idea is to create planes in the convergent and evaluate on them the coating thickness by a volume fraction study. In other words, on this plane my udf must calculate the volume fraction of islets and water, must remove the cells that contains a vof<0.0505, and least must evaluate the diameter of these two phases.
I think it's possible to do, but i have several problems.
First of all, I don't know if it's possible declare two or more phases when I use, for example, C_VOF(c,t). "t" is my thread: is it possible to declare two phase, using for example pt[1,2]?
Another problem is the function C_PHASE_DIAMETER(c,t). In various forums I found it use in this way "C_PHASE_DIAMETER(f,t). But, why put "f" and no "c"?
My udf is this:
/*C_PHASE_DIAMETER*/
#include "udf.h"
#include "stdio.h"
#include "stdlib.h"
DEFINE_EXECUTE_AT_END(diameter)
{
Domain *d=Get_Domain(1);
Thread **pt;
Thread *t;
cell_t c;
float diam_islet;
float diam_water_islet;
float radius_islet;
float radius_water;
float coating;
float vof_islet;
int ID[3]={3,10,13};
int i;
diam_islet=0.;
radius_islet=0.;
i=0;
mp_thread_loop_c(t,d,pt)
{
begin_c_loop(c,t)
{
for(i=0;i<=2;i++)
{
t=Lookup_Thread(d,ID);
vof_islet = C_VOF(c,pt[2]);
vof_water = C_VOF(c,pt[1]);
printf("%f\n", vof_islet);
if (vof_islet>0.0505 && vof_islet<=1)
{
diam_islet=C_PHASE_DIAMETER(c,pt[2]);
printf ("islets diameter: %f\n",diam_islet);
}
}
if (0.0505<=vof_water<=1)
{
diam_water=C_PHASE_DIAMETER(c,pt[1]);
printf("water diameter: %f\n", diam_water);
}
radius_islet=diam_islet/2;
printf("radius_islet: %f\n", radius_islet);
radius_water=diam_water/2;
printf("radius_water: %f\n", radius_water);
coating=radius_water-radius_islet;
printf("coating thickness is: %f\n", coating);
}
end_c_loop(c,t)
}
}}
I have an alternative idea: I can create a udf that gives back coordinates of cells in this way: I want to get x max and x min, y max and y min and z max and z min of the islets and of the coating based on the volume fraction (based on passage between different phases). In other words, I want to obtain coordinates max and min about the interface of my phases. Is it possible?
Another question is the following: I'm using an Euler Euler model, but the volume fraction of the islets is approximatively 13%. Is this method suitable for my problem, or DPM is more appropriate?
Thanks a lot!
Michela