My Project
programmer's documentation
cs_time_plot.h
Go to the documentation of this file.
1 #ifndef __CS_TIME_PLOT_H__
2 #define __CS_TIME_PLOT_H__
3 
4 /*============================================================================
5  * Time_Plot helper structures
6  *============================================================================*/
7 
8 /*
9  This file is part of Code_Saturne, a general-purpose CFD tool.
10 
11  Copyright (C) 1998-2019 EDF S.A.
12 
13  This program is free software; you can redistribute it and/or modify it under
14  the terms of the GNU General Public License as published by the Free Software
15  Foundation; either version 2 of the License, or (at your option) any later
16  version.
17 
18  This program is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
20  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
21  details.
22 
23  You should have received a copy of the GNU General Public License along with
24  this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
25  Street, Fifth Floor, Boston, MA 02110-1301, USA.
26 */
27 
28 /*----------------------------------------------------------------------------*/
29 
30 /*----------------------------------------------------------------------------
31  * Local headers
32  *----------------------------------------------------------------------------*/
33 
34 #include "cs_base.h"
35 
36 /*----------------------------------------------------------------------------*/
37 
39 
40 /*============================================================================
41  * Macro definitions
42  *============================================================================*/
43 
44 /*============================================================================
45  * Type definitions
46  *============================================================================*/
47 
48 typedef struct _cs_time_plot_t cs_time_plot_t;
49 
50 /*============================================================================
51  * Local type definitions
52  *============================================================================*/
53 
54 /* Type of 1D plot file format */
55 
56 typedef enum {
57  CS_TIME_PLOT_DAT, /* .dat file (usable by Qtplot or Grace) */
58  CS_TIME_PLOT_CSV /* .csv file (readable by ParaView or spreadsheat) */
60 
61 /*============================================================================
62  * Global variables
63  *============================================================================*/
64 
65 /*=============================================================================
66  * Public function prototypes for Fortran API
67  *============================================================================*/
68 
69 /*----------------------------------------------------------------------------
70  * Create a writer for time plot structure-type data.
71  *
72  * This subroutine should only be called by one rank for a given data series.
73  *
74  * subroutine tpsini (tplnum, tplnam, tplpre, tplfmt, idtvar,
75  * *****************
76  * nprb, lstprb, xyzprb, lnam, lpre)
77  *
78  * integer tplnum : <-- : number of plot to create (> 0)
79  * character tplnam : <-- : name of associated plot
80  * character tplpre : <-- : prefix for associated file
81  * integer tplfmt : <-- : associated format
82  * (1: dat, 2: csv, 3: both)
83  * integer idtvar : <-- : calculation time dependency
84  * integer nstru : <-- : number of structures
85  * double precision xmstru : <-- : mass matrixes
86  * double precision xcstru : <-- : damping matrixes
87  * double precision xkstru : <-- : stiffness matrixes
88  * integer lnam : <-- : name length
89  * integer lpre : <-- : prefix length
90  *----------------------------------------------------------------------------*/
91 
92 void CS_PROCF (tpsini, TPSINI)
93 (
94  const cs_int_t *tplnum,
95  const char *tplnam,
96  const char *tplpre,
97  const cs_int_t *tplfmt,
98  const cs_int_t *idtvar,
99  const cs_int_t *nstru,
100  const cs_real_t *xmstru,
101  const cs_real_t *xcstru,
102  const cs_real_t *xkstru,
103  const cs_int_t *lnam,
104  const cs_int_t *lpre
105  CS_ARGF_SUPP_CHAINE /* (possible 'length' arguments added
106  by many Fortran compilers) */
107 );
108 
109 /*----------------------------------------------------------------------------
110  * Finalize a writer for time plot data.
111  *
112  * This subroutine should only be called by one rank for a given data series.
113  *
114  * subroutine tplend (tplnum)
115  * *****************
116  *
117  * integer tplnum : <-- : number of plot to create (> 0)
118  * integer tplfmt : <-- : associated format
119  * (1: dat, 2: csv, 3: both)
120  *----------------------------------------------------------------------------*/
121 
122 void CS_PROCF (tplend, TPLEND)
123 (
124  const cs_int_t *tplnum,
125  const cs_int_t *tplfmt
126 );
127 
128 /*----------------------------------------------------------------------------
129  * Write time plot values.
130  *
131  * subroutine tplwri (tplnum, tplfmt, nprb, ntcabs, ttcabs, valprb)
132  * *****************
133  *
134  * integer tplnum : <-- : number of associated plot (> 0)
135  * integer tplfmt : <-- : associated format
136  * (1: dat, 2: csv, 3: both)
137  * integer nprb : <-- : number of probes
138  * integer ntcabs : <-- : current time step number
139  * double precision ttcabs : <-- : current time value
140  * double precision valprb : <-- : probe values
141  *----------------------------------------------------------------------------*/
142 
143 void CS_PROCF (tplwri, TPLWRI)
144 (
145  const cs_int_t *tplnum,
146  const cs_int_t *tplfmt,
147  const cs_int_t *nprb,
148  const cs_int_t *ntcabs,
149  const cs_real_t *ttcabs,
150  const cs_real_t *valprb
151 );
152 
153 /*----------------------------------------------------------------------------
154  * Return the number of time plots accessible through the Fortran API
155  *
156  * This subroutine will only return the number of time plots defined by the
157  * local rank
158  *
159  * subroutine tplnbr (ntpl)
160  * *****************
161  *
162  * integer ntpl : --> : number of time plots defined
163  *----------------------------------------------------------------------------*/
164 
165 void CS_PROCF (tplnbr, TPLNBR)
166 (
167  cs_int_t *ntpl
168 );
169 
170 /*=============================================================================
171  * Public function prototypes
172  *============================================================================*/
173 
174 /*----------------------------------------------------------------------------
175  * Initialize a plot file writer for probe-type plots
176  *
177  * This function should only be called by one rank for a given data series.
178  *
179  * parameters:
180  * plot_name <-- plot (variable) name
181  * file_prefix <-- file name prefix
182  * format <-- associated file format
183  * use_iteration <-- should we use the iteration number instead of the
184  * physical time ?
185  * flush_wtime <-- elapsed time interval between file flushes
186  * (if < 0, no forced flush)
187  * n_buffer_steps <-- number of time steps in output buffer if
188  * file is not to be kept open
189  * n_probes <-- number of probes associated with this plot
190  * probe_list <-- numbers (1 to n) of probes if filtered, or NULL
191  * probe_coords <-- probe coordinates, or NULL
192  * probe_names <-- probe names, or NULL
193  *
194  * returns:
195  * pointer to new time plot writer
196  *----------------------------------------------------------------------------*/
197 
199 cs_time_plot_init_probe(const char *plot_name,
200  const char *file_prefix,
201  cs_time_plot_format_t format,
202  bool use_iteration,
203  double flush_wtime,
204  int n_buffer_steps,
205  int n_probes,
206  const int *probe_list,
207  const cs_real_t probe_coords[],
208  const char *probe_names[]);
209 
210 /*----------------------------------------------------------------------------
211  * Initialize a plot file writer for structure-type plots
212  *
213  * This function should only be called by one rank for a given data series.
214  *
215  * parameters:
216  * plot_name <-- plot (variable) name
217  * file_prefix <-- file name prefix
218  * format <-- associated file format
219  * use_iteration <-- should we use the iteration number instead of the
220  * physical time ?
221  * flush_wtime <-- elapsed time interval between file flushes
222  * (if < 0, no forced flush)
223  * n_buffer_steps <-- number of time steps in output buffer if
224  * file is not to be kept open
225  * n_structures <-- number of structures associated with this plot
226  * mass_matrixes <-- mass matrix coefficients (3x3 blocks)
227  * damping_matrixes <-- damping matrix coefficients (3x3 blocks)
228  * stiffness_matrixes <-- stiffness matrix coefficients (3x3 blocks)
229  *
230  * returns:
231  * pointer to new time plot writer
232  *----------------------------------------------------------------------------*/
233 
235 cs_time_plot_init_struct(const char *plot_name,
236  const char *file_prefix,
237  cs_time_plot_format_t format,
238  bool use_iteration,
239  double flush_wtime,
240  int n_buffer_steps,
241  int n_structures,
242  const cs_real_t mass_matrixes[],
243  const cs_real_t damping_matrixes[],
244  const cs_real_t stiffness_matrixes[]);
245 
246 /*----------------------------------------------------------------------------
247  * Finalize time plot writer for a given variable
248  *
249  * This function should only be called by one rank for a given data series.
250  *
251  * parameters:
252  * p <-> time plot values file handler
253  *----------------------------------------------------------------------------*/
254 
255 void
257 
258 /*----------------------------------------------------------------------------
259  * Write time plot values
260  *
261  * This function should only be called by one rank for a given data series.
262  *
263  * parameters:
264  * p <-- pointer to associated plot structure
265  * tn <-- associated time step number
266  * t <-- associated time value
267  * n_vals <-- number of associated time values
268  * vals <-- associated time values
269  *----------------------------------------------------------------------------*/
270 
271 void
273  int tn,
274  double t,
275  int n_vals,
276  const cs_real_t vals[]);
277 
278 /*----------------------------------------------------------------------------
279  * Flush buffered values to file if applicable
280  *
281  * parameters:
282  * p <-> time plot values file handler
283  *----------------------------------------------------------------------------*/
284 
285 void
287 
288 /*----------------------------------------------------------------------------
289  * flush all time plots
290  *----------------------------------------------------------------------------*/
291 
292 void
294 
295 /*----------------------------------------------------------------------------
296  * Set time plot file writer flush behavior defaults.
297  *
298  * parameters:
299  * flush_wtime <-- elapsed time interval between file flushes;
300  * if < 0, no forced flush
301  * n_buffer_steps <-- number of time steps in output buffer if
302  * file is not to be kept open
303  *----------------------------------------------------------------------------*/
304 
305 void
306 cs_time_plot_set_flush_default(float flush_wtime,
307  int n_buffer_steps);
308 
309 /*----------------------------------------------------------------------------
310  * Return time plot file writer flush behavior defaults.
311  *
312  * parameters:
313  * flush_wtime --> elapsed time interval between file flushes;
314  * if < 0, no forced flush (NULL if not queried)
315  * n_buffer_steps <-- number of time steps in output buffer if
316  * file is not to be kept open (NULL if not queried)
317  *----------------------------------------------------------------------------*/
318 
319 void
320 cs_time_plot_get_flush_default(float *flush_wtime,
321  int *n_buffer_steps);
322 
323 /*----------------------------------------------------------------------------*/
324 
326 
327 #endif /* __CS_PROBE_H__ */
cs_time_plot_init_struct
cs_time_plot_t * cs_time_plot_init_struct(const char *plot_name, const char *file_prefix, cs_time_plot_format_t format, bool use_iteration, double flush_wtime, int n_buffer_steps, int n_structures, const cs_real_t mass_matrixes[], const cs_real_t damping_matrixes[], const cs_real_t stiffness_matrixes[])
Definition: cs_time_plot.c:1086
CS_PROCF
void CS_PROCF(tpsini, TPSINI)(const cs_int_t *tplnum
cs_time_plot_vals_write
void cs_time_plot_vals_write(cs_time_plot_t *p, int tn, double t, int n_vals, const cs_real_t vals[])
Definition: cs_time_plot.c:1170
END_C_DECLS
#define END_C_DECLS
Definition: cs_defs.h:468
cs_real_t
double cs_real_t
Floating-point value.
Definition: cs_defs.h:302
tplpre
void const char const char * tplpre
Definition: cs_time_plot.h:95
BEGIN_C_DECLS
#define BEGIN_C_DECLS
Definition: cs_defs.h:467
lnam
void const char const char const cs_int_t const cs_int_t const cs_int_t const cs_real_t const cs_real_t const cs_real_t const cs_int_t * lnam
Definition: cs_time_plot.h:95
tplfmt
void const char const char const cs_int_t * tplfmt
Definition: cs_time_plot.h:95
CS_TIME_PLOT_CSV
Definition: cs_time_plot.h:58
cs_time_plot_set_flush_default
void cs_time_plot_set_flush_default(float flush_wtime, int n_buffer_steps)
Definition: cs_time_plot.c:1277
CS_ARGF_SUPP_CHAINE
void const char const char const cs_int_t const cs_int_t const cs_int_t const cs_real_t const cs_real_t const cs_real_t const cs_int_t const cs_int_t *lpre CS_ARGF_SUPP_CHAINE
Definition: cs_time_plot.h:95
idtvar
void const char const char const cs_int_t const cs_int_t * idtvar
Definition: cs_time_plot.h:95
nprb
void const cs_int_t const cs_int_t * nprb
Definition: cs_time_plot.h:146
ttcabs
void const cs_int_t const cs_int_t const cs_int_t const cs_real_t * ttcabs
Definition: cs_time_plot.h:146
cs_time_plot_flush_all
void cs_time_plot_flush_all(void)
Definition: cs_time_plot.c:1260
cs_time_plot_init_probe
cs_time_plot_t * cs_time_plot_init_probe(const char *plot_name, const char *file_prefix, cs_time_plot_format_t format, bool use_iteration, double flush_wtime, int n_buffer_steps, int n_probes, const int *probe_list, const cs_real_t probe_coords[], const char *probe_names[])
Definition: cs_time_plot.c:1020
xmstru
void const char const char const cs_int_t const cs_int_t const cs_int_t const cs_real_t * xmstru
Definition: cs_time_plot.h:95
ntcabs
void const cs_int_t const cs_int_t const cs_int_t * ntcabs
Definition: cs_time_plot.h:146
CS_TIME_PLOT_DAT
Definition: cs_time_plot.h:57
nstru
void const char const char const cs_int_t const cs_int_t const cs_int_t * nstru
Definition: cs_time_plot.h:95
cs_time_plot_flush
void cs_time_plot_flush(cs_time_plot_t *p)
Definition: cs_time_plot.c:1238
cs_time_plot_get_flush_default
void cs_time_plot_get_flush_default(float *flush_wtime, int *n_buffer_steps)
Definition: cs_time_plot.c:1295
t
Definition: cs_field_pointer.h:98
xcstru
void const char const char const cs_int_t const cs_int_t const cs_int_t const cs_real_t const cs_real_t * xcstru
Definition: cs_time_plot.h:95
cs_int_t
int cs_int_t
Fortran-compatible integer.
Definition: cs_defs.h:301
cs_time_plot_t
struct _cs_time_plot_t cs_time_plot_t
Definition: cs_time_plot.h:48
cs_time_plot_finalize
void cs_time_plot_finalize(cs_time_plot_t **p)
Definition: cs_time_plot.c:1129
cs_time_plot_format_t
cs_time_plot_format_t
Definition: cs_time_plot.h:56
valprb
void const cs_int_t const cs_int_t const cs_int_t const cs_real_t const cs_real_t * valprb
Definition: cs_time_plot.h:146
tplnam
void const char * tplnam
Definition: cs_time_plot.h:95
cs_base.h
xkstru
void const char const char const cs_int_t const cs_int_t const cs_int_t const cs_real_t const cs_real_t const cs_real_t * xkstru
Definition: cs_time_plot.h:95
p
Definition: cs_field_pointer.h:67