Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/post/src/visuals/visual.h
3203 views
1
/*****************************************************************************
2
*
3
* Elmer, A Finite Element Software for Multiphysical Problems
4
*
5
* Copyright 1st April 1995 - , CSC - IT Center for Science Ltd., Finland
6
*
7
* This program is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU General Public License
9
* as published by the Free Software Foundation; either version 2
10
* of the License, or (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this program (in file fem/GPL-2); if not, write to the
19
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20
* Boston, MA 02110-1301, USA.
21
*
22
*****************************************************************************/
23
24
/*******************************************************************************
25
*
26
* Visual class definitions.
27
*
28
*******************************************************************************
29
*
30
* Author: Juha Ruokolainen
31
*
32
* Address: CSC - IT Center for Science Ltd.
33
* Keilaranta 14, P.O. BOX 405
34
* 02101 Espoo, Finland
35
* Tel. +358 0 457 2723
36
* Telefax: +358 0 457 2302
37
* EMail: [email protected]
38
*
39
* Date: 27 Sep 1995
40
*
41
*
42
* Modification history:
43
*
44
* 28 Sep 1995, modified visual_t and visual_type_t structures to make a list
45
* rather than an array of visual types.
46
*
47
******************************************************************************/
48
49
#ifdef EXT
50
#undef EXT
51
#endif
52
53
#ifdef MODULE_VISUALS
54
#define EXT
55
#else
56
#define EXT extern
57
#endif
58
59
#ifdef MODULE_VISUALS
60
double TooLong1 = 0.30,TooLong2 = 0.5;
61
#else
62
extern double TooLong1,TooLong2;
63
#endif
64
65
#define VIS_VISUAL_PARAM_LOGICAL 1
66
#define VIS_VISUAL_PARAM_INT 2
67
#define VIS_VISUAL_PARAM_FLOAT 4
68
#define VIS_VISUAL_PARAM_POINTER 8
69
70
typedef struct visual_param_s
71
{
72
/*
73
* Name string for the parameter
74
*/
75
char *Name;
76
77
/*
78
* Format string for scanf when scanning parameter value
79
*/
80
char *Format;
81
82
/*
83
* Parameter offset from structure beginning
84
*/
85
long int Offset;
86
87
/*
88
* type of the parameter (one of VIS_VISUAL_PARAM_*)
89
*/
90
int ParamType;
91
92
/*
93
* Initial values for the parameters
94
*/
95
int IntValue;
96
double FloatValue;
97
void *PointerValue;
98
} visual_param_t;
99
100
typedef struct visual_type_s
101
{
102
/*
103
* Next visual type in the list
104
*/
105
struct visual_type_s *Next;
106
107
/*
108
* One line description of the visual
109
*/
110
char *VisualName;
111
112
/*
113
* Alloc memory for parameters
114
*/
115
void *(*AllocParams)();
116
117
/*
118
* Dispose a visual
119
*/
120
void (*DeleteParams)(void *);
121
122
/*
123
* Realize a visual instance
124
*/
125
int (*RealizeVisual)(geometry_t *,element_model_t *,void *,double);
126
127
/*
128
* Structure holding names and offsets of particular
129
* visual types parameters
130
*/
131
visual_param_t *VisualParams;
132
} visual_type_t;
133
134
/*
135
* visual type list (remove this)
136
*/
137
typedef struct visual_defs_s
138
{
139
int NumberOfVisualTypes;
140
visual_type_t *VisualTypes;
141
} visual_defs_t;
142
143
/*
144
* Global variable holding start of the list of visual types
145
*/
146
EXT visual_defs_t VisualDefs;
147
148
typedef struct visual_s
149
{
150
/*
151
* Next visual in list
152
*/
153
struct visual_s *Next;
154
155
/*
156
* Name of the visual instance
157
*/
158
char *Name;
159
160
/*
161
* this is pointer to arrow_t,mesh_t etc. structures, see below
162
*/
163
void *VisualParams;
164
165
/*
166
* Pointer to visual type structure holding the function pointers
167
* acting on this type of visual
168
*/
169
170
visual_type_t *VisualType;
171
} visual_t;
172
173
typedef enum
174
{
175
mesh_style_none,mesh_style_line,mesh_style_surf,mesh_style_line_and_surf
176
} mesh_style_t;
177
178
typedef enum
179
{
180
arrow_style_stick,arrow_style_arrow
181
} arrow_style_t;
182
183
typedef enum
184
{
185
particle_style_vector,particle_style_sphere
186
} particle_style_t;
187
188
typedef enum
189
{
190
particle_integ_euler, particle_integ_runge_kutta
191
} particle_integ_method_t;
192
193
typedef enum
194
{
195
particle_policy_fixed, particle_policy_adaptive
196
} particle_integ_policy_t;
197
198
199
int vis_initialize_arrow_visual();
200
int vis_initialize_colscale_visual();
201
int vis_initialize_contour_line_visual();
202
int vis_initialize_isosurface_visual();
203
void vis_triangle ( triangle_t *t,vertex_t *v,double *color,double CScl,double CAdd);
204
int vis_initialize_mesh_visual();
205
int vis_initialize_particle_visual();
206
int vis_initialize_sphere_visual();
207
int vis_add_visual_type( visual_type_t *VisualDef );
208
visual_type_t *vis_get_visual_type(char *name);
209
char *vis_get_visual_type_name(visual_t *visual);
210
char *vis_get_visual_name(visual_t *visual);
211
int vis_set_param( visual_t *visual, char *name,int intvalue,double doublevalue,void *ptrvalue );
212
void vis_default_params( visual_t *visual );
213
visual_t *vis_new_visual(char *name);
214
visual_t *vis_link_visual( visual_t *list,visual_t *new );
215
visual_t *vis_add_visual(visual_t *visual,char *name);
216
void vis_delete_visual( visual_t *visual );
217
int vis_display_visual( geometry_t *geometry, element_model_t *model, visual_t *VL,double t );
218
int vis_display_list( geometry_t *geometry, element_model_t *model, visual_t *VL,double t );
219
int vis_initialize_visual_types();
220
221