Carl Milsted, Jr

Location: somewhere in NC

The guy who coded up this social network.

Current Post

Chapter 2 of my Dissertation

Oct 24 08:21:39

2023 Notes: Another exercise in converting troff into QTML. I used vim to replace dollar signs to .eqni tags for the inline equations. When an inline equation takes two lines of source, this method swapped opening and closing tags. I manually cleaned things up, but I probably missed a couple, and likely messed up some paragraph breaks. Chapter 1, by the way, is here.


The Hertz-Vector Equations

The six components of the E and B fields are redundant as regards the underlying mathematics of the electromagnetic field. Nisbet [1] has shown that with the use of the Hertz vectors and their associated gauge transformations it is possible to describe the electromagnetic field in terms of only two components of the six possible Hertz vector components, even in the source regions. In a subsequent paper [2] he develops a similar approach for fields in inhomogeneous, anisotropic media. A literature search finds that little note has been taken of these very fundamental techniques which have the potential of simplifying many problems in electrodynamics. In the hope of popularizing this knowledge, the Hertz vector formulation is here re-derived for the isotropic case with some steps and commentary added, before we state the specific gauge condition to be used for this research. We start with Maxwell's equations in Gaussian cgs units:

×E  +  1ctB  =  0,
·B  =  0,
×H    1ctD  =  4πJ,
·D  =  4πρ,

and with the constitutive relations

D  =  εE,          B  =  μH.

Note that in this formulation, that these constitutive relations only take care of the linear polarization. The nonlinear polarization is contained in ρ and J . We have four sets of coupled three-component vector partial differential equations to solve for the six scalar components of the electric and magnetic fields. Since the fields are not independent, we can reduce the number of components to be solved for by describing the fields in terms of potentials. For example, the vector and scalar potentials can be defined inside an inhomogeneous medium in the same fashion as in free space:

E  =      φ    1ctA


B  =  ×A.

These identically satisfy (2.1) and (2.2). We now have only four components to find and two vector equations for them to satisfy. Unfortunately, the two remaining Maxwell equations lead to the coupled equations:

×1μ×A  +  εctφ  +  εc2ttA  =  4πJ,
    ·εφ    1c·εtA  =  4πρ.

The main advantage of potentials is that they are not unique. If we set

φ  =  φ0  +  1ctχ,
A  =  A0  +  χ,

E and B are unaffected. This allows various gauge transformations to be used to simplify the equations for a particular problem. For example, the gauge transformations allow us to set

1ctφ  +  ·εA  =  0.

This separates the scalar and vector equations similarly to the Lorentz equation in free space. The equations of motion are now

×(1μ×A)  +  εc2ttA    ε(·εA)  =  4πJ,
    ·(εφ)  +  1c2ttφ  =  4πρ.

If the permittivity or permeability varies in space, however, the equations for the components of A are coupled. Also, the mixed second partial derivatives with respect to z and the transverse coordinates rule out an explicit eigenvalue-eigenfunction formulation for finding the bound modes. One important idea behind using the Hertz vector formulation is that it allows a much larger selection of gauge transformations to choose from thanA and φ . This is accomplished by expressing the source terms as well as the fields in terms of potentials. To start with, we define stream potentialsQe and Qm such that

·Qe  =      ρ,


1ctQe  +  ×(1μQm)  =  J.

These potentials fit in Maxwell's equations in the same positions as the polarization and magnetization densities. If there are no free charges, they could well be those densities. Even without free charges, Qe and Qm could differ from P and M

because we allow the following gauge transformations which leave the physical sources ρ and J unaffected:

Qe  =  Qe0  +  ×1μG,
Qm  =  Qm0    1ctG    μg.

Next, we define stream potentials Re and Rm for the magnetic monopole charge and current densities. Of course there are no such (known) things as magnetic monopoles so the right-hand sides of our definitions are set to zero:

·Rm  =  0,


    1ctRm  +  ×1εRe  =  0    .

The (un)physical sources are invariant when the following gauge transformations are made.

Re  =  Re0    1ctL    εl,
Rm  =  Rm0    ×1εL    .

When these two potentials are used, φ and A are must become the potentials for E    4πRe and B  +  4πRm . That is,

×A  =  B  +  4πRm  ,    φ    1ctA  =  E    4π1εRe    .

The Hertz vectors are potentials which use these stream potentials instead of their derivatives as their source terms. This is done by defining Πe and Πm through the equations:

