MCPcopy Create free account
hub / github.com/NanoComp/meep / load

Method load

src/fields_dump.cpp:232–278  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

230}
231
232void fields::load(const char *filename, bool single_parallel_file) {
233 if (verbosity > 0)
234 printf("reading fields from file \"%s\" (%d)...\n", filename, single_parallel_file);
235
236 h5file file(filename, h5file::READONLY, single_parallel_file, !single_parallel_file);
237
238 // Read in the current time 't'
239 int rank;
240 size_t dims[1] = {1};
241 size_t start[1] = {0};
242 size_t _t[1];
243 file.read_size("t", &rank, dims, 1);
244 if (rank != 1 || dims[0] != 1) meep::abort("time size mismatch in fields::load");
245 if (am_master() || !single_parallel_file) file.read_chunk(1, start, dims, _t);
246
247 if (single_parallel_file) {
248 file.prevent_deadlock();
249 broadcast(0, _t, dims[0]);
250 }
251
252 t = static_cast<int>(_t[0]);
253 calc_sources(time());
254
255 load_fields_chunk_field(&file, single_parallel_file, "f",
256 [](fields_chunk *chunk, int c, int d) { return &(chunk->f[c][d]); });
257 load_fields_chunk_field(&file, single_parallel_file, "f_u",
258 [](fields_chunk *chunk, int c, int d) { return &(chunk->f_u[c][d]); });
259 load_fields_chunk_field(&file, single_parallel_file, "f_w",
260 [](fields_chunk *chunk, int c, int d) { return &(chunk->f_w[c][d]); });
261 load_fields_chunk_field(&file, single_parallel_file, "f_cond",
262 [](fields_chunk *chunk, int c, int d) { return &(chunk->f_cond[c][d]); });
263 load_fields_chunk_field(
264 &file, single_parallel_file, "f_bfast",
265 [](fields_chunk *chunk, int c, int d) { return &(chunk->f_bfast[c][d]); });
266 load_fields_chunk_field(
267 &file, single_parallel_file, "f_w_prev",
268 [](fields_chunk *chunk, int c, int d) { return &(chunk->f_w_prev[c][d]); });
269
270 // Load DFT chunks.
271 for (int i = 0; i < num_chunks; i++) {
272 if (single_parallel_file || chunks[i]->is_mine()) {
273 char dataname[1024];
274 snprintf(dataname, 1024, "chunk%02d", i);
275 load_dft_hdf5(chunks[i]->dft_chunks, dataname, &file, 0, single_parallel_file);
276 }
277 }
278}
279
280} // namespace meep

Callers 2

structure_loadFunction · 0.45
fields_loadFunction · 0.45

Calls 8

abortFunction · 0.85
am_masterFunction · 0.85
broadcastFunction · 0.85
load_dft_hdf5Function · 0.85
read_sizeMethod · 0.80
read_chunkMethod · 0.80
prevent_deadlockMethod · 0.80
is_mineMethod · 0.45

Tested by

no test coverage detected