Analytic solutions Graphics Important modifications Installation and running MMP solver New features PFD solver System requirements
OpenMaXwell contains 2D and 3D MMP solvers for time-harmonic electromagnetic fields. MMP stands for Multiple Multipole Program, which is an advanced implementation of the Generalized Multipole Technique (GMT), based on the approximation of the EM field in any homogeneous domain by means of a series expansion with basis functions, which are analytic solutions of the Maxwell equations in the corresponding domain. For several reasons, multipole expansions are the most frequently used basis functions but other expansions are available as well. The unknown parameters in the series expansion are computed from boundary or continuity conditions imposed on the domain boundaries. This is done with a highly efficient and accurate Generalized Point Matching Technique (GMT) in the current MMP implementation. Since the basis functions or expansions fulfill the Maxwell equations analytically, MMP is also called semi-analytic.
MMP assumes harmonic time dependence of the form
exp(-i*omega*t)
where i=sqrt(-1). This means that MMP is a frequency domain code with a complex representation of the EM field, with one exception: In statics, one has omega=0 and then the fields become real valued. It is important to note that codes used in electrical engineering often use the time dependence exp(+j*omega*t), where j=sqrt(-1). The MMP time dependence is common in physics. The two different signs in the definition of the time dependence cause different signs in various complex numbers. Namely complex permittivities and permeabilities of lossy materials have a positive imaginary part in the -i notation and negative imaginary part in the +j notation. This is often a source of confusion.
From other computational electromagnetics packages you may have learnt that 2D means that the field is constant in z direction and varies in the xy plane only. In the current MMP implementation, a more general definition of 2D holds. Here, 2D means that the field varies in both the z direction and in the xy
plane, as in the 3D case, but the geometry of the objects does not change in the z direction. Therefore, it is sufficient to specify the geometry in the xy plane only. Like the time dependence, the z dependence can be separated in this case to obtain the following form
exp(i*(gamma*k0*z-omega*t))
k0 denotes the free space wave number, gamma the propagation constant with respect to k0, omega the angular frequency. Note that other codes use slightly different formula, such as exp(i*(omega*t-gam*z)), exp(i*omega*t-gam*z), etc. When you combine or compare such codes with MMP, you should take the different conventions into account. Note also that it is convenient to use the propagation constant relative to the free space wave number k0, i.e., to replace the traditional propagation constant gamma by gamma*k0.
In the case of scattering problems with an incident plane wave, gamma*k0 is equal to the z component kz of the wave vector, which is k*cos(alpha), where alpha is the angle of incidence (between z axis and wave vector) and k the wave number. When the incident wave is in free space, one obtains gamma=cos(alpha), for a dielectric with index n, one obtains gamma=n*cos(alpha).
In the case of guided waves, gamma is the normalized propagation constant, i.e., the usual propagation constant divided by the free space wave number k0.
The MMP tool allows you to obtain very accurate solutions of
1) static problems (2D only in the current implementation),
2) EM scattering problems - including gratings,
3) antenna and antenna arrays,
4) eigenvalue problems, i.e., guided waves and resonators,
5) couplers, discontinuities, etc.
Although MMP can solve quite complicated problems, you should start with simple ones for getting experience. Some important hints are given in the following section.
MMP is a semi-analytic method. This means that all MMP expansions are analytic solutions of the field equations within a domain. In order to obtain semi-analytic solutions to a given problem, all parameters in the MMP expansions are computed in such a way that all weighted boundary conditions on the boundaries between the domains are met, minimizing the error in the least squares sense. This is done by the MMP tool. It generates a matrix, solves the matrix equations, computes the mismatching along the boundaries, and solves eigenvalue problems if requested.
Select Project… from the Tools menu to open the Project dialog. Specify the main properties of the problem to be solved. Since MMP works in the frequency domain, the Time-harmonic box should be checked (except for static problems) and the frequency should be specified - except when the frequency is the eigenvalue to be computed - in the Complex frequency boxes. Note that the frequency f=omega/(2*Pi) is assumed to be real in most cases, but MMP can handle arbitrary complex frequencies as well. Instead of specifying f, you sometimes prefer to specify the corresponding free space wavelength lambda=c/f, where c is the speed of light. You may specify the wavelength by the directive (SET WAVelength ...), but only for real-valued wavenlengths and therefore real-valued frequencies.
Depending on whether you want to apply the 2D or 3D MMP solver, you must check the Cylindrical box or not. If this box is checked, the (normalized) propagation constant must be specified - except when the propagation constant is the eigenvalue to be computed (guided wave problems). Note that 2D MMP solutions, e.g., waveguide modes, may be imported later on in 3D MMP models.
The remaining project data depends on the type of problem to be solved and is discussed in the following sections.
Select Domains… from the Tools menu to open the Domain dialog. Specify the material properties for all domains of the problem to be solved. Note that you can specify the relative permittivity epsilon, the relative permeability mue, and the electric and magnetic conductivities sigma and tau. MMP ignores the conductivity values. For lossy dielectrics or conductors, you specify a complex permittivity instead of the real permittivity and the conductivity. Note that you can enter real values, complex values, or formula that define epsilon, mue, and sigma. Note that the frequency dependence of a material with the real part of the permittivity and conductivity constant is not the same as for a material with a constant complex permittivity, although both materials can be identical at a certain frequency. Therefore, the different methods for defining the material properties are not identical when you compute the frequency dependence. Note that domain number zero indicates a domain with zero internal field, i.e., a perfect conductor. For this domain, no material properties need to be specified.
Select Boundaries… from the Tools menu to open the Boundary dialog. Specify the boundaries of the problem to be solved. In addition to this, you can also graphically modify the boundaries. Usually, you need to specify the domain numbers to the left and right hand side of each boundary. Note that the boundaries are oriented. The orientation is indicated by little arrows. In most cases, the Usual box of the Boundary conditions group will be checked.
Special boundary conditions are used for solving periodic problems, when the conductivity of a domain is so high that Surface Impedance Boundary Conditions (SIBC) can be applied, and in special situations, for saving computation time, etc.
In the OpenMaXwell implementation, the boundary values are only used for static problems. The first boundary value is the value of the scalar potential on an electrode with known, constant potential, whereas the second value is the value of the z component of the vector potential.
If you are not an MMP expert, it is advisable to leave the weights unchanged, i.e., set to one.
Select Expansions… from the Tools menu to open the Expansion dialog. Specify the MMP expansions of the problem to be solved. In addition to this, you can also graphically modify the expansions.
The biggest problem in MMP is finding an appropriate set of expansions for a given problem. If the geometry is not too complicated, it is sufficient to distribute 2D multipoles along all 2D boundaries at a certain distance from the boundaries. This distance should not exceed half of the wavelength. Moreover, you should try to set the multipoles in such a way that the distance between neighbor multipoles is similar to the distance of each multipole from the boundary. OpenMaXwell contains several routines for a semi-automatic generation of 2D multipole expansions along a 2D boundary. From 2D boundaries with appropriate 2D multipoles, OpenMaXwell can also generate 3D objects with appropriate 3D multipoles or with appropriate distributed multipole expansions along the surfaces of the 3D objects. Since 3D modeling is considerably more difficult and time-consuming than 2D modeling, only experienced MMP users should try 3D modeling.
It is recommended that you first define all 2D expansions for the first domain, then all expansions for the second domain, and so on.
Note that no expansions are required for ideal conductors. When SIBC are applied on the surface of a good conductor, the internal field of this conductor is also considered to be zero, and no expansions should be specified.
Note that all multipoles must be strictly outside the domain they belong to. There is one exception for this rule: A multipole, e.g., a dipole, with a single parameter can be the excitation of a scattering problem. Note that the excitation is the last of all expansions when a standard problem is solved.
For obtaining a good multipole distribution for a given domain, draw a set of triangles along the boundaries as if you would like to generate a triangular finite element mesh outside the domain. You need only the first layer of triangles, but each triangle should have approximately equal sides. Along flat parts of the boundary, the triangles may become bigger. Now, put one multipole in the corners of the triangles that are not on the boundary.
MMP offers various automatic multipole setting routines. Unfortunately, none of them is user-friendly, efficient, and reliable at the same time. Therefore experience is needed for running automatic multipole setting routines.
The second problem is to select the appropriate number of orders, for the parameters of each multipole. You can start with relatively small orders and if the mismatching on part of a boundary is too large, increase the order for all multipoles that are closest to these areas. In contrast to other methods, e.g., finite elements, adaptive model improvement is rather easy for MMP.
When you solve eigenvalue problems, the amplitude of the eigenmode should be specified appropriately. This is done by integrating over a part of the field. Note that you can either use line integrals or integrals over a rectangular area in the xy plane. For line integrals, you usually specify a special, 'inactive' 'fictitious', or 'dummy' boundary. See Integral dialog for more details.
Select MMP… from the Tools menu to open the MMP dialog. In this dialog, you have to specify the parameters for the Matching point definition, the Amplitude definition, the Matrix solver, and - for eigenvalue problems - the Eigenvalue search. If you are not sure, try the default settings. Press the Sol+err !! button. The dialog will close and OpenMaXwell will start computing and MMP solution. It will 1) setup matching points along the boundaries, 2) compute the boundary conditions in the matching points, 3) setup and solve the MMP matrix for computing the parameters of the MMP expansions, 4) compute the mismatching errors in the matching points and display them in the text window. When solving eigenvalue problems, the steps 2) and 3) are repeated during the iterative eigenvalue search. If the search data is to be stored to a file, a file name dialog will pop up. For checking the accuracy of the results, open the MMP dialog again and read the information in the text window.
When MMP has computed the parameters for all expansions, open the Field dialog. You must now specify field data in order to display the data, such as the grid, where the original field has to be evaluated, the components of the original field that are involved in your solution, etc.
Press the Field formula… button, to open the Field formula dialog. In this dialog, you must check the Ignore formula, use expansion box. When this box is checked, OpenMaXwell computes the original field from the MMP expansions. If the expansion number is zero, the sum over all MMP expansions is computed. If you are curious about the field of a particular expansion, you can specify the number of this expansion. The Field formula dialog allows you also to select the scattered field instead of the total field.
When you have closed the Field formula dialog, press the Clear all !! button. OpenMaXwell will close the Field dialog, allocate memory for the original and derived field, apply the field formula to all grid points for computing the original field, and compute the derived field according to the specifications in the Field dialog.
Make sure that the options of the graphic window are appropriately set and select Field… from the Draw menu for drawing the resulting field.
MMP uses the Generalized Point Matching (GPM) technique for obtaining an overdetermined matrix equation of the form MX=A. M is a rectangular matrix with more rows than columns. Each row stores a continuity or boundary condition for a matching point. Depending on the problem, one can have more than one continuity or boundary condition per matching point.
Usually, the user is not interested in the matching points. Defining matching points manually is cumbersome work. Therefore, OpenMaXwell lets the user define boundaries in form of C-polygons. C-polygons are polygons with "circular" corners, i.e., arcs with user-defined radii are automatically inserted in each corner. Standard polygons are C-polygons with all radii equal to 0. Note that a C-polygon is an oriented 2D line in the xy plane wit a start and end point. When start and end points are identical, the C-polygon is closed. Note that you have to specify the numbers of the two domains on the left and right hand side of it in the Boundary dialog. The orientation of the C-polygon is essential for the correct computation of the domain numbers of arbitrary points in the xy plane, but it does not affect the MMP computation itself. If the MMP error is small but the EM field looks strange, it is most likely that the orientation of some C-polygon is wrong. You may smoothen the C-polygons by cubic splines and you may define formulas along C-polygons for obtaining more sophisticate boundary shapes.
OpenMaXwell generates matching points along the boundaries. It would be easy to distribute the matching points uniformly, but this is not desired in all situations. In order to obtain non-uniform matching point distributions, you can specify the parameters in the Matching point definition group of the MMP dialog. Here, you can specify
1) the maximum distance between neighboring matching points,
2) the minimum number of matching points per wavelength,
3) the minimum number of matching points per segment of the boundary (a segment of a C-polygon is either a straight line or an arc),
4) the minimum overdetermination of the matrix M, i.e. the number of rows divided by the number of columns of M.
From 1), 2), 3) three distances D1, D2, D3 between neighboring matching points are computed. The distances D1 and D2 are equal for all segments (straight lines and arcs) of the boundaries, whereas D3 depends on the length of the corresponding segment. D1 is constant, whereas D2 is frequency-dependent. On each segment, OpenMaXwell will uniformly distribute matching points with a distance D123 equal to the minimum of D1, D2, D3. Afterwards, OpenMaXwell checks the multipole expansions along the boundaries. Where a multipole is close to a boundary, the distance D123 may be too large for obtaining useful results. From the location and orders of the multipoles, OpenMaXwell computes a distance D4 that depends on the location of the boundary and on the overdetermination factor. At all locations along a segment, where D4 is smaller than D123, a non-uniform matching point distribution is generated in such a way that the distance between neighboring matching points is smaller than D4.
3D models require matching points on the surfaces that separate neighbor domains in 3D space. Such surfaces can be generated from 2D boundaries by some transformation procedure, such as translations and rotations in space. The surfaces and sets of 3D multipole expansions are contained in 3D objects. For defining a 3D object, you define 2D boundaries, 2D multipoles along the boundaries and the transformation procedure. OpenMaXwell will generate the matching points on the surface of a 3D object as follows. It first will generate the 2D matching points on the 2D boundaries. Then it will apply the transformation to a stripe of 3D matching points along the surface for each matching point. For the MMP matrix evaluation, only the 3D matching points will be used and the 2D matching points will be ignored.
Note that a rectangular area belongs to each 3D matching point. This area is important for the proper weighting. Usually the area is more or less a square, i.e., the distances between the neighbor matching points along each stripe are more or less the same as the distances between the neighbor stripes and the distances between the 2D matching points used for generating the stripes. When the field varies much more slowly along each stripe then from stripe to stripe, this is not efficient. In this case, the distances between the matching points along the stripes should be bigger than the distances between the stripes and the areas that belong to the matching points should be rectangular. OpenMaXwell provides a factor for setting the aspect ratio of the sides of these rectangles.
When you set the minimum number of matching points per segment and the overdetermination factor equal to zero, a uniform matching distribution along the entire 2D boundary is obtained. This can be reasonable for simple situations. Instead of this, you may also define the desired number of matching points in the Boundary dialog.
Note that the total number of matching points depends on the current frequency and wavelength. When you want to work with a frequency-independent number of matching points, select zero matching points per wavelength. This is important for boundaries of metals with a very pronounced skin effect. Then the wavelength in the metal may become so short that the number of matching point becomes by far too high.
When you increase the minimum number of matching points per segment, the matching point density in small segments becomes higher than in large segments. When you subdivide a segment into several segments of different length, you can obtain very different matching point distributions for one and the same problem. This is especially important near parts of the boundary with a high curvature, where the field is known to change rapidly. In these areas, it is not sufficient to have a high density of matching points. In addition, you must supply expansions that are able to correctly model the field. Therefore, you should set multipole expansions that are sufficiently close to the critical areas. When the overdetermination factor is sufficiently high, OpenMaXwell will automatically generate an appropriate set of matching points, even if you did not subdivide the segments near the critical areas. Note that an overdetermination factor of 1.5-3 is recommended. You may also insert 'dummy' or 'fictitous' multipoles (which are not used in the MMP computation) for steering the matching point distribution.
For 3D models, non-uniform distributions of matching points are even more important for keeping the computation time within reasonable limits. Unfortunately, the generation of non-uniform distributions of 3D matching points is quite difficult. For obtaining appropriate distributions it may be necessary to split a 3D surface in several parts.
The continuity conditions or the boundary conditions that may be imposed along a boundary depend on the type of the boundary, and on a problems specific data, and especially on the Wave type specified in the Project dialog.
When you have selected Usual in the Boundary conditions group of the Boundary dialog, OpenMaXwell will automatically set those of the continuity conditions that hold and lead to non-trivial equations. For instance, when you work with the E and H fields, the tangential components of both fields must be continuous between two domains unless there are surface currents on the boundary in which case H is discontinuous. Moreover, the normal components of the D and B field must be continuous unless there are surface charges on the boundary in which case D is discontinuous. If one of the domains is an ideal conductor, the field inside the conductor is not modeled. As there are surface charges and currents on ideal conductors, the continuity conditions for the tangential components of H and for the normal component of D must be omitted. Moreover, the longitudinal components of the E field of H waves, and the longitudinal components of the H field of E waves are zero everywhere. Thus, the continuity of these components is automatically met everywhere and would lead to trivial equations.
On a good but imperfect conductor, one can replace the usual boundary conditions by Surface Impedance Boundary Conditions (SIBC). The field inside such a conductor is considered to be zero as in an ideal conductor, but the material properties are different from the properties of a perfect conductor. Obviously, this is an approximation. The quality of this approximation depends mainly on the skin depth in the conductor and on its shape. When the skin depth in a good conductor is short compared with the size of the conductor, the modeling of the field inside conductor would be extremely demanding and it would cause big MMP matrices. In this case, the SIBC approximation is both efficient and accurate. In order to define the material properties, a domain must be specified, but the field inside the imperfect conductor is not modeled by any expansions. Select SIBC in the Boundary conditions group of the Boundary dialog, when you want to work with these boundary conditions.
Periodic problems can be modeled by isolating a single cell of the structure. The boundaries between this cell and its neighboring cells are called periodic boundaries. A cell has two neighbors in the x direction and is separated by a pair of parallel, straight periodic boundaries. The MMP program, assumes that one of these boundaries is on the y axis, whereas the second one is at the position x defined in the Periodic cell data group of the Project dialog. The first boundary on the y axis is implicit and must not be defined explicitly, whereas the second one must be explicitly defined by a single straight boundary line parallel to the y axis at the position x. Moreover, x is assumed to be positive. The field on one of the two x periodic boundaries is equal to the field on the other one, multiplied by a complex factor. This holds for all six components of the field. The complex factor is specified in the Cx= box of the Project dialog. Select X-periodic in the Boundary conditions group of the Boundary dialog, when you define the explicit periodic boundary.
Gratings are a special scattering configuration with a periodicity in one direction. Without loss of generality, one can assume that the grating is periodic in X direction. Therefore, one takes advantage of X periodic boundary conditions. When a grating is computed, the complex factor Cx= can be obtained from the X component of the wave vector of the incident plane wave. OpenMaXwell will do this for you. Note that the incident wave must be a plane wave.
Periodicity in the Y direction is available for solving problems that are periodic in two directions. For the Y periodicity, the same as with the x periodic case holds. Note that the Y direction may be perpendicular to the x direction, but it may also be an arbitrary direction in the xy plane, different from the x direction. Y periodicity can only be applied when X periodicity is present.
Periodicity in the Z direction is available for solving problems that are periodic in three directions. For the Z periodicity, the same as with the Y periodic case holds. Note that the Z direction may be an arbitrary direction in the xyz space, different from the X and Y directions. Z periodicity can only be applied when X and Y periodicities are present. Obviously Z periodicity makes no sense for 2D problems.
Sometimes, you may want full control over the boundary conditions rather than accepting the usual ones. In this case, select Specific in the Boundary conditions group of the Boundary dialog. Now, you have to check the boxes of all field components that shall be matched. Note that specific boundary conditions replace the usual ones, but not the SIBC and the periodic boundary conditions. Specific boundary conditions are of interest for static problems, for example, when one wants to work with the potential only.
For far field computations you may represent the entire field in a far field domain by a single multipole. The procedure is the following: 1) Set up and compute a near field model with usual boundaries and expansions. 2) When the entire structure has a finite size and is surrounded by a single medium, for example, free space, that extends to infinity, you may introduce an auxiliary circular (2D) or spherical (3D) boundary in such a way that the entire structure is within this boundary. 3) Place a multipole in the center of the auxiliary boundary. This auxiliary multipole shall be used for the far field evaluations. 4) The parameters of the auxiliary multipole must now be computed in such a way that the field of the original structure is the same as the field of the auxiliary multipole along the auxiliary boundary. 5) For obtaining the parameters, one can set up an MMP matrix that contains the auxiliary multipole only. For this matrix, the original near field computed along the auxiliary boundary plays the role of the excitation. This can be achieved 1) by setting all original expansions used for the near field computation in a connection that is used as the excitation and 2) by introducing a fictitious boundary that separates the near field and the far field area. To simplify the procedure, OpenMaXwell provides a special near-to-far field boundary condition that is obtained by setting the right domain number of the boundary equal to –4 and the left domain equal to the domain number of the far field area. Along the near-to-far field boundary you may impose either usual or specific boundary conditions.
Note that the situation becomes more complicated when some boundaries of the original structure extend to infinity, but near-to-far field boundary conditions can be helpful even in this case.
The field inside each of the domains must be modeled with a series of expansions that are analytic solutions of the Maxwell equations inside the domain. There are two exceptions: The fields inside perfect conductors (domain number 0) and inside good conductors, which are modeled by means of SIBC, are nod modeled explicitly. Thus, no expansions should be defined for 0 and SIBC domains.
A single-domain expansion fulfills the Maxwell equations in a single domain only. Usually, the expansion does not fulfill any boundary condition on the boundary of the domain. All of the expansions that are currently implemented in OpenMaXwell are of this type, except the connections that can be single-domain as well as multi-domain expansions and the expansions for multilayer structures that are always multi-domain expansions.
Multi-domain expansions fulfill the Maxwell equations in several domains and eventually - but not necessarily - also the continuity conditions on the boundaries between the domains. Typical multi-domain expansions are the expansions for multilayer structures. Also connections are frequently used for several domains. More information on multilayer expansions.
For each expansion, OpenMaXwell provides a local Cartesian coordinate system that specifies both the location and the orientation of the expansion in 3D space. Press the Location… button of the Expansion dialog to inspect the corresponding data. Note that you should not modify these data for the 2D expansions implemented in OpenMaXwell. Instead, you can specify their location in the xy plane in the xo and yo boxes and their orientation in the Angle box. Note that the angle is given in degrees, with respect to the x axis of the global coordinate system.
General 3D problems may be solved when the Cylindrical box in the Project dialog is not checked. For such problems, the location of the expansions in 3D space is essential. Moreover, the projection of the origin of an expansion on the xy plane is of minor interest. Therefore, the xo and yo boxes may contain additional data for some 3D expansions instead of the projection of the origin on the xy plane.
Depending on its type, each expansion has attributes that can be specified in the Expansion dialog.
Most expansions are multi-parameter expansions, i.e., they are a set of functions rather than a single function. In previous versions of MMP, the user specified attributes such as the wave type, the minimum and maximum order, etc. and from this data, the number of parameters was computed. To simplify the procedure the user specifies both the number of parameters and the minimum and maximum order (for 3D expansions also the minimum and maximum degree). Note that not all orders and degrees will be computed when the number of parameters is not high enough. If the number of parameter is too high, it will be automatically reduced to the value required for computing all orders and degrees.
The total number of parameters over all expansions defines the number of columns of the MMP matrix.
Usually, OpenMaXwell performs symmetry operations for all expansions when symmetries with respect to the XY, XZ, or YZ plane are specified in the Project dialog. For example, when the symmetry number for the XZ plane is different from zero, for each expansions with origin at (x,y,z) an expansion with origin at (x,-y,z) is automatically generated and the parameters of the symmetric expansion are set in such a way that the symmetry condition on the XZ plane is satisfied. Note: When the symmetry number is 1, the E field is tangential and the H field normal to the symmetry plane.
In some cases, it is desirable to suppress the generation of symmetric expansions. This may be achieved for 2D and 3D multipoles and Bessel expansions as well as for distributed 3D multipoles by setting the parameter that defines the minimum or maximum (for Bessel type expansions) radius to a negative value r. If r is written in the form -1.234E-123, the first three digits after the dot specify which symmetry plane is inhibited, i.e., not used for generating symmetric expansions. If the first digit is zero, the XY plane is inhibited. If the second digit is zero, the XZ plane is inhibited. If the third digit is zero, the YZ plane is inhibited. For example r=-1.010E-3 inhibits the symmetry operations for the XY and YZ planes for the expansion.
Multipoles are the most frequently used expansion for 2D MMP modeling. The corresponding field has a singularity at the origin of its coordinate system. This ‘local behavior’ is very convenient for modeling fields. A multipole has a wave type (E, H, or HE). Usually, this is the same as the wave type specified in the Project dialog. It makes no sense to specify an H wave type for a multipole, if the project wave type is an E wave. When you specify the multipole wave type HE, again, this should be the same type as selected in the Project dialog. When the project wave type is hybrid, i.e., HE, you can use different multipole expansions for simulating the E and H wave parts. In addition to the wave type, you can specify the Minimum order, the Maximum order, and the Step of the orders in the corresponding boxes of the Expansion dialog. The default values 0 for the minimum order and 1 for the step of orders are appropriate for most situations and should only be modified by advanced users. The maximum order should usually be set first to a small value. If the error on the boundary near a multipole is relatively large, the maximum order can be increased. If you increase the maximum order, more memory is required. For this reason, you should also increase the maximum number of parameters reserved for the multipole (Max. box in the Parameters section of the Expansion dialog). The number of parameters required for saving all data of a multipole depends on several things (minimum and maximum order, step, symmetry numbers). Thus, it is cumbersome to evaluate the correct number of parameters. Instead, you may simply enter a too high maximum number of parameters, e.g. 10 times the maximum order. When you press the All 0 or All 1 button, the corresponding memory is allocated. After this, the required number of parameters is evaluated and the memory is reduced accordingly. You then see the correct number of parameters in the Max. box. Note that high multipole orders lead to numerical under- and overflow problems. Thus, orders considerably higher than 50 are not recommended.
A 2D multipole has a singularity in its origin and an angular cos(n*phi) or sin(n*phi) dependence of the field components around the origin. By default, the direction phi=0 is in +x direction, but you may rotate it by defining Angle (XY-plane) different from zero (in degrees). This is only required in rare cases, for example, when you want to define a dipole excitation (multipole with minimum order = maximum order = 1) with a certain direction in the xy plane. In general, the singularity of multipole excitations causes numerical overflow and graphical problems when the field in close vicinity of the origin is plotted, i.e., when an origin is on a grid point used for field plots. To avoid overflow, you may specify a number different from zero in the Minimum radius box. Then, the field in any point closer to the origin than the Minimum radius will be evaluated for a point at the Minimum radius distance. Make sure that no matching point is closer to the multipole than Minimum radius. Otherwise, MMP computation errors must occur.
OpenMaXwell can create 3D multipoles and distributed 3D multipoles (see below) out of 2D multipoles. These 3D expansions require additional parameters for defining their degrees. Therefore, you may also specify minimum and maximum degrees for 2D multipoles (3D->Min. deg. m and 3D->Max. deg. m boxes). These values are ignored in 2D multipole computations. They are only used when converting 2D to 3D expansions.
Although 2D multipoles are most frequently used for 2D, i.e., cylindrical, geometry, they can also be introduced in 3D models (when the Cylindrical box in the Project dialog is not checked). For example, when a 3D coupler with cylindrical sections is modeled, you may want to model the field in the cylindrical sections with 2D multipoles. These sections can have axes that are not parallel to the z axis of the global coordinate system. Therefore, 2D multipoles in 3D models require the definition of additional data, namely the location and orientation in 3D space and the propagation constant of the 2D multipoles. When the cylindrical section is a waveguide, it may be reasonable to first compute the modes and the corresponding propagation constants (eigenvalues) using a 2D model and to import the resulting expansions and propagation constants in the 3D model afterwards. Not that connections can be very helpful for this purpose.
Note that Angle (XY-plane) may not be specified for 2D multipole expansions in 3D models. In 3D models, the location and orientation of 2D multipoles is entirely specified by the local coordinate system (3D location... button).
In 3D models, you may use generalized 2D multipoles which are defined as follows: A standard 2D multipole has a propagation constant gamma that indicates the field propagation along its z direction. In 3D models, the z direction may be an arbitrary direction in space. Assume that the structure to be analyzed is periodic in this direction, e.g., an infinite chain of spheres along the x axis of the global coordinate system. Then, you want to model only one cell containing one single sphere and apply x-periodic boundaries to isolate this cell. Since these x-periodic boundaries are infinite (in y and z directions), you must truncate them. In the equivalent 2D problem (infinite chain of circles along the x axis) this is done by separating the top and bottom half space by means of fictitious boundaries and by expanding the field in the half spaces with Rayleigh expansions. Now, you may introduce a fictitious boundary that has the shape of a circular cylinder along the x axis. This cylinder contains the spheres and you may introduce x-periodic boundaries inside the cylinder to isolate a cell containing a single sphere. Outside the cylinder, you expand the field using the equivalent of a 2D Rayleigh expansions, i.e., a 2D multipole along the x axis (the z direction of this multipole is (0,0,1), i.e., it points in global x direction) with different propagation constants gammaN, obtained from the periodic symmetry. This means, that you wish to have a 2D multipole with different orders (as the usual ones) - describing the field variation around its z direction (e.g., the global x axis) - and with different degrees N - describing the field variation along its z direction (e.g., the global x axis). The propagation of the degree N should then be Cx+N*2*Pi/Xx, where Cx and Xx are defined in the Project dialog. Generalized 2D multipoles allow you to define the desired minimum and maximum degree and an additional parameter Period for 3D that is specified in the Expansion dialog. This parameter has the following effect: 1: assume periodicity in Xx direction (as in the example above), use Cx for computing the propagation constants (as above), and set the orientation of the 2D multipole appropriately; 2: assume periodicity along the (Yx,Yy,0) vector (defined in the Project dialog), use Cy instead of Cx, and set the orientation of the 2D multipole appropriately; 3: assume periodicity along the (Zx,Zy,Zz) vector (defined in the Project dialog), use Cz instead of Cx, and set the orientation of the 2D multipole appropriately; 4...6: same as 1...3 but use Gam/k0 (specified in the Expansion dialog) instead of Cx; -1...-6: same as 1...6 but without setting the orientation of the 2D multipole; 0 (or >6 or <-6): standard 2D multipole.
Since complex numbers are used throughout the MMP codes for electrodynamics, not only the frequency but also the location of a multipole may be defined in complex space. This means that the origin (x,y) may be described by a complex vector with x=x'+i*x'', y=y'+i*y''. Complex origin multipoles do not have a field singularity at the location of their real-valued origin (x',y'). They are typically beam-like sources of the EM field, radiating in a direction defined by the imaginary values x'' and y'' (Imaginary x and Imaginary y boxes)). For example, a multipole with x=x'+i*x'', y=y'+i*0 radiates from a line between the points (x'-x'',y') and (x'+x'',y') essentially in y direction. The field has a cut between the two points (x'-x'',y') and (x'+x'',y'). When Cut angle 0 is specified, the cut is a straight line from (x'-x'',y') to (x'+x'',y'). When you set Cut angle different from 0, the cut direction is rotated and two cut lines are obtained. If the complex origin multipole is used for modeling the field inside a domain D, the cut must be strictly outside D. Currently no automatic routines for setting complex origin 2D multipoles are available. Appropriate setting of complex origin multipoles is demanding and requires experience but it may allow one to reduce the model size drastically in certain situations.
Standard 2D multipoles are based on radial dependences such as Hn(1)(kappa*r), where Hn(1) denotes the n-the order Hankel function of first kind. In its argument, one has kappa=+-sqrt(k*k-gamma*gamma), where k is the wave number and gamma the propagation constant. The sign of the sqrt is take in such a way that the imaginary part of kappa is >=0, which guarantees that the wave is propagating away from the origin. For incoming waves, one can either exchange the sign or replace Hn(1) by Hn(2). in order to obtain such unusual multipole expansions, specify the following values of the 3D: Period type parameter: 99x: imaginary part of kappa is negative, 88x: real part of kappa is positive, 77x: real part of kappa is negative, 69x: imaginary part of kappa is negative and Hn(2) is used, 68x: real part of kappa is positive and Hn(2) is used, 67x: real part of kappa is negative and Hn(2) is used, 60x: imaginary part of kappa is positive and Hn(2) is used, where x denotes any integer digit (which denotes the period type if the 2D multipole expansion is used in 3D models).
In 2D space, standard 2D multipoles have a singularity at their origin. The radial dependence of the field is essentially described by Hankel functions, whereas harmonic functions describe the angular behavior. This behavior essentially depends on the order of the multipole. The higher the order, the more complicated the field. In 3D space, the standard 3D multipoles play a similar role. They have also a singularity at their origin and a radial dependence of the field described by Hankel functions. Instead of an angular direction one now has two angular directions (phi as in 2D and theta - as in standard spherical coordinates). The angular behavior is therefore described by the order and the degree of the 3D multipole. Up to now, only integer orders and degrees have been implemented. This is sufficient for almost all applications and it considerably simplifies the handling of 3D multipoles. Note that you may specify Minimum order n, Maximum order n, Minimum degree m, and Maximum degree m for each 3D multipole (but no step of orders as for 2D multipoles - the steps for 3D multipoles are always 1). Note that the lowest order and degree are 1 and 0 in dynamics, which corresponds to a dipole. A 3D monopole (order 0) only exist in statics but not in dynamics. If you are not sure, select 0. OpenMaXwell will adjust these values. Because of dependences between orders and degrees, it is difficult to compute the maximum number of parameters to be reserved for the multipole (Max. box in the Parameters section of the Expansion dialog). Proceed as for 2D multipoles and set a sufficiently large values in the Max. box, for example, 10 times the maximum degree times the maximum order.
Note that the orientation and location of a 3D multipole is specified by the corresponding local coordinate system. Press the 3D location... button to access and modify the corresponding values. To avoid overflow and graphic plot problems, you may specify a Minimum radius as for 2D multipoles.
The placement of 3D multipole along the surfaces in 3D space is done similarly as the placement of 2D multipoles along 2D boundaries. Since the monitor essentially is a 2D object, the 3D multipole setting and the validation of 3D models is much more difficult in practice. First of all, the graphic manipulation of the 3D multipoles in 3D space is cumbersome and has not been implemented up to now. Therefore, automatic pole setting procedures are extremely important. The current implementation provides procedures that convert a 2D boundary into a surface in 3D space and at the same time 2D multipoles into appropriate sets of 3D multipoles. This is essentially done by generating a line along the surface for each 2D multipoles. On each line, several 3D multipoles are set. Note that identical degrees and orders are used for all multipoles generated along a line. Sometimes it may be useful to manually modify the settings of some of these multipoles.
The definition of a 3D complex origin (x,y,z) is essentially the same as in 2D. It may be described by a complex vector with x=x'+i*x'', y=y'+i*y'', and z=z'+i*z''. Complex origin multipoles do not have a field singularity at the location of their real-valued origin (x',y',z'). They are typically beam-like sources of the EM field. Appropriate setting of complex origin multipoles is demanding and requires experience but it may allow one to reduce the model size drastically in certain situations. OpenMaXwell contains a directive to CONvert ring multipoles (see below, distributed 3D multipoles) into complex origin multipoles. Note that complex origin multipoles require much shorter computation time than ring multipoles but they are not identical. Ring multipoles have a circular singularity line but no cut whereas complex origin multipoles have a disk-like cut. As in 2D, the shape of the cut area may be modified by the Cut angle. For correctly modeling the field in a domain D, neither the singularity nor the cut may be inside the domain.
When the number of 3D multipoles set along a line is increased, one usually obtains more accurate results. At the same time, the condition number of the MMP matrix is increased and this can lead to severe numerical problems. Therefore, it is usually better to replace the multipoles along a line by a so-called distributed multipole that is singular everywhere on the line. Such a distributed multipole is a superposition of infinitely many multipoles placed on the line with appropriate orders and degrees. For practical reasons, distributed multipoles must be approximated by superpositions of a discrete set of multipoles. The corresponding number may be selected in the N multipoles box of the Expansion dialog. The higher this number the more accurate results are obtained. At the same time the computation time is also increased. When you specify a negative number of N multipoles, e.g., -100, up to 100 multipoles will be summed up along the line, depending on the distance of the field point from the distributed 3D multipole. This allows to save computation time but may reduce the accuracy of the evaluation.
Currently, 3D multipoles distributed along straight lines (3D line multipoles), along arcs (3D ring multipoles), and along spirals (3D spiral multipoles) are available. It would also be possible to develop 2D multipoles distributed along 2D lines and arcs, but this has not been done since 2D modeling with standard 2D multipoles is usually sufficiently efficient. Furthermore, it might be reasonable to distribute 3D multipoles on elements such as rectangles, triangles, etc. This has not been done yet within OpenMaXwell.
The orders and degrees of the distributed multipoles are selected internally in a very special way, but you specify Minimum order n, Maximum order n, Minimum degree m, and Maximum degree m very much as for standard 3D multipoles. Note that you may also specify a Step of orders. The distributions of the amplitudes are either harmonic functions or Legendre polynomials along the line, ring, or spiral where the multipoles are placed. Harmonic functions along the line, ring, or spiral are best for circular lines, i.e., for ring multipoles.
In addition to the standard ring multipoles (consisting of a circle), ring multipoles along a segment of a circle have been implemented. For standard rings (closed circles), the harmonic functions are 1, cos(f), sin(f), cos(2f), sin(2f), etc. where f denotes the angle, 0<f<2p. For a segment of a circle, one has f1<f<f2 and the harmonic functions 1, cos(af), sin(af), cos(2af), sin(2af), etc. Usually, one should set a=p/(f2-f1) for an open segment, but OpenMaXwell provides an extra parameter b (Degree factor) and sets a=bp/(f2-f1) for obtaining more freedom. While the standard interval for Fourier basis (harmonic functions) is 0...2p, the standard interval for Legendre basis is -1...+1. When Legendre polynomials are selected (negative Maximum degree - see below), the interval is automatically corrected. When the ring multipole is closed (full circle), a=b is set. In this case, it makes not much sense to set b¹1.
The order of a distributed multipole corresponds to harmonic functions around the line. When such a multipole is placed within a relatively thin wire, one can expect that the field around the wire is almost constant. In this case, the maximum order may be very small or even 0. The thicker the wire, the higher orders will be required. For thin wires, one may select maximum order -1. If so, a thin-wire approximation is used.
The degree of a distributed multipole is associated with the harmonic or Legendre functions along the line. Therefore, the degree of a distributed multipole should increase when the length of the line is increased. The higher the degree of a distributed multipole, the more matching points are required along it. Selecting a proper maximum degree therefore requires some experience. The routine that generates the distributed multipoles proposes some value, but it is strongly recommended to inspect this value in the Expansion dialog and to modify it if necessary. Note that Legendre polynomials of order up to -m are selected when the maximum order of the distributed multipole expansion is negative. For positive maximum order m, Fourier basis, i.e., harmonic functions of order up to m are used.
2D Bessel expansions are formally identical to 2D multipole expansions, but they have neither a singularity nor any local behavior. Consequently, defining a Minimum radius makes no sense for Bessel expansions. The parameters and attributes of Bessel expansions are identical to those of the multipoles. Bessel expansions are helpful for domains that have an almost circular outer boundary. When the field on this boundary varies slowly, a single Bessel expansion with an origin in the center of the domain can replace all multipoles outside the outer boundary.
Problems may occur when using Bessel expansions and symmetries. Assume that you have a domain somewhere away from the symmetry axis. The symmetry operations will automatically generate a symmetric domain with the same domain number. When you model the field in the domain with a Bessel expansion, a symmetric Bessel expansion is generated. The symmetric Bessel expansion will also have an influence on the field in the original domain because the original domain and the symmetric one are one and the same domain. In order to avoid undesired influence of the symmetric Bessel function, you can limit the radius of the influence of the Bessel function in the Maximum radius box. The field of the Bessel expansion outside a circular area with the radius selected in this box with center in the origin of the expansion will be set equal to zero. When the value in the Maximum radius box is zero, the radius is set to infinity, because a zero radius makes no sense.
2D Bessel expansions may also be introduced in 3D models. The procedure is the same as for 2D multipoles. Note that superpositions of Bessel expansions are usually not helpful. Therefore, the automatic generation of sets of 3D Bessel expansions from 2D Bessel expansions makes not much sense.
3D Bessel expansions are formally identical to 3D multipole expansions, but they have neither a singularity nor any local behavior. 3D Bessel expansions are used in 3D space exactly as 2D Bessel functions in 2D space. 3D Bessel expansions are optimal for modeling the field within a sphere, but the can also be helpful within arbitrary closed domains. If the shape of the domain is far from spherical, it may be necessary to support the 3D Bessel expansions by 3D multipole expansions located outside the domain.
Complex origin Bessel expansions may produce an EM field very similar to Gaussian beams. Unlike Gaussian beams, the complex origin Bessel expansions fulfill Maxwell equations analytically! Thus, it is more realistic to consider Gaussian beams as approximations of complex origin Bessel expansions than vice versa. However, the definition of 2D and 3D complex origin Bessel expansions is essentially the same as for 2D and 3D complex origin multipoles.
2D plane waves are of wave type E, H, or HE. E and H plane waves are single-parameter expansions. The HE plane waves are a superposition of an E plane wave and a H plane wave. Therefore, HE plane waves require two parameters and will fill two columns of the MMP matrix. Note that the project wave type (defined in the Project dialog) filters the wave type in the Expansion dialog. When the project wave type is E or H, the plane wave type should either be equal to the project wave type or HE. Plane waves are most frequently used for modeling the incident field. In this case, a single parameter is mandatory.
The direction of the plane wave propagation within the xy plane is specified by the Angle (XY-plane) (in degrees) with respect to the x axis. Unlike in many 2D codes, the wave vector k of a 2D plane wave may also have a non-zero z component. This is specified in the Normalized propagation constant box of the Project dialog, because this value must be identical for all 2D expansions of a (cylindrical) problem with oblique incidence of a plane wave.
Usually, the plane wave is scaled in such a way that the time average of its Poynting vector is 1. If a plane wave excitation of a grating is considered, one usually prefers a scaling in such a way that the y component of the Poynting vector (perpendicular to the grating) is 1. For turning this scaling on, select a positive number in the Scaling (<1:no) box.
Note that 2D plane waves are not available for 3D MMP models, i.e., when the Cylindrical box in the Project dialog is not checked.
3D plane waves are essentially the same as 2D plane waves, but 3D plane waves propagate in the z direction of their local coordinate system (Press the 3D location… button in the Expansion dialog to inspect and modify the local coordinate system!) whereas the direction of the propagation of 2D plane waves is determined from the global propagation constant gamma and the angle in the global xy plane. Also for 3D plane waves the wave types E, H, or HE may be selected, but now, the polarization with respect to the local coordinate system is affected. Note that OpenMaXwell automatically assumes that 3D plane waves are defined in the Expansion dialog when the Cylindrical box in the Project dialog is not checked. Then, the Angle (XY-plane) disappears.
Note that there are additional boxes for 3D plane waves: Main angle (3D), Sect. angle (3D), Superpos. n (3D), and Superpos.ord.(3D). This feature is under construction. In order to obtain a standard plane wave, set 0 in all of these boxes.
2D harmonic expansions are useful for modeling square waveguides and similarly shaped objects. These expansions have the form f(x,y)=Harmx(m*kx*x)*Harmy(n*ky*y), Where f is the longitudinal component of the E field for the E waves and of the H field for the H waves, and m, n denote the orders of the expansions. HE waves are a superposition of both E and H waves. You can specify the Minimum order m0 and the Step of order ms in the corresponding boxes. The order m will obtain the values m0, m0+ms, m0+2*ms… until the expansion has as many parameters as selected in the Max. parameters box. Note that m must be a positive integer number and if m0 and ms are less than 1, OpenMaXwell will round them up to one.
Harmx and Harmy can be one of the following functions:
sin(…), cos(…), exp(+i*…), exp(-i*…).
Up to four different types can be specified with respect to x and y in the x type and y type boxes. The type numbers are indicated below:
Type 1 or -1: Ez=…sin(…), Hz=…cos(…)
Type 2 or -2: Ez=…cos(…), Hz=…sin(…)
Type 3 or -3: Ez=…exp(+i*…), Hz=…exp(+i*…)
Type 4 or -4: Ez=…exp(-i*…), Hz=…exp(-i*…)
Note that the functions of the E waves and H waves with type 1 and 2 are exchanged. This guarantees that all waves with identical x type and y type have identical symmetry with respect to the symmetry planes xy, xz, and yz. Note also that types 1 and 2 represent standing waves in the x or y direction, whereas type 3 waves propagate in the +x or +y direction, and type 4 waves propagate in -x or -y direction.
The x and y components kx and ky of the wave vector are computed from the parameter A that is specified in the x-per./2 | kx/k0 box of the Expansion dialog. The meaning of A depends on the x type of the harmonic expansion. If this type is positive, one has
kx =Pi/A, ky=sqrt(kappa^2-kx^2),
where kappa is the transverse wave number, i.e., the wave number in the xy plane. If the x type is negative, kx is evaluated as
kx=k0*A, ky=sqrt(kappa^2-kx^2),
where k0 is the free space wave number.
Special attention must be paid to the sign of the sqrt in the ky evaluation: ky=sqrt(kappa^2-kx^2). Usually, one wants to select the sign in a way that the imaginary part of ky is positive. Then, type 3 waves decay in +y direction and type 4 waves decay in -y direction. During eigenvalue search, the sign may abruptly change, which may cause undesired discontinuities of the eigenvalue search functions, which disturb the search routines. You then may select type 5 instead of 1, 6 instead of 2, 7 instead of 3, 8 instead of 4. For types >4 (or <-4) the sign of the sqrt is selected such that the real part of ky is positive. Note that this will also cause discontinuities of the search function, but at other places in the complex eigenvalue search plane.
Problems may occur when you use harmonic expansions and try to take advantage of symmetries. Assume that you have a domain somewhere away from the symmetry axis. The symmetry operations will automatically generate a symmetric domain with the same domain number. When you model the field in the domain with a harmonic expansion, a symmetric harmonic expansion is generated. This expansion will also have an influence on the field in the original domain because the original domain and the symmetric one are one and the same domain. In order to avoid undesired influence of the symmetric expansion, you can restrict the harmonic expansion to a strip limited by straight lines at x=-A, x=+A , and y=B. The field of the harmonic expansion outside the area, i.e., x<-A or x>A and y<B will be set equal to zero. A and B are selected in the Maximum x and Minimum y boxes respectively. Note that the strip is infinite in the y direction. By selecting the Angle of the expansion, you should be able to restrict the harmonic expansion to an area completely outside the symmetry axis. The limits A and B must be strictly positive. When A is zero or negative, the harmonic expansions are computed for all values of x. When B is zero or negative, the harmonic expansions are computed for all values of y.
OpenMaXwell allows you to restrict the harmonic expansions to a strip, a rectangle, or a quadrant. For doing this, the Maximum x and Minimum y boxes have been replaced by the Min x / Max |x| and Min y / Max |y| boxes. When the value in these boxes is zero, there is no restriction in the corresponding direction. When it is positive, e.g., equal to +A or +B, the field for x<A or y<B is set equal to zero. When it is negative, e.g., equal to -A or -B, the field outside the interval –A…A or –B…B is set equal to zero.
2D harmonic expansions may also be introduced in 3D models. The procedure is essentially the same as for 2D multipoles. The propagation constant in the Project dialog of a cylindrical (2D) harmonic expansion must then be transferred to the Gam/k0 box of the (3D) harmonic expansion in the Expansion dialog. Note that the x, y, and z coordinates in the description above are local coordinates when 3D MMP models are computed, i.e., when the Cylindrical box in the Project dialog is not checked. 3D harmonic expansions are automatically used instead of 2D harmonic expansions when non-cylindrical problems are solved with OpenMaXwell, i.e., when the Cylindrical box in the Project dialog is not checked. For making harmonic expansions more general, also the z dependence may be specified with a z type, similar to the x type and y type. Note that z type should be 3 (or 0) for 2D problems.
2D Rayleigh expansions are a special case of harmonic expansions that occur in periodic problems, especially gratings. In this case, you should never modify the orientation of the expansion, because OpenMaXwell will automatically compute the correct kx components of the corresponding harmonic expansions and set the correct type for you. Moreover, it is assumed that the incident wave is a plane wave with negative ky component of the wave vector.
For 2D grating computations, 2D Rayleigh expansions should only have type 0 or 1, which is specified in the Trans(0)/Refl(1) box. Type 0 specifies a transmitted waves with negative ky, whereas type 1 specifies a reflected waves with positive ky.
For 2D Rayleigh expansions you specify the Maximum x order m and Minimum x order n. Usually, n is set equal to 0. Then, the orders -m, -m+1,..., -1, 0, 1, ..., m-1, m are evaluated. If you specify n>0, the orders -n...+n are skipped. Especially when computing gratings, you are mostly interested in the lowest orders, i.e., orders 0, +1, -1, +2, -2... Therefore, the orders are arranged starting at the lowest order (usually 0). This makes it easier to find the corresponding efficiencies. For example, if only E waves or H waves are specified in the Filter section and n is 0, the parameters 1, 2, 3, 4, 5, ... correspond to the orders 0, +1, -1, +2, -2.... For HE waves, one has alternating E and H parts, i.e., E 0 order, H 0 order, E +1 order, H +1 order, E -1 order, ...
Note that higher order Rayleigh terms may be evanescent, i.e., not propagating in y direction. In this case, the y component ky of the corresponding wave vector is imaginary and no energy is transmitted in y direction. It is also important to note that - unlike many other software packages - OpenMaXwell also allows one to handle 2D models with kz different from 0 (specified by the normalized propagation constant in the Project dialog). With increasing kz, also lower order Rayleigh terms may become evanescent because one has ky=sqrt(k*k-kx*kx-kz*kz), where kx is evaluated from kx=kx0+order*2*Pi/period in x direction and kx0 is the x component of the incident plane wave.
For special non-grating applications, you may use 2D Rayleigh expansions with Trans(0)/Refl(1) different from 0 or 1. Positive values are similar to reflected (1) terms and negative values similar to transmitted (0) terms but when the absolute value of Trans(0)/Refl(1) is > 2, the field is set equal to 0 if the y coordinate of the field point (in local coordinates of the 2D Rayleigh expansion) is > Min y. For Trans(0)/Refl(1) = -2,-1,+2, the field is set equal to 0 if the y coordinate is < Min y. Furthermore, you can specify the periodicity factor CX in X direction for the 2D Rayleigh expansion in the Real(CxPeriod) and Imag(CxPeriod) boxes respectively. Note that CX is defined in the Project dialog for grating applications, when periodic symmetry in X direction is selected. Then the values in the Real(CxPeriod) and Imag(CxPeriod) boxes are overwritten by those in the CX= and the corresponding +i boxes of the Project dialog.
3D Rayleigh expansions are automatically used instead of 2D Rayleigh expansions when non-cylindrical problems are solved with OpenMaXwell, i.e., when the Cylindrical box in the Project dialog is not checked. In this case, the incident plane wave should have a negative kz component of the wave vector and the structure is assumed to be periodic in x and y directions (defined in the Project dialog).
The type is handled as for 2D Rayleigh expansions: Type 0 specifies a transmitted waves with negative kz, whereas type 1 specifies a reflected waves with positive kz.
For 3D Rayleigh expansions one has orders in x and y directions. The minimum orders are 0 and may not be specified. You only specify the Maximum x order m and Maximum y order n.
There is no "simple" arrangement of orders in x and y directions for the 3D case as for the 2D case. The 3D Rayleigh terms are computed in two nested loops. The outer loop runs from -m to +m and the inner loop runs from -n to +n. In the inner loop, the E waves (with Hz=0) are computed first and the H waves (Ez=0) are computed afterwards.
The z component kz of the wave vector is computed from kz=sqrt(k*k-kx*kx-ky*ky), where kx=kx0+order in x direction*2*Pi/period in x direction and ky=ky0+order in y direction*2*Pi/period in y direction. The components kx0 and ky0 are the components of the wave vector of the incident plane wave.
As in the 2D case, you may also use 3D Rayleigh for non-grating applications by setting Trans(0)/Refl(1) different from 0 or 1. In this case, the Min z value allows you to set the field equal to 0 in points with large or small z coordinates.
Any linear combination of MMP expansions is again a possible MMP expansion because it automatically fulfills Maxwell’s equations. For constructing a connection, you must first define all expansions to be contained in it and all the corresponding parameters. In addition, the connection number should be set in the In connection box of all expansions contained in the Expansion dialog. This number can have any positive value. Finally, you define the connection itself. Note that the connection has an ID number that should be the number mentioned above. A connection has a single parameter only, i.e., it is a single-parameter expansion.
Connections are usually multi-domain expansions, i.e., the describe non-zero fields in more than a single domain. Therefore, the Domain number of a connection (specified in the Expansion dialog) should be 0. If you specify a positive domain number, the field of the connection outside this domain will be set equal to zero. For a negative domain number -N, the field of the connection in the domains with numbers >N will be set equal to zero.
Connections are very helpful for solving big problems by subdividing them into smaller, weakly interacting parts. Assume, you have a dipole with a reflector or other objects in its vicinity that illuminate an object that is so far away that the interaction between this object and the other objects is weak. When you first compute the interaction of the dipole with the objects in its vicinity, you can put the resulting field in a connection, by simply modifying the In connection number of all expansions from 0 to 1. Now you add a new expansion of the connection type with location (0,0) and orientation Angle 0. If the connection has an amplitude (parameter) of 1, it has the identical field as the solution of the dipole with the objects in its vicinity. If the amplitude of the connection is different from 1, the corresponding field is multiplied by this amplitude. Now you define a new problem with the object ‘far away’ and the connection as the incident field of this problem. Note that you can move and rotate the connection, which is identical to moving and rotating the original dipole and the objects in its vicinity.
OpenMaXwell allows you to restrict the connections to a strip, a rectangle, or a quadrant. For doing this, the Maximum x and Minimum y boxes have been replaced by the Min x / Max |x| and Min y / Max |y| boxes. When the value in these boxes is zero, there is no restriction in the corresponding direction. When it is positive, e.g., equal to +A or +B, the field for x<A or y<B is set equal to zero. When it is negative, e.g., equal to -A or -B, the field outside the interval –A…A or –B…B is set equal to zero. OpenMaXwell also contains a Min z / Max |z| box for a restriction in z direction.
Note: when you work without connections, all expansions have the connection flag 0 by default. When you work with connections, each expansion should have a positive connection flag in most cases, because connection flag 0 stands for "all connections", which is usually not desired. As soon as you use connections, check all connection flags in the Boundary, Expansion, and MMP dialogs.
Note that 2D connections are not available for 3D MMP models, i.e., when the Cylindrical box in the Project dialog is not checked.
3D connections are essentially the same as 2D connections. Now, the location is defined by the local coordinate system (Press the Location… button in the Expansion dialog.) whereas the 2D location (xo,yo) and orientation Angle are ignored.
Note that 3D connections are automatically assumed when 3D MMP models are computed, i.e., when the Cylindrical box in the Project dialog is not checked.
Connections can be nested, i.e., a connection can contain other connections. However a connection cannot contain itself either directly or indirectly. To avoid connections being contained within themselves, a connection with the connection number N can only contain connections with a number higher than N, i.e., the In connection number of a connection should be smaller than its ID number. Make sure that the flags of nested connections are positive (non-zero) numbers!
A standard connection contains several expansions with given amplitudes (parameters) that are usually computed from a previous model. Such a connection simply is the superposition of the contained expansions multiplied with their amplitudes, i.e., one may write Connection=Sum(over k) Ak*Expansionk. Since only one such sum is evaluated, the connection has a single parameter and fills a single column in the MMP matrix. Line, ring, and spiral multipoles also consist of a set of expansions (multipoles) and their field is obtained from a superposition of these expansions with harmonic weighting functions along the ring, line or spiral. Thus, such distributed multipoles are multi-parameter expansions in general that evaluate superpositions of the form Sum(over k) harmonic(a*k*s)*Expansionk, where harm is sin or cos, s the location of the expansion along the line, ring or spiral, and a a user-defined factor. Similar superpositions may also be done for connections that are then called multi-parameter connections. For using multi-parameter connections, set Max. order of the connection in the Expansion dialog bigger than 1 and increase the Max. number of Parameters. In the Basis type box, you specify whether Sum(over k) Ak*harmonic(a*k*s)*Expansionk (Basis type 0 or positive) or Sum(over k) Ak*Legendre(a*k*s)*Expansionk (Basis type negative) shall be computed. Finally, a may be specified in the Fourier factor box. Note that you can suppress either sin or cos terms of the harmonic (Fourier) basis by selecting the even or odd Filter. In most cases, you will first set all parameters of the expansions contained in the multi-parameter connection equal to 1. Note that the connection does not "know" where the contained expansions are located. It therefore assumes that they are uniformly distributed and ordered according to their number. From this assumption, the "location" s is computed depending on the Basis type. For Fourier basis, one has 0<s<2*Pi and for Legendre basis, one has -1<s<1. Furthermore, the sum mentioned above is slightly modified because it essentially approximates an integral along s of f(s) by summing up f(sk). A considerably better approximation of the integral is obtained when the trapezoidal rule is applied instead. For equidistant points sk, this is simply obtained when the first and last term of the sum are multiplied by 0.5. Therefore the first and last term of the multi-parameter connection are weighted with the factor 0.5. This weighting factor is inappropriate when the integral is carried out over a closed path, for example, when the expansions contained in the connection are distributed uniformly along a circle. In order to turn the weighting factor off, select Basis type 2 for Fourier or Basis type -2 for Legendre.
A connection may contain essentially equal expansions with equal number of parameters each, for example, a set of multipoles with N parameters for each multipole. Then you might wish to include only a certain part of the included expansions (corresponding to parameter number n, 0<n<N+1) into the the connection. For doing this, you may set a Basis type >9 or <-9. Then, only the parameters with n=abs(Basis type/10) will be considered. For example, when all included expansions are Ez type 2D multipoles of orders 0 and 1, they have N=3 parameters, the first one for order 0 (monopole) and the second and third parameters for the dipole order 1. When you then set Basis type = -21, n=2, i.e., the first of the two dipole orders is filtered out and a Legendre basis is used because Basis type<0. By setting three connections with Basis type = -11, -21, -31 respectively, you can separately obtain a distributed set of monopoles and dipoles, which is similar to the 3D line multipoles. Note that while summing up dipoles along a line, those parts with dipoles oriented along the line cancel essentially each other out and should be omitted. The 3D line multipole implementations do this automatically. When applying the multi-parameter connection concept, the user is responsible for this. Thus, you must correctly orient the dipoles along the line and correctly filter those parts that do not cancel out. Otherwise, you might obtain ill-conditioned matrices or inaccurate results.
Note that the multi-parameter connection concept is very general. Such a connection may be nested, i.e., you may generate a set of connections containing other sets of connections. By doing this, you may distribute multipole expansions along a surface with Legendre or Fourier basis in two directions of the surface. However, this is a demanding task because of possible cancellations in the summations of the multi-parameter connections, as mentioned above.
2D multilayer expansions are monopole expansions - located at (xo,yo) - that fulfill boundary conditions along infinite boundaries of a 2D multilayer structure. These expansions were implemented by Aytac Alparslan. They are multidomain expansions (i.e., their field is non zero in more than a single domain) and require the numerical solution of Sommerfeld integrals, which is rather demanding and time consuming - despite of some smart techniques. Note that these expansion require a very special model with at least N (N layers) different domains that constitute the multilayer structure. The first N domains must be ordered from bottom (lowest y values) to top. These domains must be separated by straight boundaries parallel to the x axis. The corresponding N-1 boundaries must also be ordered from bottom to top, i.e., boundary 1 must be a boundary between domain 1 and 2 at y=y1, boundary 2 must be a boundary between domain 2 and 3 at y=y2>y1, and so on. These N-1 boundaries are infinite in principle, but OpenMaXwell only needs them for computing the domain number of field points if only 2D multilayer are used for approximating the field in the first N domains. Then, it is sufficient to define N-1 dummy lines (0 weights) of finite lengths for the firt N-1 boundaries because the boundary conditions along the infinite boundaries will be fulfilled automatically by the 2D multilayer expansions. In more tricky models, one may decide to model the field in a domain k by a superposition of 2D multilayer expansions and standard 2D multipoles. If so, sufficiently long non-dummy boundaries must separate domain k from its neighbor domains k-1 and k+1.
The 2D multilayer expansions are controlled by the following parameters: Sommerfeld k: This is a material dependent parameter. It is used to include all the guided wave modes (singularities in the integrand) in the result. For layered geometries that are made up of only dielectrics, it is safe to set this parameter equal to 1, since all the guided wave modes for this kind of structures are found between k_0 and k_max, where k_0 and k_max are the real parts of the free-space and the maximum wavenumbers of the given layered geometry, respectively. For layered geometries that can support Surface Plasmon Polaritons (SPPs), i.e., metallic layers in optical wavelengths, the wavenumber of the SPP can exceed the maximum wavenumber; therefore setting Sommerfeld k equal to 1.5 is enough to capture the SPP singularity for thick or semi-infinite metallic layers. This means the integrator will include all the guided wave modes between k_0 and 1.5*k_max. When the metallic layer is very thin (e.g. <λ0/10), setting Sommerfeld k equal to 3 or 4 will be sufficient, since the leakage of waves through the thin layer shifts the SPP wavenumber dramatically. The user must be careful when choosing this parameter, since unnecessary high values will increase time for the integration. Integration acc.: The relative error criteria for the numerical integrator. Setting this value equal to 1E-7 is sufficient for most of the cases. If a higher precision is needed this value can be changed accordingly. Imaginary x and Imaginary y: The complex components of the origin of the 2D multilayer expansion. This parameter makes it possible to concentrate the field generated by a 2D multilayer expansion in a specific direction, where this direction is given by the vector (Imaginary x, Imaginary y). The field fans out from a line with the length of 2*sqrt(Imaginary x^2+ Imaginary y^2) that is normal to the direction of the beam, not from a point as in the case of real origin 2D multilayer expansions (i.e. when both Imaginary x and Imaginary y are 0). These parameters are important in the analysis of long structures compared with the wavelength, since using the complex origin 2D multilayer expansions decreases the number of total expansions within the same error criteria. N layers: Number of layers in the layered geometry, i.e., the number N of domains constituting the multilayer structure. The numbering of the boundaries should start with the boundaries in the layered medium from bottom to top since OpenMaXwell sets up the internal parameters according to this order. Bottom layer type and Top layer type: If set to 1 the corresponding layer becomes perfect electric conductor, if set to 2 the corresponding layer becomes perfect magnetic conductor, and if set to 0 the code checks for the specifications of the layer in the Domain dialog. Note that material properties for domain 1 and N must be specified in the Domain dialog also when the corresponding layer type is 1 or 2. If so, the corresponding permittivity and permeability will be ignored.
More information on multilayer expansions.
3D multilayer expansions are the 3D counterpart to 2D multilayer expansions. They are handled in a very similar way. Since 3D monopoles do not existin in electrodynamics, 3D multilayer expansions are dipole expansions - located at the origin of the local coordinate system - as ordinary 3D multipoles. They are multidomian expansions and fulfill boundary conditions along infinite boundaries of a 3D multilayer structure. The corresponding first N domains must be defined and ordered as for the 2D multilayer expansions and the first N-1 boundaries must be planar 3D objects that are ordered in a similar way as for 2D models.
The 3D multilayer expansions are controlled by the following parameters: Sommerfeld k: This is a material dependent parameter. The usage is exactly the same as 2D multilayer expansions, i.e., for a geometry that includes only dielectric layers, setting it equal to 1, for a geometry that includes thick or semi-infinite metallic layers setting it to 1.5 and for a geometry that includes thin metals (e.g. <λ0/10) setting it equal to 3 can be used as a rule of thumb. The user must be careful when choosing this parameter, since unnecessary high values will increase time for the integration. Integration acc.: The relative error criteria for the numerical integrator. Setting this value equal to 1E-7 is sufficient for most of the cases. If a higher precision is needed this value can be changed accordingly. Imaginary x, Imaginary y, Imaginary z: The complex components of the origin of the 2D multilayer expansion. This parameter makes it possible to concentrate the field generated by a 2D multilayer expansion in a specific direction, where this direction is given by the vector (Imaginary x, Imaginary y, Imaginary z). The field fans out from an ellipse that is normal to the direction of the beam, not from a point as in the case of real origin 3D multilayer expansions. N layers: Number of layers in the layered geometry, i.e., the number N of domains constituting the multilayer structure. The numbering of the boundaries should start with the boundaries in the layered medium from bottom to top since OpenMaXwell sets up the internal parameters according to this order. Bottom layer type and Top layer type: If set to 1 the corresponding layer becomes perfect electric conductor, if set to 2 the corresponding layer becomes perfect magnetic conductor, and if set to 0 the code checks for the specifications of the layer in the Domain dialog. Note that material properties for domain 1 and N must be specified in the Domain dialog also when the corresponding layer type is 1 or 2. If so, the corresponding permittivity and permeability will be ignored. Hor/vert/both:0/1/2: If set to 0 the expansion is a horizontal dipole, if set to 1 the expansion is a vertical dipole. If set to 2 both of the cases are calculated. If the scattered field can not be predicted, setting this value equal to 2 is the safest choice.
More information on multilayer expansions.
In statics, time dependent expansions such as plane waves, harmonic expansions and Rayleigh expansions are not meaningful and therefore have not been implemented in OpenMaXwell. For static problems, multipoles and Bessel expansions should be sufficient in most cases. Static multipoles have the same form as multipoles in dynamics, but the radial dependence is slightly different. The zero order Hankel function of the monopole is replaced by the function log(r) and the n-th order Hankel functions are replaced by 1/r^n. Also the radial dependence of the Bessel expansions are replaced in statics. Instead of the zero order Bessel function one obtains a simple constant that is set equal to one and instead of the n-th order Bessel function one obtains r^n. I.e., no Bessel function is involved in the definition of the static 'Bessel' expansion, but formally, these expansions are identical to their dynamic counter parts. Note that static expansions evaluate the potential in addition to the E and H fields.
Static expansions for 3D models have not yet been implemented.
MMP considers static problems as time-harmonic with zero frequency. Therefore, a zero frequency should be specified in the Project dialog. If desired, you can even leave the Time-harmonic box unchecked. However, the Cylindrical box should be checked and the Eigenvalue box should be unchecked. Moreover, the Wave type E should be selected. This has the following effect: The scalar potential is used and the electric field is computed as its gradient. If instead you select Wave type H, the z component of the electric vector potential would be used and the electric field would be computed as its curl. Although this can be interesting for advanced users, it is not recommended because the resulting expansion is not always complete.
Problems which are symmetric or anti-symmetric with respect to the xz or yz plane can be solved more quickly by taking advantage of their symmetries. To do this set the corresponding symmetry numbers.
First of all, specify the domains and boundaries as for any MMP problem. In addition, specify the boundary values for the potential on the boundaries of electrodes with known potential. Note that electrodes are considered to be ideal conductors. One of the two domain numbers of such conductors should be equal to zero. On electrodes with a given value of the scalar potential, you should apply Specific Boundary conditions for the scalar potential V.
In statics, weighting problems occur because the numerical size of the electric field and that of the potential can be very different (depending on the size of the problem in the xy plane). This is especially important when boundary conditions for the field and the potential are mixed, for example, when you apply the continuity of the field along a dielectric boundary and the boundary condition for the potential on an electrode. If you notice that the potential is not sufficiently matched on a certain boundary, increase the weight of the boundary until your results are sufficiently balanced. In some situations, it may be useful to have two identical boundaries at the same positions with different boundary conditions and weights on the two boundaries.
The excitation is often missing in static problems. Typical excitations are known charge distributions that can be modeled by a set of multipoles embedded in a connection. When no explicit excitation is present, a dummy excitation, i.e., a last expansion with a single parameter equal to zero is required.
When floating electrodes with known total charges are present, the total charges of these electrodes play the role of the excitation for the MMP tool. The total charge of each floating electrode is then modeled by a single monopole expansion with origin in the center of the electrode and the minimum orders of all multipoles in such an electrode are set equal to one. When more than one floating electrode is present, all monopoles in these electrodes must be embedded in a connection that is the excitation of the problem.
The capacitance can be determined from the difference of the potentials on the electrodes and the charges on the electrodes. When you specify the potentials of all electrodes via the boundary conditions, the potential differences are easily calculated by hand. The charge of an electrode that is entirely within a single domain can also be easily calculated from MMP expansions. As a consequence of Gauss’ law, it is equal to the sum of the zero orders of the multipoles inside the electrode that model the field in the surrounding domain. When an electrode is not entirely within a single domain, the charge can be computed from a line integral around the electrode. This is still quite simple, but more time consuming.
The handling of magnetostatic problems is very similar to the handling of electrostatic problems and is not discussed in detail here. Note that you often have conductors with constant current density. In 2D, all currents are supposed to flow in the z direction and the magnetic vector potential has a z component only. The field of a thin current line in z direction is equal to the field of a monopole, i.e., a zero order multipole. If you uniformly distribute a sufficient number of monopoles in a conductor of constant current density, and give each of them each a constant parameter, this simulates your conductor quite well. Note that it may be convenient to include these monopoles in a connection.
Static problems can be used for obtaining approximate solutions of dynamic problems. For example, on loss-free transmission lines, the electromagnetic field can be obtained from an electrostatic and a magnetostatic solution. When you have solved the static problems, you can combine them and replace the zero frequency by the desired frequency. Note that you should evaluate the propagation constant from the capacitance and inductance obtained from the static solutions.
The most important aspect of scattering problems is the excitation, i.e., the incident field or wave. MMP does not differentiate between expansions that model the scattered field and expansions that model the incident wave. The latter is usually the last expansion in the list of all MMP expansions. Note that the excitation may have only one parameter, which is its amplitude. Most frequently, the incident wave is a plane wave. Sometimes you also have monopoles, dipoles, or even quadrupoles which are multipoles of order 0, 1, 2 respectively. Note that you can obtain more complicated excitations when you include several MMP expansions in a connection. This is especially interesting when your excitation is the result of a previous MMP computation.
Multiple excitations / multiple right hand sides
When you want to observe the response of a system on different excitations, the main part of the MMP matrix equation remains the same because only the right hand side depends on the excitation. Since matrix equations with multiple right hand sides may be solved very efficiently, you may specify multiple excitations. In this case, only one of the excitations may be active when you want to draw the corresponding field. This is specified in the Expansion dialog. For example, you can have n excitations specified by the n last expansions, e.g., plane waves with different angles of incidence or dipoles at different locations.
As an alternative, you may also have a single expansion with n parameters as last expansion. This case is a bit more tricky: For each excitation k (0<k<n+1) OpenMaXwell computes a separate set of parameters for each expansion - including the one that plays the role of the excitation. Thus an n by n array of parameters is reserved for the last expansion. In this array, only the diagonal elements should be set equal to 1 and all other elements equal to 0. The buttons All0 and All1 in the Expansion dialog for initializing the diagonal elements of the parameter array of the last expansion in this way. Therefore, you should initialize all parameters for all excitations to zero and then set the diagonal elements, i.e., parameter 1 for excitation 1, parameter 2 for excitation 2, etc. to 1, which is cumbersome. By the directive SET EXPansion N PARameter 0 0 0 0 you may set all parameters of the last expansion (N) to zero for all n excitations. The MMP solver will then notice that the parameter of the excitation is 0 and set it to 1.
Note that the amplitude of the excitation was always set to 1 in older MMP versions. This is no longer the case. You therefore, can scale the excitation if necessary. For a multi-parameter excitation, this requires a correct initialization of the diagonal elements mentioned above.
The propagation constants of the incident wave and of the scattered field of cylindrical structures must be identical. Therefore, the propagation constant to be specified in the Project dialog, is obtained form a projection of the wave vector of the excitation on the z axis. In the special case, of a plane wave incident perpendicular to the z axis, gamma becomes zero. Many programs for electromagnetic scattering are restricted to this special case However 2D MMP is designed for the more general case of oblique incidence.
There are two different symmetries to be considered in scattering problems, the symmetry of the problem and the symmetry of the excitation. When these two symmetries do not match, a symmetry decomposition is required. In the current MMP implementation, this symmetry decomposition is not done automatically. Therefore, it must be done manually. Assume that a structure is symmetric with respect to the XZ plane but the excitation is a dipole D at (x,y,z), not sitting on the XZ plane. Now, introduce a symmetric dipole D' at the symmetry point (x,-y,z) in such a way that the field of D+D' is symmetric and the field of D-D' is antisymmetric with respect to the XZ plane. Then you make take the XZ symmetry into account for solving these two problems. For these symmetric problems, you must discretize only the half space with y>0. Thus the number of matching point is half and the numbers of rows and columns of the MMP matrix become half of what is required for a non-sammetric model, i.e., memory is reduced by the factor 4 and computation time almost by the factor 8. Thus, solving the two symmetric (and antisymmetric) models saves memory and computation time, but it requires some work from the user, which is only justified for problems where memory and computation time are critical. When more symmetries are present, the savings may become much more pronounced. This especially holds for axisymmetric structures, where symmetry decomposition would essentially consist of a Fourier series representation of the field in angular direction.
Usually, the incident wave in 2D models has either an E or H longitudinal field component but not both, i.e., it is of wave type E or H.. When you want to compute both E and H incidence, it is convenient to specify E or H as the wave type in the Project dialog and set HE wave type for all expansions in the Expansion dialog. MMP will automatically turn off all expansions related to wave type not specified in the Project dialog. Consequently, to switch from E to H, you need only change the wave type in the Project dialog, while the expansion data remains the same. Note that the symmetry numbers for E and H waves are different so you may need to update these values in the Project dialog!
If you do not specify the amplitude by an integral in the MMP dialog, the amplitude of the incident wave, i.e., the corresponding parameter in the Expansion dialog, is set equal to one. What this means from a physical point of view, depends on the implementation of the corresponding expansion. For plane waves, harmonic expansions, and Rayleigh expansions, an amplitude of one means that the peak value of the E field is equal to one. To inspect the field of the excitation only, open the Field formula dialog by pressing the Field formula… button in the Field dialog. Check the Ignore formula box and set the number of the excitation, i.e., the last expansion in the use expansion box. Close the Field formula dialog and press the Clear all !! button in the Field dialog. The dialog will close and OpenMaXwell will compute the field of the excitation for all grid points.
It is important to note that all expansions - including those defining the excitation - are symmetrized when symmetry planes are specified. For example, a dipole excitation D at (x,y,z) is replaced by a pair of dipoles D and D' at (x,y,z) and (x,-y,z) for obtaining an excitation symmetric with respect to the XZ plane. When the dipole D is on the XZ plane, this symmetrization might not be required - depending on the orientation of the dipole. The current implementation of MMP does not check this. As a consequence, one obtains two identical excitations, which is the same as a single excitation with doubled amplitude. For 2 symmetry planes, one obtains an amplitude factor of 4 and for three symmetry planes a factor of 8. The same holds for plane wave and other excitations.
When MMP has solved a scattering problem, you can view the total field. Open the Field formula dialog by pressing the Field formula… button in the Field dialog. Check the Ignore formula box and set the number in the use expansion box equal to zero. For OpenMaXwell, this means ‘use all expansions’! Close the Field formula dialog and press the Clear all !! button in the Field dialog. The dialog will close and OpenMaXwell will compute the total field for all grid points.
When you would like to inspect the scattered field instead of the total field, set the parameter of the excitation, i.e., of the last expansion in the Expansion dialog equal to zero. Afterwards, you can proceed as for the total field. Instead of this, you can also set the number in the use expansion box of the Field formula dialog equal to 1–N, where N denotes the number of expansions. The easiest way to visualize the scattered field is to check the Ignore excitation box in the Field formula dialog.
Antenna problems are very similar to scattering problems using 2D MMP. Although not common, 2D antennas are generally radiating cylindrical structures such as coaxial wires with a slit in the shield.
The modeling of the antenna feed replaces the modeling of the excitation of scattering problems. For different methods to model antenna feeds, see the OpenMaXwell tutorial.
Due to the radiation losses, the propagation constant of such structures is complex, even if the structure has no Ohmic losses. The computation of the complex propagation constant can be very difficult. Fortunately, a 2D cylindrical model is used in practice for long structures that are not infinite at all. Such structures can even be so short, that the z dependence plays no important role and the field can be considered to be constant along the entire structure. In this case, one can simply set the propagation constant equal to zero.
3D antenna problems can be computed with OpenMaXwell . The procedure is essentially the same as for 2D antenna problems. In this case, the feed may also be a mode of the cable that feeds the antenna. The corresponding expansions can be obtained from a previous 2D MMP computation. These expansions are then included in a connection that is used as the excitation. The modeling of an antenna with its feeding wire is similar to the modeling of an open coupler.
Note that the near-to-far field transformation feature is often useful for antenna problems.
There are three important types of periodic 2D problems: gratings, metamaterials or photonic crystals, and antenna arrays. Gratings are a special kind of scattering problem, whereas antenna arrays are a special kind of antenna problems. For both cases, periodicity in x direction is assumed. For more information, see the corresponding sections of this chapter. Metamaterials or photonic crystals are assumed to fill the entire space. In 2D, they are assumed to be periodic in 2 directions. This leads to rather demanding eigenvalue problems (see below), where omega plays the role of the eigenvalue. The MMP computation of the corresponding band diagrams is possible even for lossy and dispersive photonic crystals, but this requires much experience.
Periodic 3D problems may be periodic in one up to three different directions. Here one can also identify different problem types. Essentially, 3D MMP can handle all of them, but the modeling is very demanding.
Periodic problems have a special, periodic symmetry. In the current MMP implementation, periodic symmetry is incompatible with the symmetries at the xy, xz, and yz planes. Therefore, all symmetry numbers in the Project dialog must be set equal to zero.
Gratings are considered as a scattering problems from a periodic structure. For 2D MMP, the periodic structure consists of identical cells along the x axis.
The MMP procedure for gratings is the following: isolate a single, ‘original’ cell by a fictitious, rectangular boundary.
Check the x box in the Periodic cell data of the Project dialog and specify the length of the original cell in x direction. Make sure that the y box is not checked. Note that the Cx and Cy data must not be specified. Cx will be computed by 2D MMP and Cy is obsolete for gratings.
The incident wave must be a plane wave with a negative y component of the k vector – otherwise it would not correctly hit the grating. This means that you should set the Angle of the plane wave in the range between 0 and -180 degrees.
The original cell has periodic boundaries separating it from its neighboring cells in the +x and -x direction. Only one of them is modeled explicitly, the other one is generated automatically by a displacing the first one in the -x direction. Since the implicit boundary is assumed to be on the y axis, the explicit periodic boundary must consist of straight lines parallel to the y axis at the position x that coincides with the x value in the Periodic cell data group of the Project dialog. In the Boundary dialog, select the X-periodic Boundary condition for the explicit periodic boundaries.
The remaining two sides of the rectangle are usually fictitious. The top side (in the y direction) separates the cell from the domain where the incident wave is defined.
The reflected field in the domain of the incident wave must be modeled by Rayleigh expansions of the reflection type. It is reasonable to put the origin of the Rayleigh expansions somewhere on the fictitious boundary or not too far away from it. Note that you should only use the standard orientation of the Rayleigh expansions, otherwise, the components of the wave vector will be computed incorrectly.
The last side of the rectangle of the original cell separates the cell from the domain where the transmitted field originates from. The transmitted field is also modeled by Rayleigh expansions, but of the transmit type. For these expansions you should put the origin somewhere on the corresponding fictitious boundary, but you should not modify the orientation.
The field inside the original cell is modeled with MMP expansions as with the simple scattering problem. Note that you should not only distribute multipoles along the internal boundaries in the original cell, but also along its fictitious boundaries and its implicit and explicit periodic boundaries. If the cell is almost a square, it can be reasonable to replace some of the multipole expansions with origins outside the cell by a Bessel expansion with its origin in the center of the cell.
Antenna arrays can either be periodic in the x direction or periodic in both the x and y directions.
As for gratings, you separate an original cell by introducing pairs of implicit and explicit periodic boundaries. For the double periodic case, this cell is a rectangle with periodic boundaries in both the x and y directions. The implicit periodic boundaries are assumed to be on the x and y axis, the explicit periodic boundaries must be in the first quadrant of the xy plane.
Since infinite lines cannot be modeled, you have to replace them by sufficiently long finite lines. Alternatively, you can introduce fictitious boundaries and Rayleigh expansions as described for modeling gratings. In this case, the only difference between the model of a periodic antenna array and that of a grating is the excitation and the explicit definition of the complex factor Cx that is not required for gratings.
The excitation of each antenna in the array is identical. The corresponding amplitudes of the excitations of the original cell and its neighbors in the x (and y) direction are different by a complex factor Cx (and Cy). Note that only the excitation in the original cell must be modeled explicitly.
Check the x box in the Periodic cell data of the Project dialog and specify the length of the original cell in the x direction and the complex factor Cx in the corresponding boxes. If the array is bi-periodic, also check the y box and specify the corresponding cell length in the y direction and the complex factor Cy. Note that Cx and Cy must be explicitly specified and x and y should be positively valued.
Periodic boundaries for antenna arrays are the same as for gratings. If the array is bi-periodic, one has not only a boundary in the x direction, but also one in the y direction.
To determine the field inside the original cell, follow the same procedure as outlined for gratings.
Solving eigenvalue problems is quite a difficult task, especially when searching for complex eigenvalues. 2D MMP is designed for various types of eigenvalue problems: 1) guided waves, 2) resonators, 3) metamaterials or photonic crystals, 4) photonic crystal waveguides and other non-cylindrical waveguides with periodic symmetry. Currently, various eigenvalue solvers that are being studied and will be described as soon as more investigations have been completed. In the following, only some simple cases are outlined.
The z,t dependence of guided waves has the form exp(i*(gamma*k0*z-omega*t)). When the real parts of gamma and omega have the same sign, the wave travels in the +z direction, otherwise it travels in the -z direction. Usually, the angular frequency omega is known from the excitation that is assumed to be at one end of the structure in the +z or -z direction. Usually, omega is assumed to be real. In this case, gamma plays the role of the eigenvalue to be computed. On lossy structures, gamma becomes complex. Note that complex eigenvalue problems are not strictly well defined. However, 2D MMP provides routines for computing complex eigenvalues. Since waves traveling in the +z and -z directions have the same eigenvalue gamma, it is sufficient to consider waves traveling in the +z direction and to assume that both the real parts of omega and gamma are positive. Note that OpenMaXwell allows you also to fix the propagation constant and to search for the corresponding frequency as eigenvalue.
In the case of non-cylindrical waveguides with periodic symmetry in x direction, the periodic constant Cx takes over the role of gamma. OpenMaXwell allows you to search for Cx as well.
A 3D resonator consisting of a cylindrical section with an ideal mirror at each end can be modeled in 2D. Its z,t dependence has the form cos(gamma*k0*z-omega*t) or sin(gamma*k0*z-omega*t) with the mirrors located at z=+A and z=-A. The propagation constant gamma is real and can easily be computed from the boundary conditions at the mirrors, i.e., from the length 2*A in the z direction. Since cos(…) and sin(…) are superpositions of the functions exp(+i*…) and exp(-i*…), one has essentially the same z,t dependence as for guided waves. Note that the superposition is automatically done if you specify the appropriate symmetry with respect to the xy plane in the Project dialog.
In the Project dialog, check the boxes for Time-harmonic and for Cylindrical field, as well as the Eigenvalue box. For guided waves, you have to specify the frequency and select Gamma as the eigenvalue in the Eigenvalue search data group. For resonators, you specify the Normalized propagation constant gamma and select Frequency as the eigenvalue to be searched for.
In the complex plane of the eigenvalue (gamma or omega), 2D MMP first performs a rough search either in a rectangular area or along a straight line. Both, the rectangular area and the line are defined by two complex numbers. These are two opposite Corners or the two end points of the line specified in the Corner 1 and Corner 2 boxes.
Searching in a rectangular area is reasonable for complex eigenvalues. The rough search is performed on a regular grid in this area. The number of grid lines in the real and imaginary directions is specified in the Search grid boxes. Note that rough grids, i.e., a few grid lines in both directions reduce the computation time considerably but increase the chance of missing an eigenvalue. During the rough search, an eigenvalue is detected when a special real function f(e) of the eigenvalue has a local minimum in a grid point. Note that no eigenvalue can be detected on the boundary of the search area. There is a clear trade off in determining the size of the search area, it needs to be large enough in order that the eigenvalue is contained in the search are, yet small enough to allow a reasonable computation time. A good guess of the location of the eigenvalue is very helpful but unfortunately defining the search area is not easy and requires experience.
When the second number of the Search grid is zero or one, 2D MMP will search along the line from Corner 1 to Corner 2. This is much less time consuming than searching a rectangle, but it is also less reliable - except when you have a good guess. Of course, you will use this search method when you know that the eigenvalue is real. 2D MMP will start detecting local minims of f(e) along this line for as many points as indicated in the first number of the Search grid.
After the rough search, 2D MMP performs a fine search for improving the accuracy of the eigenvalue. Even if several eigenvalues are detected in the rough search, the fine search will only look for a single eigenvalue at a time. Specify the number of the eigenvalues in the Search Evl. Box. Note that it can be hard to find out which of the eigenvalues corresponds to the wave you are interested in. Again, this requires experience and knowledge of the specific structure. The fine search finishes once, 1) the maximum number of iterations specified in the Max. iterations box is reached, 2) the desired relative Accuracy of the eigenvalue is obtained, i.e., when the search steps become sufficiently small, or 3) the function f(e) is so flat that the desired accuracy cannot be obtained. Note that accuracy means the accuracy of the minimum detection not the accuracy of the result. To verify the quality of the result, you should inspect at least the errors on the boundaries. For checking, what kind of mode has been found, you should also inspect the field pattern.
The search for eigenvalues can be considerably simplified if you can take symmetries and wave types into account. Therefore you should specify the Symmetry numbers and the Wave type in the Project dialog whenever possible. Note that one often uses the notation of EH and HE waves for hybrid modes. For 2D MMP, there is no difference between EH and HE modes, because the corresponding series expansions are identical. To check whether you have found an EH or a HE mode, you must check the field pattern.
The definition of amplitude in eigenvalue problems is very important. Usually, the amplitude is defined as a line integral over the tangential component of the E or H field, or as an integral over the z component of the S field on a rectangular area. Specify the integral in the Integral dialog and select the desired Amplitude definition in the MMP dialog. Although the definition of the amplitude is important, a very rough estimation of the corresponding integral is sufficient in almost all cases. Note that accurate integral evaluations can be very time consuming and therefore should be avoided. Note also that the integral should be in an area where the field of the desired mode is known to be relatively large. If the integral has very small values, it may prevent MMP from finding the eigenvalue.
Note that there is no excitation for eigenvalue problems as there was with the scattering problems. Nonetheless, the last expansion plays a special role. Therefore, it is good to check the last expansion in the Expansion dialog before you proceed. Note that you can visualize the field of the last expansion in the same way that you can visualize the excitation of a scattering problem. Good results are obtained when the last expansion carries an important part of the field in the desired mode. When you know that the mode has a high field in a certain area, make sure that the field of the last expansion is also strong in this area.
Reordering expansions is such a way that a certain column gets at the last position may be cumbersome. For example, you might wish to put the first order E wave ("even" part) of a multipole with orders 0 up to N at the last position. Then, you must split the multipole first into three parts: order 0, order 1, orders 2-N. Then you move the order 1 to the last position. If this first order multipole has general HE wave type, it will have 4 parameters - except when it is located on a symmetry plane (then, it might have 2 or only 1 parameter) - the first one is E wave "even" that should get the last position. Thus, you must split the first order multipole once more in four parts (E wave "even" and "odd", and H wave "even" and "odd"). This is rather cumbersome. Instead, you may specify Last column = 3 in the MMP dialog when the last expansion is a first order multipole with 4 parameters because you wish to move its first column to the last pasition, i.e., exchange the coumn M with M-3, when M is the number of the last column. Of course, you may do this directly with the initial multipole with orders 0 up to N at the last position. Assume that it has K parameters. Last column = K-1 would move the 0 order E wave term to the last position. Since there are only 2 zero order terms, Last column = K-3 should move the first order Ewave ("even") term to the last position. Although this simplifies pushing a desired term to the last position, it is still not easy because the ordering of terms in a multipole expansion depends on the wave type, location of the multipole (symmetry planes!), and the Filter settings in the Expansion dialog. Thus: Be careful!
Eigenvalue problems cannot be solved with iterative matrix solvers like Conjugate Gradients (CG). Since CG is also involved in the PET matrix solver, only QR, GUR and GUT Matrix solvers can be used. Note that QR is more memory consuming, but much faster than GUT. Therefore, select QR in the MMP dialog except when you don't have enough memory.
When you want to obtain the frequency dependence of the propagation constant of a certain guided wave, MMP will first have to search for the eigenvalue of the first frequency. For doing this, it must perform a rough search followed by a fine search. Thus, both, the Rough and Fine boxes in the MMP dialog should be checked. When the eigenvalue has been found for the first frequency and if the second frequency is not very different, you then have a good guess for the eigenvalue for the second frequency. Therefore, the rough search can now be omitted. When the eigenvalue is known for several frequencies, an even better estimate of the searched eigenvalue can be obtained by an extrapolation, i.e., by the Parameter Estimation Technique (PET). To apply this technique, check the PET box in the Eigen search group. Note that the PET can fail if the frequency steps are too big. Otherwise, it can considerable reduce the computation time. Problems occur when you trace the frequency downwards below the cutoff frequency of the considered mode. In this case, the fine search may fail or it may switch to another mode.
Before you run MMP by pressing the Solve !! or Sol+err !! button in the MMP dialog, specify the matching point parameters as for any other MMP problem. As soon as MMP starts the fine search, it will ask you for a file name where it can save the rough search data and when the fine search starts, it will ask you for a file name where it can save the fine search data, provided that you have checked the Save search data box in the Project dialog. When you press Cancel in the file name dialog, no search data file is opened and the search data is not saved.
Saving the search data, allows you the option of displaying the search data in order to visualize the search process once MMP has finished its eigenvalue search. Note that the rough search data is saved at a file similar in structure to a Field file for rectangular search areas. Otherwise, the rough search data is saved in a Function file. The fine search data is always saved to Function files. You can inspect these files with any ASCII editor. To obtain a graphic representation, read them with Open field… or Open function… in the File menu and use the graphics features of OpenMaXwell to obtain some nice pictures.
There are several methods for obtaining the coupling coefficients of guided waves. Assume that you have two waveguide structures S1 and S2. On S1 you have a mode M1 with a propagation constant gamma1 and on S2 you have a mode M2 with the propagation constant gamma2. When the structures S1 and S2 are not entirely separated, you obtain a new structure S12 with modes that are different from M1 and M2. Instead, there are two so called supermodes M1’ and M2’ with propagation constants gamma1’ and gamma2’ respectively. The coupling coefficients are obtained from the differences between the propagation constants. Since MMP can compute all of the propagation constants mentioned above, you can also directly obtain the coupling coefficients. Note that MMP usually works with normalized propagation constants (with respect to the free space wave number k0). For the coupling coefficients, the differences gam1’-gam1=(gamma1’-gamma1)*k0 and gam2’-gam2=(gamma2’-gamma2)*k0 are required.
The conjunction of several 1D waveguides is a 2D area. When you separate these areas from the 1D waveguides by fictitious boundaries, you can first compute the modes in all waveguides with the MMP eigenvalue solver. Afterwards, you can model the field in each waveguide as a superposition of its modes and the field in the 2D area with MMP expansions exactly as you would for a simple scattering problem. The incident wave in one of the waveguides plays the role of the excitation of this scattering problem, all other waves in the waveguide belong to the scattered field. Note that there are not only guided waves, but also evanescent waves in the waveguides. Since evanescent modes decay exponentially, these modes can be omitted when the fictitious boundaries are set inside the waveguides, sufficiently far away from the 2D area.
As well as simple slab waveguides, more interesting rectangular waveguides can be modeled as 1D waveguides with the MMP solver. To do this, the cross-section of the waveguide is oriented in such a way that one side points in the z direction. By separating the z dependence, one obtains for all waveguide modes a z,t dependence of the form cos(gamma*k0*z-omega*t) or sin(gamma*k0*z-omega*t) when the walls of the waveguide are at the locations z=+A and z=-A. The propagation constant gamma is real and can be easily computed from the boundary conditions at the mirrors, i.e., from the length 2*A in the z direction. Since cos(…) and sin(…) are superpositions of the functions exp(+i*…) and exp(-i*…), one has essentially the same z,t dependence as for usual 2D problems. Note that the superposition is automatically done if you specify the appropriate symmetry with respect to the xy plane in the Project dialog. When the xy planes at the positions z=+A and z=-A are perfectly conducting boundaries, one can separate the z dependence of the entire structure as indicated above.

