7.2
general documentation
cs_restart.h
Go to the documentation of this file.
1 #ifndef __CS_RESTART_H__
2 #define __CS_RESTART_H__
3 
4 /*============================================================================
5  * Manage checkpoint / restart files
6  *============================================================================*/
7 
8 /*
9  This file is part of code_saturne, a general-purpose CFD tool.
10 
11  Copyright (C) 1998-2022 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  * Standard C library headers
32  *----------------------------------------------------------------------------*/
33 
34 /*----------------------------------------------------------------------------
35  * Local headers
36  *----------------------------------------------------------------------------*/
37 
38 #include "cs_defs.h"
39 
40 #include "cs_time_step.h"
41 
42 /*----------------------------------------------------------------------------*/
43 
45 
46 /*============================================================================
47  * Macro definitions
48  *============================================================================*/
49 
50 /* Predefined checkpoint interval */
51 
52 #define CS_RESTART_INTERVAL_NONE -2
53 #define CS_RESTART_INTERVAL_ONLY_AT_END -1
54 #define CS_RESTART_INTERVAL_DEFAULT 0
55 
56 /* Error codes */
57 
58 #define CS_RESTART_SUCCESS 0
59 #define CS_RESTART_ERR_FILE_NUM -1
60 #define CS_RESTART_ERR_LOCATION -2
61 #define CS_RESTART_ERR_VAL_TYPE -3
62 #define CS_RESTART_ERR_N_VALS -4
63 #define CS_RESTART_ERR_MODE -5
64 #define CS_RESTART_ERR_EXISTS -6
66 /*============================================================================
67  * Local type definitions
68  *============================================================================*/
69 
72 typedef enum {
73 
78 
79 /* Datatype enumeration to transmit a data's type to a function */
80 
81 typedef enum {
87 
88 /*
89  Pointer associated with a restart file structure. The structure itself
90  is defined in "cs_restart.c", and is opaque outside that unit.
91 */
92 
93 typedef struct _cs_restart_t cs_restart_t;
94 
95 /*----------------------------------------------------------------------------*/
115 /*----------------------------------------------------------------------------*/
116 
117 typedef int
119  void *context,
120  const char *sec_name,
121  int location_id,
122  int n_location_vals,
123  cs_restart_val_type_t val_type);
124 
125 /*----------------------------------------------------------------------------*/
145 /*----------------------------------------------------------------------------*/
146 
147 typedef int
149  void *context,
150  const char *sec_name,
151  int location_id,
152  int n_location_vals,
153  cs_restart_val_type_t val_type,
154  void *val);
155 
156 /*----------------------------------------------------------------------------*/
173 /*----------------------------------------------------------------------------*/
174 
175 typedef void
177  void *context,
178  const char *sec_name,
179  int location_id,
180  int n_location_vals,
181  cs_restart_val_type_t val_type,
182  const void *val);
183 
184 /*=============================================================================
185  * Global variables
186  *============================================================================*/
187 
188 /*============================================================================
189  * Public Fortran function prototypes
190  *============================================================================*/
191 
192 /*----------------------------------------------------------------------------
193  * Indicate if a restart directory is present.
194  *
195  * Fortran interface
196  *
197  * subroutine dflsui (ntsuit, ttsuit, wtsuit)
198  * *****************
199  *
200  * integer ntsuit : <-- : > 0: checkpoint time step interval
201  * : : 0: default interval
202  * : : -1: checkpoint at end
203  * : : -2: no checkpoint
204  * double precision ttsuit : <-- : if> 0, checkpoint time interval
205  * double precision wtsuit : <-- : if> 0, checkpoint wall time interval
206  *----------------------------------------------------------------------------*/
207 
208 void CS_PROCF (dflsui, DFLSUI)
209 (
210  int *ntsuit,
211  cs_real_t *ttsuit,
212  cs_real_t *wtsuit
213 );
214 
215 /*----------------------------------------------------------------------------
216  * Check if checkpointing is recommended at a given time.
217  *
218  * Fortran interface
219  *
220  * subroutine reqsui (iisuit)
221  * *****************
222  *
223  * integer iisuit : --> : 0 if no restart required, 1 otherwise
224  *----------------------------------------------------------------------------*/
225 
226 void CS_PROCF (reqsui, REQSUI)
227 (
228  int *iisuit
229 );
230 
231 /*----------------------------------------------------------------------------
232  * Indicate checkpointing has been done at a given time.
233  *
234  * This updates the status for future checks to determine
235  * if checkpointing is recommended at a given time.
236  *
237  * Fortran interface
238  *
239  * subroutine stusui
240  * *****************
241  *----------------------------------------------------------------------------*/
242 
243 void CS_PROCF (stusui, STUSUI)
244 (
245  void
246 );
247 
248 /*----------------------------------------------------------------------------
249  * Save output mesh for turbomachinery if needed
250  *
251  * Fortran interface
252  *
253  * subroutine trbsui
254  * *****************
255  *----------------------------------------------------------------------------*/
256 
257 void CS_PROCF (trbsui, TRBSUI)
258 (
259  void
260 );
261 
262 /*----------------------------------------------------------------------------
263  * Indicate if a restart directory is present.
264  *
265  * Fortran interface
266  *
267  * subroutine indsui (isuite)
268  * *****************
269  *
270  * integer isuite : --> : 1 for restart, 0 otherwise
271  *----------------------------------------------------------------------------*/
272 
273 void CS_PROCF (indsui, INDSUI)
274 (
275  int *isuite
276 );
277 
278 /*============================================================================
279  * Public function prototypes
280  *============================================================================*/
281 
282 /*----------------------------------------------------------------------------*/
293 /*----------------------------------------------------------------------------*/
294 
295 void
296 cs_restart_checkpoint_set_defaults(int nt_interval,
297  double t_interval,
298  double wt_interval);
299 
300 /*----------------------------------------------------------------------------*/
318 /*----------------------------------------------------------------------------*/
319 
320 void
322 
323 /*----------------------------------------------------------------------------*/
329 /*----------------------------------------------------------------------------*/
330 
331 void
333 
334 /*----------------------------------------------------------------------------*/
340 /*----------------------------------------------------------------------------*/
341 
342 void
344 
345 /*----------------------------------------------------------------------------*/
351 /*----------------------------------------------------------------------------*/
352 
353 void
354 cs_restart_checkpoint_set_next_tv(double t_next);
355 
356 /*----------------------------------------------------------------------------*/
362 /*----------------------------------------------------------------------------*/
363 
364 void
365 cs_restart_checkpoint_set_next_wt(double wt_next);
366 
367 /*----------------------------------------------------------------------------*/
375 /*----------------------------------------------------------------------------*/
376 
377 bool
379 
380 /*----------------------------------------------------------------------------*/
389 /*----------------------------------------------------------------------------*/
390 
391 void
393 
394 /*----------------------------------------------------------------------------*/
400 /*----------------------------------------------------------------------------*/
401 
402 int
403 cs_restart_present(void);
404 
405 /*----------------------------------------------------------------------------*/
416 /*----------------------------------------------------------------------------*/
417 
418 cs_restart_t *
419 cs_restart_create(const char *name,
420  const char *path,
421  cs_restart_mode_t mode);
422 
423 /*----------------------------------------------------------------------------*/
429 /*----------------------------------------------------------------------------*/
430 
431 void
433 
434 /*----------------------------------------------------------------------------*/
448 /*----------------------------------------------------------------------------*/
449 
450 void
452  bool *match_cell,
453  bool *match_i_face,
454  bool *match_b_face,
455  bool *match_vertex);
456 
457 /*----------------------------------------------------------------------------*/
469 /*----------------------------------------------------------------------------*/
470 
471 int
473  const char *location_name,
474  cs_gnum_t n_glob_ents,
475  cs_lnum_t n_ents,
476  const cs_gnum_t *ent_global_num);
477 
478 /*----------------------------------------------------------------------------*/
489 /*----------------------------------------------------------------------------*/
490 
491 void
492 cs_restart_add_location_ref(const char *location_name,
493  cs_gnum_t n_glob_ents,
494  cs_lnum_t n_ents,
495  const cs_gnum_t *ent_global_num);
496 
497 /*----------------------------------------------------------------------------*/
501 /*----------------------------------------------------------------------------*/
502 
503 void
505 
506 /*----------------------------------------------------------------------------*/
520 /*----------------------------------------------------------------------------*/
521 
522 void
523 cs_restart_set_context(void *context);
524 
525 /*----------------------------------------------------------------------------*/
535 /*----------------------------------------------------------------------------*/
536 
539 
540 /*----------------------------------------------------------------------------*/
551 /*----------------------------------------------------------------------------*/
552 
555 
556 /*----------------------------------------------------------------------------*/
567 /*----------------------------------------------------------------------------*/
568 
571 
572 /*----------------------------------------------------------------------------*/
580 /*----------------------------------------------------------------------------*/
581 
582 const char *
583 cs_restart_get_name(const cs_restart_t *restart);
584 
585 /*----------------------------------------------------------------------------*/
595 /*----------------------------------------------------------------------------*/
596 
597 cs_lnum_t
599  int location_id);
600 
601 /*----------------------------------------------------------------------------*/
607 /*----------------------------------------------------------------------------*/
608 
609 void
610 cs_restart_dump_index(const cs_restart_t *restart);
611 
612 /*----------------------------------------------------------------------------*/
625 /*----------------------------------------------------------------------------*/
626 
627 int
629  const char *sec_name,
630  int location_id,
631  int n_location_vals,
632  cs_restart_val_type_t val_type);
633 
634 /*----------------------------------------------------------------------------*/
648 /*----------------------------------------------------------------------------*/
649 
650 int
652  const char *sec_name,
653  int location_id,
654  int n_location_vals,
655  cs_restart_val_type_t val_type,
656  void *val);
657 
658 /*----------------------------------------------------------------------------*/
669 /*----------------------------------------------------------------------------*/
670 
671 void
673  const char *sec_name,
674  int location_id,
675  int n_location_vals,
676  cs_restart_val_type_t val_type,
677  const void *val);
678 
679 /*----------------------------------------------------------------------------*/
691 /*----------------------------------------------------------------------------*/
692 
693 int
695  const char *name,
696  cs_lnum_t *n_particles);
697 
698 /*----------------------------------------------------------------------------*/
710 /*----------------------------------------------------------------------------*/
711 
712 int
714  int particles_location_id,
715  cs_lnum_t *particle_cell_id,
716  cs_real_t *particle_coords);
717 
718 /*----------------------------------------------------------------------------*/
738 /*----------------------------------------------------------------------------*/
739 
740 int
742  const char *name,
743  bool number_by_coords,
744  cs_lnum_t n_particles,
745  const cs_lnum_t *particle_cell_id,
746  const cs_real_t *particle_coords);
747 
748 /*----------------------------------------------------------------------------*/
770 /*----------------------------------------------------------------------------*/
771 
772 int
774  const char *sec_name,
775  int location_id,
776  int ref_location_id,
777  cs_lnum_t ref_id_base,
778  cs_lnum_t *ref_id);
779 
780 /*----------------------------------------------------------------------------*/
795 /*----------------------------------------------------------------------------*/
796 
797 void
799  const char *sec_name,
800  int location_id,
801  int ref_location_id,
802  cs_lnum_t ref_id_base,
803  const cs_lnum_t *ref_id);
804 
805 /*----------------------------------------------------------------------------*/
821 /*----------------------------------------------------------------------------*/
822 
823 int
825  const char *sec_name,
826  const char *old_name,
827  int location_id,
828  int n_location_vals,
829  cs_restart_val_type_t val_type,
830  void *val);
831 
832 /*----------------------------------------------------------------------------*/
851 /*----------------------------------------------------------------------------*/
852 
853 int
855  const char *sec_name,
856  const char *old_name_x,
857  const char *old_name_y,
858  const char *old_name_z,
859  int location_id,
860  cs_real_3_t *val);
861 
862 /*----------------------------------------------------------------------------*/
884 /*----------------------------------------------------------------------------*/
885 
886 int
888  const char *sec_name,
889  const char *old_name_xx,
890  const char *old_name_yy,
891  const char *old_name_zz,
892  const char *old_name_xy,
893  const char *old_name_yz,
894  const char *old_name_xz,
895  int location_id,
896  cs_real_6_t *val);
897 
898 /*----------------------------------------------------------------------------*/
920 /*----------------------------------------------------------------------------*/
921 
922 int
924  const char *sec_name,
925  const char *old_name_xx,
926  const char *old_name_yy,
927  const char *old_name_zz,
928  const char *old_name_xy,
929  const char *old_name_yz,
930  const char *old_name_xz,
931  int location_id,
932  cs_real_66_t *val);
933 
934 /*----------------------------------------------------------------------------*/
938 /*----------------------------------------------------------------------------*/
939 
940 void
942 
943 /*----------------------------------------------------------------------------*/
949 /*----------------------------------------------------------------------------*/
950 
951 int
953 
954 /*----------------------------------------------------------------------------*/
960 /*----------------------------------------------------------------------------*/
961 
962 int
964 
965 /*----------------------------------------------------------------------------*/
978 /*----------------------------------------------------------------------------*/
979 
980 void
981 cs_restart_set_n_max_checkpoints(int n_checkpoints);
982 
983 /*----------------------------------------------------------------------------*/
987 /*----------------------------------------------------------------------------*/
988 
989 void
991 
992 /*----------------------------------------------------------------------------*/
996 /*----------------------------------------------------------------------------*/
997 
998 void
1000 
1001 /*----------------------------------------------------------------------------*/
1002 
1004 
1005 #endif /* __CS_RESTART_H__ */
Definition: cs_restart.h:85
int cs_restart_read_section(cs_restart_t *restart, const char *sec_name, int location_id, int n_location_vals, cs_restart_val_type_t val_type, void *val)
Read a section from a restart file.
Definition: cs_restart.c:2789
time step descriptor
Definition: cs_time_step.h:64
unsigned long cs_gnum_t
global mesh entity number
Definition: cs_defs.h:301
cs_restart_write_section_t * cs_restart_set_write_section_func(cs_restart_write_section_t *func)
Associate a function and its input to all restart section write operations.
Definition: cs_restart.c:2656
cs_real_t cs_real_6_t[6]
vector of 6 floating-point values
Definition: cs_defs.h:337
int cs_restart_write_particles(cs_restart_t *restart, const char *name, bool number_by_coords, cs_lnum_t n_particles, const cs_lnum_t *particle_cell_id, const cs_real_t *particle_coords)
Write basic particles information to a restart file.
Definition: cs_restart.c:3176
void cs_restart_dump_index(const cs_restart_t *restart)
Print the index associated with a restart file in read mode.
Definition: cs_restart.c:2717
void cs_restart_checkpoint_done(const cs_time_step_t *ts)
Indicate checkpointing has been done at a given time.
Definition: cs_restart.c:2054
void cs_restart_clear_locations_ref(void)
Clear reference location definitions with a private copy.
Definition: cs_restart.c:2567
void cs_restart_checkpoint_set_defaults(int nt_interval, double t_interval, double wt_interval)
Define default checkpoint interval.
Definition: cs_restart.c:1881
void cs_restart_print_stats(void)
Print statistics associated with restart files.
Definition: cs_restart.c:3973
cs_restart_t * cs_restart_create(const char *name, const char *path, cs_restart_mode_t mode)
Initialize a restart file.
Definition: cs_restart.c:2121
integer, save ntsuit
saving period of the restart files
Definition: entsor.f90:52
cs_real_t cs_real_66_t[6][6]
6x6 matrix of floating-point values
Definition: cs_defs.h:343
#define BEGIN_C_DECLS
Definition: cs_defs.h:510
void cs_restart_write_section(cs_restart_t *restart, const char *sec_name, int location_id, int n_location_vals, cs_restart_val_type_t val_type, const void *val)
Write a section to a restart file.
Definition: cs_restart.c:2832
cs_restart_check_section_t * cs_restart_set_check_section_func(cs_restart_check_section_t *func)
Associate a function to restart section check operations.
Definition: cs_restart.c:2612
cs_restart_mode_t
Definition: cs_restart.h:72
const char * cs_restart_get_name(const cs_restart_t *restart)
Return name of restart file.
Definition: cs_restart.c:2675
Definition: cs_restart.h:82
void cs_restart_add_location_ref(const char *location_name, cs_gnum_t n_glob_ents, cs_lnum_t n_ents, const cs_gnum_t *ent_global_num)
Add a reference location definition with a private copy.
Definition: cs_restart.c:2525
int cs_restart_read_section_compat(cs_restart_t *restart, const char *sec_name, const char *old_name, int location_id, int n_location_vals, cs_restart_val_type_t val_type, void *val)
Read a section from a restart file, when that section may have used a different name in a previous ve...
Definition: cs_restart.c:3517
double cs_real_t
Floating-point value.
Definition: cs_defs.h:322
integer, save isuite
Indicator of a calculation restart (=1) or not (=0). This value is set automatically by the code; dep...
Definition: optcal.f90:281
void cs_restart_set_n_max_checkpoints(int n_checkpoints)
Set the number of checkpoint files to keep.
Definition: cs_restart.c:4049
int cs_restart_read_real_3_t_compat(cs_restart_t *restart, const char *sec_name, const char *old_name_x, const char *old_name_y, const char *old_name_z, int location_id, cs_real_3_t *val)
Read a cs_real_3_t vector section from a restart file, when that section may have used a different na...
Definition: cs_restart.c:3594
void reqsui(int *iisuit)
Definition: cs_restart.c:1797
int cs_restart_read_real_66_t_compat(cs_restart_t *restart, const char *sec_name, const char *old_name_xx, const char *old_name_yy, const char *old_name_zz, const char *old_name_xy, const char *old_name_yz, const char *old_name_xz, int location_id, cs_real_66_t *val)
Read a cs_real_66_t tensor section from a restart file, when that section may have used a different n...
Definition: cs_restart.c:3850
void cs_restart_checkpoint_set_last_ts(int nt_last)
Define last forced checkpoint time step.
Definition: cs_restart.c:1925
bool cs_restart_checkpoint_required(const cs_time_step_t *ts)
Check if checkpointing is recommended at a given time.
Definition: cs_restart.c:1983
cs_restart_read_section_t * cs_restart_set_read_section_func(cs_restart_read_section_t *func)
Associate a function and its input to all restart section read operations.
Definition: cs_restart.c:2634
int cs_restart_present(void)
Check if we have a restart directory.
Definition: cs_restart.c:2092
Definition: cs_restart.h:84
void() cs_restart_write_section_t(cs_restart_t *restart, void *context, const char *sec_name, int location_id, int n_location_vals, cs_restart_val_type_t val_type, const void *val)
Function pointer for modifying behavior when writing a section.
Definition: cs_restart.h:176
int cs_restart_check_if_restart_from_ncfd(cs_restart_t *r)
Checks if restart is done from a NCFD checkpoint file.
Definition: cs_restart.c:3996
struct _cs_restart_t cs_restart_t
Definition: cs_restart.h:93
void stusui(void)
Definition: cs_restart.c:1820
void cs_restart_checkpoint_set_next_ts(int nt_next)
Define next forced checkpoint time step.
Definition: cs_restart.c:1939
int cs_restart_read_particles_info(cs_restart_t *restart, const char *name, cs_lnum_t *n_particles)
Read basic particles information from a restart file.
Definition: cs_restart.c:2872
int cs_restart_read_ids(cs_restart_t *restart, const char *sec_name, int location_id, int ref_location_id, cs_lnum_t ref_id_base, cs_lnum_t *ref_id)
Read a referenced location id section from a restart file.
Definition: cs_restart.c:3311
int cs_restart_read_real_6_t_compat(cs_restart_t *restart, const char *sec_name, const char *old_name_xx, const char *old_name_yy, const char *old_name_zz, const char *old_name_xy, const char *old_name_yz, const char *old_name_xz, int location_id, cs_real_6_t *val)
Read a cs_real_6_t tensor section from a restart file, when that section may have used a different na...
Definition: cs_restart.c:3708
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:335
int cs_restart_check_section(cs_restart_t *restart, const char *sec_name, int location_id, int n_location_vals, cs_restart_val_type_t val_type)
Check the presence of a given section in a restart file.
Definition: cs_restart.c:2756
void cs_restart_clean_multiwriters_history(void)
Remove all previous checkpoints which are not to be retained.
Definition: cs_restart.c:4071
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:316
Definition: cs_restart.h:75
void indsui(int *isuite)
Definition: cs_restart.c:1856
void cs_restart_checkpoint_set_next_wt(double wt_next)
Define next forced checkpoint wall-clock time value.
Definition: cs_restart.c:1967
cs_restart_val_type_t
Definition: cs_restart.h:81
#define END_C_DECLS
Definition: cs_defs.h:511
int cs_restart_is_from_ncfd(void)
Returns if restart is done from a NCFD checkpoint file.
Definition: cs_restart.c:4025
void cs_restart_checkpoint_set_next_tv(double t_next)
Define next forced checkpoint time value.
Definition: cs_restart.c:1953
int cs_restart_read_particles(cs_restart_t *restart, int particles_location_id, cs_lnum_t *particle_cell_id, cs_real_t *particle_coords)
Read basic particles information from a restart file.
Definition: cs_restart.c:3059
void trbsui(void)
Definition: cs_restart.c:1837
#define CS_PROCF(x, y)
Definition: cs_defs.h:524
Definition: cs_restart.h:83
void dflsui(int *ntsuit, cs_real_t *ttsuit, cs_real_t *wtsuit)
Definition: cs_restart.c:1776
void cs_restart_set_context(void *context)
Associate a context to restart section check operations.
Definition: cs_restart.c:2594
cs_lnum_t cs_restart_get_n_location_elts(const cs_restart_t *restart, int location_id)
Return local number of elements associated with a given restart location.
Definition: cs_restart.c:2695
void cs_restart_destroy(cs_restart_t **restart)
Destroy structure associated with a restart file (and close the file).
Definition: cs_restart.c:2316
void cs_restart_check_base_location(const cs_restart_t *restart, bool *match_cell, bool *match_i_face, bool *match_b_face, bool *match_vertex)
Check the locations associated with a restart file.
Definition: cs_restart.c:2372
void cs_restart_multiwriters_destroy_all(void)
Destroy the multiwriter structure at the end of the computation.
Definition: cs_restart.c:4130
void cs_restart_checkpoint_set_mesh_mode(int mode)
Define checkpoint behavior for mesh.
Definition: cs_restart.c:1911
Definition: cs_restart.h:74
int cs_restart_add_location(cs_restart_t *restart, const char *location_name, cs_gnum_t n_glob_ents, cs_lnum_t n_ents, const cs_gnum_t *ent_global_num)
Add a location definition.
Definition: cs_restart.c:2430
int() cs_restart_check_section_t(cs_restart_t *restart, void *context, const char *sec_name, int location_id, int n_location_vals, cs_restart_val_type_t val_type)
Function pointer for modifying behavior when checking a section&#39;s presence.
Definition: cs_restart.h:118
void cs_restart_write_ids(cs_restart_t *restart, const char *sec_name, int location_id, int ref_location_id, cs_lnum_t ref_id_base, const cs_lnum_t *ref_id)
Write a referenced location id section to a restart file.
Definition: cs_restart.c:3414
int() cs_restart_read_section_t(cs_restart_t *restart, void *context, const char *sec_name, int location_id, int n_location_vals, cs_restart_val_type_t val_type, void *val)
Function pointer for modifying behavior when reading a section.
Definition: cs_restart.h:148