Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

vector.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2001 The AUTHORS 
00003  *   Romeu Andre' Pieritz, Ph.D.        - romeu_pieritz@hotmail.com
00004  *   Rafael Mendes, Eng.                – mendes_rafael@yahoo.com
00005  *   Rodrigo Ferraz de Andrade, Eng.    – rferraz@iname.com 
00006  * All rights reserved.
00007  *
00008  * Permission to use, copy and distribute this software and its
00009  * documentation for educational and personal use, without fee is hereby granted, 
00010  * provided that the above copyright notice and the following
00011  * two paragraphs appear in all copies of this software.
00012  *
00013  * IN NO EVENT SHALL THE AUTHORS BE LIABLE TO ANY PARTY FOR
00014  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
00015  * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHORS
00016  * HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00017  *
00018  * THE AUTHORS SPECIFICALLY DISCLAIMS ANY WARRANTIES,
00019  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
00020  * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HERE UNDER IS
00021  * ON AN "AS IS" BASIS, AND THE AUTHORS HAVE NO OBLIGATION TO
00022  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
00023  *
00024  * SINMEC Lab. - CFD Sinflow Project - http://www.sinmec.ufsc.br/cfd
00025  */
00026 
00027 
00028 // File Define
00029 #ifndef __CSFL_FIELD_VALUE_VECTOR_H__
00030 #define __CSFL_FIELD_VALUE_VECTOR_H__
00031 
00032 
00033 // Include
00034 #include <csfl/field/core/field.h>
00035 #include <csfl/sys/math/matrix.h>
00036 
00037 
00038 // Namespace
00039 namespace csfl {
00040 
00041 //==============================================================================
00042 //              Class IFieldVector
00043 //              Description: Represents a vector field
00044 //==============================================================================
00045 
00046 class IFieldVector : 
00047         public IField
00048 
00052 
00053 {
00054 
00055 public:
00056         
00061         IFieldVector( 
00062         const IString &_name = IString::empty, 
00063                 IGrid *_grid = NULL, 
00064         MatrixVector *_vm = NULL );
00065         
00071         IFieldVector( const IString &_name , IGrid *_grid, double _u, double _v );
00072         
00076         IFieldVector( const IString &_name, const ISize &_size );
00077         
00082         IFieldVector( const IString &_name, int _row, int _col );
00083     
00085         IFieldVector( IFieldVector *_vfield );
00086 
00087         ~IFieldVector();
00088 
00093         inline IVector Vector( const IPoint &_p );
00094 
00099         inline IVector Vector( int _i, int _j );
00100     
00105         inline void SetVector( const IPoint &_p, const IVector &_v );
00106 
00111         inline void SetVector( int _x, int _y, const IVector &_v );
00112 
00114         inline const IFieldVector & operator = ( const IFieldVector &_vfield );   
00115 
00116 
00117 public:
00118         
00122         void Read( ifstream &_isx, ifstream &_isy );
00123     
00128         void Write( ofstream &_osx, ofstream &_osy );
00129 
00130 protected:
00131         MatrixVector *data;
00132 
00133 };
00134 
00135 // =============================================================================
00136 // Inline functions
00137 // =============================================================================
00138 
00139 
00140 inline IVector IFieldVector::Vector( int _i, int _j ) 
00141 {
00142     if ( _i>=0.0 && _i<fsize.width && _j>=0.0 && _j<fsize.height)   
00143         return data->Value( _i, _j );
00144     else
00145         return IVector( 0.0, 0.0 );
00146 }
00147 
00148 inline IVector IFieldVector::Vector( const IPoint &_p ) 
00149 {
00150         return Vector( _p.x, _p.y );
00151 }
00152 
00153 inline void IFieldVector::SetVector( const IPoint &_p, const IVector &_v )
00154 {
00155     data->SetValue( _p, _v );
00156 }
00157 
00158 inline void IFieldVector::SetVector( int _x, int _y, const IVector &_v )
00159 {
00160     data->SetValue( _x, _y, _v );
00161 }
00162 
00163 inline const IFieldVector & IFieldVector::operator = ( const IFieldVector & _vfield )
00164 {
00165         ( IFieldVector & )*this = _vfield;
00166         data = _vfield.data;
00167         return *this;
00168 }
00169 
00170 //==============================================================================
00171 } // csfl namespace
00172 
00173 #endif// __CSFL_FIELD_VALUE_VECTOR_H__

 

CFD Project | Documents | Downloads | Contact us | Use Terms

 

© SINMEC/EMC/UFSC, 2001.

All rights reserved.

Last Update: Jan. 18, 2002

 Webmaster