Modeling of Fiber Amplifiers and Lasers
This is part 8 of a tutorial on modeling of fiber amplifiers and lasers from Dr. Paschotta. The tutorial has the following parts:
1: Introduction, 2: Optical channels, 3: Power propagation or field propagation, 4: The laser-active ions, 5: Continuous-wave operation of amplifiers and lasers, 6: Amplifying and generating short pulses, 7: Ultrashort pulses, 8: Using home-made software or a commercial product?
Part 8: Using Home-made Software or a Commercial Product?
We have seen that having suitable simulation software is crucial for the success of any modeling exercise, and this certainly holds in particular for cases involving fiber amplifiers and fiber lasers (more than for bulk lasers, for example). The remaining question is then whether one should try to construct an own piece of software or rather use a commercial product.
I must admit that I cannot be impartial here; of course, we want people to buy user licenses for our software rather than making something themselves. However, I can make some remarks which should be useful for such a decision. What is needed is obviously a sensible comparison of the two different approaches. That should involve various important aspects as discussed in the following.
The presented thoughts should also be useful when deciding for a particular software product.
Getting the Job Done
Of course, one can consider only those options which can reasonably be expected to produce the required results.
When making your own software, you can in principle do anything what is needed; the question is only whether both your expertise and the amount of time you can spend is sufficient for getting there.
A difficulty with commercial products is that it is often hard to find out before buying a user license whether the product is suitable for the job. Somewhat surprisingly (in my view), many commercial software products are advertised with some bold statements and nice graphics, which however do not tell you much. They may give you a trial version, but it can be rather time-consuming to identify the limitations of the software that way.
We take a different approach: presenting very comprehensive materials for free on our website. This includes carefully written descriptions of the software product, but also a large selection of case studies and tutorials like this one. Also, we carefully and honestly answer any questions somebody may have when considering to buy a license. If there is a serious interest, I also offer an online demonstration where the user gets access to my PC screen via the Internet. This approach is time-saving; it allows you to determine the suitability of the software for particular job within a short time.
Being extremely flexible, our product RP Fiber Power is suitable for a very wide range of cases, although it occasionally happens that I must tell somebody that certain things are not possible or at least not practical, either due to current limitations of the software or due to fundamental reasons.
Can You Trust the Results?
Although modeling results can be very useful, it may be very wasteful to be misled by incorrect results. Unfortunately, these can have many origins: not only hidden bugs of the software, but also simple errors in the input data, misunderstandings concerning how the software must be controlled, etc.
Modeling software is non-trivial, and you can never be sure that non-trivial software is totally free of bugs. Careful validation procedures at least minimize that risk. If you are good in that domain, you may become particularly sure that results from your own software are correct, and you can then of course also more thoroughly test other software. However, you would definitely appreciate to have a piece of software which has been carefully tested over years and used by many researchers and industry people, so that you can have a relatively high level of confidence in it.
As a customer, you would like to be sure that the developer of such the software is really competent in that complicated scientific and technical area. However, you cannot know that if you do not even know who is the developer. In our case, it's me, the author of this tutorial, of the RP Photonics Encyclopedia and of many scientific publications (see my CV).
Keep in mind that errors can result not only from bugs in the software, but also simply from wrong inputs. That is not always a matter of being stupid or not; you are dealing with non-trivial things, where errors can happen. Note that such risks can crucially depend on the quality of the user interface. For example, if the software has a complicated menu structure with lots of forms which all need to be filled out correctly, that can be a significant risk of errors. Our software, however, is (in non-trivial cases) controlled by a script which you can read and check line by line. It's flexibility gives you many opportunities to introduce sanity checks, e.g. by displaying various quantities of interest in a nicely formatted way, or producing automatic warnings written into diagrams with big red letters.
By the way, you may be interested in reading a blog article on software validation which I wrote a while ago. It shows you that there are different kinds of possible errors, and different methods are needed to uncover them.
Spending Money and Time
User licenses for commercial simulation software in such a specialized technical area unavoidably cost substantial money. After all, the development of such products costs an enormous amount of time, and due to its highly specialized nature, one cannot sell thousands of licenses in order to amortize such an investment. Also, technical support (see below) must be included, which also costs time.
It would be pretty naïve, however, to consider a homemade product as essentially free. When thinking carefully about it, you will realize that such an effort costs an enormous amount of time. And believe me, in the end you always need more time than estimated!
Whether you are working in a company or as a researcher at a university, you are occupying a job which does not only cost a salary: there is also a more or less costly infrastructure which is held available for you. Moreover, one should consider lost opportunities as a result of spent time, because not doing other potentially very useful things (like getting a new product to market) is also a kind of cost, which can be very high. Imagine what loss it can mean if you waste several months in a research or development project while your competitors get there more quickly and place their product or scientific paper earlier …
In this context, one should not only consider development time, but also the efficiency of working with the produced or purchased software. For example, a researcher may get all the numerical problems solved, so that the software can calculate what is needed, but may not be able to produce a convenient user interface which lets him and others efficiently use that software. Similar comments apply to the documentation; it is not easy to properly document such a complicated piece of work, and indeed too many fail. As a result, a researcher may leave a research group after a couple of years and leave behind his software – which however is not of any use for others, since it is too hard for them to find out what it does and how to use it. With a high quality commercial product, this is very different: there is proper documentation, and anyone can read how it works.
That is of course also an aspect which is relevant for the leader of a research group or R & D team. After all, it can be crucial to know whether all the investment of time and/or money leads to a result which is usable by the whole team (and any successors), rather than only by the one working on it.
Be warned, however, that even expensive commercial software is not always properly documented; it seems that there are not many people who are able to do such a job well. This needs more than only the technical expertise. I think, however, that you can trust the author of the RP Photonics Encyclopedia to be capable of producing good documentation.
If you develop a piece of software yourself, you are normally on your own. That's fine, provided that your competence is fully sufficient. For a beginner in this area, it is quite frightening: can he or she know (or reliably find out) all details which are relevant for correctly doing that job?
User licenses for commercial software should always include technical support from some competent person. If that is done well, it can be an invaluable help – particularly for beginners in the field. In our case, all technical support is done by myself, the software developer; I do my very best to ensure that users obtain every help they need. Importantly, the support is not limited to purely software-specific issues, but explicitly covers all related scientific and technical issues as well. If you like, that's included technical consulting.
Expanding Your Competence
Surely, you can expect that during the process of developing such simulation software you will learn a lot. This means that your competence will be expanded, and this can be of great help in further projects.
On the other hand, you again need to consider that such a development costs a lot of time which could be spent in other ways. For example, with a good commercial software product you could much more quickly get to the physics and technical details of your actual problem (rather than spending time with programming). In addition, you can then enjoy competent technical support (see above), and that should also contribute a lot to the development of your competences.
Yes, I believe it is absolutely a valid criterion whether you think you would have more fun solving your problem in one or the other way. After all, you may be more productive and efficient if you work in the way which you like. And honestly, although being efficient and consequently successful can have a profound impact on your well-being, they are other factors as well.
It is not totally easy, however, to predict how much fun – or frustration! - you will experience when going through such a project. Certainly, it can be very rewarding to get to the point where such a piece of software starts to work and can then be improved further and further. (I know very well these “flow experiences”!) However, it can also be extremely difficult and exhausting to hunt down apparent errors. If at the same time there is external pressure to produce results, you may get into serious stress. Moreover, it takes a lot of discipline to carefully test (validate) and document the produced software.
On the other hand, using commercial software can be enjoyable or frustrating as well, depending on how well it has been made. Personally, I hate wasting time with experimentally finding out how a software really works, if that cannot be efficiently found out with the manual. And it is not nice, of course, to even find out at some point that a certain piece of software is not capable of doing what you need. On the other hand, it can be real fun to make fast progress using a good product, which also inspires you to try out many interesting things. With a good simulation tool, you will quickly improve your understanding of the underlying physics, and there is also a fair chance that the work with it triggers new ideas, possibly leading to more exciting things than you anticipated beforehand!
This is the end of the RP Photonics tutorial on passive fiber optics. We hope you have enjoyed the tutorial, and will find many more interesting things on our website, e.g. in the RP Photonics Encyclopedia, and in various case studies made with our RP Fiber Power software. For many purposes, you can also profit a lot from the free version or the PRO version of the RP Fiber Calculator software.