|
1 | 1 | #include "meep-ctl.hpp" |
2 | 2 |
|
| 3 | +/* hack to tell meepgeom.hpp, which includes ctlgeom.h, |
| 4 | + to use the ctlgeom.h object definitions and not the |
| 5 | + ctl-io.h definitions */ |
| 6 | +#undef CXX_CTL_IO |
| 7 | +#undef CTL_IO_H |
| 8 | +#include "meepgeom.hpp" |
| 9 | + |
3 | 10 | using namespace meep; |
4 | 11 | using namespace std; |
5 | 12 |
|
@@ -198,3 +205,36 @@ ctlio::number_list std_vector_double_to_scm(std::vector<double> *v) { |
198 | 205 | res.items[i] = (*v)[i]; |
199 | 206 | return res; |
200 | 207 | } |
| 208 | +/***************************************************************************/ |
| 209 | + |
| 210 | +ctlio::integer_list GDSII_layers(const char *fname) { |
| 211 | + std::vector<int> layers = meep_geom::get_GDSII_layers(fname); |
| 212 | + ctlio::integer_list res; |
| 213 | + res.num_items = int(layers.size()); |
| 214 | + res.items = new integer[res.num_items]; |
| 215 | + for (int i = 0; i < res.num_items; ++i) { |
| 216 | + res.items[i] = layers[i]; |
| 217 | + } |
| 218 | + return res; |
| 219 | +} |
| 220 | + |
| 221 | +volume GDSII_vol(const char *fname, int layer, double zmin, double zmax) { |
| 222 | + return meep_geom::get_GDSII_volume(fname, layer, zmin, zmax); |
| 223 | +} |
| 224 | + |
| 225 | +ctlio::simple_prism_list get_GDSII_prisms(const char *GDSIIFile, int Layer, double zmin, double zmax) { |
| 226 | + geometric_object_list go = meep_geom::get_GDSII_prisms(NULL, GDSIIFile, Layer, zmin, zmax); |
| 227 | + ctlio::simple_prism_list res; |
| 228 | + res.num_items = go.num_items; |
| 229 | + res.items = new ctlio::simple_prism[res.num_items]; |
| 230 | + for (int i = 0; i < res.num_items; ++i) { |
| 231 | + prism *p = go.items[i].subclass.prism_data; |
| 232 | + res.items[i].vertices.num_items = p->vertices.num_items; |
| 233 | + res.items[i].vertices.items = p->vertices.items; |
| 234 | + res.items[i].height = p->height; |
| 235 | + res.items[i].axis = p->axis; |
| 236 | + free(p); |
| 237 | + } |
| 238 | + delete[] go.items; |
| 239 | + return res; |
| 240 | +} |
0 commit comments