φ  =      ·εΠe,
A  =  1ctΠe  +  1ε×Πm.

This choice automatically satisfies our variant of the Lorentz condition. To find the physical fields in terms of the Hertz vectors, we plug into the definitions of the vector and scalar potentials:


This can be simplified by letting l  =  14π·εΠe in the gauge transformation for Re . This gives

E  =  4πεRe    1c2ttΠe    1cε×tΠm  .

And for B :

B  =      4πRm  +  ×A  =      4πRm  +  ×1ctΠe  +  ×1ε×Πm    .

To obtain equations of motion for the Hertz vectors, we first plug into (2.4):

·D  =  ·εE  =  ·(4πRe    εc2ttΠe    ×1ctΠm)  =      4π·Qe.

We can remove the divergence at the price of introducing a curl:

εc2ttΠe  =  4π(Qe  +  Re)  +  ×T,

where T is an as yet arbitrary vector. From (2.3) we get

×Bμ    εctE  =  4πctQe  +  4π×1μQm

Substituting our relation for εc2ttΠe we have:


To get rid of Πe , we let T  =  1μ×Πe and cancel terms to get

×1μ(    4πRm  +  ×1ε×Πm  +  μc2ttΠm)  =  4π×1μQm,


μc2ttΠm  +  ×1ε×Πm  =  4π(Qm  +  Rm),

and the equation for Πe becomes

εc2ttΠe    ×1μ×Πe  =  4π(Qe  +  Re).

We could have μ times the gradient of an arbitrary scalar tacked to the end of this equation, but this is taken into account by the available gauge transformation of Qm . Finally, we can use these equations of motion to get symmetric equations for D and H :


The next step is to find the available gauge transformations for the Hertz vectors. The first two gauge transformations follow easily from the definition of the Hertz vectors in terms of the scalar and vector potentials (2.23,2.24). The scalar potential is obviously unaffected when Πe undergoes the transformation Πe=Πe0+ε1×Γ . In order to keep A constant we must make the transformation Πm=Πm01ctΓ . Setting Πe0,Qe0, and Re0 to zero and substituting into (2.36) gives

1c2tt×Γ+×1μ×1ε×Γ  =  4π(×1μG1ctLεl).

Since this must hold true even without the introduction of stream potentials for magnetic monopoles, and L and l transform the monopole potentials, we set them to zero. Thus G must satisfy:

4πG  =  μc2ttΓ+×1ε×Γ    μξ.

The last term is the as yet arbitrary gradient that is allowed when a curl is set to zero. The remaining obvious gauge transformation is that of adding the gradient of a scalar to Πm which leaves the vector potential

A unaffected (Πm=Πm0γ ). Applying both transformations, setting the monopole stream potentials to zero and plugging into the equation of motion for Πm gives

1c2tt(μctΓμγ)    ×1ε×Γ  =  4π1ctG4πμg.

Substitute back in the equation for G :

1c2ttμγ  =  1ctμξ4πμg.



The gauge functions for the Hertz vectors resulting from the gauge transformations for the magnetic monopole potentials are less obvious by themselves since both the Hertz vector gauge functions and the magnetic monopole gauge functions appear in the redefinition of A and φ (2.23). However, from the abundance of symmetries encountered so far (in E and H , B and D , Qe and RmQm and Re , and Πe and Πm ), it is possible to guess the Hertz vector gauge transformations resulting from the transformations for Re and Rm from those resulting from the transformations of Qe and Qm . So here is the complete set of available gauge transformations; the remaining verifications, if desired, are left to the reader:

Πe  =  Πe0  +  1ε×Γ    1ctΛ    λ,
Πm  =  Πm0    1ctΓ    γ    1μ×Λ,

if the gauge functions are related by the following relations:

4πg  =  1c2ttγ  +  1ctξ,
4πl  =  1c2ttλ  +  1ctζ,
4πG  =  μ1c2ttΓ  +  ×1ε×Γ    μξ,
4πL  =  ε1c2ttΛ  +  ×1μ×Λ    εξ,

where ξ and ζ are any arbitrary functions. Nisbet claims that this set of gauge transformations allows us to set all but any two components to zero. In actual practice this is accomplished by setting all but two of the Hertz vector components to zero at a particular time. Then the stream potentials are transformed in order to make the time derivatives of the zeroed-out components equal to zero in the equations of motion for the Hertz vectors. Nisbet and later Mohsen [2-4] then describe various special cases in which this formalism produces simplified equations. The emphasis is on situations in which one can obtain two uncoupled scalar partial differential equations. Such situations include materials which vary in only one direction, spherically symmetric media, and materials which vary in two dimensions while the field does not vary in the third dimension. Uncoupled scalar equations can be obtained by setting all but one component each of Πe and

