Dear Tyler,
Thank you very much for using PyLayers and helping us making it something useful for the community.
PyLayers was initially designed for addressing UWB waveform, but it can be also used for narrow band while it may requires
slight adaptations for really being convenient in doing so.
PyLayers is a à ray tracing tool, so it handles multipaths. At that time the code is evolving because we are working on a new data format of the
layout in order to be able to address outdoor scenario and multi floors structures as well.
The key concept for doing that is the notion of convex cycle. We need to build a Layout which is a set of convex cycle. This is a strong constraint
but it ease very much the recovery of visibility relationships between cycle. To be short in a convex cycle every segment "sees" every segments
except itself and collinear segments. Every segment is related to two cycles, the ncycle list contains the id of those two adjacent cycles.
An other related key concept is "AIR separations segments" between non convex cycles to get those convex cycles.
Regarding the antennas, yes you can do whatever you want with the full 3D pattern and orientation. I will post very soon a detailed explanation of how to deal with antennas.
By default antennas in DLink are omni-directional. Notice that you can also deal with antenna arrays at both termination if you need addressing MIMO scenarios.
from pylayers.simul.simul import *
L=Dlink()
L.a (firstlink termination)
L.Aa (Antenna object (Omni))
Antenna type : Omni
------------------------
pol : t
GmaxdB : 0
fmin : 2.40GHz
fmax : 2.50GHz
step : 100.00MHz
Nf : 2
-----------------------
evaluated
-----------------------
Ntheta : 90
Nphi : 181
f = 2.40 GHz
theta = 0.00 (degrees)
phi = 0.00 (degrees)
L.Ta (3D rotation matrix ) By default the local frame of the antenna (ACS) is the same as the GCS (Global Coordinate System)
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
The same for termination b
Very recently have improved drastically the performance of the ray tracing algorithm, and it is quite usable but it can remains few instabilities to fix.
The weakness of PyLayers is that at that time it is quite poorly documented and a very large part of what is in there is not explained at all.
I suggest that you pull request the very last master branch in order to get the very last version. If you fork the repository on github you can also commit your layout
in data/struc/ini in order we can check it.
If, hopefully, you are going to attend EUCAP2016 Conference in Davos next week we could met and see together how to tackle your problem with PyLayers.
Thank again for your interest. Glad to help you.
Bernard