ESyS-Particle  2.3.4
ScalarInteractionFieldSlave.hpp
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 //-- STL includes --
14 #include <vector>
15 #include <utility>
16 
17 using std::vector;
18 using std::pair;
19 
20 // -- IO includes --
21 #include <iostream>
22 
23 using std::cout;
24 using std::endl;
25 
26 #include "Foundation/quadtuple.h"
27 #include "pis/pi_storage.h"
28 
36 template <typename T>
38 {
39  m_rdf=rdf;
40 }
41 
45 template <typename T>
47 {
48  vector<pair<Vec3,double> > data;
49 
50  data=this->m_pis->forAllInnerInteractionsGetWithPos(m_rdf);
51 
52  // send data to master
53  this->m_comm->send_gather(data,0);
54 }
55 
59 template <typename T>
61 {
62  vector<pair<esys::lsm::quintuple<Vec3,double,Vec3,double,Vec3>,double> > data;
63 
64  data=this->m_pis->forAllInnerInteractionsGetRaw2(m_rdf);
65 
66  // send data to master
67  this->m_comm->send_gather(data,0);
68 }
69 
73 template <typename T>
75 {
76  vector<pair<esys::lsm::quintuple<int,int,Vec3,Vec3,Vec3>, double> > data;
77 
78  // debug output
79  console.XDebug() << "ScalarInteractionFieldSlave<T>::SendDataWithPosID()\n";
80 
81  data=this->m_pis->forAllInnerInteractionsGetDataWithPosID(m_rdf);
82 
83  // debug output
84  console.XDebug() << "sending " << data.size() << " data\n";
85 
86  // send data to master
87  this->m_comm->send_gather(data,0);
88 }
89 
93 template <typename T>
95 {
96  vector<double> data_vec;
97 
98  // get data from interactions
99  this->m_pis->forAllInnerInteractionsGet(data_vec,m_rdf);
100 
101  // sum data
102  double sum=0.0;
103  for(vector<double>::iterator iter=data_vec.begin();
104  iter!=data_vec.end();
105  iter++){
106  sum+=*iter;
107  }
108 
109  vector<double> sum_vec;
110  sum_vec.push_back(sum);
111  this->m_comm->send_gather(sum_vec,0);
112 }
113 
117 template <typename T>
119 {
120  vector<pair<esys::lsm::triplet<int,int,Vec3>, double> > data;
121 
122  // debug output
123  console.XDebug() << "ScalarInteractionFieldSlave<T>::SendDataWithID()\n";
124 
125  data=this->m_pis->forAllInnerInteractionsGetDataWithID(m_rdf);
126 
127  // debug output
128  console.XDebug() << "sending " << data.size() << " data\n";
129 
130  // send data to master
131  this->m_comm->send_gather(data,0);
132 }
133 
134 
138 template <typename T>
140 {
141  vector<double> data_vec;
142 
143  // get data from interactions
144  this->m_pis->forAllInnerInteractionsGet(data_vec,m_rdf);
145 
146  // sum data
147  double max=*(data_vec.begin());
148  for(vector<double>::iterator iter=data_vec.begin();
149  iter!=data_vec.end();
150  iter++){
151  max=(*iter > max) ? *iter : max;
152  }
153 
154  vector<double> max_vec;
155  max_vec.push_back(max);
156  this->m_comm->send_gather(max_vec,0);
157 }
pi_storage.h
ScalarInteractionFieldSlave::SendDataWithID
virtual void SendDataWithID()
Definition: ScalarInteractionFieldSlave.hpp:118
InteractionFieldSlave
abstract base class for slave part of scalar field defined on the interactions
Definition: InteractionFieldSlave.h:32
ScalarInteractionFieldSlave::SendDataMax
virtual void SendDataMax()
Definition: ScalarInteractionFieldSlave.hpp:139
ScalarInteractionFieldSlave::SendDataFull2
virtual void SendDataFull2()
Definition: ScalarInteractionFieldSlave.hpp:60
ScalarInteractionFieldSlave::m_rdf
T::ScalarFieldFunction m_rdf
Definition: ScalarInteractionFieldSlave.h:42
ScalarInteractionFieldSlave::SendDataSum
virtual void SendDataSum()
Definition: ScalarInteractionFieldSlave.hpp:94
Console::XDebug
Console & XDebug()
set verbose level of next message to "xdg"
quadtuple.h
ScalarInteractionFieldSlave::ScalarInteractionFieldSlave
ScalarInteractionFieldSlave(TML_Comm *, TParallelInteractionStorage< T > *, typename T::ScalarFieldFunction)
Definition: ScalarInteractionFieldSlave.hpp:37
TParallelInteractionStorage< T >
esys::lsm::bpu::iter
boost::python::object iter(const boost::python::object &pyOb)
Definition: Util.h:25
TML_Comm
abstract base class for communicator
Definition: comm.h:47
ScalarInteractionFieldSlave::SendDataWithPosID
virtual void SendDataWithPosID()
Definition: ScalarInteractionFieldSlave.hpp:74
console
Console console
Definition: console.cpp:25
ScalarInteractionFieldSlave::SendDataFull
virtual void SendDataFull()
Definition: ScalarInteractionFieldSlave.hpp:46