Navigation

Main Page
Download
Support
Installation
Tutorial
Examples
Reference Manual
   Version 1.0.5new_solver
   Version 1.0.5dev
   Version 1.0.5b
      Class Index
      File List
   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

meshvectorfield.hpp

Go to the documentation of this file.
00001 
00005 /* Copyright (c) 2005-2011 Taneli Kalvas. All rights reserved.
00006  *
00007  * You can redistribute this software and/or modify it under the terms
00008  * of the GNU General Public License as published by the Free Software
00009  * Foundation; either version 2 of the License, or (at your option)
00010  * any later version.
00011  * 
00012  * This library is distributed in the hope that it will be useful, but
00013  * WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00015  * General Public License for more details.
00016  * 
00017  * You should have received a copy of the GNU General Public License
00018  * along with this library (file "COPYING" included in the package);
00019  * if not, write to the Free Software Foundation, Inc., 51 Franklin
00020  * Street, Fifth Floor, Boston, MA 02110-1301 USA
00021  * 
00022  * If you have questions about your rights to use or distribute this
00023  * software, please contact Berkeley Lab's Technology Transfer
00024  * Department at TTD@lbl.gov. Other questions, comments and bug
00025  * reports should be sent directly to the author via email at
00026  * taneli.kalvas@jyu.fi.
00027  * 
00028  * NOTICE. This software was developed under partial funding from the
00029  * U.S.  Department of Energy.  As such, the U.S. Government has been
00030  * granted for itself and others acting on its behalf a paid-up,
00031  * nonexclusive, irrevocable, worldwide license in the Software to
00032  * reproduce, prepare derivative works, and perform publicly and
00033  * display publicly.  Beginning five (5) years after the date
00034  * permission to assert copyright is obtained from the U.S. Department
00035  * of Energy, and subject to any subsequent five (5) year renewals,
00036  * the U.S. Government is granted for itself and others acting on its
00037  * behalf a paid-up, nonexclusive, irrevocable, worldwide license in
00038  * the Software to reproduce, prepare derivative works, distribute
00039  * copies to the public, perform publicly and display publicly, and to
00040  * permit others to do so.
00041  */
00042 
00043 #ifndef MESHVECTORFIELD_HPP
00044 #define MESHVECTORFIELD_HPP 1
00045 
00046 
00047 #include "transformation.hpp"
00048 #include "vectorfield.hpp"
00049 #include "mesh.hpp"
00050 #include "types.hpp"
00051 
00052 
00071 class MeshVectorField : public VectorField, public Mesh {
00072 
00073     field_extrpl_e   _extrpl[6]; 
00074     double          *_F[3];      
00080     Transformation   _T;         
00081     Transformation   _Tinv;      
00083     void check_definition();
00084 
00085     void convert_3d_to_3d( const MeshVectorField &fin );
00086     void convert_cyl_to_3d( const MeshVectorField &fin );
00087 
00088 public:
00089 
00090 
00098     MeshVectorField();
00099 
00106     MeshVectorField( const Mesh &m, const bool fout[3] );
00107 
00118     MeshVectorField( geom_mode_e geom_mode, const bool fout[3], Int3D size, 
00119                      Vec3D origo, double h );
00120 
00146     MeshVectorField( geom_mode_e geom_mode, const bool fout[3], double xscale, 
00147                      double fscale, const std::string &filename );
00148 
00172     MeshVectorField( geom_mode_e geom_mode, const bool fout[3], Int3D size, 
00173                      Vec3D origo, double h, const MeshVectorField &fin );
00174 
00177     MeshVectorField( const MeshVectorField &f );
00178 
00181     MeshVectorField( std::istream &is );
00182 
00185     virtual ~MeshVectorField();
00186 
00206     void set_extrapolation( const field_extrpl_e extrpl[6] ) {
00207         memcpy( _extrpl, extrpl, 6*sizeof(field_extrpl_e) );
00208     }
00209 
00212     void reset_transformation( void );
00213 
00216     void set_transformation( const Transformation &T );
00217 
00220     void translate( const Vec3D &dx );
00221 
00224     void scale( const Vec3D &sx );
00225 
00230     void rotate_x( double a );
00231 
00238     void rotate_y( double a );
00239 
00244     void rotate_z( double a );
00245 
00248     void clear();
00249 
00256     void reset( geom_mode_e geom_mode, const bool fout[3], Int3D size, 
00257                 Vec3D origo, double h );
00258 
00262     void get_minmax( double &min, double &max ) const;
00263 
00266     void get_defined_components( bool fout[3] ) const;
00267 
00270     MeshVectorField &operator=( const MeshVectorField &f );
00271 
00274     MeshVectorField &operator+=( const MeshVectorField &f );
00275 
00278     MeshVectorField &operator*=( double x );
00279 
00282     MeshVectorField &operator/=( double x );
00283 
00286     const Vec3D operator()( int32_t i ) const;
00287 
00290     const Vec3D operator()( int32_t i, int32_t j ) const;
00291 
00294     const Vec3D operator()( int32_t i, int32_t j, int32_t k ) const;
00295 
00298     void set( int32_t i, const Vec3D &v );
00299     
00302     void set( int32_t i, int32_t j, const Vec3D &v );
00303 
00306     void set( int32_t i, int32_t j, int32_t k, const Vec3D &v );
00307 
00311     virtual const Vec3D operator()( Vec3D x ) const;
00312 
00315     void save( const std::string &filename ) const;
00316 
00319     void save( std::ostream &os ) const;
00320 
00323     void debug_print( std::ostream &os ) const;
00324 };
00325 
00326 
00327 #endif
00328 


Reference manual for Ion Beam Simulator 1.0.5b
Generated by Doxygen 1.7.1 on Fri Oct 7 2011 15:47:10.