ESyS-Particle  4.0.1
VectorInteractionFieldMaster.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 __VECTORINTERACTIONFIELDMASTER_H
00014 #define __VECTORINTERACTIONFIELDMASTER_H
00015 
00016 //--- project includes ---
00017 #include "FieldMaster.h"
00018 #include "Foundation/vec3.h"
00019 #include "Foundation/quintuple.h"
00020 
00021 //--- STL includes ---
00022 #include <map>
00023 #include <vector>
00024 #include <iostream>
00025 
00026 using std::map;
00027 using std::vector;
00028 
00037 class VectorInteractionFieldMaster : public AFieldMaster
00038 {
00039  public:
00040   typedef std::pair<esys::lsm::quintuple<Vec3,double,Vec3,double,Vec3>, Vec3> IVecData2;
00041   typedef std::pair<esys::lsm::triplet<int,int,Vec3>, Vec3> DataWithID;
00042   typedef std::pair<esys::lsm::quintuple<int,int,Vec3,Vec3,Vec3>, Vec3> DataWithPosID;
00043 
00044 
00045  protected:
00046   vector<IVecData2> m_data2; // vector of <pos1,radius1,pos2,radius2,ipos,value> groups
00047   vector<DataWithID> m_data_with_id;
00048   vector<DataWithPosID> m_data_with_pos_id;
00049   vector<pair<Vec3,Vec3> >  m_data; // vector of <position,value> pairs
00050   vector<Vec3> m_sum_vec;
00051 
00052   virtual void writeAsDX();
00053   virtual void writeAsSUM();
00054   virtual void writeAsMAX(){};
00055   virtual void writeAsRAW_SERIES(){};
00056   virtual void writeAsRAW2();
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   VectorInteractionFieldMaster(TML_Comm*,const string&,const string&,const string&,const string&,const string&,int,int,int,bool);
00069   virtual ~VectorInteractionFieldMaster(){}; 
00070 
00071   virtual void collect();
00072 };
00073 
00074 #endif // __VECTORINTERACTIONFIELDMASTER_H