Πm to be zero. For media which vary in the z direction this is the

z component. For spherically symmetric media this is the r direction. For media which vary in x and y , while the field does not vary in z , this is the z component. The original research begins with the choice of gauges. For the case of guided optical devices it is desirable to have equations of motion which have no cross derivatives with respect to the propagation direction and either of the transverse directions. Such equations allow the solution of bound modes to be an explicit eigenvalue equation in which the propagation constant is proportional to the eigenvalues of a transverse operator. Also, such a formulation simplifies the task of formulating a vector beam propagation method since the task (for no nonlinearity) is reduced to approximating the exponential of a transverse operator. This is, of course, the case for the scalar beam propagation method. For the purposes of this work we represent all non-linear phenomena through the polarization density P . Thus, we can set Qe0  =  P,  Qm0  =  Re0  =  Rm0  =  0 . The equations of motion for the Hertz vectors become

εc2ttΠe  +  ×1μ×Πe  =  4π(P  +  ×1μG    1ctL    εl),
μc2ttΠm  +  ×1ε×Πm  =  4π(    1ctG    μg    ×1εL)    .

For a waveguide device pointing in the z direction, we can get the desired form by setting Πex and Πey to be the non-zero components. We can keep Πm zero if we set

G  =      ×1εa    μb
g  =      1ctb
L  =  1cta    .

Here a and b are arbitrary. As it turns out, the trivial choice of setting G,  g, and L to be zero is quite sufficient. This leaves l as a free parameter to make Πez to be zero. Expanding what is left into components gives:

      εc2ttΠex  +  y1μ(xΠey    yΠex)    z1μ(zΠex    xΠez)  =  4πPx    4πεxl,
      εc2ttΠey  +  z1μ(yΠez    zΠey)    x1μ(xΠey    yΠex)  =  4πPy    4πεyl,
      εc2ttΠez  +  x1μ(zΠex    xΠez)    y1μ(yΠez    zΠey)  =  4πPz    4πεzl  .

Setting Πez zero in the last equation leaves

x1μzΠex  +  y1μzΠey  =  4πPz    4πεzl    .

For a waveguide in the z direction, ε and μ are not dependent on z . So we can commute them with the z operator to get

l  =  l1    14πε(x1μΠex  +  y1μΠey),


zl1  =  Pzε  .

Substituting this value of l into (49) and (50) provides our equations of motion for the remaining components.

  =  4πPx4πεxl1+εx1ε(x1μΠex+y1μΠey),
  =  4πPy4πεyl1+εy1ε(x1μΠex+y1μΠey).

We can write this as

μεc2ttΠ    zzΠ  =  WΠ  +  4πq,


Π  =  [Πex  Πey]  ,  q  =  [μPx    μεxl1        μPy    μεyl1],


W  =  [μεx1εx1μ    +    μy1μy                    μx1μy    +    μεy1εx1μ  |    |    |  μεx1εy1μ    μy1μx                μx1μx  +  μεy1εy1μ].

Note that when ε and μ are constant in space, W becomes T2 . In the case where μ is constant we can use the fact that

εx1ε  =  x    (xε)ε to get

W  =  [xx  +  yy    (xε)εx                    (yε)εx  |    |    |      (xε)εy                xx  +  yy    (yε)εy].

Throughout the rest of this work, it will be assumed that μ is constant. Under this set of conditions, it is now useful to expand the equation for getting the electric field from the Hertz vectors.

E  =  4πεRe    1c2ttΠn  =  4πε(    εl)    1c2ttΠe.

We can substitute in the relations for l and write the result in matrix form.

        [Ex    Ey    Ez]  =  1με[(x    (xε)ε)x          (y    (yε)ε)x          xz|  |  |(x    (xε)ε)y          (y    (yε)ε)y          yz][Πx    Πy]    1c2tt[Πx    Πy]    4π[xl1    yl1    Pzε].

It turns out that by ignoring the terms involving the derivatives of

ε, we almost regain the scalar approximation. To show this, we first expand each component of the electric field given this approximation:

