IntroductionValoMC is an open source Monte Carlo code that can simulate the passage of visible and near infrared range photons through a medium. The implementation is based on the photon packet method. The simulation geometry is defined using unstructured (triangular or tetrahedral) mesh. The program solves the photon fluence in the computation domain and the exitance at the domain boundary. It is capable of simulating complex measurement geometries with spatially varying optical parameter distributions and supports several types of light sources as well as intensity modulated light. Furthermore, attention is given to ease of use and fast problem set up with a MATLAB (The MathWorks Inc., Natick, MA) interface. The simulation code is written in C++ and parallelized using OpenMP. ValoMC is being developed by Aleksi Leino, Aki Pulkkinen, Tuomas Lunttila and Tanja Tarvainen at University of Eastern Finland, Kuopio, Finland. If you use ValoMC in your work, please reference it with the following citation: Click here to see examples of works where ValoMC has been utilised. |
Simulation using the digimouse model. Model data is described in B. Dogdas, D. Stout, A. Chatziioannou, RM Leahy, Digimouse: A 3D Whole Body Mouse Atlas from CT and Cryosection Data, Phys. Med. Bio, 52: 577-587, 2007 |
Minimal exampleThe following MATLAB code snippet sets up and runs a Monte Carlo simulation in a rectangular region xsize = 10; % width of the region [mm] ysize = 10; % height of the region [mm] dh = 1; % discretisation size [mm] vmcmesh = createRectangularMesh(xsize, ysize, dh); % Create a light source % - Set a light source from boundary elements 4 to 7 % - Photons are launched at a random angle so that all angles have a cosinic distribution vmcboundary.lightsource(4:7) = {'cosinic'}; % Give optical parameters % - Constant optical parameters are set troughout the medium. % - Alternatively, optical parameters can set be for each element using indexing vmcmedium.absorption_coefficient = 0.01; % [1/mm] vmcmedium.scattering_coefficient = 1.0; % [1/mm] vmcmedium.scattering_anisotropy = 0.9; % anisotropy parameter g [unitless] vmcmedium.refractive_index = 1.3; % refractive index [unitless] % Run the Monte Carlo simulation solution = ValoMC(vmcmesh, vmcmedium, vmcboundary); % Plot the solution using MATLAB patch('Faces',vmcmesh.H,'Vertices',vmcmesh.r,'FaceVertexCData', solution.element_fluence, 'FaceColor', 'flat', 'LineWidth',1.5); |
News6.3.2022: Critical fix A potentially significant error was spotted in the 3d code and fixed. We are currently investigating the magnitude of the error. It affects all 3d simulations but not the 2d simulations. We regret for any inconvenience caused. You can find the issue and join in the discussion here. 1.4.2019: Publication Research article that describes ValoMC was published in OSA Continuum. 21.2.2019: Release candidate Version 1.0rc is now released. A number of fixes have been introduced to the MATLAB interface. From now on, we indent to minimize changes that are backward incompatible to the MATLAB interface. 28.5.2018: Beta-release We are releasing the beta version for test use and feedback. Please note that the functionality might still change and that the code might not be fully forward compatible with later releases. |