ESyS-Particle  4.0.1
InteractionFieldMaster.h
00001 
00002 //                                                         //
00003 // Copyright (c) 2003-2011 by The University of Queensland //
00004 // Earth Systems Science Computational Centre (ESSCC)      //
00005 // http://www.uq.edu.au/esscc                              //
00006 //                                                         //
00007 // Primary Business: Brisbane, Queensland, Australia       //
00008 // Licensed under the Open Software License version 3.0    //
00009 // http://www.opensource.org/licenses/osl-3.0.php          //
00010 //                                                         //
00012 
00013 #ifndef __INTERACTIONFIELDMASTER_H
00014 #define __INTERACTIONFIELDMASTER_H
00015 
00016 //--- project includes ---
00017 #include "FieldMaster.h"
00018 #include "vec3.h"
00019 #include "Foundation/quintuple.h"
00020 #include "Foundation/triplet.h"
00021 
00022 //--- STL includes ---
00023 #include <vector>
00024 
00025 using std::vector;
00026 
00027 //class TML_Comm;
00028 
00037 class ScalarInteractionFieldMaster : public AFieldMaster
00038 {
00039  public:
00040   typedef std::pair<esys::lsm::quintuple<Vec3,double,Vec3,double,Vec3>, double> IVecData2;
00041   typedef std::pair<esys::lsm::triplet<int,int,Vec3>, double> DataWithID;
00042   typedef std::pair<esys::lsm::quintuple<int,int,Vec3,Vec3,Vec3>, double> DataWithPosID;
00043 
00044  protected:
00045   vector<IVecData2> m_data2; // vector of <pos1,radius1,pos2,radius2,ipos,value> groups
00046   vector<DataWithID> m_data_with_id;
00047   vector<DataWithPosID> m_data_with_pos_id;
00048   vector<pair<Vec3,double> >  m_data; // vector of <position,value> pairs
00049   vector<double> m_sum_vec;
00050 
00051   virtual void writeAsDX();
00052   virtual void writeAsSUM();
00053   virtual void writeAsMAX();
00054   virtual void writeAsRAW_SERIES();
00055   virtual void writeAsRAW2();
00056   virtual void writeAsRAW();
00057   virtual void writeAsRawWithID();
00058   virtual void writeAsRawWithPosID();
00059 
00060   void collectFull();
00061   void collectSum();
00062   void collectMax();
00063   void collectFull2();
00064   void collectFullWithID();
00065   void collectFullWithPosID();
00066 
00067  public:
00068   ScalarInteractionFieldMaster(TML_Comm*,const string&,const string&,const string&,const string&,const string&,int,int,int,bool);
00069   ScalarInteractionFieldMaster(TML_Comm*,const string&,const string&,const string&,const string&,const string&,int,int,int,int,int,bool);
00070   virtual ~ScalarInteractionFieldMaster(){};
00071 
00072   void collect();
00073  };
00074 
00075 #endif //__INTERACTIONFIELDMASTER_H