aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortradke <tradke@94b1c47f-dcfd-45ef-a468-0854c0e9e350>2001-12-28 21:28:37 +0000
committertradke <tradke@94b1c47f-dcfd-45ef-a468-0854c0e9e350>2001-12-28 21:28:37 +0000
commit2031746c9010e039c08e8b943e3b7038ed389cdf (patch)
tree4d3b3610eae587739bdcecadd3491f3c137a2f9f /src
parent76fbba7e6738c8fddaa2cbf53f7efc4145ea418c (diff)
Fixed filename construction for 1D output of 1D and 1D variables.
This closes PR CactusBase-871. Write both imaginary and real part of complex variables into a single file for "gnuplot" output styles. This closes PR CactusBase-870. git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/IOASCII/trunk@94 94b1c47f-dcfd-45ef-a468-0854c0e9e350
Diffstat (limited to 'src')
-rw-r--r--src/Write1D.c219
-rw-r--r--src/Write2D.c23
-rw-r--r--src/Write3D.c25
3 files changed, 167 insertions, 100 deletions
diff --git a/src/Write1D.c b/src/Write1D.c
index 2ba8fe8..9a68a31 100644
--- a/src/Write1D.c
+++ b/src/Write1D.c
@@ -37,8 +37,7 @@ CCTK_FILEVERSION(CactusBase_IOASCII_Write1D_c)
/* macro to output a 1D line (with coordinates for GFs) as typed data */
#define OUTPUT_TYPED_DATA(grouptype, hsize, coord_data, stagger_offset, \
- cctk_type, cctk_extract_fn, c_type, data, \
- format, file) \
+ cctk_type, c_type, h0, stride, data, format, file) \
{ \
int h; \
cctk_type *typed_data = (cctk_type *) data; \
@@ -46,20 +45,28 @@ CCTK_FILEVERSION(CactusBase_IOASCII_Write1D_c)
\
if (grouptype == CCTK_GF) \
{ \
- for (h = 0; h < hsize; h++) \
+ for (h = h0; h < stride * hsize; h += stride) \
{ \
fprintf (file, format, \
(double) (coord_data[h] + stagger_offset), \
- (c_type) cctk_extract_fn (typed_data[h])); \
+ (c_type) typed_data[h]); \
+ if (stride == 1) \
+ { \
+ fprintf (file, out_real_format, (c_type) typed_data[h + 1]);\
+ } \
+ fputc ('\n', file); \
} \
} \
else \
{ \
- for (h = 0; h < hsize; h++) \
+ for (h = h0; h < stride * hsize; h += stride) \
{ \
- fprintf (file, format, \
- (double) h, \
- (c_type) cctk_extract_fn (typed_data[h])); \
+ fprintf (file, format, (double) h, (c_type) typed_data[h]); \
+ if (stride == 1) \
+ { \
+ fprintf (file, out_real_format, (c_type) typed_data[h + 1]);\
+ } \
+ fputc ('\n', file); \
} \
} \
}
@@ -100,10 +107,15 @@ CCTK_FILEVERSION(CactusBase_IOASCII_Write1D_c)
@vtype const char *
@vio in
@endvar
+
+ @returntype int
+ @returndesc
+ 0 for success, or<BR>
+ -1 if variable has no storage assigned
+ @endreturndesc
@@*/
-void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
+int IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
{
- DECLARE_CCTK_PARAMETERS
asciiioGH *myGH; /* IOASCII extension handle */
int Do_it[4]; /* flags indicating actual work */
int coord_index[3]; /* x,y,z coordinate variable indices */
@@ -116,23 +128,25 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
cGroup group_static_data; /* variable's group static data */
cGroupDynamicData group_dynamic_data;/* variable's group dynamic data */
char *fullname; /* variable's full name */
- char header_fmt[18]; /* header format string */
- char ylabel1_fmt[13]; /* y-label format string */
- char ylabel2_fmt[13]; /* y-label format string */
- char time_fmt[30]; /* time format string */
- char data_fmt_int[30]; /* data format string for int types */
- char data_fmt_real[30]; /* data format string for float types */
+ char header_fmt_string[18]; /* header format string */
+ char ylabel1_fmt_string[13]; /* y-label format string */
+ char ylabel2_fmt_string[13]; /* y-label format string */
+ char time_fmt_string[30]; /* time format string */
+ char data_fmt_string_int[30]; /* data format string for int types */
+ char data_fmt_string_real[30]; /* data format string for float types */
+ char out_real_format[30]; /* data format string for a real type */
const char *file_extension; /* filename extension */
char comment_char; /* character starting a comment */
FILE *file[8]; /* fds for x,y,z,d output (also COMPLEX)*/
CCTK_REAL coord_lower[3], offset;
- int num_files;
+ int stride, num_files;
int upper, lower;
struct stat fileinfo;
const char *openmode;
static char *extensions[] = {"xl", "yl", "zl", "dl"};
char *filename, *type_extension, buffer[128];
ioAdvertisedFileDesc advertised_file;
+ DECLARE_CCTK_PARAMETERS
/* get the variable's group index and its full name */
@@ -146,7 +160,7 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
"IOASCII_Write1D: No IOASCII_1D output for '%s' (no storage)",
fullname);
free (fullname);
- return;
+ return (-1);
}
/* get the handle for IOASCII extensions */
@@ -176,7 +190,7 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
if (! (Do_it[0] || Do_it[1] || Do_it[2] || Do_it[3]))
{
free (fullname);
- return;
+ return (0);
}
/* DEPRICATED IN BETA12 */
@@ -207,28 +221,29 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
{
comment_char = '"';
file_extension = ".xg";
- sprintf (header_fmt, "\n\n%cTime = %%%s\n", comment_char, out_format);
+ sprintf (header_fmt_string, "\n\n%cTime = %%%s\n", comment_char,out_format);
}
else
{
comment_char = '#';
file_extension = ".asc";
- sprintf (header_fmt, "\n%cTime = %%%s\n", comment_char, out_format);
+ sprintf (header_fmt_string, "\n%cTime = %%%s\n", comment_char, out_format);
}
- sprintf (ylabel1_fmt, " (%%c = %%%s", out_format);
- sprintf (ylabel2_fmt, ", %%c = %%%s", out_format);
+ sprintf (ylabel1_fmt_string, " (%%c = %%%s", out_format);
+ sprintf (ylabel2_fmt_string, ", %%c = %%%s", out_format);
+ sprintf (out_real_format, "\t\t%%%s", out_format);
/* check whether to include physical time as separate column in the output */
i = 0;
if (CCTK_Equals (out1D_style, "gnuplot f(t,x)"))
{
- sprintf (time_fmt, "%%%s\t\t", out_format);
- sprintf (data_fmt_int, time_fmt, (double) GH->cctk_time);
- sprintf (data_fmt_real, time_fmt, (double) GH->cctk_time);
- i = strlen (data_fmt_int);
+ sprintf (time_fmt_string, "%%%s\t\t", out_format);
+ sprintf (data_fmt_string_int, time_fmt_string, (double) GH->cctk_time);
+ sprintf (data_fmt_string_real, time_fmt_string, (double) GH->cctk_time);
+ i = strlen (data_fmt_string_int);
}
- sprintf (data_fmt_int + i, "%%%s\t\t%%d\n", out_format);
- sprintf (data_fmt_real + i, "%%%s\t\t%%%s\n", out_format,out_format);
+ sprintf (data_fmt_string_int + i, "%%%s\t\t%%d", out_format);
+ sprintf (data_fmt_string_real + i, "%%%s\t\t%%%s", out_format, out_format);
#ifdef DEBUG_IOASCII
printf ("\nIn IOASCII Write1D\n------------------\n");
@@ -265,6 +280,11 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
/* What processor are we on? */
myproc = CCTK_MyProc (GH);
+ /* get the stride into the data and the (maximum) number of files to write */
+ stride = group_static_data.vartype == CCTK_VARIABLE_COMPLEX &&
+ CCTK_Equals (out1D_style, "xgraph") ? 2 : 1;
+ num_files = stride * 4;
+
/* Processor 0 opens the files with the appropriate name */
if (myproc == 0)
{
@@ -273,8 +293,6 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
filename = (char *) malloc (strlen (myGH->outdir1D) + strlen (alias) +
sizeof (slicename) + 20);
- num_files = group_static_data.vartype == CCTK_VARIABLE_COMPLEX ? 8 : 4;
-
for (i = 0; i < num_files; i++)
{
dir = i % 4;
@@ -285,8 +303,8 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
continue;
}
- /* add suffix for complex type variables */
- if (group_static_data.vartype == CCTK_VARIABLE_COMPLEX)
+ /* add suffix for complex type variables in xgraph output */
+ if (group_static_data.vartype == CCTK_VARIABLE_COMPLEX && num_files == 8)
{
if (new_filename_scheme)
{
@@ -316,10 +334,23 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
{
if ((i + 1) % 4)
{
- /* give the slice origin as range [1 .. n] */
- sprintf (slicename, "%s%c_[%d][%d]", type_extension, 'x' + dir,
- myGH->spxyz[group_static_data.dim-1][dir][lower],
- myGH->spxyz[group_static_data.dim-1][dir][upper]);
+ if (group_static_data.dim == 1)
+ {
+ sprintf (slicename, "%s1D", type_extension);
+ }
+ else if (group_static_data.dim == 2)
+ {
+ /* give the slice origin as range [1 .. n] */
+ sprintf (slicename, "%s%c_[%d]", type_extension, 'x' + dir,
+ myGH->spxyz[group_static_data.dim-1][dir][lower]);
+ }
+ else
+ {
+ /* give the slice origin as range [1 .. n] */
+ sprintf (slicename, "%s%c_[%d][%d]", type_extension, 'x' + dir,
+ myGH->spxyz[group_static_data.dim-1][dir][lower],
+ myGH->spxyz[group_static_data.dim-1][dir][upper]);
+ }
}
else
{
@@ -429,12 +460,12 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
/* output the physical coordinates of the 1D line */
if (have_coords)
{
- fprintf (file[i], ylabel1_fmt, 'x' + lower,
+ fprintf (file[i], ylabel1_fmt_string, 'x' + lower,
coord_lower[lower] + GH->cctk_delta_space[lower] *
myGH->spxyz[group_static_data.dim-1][dir][lower]);
if (group_static_data.dim > 2)
{
- fprintf (file[i], ylabel2_fmt, 'x' + upper,
+ fprintf (file[i], ylabel2_fmt_string, 'x' + upper,
coord_lower[upper] + GH->cctk_delta_space[upper] *
myGH->spxyz[group_static_data.dim-1][dir][upper]);
}
@@ -610,118 +641,130 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
}
/* print out header */
- fprintf (file[dir], header_fmt, GH->cctk_time);
+ fprintf (file[dir], header_fmt_string, GH->cctk_time);
/* and then loop through the line points */
switch (group_static_data.vartype)
{
case CCTK_VARIABLE_CHAR:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_BYTE, NOTHING, int, data,
- data_fmt_int, file[dir]);
+ offset, CCTK_BYTE, int, 0, 1, data,
+ data_fmt_string_int, file[dir]);
break;
case CCTK_VARIABLE_INT:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_INT, NOTHING, int, data,
- data_fmt_int, file[dir]);
+ offset, CCTK_INT, int, 0, 1, data,
+ data_fmt_string_int, file[dir]);
break;
case CCTK_VARIABLE_REAL:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_REAL, NOTHING, double, data,
- data_fmt_real, file[dir]);
+ offset, CCTK_REAL, double, 0, 1, data,
+ data_fmt_string_real, file[dir]);
break;
case CCTK_VARIABLE_COMPLEX:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_COMPLEX, CCTK_CmplxReal, double, data,
- data_fmt_real, file[dir]);
- /* print out header */
- fprintf (file[dir + 4], header_fmt, GH->cctk_time);
- OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_COMPLEX, CCTK_CmplxImag, double, data,
- data_fmt_real, file[dir + 4]);
+ offset, CCTK_REAL, double, 0, stride, data,
+ data_fmt_string_real, file[dir]);
+ if (stride == 2)
+ {
+ /* print out header */
+ fprintf (file[dir + 4], header_fmt_string, GH->cctk_time);
+ OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
+ offset, CCTK_REAL, double, 1, stride, data,
+ data_fmt_string_real, file[dir + 4]);
+ }
break;
#ifdef CCTK_INT2
case CCTK_VARIABLE_INT2:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_INT2, NOTHING, int, data,
- data_fmt_int, file[dir]);
+ offset, CCTK_INT2, int, 0, 1, data,
+ data_fmt_string_int, file[dir]);
break;
#endif
#ifdef CCTK_INT4
case CCTK_VARIABLE_INT4:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_INT4, NOTHING, int, data,
- data_fmt_int, file[dir]);
+ offset, CCTK_INT4, int, 0, 1, data,
+ data_fmt_string_int, file[dir]);
break;
#endif
#ifdef CCTK_INT8
case CCTK_VARIABLE_INT8:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_INT8, NOTHING, int, data,
- data_fmt_int, file[dir]);
+ offset, CCTK_INT8, int, 0, 1, data,
+ data_fmt_string_int, file[dir]);
break;
#endif
#ifdef CCTK_REAL4
case CCTK_VARIABLE_REAL4:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_REAL4, NOTHING, double, data,
- data_fmt_real, file[dir]);
+ offset, CCTK_REAL4, double, 0, 1, data,
+ data_fmt_string_real, file[dir]);
break;
case CCTK_VARIABLE_COMPLEX8:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_COMPLEX8, CCTK_Cmplx8Real,
- double, data, data_fmt_real, file[dir]);
- /* print out header */
- fprintf (file[dir + 4], header_fmt, GH->cctk_time);
- OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_COMPLEX8, CCTK_Cmplx8Imag,
- double, data, data_fmt_real, file[dir + 4]);
+ offset, CCTK_REAL4, double, 0, stride, data,
+ data_fmt_string_real, file[dir]);
+ if (stride == 2)
+ {
+ /* print out header */
+ fprintf (file[dir + 4], header_fmt_string, GH->cctk_time);
+ OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
+ offset, CCTK_REAL4, double, 1, stride, data,
+ data_fmt_string_real, file[dir + 4]);
+ }
break;
#endif
#ifdef CCTK_REAL8
case CCTK_VARIABLE_REAL8:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_REAL8, NOTHING, double, data,
- data_fmt_real, file[dir]);
+ offset, CCTK_REAL8, double, 0, 1, data,
+ data_fmt_string_real, file[dir]);
break;
case CCTK_VARIABLE_COMPLEX16:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_COMPLEX16, CCTK_Cmplx16Real,
- double, data, data_fmt_real, file[dir]);
- /* print out header */
- fprintf (file[dir + 4], header_fmt, GH->cctk_time);
- OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_COMPLEX16, CCTK_Cmplx16Imag,
- double, data, data_fmt_real, file[dir + 4]);
+ offset, CCTK_REAL8, double, 0, stride, data,
+ data_fmt_string_real, file[dir]);
+ if (stride == 2)
+ {
+ /* print out header */
+ fprintf (file[dir + 4], header_fmt_string, GH->cctk_time);
+ OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
+ offset, CCTK_REAL8, double, 1, stride, data,
+ data_fmt_string_real, file[dir + 4]);
+ }
break;
#endif
#ifdef CCTK_REAL16
case CCTK_VARIABLE_REAL16:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_REAL16, NOTHING, double, data,
- data_fmt_real, file[dir]);
+ offset, CCTK_REAL16, double, 0, 1, data,
+ data_fmt_string_real, file[dir]);
break;
case CCTK_VARIABLE_COMPLEX32:
OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_COMPLEX32, CCTK_Cmplx32Real,
- double, data, data_fmt_real, file[dir]);
- /* print out header */
- fprintf (file[dir + 4], header_fmt, GH->cctk_time);
- OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
- offset, CCTK_COMPLEX32, CCTK_Cmplx32Imag,
- double, data, data_fmt_real, file[dir + 4]);
+ offset, CCTK_REAL16, double, 0, stride, data,
+ data_fmt_string_real, file[dir]);
+ if (stride == 2)
+ {
+ /* print out header */
+ fprintf (file[dir + 4], header_fmt_string, GH->cctk_time);
+ OUTPUT_TYPED_DATA (group_static_data.grouptype, hsize, coord_data,
+ offset, CCTK_REAL16, double, 1, stride, data,
+ data_fmt_string_real, file[dir + 4]);
+ }
break;
#endif
@@ -732,7 +775,7 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
/* close the output file(s) */
fclose (file[dir]);
- if (group_static_data.vartype == CCTK_VARIABLE_COMPLEX)
+ if (num_files == 8)
{
fclose (file[dir + 4]);
}
@@ -749,4 +792,6 @@ void IOASCII_Write1D (const cGH *GH, int vindex, const char *alias)
/* free allocated resources */
free (fullname);
+
+ return (0);
}
diff --git a/src/Write2D.c b/src/Write2D.c
index e3e9847..65fdebb 100644
--- a/src/Write2D.c
+++ b/src/Write2D.c
@@ -108,8 +108,17 @@ CCTK_FILEVERSION(CactusBase_IOASCII_Write2D_c)
@vtype const char *
@vio in
@endvar
+
+ @returntype int
+ @returndesc
+ 0 for success, or<BR>
+ -1 if variable has no storage assigned<BR>
+ -2 if output file couldn't be opened<BR>
+ -3 if hyperslab for coordinates and/or variable couldn't be
+ extracted
+ @endreturndesc
@@*/
-void IOASCII_Write2D (const cGH *GH, int vindex, const char *alias)
+int IOASCII_Write2D (const cGH *GH, int vindex, const char *alias)
{
DECLARE_CCTK_PARAMETERS
int myproc;
@@ -152,7 +161,7 @@ void IOASCII_Write2D (const cGH *GH, int vindex, const char *alias)
CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING,
"No IOASCII 2D output for '%s' (no storage)", fullname);
free (fullname);
- return;
+ return (-1);
}
/* Get the handle for IOASCII extensions */
@@ -294,7 +303,7 @@ void IOASCII_Write2D (const cGH *GH, int vindex, const char *alias)
{
CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
"Cannot open 2D output file '%s'", filename);
- return;
+ return (-2);
}
/* advertise the file for downloading and write file info */
@@ -398,7 +407,7 @@ void IOASCII_Write2D (const cGH *GH, int vindex, const char *alias)
CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
"Failed to extract 2D hyperslab for %c-coordinate",
'x' + dir_i);
- return;
+ return (-3);
}
/* get the j-coordinate slice */
@@ -410,7 +419,7 @@ void IOASCII_Write2D (const cGH *GH, int vindex, const char *alias)
"Failed to extract 2D hyperslab for %c-coordinate",
'x' + dir_j);
free (coord_data_i);
- return;
+ return (-3);
}
}
else
@@ -436,7 +445,7 @@ void IOASCII_Write2D (const cGH *GH, int vindex, const char *alias)
{
free (coord_data_j);
}
- return;
+ return (-3);
}
/* proc 0 writes */
@@ -552,4 +561,6 @@ void IOASCII_Write2D (const cGH *GH, int vindex, const char *alias)
} /* end of outputting the data by processor 0 */
} /* end of looping through xyz directions */
+
+ return (0);
}
diff --git a/src/Write3D.c b/src/Write3D.c
index c092535..e5c477b 100644
--- a/src/Write3D.c
+++ b/src/Write3D.c
@@ -115,8 +115,17 @@ CCTK_FILEVERSION(CactusBase_IOASCII_Write3D_c)
@vtype const char *
@vio in
@endvar
+
+ @returntype int
+ @returndesc
+ 0 for success, or<BR>
+ -1 if variable has no storage assigned<BR>
+ -2 if output file couldn't be opened<BR>
+ -3 if hyperslab for coordinates and/or variable couldn't be
+ extracted
+ @endreturndesc
@@*/
-void IOASCII_Write3D (const cGH *GH, int vindex, const char *alias)
+int IOASCII_Write3D (const cGH *GH, int vindex, const char *alias)
{
DECLARE_CCTK_PARAMETERS
int myproc, groupindex, dir, have_coords;
@@ -159,7 +168,7 @@ void IOASCII_Write3D (const cGH *GH, int vindex, const char *alias)
CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING,
"No IOASCII 3D output for '%s' (no storage)", fullname);
free (fullname);
- return;
+ return (-1);
}
/* Get the handle for IOASCII extensions */
@@ -248,7 +257,7 @@ void IOASCII_Write3D (const cGH *GH, int vindex, const char *alias)
{
CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
"Cannot open 3D IOASCII output file '%s'", filename);
- return;
+ return (-2);
}
/* advertise the file for downloading and write file info */
@@ -302,7 +311,7 @@ void IOASCII_Write3D (const cGH *GH, int vindex, const char *alias)
{
CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
"Failed to extract 3D hyperslab for x-coordinate");
- return;
+ return (-3);
}
/* get the j-coordinate volume */
@@ -313,7 +322,7 @@ void IOASCII_Write3D (const cGH *GH, int vindex, const char *alias)
CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
"Failed to extract 3D hyperslab for y-coordinate");
free (coord_data[0]);
- return;
+ return (-3);
}
/* get the k-coordinate volume */
@@ -325,7 +334,7 @@ void IOASCII_Write3D (const cGH *GH, int vindex, const char *alias)
"Failed to extract 3D hyperslab for z-coordinate");
free (coord_data[1]);
free (coord_data[0]);
- return;
+ return (-3);
}
}
else
@@ -349,7 +358,7 @@ void IOASCII_Write3D (const cGH *GH, int vindex, const char *alias)
free (coord_data[dir]);
}
}
- return;
+ return (-3);
}
/* proc 0 writes */
@@ -456,4 +465,6 @@ void IOASCII_Write3D (const cGH *GH, int vindex, const char *alias)
} /* end of outputting the data by processor 0 */
+
+ return (0);
}