Note that the PEC walls at z=+A and z=-A are parallel to the xy plane, but the sides of these walls can have an arbitrary direction in the xy plane.
OpenMaXwell also can handle 3D coupling models. Although such models are much more demanding than 2D models, the procedure is essentially the same.
Connections are linear combinations of MMP expansions. Connections are helpful for splitting complex problems into smaller parts, especially when the interaction of the different parts is weak.
A connection is defined in the Expansion dialog, like all other MMP expansions. It is characterized by its ID number, a single parameter, and its location. Note that a connection can be a multi-domain expansion. Therefore, its Domain number is ignored and must not be explicitly specified in the Expansion dialog. When the 2D connection is located at the origin xo=0, yo=0 and when its orientation Angle is 0, all expansions contained in the connection remain at their original location. Otherwise, the expansions are rotated around the origin (0,0) of the xy plane with the Angle of the connection and displaced by the vector (xo,yo). Similarly, all expansions of a 3D connection remain at the original positions when to local coordinate system of the 3D connection has the origin at (0,0,0) and the x and y direction vectors (1,0,0) and (0,1,0) respectively. For multi-parameter connections, also the Max. order, the Max. number of Parameters, the Basis type, and the Fourier factor must be specified. For standard connections, Max. order should be set equal to 0.
A connection can contain any other connection, but it cannot contain itself, either directly or indirectly. To avoid the latter, OpenMaXwell allows only connections with a higher connection flag to be contained in a connection.
Some boundaries as well as MMP expansions, can be contained in a connection. The Conn. box in the Boundary dialog and the In connection box of the Expansion dialog specify to which of the connections a boundary or expansion belongs to. Note that each of the boundaries and expansions may belong to one or to several connections. When the corresponding flag is positive, it belongs to the connection with the number equal to the flag. When the flag is negative, it belongs to all connections up to the connection with the number equal to the absolute value of the flag. When the flag is zero, it belongs to all connections.
The rectangular MMP matrix for the connection defined in the Connect. box of the MMP dialog will contain all MMP expansions contained in the connection in its columns. The rows contain all the boundary conditions specified by the matching points along the connections member boundaries.
MMP can compute the parameters of all expansions contained in a connection if you have attached boundaries to the connection. When you press the Solve !! button in the MMP dialog after having specified the connection number in the Connect. box. MMP will setup the matrix as described above and solve the corresponding matrix equation. i.e., the parameters will be computed to minimize the mismatching along the boundaries attached to the connection.
When you compute the parameters of a connection that contains another connection, the parameters of the contained connection must be known. Therefore, you should first compute the parameters of the contained connection, which must have a higher connection number. When the connections are nested, start with the highest number connection that does not contain any other connection, and continue with the computation of the connections with lower numbers afterwards.
A standard connection contains N expansion with fixed parameters or amplitudes and it has a single parameter. Its field is calculated by a linear superposition of all of the N expansions. In principle, this is very similar to the computation of Line multipoles, Ring multipoles, and Spiral multipoles, which consist of sets of N multipole expansions, but Line multipoles, Ring multipoles, and Spiral multipoles contain only 3D multipoles distributed along a line, ring, or spiral (which are implicitly defined and must not be specified by the user). Furthermore, the amplitudes of the N multipole expansions are computed from Fourier or Legendre basis functions evaluated along the line, ring, or spiral. These functions may be considered as weights of the N multipoles (in principle als other types of expansions may be included in the connection). Since several basis function orders may be used, one obtains several parameters for Line multipoles, Ring multipoles, and Spiral multipoles. This concept may also be applied to connections. I.e., the N expansions in a connection may be weighted with different orders of Fourier or Legendre term. Legendre basis is used when Basis type<0 (specified as integer parameter of the connection in the Expansion dialog). Otherwise, Fourier basis is used. In case of Fourier terms, the Filter even selects cos and Filter odd selects sin terms.
Since the N expansions in a connection are much more general that the N multipoles in a Line, Ring, or Spiral multipole, the calculation of the weights is not clear at all. In the current implementation, it is assumed that all N expansions have the same type (usually multipoles), the same number of parameters, and are arranged uniformly along a curved line. Then, a variable s(K) defines the "location" of the expansion number K and the corresponding weights are computed from Fourier or Legendre terms with argument kOrd*2*Pi*s and kOrd*s respectively, where kOrd is the order of the weighting function. The computation of s(K) depends on how the multipoles are arranged. For example, the first multipole may be located at the start point of a line and the last one ant the end point of the line. Then, the distance between neighbor multipoles is assumed to be d=length/(N-1) and one has s(K)=(K-1)*d. Instead, one may move the first and last points away from theend points and set d=length/N and s(K)=d/2+(K-1)*d. The first definition is used when the Basis type has an odd number. Otherwise, the second definition is used.
Primitive integrations along a line with equally spaced sample points are a Riemann sum or trapezoidal integration. Both sum up all values but in the case of the trapezoidal integration, the first and last values are multiplied by 1/2. In the current implementation, trapezoidal integration is used when modulo(abs(Basis type),10)>2. Otherwise a Riemann sum is evaluated.
From this, multi-parameter connections are obtained. In the Expansion dialog, the integer parameters Max. order and Basis type specify the corresponding maximum order and weighting type. The number of parameters of a multi-parameter connection depends on its type. Since Legendre and cos type functions start with order 0, they obtain Max. order+1 parameters, whereas sin obtains Max. order parameters, i.e., sin and cos together obtain 2*Max. order+1.
Note that the real parameter Fourier factor plays a similar role as for Line, Ring, or Spiral multipoles, i.e., s is multiplied by this factor before the basis functions are computed. Fourier factor =1 is appropriate for a full circle.
When using a set of multipoles contained in a connection, one may wish to have more than one parameter for each multipole. Then, one might wish to apply only one of the parameters Np while constructing the connection. This is done, when Basis type>9 is selected. Then, Np=Basis type/10 is set. Note that the multipoles distributed along a line should be rotated in such a way that all have the same orientation with respect to the line - as in the case of Line, Ring, and Spiral multipoles. This is not always easy. Furthermore, some of the multipole orders or components may essentially cancel out during the integration. Line, Ring, and Spiral multipoles are implemented in such a way that these components are omitted, which is not possible for multi-parameter connections because of the generality of this feature. Therefore, the user must make sure that the field of such a connection is not numerically very small (almost zero).
Multi-parameter connections are "under construction", i.e., they should be applied with care.
Surface Impedance Boundary Conditions (SIBC) allow efficient modeling of conductors with a sufficiently strong skin effect. The direct modeling of such conductors with an appropriate MMP expansions for the field inside the conductor and with usual boundary conditions on the surface of the conductor is possible, but numerically very inefficient. First of all, the wavelength inside a good conductor is short and the field varies rapidly. Therefore, a high matching point density on the boundary and a large number of multipole expansions in the close vicinity of the boundary are required for accurately modeling the field. Note that the field outside the conductor can vary much less rapidly. Therefore, fewer matching points and a simpler MMP expansions are required for the exterior field. The distance between matching points can even be much greater than the wavelength inside the conductor.
When one is not interested in the field in the conductor, one can simply 1) omit modeling it, 2) use the matching points and expansions required for the exterior field only, and 3) replace the six usual boundary conditions by two SIBC conditions. Note that the material properties of the conductor are not used for modeling the interior field, but they are contained in the SIBC. Therefore, the conductor obtains a domain number and the material properties of this domain must be specified.
The convention for orienting a SIBC boundary specifies that the conductor is on the left hand side. of the SIBC boundary.
It has been mentioned that the wavelength inside the conductor is very short and that the distance between the matching points on its boundary required for the modeling the exterior field can be much larger than the wavelength inside the conductor. Therefore, you should set the Min. points/wavelength parameter in the MMP dialog equal to zero. Otherwise, you risk OpenMaXwell generating a huge number of matching points.
The Parameter Estimation Technique (PET) uses the results of previous computations to estimate the parameters for the next computation to be performed. In the 2D MMP version, two different PETs have been implemented. One estimates the parameters of the MMP expansions and the other estimates the eigenvalues of the MMP eigenvalue solver. Note that only one type of PET can be used at a time.
During a sequence of problems that is characterized by the same number of parameters, one can store the parameter sets P1, P2, … PN of the N last results. With an appropriate set of basis functions B1, B2, … BN one can compute series expansions for all of the parameters. These series expansions can be used to extrapolate the parameter set PN+1 of the problem.
The number N-1 is called the PET order, where the number of basis functions and the number of stored parameter sets is equal to N. The maximum order is 9, i.e., N<11. When one starts computing a series of problems, no previous parameter sets are known. Therefore, the first problem must be solved with ‘brute force’. For solving the second problem, only one previous parameter set is available, i.e., only a zero order PET may be applied and so on. Although higher orders may appear to be more promising, the quality of the results depends very much on the PET basis.
The default PET series is the power series. This basis is simple, but usually good results are only obtained with low orders. The second order power series PET can be worse than the first order.
For all problems, except eigenvalue problems, the parameter vector can be estimated as soon as some previous problems have been solved, provided that the parameter vectors of the previous problems or of equal size. Useful estimates are obtained when the previous problems are sufficiently similar. In order to take advantage of the estimate, an iterative matrix solver must be used. CG is the only iterative matrix solver available in this MMP implementation. Note that CG can have many more problems with ill-conditioned MMP matrices than GUT and GUR. When CG fails, OpenMaXwell will automatically run GUR.
The CG solver cannot be used for eigenvalue problems because it does not allow one to compute the function f(e) that is characteristic of the eigenvalues. Although a direct matrix is required for eigenvalue problems, one can save considerable computation time when one computes a set of problems with a sufficiently slowly varying eigenvalue. In this case, the eigenvalue can be estimated by the PET from the previous eigenvalue computations. A good estimate reduces the number of iterations required for finding the minimum of the function f(e), i.e., for finding the current eigenvalue.
Validating your results is very important for a number of reasons. No Maxwell solver is perfect. Moreover, users sometimes make mistakes in the modeling of a problem. The risk of errors is greatly increased with very flexible programs which have a large range of applications. OpenMaXwell recognizes this and offers several possibilities for validating results.
MMP evaluates the mismatching of the field for all matching points along the boundary when you press the Error !! button or the Solve+err !! button in the MMP dialog. The components of the errors and of the field along the boundaries will be compressed into three real values: 1) absolute error, 2) field strength, 3) relative error in percent. This data is displayed in the Info window.
When you want to save the error data to a Function file, press the Save err… button in the MMP dialog. You can read this file with Open function… from the File menu.
When you let OpenMaXwell draw all boundaries, a line perpendicular to the boundary will be drawn through each matching point. The length of the line is proportional to the mismatch of the corresponding point. If the Error scaling factor in the MMP dialog is positive, the absolute error is displayed. If it is negative, the relative error is displayed. In the first case, the line length is equal to the Error scaling factor for the average error. In the second case, the line length is equal to the absolute value of the Error scaling factor for 100% error. To turn the error representation off, set the Error scaling factor equal to zero.
Note that the mismatching on the boundary between two neighbor matching points is very similar to the mismatching at the matching points, provided that the overdetermination of the MMP matrix is sufficiently high (overdetermination 2 is sufficient in most cases) and provided that the matching point density is not too low. However, when you want to check the mismatching between the matching points, you can proceed as follows after having solved an MMP problem: 1) Increase the matching point density by adapting the parameters in the Matching point definition group of the MMP dialog. 2) Press the Error !! button. OpenMaXwell will now compute the errors on the new set of matching points. 3) Inspect the Info window, press the Save err… button to save the new error distribution on a file, or draw the boundaries to visualize the errors.
For the visualization of the errors in 3D models it is often more convenient to use the grid representation of 3D objects instead of the matching point representation. Note that the grid points usually do not coincide with the matching points. However, 3D visualizations can be done in standard graphics windows. Since some parts of a 3D object are usually hidden behind something else, it is much more convenient to perform such visualizations in the OpenGL graphics window. In this window one can easily move and rotate the view point, zoom in or out, etc.
The computation of the field near or on the boundaries is quite critical. If the field looks reasonable near all boundaries, it is usually very accurate further away. By looking at the fields in the near fields often the user is able to detect mistakes made in the modeling. For example, a typical modeling error can occur in so-called triple points, where three boundaries are ending.

