OpenAtom  Version1.5a
CP_LargeSP_RhoRealSpacePlane.C
Go to the documentation of this file.
1 /*****************************************************************************
2  * $Source$
3  * $Author$
4  * $Date$
5  * $Revision$
6  *****************************************************************************/
7 
8 //////////////////////////////////////////////////////////////////////////////
9 //////////////////////////////////////////////////////////////////////////////
10 //////////////////////////////////////////////////////////////////////////////
11 /** \file CP_LargeSP_RhoRealSpacePlane.C
12  * This is the description of the "life" of a CP_LargeSP_RhoRealSpacePlane object.
13  *
14  * At the start of the program, the constructor CP_LargeSP_RhoRealSpacePlane() is called.
15  *
16  * The CP_Rho_RealSpacePlanes interpolate onto the larger grid by
17  * sending their charge to CP_LargeSP_RhoRealSpacePlane using the
18  * acceptRhoR() method.
19  *
20  * CP_LargeSP_RhoRealSpacePlane fft transposes this data to CP_LargeSP_RhoGSpacePlane.
21  * When CP_LargeSP_RhoGSpacePlane is done interacting with NAMD it fft
22  * transposes the updated grid back to CP_LargeSP_RhoRealSpacePlane
23  * via acceptLSPRhoG. CP_LargeSP_RhoRealSpacePlane then sends the
24  * updated charge grad back to CP_Rho_RealSpacePlane for VKS et al.
25  */
26 //////////////////////////////////////////////////////////////////////////////
27 
28 #include "charm++.h"
29 #include <iostream>
30 #include <fstream>
31 #include <cmath>
32 
33 #include "debug_flags.h"
34 #include "utility/util.h"
35 #include "main/cpaimd.h"
38 #include "src_piny_physics_v1.0/include/class_defs/CP_OPERATIONS/class_cpxcfnctls.h"
39 
40 //////////////////////////////////////////////////////////////////////////////
41 extern CProxy_TimeKeeper TimeKeeperProxy;
42 extern CkVec <CProxy_CP_Rho_RealSpacePlane> UrhoRealProxy;
43 extern CkVec <CProxy_CP_LargeSP_RhoGSpacePlane> UlsRhoGProxy;
44 extern CkVec <CProxy_FFTcache> UfftCacheProxy;
45 extern CkVec <CProxy_GSpaceDriver> UgSpaceDriverProxy;
46 
47 
48 extern CkGroupID mCastGrpId;
49 
50 extern Config config;
51 extern int nstates;
52 
53 bool is_pow2(int );
54 
55 
56 /** @addtogroup LargeSparse
57  @{
58 */
59 //////////////////////////////////////////////////////////////////////////////
60 //////////////////////////////////////////////////////////////////////////////
61 //////////////////////////////////////////////////////////////////////////////
62 ///
63 /// This class (array) accepts the real space densities from all the Rho_Reals.
64 /// Interpolates onto the larger grid, FFT transpose to LargeSP_RhoG,
65 /// receive the ifft from LargeSP_RhoG and ungrid back to Rho_Reals.
66 ///
67 //////////////////////////////////////////////////////////////////////////////
68 CP_LargeSP_RhoRealSpacePlane::CP_LargeSP_RhoRealSpacePlane(
69  UberCollection _instance) :
70  thisInstance(_instance)
71 //////////////////////////////////////////////////////////////////////////////
72  {//begin routine
73 //////////////////////////////////////////////////////////////////////////////
74 
75 #ifdef _CP_DEBUG_LARGESP_RHOREAL_VERBOSE_
76  CkPrintf("[%d %d] LargeSP_RhoReal constructs \n",thisIndex.x, thisIndex.y);
77 #endif
78 
79 //////////////////////////////////////////////////////////////////////////////
80 /// Get parameters from the globals/groups
81 
82  CPcharmParaInfo *sim = CPcharmParaInfo::get();
83 
84 
85 
86 //////////////////////////////////////////////////////////////////////////////
87 /// handle class member local initialization
88 
89 
90 
91 //////////////////////////////////////////////////////////////////////////////
92 /// Migration
93 
94  usesAtSync = true;
95  setMigratable(false);
96 
97 
98 //---------------------------------------------------------------------------
99  }//end routine
100 //////////////////////////////////////////////////////////////////////////////
101 
102 /** post constructor initialization */
103 //////////////////////////////////////////////////////////////////////////////
104 //////////////////////////////////////////////////////////////////////////////
105 //////////////////////////////////////////////////////////////////////////////
107 
108 /// place holder
109 
110 //---------------------------------------------------------------------------
111 }
112 //////////////////////////////////////////////////////////////////////////////
113 
114 
115 //////////////////////////////////////////////////////////////////////////////
116 //////////////////////////////////////////////////////////////////////////////
117 //////////////////////////////////////////////////////////////////////////////
118 CP_LargeSP_RhoRealSpacePlane::~CP_LargeSP_RhoRealSpacePlane(){
119 
120 //---------------------------------------------------------------------------
121 }
122 //////////////////////////////////////////////////////////////////////////////
123 
124 
125 //////////////////////////////////////////////////////////////////////////////
126 //////////////////////////////////////////////////////////////////////////////
127 //////////////////////////////////////////////////////////////////////////////
128 /// Pup my variables for migration
129 //////////////////////////////////////////////////////////////////////////////
131  ArrayElement2D::pup(p);
132 //---------------------------------------------------------------------------
133  }//end routine
134 //////////////////////////////////////////////////////////////////////////////
135 
136 
137 //////////////////////////////////////////////////////////////////////////////
138 //////////////////////////////////////////////////////////////////////////////
139 //////////////////////////////////////////////////////////////////////////////
140 ///
141 /// Data comes from Rho_Real once an algorithm step.
142 /**
143  * Here the density is interpolated onto the large grid.
144  */
145 //////////////////////////////////////////////////////////////////////////////
147 //////////////////////////////////////////////////////////////////////////////
148 
149 #ifdef _CP_DEBUG_LARGE_RHOREAL_VERBOSE_
150  CkPrintf("[%d,%d] LSP_RhoReal accepting Density %d \n",
151  thisIndex.x,thisIndex.y,CkMyPe());
152 #endif
153 
154 
155 
156 //----------------------------------------------------------------------------
157  }//end routine
158 //////////////////////////////////////////////////////////////////////////////
159 
160 //////////////////////////////////////////////////////////////////////////////
161 //////////////////////////////////////////////////////////////////////////////
162 //////////////////////////////////////////////////////////////////////////////
163 ///
164 /// Data comes from LSP_RhoG once an algorithm step.
165 /**
166  * Here the density is interpolated onto the large grid.
167  */
168 //////////////////////////////////////////////////////////////////////////////
170 //////////////////////////////////////////////////////////////////////////////
171 
172 #ifdef _CP_DEBUG_LARGE_RHOREAL_VERBOSE_
173  CkPrintf("[%d, %d] LSP_RhoReal accepting LSPRhoG %d\n",
174  thisIndex.x,thisIndex.y,CkMyPe());
175 #endif
176 
177 
178 
179 //----------------------------------------------------------------------------
180  }//end routine
181 //////////////////////////////////////////////////////////////////////////////
182 
183 
184 /*@}*/
holds the UberIndex and the offset for proxies
Definition: Uber.h:68
void init()
post constructor initialization
CkGroupID mCastGrpId
Multicast manager group that handles many mcast/redns in the code. Grep for info. ...
Definition: cpaimd.C:216
void acceptLSPRhoG()
Data comes from LSP_RhoG once an algorithm step.
Add type declarations for simulationConstants class (readonly vars) and once class for each type of o...
void pup(PUP::er &)
Pup my variables for migration.
bool is_pow2(int)
return tru if input is power of 2
Some basic data structures and the array map classes are defined here.
void acceptRhoR()
Data comes from Rho_Real once an algorithm step.
Useful debugging flags.