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:
|
![]() |
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
|
![]() |
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: | |
![]() |
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:
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: |
![]() |
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:
Alterenatively, instead of of modulating the height of the slab, the incremental refractive index inside the slab could be varied periodically.
The syntax is: |
| 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:
As another extreme example, here is a two-faced polygon represented entirely by external functions:
|
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: |
| Object | Syntax |
| 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 |