1 #ifndef __FVM_NODAL_APPEND_H__ 2 #define __FVM_NODAL_APPEND_H__ 3 4 /*============================================================================ 5 * Append sections to a nodal representation associated with a mesh 6 *============================================================================*/ 7 8 /* 9 This file is part of Code_Saturne, a general-purpose CFD tool. 10 11 Copyright (C) 1998-2021 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 #include "cs_defs.h" 31 32 /*---------------------------------------------------------------------------- 33 * Local headers 34 *----------------------------------------------------------------------------*/ 35 36 #include "fvm_defs.h" 37 #include "fvm_nodal.h" 38 39 /*----------------------------------------------------------------------------*/ 40 41 BEGIN_C_DECLS 42 43 /*============================================================================= 44 * Macro definitions 45 *============================================================================*/ 46 47 /*============================================================================ 48 * Type definitions 49 *============================================================================*/ 50 51 /*============================================================================= 52 * Static global variables 53 *============================================================================*/ 54 55 /*============================================================================= 56 * Public function prototypes 57 *============================================================================*/ 58 59 /*---------------------------------------------------------------------------- 60 * Append a new section to an existing fvm_nodal mesh, and transfer 61 * ownership of the given connectivity and optional parent number arrays to 62 * that section. 63 * 64 * parameters: 65 * this_nodal <-> nodal mesh structure 66 * n_elements <-- number of elements to add 67 * type <-- type of elements to add 68 * face_index <-- polyhedron -> faces index (O to n-1) 69 * size: n_elements + 1 70 * face_num <-- polyhedron -> face numbers (1 to n, signed, 71 * > 0 for outwards pointing face normal 72 * < 0 for inwards pointing face normal); 73 * size: face_index[n_elements] 74 * vertex_index <-- polygon face -> vertices index (O to n-1) 75 * size: face_index[n_elements] 76 * vertex_num <-- element -> vertex connectivity 77 * parent_element_num <-- element -> parent element number (1 to n) if non 78 * trivial (i.e. if element definitions correspond 79 * to a subset of the parent mesh), NULL otherwise 80 *----------------------------------------------------------------------------*/ 81 82 void 83 fvm_nodal_append_by_transfer(fvm_nodal_t *this_nodal, 84 cs_lnum_t n_elements, 85 fvm_element_t type, 86 cs_lnum_t face_index[], 87 cs_lnum_t face_num[], 88 cs_lnum_t vertex_index[], 89 cs_lnum_t vertex_num[], 90 cs_lnum_t parent_element_num[]); 91 92 /*---------------------------------------------------------------------------- 93 * Append a new section to an existing fvm_nodal mesh, sharing the given 94 * given connectivity and optional parent number arrays with the caller. 95 * 96 * The caller should not destroy or modify the arrays passed to this 97 * function until the nodal mesh is destroyed. 98 * 99 * parameters: 100 * this_nodal <-> nodal mesh structure 101 * n_elements <-- number of elements to add 102 * type <-- type of elements to add 103 * face_index <-- polyhedron -> faces index (O to n-1) 104 * size: n_elements + 1 105 * face_num <-- polyhedron -> face numbers (1 to n, signed, 106 * > 0 for outwards pointing face normal 107 * < 0 for inwards pointing face normal); 108 * size: face_index[n_elements] 109 * vertex_index <-- polygon face -> vertices index (O to n-1) 110 * size: face_index[n_elements] 111 * vertex_num <-- element -> vertex connectivity 112 * parent_element_num <-- element -> parent element number (1 to n) if non 113 * trivial (i.e. if element definitions correspond 114 * to a subset of the parent mesh), NULL otherwise 115 *----------------------------------------------------------------------------*/ 116 117 void 118 fvm_nodal_append_shared(fvm_nodal_t *this_nodal, 119 cs_lnum_t n_elements, 120 fvm_element_t type, 121 cs_lnum_t face_index[], 122 cs_lnum_t face_num[], 123 cs_lnum_t vertex_index[], 124 cs_lnum_t vertex_num[], 125 cs_lnum_t parent_element_num[]); 126 127 /*----------------------------------------------------------------------------*/ 128 129 END_C_DECLS 130 131 #endif /* __FVM_NODAL_APPEND_H__ */ 132