RP Photonics logo
RP Photonics
Modeling & Design Software
Technical consulting services on lasers, nonlinear optics, fiber optics etc.
Profit from the knowledge and experience of a top expert!
Powerful simulation and design software.
Make computer models in order to get a comprehensive understanding of your devices!
Success comes from understanding – be it in science or in industrial development.
The famous Encyclopedia of Laser Physics and Technology – available online for free!
The ideal place for finding suppliers for many photonics products.
Advertisers: Make sure to have your products displayed here!
powerful tools for efficient laser development and laser science
This page gives you an overview on our software products.
RP Fiber Calculator is a convenient tool for calculations on optical fibers.
RP Fiber Power is an extremely flexible tool for designing and optimizing fiber devices.
RP Resonator is a particularly flexible tool for laser resonator design.
RP ProPulse can simulate the pulse evolution e.g. in mode-locked lasers and sync-pumped OPOs.
RP Coating is a particularly flexible design tool for dielectric multilayer systems.
RP Q-switch can simulate the power evolution in Q-switched lasers.
Most of our software products support a powerful script language, which gives you an extraordinary degree of flexibility.
Here you learn about software license conditions, updates and upgrades, etc.
Competent technical support is a key quality associated with software from RP Photonics.
RP Photonics has distributors in various countries.
The RP Photonics Software News keep you updated on our developments and give the users additional interesting hints.
Here you can make inquiries e.g. concerning technical details, prices and quotations.

The RP Photonics Software News

Fiber Laser Model with More Than One Active Fiber

Dr. Rüdiger Paschotta

Today I would like to show you a trick, which can serve as an example for how apparently missing features in the simulation software can be replaced, provided that it offers a script language.

The easiest way of defining a simple fiber laser model in our software RP Fiber Power is using the interactive forms, where you just fill in some parameters like the fiber length, end reflectivities, pump power, etc. That's nice, but what if you want to model a fiber laser where the laser resonator contains two active fibers rather than just one, as usual? (Maybe it is actually only one active fiber, but you want to cut it into two pieces in order to insert some optical element in between.) Unfortunately, the forms force you to select a single fiber, so you are hitting a limit here.

Limitations for the Flexibility with Forms

In principle, a software developer can try to add additional features to such forms. For our case, it might be useful to have some control where you can add additional active fibers to the laser resonator and perhaps switch between the parameters of these different fibers in order to edit all them. In addition, you would have to enter somehow how the different parts are connected. Well, that could in principle solve our example problem, but you can easily recognize the disadvantages of that approach:

  • The more flexibility you try to achieve with such forms, the more complex and more difficult to use they will be. So you at risk to lose the most important advantage of forms: their ease of use.
  • It is essentially impossible to offer anything a user might ever require – one reason being that the developer can hardly anticipate all that.

So there are severe limitations to the flexibility one can obtain that way. That is a problem with which some software developers are struggling severely.

Scripting as the Solution

A good solution to that fundamental problem is to use a script language, where the user can assemble any commands or functions to implement anything he or she needs.

To come back to our example case, we can use the following trick:

  • Consider two separate devices: one with the left fiber, having an end reflector at the left end, and one with the right fiber, having an end reflector at the right end. Both receive some pump power, e.g. from the outer ends.
  • Now consider some amount of signal (laser) power, entering the left fiber on its right end. That might still be amplified, reflected at the left end, and amplified again. Then it gets into the right fiber, will again be amplified, reflected, and amplified again. Now we are back to the original location, having done a complete resonator round trip.
  • The problem is now only to determine the amount of signal power with which we should start. The correct level in the steady state is obviously the power for which the round-trip gain is zero. If we choose a too high value, the round-trip gain will be negative, since we have strong gain saturation. In the opposite case, the round-trip gain will be positive. Somewhere in between, there is the desired solution. So it is a simple one-dimensional root finding problem.

I just show you the part of the script code where the round-trip gain is calculated and where the root finding is done:

rt_gain(P_mid) := 
  { round-trip gain, starting from the middle of the resonator  }
    var P_rt, P_mid2;
    set_P_in(signal1_bw, P_mid);  { P_mid injected into the left fiber }
    P_mid2 := P_out(signal1_fw);  { that much comes back }
    set_P_in(signal2_fw, P_mid2);  { inject that into the right fiber }
    P_rt := P_out(signal2_bw);  { that much we get after one round trip }
    10 * lg(P_rt / P_mid);  { the round-trip gain in dB }
P_mid := 
  if rt_gain(1 nW) > 0 then
    zero(rt_gain(P_mid), P_mid in [1e-9, P_pump1_fw_in + P_pump2_bw_in], xtol = 1e-9)

Also, I show you the generated diagram which shows the variation of optical powers within the laser:

optical powers in a fiber laser

Figure 1: Variation of optical powers within a fiber laser containing two active fibers.

It also shows the “starting power” which needs to be injected into the left fiber, coming from the place where the two fiber meet.

Of course, it would be easy to introduce further details like linear or nonlinear losses between the two fibers; the example shows that with the script language it becomes possible to implement a wide range of strategies to generate the results you need for your work.

For a beginner, it might be difficult to work out such tricks. However, good software comes with a helpful technical support. If you have our software and need something like that, I would personally come up with a suggestion for such a trick, and also implement it in an example script if required.

This article is a posting of the RP Photonics Software News, authored by Dr. Rüdiger Paschotta. You may link to this page, because its location is permanent.

Note that you can also receive the articles in the form of a newsletter or with an RSS feed.

If you like this article, share it with your friends and colleagues, e.g. via social media: