9 releases

0.3.0 Nov 16, 2020
0.2.3 Nov 12, 2020
0.1.3 Sep 22, 2020

#873 in Science

MIT/Apache and GPL-3.0 licenses

8MB

mcrt

Monte Carlo Radiative Transfer tool

ANTLER crate ANTLER documentation minimum rustc 1.47 Build Status

Input is the parameters file. Example parameters.json5:

{
    tree    : { Here    : {                                                     // Use these tree settings.
        tar_tris    : 5,                                                        // Target num triangles per leaf cell.
        max_depth   : 6,                                                        // Maximum tree splitting depth.
        padding     : 0.01,                                                     // Fraction to increase leaf cells dimensions during detection.
    }},
    grid    : { Here    : {                                                     // Use these grid settings.
        boundary: {                                                             // Grid bounds.
            mins: [-10, -10, -10],                                              // Minimum bound.
            maxs: [ 10,  10,  10],                                              // Maximum bound.
        },
        res: [64, 64, 64],                                                      // Grid resolution.
    } },
    sett    : { Here    : {                                                     // Use these simulation settings.
        num_phot            : 1e6,                                              // Number of photons to simulate.
        block_size          : 1e2,                                              // Photons to simulate per block.
        bump_dist           : 1e-6,                                             // Bump distance.
        loop_limit          : 1e6,                                              // Maximum number of events before culling.
        min_weight          : 5e-2,                                             // Minimum simulation weight.
        roulette_barrels    : 8,                                                // Roulette survival fraction.
        init_mat            : 'air',                                            // Emission material.
    } },
    engine  : "Basic",                                                          // Operation engine selection.
    light   : { Here    : {                                                     // Use these light settings.
        power       : 1.0,                                                      // Power [watts].
        emit        : { Surface: [['objs/light.obj'], null] },                  // Emit from a mesh surface - no transformations.
        spec        : { Here: {Point: 6.3e-7}},                                 // Use this laser spectrum (630nm).
    } },
    mats    : { Here    : {                                                     // Use this material map.
        air : { There   : 'mats/air.json5' },                                   // Air properties there.
        fog : { There   : 'mats/fog.json5' },                                   // Fog properties there.
    } },
    attrs   : { Here    : {                                                     // Use these attributes.
        mirr    : { Mirror: 0.99 },                                             // 99% reflective mirror.
        fog     : { Refractive: ['air', 'fog'] },                               // Interface between air and fog.
    } },
    surfs   : { Here    : {                                                     // Use these surfaces.
            centrepiece : {
                mesh    : [["objs/cube.obj"], {scale: 1.1} ],                   // Use this surface - scale it up 10%.
                attr    : 'fog',                                                // Make it an interface.
            },
            mirror      : {
                mesh    : [["objs/mirrors.obj"], null],                         // Use this surface - no transformations.
                attr    : 'mirr',                                               // Make it reflective.
            }
    } },
}

Output in the form of netcdf datacubes. Example energy density of the above input: image info

Dependencies

~18–27MB
~413K SLoC