Index Description

Each line describes a separate structure. There is no limit to the number of structures that can be entered.


Uniform Fill

This function adds a uniform incremental value fx for the x-polarized field and fy for the y-polarized field to every point in space.

b fx fy


Cylindrical Object

This cylindrical object has two circular/elliptical flat faces at z1 and z2. The two circle/ellipses can have different radii and different centers. This allows one to construct tapered cylinders that could be tilted sideways or upwards. The syntax is:

c fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2



f is the incremental value imposed inside the cylinder.

All units are in microns.


Parabolic and Gaussian Objects

Instead of a uniformly filled cylinder, a parabolic distribution can be created inside the cylinder. The syntax for a parabolic distribution is identical to a cylindrical object except rx and ry are interpreted according to the following equation:


The syntax for the parabolic distribution is

p fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2

Similarly, a gaussian distribution can be created. The equation is:


The syntax for the gaussian distribution is

g fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2


Two-Faced Polygon Objects

These are similar to the cylindrical objects, except the two faces can be bounded by any polygon instead of being circular. The two face polygons must have the same number of corners. The co-ordinates are given as four numbers; the first two numbers are the x,y co-ordinates at the z1 plane, and the second two numbers are the co-ordinates at the z2 plane. The solid object is created by connecting the corresponding co-ordinates between z1 and z2. A variety of complex shapes can be created this way. The syntax is:

u fx fy z1 z2 x1 y1 x2 y2 x3 y3 x4 y4 ....


Slab Objects

A slab object is one that has two parallel faces at y1 and y2, and the shape is defined by a polygon with (x,z) co-ordinates. The syntax is:

s fx fy y1 y2 x1 z1 x2 z2 x3 z3 x4 z4 ....


Periodically Varying Objects

All the objects described above can be made to vary periodically (oscillate) along the z direction. This is done by appending a second character after the initial descriptor character. There are two type of oscillations. One type will oscillate a geometric parameter (radius, height etc..) and the other type will oscillate the incremental refractive indices fx and fy.

The flag for oscillating a geometric parameter sinusoidally is w. The flag for oscillating the same parameter in a rectangular wave fashion is W. Similarly, the flag for oscillating the refractive index sinusoidally is i and for varying it in a rectangular wave is I.


For sinusoidally modulating the radii of a cylindrical object, the syntax is:

cw fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period_x sin_period_y sin_angle_x sin_angle_y sin_start_phase_x sin_start_phase_y



where
  • sin_amplitude is the sinusodal amplitude of the radius (x and y radii can be controlled separately)
  • sin_period is the oscillation period in microns
  • sin_angle is the angle of K-vector of the oscillation with respect to the Z-axis in degrees
  • sin_start_phase is the starting phase of the sinusoidal oscillation (this is useful when dealing with two oscillating functions where their relative phases are important - for single oscillating functions, this is less important).

For rectangular oscillation, the syntax is:

cW fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period_x rect_period_y rect_angle_x rect_angle_y rect_start_phase_x rect_start_phase_y rect_dutycycle_x rect_dutycycle_y

where the only extra parameter is the duty cycle. The duty cycle is a measure of the high-portion compared to the whole period.

Alternatively, the refractive index inside the cylindrical object can be modulated instead of the radius. The synatax is

ci fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period sin_angle sin_start_phase



In this case, sin_amplitude is the amplitude of the refractive index modulation.
For rectangular oscillation, the syntax is:

cI fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period rect_angle rect_start_phase rect_dutycycle


The gaussian and the parabolic distributions can also be periodically varied.

The radii rx and ry of the parabolic distribition can be modulated with the syntax:

pw fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period_x sin_period_y sin_angle_x sin_angle_y sin_start_phase_x sin_start_phase_y
pW fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period_x rect_period_y rect_angle_x rect_angle_y rect_start_phase_x rect_start_phase_y rect_dutycycle_x rect_dutycycle_y

The waists of the gaussian can be modulated with
gw fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period_x sin_period_y sin_angle_x sin_angle_y sin_start_phase_x sin_start_phase_y
gW fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period_x rect_period_y rect_angle_x rect_angle_y rect_start_phase_x rect_start_phase_y rect_dutycycle_x rect_dutycycle_y

The corresponding syntax for modulating the refractive indices instead of the geometry is:

pi fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period sin_angle sin_start_phase
pI fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period rect_angle rect_start_phase rect_dutycycle
gi fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period sin_angle sin_start_phase
gI fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period rect_angle rect_start_phase rect_dutycycle

The refractive index inside the two-faced polygons can also be modulated periodically:

ui fx fy z1 z2 sin_amplitude_x sin_amplitude_y sin_period sin_angle sin_start_phase x1 y1 x2 y2 x3 y3 x4 y4 ....
uI fx fy z1 z2 rect_amplitude_x rect_amplitude_y rect_period rect_angle rect_start_phase rect_dutycycle x1 y1 x2 y2 x3 y3 x4 y4 ....


