9.2
general documentation
cs_interface.h
Go to the documentation of this file.
1#ifndef CS_INTERFACE_H
2#define CS_INTERFACE_H
3
4/*============================================================================
5 * Main structure for handling of interfaces associating mesh elements
6 * (such as inter-processor or periodic connectivity between cells, faces,
7 * or vertices);
8 *============================================================================*/
9
10/*
11 This file is part of code_saturne, a general-purpose CFD tool.
12
13 Copyright (C) 1998-2026 EDF S.A.
14
15 This program is free software; you can redistribute it and/or modify it under
16 the terms of the GNU General Public License as published by the Free Software
17 Foundation; either version 2 of the License, or (at your option) any later
18 version.
19
20 This program is distributed in the hope that it will be useful, but WITHOUT
21 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
23 details.
24
25 You should have received a copy of the GNU General Public License along with
26 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
27 Street, Fifth Floor, Boston, MA 02110-1301, USA.
28*/
29
30/*----------------------------------------------------------------------------*/
31
32/*----------------------------------------------------------------------------
33 * Local headers
34 *----------------------------------------------------------------------------*/
35
36#include "fvm/fvm_defs.h"
37#include "fvm/fvm_periodicity.h"
38
39/*=============================================================================
40 * Macro definitions
41 *============================================================================*/
42
43/*============================================================================
44 * Type definitions
45 *============================================================================*/
46
47/*----------------------------------------------------------------------------
48 * Structure defining an I/O numbering scheme
49 *----------------------------------------------------------------------------*/
50
51/*
52 Pointer to structures representing an interface and a list of interfaces.
53 The structures themselves are private, and are defined in cs_interface.c
54*/
55
56typedef struct _cs_interface_t cs_interface_t;
57typedef struct _cs_interface_set_t cs_interface_set_t;
58
59/*=============================================================================
60 * Static global variables
61 *============================================================================*/
62
63/*=============================================================================
64 * Public function prototypes
65 *============================================================================*/
66
67/*----------------------------------------------------------------------------*/
68/*
69 * \brief Return process rank associated with an interface's distant elements.
70 *
71 * \param[in] itf pointer to interface structure
72 *
73 * \return process rank associated with the interface's distant elements
74 */
75/*----------------------------------------------------------------------------*/
76
77int
79
80/*----------------------------------------------------------------------------*/
81/*
82 * \brief Return number of local and distant elements defining an interface.
83 *
84 * \param[in] itf pointer to interface structure
85 *
86 * \return number of local and distant elements defining the interface
87 */
88/*----------------------------------------------------------------------------*/
89
92
93/*----------------------------------------------------------------------------*/
94/*
95 * \brief Return pointer to array of local element ids defining an interface.
96 *
97 * The size of the array may be obtained by cs_interface_size().
98 * The array is owned by the interface structure, and is not copied
99 * (hence the constant qualifier for the return value).
100 *
101 * \param[in] itf pointer to interface structure
102 *
103 * \return pointer to array of local element ids (0 to n-1) defining
104 * the interface
105 */
106/*----------------------------------------------------------------------------*/
107
108const cs_lnum_t *
110
111/*----------------------------------------------------------------------------*/
112/*
113 * \brief Return pointer to array of matching element ids defining an interface.
114 *
115 * This array is only available if cs_interface_set_add_match_ids() has
116 * been called for the containing interface set.
117 *
118 * The size of the array may be obtained by cs_interface_size().
119 * The array is owned by the interface structure, and is not copied
120 * (hence the constant qualifier for the return value).
121 *
122 * \param[in] itf pointer to interface structure
123 *
124 * \return pointer to array of local element ids (0 to n-1) defining
125 * the interface
126 */
127/*----------------------------------------------------------------------------*/
128
129const cs_lnum_t *
131
132/*----------------------------------------------------------------------------*/
133/*
134 * \brief Return size of index of sub-sections for different transformations.
135 *
136 * The index is applicable to both local_num and distant_num arrays,
137 * with purely parallel equivalences appearing at position 0, and
138 * equivalences through periodic transform i at position i+1;
139 * Its size should thus be equal to 1 + number of periodic transforms + 1,
140 * In absence of periodicity, it may be 0, as the index is not needed.
141 *
142 * \param[in] itf pointer to interface structure
143 *
144 * \return transform index size for the interface
145 */
146/*----------------------------------------------------------------------------*/
147
150
151/*----------------------------------------------------------------------------*/
152/*
153 * \brief Return pointer to index of sub-sections for different transformations.
154 *
155 * The index is applicable to both local_num and distant_num arrays,
156 * with purely parallel equivalences appearing at position 0, and
157 * equivalences through periodic transform i at position i+1;
158 * In absence of periodicity, it may be NULL, as it is not needed.
159 *
160 * \param[in] itf pointer to interface structure
161 *
162 * \return pointer to transform index for the interface
163 */
164/*----------------------------------------------------------------------------*/
165
166const cs_lnum_t *
168
169/*----------------------------------------------------------------------------*/
170/*
171 * \brief Creation of a list of interfaces between elements of a same type.
172 *
173 * These interfaces may be used to identify equivalent vertices or faces using
174 * domain splitting, as well as periodic elements (on the same or on
175 * distant ranks).
176 *
177 * Note that periodicity information will be completed and made consistent
178 * based on the input, so that if a periodic couple is defined on a given rank,
179 * the reverse couple wil be defined, whether it is also defined on the same
180 * or a different rank.
181 *
182 * In addition, multiple periodicity interfaces will be built automatically
183 * if the periodicity structure provides for composed periodicities, so they
184 * need not be defined prior to this function being called.
185 *
186 * \param[in] n_elts number of local elements considered
187 * (size of parent_element_id[])
188 * \param[in] parent_element_id pointer to list of selected elements
189 * local ids (0 to n-1), or NULL if all
190 * first n_elts elements are used
191 * \param[in] global_number pointer to list of global (i.e. domain
192 * splitting independent) element numbers
193 * \param[in] periodicity periodicity information (NULL if none)
194 * \param[in] n_periodic_lists number of periodic lists (may be local)
195 * \param[in] periodicity_num periodicity number (1 to n) associated
196 * with each periodic list (primary
197 * periodicities only)
198 * \param[in] n_periodic_couples number of periodic couples associated
199 * with each periodic list
200 * \param[in] periodic_couples array indicating periodic couples
201 * (interlaced, using global numberings)
202 * for each list
203 *
204 * \return pointer to list of interfaces (possibly NULL in serial mode)
205 */
206/*----------------------------------------------------------------------------*/
207
210 const cs_lnum_t parent_element_id[],
211 const cs_gnum_t global_number[],
212 const fvm_periodicity_t *periodicity,
213 int n_periodic_lists,
214 const int periodicity_num[],
215 const cs_lnum_t n_periodic_couples[],
216 const cs_gnum_t *const periodic_couples[]);
217
218/*----------------------------------------------------------------------------*/
219/*
220 * \brief Destruction of an interface set.
221 *
222 * \param[in, out] ifs pointer to pointer to structure to destroy
223 */
224/*----------------------------------------------------------------------------*/
225
226void
228
229/*----------------------------------------------------------------------------*/
230/*
231 * \brief Duplicate an interface set, applying an optional constant stride.
232 *
233 * \param[in, out] ifs pointer to interface set structure
234 * \param[in] stride if > 1, each element subdivided in stride elements
235 *
236 * \return pointer to new interface set
237 */
238/*----------------------------------------------------------------------------*/
239
242 cs_lnum_t stride);
243
244/*----------------------------------------------------------------------------*/
245/*
246 * \brief Duplicate an interface set for coupled variable blocks.
247 *
248 * \param[in, out] ifs pointer to interface set structure
249 * \param[in] block_size local block size (number of elements)
250 * \param[in] n_blocks number of associated blocks
251 *
252 * \return pointer to new interface set
253 */
254/*----------------------------------------------------------------------------*/
255
258 cs_lnum_t block_size,
259 cs_lnum_t n_blocks);
260
261/*----------------------------------------------------------------------------*/
262/*
263 * \brief Return number of interfaces associated with an interface set.
264 *
265 * \param[in] ifs pointer to interface set structure
266 *
267 * \return number of interfaces in set
268 */
269/*----------------------------------------------------------------------------*/
270
271int
273
274/*----------------------------------------------------------------------------*/
275/*
276 * \brief Return total number of elements in interface set.
277 *
278 * This is equal to the sum of cs_interface_size() on the cs_interface_size()
279 * interfaces of a set.
280 *
281 * \param[in] ifs pointer to interface set structure
282 *
283 * \return number of interfaces in set
284 */
285/*----------------------------------------------------------------------------*/
286
289
290/*----------------------------------------------------------------------------*/
291/*
292 * \brief Return pointer to a given interface in an interface set.
293 *
294 * \param[in] ifs pointer to interface set structure
295 * \param[in] interface_id index of interface in set (0 to n-1)
296 *
297 * \return pointer to interface structure
298 */
299/*----------------------------------------------------------------------------*/
300
301const cs_interface_t *
303 int interface_id);
304
305/*----------------------------------------------------------------------------*/
306/*
307 * \brief Return pointer to the periocicity structure associated of an
308 * interface set.
309 *
310 * \param[in] ifs pointer to interface set structure
311 *
312 * \return pointer to periodicity structure, or NULL
313 */
314/*----------------------------------------------------------------------------*/
315
316const fvm_periodicity_t *
318
319/*----------------------------------------------------------------------------*/
320/*
321 * \brief Apply renumbering of elements referenced by an interface set.
322 *
323 * For any given element i, a negative old_to_new[i] value means that that
324 * element does not appear anymore in the new numbering.
325 *
326 * \param[in, out] ifs pointer to interface set structure
327 * \param[in] old_to_new renumbering array (0 to n-1 numbering)
328 */
329/*----------------------------------------------------------------------------*/
330
331void
333 const cs_lnum_t old_to_new[]);
334
335/*----------------------------------------------------------------------------*/
336/*
337 * \brief Copy array from distant or matching interface elements to
338 * local elements.
339 *
340 * Source and destination arrays define values for all elements in the
341 * interface set (i.e. all elements listed by cs_interface_get_elt_ids()
342 * when looping over interfaces of a set.
343 *
344 * \param[in] ifs pointer to interface set structure
345 * \param[in] datatype type of data considered
346 * \param[in] stride number of values per entity (interlaced)
347 * \param[in] src_on_parent true if source array is defined on the elements
348 * defined by ifs->elt_ids, false if source array
349 * defined directly on cs_interface_set_n_elts(ifs)
350 * \param[in] src source array (size:
351 * cs_interface_set_n_elts(ifs)*stride
352 * or parent array size * stride)
353 * \param[out] dest destination array (size:
354 * cs_interface_set_n_elts(ifs)*stride)
355 */
356/*----------------------------------------------------------------------------*/
357
358void
360 cs_datatype_t datatype,
361 int stride,
362 bool src_on_parent,
363 const void *src,
364 void *dest);
365
366/*----------------------------------------------------------------------------*/
367/*
368 * \brief Copy indexed array from distant or matching interface elements to
369 * local elements.
370 *
371 * Source and destination arrays define values for all elements in the
372 * interface set (i.e. all elements listed by cs_interface_get_elt_ids()
373 * when looping over interfaces of a set.
374 *
375 * Note that when copying the same type of data to all matching elements,
376 * the source and destination index may be the same, if src_on_parent is true.
377 * To avoid requiring a separate destination index, the dest_index argument
378 * may be set to NULL, in which case it is assumed that source and destination
379 * are symmetric, and src_index is sufficient to determine sizes (whether
380 * src_on_parent is true or not).
381 *
382 * In some use cases, for example when copying values only in one direction,
383 * the copying is not symmetric, so both a source and destination buffer must
384 * be provided.
385 *
386 * \param[in] ifs pointer to interface set structure
387 * \param[in] datatype type of data considered
388 * \param[in] src_on_parent true if source array is defined on the elements
389 * defined by ifs->elt_ids, false if source array
390 * defined directly on cs_interface_set_n_elts(ifs)
391 * \param[in] src_index index for source array
392 * \param[in] dest_index index for destination array, or NULL
393 * \param[in] src source array (size:
394 * src_index[cs_interface_set_n_elts(ifs)]
395 * or parent array size)
396 * \param[out] dest destination array (size:
397 * src_index[cs_interface_set_n_elts(ifs)] or
398 * dest_index[cs_interface_set_n_elts(ifs)])
399 */
400/*----------------------------------------------------------------------------*/
401
402void
404 cs_datatype_t datatype,
405 bool src_on_parent,
406 const cs_lnum_t src_index[],
407 const cs_lnum_t dest_index[],
408 const void *src,
409 void *dest);
410
411/*----------------------------------------------------------------------------*/
412/*
413 * \brief Update values using the bitwise inclusive or operation for elements
414 * associated with an interface set.
415 *
416 * On input, the variable array should contain local contributions. On output,
417 * contributions from matching elements on parallel or periodic boundaries
418 * have been processed.
419 *
420 * Only the values of elements belonging to the interfaces are modified.
421 *
422 * \param[in] ifs pointer to a fvm_interface_set_t structure
423 * \param[in] n_elts number of elements in var buffer
424 * \param[in] stride number of values (non interlaced) by entity
425 * \param[in] interlace true if variable is interlaced (for stride > 1)
426 * \param[in] datatype type of data considered
427 * \param[in, out] var variable buffer
428 */
429/*----------------------------------------------------------------------------*/
430
431void
433 cs_lnum_t n_elts,
434 cs_lnum_t stride,
435 bool interlace,
436 cs_datatype_t datatype,
437 void *var);
438
439/*----------------------------------------------------------------------------*/
440/*
441 * \brief Update the sum of values for elements associated with an
442 * interface set.
443 *
444 * On input, the variable array should contain local contributions. On output,
445 * contributions from matching elements on parallel or periodic boundaries
446 * have been added.
447 *
448 * Only the values of elements belonging to the interfaces are modified.
449 *
450 * \param[in] ifs pointer to a fvm_interface_set_t structure
451 * \param[in] n_elts number of elements in var buffer
452 * \param[in] stride number of values (non interlaced) by entity
453 * \param[in] interlace true if variable is interlaced (for stride > 1)
454 * \param[in] datatype type of data considered
455 * \param[in, out] var variable buffer
456 */
457/*----------------------------------------------------------------------------*/
458
459void
461 cs_lnum_t n_elts,
462 cs_lnum_t stride,
463 bool interlace,
464 cs_datatype_t datatype,
465 void *var);
466
467/*----------------------------------------------------------------------------*/
468/*
469 * \brief Update the sum of values for elements associated with an
470 * interface set, allowing control over periodicity.
471 *
472 * On input, the variable array should contain local contributions. On output,
473 * contributions from matching elements on parallel or periodic boundaries
474 * have been added.
475 *
476 * Only the values of elements belonging to the interfaces are modified.
477 *
478 * \param[in] ifs pointer to a fvm_interface_set_t structure
479 * \param[in] n_elts number of elements in var buffer
480 * \param[in] stride number of values (non interlaced) by entity
481 * \param[in] interlace true if variable is interlaced (for stride > 1)
482 * \param[in] datatype type of data considered
483 * \param[in] tr_ignore if > 0, ignore periodicity with rotation;
484 * if > 1, ignore all periodic transforms
485 * \param[in, out] var variable buffer
486 */
487/*----------------------------------------------------------------------------*/
488
489void
491 cs_lnum_t n_elts,
492 cs_lnum_t stride,
493 bool interlace,
494 cs_datatype_t datatype,
495 int tr_ignore,
496 void *var);
497
498/*----------------------------------------------------------------------------*/
499/*
500 * \brief Update the minimum value of elements associated with an interface
501 * set.
502 *
503 * On input, the variable array should contain local contributions. On output,
504 * contributions from matching elements on parallel or periodic boundaries
505 * have been updated.
506 *
507 * Only the values of elements belonging to the interfaces are modified.
508 *
509 * \param[in] ifs pointer to a cs_interface_set_t structure
510 * \param[in] n_elts number of elements in var buffer
511 * \param[in] stride number of values (non interlaced) by entity
512 * \param[in] interlace true if variable is interlaced (for stride > 1)
513 * \param[in] datatype type of data considered
514 * \param[in, out] var variable buffer
515 */
516/*----------------------------------------------------------------------------*/
517
518void
520 cs_lnum_t n_elts,
521 cs_lnum_t stride,
522 bool interlace,
523 cs_datatype_t datatype,
524 void *var);
525
526/*----------------------------------------------------------------------------*/
527/*
528 * \brief Update the maximum value of elements associated with an interface
529 * set.
530 *
531 * On input, the variable array should contain local contributions. On output,
532 * contributions from matching elements on parallel or periodic boundaries
533 * have been updated.
534 *
535 * Only the values of elements belonging to the interfaces are modified.
536 *
537 * \param[in] ifs pointer to a cs_interface_set_t structure
538 * \param[in] n_elts number of elements in var buffer
539 * \param[in] stride number of values (non interlaced) by entity
540 * \param[in] interlace true if variable is interlaced (for stride > 1)
541 * \param[in] datatype type of data considered
542 * \param[in, out] var variable buffer
543 */
544/*----------------------------------------------------------------------------*/
545
546void
548 cs_lnum_t n_elts,
549 cs_lnum_t stride,
550 bool interlace,
551 cs_datatype_t datatype,
552 void *var);
553
554/*----------------------------------------------------------------------------*/
555/*
556 * \brief Update the maximum of values for elements associated with an
557 * interface set, allowing control over periodicity.
558 *
559 * On input, the variable array should contain local contributions. On output,
560 * contributions from matching elements on parallel or periodic boundaries
561 * have been added.
562 *
563 * Only the values of elements belonging to the interfaces are modified.
564 *
565 * \param[in] ifs pointer to a fvm_interface_set_t structure
566 * \param[in] n_elts number of elements in var buffer
567 * \param[in] stride number of values (non interlaced) by entity
568 * \param[in] interlace true if variable is interlaced (for stride > 1)
569 * \param[in] datatype type of data considered
570 * \param[in] tr_ignore if > 0, ignore periodicity with rotation;
571 * if > 1, ignore all periodic transforms
572 * \param[in, out] var variable buffer
573 */
574/*----------------------------------------------------------------------------*/
575
576void
578 cs_lnum_t n_elts,
579 cs_lnum_t stride,
580 bool interlace,
581 cs_datatype_t datatype,
582 int tr_ignore,
583 void *var);
584
585/*----------------------------------------------------------------------------*/
586/*
587 * \brief Add matching element id information to an interface set.
588 *
589 * This information is required by calls to cs_interface_get_match_ids(),
590 * and may be freed using cs_interface_set_free_match_ids().
591 *
592 * \param[in] ifs pointer to interface set structure
593 */
594/*----------------------------------------------------------------------------*/
595
596void
598
599/*----------------------------------------------------------------------------*/
600/*
601 * \brief Free matching element id information of an interface set.
602 *
603 * This information is used by calls to cs_interface_get_match_ids(),
604 * and may be defined using cs_interface_set_add_match_ids().
605 *
606 * \param[in] ifs pointer to interface set structure
607 */
608/*----------------------------------------------------------------------------*/
609
610void
612
613/*----------------------------------------------------------------------------*/
614/*
615 * \brief Tag mutiple elements of local interface with a given values.
616 *
617 * This is effective only on an interface matching the current rank,
618 * and when multiple (periodic) instances of a given element appear on that
619 * rank, al instances except the first are tagged with the chosen value.
620 *
621 * \param[in] itf pointer to interface structure
622 * \param[in] periodicity periodicity information (NULL if none)
623 * \param[in] tr_ignore if > 0, ignore periodicity with rotation;
624 * if > 1, ignore all periodic transforms
625 * \param[in] tag_value tag to assign
626 * \param[in, out] tag global tag array for elements
627 */
628/*----------------------------------------------------------------------------*/
629
630void
632 const fvm_periodicity_t *periodicity,
633 int tr_ignore,
634 cs_gnum_t tag_value,
635 cs_gnum_t *tag);
636/*----------------------------------------------------------------------------*/
637/*
638 * \brief Dump printout of an interface list.
639 *
640 * \param[in] ifs pointer to structure that should be dumped
641 */
642/*----------------------------------------------------------------------------*/
643
644void
646
647/*----------------------------------------------------------------------------*/
648
649#endif /* CS_INTERFACE_H */
cs_datatype_t
Definition: cs_defs.h:290
unsigned cs_gnum_t
global mesh entity number
Definition: cs_defs.h:317
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:325
void cs_interface_tag_local_matches(const cs_interface_t *itf, const fvm_periodicity_t *periodicity, int tr_ignore, cs_gnum_t tag_value, cs_gnum_t *tag)
Tag mutiple elements of local interface with a given values.
Definition: cs_interface.cpp:6042
void cs_interface_set_copy_indexed(const cs_interface_set_t *ifs, cs_datatype_t datatype, bool src_on_parent, const cs_lnum_t src_index[], const cs_lnum_t dest_index[], const void *src, void *dest)
Copy indexed array from distant or matching interface elements to local elements.
Definition: cs_interface.cpp:4194
int cs_interface_set_size(const cs_interface_set_t *ifs)
Return number of interfaces associated with an interface set.
Definition: cs_interface.cpp:3826
void cs_interface_set_renumber(cs_interface_set_t *ifs, const cs_lnum_t old_to_new[])
Apply renumbering of elements referenced by an interface set.
Definition: cs_interface.cpp:3922
const cs_interface_t * cs_interface_set_get(const cs_interface_set_t *ifs, int interface_id)
Return pointer to a given interface in an interface set.
Definition: cs_interface.cpp:3874
void cs_interface_set_sum(const cs_interface_set_t *ifs, cs_lnum_t n_elts, cs_lnum_t stride, bool interlace, cs_datatype_t datatype, void *var)
Update the sum of values for elements associated with an interface set.
Definition: cs_interface.cpp:4594
void cs_interface_set_max_tr(const cs_interface_set_t *ifs, cs_lnum_t n_elts, cs_lnum_t stride, bool interlace, cs_datatype_t datatype, int tr_ignore, void *var)
Update the maximum of values for elements associated with an interface set, allowing control over per...
Definition: cs_interface.cpp:5591
void cs_interface_set_inclusive_or(const cs_interface_set_t *ifs, cs_lnum_t n_elts, cs_lnum_t stride, bool interlace, cs_datatype_t datatype, void *var)
Update values using the bitwise inclusive or operation for elements associated with an interface set.
Definition: cs_interface.cpp:4387
const cs_lnum_t * cs_interface_get_match_ids(const cs_interface_t *itf)
Return pointer to array of matching element ids defining an interface.
Definition: cs_interface.cpp:3396
cs_interface_set_t * cs_interface_set_dup_blocks(cs_interface_set_t *ifs, cs_lnum_t block_size, cs_lnum_t n_blocks)
Duplicate an interface set for coupled variable blocks.
Definition: cs_interface.cpp:3696
void cs_interface_set_dump(const cs_interface_set_t *ifs)
Dump printout of an interface list.
Definition: cs_interface.cpp:6102
cs_lnum_t cs_interface_size(const cs_interface_t *itf)
Return number of local and distant elements defining an interface.
Definition: cs_interface.cpp:3341
const cs_lnum_t * cs_interface_get_elt_ids(const cs_interface_t *itf)
Return pointer to array of local element ids defining an interface.
Definition: cs_interface.cpp:3367
void cs_interface_set_destroy(cs_interface_set_t **ifs)
Destruction of an interface set.
Definition: cs_interface.cpp:3603
int cs_interface_rank(const cs_interface_t *itf)
Return process rank associated with an interface's distant elements.
Definition: cs_interface.cpp:3320
void cs_interface_set_free_match_ids(cs_interface_set_t *ifs)
Free matching element id information of an interface set.
Definition: cs_interface.cpp:6007
void cs_interface_set_copy_array(const cs_interface_set_t *ifs, cs_datatype_t datatype, int stride, bool src_on_parent, const void *src, void *dest)
Copy array from distant or matching interface elements to local elements.
Definition: cs_interface.cpp:4027
const cs_lnum_t * cs_interface_get_tr_index(const cs_interface_t *itf)
Return pointer to index of sub-sections for different transformations.
Definition: cs_interface.cpp:3449
struct _cs_interface_set_t cs_interface_set_t
Definition: cs_interface.h:57
void cs_interface_set_min(const cs_interface_set_t *ifs, cs_lnum_t n_elts, cs_lnum_t stride, bool interlace, cs_datatype_t datatype, void *var)
Update the minimum value of elements associated with an interface set.
Definition: cs_interface.cpp:5045
void cs_interface_set_add_match_ids(cs_interface_set_t *ifs)
Add matching element id information to an interface set.
Definition: cs_interface.cpp:5882
cs_interface_set_t * cs_interface_set_dup(const cs_interface_set_t *ifs, cs_lnum_t stride)
Duplicate an interface set, applying an optional constant stride.
Definition: cs_interface.cpp:3630
struct _cs_interface_t cs_interface_t
Definition: cs_interface.h:56
cs_lnum_t cs_interface_set_n_elts(const cs_interface_set_t *ifs)
Return total number of elements in interface set.
Definition: cs_interface.cpp:3850
const fvm_periodicity_t * cs_interface_set_periodicity(const cs_interface_set_t *ifs)
Return pointer to the periocicity structure associated of an interface set.
Definition: cs_interface.cpp:3899
cs_interface_set_t * cs_interface_set_create(cs_lnum_t n_elts, const cs_lnum_t parent_element_id[], const cs_gnum_t global_number[], const fvm_periodicity_t *periodicity, int n_periodic_lists, const int periodicity_num[], const cs_lnum_t n_periodic_couples[], const cs_gnum_t *const periodic_couples[])
Creation of a list of interfaces between elements of a same type.
Definition: cs_interface.cpp:3499
cs_lnum_t cs_interface_get_tr_index_size(const cs_interface_t *itf)
Return size of index of sub-sections for different transformations.
Definition: cs_interface.cpp:3423
void cs_interface_set_sum_tr(const cs_interface_set_t *ifs, cs_lnum_t n_elts, cs_lnum_t stride, bool interlace, cs_datatype_t datatype, int tr_ignore, void *var)
Update the sum of values for elements associated with an interface set, allowing control over periodi...
Definition: cs_interface.cpp:4851
void cs_interface_set_max(const cs_interface_set_t *ifs, cs_lnum_t n_elts, cs_lnum_t stride, bool interlace, cs_datatype_t datatype, void *var)
Update the maximum value of elements associated with an interface set.
Definition: cs_interface.cpp:5318
struct _fvm_periodicity_t fvm_periodicity_t
Definition: fvm_periodicity.h:63