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/)
-   -   UDF compilation (https://www.cfd-online.com/Forums/fluent-udf/114855-udf-compilation.html)

vismayie March 19, 2013 00:45

UDF compilation
 
Hello,

I am trying to compile a UDF when i compile it ,
the following appears in console window,
(system "copy C:\Fluent.Inc\fluent6.3.26\src\makefile_nt.udf libudf\win64\2ddp\makefile")
1 file(s) copied.
(chdir "libudf")()
(chdir "win64\2ddp")()
wgs_4.c
c:\fluent.inc\fluent6.3.26\src\machine.h(114) : warning C4005: 'stdout' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(161) : see previous definition of 'stdout'
c:\fluent.inc\fluent6.3.26\src\machine.h(115) : warning C4005: 'stderr' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(162) : see previous definition of 'stderr'
c:\fluent.inc\fluent6.3.26\src\machine.h(116) : warning C4005: 'stdin' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(160) : see previous definition of 'stdin'
# Generating udf_names.c because of makefile wgs_4.obj
udf_names.c
c:\fluent.inc\fluent6.3.26\src\machine.h(114) : warning C4005: 'stdout' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(161) : see previous definition of 'stdout'
c:\fluent.inc\fluent6.3.26\src\machine.h(115) : warning C4005: 'stderr' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(162) : see previous definition of 'stderr'
c:\fluent.inc\fluent6.3.26\src\machine.h(116) : warning C4005: 'stdin' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(160) : see previous definition of 'stdin'
# Linking libudf.dll because of makefile user_nt.udf udf_names.obj wgs_4.obj
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.

I didnt understand what the problem is . Could someone please help me out ?

Another problem is that i loaded the UDF even when it sent this warning and then i carried out the simulations. When i carried out the simulations the outlet concentration is same as inlet, essentially the reaction wasnt happening. This is because when i asked it to calculate the weighted average of the the used defined memory at the wall, it shows zero.

The steps i followed are as follows,
1) created a 2D mesh in Gambit
2) write the UDF with.c extension
3) open fluent using SDK command prompt
4) defined the models for solver enabled species transport
5) compiled and loaded the UDF
6) define boundary conditions and operating conditions
7) initialize
8) iterate
9) checked the contours for species

