Skip to content

Commit b2cdb81

Browse files
committed
fixed indexing
1 parent 2a9e7a7 commit b2cdb81

File tree

1 file changed

+69
-26
lines changed

1 file changed

+69
-26
lines changed

Source/ERF_read_waves.cpp

+69-26
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ ERF::read_waves (int lev)
2525
//amrex::Print() << " Just called ERF::read_waves to receive from WW3 " << bx << std::endl;
2626
amrex::Array4<Real> my_H_arr = Hwave_onegrid[lev]->array(mfi);
2727
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;
2931
Real* my_H_ptr = my_H_arr.dataPtr();
3032
Real* my_L_ptr = my_L_arr.dataPtr();
3133

@@ -93,25 +95,31 @@ ERF::read_waves (int lev)
9395
int ny = bx.length(1);
9496
std::vector<amrex::Real> temp_bufferH(nx * ny, 1.0);
9597
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;
9799
//amrex::AllPrint() << "temp_bufferH size:" << temp_bufferH.size() << " from rank " << amrex::ParallelDescriptor::MyProc() << std::endl;
98100
//amrex::AllPrint() << " temp_buffer size: " << temp_buffer.size() << " my rank is " << amrex::MPMD::MyProc()<<std::endl;
99101

100102

101103
for (MFIter mfi(*Hwave_onegrid[lev]); mfi.isValid(); ++mfi) {
102104
const Array4<Real const>& arr_onegridH = Hwave_onegrid[lev]->const_array(mfi);
103105
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;
106113
temp_bufferH[index++] = arr_onegridH(i, j, 0);
107114
}
108115
}
109116
}
110117
for (MFIter mfi(*Lwave_onegrid[lev]); mfi.isValid(); ++mfi) {
111118
const Array4<Real const>& arr_onegridL = Lwave_onegrid[lev]->const_array(mfi);
112119
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;
115123
temp_bufferL[index++] = arr_onegridL(i, j, 0);
116124
}
117125
}
@@ -123,54 +131,87 @@ ERF::read_waves (int lev)
123131

124132
ParallelDescriptor::Barrier();
125133
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;
129137
}
130-
*/
138+
131139

132140
ParallelDescriptor::Barrier();
133-
141+
amrex::Print() << " temp_bufferH.size: " << temp_bufferH.size() << std::endl;
134142

135143
for (MFIter mfi(*Hwave[lev]); mfi.isValid(); ++mfi) {
136144
const Box& bx = mfi.validbox();
137145
const Array4<Real>& arr_hwave = Hwave[lev]->array(mfi);
138146

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+
139162
amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE(int i, int j, int k) {
140163
// 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;
142166
Real valueH = temp_bufferH[index];
143167
IntVect iv(i, j, k);
144-
/*
145-
amrex::AllPrint() << "Proc " << amrex::ParallelDescriptor::MyProc()
168+
169+
amrex::AllPrintToFile("check_temp.txt") << "Proc " << amrex::ParallelDescriptor::MyProc()
146170
<< ", IntVect: " << iv
147-
<< ", value: " << valueH << std::endl;
148-
*/
171+
<< ", index: " << index
172+
<< ", value: " << temp_bufferH[index] << std::endl;
173+
149174
// Assign value from temp_buffer to the corresponding element in Hwave[lev]
150175
arr_hwave(i, j, 0) = valueH;
176+
177+
amrex::AllPrintToFile("arrH.txt") << "Proc " << amrex::ParallelDescriptor::MyProc()
178+
<< ", IntVect: " << iv
179+
<< ", value: " << valueH << std::endl;
151180
});
152181
}
153182
Hwave[lev]->FillBoundary(geom[lev].periodicity());
154183

155184
for (MFIter mfi(*Lwave[lev]); mfi.isValid(); ++mfi) {
156185
const Box& bx = mfi.validbox();
157186
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);
158195

159196
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;
161199
Real valueL = temp_bufferL[index];
162200
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;
163206

164207
});
165208
}
166209

167210
Lwave[lev]->FillBoundary(geom[lev].periodicity());
168211
ParallelDescriptor::Barrier();
169-
//Lwave[lev]->FillBoundary(geom[lev].periodicity());
170-
//Hwave[lev]->FillBoundary(geom[lev].periodicity());
171-
// END
172-
173212

213+
amrex::AllPrint() << "MADE IT PAST THE BARRIER" << std::endl;
214+
// END
174215

175216
// Hwave[lev]->ParallelCopy(*Hwave_onegrid[lev]);
176217
// Lwave[lev]->ParallelCopy(*Lwave_onegrid[lev]);
@@ -186,23 +227,25 @@ for (MFIter mfi(*Lwave[lev]); mfi.isValid(); ++mfi) {
186227
const Array4<Real const>& Hwave_arr = Hwave[lev]->const_array(mfi);
187228
const Array4<int>& Lmask_arr = lmask_lev[lev][0]->array(mfi);
188229
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+
189234
if (Hwave_arr(i,j,k)<0) {
190235
Lmask_arr(i,j,k) = 1;
191236
} else {
192237
Lmask_arr(i,j,k) = 0;
193238
}
194-
/*
195-
IntVect iv(i, j, k);
239+
196240
int value = Lmask_arr(i,j,k);
197-
amrex::Print() << "Proc " << amrex::ParallelDescriptor::MyProc()
241+
amrex::AllPrintToFile("landmask.txt") << "Proc " << amrex::ParallelDescriptor::MyProc()
198242
<< ", Index: " << iv << ", Lmask_arr = "
199243
<< value << std::endl;
200-
*/
244+
201245
});
202246
}
203247

204248

205-
206249
}
207250

208251
void

0 commit comments

Comments
 (0)