**Problem with the number of phase fronts when attempting to generate OAM:**

In brief, an OAM (Orbital Angular Momentum) beam with a specific mode *l* should present exactly *l* number of helical phase fronts in its radiation pattern:

(a) Propagating plane waves, (b) Propagating OAM waves of mode 3, (c) Wave front of plane waves and (d) Wave front of OAM waves of mode 3

To generate the OAM, we can use a uniform circular array. Corresponding to a number of equal finite azimuthal intervals, each antenna element is placed on a circle with equiangular spacing. All the antenna elements are fed by the same signal, but with an incremental phase shift of , such that the antenna element will have a phase of where *N* is the total number of the antenna elements and *l* is the OAM mode index.

**So I try to implement the exact same logic in EMPro: **

(The code used to generate the geometry is based on the phased array antenna example in EMPro. )

**When plotting the result, the excitation of the ports are set as follows:**

# Ntx: the number of port

# l: OAM mode, the number of expected phase fronts

exc = { p.name: 1/math.sqrt(Ntx)*complex(math.cos(2*math.pi*i*l/Ntx),math.sin(2*math.pi*i*l/Ntx)) for i, p in enumerate(empro.activeProject.circuitComponents()) if p.port }

# Load the far field result

farFieldResult = results.farField(excitation=exc, sensorName=SENSOR_NAME)

This way, for mode 1 and Ntx = 10, the excitation profile looks like this: (which is correct)

However, when I export the far-field data and plot it in MATLAB, **the number of phase fronts is always doubled**, as shown in the three following figures (for mode 1-3 respectively), while radiation magnitude pattern is correct (the angle of the main lobe matches the theoretical value)

Mode 2

Mode 3

Here is the code I used to plot these figures:

emproData = zeros(height(FarField),4);

emproData(:,1) = FarField.RealEtheta + i*FarField.ImagEtheta;

emproData(:,2) = FarField.RealEphi + i*FarField.ImagEphi;

emproData(:,3) = rad2deg(FarField.theta);

emproData(:,4) = rad2deg(FarField.phi);

pat = sqrt(power(emproData(:,1),2) + power(emproData(:,2),2));

theta = emproData(:,3);

phi = emproData(:,4);

subplot(1,2,1)

patternCustom(abs(pat),theta,phi);

title(strcat('Efield Magnitude Pattern',{' '},str));

view(90,0);

subplot(1,2,2)

patternCustom(unwrap(angle(pat)),theta,phi) ; % in radians

title(strcat('Efield Phase Pattern in Radians', {' '},str, {' '}, 'bottom view'));

It would be rather helpful if you could help me find what is wrong in my setup!