CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > ANSYS > FLUENT > Fluent UDF and Scheme Programming

Having trouble adapting serial UDF to work in parallel

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   January 3, 2013, 13:24
Unhappy Having trouble adapting serial UDF to work in parallel
  #1
New Member
 
muyuntao
Join Date: Dec 2012
Posts: 1
Rep Power: 0
muyuntao is on a distinguished road
Hi,everyone!

I'm in Asia,a student .now facing a big issue trying to make a serial UDF parallel.
The UDF works perfectly in serial but I need now to adapt it for parallel computation.
The main problem is that : I don't know how to add "#if !RP_NODE
,host_to_node_int_2(type_diff,therm_diff" and where to add it.
I have stoped for ten days for such problem. could anyone help me? Thank you!!!
my E-mail Address 594ntl@sina.com

#include "udf.h"
#include "dynamesh_tools.h"
#define nozzle_tid 6 /* Zone ID of nozzle exit */
#define missile_tid 5 /* Zone ID of missile wall */
#define moving_fluid_id 3 /* Zone ID of fluid surrounding the missile */
#define t_liftoff 0.000001 /* Time at which to allow lift-off (sec) */
#define g_c 9.81 /* Gravity acceleration */
#define initial_mass 2.0 /* Initial mass of the rocket (kg) */
#define burn_rate 0.0 /* Fuel burn rate (kg/sec) */
#define pi 4.0*atan(1.0)
float U_sum; /* Sum of inlet U velocity */
float V_sum; /* Sum of inlet V velocity */
float W_sum; /* Sum of inlet W velocity */
float A_sum; /* Sum of facet areas */
float P_sum; /* Sum of face pressure */
float P_i; /* Pressure on face i */
float A_i; /* Area of face i */
float U_i; /* U velocity on face i */
float V_i; /* V velocity on face i */
float W_i; /* W velocity on face i */
float A[3]; /* Area vector of face i */
float VA_sum; /* Sum of velocity times area */
float VEL_i; /* Velocity magnitude on face i */
float V_avg; /* Average velocity */
float V_e; /* Nozzle exit velocity relative to missile */
float Pthrust; /* Thrust due to pressure */
float Mthrust; /* Thrust due to momentum */
float MDOT; /* Mass flow rate from the missile */
float Vmiss[3]; /* Missile velocity vector */
/*float Umiss;*/ /* Missile x velocity */
/*float Vmiss;*/ /* Missile y or r velocity */
/*float Wmiss;*/ /* Missile z velocity (zero for 2-D) */

Domain *domain;
face_t f; /* Nozzle faces */
Thread *t; /* Nozzle thread */
Dynamic_Thread *tmiss; /* Missile wall thread */

DEFINE_SDOF_PROPERTIES(lmmm, prop, dt, time, dtime)
{

/* Define the mass and moments of inertia */
prop[SDOF_MASS] = initial_mass - (burn_rate * time);
prop[SDOF_IXX] = 0.0;
prop[SDOF_IYY] = 0.0;
prop[SDOF_IZZ] = 0.0;
/* Define ejector moments */
prop[SDOF_LOAD_M_X] = 0.;
prop[SDOF_LOAD_M_Y] = 0.;
prop[SDOF_LOAD_M_Z] = 0.;
/* Calculate rocket thrust and assign to X ejector force.*/
U_sum = 0.0;
V_sum = 0.0;
W_sum = 0.0;
A_sum = 0.0;
P_sum = 0.0;
Pthrust = 0.0;
A_sum = 0.0;
VA_sum = 0.0;
Pthrust = 0.0;
Mthrust = 0.0;
/* Lookup thread values */
domain = Get_Domain(1);
t = Lookup_Thread(domain, nozzle_tid);
tmiss = THREAD_DT(Lookup_Thread(domain, missile_tid)); /* Missile wall */

/* Visit each face on the inlet and add up Vx, Vr, Area, and Pressure */
begin_f_loop (f, t)
{
/* Retrieve the area vector of the current face */
F_AREA(A, f, t);
/* Message("\n check 1");*/
/* Calculate the area of current face */
A_i = NV_MAG(A);
/*Message("\n check 2");*/
/* Retrieve the pressure on the current face */
P_i = F_P(f,t);
/*Message("\n check 3");*/
U_i = F_U(f,t); /* U Velocity on the current face */
V_i = F_V(f,t); /* V velocity on the current face */
#if RP_2D
W_i = 0.0; /* W Velocity (2D) */
#else
W_i = F_W(f, t); /* W Velocity (3D) */
silo.c
#endif
VEL_i = sqrt(U_i*U_i+V_i*V_i+W_i*W_i); /* Velocity magnitude */

A_sum += A_i; /* Increment the face area */
VA_sum += VEL_i * A_i; /* Increment the VxA */
Pthrust += P_i * A_i; /* Increment the pressure force */
}
end_f_loop (f, t)
#if RP_2D
if(rp_axi)
{A_sum *= 2*pi;
VA_sum *= 2*pi;
Pthrust *= 2*pi;}
#endif
V_avg = VA_sum / A_sum;

/* OBTAIN THE MASS FLOW RATE ACROSS THE INLET */
MDOT = 0.0;
/* Obtain the mass flow rate if inlet is mass flow type */
if (THREAD_VAR(t).mfi.flow_spec == MASS_FLOW_TYPE)
{
MDOT = THREAD_VAR(t).mfi.mass_flow;
}
else
{
Message("\n NOW INSIDE UNTESTED PORTION OF THE UDF");
}

/* OBTAIN THE CURRENT MISSILE VELOCITY */
if(time < t_liftoff)
{DT_VEL_CG(tmiss)[0] = 0.0;}

#if RP_2D
if (rp_axi)
{
}
else
{
}
#endif
#if RP_3D
#endif


V_e = V_avg - Vmiss[0];
Mthrust = V_e * MDOT;
/* Set calculated thrust as a body force (ejector force) */
prop[SDOF_LOAD_F_X] = Pthrust + Mthrust;
prop[SDOF_LOAD_F_Y] = 0.0;
prop[SDOF_LOAD_F_Z] = 0.0;
/* Dummy Override */
#if RP_2D
prop[SDOF_LOAD_F_Z] = 0.;
if (rp_axi)
prop[SDOF_LOAD_F_Y] = 0.;
#endif

}
silo.c
muyuntao is offline   Reply With Quote

Old   November 10, 2015, 14:42
Default
  #2
New Member
 
adas
Join Date: Aug 2015
Posts: 2
Rep Power: 0
drnaferio is on a distinguished road
Have you solved problem related to parallel processing ?
drnaferio is offline   Reply With Quote

Reply

Tags
parallel error, udf


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Simple Serial to Parallel UDF conversion Fluent amir00251 Fluent UDF and Scheme Programming 2 September 1, 2015 05:32
RP_Set_Integer does not work in parallel 86lolo Fluent UDF and Scheme Programming 2 July 3, 2014 12:37
problem to make a UDF parallel pilou Fluent UDF and Scheme Programming 0 March 9, 2011 07:35
parallel and serial ehooi FLUENT 1 January 12, 2011 09:06
Parallel INIT UDF trouble mil3st3g Fluent UDF and Scheme Programming 2 January 6, 2011 15:07


All times are GMT -4. The time now is 10:52.