Acknowledgement: This software release is made possible with the funding support from the NIH/NIGMS under grant R01-GM114365.
Mesh-based Monte Carlo, or MMC, is a Monte Carlo light transport simulator designed for high accuracy for modeling tissues or domains with complex and smooth boundaries. Unlikely other existing MC software designed for layered (such as MCML) or voxel-based media (tMCimg, mcxyz and MCX), MMC can use a tetrahedral mesh to represent a complex domain, making it computationally and memory efficient.
MMC supports multi-threading based parallel computing. You can obtain a nearly linear speed-up when using more CPU cores in your simulation. Starting from version 0.8, MMC also supports the Single-Instruction Multiple-Data (SIMD) parallelism on modern CPUs, allowing MMC to take further advantage in parallel computing.
MMCLAB is the MATLAB mex version of the MMC software. It can be directly called inside MATLAB. This makes it easy to use with streamlined pre-processing (mesh generation using the Iso2Mesh toolbox) and post processing (visualization and data analysis).
MMC/MMCLAB v2019.4 is a maintenance release, containing several critical bug fixes compared to v2019.3, released just a month days ago.
One of the critical bug-fixes concerns all simulations using the -M S (branchless Badouel method) and -M G (dual-grid MMC). With this fix, the handling to edge-crossing photons is more robust and yields more accurate solutions, especially when the mesh density is high.
Another bug fixed was the incorrect headers of the .mch files created from v2019.3 and v2019.3-1 binaries (mmclab is not affected). The mch files produced by the recent releases becomes garbled when loaded with loadmch.m. This is now fixed in v2019.4.
In addition to these bug fixes, MMC v2019.4 gains a new feature to output diffuse reflectance on the surface mesh (similar to mcx).
The v2019.4 release was improved upon the previous version, v2019.3 by fixing a list of high priority bugs. They are:
Pre-compiled MMC binaries are provided for Windows, Linux and Mac OS. In all cases, a binary compiled with SSE4-accelerated ray-tracing algorithms is provided for each platform.
The best simulation speed can be typically achieved by using
mmc -M S -C 0 ....
One can recompile all binaries using an Intel C++ Compiler. It can generate binaries up to 25% faster than the equivalent binaries compiled with GCC.
Although MMC/MMCLAB can be executed independently once all input data (including mesh data) are provided, most pre- and post-processing scripts in both packages require the installation of Iso2Mesh Toolbox - a MATLAB based 3D mesh generator. Please browse http://iso2mesh.sf.net for download and installation information.
The default ray-tracer in the released binaries require your computer to support SSE4 instructions. This can be determined by using the following command on Linux/MacOS
grep 'sse4' /proc/cpuinfo
or using a freeware "CPU-Z" on windows. If you attempt to run the SSE4 on an unsupported computer, you will get an error when executing the binary. In that case, you should recompile MMC using "make omp" command.