9.0
general documentation
Loading...
Searching...
No Matches
fvm_selector_postfix.h
Go to the documentation of this file.
1#ifndef __FVM_SELECTOR_POSTFIX_H__
2#define __FVM_SELECTOR_POSTFIX_H__
3
4/*============================================================================
5 * Expression handling for entity selection based on groups or attributes
6 *============================================================================*/
7
8/*
9 This file is part of code_saturne, a general-purpose CFD tool.
10
11 Copyright (C) 1998-2025 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 "base/cs_defs.h"
31
32/*----------------------------------------------------------------------------
33 * Local headers
34 *----------------------------------------------------------------------------*/
35
36#include "fvm/fvm_defs.h"
37#include "fvm/fvm_group.h"
38
39/*----------------------------------------------------------------------------*/
40
42
43/*=============================================================================
44 * Macro definitions
45 *============================================================================*/
46
47/*============================================================================
48 * Type definitions
49 *============================================================================*/
50
51typedef struct _fvm_selector_postfix_t fvm_selector_postfix_t;
52
53/*=============================================================================
54 * Public function prototypes
55 *============================================================================*/
56
57/*----------------------------------------------------------------------------
58 * Create a postfix expression from an infix expression
59 *
60 * parameters:
61 * infix <-- infix expression
62 * n_groups <-- number of groups
63 * n_attributes <-- number of attributes
64 * group_name <-- array group names (sorted)
65 * attribute <-- array of attribute numbers (sorted)
66 *
67 * returns:
68 * pointer to created postfix structure
69 *----------------------------------------------------------------------------*/
70
72fvm_selector_postfix_create(const char *infix,
73 int n_groups,
74 int n_attributes,
75 const char *group_name[],
76 const int attribute[]);
77
78/*----------------------------------------------------------------------------
79 * Destroy a postfix expression
80 *
81 * parameters:
82 * pf <-> pointer to postfix structure pointer
83 *----------------------------------------------------------------------------*/
84
85void
87
88/*----------------------------------------------------------------------------
89 * Return a pointer to the infix string associated with a postfix expression
90 *
91 * parameters:
92 * pf <-- pointer to postfix structure
93 *
94 * returns:
95 * pointer to original infix string
96 *----------------------------------------------------------------------------*/
97
98const char *
100
101/*----------------------------------------------------------------------------
102 * Indicate if a postfix expression depends on coordinates
103 *
104 * parameters:
105 * pf <-- pointer to postfix structure
106 *
107 * returns:
108 * true if expression depends on coordinates, false otherwise
109 *----------------------------------------------------------------------------*/
110
111bool
113
114/*----------------------------------------------------------------------------
115 * Indicate if a postfix expression depends on normals
116 *
117 * parameters:
118 * pf <-- pointer to postfix structure
119 *
120 * returns:
121 * true if expression depends on normals, false otherwise
122 *----------------------------------------------------------------------------*/
123
124bool
126
127/*----------------------------------------------------------------------------
128 * Return the number of operands associated with a postfix expression
129 * missing in the associated group class set
130 *
131 * parameters:
132 * pf <-- pointer to postfix structure
133 *
134 * returns:
135 * number of missing operands
136 *----------------------------------------------------------------------------*/
137
138int
140
141/*----------------------------------------------------------------------------
142 * Return a pointer to the name of an of operand associated with a postfix
143 * expression but missing in the associated group class set
144 *
145 * parameters:
146 * pf <-- pointer to postfix structure
147 * id <-- id of missing operand (0 to fvm_selector_postfix_n_missing())
148 *
149 * returns:
150 * pointer to name of missing operand
151 *----------------------------------------------------------------------------*/
152
153const char *
155 int id);
156
157/*----------------------------------------------------------------------------
158 * Evaluate a postfix expression
159 *
160 * parameters:
161 * pf <-- pointer to postfix structure
162 * n_groups <-- number of groups associated with group class
163 * n_attributes <-- number of attributes associated with group class
164 * group_name <-- array of group names (ordered)
165 * group_id <-- array group ids associated with group class
166 * attribute_id <-- array of attribute ids associated with group class
167 * coords <-- coordinates associated with evaluation, or NULL
168 * normal <-- normal associated with evaluation, or NULL
169 *
170 * returns:
171 * true or false base on expression evaluation
172 *----------------------------------------------------------------------------*/
173
174bool
176 int n_groups,
177 int n_attributes,
178 const char *group_name[],
179 const int group_id[],
180 const int attribute_id[],
181 const double coords[],
182 const double normal[]);
183
184/*----------------------------------------------------------------------------
185 * Dump the contents of a postfix structure in human readable form
186 *
187 * parameters:
188 * pf <-> pointer to postfix structure
189 * n_groups <-- number of groups
190 * n_attributes <-- number of attributes
191 * group_name <-- array group names (sorted)
192 * attribute <-- array of attribute numbers (sorted)
193 *----------------------------------------------------------------------------*/
194
195void
197 int n_groups,
198 int n_attributes,
199 const char *group_name[],
200 const int attribute[]);
201
202/*----------------------------------------------------------------------------*/
203
205
206#endif /* __FVM_SELECTOR_POSTFIX_H__ */
#define BEGIN_C_DECLS
Definition cs_defs.h:542
#define END_C_DECLS
Definition cs_defs.h:543
fvm_selector_postfix_t * fvm_selector_postfix_create(const char *infix, int n_groups, int n_attributes, const char *group_name[], const int attribute[])
Definition fvm_selector_postfix.cpp:2937
bool fvm_selector_postfix_eval(const fvm_selector_postfix_t *pf, int n_groups, int n_attributes, const char *group_name[], const int group_id[], const int attribute_id[], const double coords[], const double normal[])
Definition fvm_selector_postfix.cpp:3101
void fvm_selector_postfix_destroy(fvm_selector_postfix_t **postfix)
Definition fvm_selector_postfix.cpp:2973
const char * fvm_selector_postfix_get_infix(const fvm_selector_postfix_t *pf)
Definition fvm_selector_postfix.cpp:2996
const char * fvm_selector_postfix_get_missing(const fvm_selector_postfix_t *pf, int id)
Definition fvm_selector_postfix.cpp:3071
int fvm_selector_postfix_n_missing(const fvm_selector_postfix_t *pf)
Definition fvm_selector_postfix.cpp:3051
void fvm_selector_postfix_dump(const fvm_selector_postfix_t *pf, int n_groups, int n_attributes, const char *group_name[], const int attribute[])
Definition fvm_selector_postfix.cpp:3360
struct _fvm_selector_postfix_t fvm_selector_postfix_t
Definition fvm_selector_postfix.h:51
bool fvm_selector_postfix_normals_dep(const fvm_selector_postfix_t *pf)
Definition fvm_selector_postfix.cpp:3032
bool fvm_selector_postfix_coords_dep(const fvm_selector_postfix_t *pf)
Definition fvm_selector_postfix.cpp:3014