Ex  =  1με(xxΠx  +  xyΠy)    1c2ttΠx    4πxl1,
Ey  =  1με(xyΠx  +  yyΠy)    1c2ttΠy    4πyl1,
Ez  =  1με(zxΠx  +  zyΠy)4πPzε.

Next we take the divergence of this approximation to the electric field making the further approximation of once again commuting the transverse derivatives with 1/ε :

      ·E    1με(xxxΠx  +  xxyΠy)    1c2ttxΠx    4πxxl1
  +  1με(yyxΠx  +  yyyΠy)    1c2ttyΠy    4πyyl1
  +  1με(zzxΠx  +  zzyΠy)    4πzPzε

To take care of the z derivatives of the Hertz field we make use of the equation of motion once again making the approximation that the transverse derivatives commute with 1/ε :

        1μεzzxΠx    1με(xx    yy    μεω2c2)xΠx    4πεxΠx  +  4πxxl1.
        1μεzzyΠy    1με(xx    yy  +  μεω2c2)yΠy    4πεyΠy  +  4πyyl1.

Substituting these back in makes almost everything cancel:

·E    4πε·P.

So we have made the scalar approximation after commuting derivatives as regards ε , but not regarding the polarization. The propagation code is fitted with a flag ISCALAR to make this a runtime option. If the divergence of the nonlinear polarization is sufficiently small this should give results close to the scalar approximation. For comparison with a true scalar approximation, a separate routine was written propagating the electric field directly with the scalar and paraxial approximations using the same numerical methods as were used for the Hertz vector program.

The Equations for Beam Propagation

The numerical effort of solving these equations is radically reduced when it can be assumed that the beam is traveling in one direction and that its frequency components are tightly centered around a carrier frequency

ω. The first assumption allows the possibility of taking z

steps larger than the wavelength. The second allows time steps longer than its shortest period. To make use of the conditions we write

Π  =  ReΠ~exp(iβ0z    iωt),  q  =  Req~exp(iβ0z    iωt) . Then the equations of motion become

μεc2(ttΠ~    2iωtΠ~    ω2Π~)  +  β02Π~    2iβ0zΠ~    zzΠ~  =  WΠ~  +  4πq~.

For a beam with tightly centered frequency components, the amplitude varies slowly compared to oscillation at the carrier frequency so |ttΠ~||ωtΠ~| . For the paraxial approximation a similar assumption is made about the rate of variation of the envelope function compared to the propagation constant;

|zzΠ~||β0zΠ~|. In free space this is equivalent to stating that all the light rays of interest are nearly parallel to the z axis. Several attempts were made to correct the paraxial approximation by treating the zzΠ~ term as a small perturbation, but none of the methods tried proved to be stable. Another possibility is to follow optical cycles, but is too computationally intensive. Some versions of the Beam-Propagation method correct the paraxial approximation by exponentiating the square root of the transverse operator. This method depends on being able to represent sources in terms of a varying ε . This is not so easily done for the Hertz vectors since the relation between the propagated field and the polarization is complicated by the conversion from

Π~ to E~ . Thus, even though there is question as to whether the paraxial or the scalar approximation breaks down first, the paraxial approximation is used in this work. As a later chapter will show, this still leads to interesting results. Let us split the dielectric permittivity into constant and space-varying parts; i.e., ε=ε0+ε1 , where ε0 is constant. ε1 can be much smaller than ε0 and still produce large results. The equations become:


Two very large terms cancel if we set

β0  =  ωμε0/c which makes the above equation

  =      2iμε0ωc2tΠ~    2iωμε0czΠ~  .

These two terms can be consolidated if we switch to a frame of reference which moves at the speed of a carrier frequency beam through an

ε0 dielectric. To do so we go to a "retarded time"t  =  t    ε0μc so that

zΠ~  =  zΠ~    ε0μctΠ~  ,  tΠ~  =  tΠ~.

The equations of motion are reduced to

        zΠ~  =  ic2ωμε0(W  +  με1ω2c2)Π~    cε1μωε0tΠ~  +  ic4π2ωμε0q~    ic2ωμε0zzΠ.

