|
[Sponsors] |
Pinning the interface contact line - VOF model |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
January 5, 2021, 09:22 |
Pinning the interface contact line - VOF model
|
#1 |
New Member
N/A
Join Date: Jan 2021
Posts: 4
Rep Power: 5 |
Hi,
I am looking for the practical way to pin the interface contact line in Fluent for 3D geometry. On the theoretical side, a pinned contact line means that the outer edge of the liquid droplet, where it intersects the solid substrate, remains stationary (fixed position). The pinning is enforced by keeping the front velocity equal to zero. Fluid can move past the contact point only by rolling over it, not by moving the contact line along the surface. I want to use the pinning feature in two phase system (VOF model) for simulation of deformation pinned water droplet placed on a horizontal flat surface. The droplet deformation is caused by the flow of the oil phase. The oil flow is parallel to the surface. I have tried to prepare the udf implemented in boundary conditions (oil inlet) to introduce constant value of oil velocity and velocity value equal to 0 for cells placed on the two phase contact line (water, solid). In this problem, only one function can be used because of only one inlet stream. The water phase is initialized by other udf. Below you can find draft of udf iterating through domains (water and oil) and cells within the mesh searching for the contact area between water and solid phases (droplet base). Actually, I don’t know how to combine F_PROFILE macro with iteration loop through domains. I do not know which arguments regarding domain/subdomain should be passed in DEFINE_PROFILE macro. I am using ANSYS Fluent 2020R2 I would be grateful for any help. Best regards #include "udf.h" DEFINE_PROFILE(x_velocity, cell_thread, cell_index) { int phase_domain_index; cell_t cell; real xc[ND_ND]; //cells coordinates Domain *subdomain; sub_domain_loop(subdomain, phase_domain_index) { if (DOMAIN_ID(subdomain) == 3) //Water Domain ID = 3 thread_loop_c (cell_thread,subdomain) { begin_c_loop_all (cell,cell_thread) { C_CENTROID(xc,cell,cell_thread); //searching for the contact area between water and solid phases if ((xc[2] <= 0.00008) && (sqrt(ND_SUM(pow(xc[0],2.0),pow(xc[1],2.0),pow(0.0,2.0))) < 0.000062039)) F_PROFILE(cell, cell_thread, cell_index) = 0.0; else F_PROFILE(cell, cell_thread, cell_index) = 0.5; } end_c_loop_all (cell,cell_thread) } } } |
|
January 7, 2021, 04:07 |
|
#2 |
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 |
not sure about subdomain, but your code here looks correct
(DOMAIN_ID(subdomain) == 3) //Water Domain ID = 3 why do you have cell in the list of arguments for define_profile? DEFINE_PROFILE(x_velocity, cell_thread, cell_index) It means you are going to apply it to zone not to boundary! How are you going to hook this udf to your model? As far As I understand, define_profile is executed before each iteration (cause of common sense, boundary conditions must be applied/updated before iteration) On the other hand, you may use define_adjust macro, which is also executed before each iteration
__________________
best regards ****************************** press LIKE if this message was helpful |
|
January 7, 2021, 09:46 |
|
#3 | |
New Member
N/A
Join Date: Jan 2021
Posts: 4
Rep Power: 5 |
Quote:
Thank you for reply My idea was to apply define_profile function to inlet boundary condition without hooking, just only after compilation I want to apply udf in Velocity Magnitude instead of constant value in Velocity inlet window. Unfortunately, I do not know how to indicate particular cells/faces of second phase (water) to the Fluent and give them x-velocity equal to 0 as a boundary condition. The problem is that this boundary is located inside of fluid zone. Therefore, I have tried with definition of water domain. Maybe it is not suitable way of solving my problem and I should use different macro (as you suggested) and hook the udf in Adjust window. Best regards |
||
January 8, 2021, 01:24 |
|
#4 | |
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 |
Quote:
2. " to apply define_profile function to inlet" seems different from what you are showing on picture. I can see droplet inside oil zone, so inlet is not involved 3. your code has cell inside arguments list of define_profile macro (so it means you are going to apply it to zone not to boundary(inlet)) 4. Use your code, go to oil zone -> fixed values-> x-velocity -> change const to your udf Frankly speaking, im not sure if your definition of changing velocity for secondary phase is correct, but for me it seems so
__________________
best regards ****************************** press LIKE if this message was helpful |
||
January 15, 2021, 08:49 |
|
#5 | |
New Member
N/A
Join Date: Jan 2021
Posts: 4
Rep Power: 5 |
Quote:
I have modified my code and now looks as follow. #include "udf.h" #define FLUID_ID 6 DEFINE_PROFILE(x_velocity_1,t,i) { face_t f; float xc[ND_ND]; // coordinates float x; float y; float z; begin_f_loop(f,t) { F_CENTROID(xc,f,t); x = xc[0]; y = xc[1]; z = xc[2]; if (x > -0.001 && x < 0.002) { if (y > -0.0015 && y < 0.0015) { if (z > 0.0008 && z < 0.0012) //3D area with given by F_PROFILE velocity { F_PROFILE(f,t,i) = 0.05; } } } } end_f_loop(f,t) } I hooked the udf in x-velocity coordinate but I met other problem, the code works only when velocity given in udf is higher than 0 (for example F_PROFILE(f,t,i) = 0.05) and Inlet velocity given in boundary condition is equal to 0 (look at Fig_2). When Inlet velocity is higher than 0, the Fluent shows different errors such as: Floating point exception; Global Courant Number is higher than 250; The velocity field is probably diverging. Then, on the contour figure it looks like the inlet velocity is blocked (look at Fig_3). The important thing is that errors do not occure when udf is hooked in y-velocity coordinate and Inlet velocity is given as previously in x-coordinate. I see the problem with convergence x-velocity field in my system. How can I figure out it? Best regards |
||
January 18, 2021, 01:17 |
|
#6 |
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 |
first of all, I'm not sure if inlet could be with negative velocity value (which means it's not inlet anymore)
If you want to define velocity in domain (not on boundary), you should use loop over cells inside DEFINE_PROFILE macro, not loop over faces Code:
was begin_f_loop(f,t) to be begin_c_loop(c,t) turn off "node values" option while making plotting contours so you will see the real values in cells
__________________
best regards ****************************** press LIKE if this message was helpful |
|
June 19, 2022, 13:51 |
The way to pin the interface contact line.
|
#7 |
New Member
ChonghaoLi
Join Date: Jun 2022
Posts: 2
Rep Power: 0 |
Hi,
I am interested in this part: I am looking for the practical way to pin the interface contact line in Fluent for 3D geometry. On the theoretical side, a pinned contact line means that the outer edge of the liquid droplet, where it intersects the solid substrate, remains stationary (fixed position). The pinning is enforced by keeping the front velocity equal to zero. Fluid can move past the contact point only by rolling over it, not by moving the contact line along the surface. Could you tell me how you pinned the interface contact line finally? I would be grateful for your help. Best regards |
|
June 21, 2022, 02:07 |
|
#8 |
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 |
I have no experience in this kind of simulations, but in fluent there should be some settings to control it
it could be called something like "contact angle" my feeling is it should be somewhere with "surface tension" settings
__________________
best regards ****************************** press LIKE if this message was helpful |
|
June 21, 2022, 12:12 |
|
#9 | |
New Member
ChonghaoLi
Join Date: Jun 2022
Posts: 2
Rep Power: 0 |
Quote:
Contact angle can indeed be controlled at boundary conditions(wall adhesion) in FLUENT . However,I want to control contact line(or point) instead of contact angle.Similarly,you also want to control contact line in your case.So I would like to ask for advice how deal with it. I have tried to use the udf to control volume fraction of the face.But my udf has no impact.Maybe you could give me some advice. #include "udf.h" DEFINE_ADJUST(adjust_vof, d) { Thread*t; face_t f; real xd[ND_ND]; thread_loop_f(t, d) { begin_f_loop(f, t) { if (xd[1] == 1.5&&xd[0] <= 0.245) F_VOF(f, t) = 1; if (xd[1] == 1.5&&(xd[0] > 0.245&&xd[0] < 0.255)) F_VOF(f, t) = 25.5 - 100*xd[0]; if (xd[1] == 1.5&&xd[0] >= 0.255) F_VOF(f, t) = 0; if (xd[1] == 0.5&&xd[0] <= 0.245) F_VOF(f, t) = 1; if (xd[1] == 0.5&&(xd[0] > 0.245&&xd[0] < 0.255)) F_VOF(f, t) = 25.5 - 100*xd[0]; if (xd[1] == 0.5&&xd[0] >= 0.255) F_VOF(f, t) = 0; } end_f_loop(f, t) } } My udf can't pin the interface contact point(line in 3D).I need some advice. I would be grateful for any help. Best regards |
||
Tags |
interface detection, udf f_profile, water droplet in oil flow |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[Other] mesh airfoil NACA0012 | anand_30 | OpenFOAM Meshing & Mesh Conversion | 13 | March 7, 2022 18:22 |
My radial inflow turbine | Abo Anas | CFX | 27 | May 11, 2018 02:44 |
Question about adaptive timestepping | Guille1811 | CFX | 25 | November 12, 2017 18:38 |
[blockMesh] error message with modeling a cube with a hold at the center | hsingtzu | OpenFOAM Meshing & Mesh Conversion | 2 | March 14, 2012 10:56 |
OpenFOAM15 installables are incomplete problem with paraFoam | tryingof | OpenFOAM Bugs | 17 | December 7, 2008 05:41 |