Go to the documentation of this file.00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #ifndef SCALARFIELD_HPP
00044 #define SCALARFIELD_HPP 1
00045
00046
00047 #include <iostream>
00048 #include "geometry.hpp"
00049 #include "vec3d.hpp"
00050
00051
00070 class ScalarField : public Mesh {
00071 double *_F;
00075 void check_definition();
00076
00077 public:
00078
00079
00087 ScalarField();
00088
00095 ScalarField( const Mesh &m );
00096
00102 ScalarField( geom_mode_e geom_mode, Int3D size, Vec3D origo, double h );
00103
00106 ScalarField( std::istream &s );
00107
00110 ScalarField( const ScalarField &f );
00111
00114 ~ScalarField();
00115
00118 void clear();
00119
00125 void reset( geom_mode_e geom_mode, Int3D size, Vec3D origo, double h );
00126
00135 void get_minmax( double &min, double &max ) const;
00136
00144 void epot_get_minmax( const Geometry &g, double &min, double &max ) const;
00145
00148 ScalarField &operator=( const ScalarField &f );
00149
00152 ScalarField &operator+=( const ScalarField &f );
00153
00156 ScalarField &operator*=( double x );
00157
00160 ScalarField &operator/=( double x );
00161
00164 inline double &operator()( int32_t i ) {
00165 return( _F[i] ); }
00166
00169 inline double &operator()( int32_t i, int32_t j ) {
00170 return( _F[i + j*_size[0]] ); }
00171
00174 inline double &operator()( int32_t i, int32_t j, int32_t k ) {
00175 return( _F[i + (j + k*_size[1])*_size(0)] ); }
00176
00179 inline const double &operator()( int32_t i ) const {
00180 return( _F[i] ); }
00181
00184 inline const double &operator()( int32_t i, int32_t j ) const {
00185 return( _F[i + j*_size[0]] ); }
00186
00189 inline const double &operator()( int32_t i, int32_t j, int32_t k ) const {
00190 return( _F[i + (j + k*_size[1])*_size(0)] ); }
00191
00199 double operator()( Vec3D x ) const;
00200
00203 void save( const std::string &filename ) const;
00204
00207 void save( std::ostream &s ) const;
00208
00211 void debug_print( std::ostream &os ) const;
00212 };
00213
00214
00215 #endif
00216