CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   FLUENT (https://www.cfd-online.com/Forums/fluent/)
-   -   Array problems (https://www.cfd-online.com/Forums/fluent/50528-array-problems.html)

Malachy February 10, 2009 11:43

Array problems
 
Colleagues,

I would be interesed in any suggestions on the following. I am using Fluent 12 beta release. Below is part of a udf to define a periodic boundary condition at the inlet. I've had this bc working in earlier versions of fluent. My problem concerns the initiaisation of a number arrays at the beginning of the routine.

The routine starts by intialising the arrays radexp, a0, a and b. The routine compiles, builds and loads ok using ms visual c++ 2008.

On intialising the flow field using the compute from 'inlet' the routine appears to read (from file) and write (to screen) the arrays radexp, a0, a and b correctly. However when I try to write a after reading b the elements of a become jumbled. This coding worked fine on versions of fluent prior to 6.4. Any help, suggestions greatly appreciated. I have tried reading and writing the arrays using pointers but I get the same result.


#include "udf.h"
#define M 128
#define N 13

DEFINE_PROFILE(inlet_velocity,thread,index)
{
FILE *fp;
int i, j;
float radexp[25], a0[13], a[128][13], b[128][13];
float x[ND_ND];
face_t f;
float xcoord, ycoord, zcoord, radcfd;

fp = fopen("PBFFT12.txt","r");

for (i=1; i<N; i++)
{
fscanf(fp, "%f", &radexp[i]);
radexp[i] = radexp[i] * 0.001;
}

for (i=1; i<N; i++)
{
printf("%12.8f ", radexp[i]);
}
printf("\n");

for (i=1; i<N; i++)
{
fscanf(fp, "%f", &a0[i]);
}

for (i=1; i<N; i++)
{
printf("%12.8f ", a0[i]);
}
printf("\n");

for (j=1; j<M; j++)
{
for (i=1; i<N; i++)
{
fscanf(fp, "%f", &a[j][i]);
}
}

for (j=1; j<M; j++)
{
printf("%4d ", j);
for (i=1; i<N; i++)
{
printf("%12.8f ", a[j][i]);
}
printf("\n");
}

for (j=1; j<M; j++)
{
for (i=1; i<N; i++)
{
fscanf(fp, "%f", &b[j][i]);
}
}

for (j=1; j<M; j++)
{
printf("%4d ", j);
for (i=1; i<N; i++)
{
printf("%12.8f ", b[j][i]);
}
printf("\n");
}

for (j=1; j<M; j++)
{
printf("%4d ", j);
for (i=1; i<N; i++)
{
printf("%12.8f ", a[j][i]);
}
printf("\n");
}

fclose(fp);

begin_f_loop(f,thread)
{
//NB. this is just to return a value, not the bc.
F_CENTROID(x,f,thread);
F_PROFILE(f,thread,index) = 0.02;
}
end_f_loop(f,thread)
}

Malachy February 10, 2009 12:43

Re: Array problems
 
Please note I'm having trouble putting in the less than symbol. All i loops are evaluated between 1 and N-1, and all j loops between 1 and M-1.

Yannian March 5, 2012 15:11

have you succed using array for the inlet boundary?
Yannian


All times are GMT -4. The time now is 09:38.