diff options
author | tradke <tradke@94b1c47f-dcfd-45ef-a468-0854c0e9e350> | 2001-08-02 15:40:51 +0000 |
---|---|---|
committer | tradke <tradke@94b1c47f-dcfd-45ef-a468-0854c0e9e350> | 2001-08-02 15:40:51 +0000 |
commit | faedd2bdc2155ed8fff843d7e79aedd14d88a0f0 (patch) | |
tree | b6e60feb5034343d2e80a1a02908f240264d7e73 /src | |
parent | 9f559affd230ba4f8cfce60e3ee8304c4213b108 (diff) |
Output the physical time in a separate column if requested via the new
parameters IOASCII::out1D_style and IOASCII::out2D_style.
For 1D gnuplot-style output, timesteps are separated by only one blank line now.
This allows to using the "every" modifier in gnuplot's plot commands
and thus hopefully closes PR CactusPUGHIO-IOASCII/330.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/IOASCII/trunk@71 94b1c47f-dcfd-45ef-a468-0854c0e9e350
Diffstat (limited to 'src')
-rw-r--r-- | src/Write1D.c | 136 | ||||
-rw-r--r-- | src/Write2D.c | 17 |
2 files changed, 139 insertions, 14 deletions
diff --git a/src/Write1D.c b/src/Write1D.c index 071f7bf..df5c73a 100644 --- a/src/Write1D.c +++ b/src/Write1D.c @@ -120,8 +120,9 @@ void IOASCII_Write1D (cGH *GH, int vindex, const char *alias) char header_fmt[18]; /* header format string */ char ylabel1_fmt[13]; /* y-label format string */ char ylabel2_fmt[13]; /* y-label format string */ - char data_fmt_int[11]; /* data format string for int types */ - char data_fmt_real[14]; /* data format string for float types */ + 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 */ 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)*/ @@ -185,22 +186,56 @@ void IOASCII_Write1D (cGH *GH, int vindex, const char *alias) return; } - /* set header and data format strings */ - if (CCTK_Equals (out_style, "gnuplot")) + /* DEPRICATED IN BETA12 */ + if (CCTK_ParameterQueryTimesSet ("out_style", CCTK_THORNSTRING) > 0) { - comment_char = '#'; - file_extension = ".asc"; + static int user_was_warned = 0; + + + if (! user_was_warned) + { + CCTK_WARN (1, "IOASCII_Write1D: parameter 'IOASCII::out_style' is " + "depricated in BETA12, please use 'IOASCII::out1D_style' " + "instead"); + user_was_warned = 1; + } + if (CCTK_Equals (out_style, "gnuplot")) + { + out1D_style = "gnuplot f(x)"; + } + else + { + out1D_style = "xgraph"; + } } - else + + /* set header and data format strings */ + if (CCTK_Equals (out1D_style, "xgraph")) { comment_char = '"'; file_extension = ".xg"; + sprintf (header_fmt, "\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, "\n\n%cTime = %%%s\n", comment_char, out_format); sprintf (ylabel1_fmt, " (%%c = %%%s", out_format); sprintf (ylabel2_fmt, ", %%c = %%%s", out_format); - sprintf (data_fmt_int, "%%%s\t\t%%d\n", out_format); - sprintf (data_fmt_real, "%%%s\t\t%%%s\n", out_format, 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 (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); #ifdef DEBUG_IOASCII printf ("\nIn IOASCII Write1D\n------------------\n"); @@ -596,6 +631,87 @@ void IOASCII_Write1D (cGH *GH, int vindex, const char *alias) data_fmt_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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + break; +#endif + default: CCTK_WARN (1, "Unsupported variable type"); break; diff --git a/src/Write2D.c b/src/Write2D.c index 6e5c987..9c6569b 100644 --- a/src/Write2D.c +++ b/src/Write2D.c @@ -119,6 +119,7 @@ void IOASCII_Write2D (cGH *GH, int vindex, const char *alias) 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 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 real types */ int dir; @@ -163,10 +164,18 @@ void IOASCII_Write2D (cGH *GH, int vindex, const char *alias) sprintf (header_fmt_string, "\n\n#Time = %%%s\n", out_format); sprintf (zlabel_fmt_string, "#z-label %%s (%%c = %%%s), ", 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);; + dir = 0; + if (CCTK_Equals (out2D_style, "gnuplot f(t,x,y)")) + { + 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); + dir = strlen (data_fmt_string_int); + } + sprintf (data_fmt_string_int + dir, "%%%s\t\t%%%s\t\t%%d", + out_format, out_format); + sprintf (data_fmt_string_real + dir, "%%%s\t\t%%%s\t\t%%%s", + out_format, out_format, out_format); /* get the coordinate indices if we output a grid function */ if (groupinfo.grouptype == CCTK_GF) |