diff options
author | tradke <tradke@94b1c47f-dcfd-45ef-a468-0854c0e9e350> | 2001-06-27 16:52:25 +0000 |
---|---|---|
committer | tradke <tradke@94b1c47f-dcfd-45ef-a468-0854c0e9e350> | 2001-06-27 16:52:25 +0000 |
commit | 51b5d26d05da33ff91df8a283f7e68cc2897845e (patch) | |
tree | 6fbd06a1bd20209a0d56152669f14bee26edc72a /src/Write2D.c | |
parent | cdb67a6651fcefe19ed31cfc6f2ddeb87a68597b (diff) |
2D ASCII output can be done now for every possible CCTK datatype.
Complex datatypes go into a single line (as "<real part> <imag part>").
git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/IOASCII/trunk@65 94b1c47f-dcfd-45ef-a468-0854c0e9e350
Diffstat (limited to 'src/Write2D.c')
-rw-r--r-- | src/Write2D.c | 94 |
1 files changed, 85 insertions, 9 deletions
diff --git a/src/Write2D.c b/src/Write2D.c index b686be3..20119c9 100644 --- a/src/Write2D.c +++ b/src/Write2D.c @@ -30,10 +30,10 @@ CCTK_FILEVERSION(CactusBase_IOASCII_Write2D_c) /* macro to output a time slice as typed data */ #define OUTPUT_TYPED_DATA(coord_hsizes, coord_i, coord_j, stagger_offset_i, \ stagger_offset_j, data_hsizes, cctk_type, c_type, \ - data, have_coords, fmt_string, file) \ + data, have_coords, is_cmplx_type, fmt_string, file) \ { \ int i, j; \ - cctk_type *typed_data = (cctk_type *) (data); \ + const cctk_type *typed_data = (const cctk_type *) (data); \ \ \ /* output coordinates if available otherwise just the indices */ \ @@ -47,6 +47,12 @@ CCTK_FILEVERSION(CactusBase_IOASCII_Write2D_c) (double) (*coord_i++ + stagger_offset_i), \ (double) (*coord_j++ + stagger_offset_j), \ (c_type) *typed_data++); \ + if (is_cmplx_type) \ + { \ + fprintf (file, "\t\t"); \ + fprintf (file, out_real_format, (double) *typed_data++); \ + } \ + fprintf (file, "\n"); \ } \ fprintf (file, "\n"); \ coord_i += coord_hsizes[0] - data_hsizes[0]; \ @@ -65,6 +71,12 @@ CCTK_FILEVERSION(CactusBase_IOASCII_Write2D_c) (double) i, \ (double) j, \ (c_type) *typed_data++); \ + if (is_cmplx_type) \ + { \ + fprintf (file, "\t\t"); \ + fprintf (file, out_real_format, (double) *typed_data++); \ + } \ + fprintf (file, "\n"); \ } \ fprintf (file, "\n"); \ } \ @@ -106,8 +118,9 @@ void IOASCII_Write2D (cGH *GH, int vindex, const char *alias) asciiioGH *myGH; char header_fmt_string[30]; /* header format string */ char zlabel_fmt_string[30]; /* z-label format string */ + char out_real_format[30]; /* data format string for a real type */ 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 data_fmt_string_real[30]; /* data format string for real types */ int dir; int groupindex; int have_coords; @@ -149,10 +162,11 @@ void IOASCII_Write2D (cGH *GH, int vindex, const char *alias) /* set header and data format strings */ sprintf (header_fmt_string, "\n\n#Time = %%%s\n", out_format); sprintf (zlabel_fmt_string, "#z-label %%s (%%c = %%%s)\n", out_format); - sprintf (data_fmt_string_int, "%%%s\t\t%%%s\t\t%%d\n", - out_format, out_format); - sprintf (data_fmt_string_real, "%%%s\t\t%%%s\t\t%%%s\n", - out_format, out_format, out_format);; + sprintf (out_real_format, "%%%s", out_format); + sprintf (data_fmt_string_int, "%s\t\t%s\t\t%%d", + out_real_format, out_real_format); + sprintf (data_fmt_string_real, "%s\t\t%s\t\t%s", + out_real_format, out_real_format, out_real_format);; /* get the coordinate indices if we output a grid function */ if (groupinfo.grouptype == CCTK_GF) @@ -411,23 +425,85 @@ void IOASCII_Write2D (cGH *GH, int vindex, const char *alias) OUTPUT_TYPED_DATA (coord_hsizes, coord_data_i, coord_data_j, stagger_offset_i, stagger_offset_j, data_hsizes, CCTK_BYTE, int, data, have_coords, - data_fmt_string_int, fdset_2D[dir]); + 0, data_fmt_string_int, fdset_2D[dir]); break; case CCTK_VARIABLE_INT: OUTPUT_TYPED_DATA (coord_hsizes, coord_data_i, coord_data_j, stagger_offset_i, stagger_offset_j, data_hsizes, CCTK_INT, int, data, have_coords, - data_fmt_string_int, fdset_2D[dir]); + 0, data_fmt_string_int, fdset_2D[dir]); break; case CCTK_VARIABLE_REAL: + case CCTK_VARIABLE_COMPLEX: OUTPUT_TYPED_DATA (coord_hsizes, coord_data_i, coord_data_j, stagger_offset_i, stagger_offset_j, data_hsizes, CCTK_REAL, double, data, have_coords, + groupinfo.vartype == CCTK_VARIABLE_COMPLEX, data_fmt_string_real, fdset_2D[dir]); break; +#ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + OUTPUT_TYPED_DATA (coord_hsizes, coord_data_i, coord_data_j, + stagger_offset_i, stagger_offset_j, + data_hsizes, CCTK_INT2, int, data, have_coords, + 0, data_fmt_string_int, fdset_2D[dir]); + break; +#endif + +#ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + OUTPUT_TYPED_DATA (coord_hsizes, coord_data_i, coord_data_j, + stagger_offset_i, stagger_offset_j, + data_hsizes, CCTK_INT4, int, data, have_coords, + 0, data_fmt_string_int, fdset_2D[dir]); + break; +#endif + +#ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + OUTPUT_TYPED_DATA (coord_hsizes, coord_data_i, coord_data_j, + stagger_offset_i, stagger_offset_j, + data_hsizes, CCTK_INT8, int, data, have_coords, + 0, data_fmt_string_int, fdset_2D[dir]); + break; +#endif + +#ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + case CCTK_VARIABLE_COMPLEX8: + OUTPUT_TYPED_DATA (coord_hsizes, coord_data_i, coord_data_j, + stagger_offset_i, stagger_offset_j, + data_hsizes, CCTK_REAL4, double, data, have_coords, + groupinfo.vartype == CCTK_VARIABLE_COMPLEX8, + data_fmt_string_real, fdset_2D[dir]); + break; +#endif + +#ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + case CCTK_VARIABLE_COMPLEX16: + OUTPUT_TYPED_DATA (coord_hsizes, coord_data_i, coord_data_j, + stagger_offset_i, stagger_offset_j, + data_hsizes, CCTK_REAL8, double, data, have_coords, + groupinfo.vartype == CCTK_VARIABLE_COMPLEX16, + data_fmt_string_real, fdset_2D[dir]); + break; +#endif + +#ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + case CCTK_VARIABLE_COMPLEX32: + OUTPUT_TYPED_DATA (coord_hsizes, coord_data_i, coord_data_j, + stagger_offset_i, stagger_offset_j, + data_hsizes, CCTK_REAL16, double, data,have_coords, + groupinfo.vartype == CCTK_VARIABLE_COMPLEX32, + data_fmt_string_real, fdset_2D[dir]); + break; +#endif + default: CCTK_WARN (1, "Unsupported variable type"); break; |