Skip to content

Releases: G1OJS/NECBOL

v3.2.3 fixes #8 NEC error monitoring

28 Jul 20:48

Choose a tag to compare

v3.2.2 - fixes #18

27 Jul 17:17
c24ebca

Choose a tag to compare

fixed #18 - set_wire_conductivity does nothing since version 3.0.0

V3.2.0 adds ability to colour objects in wireframe viewer

27 Jul 12:58

Choose a tag to compare

NECBOL v3.1.3 now available with pip

26 Jul 23:17

Choose a tag to compare

Version 3.0.0 laid the foundation for upcoming features including frequency sweeps, VSWR bandwidth optimisation, multi-model comparisons, and more advanced optimisation targets.

A key goal here is to have a single function for a given purpose, that you can use with no arguments if defaults are fine, but refine many features with optional arguments. Most if not all functions now operate directly on the model dataset, so there's no need to extract and remember parameters to pass to plotting routines etc.

Minor improvements:

  • Added wire thickness to wire frame viewer - can be turned off / modified with optional arguments n_strands and alpha.
  • Added wire_diameter_{units} as optional argument to the thin_sheet component. Wire diameter isn't critical for the dielectric sheet model and is set to a default value, but users might want to set this for a conducting wire mesh.
  • Added optional taper_factor to helix (multiply radius by factor linearly applied as z increases from 0 to helix length)
  • Deleted TO_DO and captured in GitHub issues

Objectives

  • moving towards allowing several concurrent models in the same file
  • preparing for detailed comparison of results, extraction of scattered fields from objects, delta dB plots etc
  • moving towards adding a frequency sweep feature and add VSWR bandwidth as an optimisation target
  • moving towards allowing gain parameters computed over a range of angles as optimiser targets (e.g. max vertical gain, min gain in a specified direction, front to back ratio)
  • simplifying and automating gain pattern resolution and range settings

Key updates are to model 'global parameter' setting and plotting / data analysis functions. (see auto-generated docs and change history for more detail)

V3.0.0

27 Jul 16:57

Choose a tag to compare

Version 3 makes some changes to various functions to enable:

  • moving towards allowing several concurrent models in the same file
  • preparing for detailed comparison of results, extraction of scattered fields from objects, delta dB plots etc
  • moving towards adding a frequency sweep feature and add VSWR bandwidth as an optimisation target
  • moving towards allowing gain parameters computed over a range of angles as optimiser targets (e.g. max vertical gain, min gain in a spefified direction, front to back ratio)
  • simplifying and automating gain pattern resolution and range settings

The detailed changes are listed below.

Gain point and Angular range and resolution functions

  • set_gain_point(azimuth, elevation),
  • set_gain_hemisphere_1deg(),
  • set_gain_sphere_1deg(),
  • set_gain_az_arc(azimuth_start, azimuth_stop, nPoints, elevation)

These are now all replaced by:

  • set_gain_point(azimuth_deg, elevation_deg)
  • set_angular_resolution(az_step_deg, el_step_deg)

The last function works intelligently with ground specification to determine whether a full sphere or half sphere is requested.

start_geometry function

No longer needed

Load placement functions

  • place_parallel_RLC_load(......) and
  • place_series_RLC_load(......)

are replaced by

  • place_RLC_load(...... load_type = 'series'|'parallel', ............)

Simple model results parameters

  • h_gain(),
  • v_gain(),
  • tot_gain(),
  • vswr(Z0 = 50)

are replaced by

  • get_gains_at_gain_point(model) and
  • vswr(model, Z0 = 50)

Results plotting functions

  • plot_gain(pattern_data, elevation_deg, component, polar=True)

is replaced by

  • plot_pattern_gains(model)
    which is intended as a flexible plot which can overlay several field components

  • read_radiation_pattern() is no longer needed as a user function

Wire Frame viewer functions

  • show_wires_from_file(file_path, ex_tag, color='blue', title = "3D Viewer")

is replaced by

  • show_wires_from_file(model)

which avoids the need to pass ex_tag and get details of load tag numbers from the model

Thin Sheet Model

The positional argument 'sigma' is removed. If used to create a conducting sheet, the conductivity is either perfect or as specied in the global 'set_wire_conductivity(sigma)' function. This model still requires validation for the production of a thin dielectric sheet.

Clarify user API and simplify import

24 Jul 15:27

Choose a tag to compare

  • non-user functions identified with _name
  • docu-lite set to ignore _name when producing user-facing docs
  • import statements simplified to "from necbol import *"

Clearer identification of user API

23 Jul 17:53

Choose a tag to compare

Pre-release
  • non-user functions identified with _name
  • docu-lite set to ignore _name when producing user-facing docs
  • import statements simplified

Upgrade wire connection code to handle grids cleanly

17 Jul 20:06

Choose a tag to compare

Changes forced by 'stretching test case' of building a model of a car passenger cell with a handheld transmitter inside. This requires meshed grids to connect cleanly, which requires 0,1,2,3 or 4 edges to be left 'open' and requires changes to the wire connection decision functions:

Revised sheet grid model to

thin_sheet(self, model, sigma, epsillon_r, force_odd = True, close_start = True, close_end = True, close_bottom = True, close_top = True, enforce_exact_pitch = True, **dimensions)
where:

  • force_odd forces an odd number of wires, ensuring one central z wire and one central y wire cross at x=0, to make attaching other objects easier
  • the four 'close_' parameters determine whether or not the edges are 'sealed' with a final wire (if True) or not (if False) so that the grid can be joined to other grids without wires overlapping:
    • close_end = True completes the grid with a final end z wire at y = length/2
    • close_start = True starts the grid with a z wire at y = -length/2
    • close_top = True completes the grid with a y wire at z = height/2
    • close_bottom = True starts the grid with a y wire at z = -height/2
  • enforce_exact_pitch: if True, length and height are adjusted to fit an integer number of grid cells of the specified pitch. If False, length and height remain as specified and the grid pitch in Y and Z is adjusted to fit the number of grid cells calculated from the grid pitch and force_odd value. Behaviour prior to V2.0.3 was enforce_exact_pitch.

"point_should_connect_to_wire" now also checks if wire to be connected is near a segment boundary, and preserves the wire (doesn't split it) if true

V2.0.2 Revised grid model, add example, revise plotting

16 Jul 11:54
8a31d4c

Choose a tag to compare

Revised sheet grid model to

thin_sheet(self, model, sigma, epsillon_r, force_odd = True, close_end = True, **dimensions)
where

force_odd forces an odd number of wires, ensuring one central z wire and one central y wire cross at x=0, to make attaching other objects easier
close_end creates a final end z wire - use close_end=False to allow copying and joining meshes together without wires overlapping
model now has height symmetric around zero (as was the case for width)
Created example of dipole with capacity end points for loading, using the grid model

Updated plotting functions a little (gain range)

V2.0.1 Add azimuth pattern plotting + fixes to sheet grid component

15 Jul 17:41

Choose a tag to compare

Add azimuth pattern plotting
Fix .nec file write format issue and nSegs issue in writing sheet model grid
Create example of dipole with nearby sheet
Allow model to be updated after nec_write & nec_run, to allow easier A/B comparisons (see dipole with sheet example)