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

Method sigma_row

scheme/structure.cpp:1138–1182  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1136}
1137
1138void geom_epsilon::sigma_row(meep::component c, double sigrow[3], const meep::vec &r) {
1139 vector3 p = vec_to_vector3(r);
1140
1141 boolean inobject;
1142 material_type material =
1143 material_of_unshifted_point_in_tree_inobject(p, restricted_tree, &inobject);
1144
1145 int destroy_material = 0;
1146 if (material.which_subclass == MTS::MATERIAL_TYPE_SELF) { material = default_material; }
1147 if (material.which_subclass == MTS::MATERIAL_FUNCTION) {
1148 material = eval_material_func(material.subclass.material_function_data->material_func, p);
1149 destroy_material = 1;
1150 }
1151
1152 sigrow[0] = sigrow[1] = sigrow[2] = 0.0;
1153 if (material.which_subclass == MTS::MEDIUM) {
1154 susceptibility_list slist = type(c) == meep::E_stuff
1155 ? material.subclass.medium_data->E_susceptibilities
1156 : material.subclass.medium_data->H_susceptibilities;
1157 for (int j = 0; j < slist.num_items; ++j)
1158 if (susceptibility_equiv(&slist.items[j], &current_pol->user_s)) {
1159 int ic = meep::component_index(c);
1160 switch (ic) { // which row of the sigma tensor to return
1161 case 0:
1162 sigrow[0] = slist.items[j].sigma_diag.x;
1163 sigrow[1] = slist.items[j].sigma_offdiag.x;
1164 sigrow[2] = slist.items[j].sigma_offdiag.y;
1165 break;
1166 case 1:
1167 sigrow[0] = slist.items[j].sigma_offdiag.x;
1168 sigrow[1] = slist.items[j].sigma_diag.y;
1169 sigrow[2] = slist.items[j].sigma_offdiag.z;
1170 break;
1171 default: // case 2:
1172 sigrow[0] = slist.items[j].sigma_offdiag.y;
1173 sigrow[1] = slist.items[j].sigma_offdiag.z;
1174 sigrow[2] = slist.items[j].sigma_diag.z;
1175 break;
1176 }
1177 break;
1178 }
1179 }
1180
1181 if (destroy_material) material_type_destroy(material);
1182}
1183
1184/* make multilevel_susceptibility from scheme input data */
1185static meep::susceptibility *make_multilevel_sus(const multilevel_atom *d) {

Callers

nothing calls this directly

Calls 5

eval_material_funcFunction · 0.85
typeFunction · 0.85
component_indexFunction · 0.85
vec_to_vector3Function · 0.70
susceptibility_equivFunction · 0.70

Tested by

no test coverage detected