For the case of a constant dielectric medium the time derivative disappears entirely, with the possible exception of the computation of the nonlinear source terms. This allows each time slice to be propagated separately, a tremendous saving. Fortunately, this can still be done as long as the time variation is sufficiently slow. ε1 has its importance in that it is multiplied by ω/c in its first appearance. At optical and infrared frequencies this is a large number. The time derivative term is divided by this large number as well as multiplied by the usually small ε1 so there are many cases of interest where this term can be safely dropped. However, this research is restricted to cases of no time variation of the envelope as storing three dimensions of field is prohibitive in terms of computer memory. Also, the effects of vector coupling are more readily studied, at first, by simplifying other conditions.

The Equations for Guided Modes

One very useful aspect of this Hertz vector formulation is the simplification of the equation for the guided modes in a dielectric waveguide with a graded index of refraction. All that needs to be done is to remove the nonlinear polarization from the previous analysis and set the envelope function to be constant in time and the direction of propagation. That is, let

Π  =  ReΠn(x,y)exp(iβnziωt) The equation of motion becomes

(W  +  με1ω2c2)Πn  =  (βn2    με0ω2c2)Πn.

The propagation constant for each mode is directly related to the eigenvalues λn of the operator on the left.

βn  =  ±(λn  +  με0ω2c2)12.

As previously advertised, here we have an explicit eigenvalue equation for finding the bound modes given a particular frequency ω . All that remains is to make a matrix representation of the operator and send it to the proper EISPACK routine. However, the remaining task is not trivial. Taking two transverse dimensions into account results in a product space easily requiring a huge number of elements to get enough accuracy if too primitive a method for estimating the derivatives is used. The above formulation can be used for a finite element formulation. Or the field could expanded in orthogonal basis functions. Once the eigenvalues are found, there is still the task of sorting out the resulting data. For most cases of interest, the number of bound modes is finite, but the number of unbound modes is uncountably infinite. Fortunately, these problems have already been dealt with for the scalar case. This formulation of the vector case presents no new difficulties save that the order of the matrix must be twice as large. The electric field can be obtained by suitable modification of (2.68).

[Enx    Eny    Enz]  =  1με[(x    (xε)ε)x          (y    (yε)ε)x          iβnx|  |  |(x    (xε)ε)y          (y    (yε)ε)y          iβny][Πnx    Πny]+ω2c2[Πnx    Πny].

A bit of general insight is available from just looking at the above equation. We see that in order to have a transverse electric mode it is necessary that xΠnx  =  yΠny This is equivalent to saying that Πnx  =  yf,  Πny  =  xf for an arbitrary scalar f . This condition for Πn causes all the matrix terms to cancel, making En  =  (ω2/c2)Πn . This also causes En to obey the scalar approximation since

·En  =  ω2c2·Πn  =  ω2c2(xyf    yxf)    0.

By expanding W in equation (2.81), we can see the prospects for getting transverse electric modes:

      [xx+yy(xε)εx+με1ω2c2                    (yε)εx  |    |    |      (xε)εy                xx+yy(yε)εy+με1ω2c2]Πn  =  λnΠn.

Most pleasantly, the condition for a transverse mode causes the terms with derivatives of epsilon to cancel. Thus, we effectively have two separate equations for Πnx and Πny . Unfortunately, it is the same equation. Since Πnx cannot equal Πny (and still obey xΠnx  =  yΠny ) without being constant, this leads to difficulty. Otherwise, it would be a very nice situation. The equation to be solved is merely a time independent Schro.. dinger equation in which variation in the dielectric performs the same role that the potential plays in Quantum Mechanics. This is the case for the scalar approximation. We could merely make trivial changes in existing techniques and perform the conversion from Hertz potential to electric field. But the requirement that two different functions must obey this equation and have the same eigenvalue to boot restricts us to degenerate solutions. And not all degenerate solutions are permissible. The two functions must be the x and -y partials of a third function. This condition rules out most separable solutions. For this case, the eigenfunctions are products of one-dimensional eigenfunctions. For the last condition to be satisfied, the x and y operators must convert one eigenfunction into another much like the raising or lowering operators for the harmonic oscillator. For example, for a parabolic dielectric, this limits us to one possible transverse electric mode, and the parabola must be symmetric for that. The x and y operators behave like raising operators when operating on the ground state (only). So setting f to be the "ground state" Gaussian allows xf andyf to be eigenfunctions of our "Schro.. dinger" equation. Of course with a sufficiently large waveguide, very nearly transverse modes are quite feasible without degenerate solutions to the "Schro.. dinger" equation. As long as the transverse derivatives of the Hertz field are negligible compared to ω/c times the Hertz field, the electric field is dominated by the terms involving ω2/c2 all of which affect the transverse components only. A similar simple condition can be found for transverse magnetic waves. Since Πm and Rm are zero, the expression for the magnetic field is particularly simple.

