78 void wire(
int tag_id,
int segment_count,
79 nec_float xw1, nec_float yw1, nec_float zw1,
80 nec_float xw2, nec_float yw2, nec_float zw2,
82 nec_float rdel, nec_float rrad);
85 void arc(
int tag_id,
int segment_count, nec_float rada,
86 nec_float ang1, nec_float ang2, nec_float rad );
88 void helix(
int tag_id,
int segment_count,
89 nec_float s, nec_float hl, nec_float a1, nec_float b1,
90 nec_float a2, nec_float b2, nec_float rad);
92 void move( nec_float rox, nec_float roy, nec_float roz, nec_float xs,
93 nec_float ys, nec_float zs,
int its,
int nrpt,
int itgi );
102 void reflect(
int ix,
int iy,
int iz,
int itx) {
103 int nop = 100*ix + 10*iy + iz;
104 this->
reflect(ix, iy, iz, itx, nop);
114 this->
reflect(-1, 0, 0, itx, nop);
117 void reflect(
int ix,
int iy,
int iz,
int itx,
int nop );
120 void scale( nec_float xw1);
122 void patch(
int nx,
int ny,
123 nec_float ax1, nec_float ay1, nec_float az1,
124 nec_float ax2, nec_float ay2, nec_float az2,
125 nec_float ax3, nec_float ay3, nec_float az3,
126 nec_float ax4, nec_float ay4, nec_float az4 );
129 void sp_card(
int ns,
130 nec_float in_x1, nec_float in_y1, nec_float in_z1,
131 nec_float in_x2, nec_float in_y2, nec_float in_z2);
133 void sc_card(
int i2,
134 nec_float x3, nec_float y3, nec_float z3,
135 nec_float x4, nec_float y4, nec_float z4);
136 void sc_multiple_card(
int i2,
137 nec_float x3, nec_float y3, nec_float z3,
138 nec_float x4, nec_float y4, nec_float z4);
140 void gx_card(
int card_int_1,
int card_int_2);
160 const std::vector<nec_overlap_finding>&
overlap_findings()
const {
return m_overlap_findings; }
186 void frequency_scale(nec_float freq_mhz);
188 void tbf(
int i,
int icap);
191 void get_current_coefficients(nec_float wavelength,
complex_array& curx,
198 nec_float patch_angle(
int patch_index, nec_float in_ax, nec_float in_ay, nec_float in_az);
202 void fflds(nec_float rox, nec_float roy, nec_float roz,
204 nec_complex *in_ex, nec_complex *in_ey, nec_complex *in_ez );
209 real_array x, y, z, segment_length, segment_radius;
223 int jsno, nscon, maxcon;
227 inline int64_t n_plus_m(
void)
const {
228 return n_segments + m;
230 int64_t n_plus_2m, n_plus_3m;
234 real_array x_unscaled, y_unscaled, z_unscaled, si_unscaled, bi_unscaled;
235 real_array px_unscaled, py_unscaled, pz_unscaled, pbi_unscaled;
237 void sbf(
int i,
int is, nec_float *aa, nec_float *bb, nec_float *cc );
239 void divide_patch(
int nx );
241 void connect_segments(
int ignd );
249 void check_segment_intersections();
251 void collect_overlap_findings();
253 void build_connections(
int ignd );
254 void resolve_junctions();
257 void parse_geometry_card_line(
const char* line_buf,
char *gm,
259 nec_float *x1, nec_float *y1,nec_float *z1,
260 nec_float *x2, nec_float *y2, nec_float *z2,
263 void read_geometry_card(FILE* input_fp,
char *gm,
265 nec_float *x1, nec_float *y1,nec_float *z1,
266 nec_float *x2, nec_float *y2, nec_float *z2,
268 void read_geometry_card(std::istream& is,
char *gm,
270 nec_float *x1, nec_float *y1,nec_float *z1,
271 nec_float *x2, nec_float *y2, nec_float *z2,
276 bool _check_intersections;
277 bool _overlap_is_fatal;
278 std::vector<nec_overlap_finding> m_overlap_findings;
280 void reflect_plane(
int sym_plane,
int& tag_increment);
287 struct geometry_parse_state {
288 char gm[3] = {0,0,0};
289 int card_int_1 = 0, card_int_2 = 0;
290 nec_float xw1=0, yw1=0, zw1=0, xw2=0, yw2=0, zw2=0, rad=0;
291 nec_float x3=0, y3=0, z3=0, x4=0, y4=0, z4=0;
296 void parse_structure_header();
297 void parse_gw_card(FILE* input_fp, geometry_parse_state& st);
298 void parse_gr_card(geometry_parse_state& st);
299 void parse_gs_card(geometry_parse_state& st);
300 void parse_gm_card(geometry_parse_state& st);
301 void parse_sp_card(FILE* input_fp, geometry_parse_state& st);
302 void parse_sm_card(FILE* input_fp, geometry_parse_state& st);
303 void parse_ga_card(geometry_parse_state& st);
304 void parse_sc_card(geometry_parse_state& st);
305 void parse_gh_card(geometry_parse_state& st);
306 void parse_geometry_error(
const geometry_parse_state& st);
309 nec_3vector patch_x1, patch_x2, patch_x3, patch_x4;
void patch(int nx, int ny, nec_float ax1, nec_float ay1, nec_float az1, nec_float ax2, nec_float ay2, nec_float az2, nec_float ax3, nec_float ay3, nec_float az3, nec_float ax4, nec_float ay4, nec_float az4)
patch generates and modifies patch geometry data.
Definition c_geometry.cpp:2335
Container for an nec2++ simulation.
Definition nec_context.h:80