Home Marine Optics and Remote Sensing Lab


a multipurpose 3D Monte Carlo Code

Edouad Leymarie


A new Monte Carlo code, named SimulO for “Simulation Optique”, was developed to easily simulate many types of optical devices especially in the field of marine optics. A graphical user interface allows the user to simulate all the optical configurations without having to modify the underlying code. 


SimulO GUI


SimulO is a natural 3D forward Monte Carlo, which implies that photons are followed one at a time from the source to the point where they are absorbed. SimulO is written in Delphi®, a visual Pascal object-oriented language. This language allows us to create a “user-friendly” windows interface, while the object-oriented architecture is the most powerful way to create a code to manage a device described by several optical objects.

Operating Systems

The SimulO GUI works on windows OS only (XP, Seven). The Graphical User Interface allows creating easily a simulation setup and run it. A version of SimulO simulation engine works also on Linux platformes. It could read simulation setup created by hands or with the GUI and run it extensively by using linux cluster for example.

Topologic setup of a device

In SimulO, the user can compose complex optical devices by positioning and sizing any number of elementary objects. Presently three elementary shapes are available: sphere, cube, and cylinder. 

Optical properties setup

In addition to the topologic setup, SimulO also allows the definitions of the optical properties of each object. Volumes occupied by each elementary object are homogenous in term of bulk optical properties, while different optical properties can be defined for each face of the object. Four bulk properties must be set: the refractive index of the material (used for the calculation of Snell’s and Fresnel’s laws), the absorption and scattering coefficients, and the scattering phase function. For the latter, the user can presently select one of the built-in phase functions (pure water, isotopic, Henyey-Greenstein, Fournier-Forand) or upload their own using a text file, which will be interpolated at appropriate angles. To simulate a volume with two different types of scatterers (water and particles for example), SimulO accommodates the use of two scattering functions which can be weighted with their respective probability by setting different scattering coefficients. The surface properties (bidirectional reflectance function) used to describe each face of an elementary object can be set to transparent, specular or Lambertian reflection (with a given reflection probability). An object’s face can also be defined as light source. In this case, photons are emitted from points randomly distributed over the area of this face, with a direction obtained relative to the local normal to the face. The user can select whether the angular direction of an emitted photon is (i) normal to the face, (ii) given by a Lambertian distribution or (iii) randomly distributed with a given divergence around the normal direction.

Photon counting tools

To understand the optics of the simulated device, SimulO provides several types of counting tools to obtain the information regarding a simulation. By default, SimulO records: the number of collisions on each face of the elementary objects, the average pathlength of photons, the average number of scattering events per photon, and the number of photons absorbed in the volume and on each face of an object. It is also possible to add several specific tools to know: the average pathlength of photons which are absorbed by a specific face, the angular distribution of photons reaching a specific face or the number of photons reaching a specific face within a specified angular range centered on the normal.


SimulO software is registered by the French "Agence pour la Protection des Programmes" under the number 68993.


Because SimulO is a multipurpose Monte Carlo code we can use different publications on different problems as reference for validation. All following cases, which are very different in terms of topology, have been solved by using the same code. The user only needs few minutes to create the proper configuration to solve these problems.

Point Source Integrating Cavity Absorption Meter

SimulO was originally developed to study Point Source Integrating Cavity Absorption Meter (PSICAM) devices. Therefore, the first simulations used to validate the code deal with the PSICAM configuration. A PSICAM is modeled in two steps with SimulO. Firstly, a sphere with the appropriate radius is drawn and the internal face of this sphere is set to Lambertian reflector (with the correct absorption probability for the material modeled). The bulk properties are set to those of the sample examined. Secondly, another small sphere is placed at the center of the first one, and the external face of this sphere is set as a photon emitter. Kirk (1997) derived theoretical formulae for both the average pathlength and the number of collisions on the internal face of the cavity when the sample is purely absorbant. Different simulations were performed with SimulO considering various cases of sphere radius, cavity wall reflectivity and sample absorption coefficient. Results from SimulO were always in agreement (difference smaller than 0.4%) with equations (4) and (5) in Kirk (1997).

Reflective Tube Absorption Meter

The second geometry used to validate the code is the absorption tube. Kirk (1992) provided interesting results from Monte Carlo simulations of a Reflective Tube Absorption Meter. This geometry is reproduced with SimulO using cylinders to represent the source, tube and detector. In her publication, Kirk gives the ratio between the measured and the true absorption coefficients as a function of the acceptance angle of the detector and as a function of the tube reflectivity (see their Fig. 2 and Fig. 3). The results reported on tese two graphs have been reproduced with our code with a difference smaller than 0.5%. Other cases of absorption and scattering coefficients (with the same geometry) have also been simulated and compared to results obtained by B. Gentili (unpublished) using a Monte Carlo code and the resulting difference was around 0.5% using only 106 photons.

Reproduction of the Fig 3. of Kirk(1992) with SimulO.

Self Shading problems

SimulO can also be used to calculate the self shading error of a sensor embedded in a given structure (like a boat, a buoy or profiler) (Gordon 1992).

To estimate this error with SimulO, we use the backward Monte Carlo approach and a two steps process. In backward Monte Carlo approach, the trajectory of photons are followed from the sensor to the sky. This technique is well adapted in the case of a small sensor and a large photons source (the sky). The two step used to estimate the self shading of a setup are:

