My Project
programmer's documentation
fvm_to_ccm.h
Go to the documentation of this file.
1 #ifndef __FVM_TO_CCM_H__
2 #define __FVM_TO_CCM_H__
3 
4 #if defined(HAVE_CCM)
5 
6 /*============================================================================
7  * Write a nodal representation associated with a mesh and associated
8  * variables to CCM-IO files
9  *============================================================================*/
10 
11 /*
12  This file is part of Code_Saturne, a general-purpose CFD tool.
13 
14  Copyright (C) 1998-2019 EDF S.A.
15 
16  This program is free software; you can redistribute it and/or modify it under
17  the terms of the GNU General Public License as published by the Free Software
18  Foundation; either version 2 of the License, or (at your option) any later
19  version.
20 
21  This program is distributed in the hope that it will be useful, but WITHOUT
22  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
23  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
24  details.
25 
26  You should have received a copy of the GNU General Public License along with
27  this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
28  Street, Fifth Floor, Boston, MA 02110-1301, USA.
29 */
30 
31 /*----------------------------------------------------------------------------*/
32 
33 #include "cs_defs.h"
34 
35 /*----------------------------------------------------------------------------
36  * Local headers
37  *----------------------------------------------------------------------------*/
38 
39 #include "fvm_defs.h"
40 #include "fvm_nodal.h"
41 #include "fvm_writer.h"
42 
43 /*----------------------------------------------------------------------------*/
44 
46 
47 /*=============================================================================
48  * Macro definitions
49  *============================================================================*/
50 
51 /*============================================================================
52  * Type definitions
53  *============================================================================*/
54 
55 /*=============================================================================
56  * Public function prototypes
57  *============================================================================*/
58 
59 /*----------------------------------------------------------------------------
60  * Returns number of library version strings associated with the CCM-IO format.
61  *
62  * returns:
63  * number of library version strings associated with the CCM-IO format.
64  *----------------------------------------------------------------------------*/
65 
66 int
67 fvm_to_ccm_n_version_strings(void);
68 
69 /*----------------------------------------------------------------------------
70  * Returns a library version string associated with the CCM-IO format.
71  *
72  * In certain cases, when using dynamic libraries, fvm may be compiled
73  * with one library version, and linked with another. If both run-time
74  * and compile-time version information is available, this function
75  * will return the run-time version string by default.
76  *
77  * Setting the compile_time flag to 1, the compile-time version string
78  * will be returned if this is different from the run-time version.
79  * If the version is the same, or only one of the 2 version strings are
80  * available, a NULL character string will be returned with this flag set.
81  *
82  * parameters:
83  * string_index <-- index in format's version string list (0 to n-1)
84  * compile_time <-- 0 by default, 1 if we want the compile-time version
85  * string, if different from the run-time version.
86  *
87  * returns:
88  * pointer to constant string containing the library's version.
89  *----------------------------------------------------------------------------*/
90 
91 const char *
92 fvm_to_ccm_version_string(int string_index,
93  int compile_time_version);
94 
95 /*----------------------------------------------------------------------------
96  * Initialize FVM to CCM-IO file writer.
97  *
98  * parameters:
99  * name <-- base output case name.
100  * options <-- whitespace separated, lowercase options list
101  * time_dependecy <-- indicates if and how meshes will change with time
102  * comm <-- associated MPI communicator.
103  *
104  * returns:
105  * pointer to opaque CCM-IO writer structure.
106  *----------------------------------------------------------------------------*/
107 
108 #if defined(HAVE_MPI)
109 
110 void *
111 fvm_to_ccm_init_writer(const char *name,
112  const char *path,
113  const char *options,
114  fvm_writer_time_dep_t time_dependency,
115  MPI_Comm comm);
116 
117 #else
118 
119 void *
120 fvm_to_ccm_init_writer(const char *name,
121  const char *path,
122  const char *options,
123  fvm_writer_time_dep_t time_dependency);
124 
125 #endif
126 
127 /*----------------------------------------------------------------------------
128  * Finalize FVM to CCM-IO file writer.
129  *
130  * parameters:
131  * this_writer_p <-- pointer to opaque CCM-IO writer structure.
132  *
133  * returns:
134  * NULL pointer.
135  *----------------------------------------------------------------------------*/
136 
137 void *
138 fvm_to_ccm_finalize_writer(void *this_writer_p);
139 
140 /*----------------------------------------------------------------------------
141  * Associate new time step with a CCM-IO geometry.
142  *
143  * parameters:
144  * this_writer_p <-- pointer to associated writer
145  * time_step <-- time step number
146  * time_value <-- time_value number
147  *----------------------------------------------------------------------------*/
148 
149 void
150 fvm_to_ccm_set_mesh_time(void *this_writer_p,
151  int time_step,
152  double time_value);
153 
154 /*----------------------------------------------------------------------------
155  * Write nodal mesh to a CCM-IO file
156  *
157  * parameters:
158  * this_writer_p <-- pointer to associated writer.
159  * mesh <-- pointer to nodal mesh structure that should be written.
160  *----------------------------------------------------------------------------*/
161 
162 void
163 fvm_to_ccm_export_nodal(void *this_writer_p,
164  const fvm_nodal_t *mesh);
165 
166 /*----------------------------------------------------------------------------
167  * Write field associated with a nodal mesh to a CCM-IO file.
168  *
169  * Assigning a negative value to the time step indicates a time-independent
170  * field (in which case the time_value argument is unused).
171  *
172  * parameters:
173  * this_writer_p <-- pointer to associated writer
174  * mesh <-- pointer to associated nodal mesh structure
175  * name <-- variable name
176  * location <-- variable definition location (nodes or elements)
177  * dimension <-- variable dimension (0: constant, 1: scalar,
178  * 3: vector, 6: sym. tensor, 9: asym. tensor)
179  * interlace <-- indicates if variable in memory is interlaced
180  * n_parent_lists <-- indicates if variable values are to be obtained
181  * directly through the local entity index (when 0) or
182  * through the parent entity numbers (when 1 or more)
183  * parent_num_shift <-- parent number to value array index shifts;
184  * size: n_parent_lists
185  * datatype <-- indicates the data type of (source) field values
186  * time_step <-- number of the current time step
187  * time_value <-- associated time value
188  * field_values <-- array of associated field value arrays
189  *----------------------------------------------------------------------------*/
190 
191 void
192 fvm_to_ccm_export_field(void *this_writer_p,
193  const fvm_nodal_t *mesh,
194  const char *name,
195  fvm_writer_var_loc_t location,
196  int dimension,
197  cs_interlace_t interlace,
198  int n_parent_lists,
199  const cs_lnum_t parent_num_shift[],
200  cs_datatype_t datatype,
201  int time_step,
202  double time_value,
203  const void *const field_values[]);
204 
205 /*----------------------------------------------------------------------------*/
206 
208 
209 #endif /* HAVE_CCM */
210 
211 #endif /* __FVM_TO_CCM_H__ */
fvm_writer_var_loc_t
fvm_writer_var_loc_t
Definition: fvm_writer.h:69
cs_defs.h
END_C_DECLS
#define END_C_DECLS
Definition: cs_defs.h:468
fvm_writer.h
BEGIN_C_DECLS
#define BEGIN_C_DECLS
Definition: cs_defs.h:467
mesh
Definition: mesh.f90:26
cs_datatype_t
cs_datatype_t
Definition: cs_defs.h:260
fvm_writer_time_dep_t
fvm_writer_time_dep_t
Definition: fvm_writer.h:57
cs_lnum_t
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:298
cs_interlace_t
cs_interlace_t
Definition: cs_defs.h:439
fvm_nodal.h
fvm_defs.h