@@ -25,7 +25,9 @@ ERF::read_waves (int lev)
25
25
// amrex::Print() << " Just called ERF::read_waves to receive from WW3 " << bx << std::endl;
26
26
amrex::Array4<Real> my_H_arr = Hwave_onegrid[lev]->array (mfi);
27
27
amrex::Array4<Real> my_L_arr = Lwave_onegrid[lev]->array (mfi);
28
-
28
+ amrex::Print () << " my Valid box: (orig) ("
29
+ << bx.smallEnd (0 ) << " , " << bx.smallEnd (1 ) << " ) to ("
30
+ << bx.bigEnd (0 ) << " , " << bx.bigEnd (1 ) << " )" << std::endl;
29
31
Real* my_H_ptr = my_H_arr.dataPtr ();
30
32
Real* my_L_ptr = my_L_arr.dataPtr ();
31
33
@@ -93,25 +95,31 @@ ERF::read_waves (int lev)
93
95
int ny = bx.length (1 );
94
96
std::vector<amrex::Real> temp_bufferH (nx * ny, 1.0 );
95
97
std::vector<amrex::Real> temp_bufferL (nx * ny, 1.0 );
96
- // amrex::AllPrint() << " NX ,NY: " << nx << " " << ny << std::endl;
98
+ amrex::AllPrint () << " NX ,NY: " << nx << " " << ny << std::endl;
97
99
// amrex::AllPrint() << "temp_bufferH size:" << temp_bufferH.size() << " from rank " << amrex::ParallelDescriptor::MyProc() << std::endl;
98
100
// amrex::AllPrint() << " temp_buffer size: " << temp_buffer.size() << " my rank is " << amrex::MPMD::MyProc()<<std::endl;
99
101
100
102
101
103
for (MFIter mfi (*Hwave_onegrid[lev]); mfi.isValid (); ++mfi) {
102
104
const Array4<Real const >& arr_onegridH = Hwave_onegrid[lev]->const_array (mfi);
103
105
int index = 0 ;
104
- for (int i = 0 ; i < nx; ++i) {
105
- for (int j = 0 ; j < ny; ++j) {
106
+ const Box& bx = mfi.validbox ();
107
+ amrex::Print () << " my Valid box: ("
108
+ << bx.smallEnd (0 ) << " , " << bx.smallEnd (1 ) << " ) to ("
109
+ << bx.bigEnd (0 ) << " , " << bx.bigEnd (1 ) << " )" << std::endl;
110
+ for (int j = 0 ; j < ny; ++j) {
111
+ for (int i = 0 ; i < nx; ++i) {
112
+ amrex::AllPrintToFile (" debug_index.txt" )<< index << " i, j: " << i << " , " << j << " j " << arr_onegridH (i, j, 0 )<<std::endl;
106
113
temp_bufferH[index ++] = arr_onegridH (i, j, 0 );
107
114
}
108
115
}
109
116
}
110
117
for (MFIter mfi (*Lwave_onegrid[lev]); mfi.isValid (); ++mfi) {
111
118
const Array4<Real const >& arr_onegridL = Lwave_onegrid[lev]->const_array (mfi);
112
119
int index = 0 ;
113
- for (int i = 0 ; i < nx; ++i) {
114
- for (int j = 0 ; j < ny; ++j) {
120
+ for (int j = 0 ; j < ny; ++j) {
121
+ for (int i = 0 ; i < nx; ++i) {
122
+ amrex::AllPrintToFile (" debug_indexL.txt" )<< index << " i, j: " << i << " , " << j << " j " << arr_onegridL (i, j, 0 )<<std::endl;
115
123
temp_bufferL[index ++] = arr_onegridL (i, j, 0 );
116
124
}
117
125
}
@@ -123,54 +131,87 @@ ERF::read_waves (int lev)
123
131
124
132
ParallelDescriptor::Barrier ();
125
133
amrex::ParallelDescriptor::Bcast (temp_bufferL.data (), temp_bufferL.size (), 0 );
126
- /*
127
- for (int i = 0; i < 5 ; ++i){
128
- amrex::AllPrint () << " temp_buffer from rank " << amrex::ParallelDescriptor::MyProc() << " (after) " << temp_bufferH[i] << std::endl;
134
+
135
+ for (int i = 0 ; i < 25 ; ++i){
136
+ amrex::Print () << i << " temp_buffer from rank " << amrex::ParallelDescriptor::MyProc () << " (after) " << temp_bufferH[i] << std::endl;
129
137
}
130
- */
138
+
131
139
132
140
ParallelDescriptor::Barrier ();
133
-
141
+ amrex::Print () << " temp_bufferH.size: " << temp_bufferH. size () << std::endl;
134
142
135
143
for (MFIter mfi (*Hwave[lev]); mfi.isValid (); ++mfi) {
136
144
const Box& bx = mfi.validbox ();
137
145
const Array4<Real>& arr_hwave = Hwave[lev]->array (mfi);
138
146
147
+ const Geometry& geom_at_level = geom[lev];
148
+ const Box& domain_box = geom_at_level.Domain ();
149
+ int NX = domain_box.length (0 );
150
+ int NY = domain_box.length (1 );
151
+ amrex::AllPrint () << " BIG NX ,NY: " << nx << " " << ny <<" my rank is " << amrex::ParallelDescriptor::MyProc ()<< std::endl;
152
+
153
+ int nx = bx.length (0 );
154
+ int ny = bx.length (1 );
155
+ amrex::AllPrint () << " small nx ,ny: " << nx << " " << ny <<" my rank is " << amrex::ParallelDescriptor::MyProc ()<< std::endl;
156
+ amrex::AllPrint () << " arr_hwave size: " << arr_hwave.size () << " my rank is " << amrex::ParallelDescriptor::MyProc ()<< std::endl;
157
+ amrex::AllPrint () << " my Valid box: ("
158
+ << bx.smallEnd (0 ) << " , " << bx.smallEnd (1 ) << " ) to ("
159
+ << bx.bigEnd (0 ) << " , " << bx.bigEnd (1 ) << " )" << " my rank is " << amrex::ParallelDescriptor::MyProc () << std::endl;
160
+
161
+
139
162
amrex::ParallelFor (bx, [=] AMREX_GPU_DEVICE (int i, int j, int k) {
140
163
// Calculate the global index for the temp_buffer
141
- int index = (i - bx.smallEnd (0 )) + (j - bx.smallEnd (1 )) * (bx.bigEnd (0 ) - bx.smallEnd (0 ) + 1 );
164
+
165
+ int index = i + j * NX;
142
166
Real valueH = temp_bufferH[index ];
143
167
IntVect iv (i, j, k);
144
- /*
145
- amrex::AllPrint( ) << "Proc " << amrex::ParallelDescriptor::MyProc()
168
+
169
+ amrex::AllPrintToFile ( " check_temp.txt " ) << " Proc " << amrex::ParallelDescriptor::MyProc ()
146
170
<< " , IntVect: " << iv
147
- << ", value: " << valueH << std::endl;
148
- */
171
+ << " , index: " << index
172
+ << " , value: " << temp_bufferH[index ] << std::endl;
173
+
149
174
// Assign value from temp_buffer to the corresponding element in Hwave[lev]
150
175
arr_hwave (i, j, 0 ) = valueH;
176
+
177
+ amrex::AllPrintToFile (" arrH.txt" ) << " Proc " << amrex::ParallelDescriptor::MyProc ()
178
+ << " , IntVect: " << iv
179
+ << " , value: " << valueH << std::endl;
151
180
});
152
181
}
153
182
Hwave[lev]->FillBoundary (geom[lev].periodicity ());
154
183
155
184
for (MFIter mfi (*Lwave[lev]); mfi.isValid (); ++mfi) {
156
185
const Box& bx = mfi.validbox ();
157
186
const Array4<Real>& arr_lwave = Lwave[lev]->array (mfi);
187
+
188
+ const Geometry& geom_at_level = geom[lev];
189
+ const Box& domain_box = geom_at_level.Domain ();
190
+ int NX = domain_box.length (0 );
191
+ int NY = domain_box.length (1 );
192
+
193
+ int nx = bx.length (0 );
194
+ int ny = bx.length (1 );
158
195
159
196
amrex::ParallelFor (bx, [=] AMREX_GPU_DEVICE (int i, int j, int k) {
160
- int index = (i - bx.smallEnd (0 )) + (j - bx.smallEnd (1 )) * (bx.bigEnd (0 ) - bx.smallEnd (0 ) + 1 );
197
+
198
+ int index = i + j * NX;
161
199
Real valueL = temp_bufferL[index ];
162
200
arr_lwave (i, j, 0 ) = valueL;
201
+ IntVect iv (i,j,k);
202
+
203
+ amrex::AllPrintToFile (" arrL.txt" ) << " Proc " << amrex::ParallelDescriptor::MyProc ()
204
+ << " , IntVect: " << iv
205
+ << " , value: " << valueL << std::endl;
163
206
164
207
});
165
208
}
166
209
167
210
Lwave[lev]->FillBoundary (geom[lev].periodicity ());
168
211
ParallelDescriptor::Barrier ();
169
- // Lwave[lev]->FillBoundary(geom[lev].periodicity());
170
- // Hwave[lev]->FillBoundary(geom[lev].periodicity());
171
- // END
172
-
173
212
213
+ amrex::AllPrint () << " MADE IT PAST THE BARRIER" << std::endl;
214
+ // END
174
215
175
216
// Hwave[lev]->ParallelCopy(*Hwave_onegrid[lev]);
176
217
// Lwave[lev]->ParallelCopy(*Lwave_onegrid[lev]);
@@ -186,23 +227,25 @@ for (MFIter mfi(*Lwave[lev]); mfi.isValid(); ++mfi) {
186
227
const Array4<Real const >& Hwave_arr = Hwave[lev]->const_array (mfi);
187
228
const Array4<int >& Lmask_arr = lmask_lev[lev][0 ]->array (mfi);
188
229
ParallelFor (bx, [=] AMREX_GPU_DEVICE (int i, int j, int k){
230
+
231
+ IntVect iv (i,j,k);
232
+ // amrex::Print() << "Hwave_arr (i,j) " << i << ", " << j << "): " << Hwave_arr(i,j,k) << std::endl;
233
+
189
234
if (Hwave_arr (i,j,k)<0 ) {
190
235
Lmask_arr (i,j,k) = 1 ;
191
236
} else {
192
237
Lmask_arr (i,j,k) = 0 ;
193
238
}
194
- /*
195
- IntVect iv(i, j, k);
239
+
196
240
int value = Lmask_arr (i,j,k);
197
- amrex::Print( ) << "Proc " << amrex::ParallelDescriptor::MyProc()
241
+ amrex::AllPrintToFile ( " landmask.txt " ) << " Proc " << amrex::ParallelDescriptor::MyProc ()
198
242
<< " , Index: " << iv << " , Lmask_arr = "
199
243
<< value << std::endl;
200
- */
244
+
201
245
});
202
246
}
203
247
204
248
205
-
206
249
}
207
250
208
251
void
0 commit comments