Complete guide to
config/default_config.yamlEvery tunable parameter with type, units, default value, valid range, and physical implications.
- Metadata
- Target Region
- Physical Constants
- Lunar Parameters
- Surface Optical Properties
- Regolith Thermophysical Properties
- Solver Configuration
- Synthetic DEM
- Output & Visualization
- Reproducibility
- Parameter Sensitivity Guide
metadata:
project_name: "ArtemisThermalBase"
version: "0.1.0"
author: "Mehmet Gümüş"Informational only. Logged for reproducibility and included in output metadata files.
target:
name: "Shackleton Crater"
latitude_deg: -89.54
longitude_deg: 129.78
diameter_km: 21.0
depth_km: 4.2| Parameter | Type | Units | Range | Source |
|---|---|---|---|---|
latitude_deg |
float | degrees | [−90, 90] | Zuber et al. (2012) |
longitude_deg |
float | degrees | [−180, 360] | Zuber et al. (2012) |
diameter_km |
float | km | > 0 | LOLA measurements |
depth_km |
float | km | > 0 | Topographic analysis |
Physical implication: These coordinates are passed to the Skyfield ephemeris engine to compute solar elevation and azimuth angles at the target site. Changing the latitude significantly affects shadow geometry — equatorial sites receive direct sunlight for ~50% of a lunar day, while polar sites may receive near-zero direct illumination.
constants:
stefan_boltzmann: 5.670374419e-8 # [W/m²/K⁴]
solar_constant: 1361.0 # [W/m²]
astronomical_unit: 1.495978707e11 # [m]
speed_of_light: 2.99792458e8 # [m/s]| Parameter | Type | Units | Source |
|---|---|---|---|
stefan_boltzmann |
float | W/m²/K⁴ | CODATA 2018 |
solar_constant |
float | W/m² | Kopp & Lean (2011) |
astronomical_unit |
float | m | IAU 2012 |
Caution
Do not modify these values unless you are implementing a specific physical scenario (e.g., a different epoch of solar luminosity). Incorrect values will produce physically meaningless temperatures.
lunar:
radius_m: 1737400.0
sidereal_period_s: 2360591.5104
synodic_period_s: 2551442.9
obliquity_deg: 1.5424
solar_angular_diameter_deg: 0.533| Parameter | Type | Units | Range | Source |
|---|---|---|---|---|
radius_m |
float | m | — | IAU mean radius |
sidereal_period_s |
float | s | — | 27.321661 days |
synodic_period_s |
float | s | — | 29.530589 days |
obliquity_deg |
float | degrees | — | Rambaux & Williams (2011) |
solar_angular_diameter_deg |
float | degrees | (0, 1] | Mean Sun diameter from Moon |
Physical implication: The solar_angular_diameter_deg controls the size of penumbra regions. A larger value produces wider penumbra bands at shadow edges. Setting this value to 0 would be equivalent to a point-source sun (no penumbra).
surface:
bond_albedo: 0.12
thermal_emissivity: 0.95
reflectance_model: "lambertian"| Parameter | Type | Units | Valid Range | Default | Source |
|---|---|---|---|---|---|
bond_albedo |
float | — | [0.0, 1.0] | 0.12 | Vasavada et al. (2012) |
thermal_emissivity |
float | — | (0.0, 1.0] | 0.95 | Bandfield et al. (2015) |
reflectance_model |
string | — | "lambertian" |
"lambertian" |
— |
Physical implications:
- Increasing
bond_albedo→ more solar flux reflected → lower equilibrium temperatures. A 10% increase in albedo reduces peak temperatures by ~15–20 K. - Decreasing
thermal_emissivity→ less efficient radiative cooling → higher nighttime temperatures. PSR temperature estimates are particularly sensitive to this parameter. - Reflectance model: Only Lambertian is currently supported. A future Hapke model (Milestone 5) would compute direction-dependent reflectance.
regolith:
density:
surface_kg_m3: 1100.0
deep_kg_m3: 1800.0
transition_depth_m: 0.06| Parameter | Type | Units | Valid Range | Default | Source |
|---|---|---|---|---|---|
surface_kg_m3 |
float | kg/m³ | [500, 2000] | 1100 | Hayne et al. (2017) |
deep_kg_m3 |
float | kg/m³ | [1000, 3000] | 1800 | Hayne et al. (2017) |
transition_depth_m |
float | m | (0, 1] | 0.06 | Hayne et al. (2017) |
Physical implication: The density profile controls thermal inertia (H determines how quickly the density increases with depth.
conductivity:
surface:
k_contact: 7.4e-4 # [W/m/K]
k_radiative: 2.0e-11 # [W/m/K⁴]
deep:
k_contact: 3.4e-3 # [W/m/K]
k_radiative: 1.0e-11 # [W/m/K⁴]
layer_boundary_m: 0.02 # [m]| Parameter | Type | Units | Valid Range | Source |
|---|---|---|---|---|
k_contact |
float | W/m/K | [10⁻⁴, 10⁻²] | Hayne et al. (2017) |
k_radiative |
float | W/m/K⁴ | [10⁻¹², 10⁻¹⁰] | Hayne et al. (2017) |
layer_boundary_m |
float | m | (0, 1] | Hayne et al. (2017) |
Physical implications:
k_contactdominates at low temperatures (< 200 K). Increasing it raises PSR floor temperatures.k_radiativedominates at high temperatures (> 300 K). Controls how quickly heat percolates into the subsurface during daytime.- Uncertainty is ±50% — this is the single largest source of uncertainty in lunar thermal models.
specific_heat:
c0: -3.6125
c1: 2.7431
c2: 2.3616e-3
c3: -1.2340e-5
c4: 8.9093e-9
minimum_value: 8.0 # [J/kg/K]Polynomial fit valid for 80 K < T < 400 K. The minimum_value prevents division by zero at
geothermal_flux: 0.018 # [W/m²]| Parameter | Type | Units | Valid Range | Source |
|---|---|---|---|---|
geothermal_flux |
float | W/m² | [0, 0.1] | Langseth et al. (1976) |
Physical implication: This flux sets the deep temperature boundary condition. At 0.018 W/m², the deep subsurface temperature is ~250 K. For PSR studies, this flux provides a lower limit on cold trap temperatures. Uncertainty: ±50% (equatorial measurement applied to polar region).
solver:
thermal:
method: "crank_nicolson"
grid:
dz_surface_m: 5.0e-4 # [m] = 0.5 mm
growth_ratio: 1.07
num_layers: 100
time:
dt_s: 120.0 # [s] = 2 minutes
max_dt_s: 3600.0 # [s]
newton:
max_iterations: 20
tolerance_K: 1.0e-4 # [K]
relaxation: 1.0
initial_temperature_K: 200.0 # [K]| Parameter | Type | Units | Valid Range | Default |
|---|---|---|---|---|
dz_surface_m |
float | m | [10⁻⁴, 10⁻²] | 5×10⁻⁴ |
growth_ratio |
float | — | (1.0, 2.0] | 1.07 |
num_layers |
int | — | [10, 500] | 100 |
dt_s |
float | s | [1, 3600] | 120 |
tolerance_K |
float | K | [10⁻⁶, 10⁻¹] | 10⁻⁴ |
initial_temperature_K |
float | K | [50, 400] | 200 |
Physical implications:
- Increasing
dt_sspeeds up the simulation but may cause temporal discretization errors during fast thermal transients (e.g., sunrise/sunset). The Crank-Nicolson scheme is unconditionally stable, but accuracy degrades with large time steps. For accurate penumbra thermal transients, usedt ≤ 300 s. - Decreasing
dz_surface_mimproves resolution of the thermal skin depth but increases the number of layers and computation time. growth_ratioclose to 1.0 gives near-uniform spacing (expensive but accurate). Values > 1.2 may under-resolve the thermal wave at intermediate depths.num_layers = 100withgrowth_ratio = 1.07gives a grid ~2 m deep, sufficient for thermal isolation.
raytracer:
bvh:
max_leaf_triangles: 4
sah_num_bins: 16
epsilon: 1.0e-10
precision: "float64"| Parameter | Type | Units | Valid Range | Default |
|---|---|---|---|---|
max_leaf_triangles |
int | — | [1, 16] | 4 |
sah_num_bins |
int | — | [4, 64] | 16 |
epsilon |
float | — | [10⁻¹², 10⁻⁶] | 10⁻¹⁰ |
Physical implications:
epsilonis the zero-test threshold for Möller-Trumbore intersection. Too large → misses grazing rays at shadow edges. Too small → floating-point cancellation causes ray leakage. The default 10⁻¹⁰ balances both risks.max_leaf_triangles = 4is optimal for cache efficiency on modern CPUs.
illumination:
solar_disk_samples: 64
sampling_method: "fibonacci"
point_source_mode: false| Parameter | Type | Units | Valid Range | Default |
|---|---|---|---|---|
solar_disk_samples |
int | — | [1, 256] | 64 |
point_source_mode |
bool | — | — | false |
Physical implications:
solar_disk_samplescontrols the Monte Carlo resolution of penumbra. 64 samples gives ~1.5% noise at shadow edges. 32 is acceptable for fast previews; 128+ for publication quality.point_source_mode = truedisables penumbra entirely (binary shadow, ~64× faster). Useful for testing but produces unrealistic sharp shadow boundaries.
synthetic_dem:
type: "parabolic_bowl"
radius_m: 10500.0
depth_m: 4200.0
rim_height_m: 300.0
grid_resolution_m: 20.0
domain_padding_m: 3000.0
seed: 42| Parameter | Type | Units | Valid Range | Default |
|---|---|---|---|---|
type |
string | — | "parabolic_bowl" |
"parabolic_bowl" |
radius_m |
float | m | [100, 100000] | 10500 |
depth_m |
float | m | [10, 10000] | 4200 |
rim_height_m |
float | m | [0, 2000] | 300 |
grid_resolution_m |
float | m/px | [1, 500] | 20 |
seed |
int | — | — | 42 |
Physical implications:
- Smaller
radius_m→ faster simulation (fewer mesh triangles) but may not capture large-scale shadow geometry. grid_resolution_mcontrols the DEM pixel size and thus the number of triangles. At 20 m/px a 21 km crater produces ~500k triangles. At 10 m/px the count quadruples.seedensures reproducible synthetic terrain noise. Change for ensemble simulations.
output:
directory: "results/"
formats:
illumination_map: "npy"
thermal_map: "npy"
time_series: "csv"
save_subsurface_profiles: true
compress: true
visualization:
colormap: "inferno"
dpi: 150
interactive: falseNote: The output.directory is overridden by the --output CLI argument at runtime.
reproducibility:
random_seed: 42
float_precision: "float64"
log_platform_info: true
hash_outputs: truelog_platform_info: Logs Python version, OS, CPU, NumPy version for debugging cross-platform discrepancies.hash_outputs: Computes SHA-256 hash of output arrays for bitwise reproducibility verification.
| Parameter | Sensitivity | Effect on PSR Temperature |
|---|---|---|
k_contact (surface) |
High | ±50% change → ±15–25 K |
thermal_emissivity |
High | ±0.02 → ±5–10 K |
bond_albedo |
Medium | ±0.03 → ±3–5 K (dayside only) |
geothermal_flux |
Medium | ±50% → ±5–8 K (deep temps) |
density_surface |
Low | ±200 kg/m³ → ±2–3 K |
dt_s |
N/A | Numerical parameter, no physical effect if converged |
solar_disk_samples |
N/A | Controls penumbra noise, not equilibrium temperatures |