the outlet and the inlet mole fractions are same :(

Someone please please help me out since this is my BTech project and only a weeks time is left :( :(

stuart23 March 19, 2013 02:42

This:
Quote:

c:\fluent.inc\fluent6.3.26\src\machine.h(114) : warning C4005: 'stdout' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(161) : see previous definition of 'stdout'
c:\fluent.inc\fluent6.3.26\src\machine.h(115) : warning C4005: 'stderr' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(162) : see previous definition of 'stderr'
c:\fluent.inc\fluent6.3.26\src\machine.h(116) : warning C4005: 'stdin' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(160) : see previous definition of 'stdin'
# Generating udf_names.c because of makefile wgs_4.obj
udf_names.c
c:\fluent.inc\fluent6.3.26\src\machine.h(114) : warning C4005: 'stdout' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(161) : see previous definition of 'stdout'
c:\fluent.inc\fluent6.3.26\src\machine.h(115) : warning C4005: 'stderr' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(162) : see previous definition of 'stderr'
c:\fluent.inc\fluent6.3.26\src\machine.h(116) : warning C4005: 'stdin' : macro redefinition
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Include\stdio.h(160) : see previous definition of 'stdin'
# Linking libudf.dll because of makefile user_nt.udf udf_names.obj wgs_4.obj
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
is fine. It is your compiler working normally.


You haven't given enough information to diagnose the rest of your problem. There must be a problem in your UDF or the way you are hooking it to the solver. Maybe dumb down the equation a bit (ie constant rate of reaction) and see if you get something happening, then try introducing more and more complexity at a time.

Stu

vasava March 19, 2013 06:58

Can you please show your UDF?

vismayie March 19, 2013 10:17

The following is my udf:

#include "udf.h"
#define R 8.314
#define p 101325
#define pi 3.14159


DEFINE_SR_RATE(my_rate,f,t,r,mw,yi,rr)
{
Thread *t0 = t -> t0;

cell_t c0=F_C0(f,t);


real co = yi[0]; /* MASS FRACTION AT THE WALL*/
real h2o = yi[1];
real co2 = yi[2];
real h2 = yi[3];
real n2 = yi[4];
real ar = yi[5];

real rho_w = 1.0, T_w = 300, sd=2.49045e-5 , Tr=100;
real xco = 1.0, xh2o = 1.0, xco2 = 1.0, xh2 = 1.0, xn2 = 1.0;

real pco, ph2o, pco2, ph2, pn2, theta=1.0;
real k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13,k14,k15 ,k16,k17,k18,K1eq,K2eq,K3eq,K4eq,K5eq,K6eq,K7eq,K8 eq;
real rate;


T_w = F_T(f,t);
rho_w = C_R(c0,t0)*C_T(c0,t0)/T_w;

h2o *= rho_w/mw[1]; /*CONVERTING MASS FRACTIONS AT THE WALL TO MOLAR CONCENTRATIONS */
co2 *= rho_w/mw[2];
co *= rho_w/mw[0];
h2 *= rho_w/mw[3];
n2 *= rho_w/mw[4];
ar *= rho_w/mw[5];



xn2 = n2/(n2+h2+co2+co+h2o); /* MOLE FRACTIONS*/
xh2 = h2/(n2+h2+co2+co+h2o);
xco2 = co2/(n2+h2+co2+co+h2o);
xco = co/(n2+h2+co2+co+h2o);
xh2o = h2o/(n2+h2+co2+co+h2o);


pn2 = xn2*p; /*PARTIAL PRESSURES*/
ph2 = xh2*p;
ph2o = xh2o*p;
pco = xco*p;
pco2 = xco2*p;

Tr = (T_w/300);


k1 = (0.129/(R*T_w))*(sqrt((1000*R*T_w)/(2*pi*mw[3])))*pow(Tr,0.858);
k2 = (7.95*1e12*sd)*(pow(Tr,-0.001))*exp(((-21.78 + (2.56*Tr))*4185.8)/(R*T_w));
k3 = (9.36*1e12*sd)*(pow(Tr,-0.118))*exp(((-17.404 - (0.38*Tr))*4185.8)/(R*T_w));
k4 = (9.99*1e12*sd)*(pow(Tr,-1.049))*exp(((-13.836 + (0.92*Tr))*4185.8)/(R*T_w));
k5 = (0.108/(R*T_w))*(sqrt((1000*R*T_w)/(2*pi*mw[1])))*(pow(Tr,1.162));
k6 = (2.03*1e12*sd)*(pow(Tr,1.372))*exp(((-11.5225 + (5*T_w))*4185.8)/(R*T_w));
k7 = (1.0/(R*T_w))*(sqrt((1000*R*T_w)/(2*pi*mw[0])))*(pow(Tr,0.000));
k8 = (5.66*1e15*sd)*(pow(Tr,-0.5))*exp(((-28.6 + (4*T_w))*4185.8)/(R*T_w));
k9 = (0.195/(R*T_w))*(sqrt((1000*R*T_w)/(2*pi*mw[2])))*(pow(Tr,0.250));
k10 = (2.63*1e12*sd)*(pow(Tr,-0.250))*exp(((4.8- (0.004*T_w))*4185.8)/(R*T_w));
k11 = (8.03*1e08*sd)*(pow(Tr,-0.531))*exp(((-9.36 + (0.28*Tr))*4185.8)/(R*T_w));
k12 = (1.25*1e09*sd)*(pow(Tr,0.531))*exp(((-10.021 + (0.38*Tr))*4185.8)/(R*T_w));
k13 = (8.43*1e08*sd)*(pow(Tr,0.024))*exp(((-9.01 - (0.00782*Tr))*4185.8)/(R*T_w));
k14 = (1.19*1e09*sd)*(pow(Tr,-0.024))*exp(((-10.46 + (0.67*Tr))*4185.8)/(R*T_w));
k15 = (1.06*1e11*sd)*(pow(Tr,0.549))*exp(((-1.1 + (0.036*Tr))*4185.8)/(R*T_w));
k16 = (9.45*1e10*sd)*(pow(Tr,-0.549))*exp(((-2.22 + (0.62*Tr))*4185.8)/(R*T_w));
k17 = (1.1*1e11*sd)*(pow(Tr,0.492))*exp(((-17.394 - (0.00136*Tr))*4185.8)/(R*T_w));
k18 = (9.07*1e10*sd)*(pow(Tr,-0.492))*exp(((-12.43 + (0.62*Tr))*4185.8)/(R*T_w));


K1eq = k1/k2;
K2eq = k3/k4;
K3eq = k5/k6;
K4eq = k7/k8;
K5eq = k10/k9;
K6eq = k11/k12;
K7eq = k14/k13;
K8eq = k15/k16;


theta=1/(1+(K3eq*ph2o)+sqrt((ph2/K1eq))+(pco2/K5eq)+(K2eq*K3eq*ph2o*(sqrt((K1eq/ph2))))+(K4eq*pco2)+(((K5eq*K2eq*K3eq*ph2o*pco2)/K8eq)*(sqrt((ph2/K1eq)))));

rate = pow(theta,2)*(k17*K4eq*K3eq*pco*ph2o);


if (STREQ(r->name, "reaction-1"))
{
*rr = rate;
C_UDMI(c0,t0,0) = *rr;
}

}

Please let me know if you find any mistakes.
Thanking you,
V.Vismayie
Student
IIT Madras

vismayie March 19, 2013 11:24

hey hello Stuart,

So i believe my compiler is working properly and there are no issues with the compilation . When i run the simulation, the User defined memory returns a value of 0. This is my problem.
Please find the UDF in the previous reply i posted on this thread.

Thanking you,
V.Vismayie
Student

vasava March 20, 2013 02:54

I didnt get what you meant by 'User defined memory returns a value of 0'. Could you please elaborate??


All times are GMT -4. The time now is 20:50.