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

Method fields

src/fields.cpp:32–86  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

30namespace meep {
31
32fields::fields(structure *s, double m, double beta, bool zero_fields_near_cylorigin,
33 int loop_tile_base_db, int loop_tile_base_eh, std::vector<double> bfast_scaled_k)
34 : S(s->S), gv(s->gv), user_volume(s->user_volume), v(s->v), m(m), beta(beta),
35 loop_tile_base_db(loop_tile_base_db), loop_tile_base_eh(loop_tile_base_eh),
36 working_on(&times_spent), bfast_scaled_k(bfast_scaled_k) {
37 shared_chunks = s->shared_chunks;
38 components_allocated = false;
39 synchronized_magnetic_fields = 0;
40 outdir = new char[strlen(s->outdir) + 1];
41 strcpy(outdir, s->outdir);
42 if (gv.dim == Dcyl) S = S + r_to_minus_r_symmetry(m);
43 phasein_time = 0;
44 for (int d = 0; d < 5; d++) {
45 k[d] = 0.0;
46 eikna[d] = 1.0;
47 }
48 is_real = 0;
49 a = gv.a;
50 dt = s->dt;
51 t = 0;
52 sources = NULL;
53 fluxes = NULL;
54 // Time stuff:
55 reset_timers();
56 last_step_output_wall_time = -1;
57
58 num_chunks = s->num_chunks;
59 typedef fields_chunk *fields_chunk_ptr;
60 chunks = new fields_chunk_ptr[num_chunks];
61 for (int i = 0; i < num_chunks; i++)
62 chunks[i] = new fields_chunk(s->chunks[i], outdir, m, beta, zero_fields_near_cylorigin, i,
63 loop_tile_base_db, bfast_scaled_k);
64 FOR_FIELD_TYPES(ft) {
65 typedef realnum *realnum_ptr;
66 comm_blocks[ft] = new realnum_ptr[num_chunks * num_chunks];
67 for (int i = 0; i < num_chunks * num_chunks; i++)
68 comm_blocks[ft][i] = 0;
69 }
70 for (int b = 0; b < 2; b++)
71 FOR_DIRECTIONS(d) {
72 if (gv.has_boundary((boundary_side)b, d))
73 boundaries[b][d] = Metallic;
74 else
75 boundaries[b][d] = None;
76 }
77 chunk_connections_valid = false;
78 changed_materials = true;
79
80 // unit directions are periodic by default:
81 FOR_DIRECTIONS(d) {
82 if (gv.has_boundary(High, d) && gv.has_boundary(Low, d) && d != R &&
83 s->user_volume.num_direction(d) == 1)
84 use_bloch(d, 0.0);
85 }
86}
87
88fields::fields(const fields &thef)
89 : S(thef.S), gv(thef.gv), user_volume(thef.user_volume), v(thef.v), working_on(&times_spent) {

Callers 2

init_simMethod · 0.80
setUpMethod · 0.80

Calls 3

r_to_minus_r_symmetryFunction · 0.85
has_boundaryMethod · 0.80
FOR_DIRECTIONSFunction · 0.70

Tested by 1

setUpMethod · 0.64