The y1 face of the slab object can be varied sinusoidally along the z axis.

The syntax for modulating y1 on a slab structure is:

sw fx fy y1 y2 sin_amplitude_x sin_period sin_angle sin_start_phase x1 z1 x2 z2 x3 z3 ...

Either the top of the bottom surface can be modulated by simply interchaging the order of y1 and y2 on the descriptor.


Alterenatively, instead of of modulating the height of the slab, the incremental refractive index inside the slab could be varied periodically.

The syntax is:
si fx fy y1 y2 sin_amplitude_x sin_amplitude_y sin_period sin_angle sin_start_phase x1 z1 x2 z2 x3 z3 ....


Rectangularly Varying Slab Object

Instead of varying the y1 or y2 surface sinusoidally, it could be varied as a rectangular function (high and low states instead of a continuous function) with a specified duty cycle.

The syntax is:

sW fx fy y1 y2 rect_amplitude rect_period rect_angle rect_start_phase rect_dutycycle x1 z1 x2 z2 x3 z3 .....


Alterenatively, instead of of modulating the height of the slab, the incremental refractive index inside the slab could be varied periodically.

The syntax is:
sI fx fy y1 y2 rect_amplitude_x rect_amplitude_y rect_period rect_angle rect_start_phase rect_dutycycle x1 z1 x2 z2 x3 z3 .....


Saturated Gain

Saturated gain or loss can be inserted into most objects. The equation used for computing the gain is:



To create a cylindrical object with gain, the syntax is

ca fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 alpha_o_x alpha_o_y Es_x Es_y

To create a polygon object with gain, the syntax is

ua fx fy z1 z2 alpha_o_x alpha_o_y Es_x Es_y x1 y1 x2 y2 x3 y3 x4 y4 ...

To create a slab object with gain, the syntax is

sa fx fy y1 y2 alpha_o_x alpha_o_y Es_x Es_y x1 y1 x2 y2 x3 y3 x4 y4 ...


Extruding 2D Data

The 2D refractive index profile uploaded by the user can be extruded in the z direction. During extrusion, it can be rotated about a pivot px, py, or magnified along the axis x by mx1 (at z=z1) linearly varying to mx2 (at z=z2), or similarly magnified along the y-axis. The extrusion operation is done simultaneously for the X and Y refractive indices.

The syntax is:

F z1 z2 rotation_period mx1 my1 mx2 my2 px1 py1 px2 py2 .


Curved Structures

The 2D refractive index profile (as described by the sum total of all the polygon or the uploaded 2D data) can be curved during propagating z direction to determine the evolution of modes and bend losses. The curved structure is projected to an equivalent straight structure using Marcuse's effective index algorithm as described in the Applied Optics paper titled Influence of curvature on the losses of doubly clad fibers, vol.21, no.23, 1982. A 2-D profile between z=z1 and z=z2 can be curved by a radius of curvature Rc along an axis along theta (in degrees). theta=0 is a left curve along the x-axis, and theta=90 is a downward curve along the y-axis. Any value of theta can be specified. The center of the optical field also needs to be specified as cx and cy. This operation is done simultaneously for the X and Y refractive indices.

The syntax is:

R z1 z2 Rc theta cx cy .


Modifying Polygon Descriptors with User-Defined Functions


Instead of using numbers in the polygon descriptors, they can be represented by the functions F1(z), F2(z), F3(z)... which can be defined by the user. This makes it possible to alter any or all aspects of the polygons as a function of z. The functions F1(z), F2(z), F3(z)... should be uploaded as a text file, and accessed using the syntax #1, #2, #3... respectively.

For example, a tapered fiber can be modeled as:

c 0.0052 0.0052 0 20000 #1 #2 #1 #2 0 0 0 0

where the fiber's x- and y- radii can be varied in any manner as defined by F1(z) and F2(z).

As another extreme example, here is a two-faced polygon represented entirely by external functions:

u #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 ....

Z-Functions

The functions should be listed as a two-dimensional array of numbers. For example, four functions F1(z), F2(z), F3(z) and F4(z) can be defined by:
1 1.009999833 0.998001999 0.001998001 1.99995 2 1.019998667 0.996007989 0.003992011 1.999800007 3 1.0299955 0.994017964 0.005982036 1.999550034 4 1.039989334 0.992031915 0.007968085 1.999200107 5 1.049979169 0.990049834 0.009950166 1.99875026 6 1.059964006 0.988071713 0.011928287 1.99820054 7 1.069942847 0.986097544 0.013902456 1.997551 8 1.079914694 0.98412732 0.01587268 1.996801706 9 1.089878549 0.982161032 0.017838968 1.995952733 10 1.099833417 0.980198673 0.019801327 1.995004165 11 1.109778301 0.978240235 0.021759765 1.993956098 12 1.119712207 0.97628571 0.02371429 1.992808636 13 1.129634143 0.97433509 0.02566491 1.991561894 14 1.139543115 0.972388367 0.027611633 1.990215996 15 1.149438132 0.970445534 0.029554466 1.988771078 16 1.159318207 0.968506582 0.031493418 1.987227283 17 1.169182349 0.966571505 0.033428495 1.985584767 ^ ^ ^ ^ ^ z F1(z) F2(z) F3(z) F4(z) The z-values do not have to be identical to the z-grid defined for the simulation. The values will be linearly interpolated to the simulation grid.

