Open PaperOpt
OpenPaperOpt/StructureObject.h
Go to the documentation of this file.
00001 #ifndef StructureObject_H
00002 #define StructureObject_H
00003 
00004 #if _MSC_VER >= 1000
00005 #pragma once
00006 #endif // _MSC_VER >= 1000
00007 
00008 #include <iostream>
00009 #include "WavePacket.h"
00010 #include <complex>
00011 #include <vector>
00012 #include "utilities.h"
00013 
00014 //TODO: Use enum?
00015 #define SURFACE 1
00016 #define BASESHEET 2
00017 #define BASESHEET_S 3 //Used for basesheet that performs scattering upon entry itself
00018 #define BASESHEETSTATIC 4 //static basesheet
00019 
00020 using namespace std;
00021 
00029 class StructureObject  
00030 {
00031         friend class Basesheet;
00032 
00033 public:
00034 
00035         StructureObject();
00040         StructureObject(StructureObject *) ;
00041         virtual ~StructureObject();
00042         
00050         int PropInLayer(WavePacket& wp, double& t_vector_init, bool& rBoundary);
00051         
00052         
00058     virtual int Process(WavePacket & wp, int up_down,int internal) const =0;
00059                 
00065         void mSetTypeObj(int typobj){mTypeObj = typobj;}
00071         int mGetType_obj() const {return mTypeObj;}
00072 
00078         virtual complex_LC mGetRefrIndex(int nbr) const {return mpRefrIndex[nbr];}
00079 
00084         const StructureObject*  mGetPrevious    ()      const {return m_previous ; } 
00085         const StructureObject*  mGetNext        ()      const {return m_next ; } 
00086 
00090         void DeleteList (void) ;
00091 
00096         const StructureObject *m_previous ;
00097         const StructureObject *m_next ;
00098 
00099 protected:
00105         vector<complex_LC> mpRefrIndex;
00109         float mXMin, mXMax, mYMin, mYMax;
00114         long mIterationLimit;
00120         int mTypeObj;
00121 };
00122 
00123 #endif