<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" id="owaParaStyle"></style>
</head>
<body fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;"><font face="Helvetica" size="3">Hi there,</font><span style="font-size: 13.3333px;"></span>
<div style="font-size: 13.3333px;"><font face="Helvetica" size="3"><br>
</font></div>
<div style="font-size: 13.3333px;"><font face="Helvetica" size="3">I've had some great advice on here previously, however it isn't supplying the correct results.</font></div>
<div style="font-size: 13.3333px;"><font face="Helvetica" size="3"><br>
</font></div>
<div style="font-size: 13.3333px;"><font face="Helvetica" size="3">I've spoken to my lecturer and have done some digging myself, and the reason i believe that the code (attached below) isn't providing a decent output to use in Paraview is that it's missing
 spatial positioning. I know the equations to do so, but i'm absolutely stuck on where to include them in the code: <span style="background-color: rgb(255, 255, 255);"><span style="color: rgb(36, 39, 41);">to find the position of </span><strong style="margin: 0px; padding: 0px; border: 0px; line-height: inherit; vertical-align: baseline; color: rgb(36, 39, 41);">x
 is: i * dx / xMax</strong><span style="color: rgb(36, 39, 41);">. where i is the index of the current data sample and xMax is 10. dx is the unit position between the data samples, so to find this it will be </span><strong style="margin: 0px; padding: 0px; border: 0px; line-height: inherit; vertical-align: baseline; color: rgb(36, 39, 41);">number
 of data samples along x / xMax</strong><span style="color: rgb(36, 39, 41);">.V The same applies for y. But just to reiterate, i have not the slightest idea on where or how to implement this in my current set up.</span></span></font></div>
<div style="font-size: 13.3333px;"><font face="Helvetica" size="3"><span style="background-color: rgb(255, 255, 255);"><span style="color: rgb(36, 39, 41);"><br>
</span></span></font></div>
<div style="font-size: 13.3333px;"><font face="Helvetica" size="3"><span style="background-color: rgb(255, 255, 255);"><span style="color: rgb(36, 39, 41);">Secondly, when using the output provided by the code, if to loo, it looks as if all of the z slices
 are on top of one another. (To note, when compiling the code in commandline, i use 64 64 64 1). Correct me if i'm wrong, but I believe that the spatial positioning will rectify, or it could be the row id that Paraview generates. (Side note, i'm using dot to
 points to just to get an idea of the datas layout)</span></span></font></div>
