EmpOpTM README
EmpOp v 1.0 Copyright (c) 2004-2007 Hutt Systems, Inc. All Rights Reserved. EmpOp is an antenna array optimization program that can be used to optimize the following performance features: * Optimum pattern synthesis, i.e. extraction of element excitations used to create a specified array pattern, based on the physical array dimensions * Optimum synthesis to minimize sidelobe levels * Optimum synthesis to minimize the power in the sidelobes * Optimum synthesis of sum/diff patterns EmpOp is available for 32 and 64 bit Linux systems as well as Mac OSX. The array parameters to be optimized include the spacing between elements and/or element excitations. EmpOp accounts for coupling between the elements of the array and nearby structure by using either measured or calculated element pattern data. The calculated element pattern data is obtained either by the induced emf method or by NEC method of moments. EmpOp is command line driven and reads its data from the file specified by the -f flag. Usage: empop -hv -fempop -f 4xhalf.dat The results are contained in the empop.out file. Elements are defined in the input file as follows: # x, y, z, movx, movy, movz, ec, exph, half-length, radius, driven element#0: 0.0, 0.0, 0.0, 0, 0, 0, 1.0, 0.0, 0.242, 0.000242, 1 The first 3 parameters define the element's position in space. The next 3 specify in which dimension the element can be moved (required for optimization of spacings). This version currently only supports movement in X and Y. ec is the excitation amplitude, and exph is the excitation phase of the element. The excitation can also be controlled by the following parameters: cheby:0 chebysll:30.0 When cheby is set to 0 the values from the ec column are used. When cheby is set to 1, a set of Chebyshev amplitudes are calculated for the specified sidelobe level. Below is a sample input file for the case of extracting element excitations used to create a specified array pattern, based on the physical array dimensions. Any line beginning with a '#' is treated as a comment and ignored. This input file is configured to find the excitations that produced the array pattern specified in npat.out. The array contains 4 half-wave dipoles spaced 0.5 wavelengths apart. NEC was used to generate the element pattern of each element, including the effects of mutual coupling. The corresponding NEC files are 4x1half.nec, 4x2half.nec, 4x3half.nec, and 4x4half.nec. The Perl script genepat.pl extracts the element pattern from the NEC output file and was used to create 4x1half.pat, 4x2half.pat 4x3half.pat, and 4x4half.pat which are then specified at the end of the input file. 4xhalf30db.nec was used to produce the desired pattern for the example - this would normally be provided by the user as the desired pattern and is specified as npat.out in the configuration file below. The array was configured in NEC so that each element has a reflector 1/4 wavelength behind it. There is also a passive scatterer 1/4 wavelength in front of the array. Sample input file (4xhalf.dat) ============================== # EmpOp configuration file for 4 element dipole array. # Optimize to desired pattern. # number of elements in the array nelem:4 # average spacing between elements spacing:0.5 # beamwidth factor - determines the start of the sidelobe region bw:0.9 # phi angle to which the array is scanned. Broadside is 90 deg. scan:90.0 # specifies the start of the sidelobe region when yagi is selected # (see below) sidelobe:0.0 # number of samples in phi nos:181 # number of cuts in theta thetamax:1 # samples angles in the theta plane (DEG) thetas:90,60,30 # If yagi is set to one then the sidelobe region is taken from # sidelobe to phi=180. Otherwise, the sidelobes are considered the # regions between phi=0 to 180 outside the first nulls. yagi:0 # if set the initial simplex will not have to be scaled fmins:0 # this is used to scale the initial simplex for Nelder-Mead scale:1.0 # pattern floor - pattern values below this values are ignored during # the optimization floor:-50.0 # if set to 0 - isotropic elements # otherwise a cos^q pattern is used for each element q:0.0 # 0:coupling not included # 1:use induced emf to account for coupling # 2:use NEC element patterns defined in pattern#x below coupling:2 zo:50.0 # number of program iterations iterations:1 # excitation symmetry symmetry:1 # optimization criteria # 0:MaxSLL # 1:Max Power # 2:Sum/Diff # 3:Specify Desired Pattern in optpat opt:3 # specifies file containing desired pattern # this file must contain the number of sample points specified in nos optpat:npat.out # 0:Excitations # 1:Spacings # 2:Both optparam:0 # 0:excitation phase fixed at 0 # 1:excitations phase varies during optimization exphase:1 # 0: use values from ec column below # 1:set Chebyshev excitatations cheby:0 chebysll:30.0 # element parameters # x, y, z, movx, movy, movz, ec, exph, half-length, radius, driven # Note: nelem controls how many of the elements below are read in. element#0: 0.0, 0.0, 0.0, 0, 0, 0, 1.0, 0.0, 0.242, 0.000242, 1 element#1: 0.5, 0.0, 0.0, 1, 0, 0, 1.0, 0.0, 0.242, 0.000242, 1 element#2: 1.0, 0.0, 0.0, 1, 0, 0, 1.0, 0.0, 0.242, 0.000242, 1 element#3: 1.5, 0.0, 0.0, 0, 0, 0, 1.0, 0.0, 0.242, 0.000242, 1 # element patterns pattern#0:4x1half.pat pattern#1:4x2half.pat pattern#2:4x3half.pat pattern#3:4x4half.pat #end of input file Running EmpOp on the above input file ===================================== ../../empop -f ./4xhalf.dat Setting nelem to :4 Setting spacing to :0.5 Setting bw to :0.9 Setting scan to :90.0 Setting sidelobe to :0.0 Setting nos to :181 Setting thetamax to :1 Setting yagi to :0 Setting fmins to :0 Setting scale to :1.0 Setting floor to :-50.0 Setting q to :0.0 Setting coupling to :2 Setting zo to :50.0 Setting iterations to :1 Setting symmetry to :1 Setting opt to :3 Setting optpat to :npat.out Setting optparam to :0 Setting exphase to :1 Setting cheby to :0 Setting chebysll to :30.0 Read in 181 points from npat.out Read in 181 points from 4x1half.pat Read in 181 points from 4x2half.pat Read in 181 points from 4x3half.pat Read in 181 points from 4x4half.pat Set excitation 0 to 1.000000 Set excitation 1 to 1.000000 Set excitation 2 to 1.000000 Set excitation 3 to 1.000000 startspSize = 1 x:1 at simplex:0 x:2 at simplex:1 Space simplex size:1 Iteration 1... Optimizing Excitations to minimize deviation with desired pattern Optimization completed in 1 seconds empop.out ========= empop Version 1.0 Beta Release 1 - Results Spacing: 0.50 BW Factor: 0.90 TFN: 64.22 TFN: 115.78 Scan Angle: 90.00 Side Lobe: 0.00 q: 0.00 Samples: 181 X Y Z MovX MovY MovZ EC EXPH HL Radius 0.00 0.00 0.00 0 0 0 0.4416 1.29 0.2420 0.0002 0.50 0.00 0.00 1 0 0 1.0000 1.28 0.2420 0.0002 1.00 0.00 0.00 1 0 0 1.0000 1.28 0.2420 0.0002 1.50 0.00 0.00 0 0 0 0.4416 1.29 0.2420 0.0002 Initial Metric: 16.49 dB Phi: 138.54 Deg Theta: 90.00 Deg Optimized Metric: 0.93 dB Phi: 124.38 Deg Theta: 90.00 Deg Visualizing the data ==================== EmpOp will create a gnuplot script file 'empop.gp' that can be used to visualize the results. If you have gnuplot installed you can run it interactively, e.g.; gnuplot gnuplot> load 'empop.gp' or run: gnuplot empop.gp to create a png file.