B  =  1ct×Πn.

This can also be put into matrix form:

[Bx    By    Bz]  =  iωc[0      iβn      y|||iβ      0      x][Πnx    Πny].

By trivial inspection, the condition for a transverse magnetic mode is yΠnx  =  xΠnx . This is equivalent to Πnx  =  xf,  Πny  =  yf , where f

is some scalar. Unfortunately, the two equations that f must satisfy are not as simple as they were for the transverse electric case. No analytic solutions were found. This look at the bound modes produced only one analytic solution and it is unphysical: a parabolic dielectric which goes to negative infinity. Also, the cancellations of the derivative of the dielectric terms hide the singularities that occur when ε goes to zero. Fortunately, the field is only significant in the physical regions, at least for most parameters of interest. So this one analytic solution can be used as a test for the propagation method that is developed in the next chapter.

An Electric Field Method

To compare the results of the Hertz vector method with known methods, a second program was written to propagate the physical electric field using the same numerical techniques as were used for the Hertz vector program. This program gives the results of completely making the scalar approximation for comparison purposes. By adding an extra source term, it is possible to come close to a full vector treatment using the physical field when the background dielectric is nearly constant. This feature is useful for providing something of a check of the results of the Hertz-vector program. We start with usual approach for getting the vector wave equation; that is, we take the curl of (2.1) and substitute in (2.3) assumingμ is constant.

××E  +  1ct(μεctE  +  4πμctP)  =  0.

Here, the source terms have been described in terms of a polarization density so D  =  εE  +  4πP . With the use of a vector identity we get

2E  +  μεc2ttE  =      4πμc2ttP    (·E).

Factoring out the usual carrier frequencies and splitting ε , we get

β02E~    2iβ0E~    zzE~    με0ω2c2E~  =  με1ω2c2E~  +  4πμω2c2P~    (·E~).

The is to remind us to replace z with iβ0  +  z . With the usual definition for β0 and making the paraxial approximation we have

    2iβ0zE~  =  με1ω2c2E~  +  4πμω2c2P~    (·E~).

If the variation of ε is small, we can approximate

(·E~) in terms of the polarization.

·D  =  0  =  ·εE  +  4πP  ,                  ·E    4πε·P.

For significant variation in the dielectric permittivity, ε1E needs to be incorporated in P for the non-scalar physical field method to work. The ability to incorporate variation in the linear dielectric is a major advantage of the Hertz-vector approach. Finally, we have

    2iβ0zE~  =  με1ω2c2E~  +  4πμω2c2P~  +  (·P~).

To get the scalar approximation, it is merely necessary to turn off the last term. Note there are problems with using the above as a full vector method. There are second derivatives with respect to z in the source term. These are taken somewhat crudely. The Hertz-vector method requires only first derivatives with respect toz in the calculation of the source term. It is also easy to use an initial field that is far from equilibrium using this method. For example, it is quite tempting to just start up with, say, a Gaussian beam with just an x component. For large transverse variation E~x , E~z must rapidly change in the z direction to make ·E  =  0 . That is,

xE~x  +  zE~z  +  iβ00  =  0.

A better initial selection would have the iβ0E~z term cancel out the xE~x term. The Hertz vector method does this automatically. This is especially important when the z steps are not small compared to a wavelength.


[1] A. Nisbet, Proceedings of the Royal Society A 231, 250-263 (1955).

[2] A. Nisbet, Proceedings of the Royal Society A 240, 375-381 (1957).

[3] A. Mohsen, Applied Physics 2 , 123-128 (1973).

[4] A. Mohsen, Applied Physics 10, 53-55 (1976).


Chris Price on Oct 24, 2023 9:29 PM

The formatting is impressive. As to the content, I've only stayed at a Holiday Inn Express once. So...


Must be logged in to comment

Drag the picture you want to upload into the large box below. You can use the controls to edit the picture to be uploaded. This will not affect the picture on your hard disk.

Or, if you are on a tablet or phone, or don't like Drag and Drop, you can select a picture using this

Get a modern browser to make picture uploads

Up Right Down Left


Color Balance:
Red: 1.0
Green: 1.0
Blue: 1.0
Gray: 1.0


Slide the boxes with triangles along the edges of the picture to crop.

(Picture below can be dragged if need be.)