programmer's documentation
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
fvm_point_location.h
Go to the documentation of this file.
1 #ifndef __FVM_POINT_LOCATION_H__
2 #define __FVM_POINT_LOCATION_H__
3 
4 /*============================================================================
5  * Locate local points in 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-2013 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 
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  * Find elements in a given nodal mesh containing points: updates the
61  * location[] and distance[] arrays associated with a set of points
62  * for points that are in an element of this mesh, or closer to one
63  * than to previously encountered elements.
64  *
65  * parameters:
66  * this_nodal <-- pointer to nodal mesh representation structure
67  * tolerance <-- associated tolerance
68  * locate_on_parents <-- location relative to parent element numbers if 1,
69  * id of element + 1 in concatenated sections of
70  * same element dimension if 0
71  * n_points <-- number of points to locate
72  * point_coords <-- point coordinates
73  * location <-> number of element containing or closest to each
74  * point (size: n_points)
75  * distance <-> distance from point to element indicated by
76  * location[]: < 0 if unlocated, 0 - 1 if inside,
77  * and > 1 if outside a volume element, or absolute
78  * distance to a surface element (size: n_points)
79  *----------------------------------------------------------------------------*/
80 
81 void
82 fvm_point_location_nodal(const fvm_nodal_t *this_nodal,
83  double tolerance,
84  int locate_on_parents,
85  cs_lnum_t n_points,
86  const cs_coord_t point_coords[],
87  cs_lnum_t location[],
88  float distance[]);
89 
90 /*----------------------------------------------------------------------------
91  * Find elements in a given nodal mesh closest to points: updates the
92  * location[] and distance[] arrays associated with a set of points
93  * for points that are closer to an element of this mesh than to previously
94  * encountered elements.
95  *
96  * This function currently only handles elements of lower dimension than
97  * the spatial dimension.
98  *
99  * parameters:
100  * this_nodal <-- pointer to nodal mesh representation structure
101  * locate_on_parents <-- location relative to parent element numbers if 1,
102  * id of element + 1 in concatenated sections of
103  * same element dimension if 0
104  * n_points <-- number of points to locate
105  * point_coords <-- point coordinates
106  * location <-> number of element containing or closest to each
107  * point (size: n_points)
108  * distance <-> distance from point to element indicated by
109  * location[]: < 0 if unlocated, or absolute
110  * distance to a surface element (size: n_points)
111  *----------------------------------------------------------------------------*/
112 
113 void
114 fvm_point_location_closest_nodal(const fvm_nodal_t *this_nodal,
115  int locate_on_parents,
116  cs_lnum_t n_points,
117  const cs_coord_t point_coords[],
118  cs_lnum_t location[],
119  float distance[]);
120 
121 /*----------------------------------------------------------------------------*/
122 
124 
125 #endif /* __FVM_POINT_LOCATION_H__ */