Basilisk CFD
Adaptive Cartesian mesh PDE framework
Loading...
Searching...
No Matches
kdt.h
Go to the documentation of this file.
1/** @file kdt.h
2 */
3/* Gerris - The GNU Flow Solver
4 * Copyright (C) 2010 National Institute of Water and Atmospheric Research
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; either version 2 of the
9 * License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 * 02111-1307, USA.
20 */
21
22/* padding on 32 bits systems (to match automatic 64 bits padding) */
23
24#if defined (__LP64__) || defined (__64BIT__) || defined (_LP64) || (__WORDSIZE == 64)
25 #define PADDING_32_BITS
26#else
27 #define PADDING_32_BITS int padding;
28#endif
29
30FILE * kdt_tmpfile (void);
31
32typedef struct {
33 double x, y, z;
34} KdtPoint;
35
36typedef struct {
37 float l, h;
39
41
42typedef struct {
44 long start, len, i, end, buflen, current;
46 void * buf;
47} KdtHeap;
48
49void kdt_heap_create (KdtHeap * h, FILE * fp, long start, long len, long buflen);
50void kdt_heap_resize (KdtHeap * h, long len);
52void kdt_heap_split (KdtHeap * h1, long len1, KdtHeap * h2);
53void kdt_heap_put (KdtHeap * h, KdtPoint * p);
54void kdt_heap_flush (KdtHeap * h);
55void kdt_heap_free (KdtHeap * h);
57
58typedef struct { /* needs to be identical to RSurfaceSum in rsurface.h */
59#if AVG_TERRAIN
60 double H0;
61 float Hmin, Hmax;
62 int n;
63#else
64 double m01, m02, m03;
65 double m11, m13;
66 double m22, m23, m33;
67 double m44, m55, m66, m77;
68 double m67, m76;
69 double H0, H1, H2, H3, H4;
70 double H5, H6;
71 float Hmin, Hmax;
72 float coverage;
73 int n;
74#endif
76
77typedef struct {
78#if AVG_TERRAIN
79 double H0;
80 float Hmin, Hmax;
81 int n;
82#else
83 double m01, m02, m03;
84 double m11, m13;
85 double m22, m23, m33;
86 double m44, m55, m66, m77;
87 double m67, m76;
88 double H0, H1, H2, H3, H4;
89 double H5, H6;
90 float Hmin, Hmax;
91 float coverage;
92 int n;
93#endif
94 double w;
95} KdtSum;
96
97typedef struct _Kdt Kdt;
98typedef int (* KdtCheck) (const KdtRect rect, void * data);
99
100int kdt_intersects (const KdtRect rect, const KdtRect query);
101int kdt_includes (const KdtRect rect, const KdtRect query);
102
103Kdt * kdt_new (void);
104int kdt_create (Kdt * kdt,
105 const char * name,
106 int blksize,
107 KdtHeap * h,
108 void (* progress) (float complete, void * data),
109 void * data);
110int kdt_open (Kdt * kdt, const char * name);
111void kdt_destroy (Kdt * kdt);
112long kdt_query (const Kdt * kdt, const KdtRect rect);
113long kdt_query_sum (const Kdt * kdt,
115 const KdtRect query, KdtSum * sum);
116void kdt_sum_init (KdtSum * s);
scalar h[]
Definition atmosphere.h:6
define l
int y
Definition common.h:76
int x
Definition common.h:76
int z
Definition common.h:76
#define p
Definition tree.h:320
else return n
Definition curvature.h:101
scalar s
Definition embed-tree.h:56
scalar int i
Definition embed.h:74
void includes(int argc, char **argv, char **grid1, int *default_grid, int *dim, int *bg, int *lyrs, int *gpus, const char *dir)
Definition include.c:2886
static int
Definition include.c:978
static long query(const Kdt *kdt, const KdtRect rect, long len)
Definition kdt.c:782
FILE * kdt_tmpfile(void)
Definition kdt.c:42
void kdt_heap_resize(KdtHeap *h, long len)
Definition kdt.c:91
void kdt_sum_init(KdtSum *s)
Definition kdt.c:1043
Kdt * kdt_new(void)
Definition kdt.c:632
long kdt_query_sum(const Kdt *kdt, KdtCheck includes, KdtCheck intersects, void *data, const KdtRect query, KdtSum *sum)
Definition kdt.c:1025
long kdt_query(const Kdt *kdt, const KdtRect rect)
Definition kdt.c:834
void kdt_destroy(Kdt *kdt)
Definition kdt.c:757
void kdt_heap_split(KdtHeap *h1, long len1, KdtHeap *h2)
Definition kdt.c:186
void kdt_heap_create(KdtHeap *h, FILE *fp, long start, long len, long buflen)
Definition kdt.c:134
int kdt_intersects(const KdtRect rect, const KdtRect query)
Definition kdt.c:770
int kdt_includes(const KdtRect rect, const KdtRect query)
Definition kdt.c:776
void kdt_heap_rewind(KdtHeap *h)
Definition kdt.c:157
int(* KdtCheck)(const KdtRect rect, void *data)
Definition kdt.h:98
void kdt_heap_free(KdtHeap *h)
Definition kdt.c:239
int kdt_create(Kdt *kdt, const char *name, int blksize, KdtHeap *h, void(*progress)(float complete, void *data), void *data)
Definition kdt.c:686
int kdt_heap_get(KdtHeap *h, KdtPoint *p)
Definition kdt.c:171
KdtInterval KdtRect[2]
Definition kdt.h:40
void kdt_heap_flush(KdtHeap *h)
Definition kdt.c:233
int kdt_open(Kdt *kdt, const char *name)
Definition kdt.c:723
void kdt_heap_put(KdtHeap *h, KdtPoint *p)
Definition kdt.c:224
double * sum
#define data(k, l)
Definition linear.h:26
FILE * fp
Definition mtrace.h:7
int progress
Definition qcc.c:60
Definition kdt.h:42
FILE * fp
Definition kdt.h:45
void * buf
Definition kdt.h:46
long buflen
Definition kdt.h:44
KdtPoint * p
Definition kdt.h:43
float h
Definition kdt.h:37
Definition kdt.h:32
double x
Definition kdt.h:33
float coverage
Definition kdt.h:72
int n
Definition kdt.h:73
double H0
Definition kdt.h:69
float Hmax
Definition kdt.h:71
double m44
Definition kdt.h:67
double m01
Definition kdt.h:64
double H5
Definition kdt.h:70
double m67
Definition kdt.h:68
double m11
Definition kdt.h:65
double m22
Definition kdt.h:66
Definition kdt.h:77
int n
Definition kdt.h:92
double H0
Definition kdt.h:88
double w
Definition kdt.h:94
double m22
Definition kdt.h:85
double m11
Definition kdt.h:84
float Hmax
Definition kdt.h:90
double m44
Definition kdt.h:86
double H5
Definition kdt.h:89
double m67
Definition kdt.h:87
float coverage
Definition kdt.h:91
double m01
Definition kdt.h:83
Definition kdt.c:358
static int intersects(KdtRect rect, Point *p)
Definition terrain.h:39