(i) A first simulation with an infinitely small sensor and thus without any shading. In this simulation, the amount of photons in all the sky directions are recorded.

(ii) A second simulation is done with the sensor embedded in the deployment structure which is assumed to be perfectly black. The amount of photons in all the sky directions are also recorded.

The ratio between the amount of photons recorded in these two steps, for all sky's directions, allow the determination of the shading effect due to the structure.

To validate SimulO and this two steps approach, we present several comparisons with the results obtained by Piskozub (2004). This study reports estimations of the the self-shading measurement error on the upwelling irradiance which are caused by the presence of a typical cylindrical housing of an optical instrument as a function of the housing dimensions and of the optical parameters of seawater. The comparison between Piskozub and SimulO results is presented hereafter.

Reproduction of the Fig 1. of Piskozub(2004). The self-shading error dependence for the absorption coefficient (a) for instruments with two radii, a flat disk and cylindrical shape (b=0.3 m-1). Solid and dashed lines represent results from Piskozub (2004) and SimulO, respectively.

The agreement between these results is good with a difference of 2% in average.

SimulO can be used to estimate the self shading of a large range of devices. As an example, some simulations were made to estimate the self shading error for a upwelling radiance (Lu) sensor embedded in a glider.

Simulation with SimulO of the Lu self shading for a Glider. The shape of the glider (body and wings) clearly appear.

Radiative Transfer

The computation of underwater radiances and irradiances is also a typical problem that can be addressed using a Monte Carlo code. Mobley et al. (1993) compared results from seven numerical models applied to seven reference problems.

These problems are:

1: An unrealistically simple problem.

2: A base problem using realistic inherent optical properties for the sea water.

3: The base problem but with stratified water.

4: The base problem but with atmospheric effects.

5: The base problem but with a winded blown sea surface.

6: The base problem but with a finite depth bottom.

7: A problem involving Raman scattering.

Here we present a comparison based on problems 2 and 3 of Mobley (1993). Problems 1, 4 and 6 can also been studied with SimulO, but not problems 5 and 7 as the wind-blown surface or Raman Scattering are not yet implemented in SimulO

Comparison between Mobley(1993) and SimulO results. Problem 2 for ω0=0.9


Comparison between Mobley[93] and SimulO for the stratified problem

Publication Using SimulO

-    Gerbi, G. P., Boss, E., Werdell, P. J., Proctor, C. W., Haëntjens, N., Lewis, M. R., ... & Koegler, J. (2016). Validation of Ocean Color Remote Sensing Reflectance Using Autonomous Floats. Journal of Atmospheric and Oceanic Technology, 33(11), 2331-2352.

-    Doxaran D., Leymarie E., Nechad B. Dogliotti A., Ruddick K., Gernez P. and E. Knaeps (2016). Improved correction methods for field measurements of particulate light backscattering in turbid waters. Optics Express, 24(4) ,3615-3637. (Get PDF Reprint)

-    Song, G., Xie, H., Bé´langer, S., Leymarie, E. and M. Babin (2013). Spectrally resolved efficiencies of carbon monoxide (CO) photoproduction in the western Canadian Arctic: particles versus solutes. Biogeosciences, 10, 3731–3748, www.biogeosciences.net/10/3731/2013/ doi:10.5194/bg-10-3731-2013. (Get PDF Reprint)

-    Babin, M., D. Stramski, R. A. Reynolds, V. M. Wright, and E. Leymarie (2012) In press. Determination of the volume scattering function of natural water samples. Applied Optics, 51, 17, 3853-3873 (Get PDF Reprint)

-         Leymarie, E. , D. Doxaran, and M. Babin (2010). Uncertainties associated to measurements of inherent optical properties in natural waters, Applied Optics, 49, 5415-5436 (Get PDF reprint)

-         Doxaran, D., M. Babin and E. Leymarie (2007).  Near-infrared light scattering by particles in coastal waters. Optics Express, Vol. 15, No. 20 12834-12849 (Get PDF Reprint).

-    Chami M., McKee D., Leymarie E and G. Khomenko (2006). Influence of the angular shape of the volume scattering function and multiple scattering on remote sensing reflectance, Applied Optics, 45, 9210-9220. (Get PDF Reprint)


-         Kirk  J.T.O (1992). Monte Carlo modeling of the performance of a reflective tube absorption meter, Appl. Opt. 31, 6463-6468

-         Gordon H. R., Ding K. (1992). Self-shading of in-water optical instruments, Limnol. Oceanogr., 37(3),49 I-500

-         Kirk, J.T.O. (1997) Point-source integrating-cavity absorption meter: theoretical principles and numerical modeling, Appl. Opt. 36, 6123-6128.

-         Piskozub, J. (2004). Effect of 3-D instrument casing shape on the self-shading of in-water upwelling irradiance, Opt. Express 12, 3144-3148.

-         Mobley, C.D., Gentili, B., Gordon, H.R., Jin, Z., Kattawar, G.W., Morel, A., Reinersman, P., Stamnes, K. and R.H. Stavn (1993). Comparison of numerical models for computing underwater light fields, Applied Optics, 32, 7484-7504. (Get PDF Reprint)

© Copyright 2005 Marine Optics and Remote Sensing Lab. All rights reserved.