MARMIT-2 simulates the spectral reflectance of moist soils from 400 to 2400 nm. The model describes the soil surface as a mixture of dry soil areas and areas covered by a thin water film, whose thickness L and fractional coverage ε control the darkening effect of moisture.
| Parameter | Symbol | Unit | Description |
|---|---|---|---|
| Soil sample | – | – | Dry soil reflectance spectrum (Bablet 2016 database) |
| Water thickness | L | cm | Thickness of the water layer (0 = dry) |
| Wet fraction | eps | 0–1 | Fraction of surface covered by water film |
| Particle fraction | d_i | 0–1 | Volume fraction of soil particles in the water (0.005) |
Effect of moisture: - Increasing L deepens water absorption bands (970, 1200, 1450 nm) - Increasing eps lowers overall reflectance uniformly - eps = 0 returns the dry soil spectrum unchanged - The nonlinear mixing exponent (2.27) accounts for partial wetting geometry
import de.grogra.rtmodelslibrary.*;
// Preset
double[][] rm = Marmit2.compute(Marmit2Preset.MOIST_LOAM);
// Explicit parameters (soil index 0 = first soil in Bablet 2016)
double[][] rm = Marmit2.compute(
0, // soilIndex (see SpectralData.soilNames())
0.005, // L water layer thickness (cm)
0.7, // eps wet surface fraction (0–1)
0.005 // d_i soil particle volume fraction
);
// Restrict to visible range only
double[][] vis = Marmit2.compute(Marmit2Preset.MOIST_LOAM, 400, 700);
// Access result
double refl680 = rm[280][1]; // wet soil reflectance at 680 nm
// Extract individual arrays
double[] wl = Marmit2.getWavelengths(rm);
double[] refl = Marmit2.getReflectance(rm);
// Build spectral curve directly from double arrays
IrregularSpectralCurve soilCurve = new IrregularSpectralCurve(wl, refl);