Navigation

Main Page
Download
Support
Installation
Tutorial
Examples
Reference Manual
   Version 1.0.5new_solver
      Class Index
      File List
   Version 1.0.5dev
   Version 1.0.5b
   Version 1.0.4dev
   Version 1.0.4
Publications


Hosted by Get Ion Beam Simulator at SourceForge.net. Fast, secure and Free Open Source software downloads
multimeshvectorfield.hpp
Go to the documentation of this file.
1 
5 /* Copyright (c) 2011,2012,2014 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 MULTIMESHVECTORFIELD_HPP
44 #define MULTIMESHVECTORFIELD_HPP 1
45 
46 
47 #include <vector>
48 #include "meshvectorfield.hpp"
49 
50 
77 
78  std::vector<MeshVectorField *> _field;
82 public:
83 
92 
99  MultiMeshVectorField( const Mesh &m, const bool fout[3] );
100 
111  MultiMeshVectorField( geom_mode_e geom_mode, const bool fout[3], Int3D size,
112  Vec3D origo, double h );
113 
139  MultiMeshVectorField( geom_mode_e geom_mode, const bool fout[3], double xscale,
140  double fscale, const std::string &filename );
141 
145 
148  MultiMeshVectorField( std::istream &s );
149 
152  virtual ~MultiMeshVectorField();
153 
173  void set_extrapolation( const field_extrpl_e extrpl[6] );
174 
177  void translate( Vec3D x );
178 
181  void scale( double s );
182 
185  void rotate_x( double a );
186 
189  void rotate_y( double a );
190 
193  void rotate_z( double a );
194 
197  void clear();
198 
205  void reset( geom_mode_e geom_mode, const bool fout[3], Int3D size,
206  Vec3D origo, double h );
207 
208 
218  void add_mesh( const MeshVectorField &field );
219 
228  void add_mesh( Int3D size, Vec3D origo, double h );
229 
238  void add_mesh( double xscale, double fscale, const std::string &filename );
239 
243  void get_minmax( double &min, double &max ) const;
244 
247  void get_defined_components( bool fout[3] ) const;
248 
252 
255  const MeshVectorField &operator[]( int i ) const {
256  return( *_field[i] );
257  }
258 
262  return( *_field[i] );
263  }
264 
268  virtual const Vec3D operator()( const Vec3D &x ) const;
269 
272  void save( const std::string &filename ) const;
273 
276  void save( std::ostream &s ) const;
277 
280  void debug_print( std::ostream &os ) const;
281 };
282 
283 
284 #endif
285 
void rotate_z(double a)
Rotate field in coordinate system around z-axis for a radians.
Definition: multimeshvectorfield.cpp:134
void set_extrapolation(const field_extrpl_e extrpl[6])
Set the behaviour of field interpolation outside mesh points (extrapolation).
Definition: multimeshvectorfield.cpp:100
void rotate_y(double a)
Rotate field in coordinate system around y-axis for a radians.
Definition: multimeshvectorfield.cpp:127
Vector field.
Definition: vectorfield.hpp:56
void add_mesh(const MeshVectorField &field)
Add a new mesh field to the multiple mesh vector field.
Definition: multimeshvectorfield.cpp:157
const MeshVectorField & operator[](int i) const
Return const reference to subfield i.
Definition: multimeshvectorfield.hpp:255
MultiMeshVectorField()
Default constructor.
Definition: multimeshvectorfield.cpp:52
Mesh geometry definion.
Definition: mesh.hpp:67
geom_mode_e
Geometry mode enum.
Definition: types.hpp:59
virtual const Vec3D operator()(const Vec3D &x) const
Operator for getting linearly interpolated field value at x.
Definition: multimeshvectorfield.cpp:246
field_extrpl_e
Field extrapolation mode.
Definition: types.hpp:79
Mesh based vector fields
void debug_print(std::ostream &os) const
Print debugging information to os.
Definition: multimeshvectorfield.cpp:281
void rotate_x(double a)
Rotate field in coordinate system around x-axis for a radians.
Definition: multimeshvectorfield.cpp:120
void scale(double s)
Scale field in coordinate system.
Definition: multimeshvectorfield.cpp:113
void get_defined_components(bool fout[3]) const
Get which field components are defined.
Definition: multimeshvectorfield.cpp:225
void reset(geom_mode_e geom_mode, const bool fout[3], Int3D size, Vec3D origo, double h)
Resets the field geometry.
Definition: multimeshvectorfield.cpp:148
virtual ~MultiMeshVectorField()
Destructor.
Definition: multimeshvectorfield.cpp:93
Vector field based on multiple meshes.
Definition: multimeshvectorfield.hpp:76
MultiMeshVectorField & operator=(const MultiMeshVectorField &f)
Copy operator.
Definition: multimeshvectorfield.cpp:231
3D Integer vector class.
Definition: vec3d.hpp:304
Mesh based vector field.
Definition: meshvectorfield.hpp:84
void get_minmax(double &min, double &max) const
Search minimum and maximum vector length values of vector field.
Definition: multimeshvectorfield.cpp:208
void save(const std::string &filename) const
Saves data to a new file filename.
Definition: multimeshvectorfield.cpp:261
Three dimensional vector.
Definition: vec3d.hpp:58
MeshVectorField & operator[](int i)
Return reference to subfield i.
Definition: multimeshvectorfield.hpp:261
void clear()
Clears the field.
Definition: multimeshvectorfield.cpp:141
void translate(Vec3D x)
Translate field in coordinate system.
Definition: multimeshvectorfield.cpp:106


Reference manual for Ion Beam Simulator 1.0.5new_solver
Generated by Doxygen 1.8.5 on Tue May 19 2015 09:15:42.