SUMMARY

ObjectSyntax
Cylindrical c fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2
Parabolic p fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2
Gaussian g fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2
Two-Faced Polygon u fx fy z1 z2 x1 y1 x2 y2 x3 y3 x4 y4 ....
Slab s fx fy y1 y2 x1 z1 x2 z2 x3 z3 x4 z4 ....
Cylindrical with Gain ca fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 alpha_o_x alpha_o_y Es_x Es_y
Two-Faced Polygon with Gain ua fx fy z1 z2 alpha_o_x alpha_o_y Es_x Es_y x1 y1 x2 y2 x3 y3 x4 y4 ...
Slab with Gain sa fx fy y1 y2 alpha_o_x alpha_o_y Es_x Es_y x1 y1 x2 y2 x3 y3 x4 y4 ...
Cylindrical with Sinusoidally Varying Radii cw fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period_x sin_period_y sin_angle_x sin_angle_y sin_start_phase_x sin_start_phase_y
Cylindrical with Rectangularly Varying Radii cW fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period_x rect_period_y rect_angle_x rect_angle_y rect_start_phase_x rect_start_phase_y rect_dutycycle_x rect_dutycycle_y
Cylindrical with Sinusoidally Varying Index ci fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period sin_angle sin_start_phase
Cylindrical with Rectangularly Varying Index cI fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period rect_angle rect_start_phase rect_dutycycle
Parabolic with Sinusoidally Varying Radii pw fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period_x sin_period_y sin_angle_x sin_angle_y sin_start_phase_x sin_start_phase_y
Parabolic with Rectangularly Varying Radii pW fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period_x rect_period_y rect_angle_x rect_angle_y rect_start_phase_x rect_start_phase_y rect_dutycycle_x rect_dutycycle_y
Parabolic with Sinusoidally Varying Index pi fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period sin_angle sin_start_phase
Parabolic with Rectangularly Varying Index pI fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period rect_angle rect_start_phase rect_dutycycle
Gaussian with Sinusoidally Varying Radii gw fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period_x sin_period_y sin_angle_x sin_angle_y sin_start_phase_x sin_start_phase_y
Gaussian with Rectangularly Varying Radii gW fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period_x rect_period_y rect_angle_x rect_angle_y rect_start_phase_x rect_start_phase_y rect_dutycycle_x rect_dutycycle_y

Gaussian with Sinusoidally Varying Index gi fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 sin_amplitude_x sin_amplitude_y sin_period sin_angle sin_start_phase
Gaussian with Rectangularly Varying Index gI fx fy z1 z2 rx1 ry1 rx2 ry2 xc1 yc1 xc2 yc2 rect_amplitude_x rect_amplitude_y rect_period rect_angle rect_start_phase rect_dutycycle
Slab with Sinusoidally Varying y1 sw fx fy y1 y2 sin_amplitude sin_period sin_angle sin_start_phase x1 z1 x2 z2 x3 z3 ...
Slab with Rectangularly Varying y1 sW fx fy y1 y2 rect_amplitude rect_period rect_angle rect_start_phase rect_dutycycle x1 z1 x2 z2 x3 z3 ....
Slab with Sinusoidally Varying Index si fx fy y1 y2 sin_amplitude_x sin_amplitude_y sin_period sin_angle sin_start_phase x1 z1 x2 z2 x3 z3 ...
Slab with Rectangularly Varying Index sI fx fy y1 y2 rect_amplitude_x rect_amplitude_x rect_period rect_angle rect_start_phase rect_dutycycle x1 z1 x2 z2 x3 z3 ....
Two-Faced Polygon with Sinusoidally Varying Index ui fx fy z1 z2 sin_amplitude_x sin_amplitude_y sin_period sin_angle sin_start_phase x1 y1 x2 y2 x3 y3 x4 y4 ....
Two-Faced Polygon with Rectangularly Varying Index uI fx fy z1 z2 rect_amplitude_x rect_amplitude_y rect_period rect_angle rect_start_phase rect_dutycycle x1 y1 x2 y2 x3 y3 x4 y4 ....
Extrusion of 2D Data F z1 z2 rotation_period mx1 my1 mx2 my2 px py
Curved Structures (Marcuse Model) R z1 z2 Rc theta cx cy