#include <stdio.h>
#include <stdlib.h>
#include "utils.h"
void int_to_a (int num, char *s, int len)
{
int i, j, k;
for (i = 1; i * 10 <= num; i *= 10)
;
k = 0;
while (i > 0 && k < len - 1) {
j = num / i;
num %= i;
i /= 10;
s[k] = j + 48;
k++;
}
s[k] = 0;
}
int main (int argc, char **argv)
{
const char *dbname = "dbtest.cgns";
char buf[30];
int i, numzones, numvalues, isize[3][1];
int index_file, index_base, index_zone, index_coord;
float *values;
double start_time, end_time;
if (argc < 3 || argc > 4) {
fprintf (stderr, "usage: dbtest numzones numvalues [CGNSfile]\n");
exit (1);
}
numzones = atoi(argv[1]);
numvalues = atoi(argv[2]);
if (argc == 4)
dbname = argv[3];
values = (float *) malloc (numvalues * sizeof(float));
if (values == NULL) {
perror ("malloc");
exit (-1);
}
for (i = 0; i < numvalues; i++)
values[i] = (float)i;
start_time = elapsed_time();
cg_open (dbname, MODE_WRITE, &index_file);
cg_base_write (index_file, "Base", 1, 1, &index_base);
isize[0][0] = numvalues;
isize[1][0] = isize[0][0] - 1;
isize[2][0] = 0;
for (i = 0; i < numzones; i++) {
int_to_a (i, buf, sizeof(buf));
if (cg_zone_write (index_file, index_base, buf, *isize,
Structured, &index_zone) ||
cg_coord_write (index_file, index_base, index_zone,
RealSingle, "CoordinateX", values, &index_coord))
cg_error_exit();
}
cg_close (index_file);
end_time = elapsed_time();
printf ("numzones:%d numvalues:%d time:%f [s]\n",
numzones, numvalues, end_time - start_time);
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1