Main Page
Related Pages
Classes
Files
File List
File Members
src
meshvectorfield.hpp
Go to the documentation of this file.
1
5
/* Copyright (c) 2005-2011 Taneli Kalvas. All rights reserved.
6
*
7
* You can redistribute this software and/or modify it under the terms
8
* of the GNU General Public License as published by the Free Software
9
* Foundation; either version 2 of the License, or (at your option)
10
* any later version.
11
*
12
* This library is distributed in the hope that it will be useful, but
13
* WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this library (file "COPYING" included in the package);
19
* if not, write to the Free Software Foundation, Inc., 51 Franklin
20
* Street, Fifth Floor, Boston, MA 02110-1301 USA
21
*
22
* If you have questions about your rights to use or distribute this
23
* software, please contact Berkeley Lab's Technology Transfer
24
* Department at TTD@lbl.gov. Other questions, comments and bug
25
* reports should be sent directly to the author via email at
26
* taneli.kalvas@jyu.fi.
27
*
28
* NOTICE. This software was developed under partial funding from the
29
* U.S. Department of Energy. As such, the U.S. Government has been
30
* granted for itself and others acting on its behalf a paid-up,
31
* nonexclusive, irrevocable, worldwide license in the Software to
32
* reproduce, prepare derivative works, and perform publicly and
33
* display publicly. Beginning five (5) years after the date
34
* permission to assert copyright is obtained from the U.S. Department
35
* of Energy, and subject to any subsequent five (5) year renewals,
36
* the U.S. Government is granted for itself and others acting on its
37
* behalf a paid-up, nonexclusive, irrevocable, worldwide license in
38
* the Software to reproduce, prepare derivative works, distribute
39
* copies to the public, perform publicly and display publicly, and to
40
* permit others to do so.
41
*/
42
43
#ifndef MESHVECTORFIELD_HPP
44
#define MESHVECTORFIELD_HPP 1
45
46
47
#include "
transformation.hpp
"
48
#include "
vectorfield.hpp
"
49
#include "
mesh.hpp
"
50
#include "
types.hpp
"
51
52
71
class
MeshVectorField
:
public
VectorField
,
public
Mesh
{
72
73
field_extrpl_e
_extrpl[6];
74
double
*_F[3];
80
Transformation
_T;
81
Transformation
_Tinv;
83
void
check_definition();
84
85
void
convert_3d_to_3d(
const
MeshVectorField
&fin );
86
void
convert_cyl_to_3d(
const
MeshVectorField
&fin );
87
88
public
:
89
90
98
MeshVectorField
();
99
106
MeshVectorField
(
const
Mesh
&m,
const
bool
fout[3] );
107
118
MeshVectorField
(
geom_mode_e
geom_mode
,
const
bool
fout[3],
Int3D
size
,
119
Vec3D
origo
,
double
h
);
120
146
MeshVectorField
(
geom_mode_e
geom_mode,
const
bool
fout[3],
double
xscale,
147
double
fscale,
const
std::string &filename );
148
172
MeshVectorField
(
geom_mode_e
geom_mode,
const
bool
fout[3],
Int3D
size,
173
Vec3D
origo,
double
h,
const
MeshVectorField
&fin );
174
177
MeshVectorField
(
const
MeshVectorField
&f );
178
181
MeshVectorField
( std::istream &is );
182
185
virtual
~MeshVectorField
();
186
206
void
set_extrapolation
(
const
field_extrpl_e
extrpl[6] ) {
207
memcpy( _extrpl, extrpl, 6*
sizeof
(
field_extrpl_e
) );
208
}
209
212
void
reset_transformation
(
void
);
213
216
void
set_transformation
(
const
Transformation
&T );
217
220
void
translate
(
const
Vec3D
&dx );
221
224
void
scale
(
const
Vec3D
&sx );
225
230
void
rotate_x
(
double
a );
231
238
void
rotate_y
(
double
a );
239
244
void
rotate_z
(
double
a );
245
248
void
clear
();
249
256
void
reset
(
geom_mode_e
geom_mode,
const
bool
fout[3],
Int3D
size,
257
Vec3D
origo,
double
h );
258
262
void
get_minmax
(
double
&min,
double
&
max
)
const
;
263
266
void
get_defined_components
(
bool
fout[3] )
const
;
267
270
MeshVectorField
&
operator=
(
const
MeshVectorField
&f );
271
274
MeshVectorField
&
operator+=
(
const
MeshVectorField
&f );
275
278
MeshVectorField
&
operator*=
(
double
x );
279
282
MeshVectorField
&
operator/=
(
double
x );
283
286
const
Vec3D
operator()
( int32_t i )
const
;
287
290
const
Vec3D
operator()
( int32_t i, int32_t j )
const
;
291
294
const
Vec3D
operator()
( int32_t i, int32_t j, int32_t k )
const
;
295
298
void
set
( int32_t i,
const
Vec3D
&v );
299
302
void
set
( int32_t i, int32_t j,
const
Vec3D
&v );
303
306
void
set
( int32_t i, int32_t j, int32_t k,
const
Vec3D
&v );
307
311
virtual
const
Vec3D
operator()
(
Vec3D
x )
const
;
312
315
void
save
(
const
std::string &filename )
const
;
316
319
void
save
( std::ostream &os )
const
;
320
323
void
debug_print
( std::ostream &os )
const
;
324
};
325
326
327
#endif
328
Reference manual for Ion Beam Simulator 1.0.5b
Generated on by
Doxygen
1.8.1.2 on Mon Sep 24 2012 12:37:00.