Figure: An inaccurate modeling of the boundaries near a triple point (left hand side) causes a wrong detection of the domain numbers (domain numbers 3 and 2 on top). This mistake can easily be detected when the field is visualized.
Note that MMP computes the parameters of the MMP expansions. The resulting expansion of the field can be evaluated anywhere, but in order to display the fields, they must be computed on a grid. To obtain nice pictures, it is important that a sufficiently fine grid is defined in the Field dialog. Do not forget to compute the field in all grid points after having obtained your MMP solution. For doing this, press the Clear all !! button in the Field dialog.
For 3D models, it is often convenient to visualize the field on the surface of 3D objects. This can be done in standard graphics windows. Since some parts of a 3D object are usually hidden behind something else, it is much more convenient to perform such visualizations in the OpenGL graphics window. In this window one can easily move and rotate the view point, zoom in or out, etc.
When you are not sure about the accuracy of your MMP results, you can save them along with the resulting field. Then you can modify the MMP model by 1) increasing the number of the parameters of some MMP expansions in the Expansion dialog, 2) changing the Matching point definition parameter in the MMP dialog, 3) moving some of the expansions to a slightly different location, 4) adding or deleting some of the expansions, etc. When you have solved the new model, you can compare the resulting field with the field of the previous model and you can ask OpenMaXwell to evaluate the differences between the two fields by pressing the Compute errors… button of the Field dialog.
Of course, you can also compare MMP results with results obtained by other methods. If you have compared the reference field obtained with other OpenMaXwell tools, you can save the MMP and the reference fields and let OpenMaXwell evaluate the differences between the two fields by pressing the Compute errors… button of the Field dialog. Note that this can only be done when both fields have been computed on the same grid and when the fields have the same components. Since MMP fields can be evaluated anywhere, this should not be difficult.
The comparison with fields obtained from other packages is more difficult. Usually, this requires writing an interface program that converts the output data of the external code into the form of OpenMaXwell Field files.
Responsible for this web page: Ch. Hafner, Computational Optics Group, IEF, ETH, 8092 Zurich, Switzerland
Last update 03.06.2015