<div style="font-size: 13.3333px;"><font face="Helvetica" size="3"><span style="background-color: rgb(255, 255, 255);"><span style="color: rgb(36, 39, 41);"><br>
</span></span></font></div>
<div style="font-size: 13.3333px;"><font face="Helvetica" size="3"><span style="background-color: rgb(255, 255, 255);"><span style="color: rgb(36, 39, 41);">Thanks so much for the help in advance</span></span></font></div>
<div style="font-size: 13.3333px;"><font face="Helvetica" size="3"><span style="background-color: rgb(255, 255, 255);"><span style="color: rgb(36, 39, 41);"><br>
</span></span></font></div>
<div style=""><span style="background-color: rgb(255, 255, 255);"><font color="#242729" face="Helvetica" size="3">
<div style="">    #include<stdio.h></div>
<div style="">    #include<math.h></div>
<div style="">    #include<string.h></div>
<div style="">    #include<stdlib.h></div>
<div style=""><br>
</div>
<div style="">    void gen_sally( int xs, int ys, int zs, int time, float *sally )</div>
<div style="">    /*</div>
<div style="">     *  Gen_Sally creates a vector field of dimension [xs,ys,zs,3] from</div>
<div style="">     *  a proceedural function. By passing in different time arguements,</div>
<div style="">     *  a slightly different and rotating field is created.</div>
<div style="">     *</div>
<div style="">     *  The magnitude of the vector field is highest at some funnel shape</div>
<div style="">     *  and values range from 0.0 to around 0.4 (I think).</div>
<div style="">     *</div>
<div style="">     *  I just wrote these comments, 8 years after I wrote the function.</div>
<div style="">     *  </div>
<div style="">     *  Developed by Sally of Sally University</div>
<div style="">     *</div>
<div style="">     */</div>
<div style="">    {</div>
<div style="">      float x, y, z;</div>
<div style="">      int ix, iy, iz;</div>
<div style="">      float r, xc, yc, scale, temp, z0;</div>
<div style="">      float r2 = 8;</div>
<div style="">      float SMALL = 0.00000000001;</div>
<div style="">      float xdelta = 1.0 / (xs-1.0);</div>
<div style="">      float ydelta = 1.0 / (ys-1.0);</div>
<div style="">      float zdelta = 1.0 / (zs-1.0);</div>
<div style=""><br>
</div>
<div style="">      for( iz = 0; iz < zs; iz++ )</div>
<div style="">      {</div>
<div style="">    <span style="white-space:pre"></span>z = iz * zdelta;                        // map z to 0->1</div>
<div style="">    <span style="white-space:pre"></span>xc = 0.5 + 0.1*sin(0.04*time+10.0*z);   // For each z-slice, determine the spiral circle.</div>
<div style="">    <span style="white-space:pre"></span>yc = 0.5 + 0.1*cos(0.03*time+3.0*z);    //    (xc,yc) determine the center of the circle.</div>
<div style="">    <span style="white-space:pre"></span>r = 0.1 + 0.4 * z*z + 0.1 * z * sin(8.0*z); //  The radius also changes at each z-slice.</div>
<div style="">    <span style="white-space:pre"></span>r2 = 0.2 + 0.1*z;                           //    r is the center radius, r2 is for damping</div>
<div style="">    <span style="white-space:pre"></span>for( iy = 0; iy < ys; iy++ )</div>
<div style="">    <span style="white-space:pre"></span>{</div>
<div style="">    <span style="white-space:pre"></span>y = iy * ydelta;</div>
<div style="">    <span style="white-space:pre"></span>for( ix = 0; ix < xs; ix++ )</div>
<div style="">    <span style="white-space:pre"></span>{</div>
<div style="">    <span style="white-space:pre"></span>x = ix * xdelta;</div>
<div style="">    <span style="white-space:pre"></span>temp = sqrt( (y-yc)*(y-yc) + (x-xc)*(x-xc) );</div>
<div style="">    <span style="white-space:pre"></span>scale = fabs( r - temp );</div>
<div style="">    /*</div>
<div style="">     *  I do not like this next line. It produces a discontinuity </div>
<div style="">     *  in the magnitude. Fix it later.</div>
<div style="">     *</div>
<div style="">     */</div>
<div style="">    <span style="white-space:pre"></span>   if ( scale > r2 )</div>
<div style="">    <span style="white-space:pre"></span>  scale = 0.8 - scale;</div>
<div style="">    <span style="white-space:pre"></span>   else</div>
<div style="">    <span style="white-space:pre"></span>  scale = 1.0;</div>
<div style="">    <span style="white-space:pre"></span>z0 = 0.1 * (0.1 - temp*z );</div>
<div style="">    <span style="white-space:pre"></span>   if ( z0 < 0.0 )  z0 = 0.0;</div>
<div style="">    <span style="white-space:pre"></span>   temp = sqrt( temp*temp + z0*z0 );</div>
<div style="">    <span style="white-space:pre"></span>scale = (r + r2 - temp) * scale / (temp + SMALL);</div>
<div style="">    <span style="white-space:pre"></span>scale = scale / (1+z);</div>
<div style="">    <span style="white-space:pre"></span>   *sally++ = scale * (y-yc) + 0.1*(x-xc);</div>
<div style="">    <span style="white-space:pre"></span>   *sally++ = scale * -(x-xc) + 0.1*(y-yc);</div>
<div style="">    <span style="white-space:pre"></span>   *sally++ = scale * z0;</div>
<div style="">    <span style="white-space:pre"></span>}</div>
<div style="">    <span style="white-space:pre"></span>}</div>
<div style="">      }</div>
<div style="">    }</div>
<div style=""><br>
</div>
<div style=""><br>
</div>
<div style="">    void create_csv(char* filename, float *sally, int size) {</div>
<div style="">        printf("1\n Creating %s.csv file\n", filename);</div>
<div style=""><br>
</div>
<div style="">        FILE *fp;</div>
<div style=""><br>
</div>
<div style="">        fp = fopen(filename, "w");</div>
<div style=""><br>
</div>
<div style="">        fprintf(fp, "X,Y,Z\n");</div>
<div style="">        int i;</div>
<div style=""><br>
</div>
<div style="">        for (i = 0; i < size; i++) {</div>
<div style="">            fprintf(fp, "%f%c", sally[i], (i % 3) ? ',' : '\n');</div>
<div style="">        }</div>
<div style=""><br>
</div>
<div style="">        fclose(fp);</div>
<div style="">        printf("\n %sfile created", filename);</div>
<div style="">    }</div>
<div style=""><br>
</div>
<div style=""><br>
</div>
<div style=""><br>
</div>
<div style=""><br>
</div>
<div style="">    int main(int argc, char *argv[]){</div>
<div style=""><br>
</div>
<div style="">    <span style="white-space:pre"></span>printf("1\n");</div>
<div style="">    <span style="white-space:pre"></span>//read from args</div>
<div style="">    <span style="white-space:pre"></span>int xs;</div>
<div style="">    <span style="white-space:pre"></span>int ys;</div>
<div style="">    <span style="white-space:pre"></span>int zs;</div>
<div style="">    <span style="white-space:pre"></span>int time;</div>
<div style="">    <span style="white-space:pre"></span>sscanf(argv[1],"%d",&xs);</div>
<div style="">    <span style="white-space:pre"></span>sscanf(argv[2],"%d",&ys);</div>
<div style="">    <span style="white-space:pre"></span>sscanf(argv[3],"%d",&zs);</div>
<div style="">    <span style="white-space:pre"></span>sscanf(argv[4],"%d",&time);</div>
<div style=""><br>
</div>
<div style=""><br>
</div>
<div style="">    <span style="white-space:pre"></span>int arraySize = xs*ys*zs*3;</div>
<div style=""><br>
</div>
<div style="">    <span style="white-space:pre"></span>//allocate memeory for array. This is done so that stack memory doesn't run out.'</div>
<div style="">    <span style="white-space:pre"></span>float* sally;</div>
<div style="">    <span style="white-space:pre"></span>sally = (float*)malloc((arraySize) * sizeof(*sally));</div>
<div style=""><br>
</div>
<div style="">    <span style="white-space:pre"></span>//runs the code. One of the args is a pointer so no return type is needed. </div>
<div style="">    <span style="white-space:pre"></span>gen_sally(xs,ys,zs,time,sally);</div>
<div style=""><br>
</div>
<div style="">    <span style="white-space:pre"></span>//create varibles for file generation</div>
<div style="">    <span style="white-space:pre"></span>char filename[20] = "results.csv";</div>
<div style="">    <span style="white-space:pre"></span>create_csv(filename, sally, arraySize);</div>
<div style=""><br>
</div>
<div style="">    <span style="white-space:pre"></span>free(sally);</div>
<div style="">    <span style="white-space:pre"></span>return 0;</div>
<div style="">    }</div>
</font></span></div>
</div>
</body>
</html>