Note
Go to the end to download the full example code.
Run a simulation of a local region on Mars.#
By David Minton and Dennise Valadez
This example demonstrates how to use the HiResLocal Surface to run a crater population over a small region of a planet, in this case Mars.
For this example, we will The simulation uses the default Mars configuration and runs for 1 billion years on a local region with a radius of 20 km and resolution of 100 m/pix. We then visualize the surface using PyVista and a Mars-like colormap. We also pass an option that will automatically generate hillshade plots each time the surface is saved. You can also pass in “elevation” to generate elevation plots instead of hillshade plots.

Generating a new grid.
Creating a new grid
Center of local region: (0.0, 0.0)
Radius of local region: 20.00 km
Local region pixel size: 200.0 m
Generated 31425 points in the local region.
Generated 31478 points in the superdomain region.
0%| | 0/1 [00:00<?, ?interval/s]
Current: 1.000 Gy bp; Elapsed: 0 My: 0%| | 0/1 [00:00<?, ?interval/s]
Generating crater population: 0%| | 0/365 [00:00<?, ?crater/s]
Generating crater population: 8%|▊ | 29/365 [00:00<00:01, 283.95crater/s]
Generating crater population: 16%|█▌ | 58/365 [00:00<00:01, 262.48crater/s]
Generating crater population: 23%|██▎ | 85/365 [00:00<00:01, 253.33crater/s]
Generating crater population: 30%|███ | 111/365 [00:00<00:01, 232.77crater/s]
Generating crater population: 37%|███▋ | 135/365 [00:00<00:01, 221.13crater/s]
Generating crater population: 43%|████▎ | 158/365 [00:00<00:00, 213.00crater/s]
Generating crater population: 49%|████▉ | 180/365 [00:00<00:00, 209.61crater/s]
Generating crater population: 55%|█████▌ | 202/365 [00:00<00:00, 210.18crater/s]
Generating crater population: 61%|██████▏ | 224/365 [00:01<00:00, 211.86crater/s]
Generating crater population: 67%|██████▋ | 246/365 [00:01<00:00, 208.52crater/s]
Generating crater population: 73%|███████▎ | 267/365 [00:01<00:00, 206.54crater/s]
Generating crater population: 79%|███████▉ | 288/365 [00:01<00:00, 206.22crater/s]
Generating crater population: 85%|████████▍ | 309/365 [00:01<00:00, 202.90crater/s]
Generating crater population: 90%|█████████ | 330/365 [00:01<00:00, 204.03crater/s]
Generating crater population: 97%|█████████▋| 353/365 [00:01<00:00, 208.95crater/s]
Preparing craters for emplacement: 0%| | 0/365 [00:00<?, ?crater/s]
Queueing craters for emplacement: 0%| | 0/365 [00:00<?, ?crater/s]
Queueing craters for emplacement: 29%|██▉ | 106/365 [00:00<00:00, 1057.10crater/s]
Queueing craters for emplacement: 59%|█████▊ | 214/365 [00:00<00:00, 1061.23crater/s]
Queueing craters for emplacement: 88%|████████▊ | 323/365 [00:00<00:00, 1070.74crater/s]
Emplacing craters: 0%| | 0/365 [00:00<?, ?craters/s]
Emplacing craters: 1%|▏ | 5/365 [00:00<00:07, 47.25craters/s]
Emplacing craters: 3%|▎ | 10/365 [00:01<00:39, 8.98craters/s]
Emplacing craters: 4%|▍ | 15/365 [00:01<00:28, 12.47craters/s]
Emplacing craters: 5%|▌ | 19/365 [00:03<01:09, 5.01craters/s]
Emplacing craters: 6%|▋ | 23/365 [00:04<01:13, 4.67craters/s]
Emplacing craters: 8%|▊ | 30/365 [00:06<01:08, 4.86craters/s]
Emplacing craters: 9%|▉ | 32/365 [00:06<01:06, 5.01craters/s]
Emplacing craters: 10%|▉ | 35/365 [00:07<01:12, 4.56craters/s]
Emplacing craters: 10%|█ | 38/365 [00:08<01:15, 4.31craters/s]
Emplacing craters: 12%|█▏ | 42/365 [00:09<01:15, 4.29craters/s]
Emplacing craters: 12%|█▏ | 45/365 [00:10<01:14, 4.27craters/s]
Emplacing craters: 14%|█▎ | 50/365 [00:11<01:12, 4.37craters/s]
Emplacing craters: 16%|█▌ | 57/365 [00:12<01:07, 4.54craters/s]
Emplacing craters: 17%|█▋ | 62/365 [00:13<01:04, 4.71craters/s]
Emplacing craters: 18%|█▊ | 67/365 [00:13<01:00, 4.92craters/s]
Emplacing craters: 21%|██ | 75/365 [00:14<00:54, 5.30craters/s]
Emplacing craters: 21%|██▏ | 78/365 [00:14<00:52, 5.51craters/s]
Emplacing craters: 22%|██▏ | 81/365 [00:15<00:51, 5.52craters/s]
Emplacing craters: 25%|██▍ | 90/365 [00:15<00:46, 5.96craters/s]
Emplacing craters: 27%|██▋ | 100/365 [00:15<00:39, 6.75craters/s]
Emplacing craters: 29%|██▉ | 105/365 [00:16<00:38, 6.82craters/s]
Emplacing craters: 30%|██▉ | 108/365 [00:16<00:37, 6.78craters/s]
Emplacing craters: 32%|███▏ | 116/365 [00:17<00:35, 7.00craters/s]
Emplacing craters: 33%|███▎ | 119/365 [00:18<00:35, 6.97craters/s]
Emplacing craters: 35%|███▍ | 126/365 [00:18<00:33, 7.18craters/s]
Emplacing craters: 35%|███▌ | 128/365 [00:19<00:33, 7.13craters/s]
Emplacing craters: 36%|███▋ | 133/365 [00:19<00:32, 7.21craters/s]
Emplacing craters: 38%|███▊ | 138/365 [00:20<00:31, 7.29craters/s]
Emplacing craters: 40%|████ | 146/365 [00:20<00:29, 7.53craters/s]
Emplacing craters: 42%|████▏ | 153/365 [00:21<00:27, 7.70craters/s]
Emplacing craters: 44%|████▍ | 162/365 [00:22<00:25, 7.99craters/s]
Emplacing craters: 45%|████▌ | 166/365 [00:22<00:24, 7.99craters/s]
Emplacing craters: 46%|████▋ | 169/365 [00:23<00:24, 7.89craters/s]
Emplacing craters: 48%|████▊ | 176/365 [00:23<00:23, 8.05craters/s]
Emplacing craters: 51%|█████ | 186/365 [00:23<00:20, 8.69craters/s]
Emplacing craters: 52%|█████▏ | 191/365 [00:24<00:20, 8.58craters/s]
Emplacing craters: 53%|█████▎ | 195/365 [00:25<00:19, 8.51craters/s]
Emplacing craters: 54%|█████▍ | 198/365 [00:25<00:19, 8.42craters/s]
Emplacing craters: 55%|█████▌ | 202/365 [00:26<00:19, 8.36craters/s]
Emplacing craters: 57%|█████▋ | 209/365 [00:26<00:18, 8.50craters/s]
Emplacing craters: 59%|█████▊ | 214/365 [00:27<00:17, 8.51craters/s]
Emplacing craters: 61%|██████ | 223/365 [00:28<00:16, 8.74craters/s]
Emplacing craters: 62%|██████▏ | 225/365 [00:28<00:16, 8.59craters/s]
Emplacing craters: 64%|██████▍ | 235/365 [00:29<00:14, 8.86craters/s]
Emplacing craters: 66%|██████▋ | 242/365 [00:29<00:13, 8.95craters/s]
Emplacing craters: 67%|██████▋ | 245/365 [00:30<00:13, 8.84craters/s]
Emplacing craters: 68%|██████▊ | 249/365 [00:31<00:13, 8.69craters/s]
Emplacing craters: 70%|██████▉ | 255/365 [00:31<00:12, 8.68craters/s]
Emplacing craters: 72%|███████▏ | 264/365 [00:32<00:11, 8.87craters/s]
Emplacing craters: 75%|███████▍ | 273/365 [00:33<00:10, 9.06craters/s]
Emplacing craters: 77%|███████▋ | 280/365 [00:33<00:09, 9.07craters/s]
Emplacing craters: 78%|███████▊ | 286/365 [00:34<00:08, 9.08craters/s]
Emplacing craters: 79%|███████▉ | 288/365 [00:34<00:08, 9.10craters/s]
Emplacing craters: 80%|███████▉ | 291/365 [00:35<00:08, 8.94craters/s]
Emplacing craters: 81%|████████ | 294/365 [00:36<00:08, 8.81craters/s]
Emplacing craters: 82%|████████▏ | 299/365 [00:36<00:07, 8.78craters/s]
Emplacing craters: 85%|████████▍ | 309/365 [00:36<00:06, 9.31craters/s]
Emplacing craters: 86%|████████▋ | 315/365 [00:37<00:05, 9.29craters/s]
Emplacing craters: 88%|████████▊ | 322/365 [00:38<00:04, 9.33craters/s]
Emplacing craters: 91%|█████████ | 331/365 [00:38<00:03, 9.41craters/s]
Emplacing craters: 91%|█████████ | 333/365 [00:39<00:03, 9.26craters/s]
Emplacing craters: 92%|█████████▏| 337/365 [00:39<00:03, 9.17craters/s]
Emplacing craters: 95%|█████████▌| 347/365 [00:40<00:01, 9.36craters/s]
Emplacing craters: 97%|█████████▋| 353/365 [00:41<00:01, 9.36craters/s]
Emplacing craters: 99%|█████████▊| 360/365 [00:42<00:00, 9.39craters/s]
Emplacing craters: 99%|█████████▉| 363/365 [00:42<00:00, 9.29craters/s]
Counting craters: 0craters [00:00, ?craters/s]
Current: 1.000 Gy bp; Elapsed: 0 My: 100%|██████████| 1/1 [00:49<00:00, 49.64s/interval]
Current: 1.000 Gy bp; Elapsed: 0 My: 100%|██████████| 1/1 [00:49<00:00, 49.64s/interval]
Converting xarray Dataset to Crater objects: 0%| | 0/365 [00:00<?, ?crater/s]
Converting xarray Dataset to Crater objects: 12%|█▏ | 43/365 [00:00<00:00, 421.79crater/s]
Converting xarray Dataset to Crater objects: 24%|██▎ | 86/365 [00:00<00:00, 423.50crater/s]
Converting xarray Dataset to Crater objects: 35%|███▌ | 129/365 [00:00<00:00, 423.86crater/s]
Converting xarray Dataset to Crater objects: 47%|████▋ | 172/365 [00:00<00:00, 424.32crater/s]
Converting xarray Dataset to Crater objects: 59%|█████▉ | 215/365 [00:00<00:00, 424.40crater/s]
Converting xarray Dataset to Crater objects: 71%|███████ | 258/365 [00:00<00:00, 422.11crater/s]
Converting xarray Dataset to Crater objects: 82%|████████▏ | 301/365 [00:00<00:00, 419.85crater/s]
Converting xarray Dataset to Crater objects: 94%|█████████▍| 344/365 [00:00<00:00, 421.46crater/s]
<IPython.core.display.Image object>
from IPython.display import Image
from cratermaker import Simulation
simdir = "simdata-1_3"
# Note, that for these examples we pass ask_overwrite=False and reset=True to the Simulation constructor. This will suppress
# prompts that ask the user if they want to overwrite existing files, which would would prevent these examples from running on their
# own when building the documentation pages. Alternatively, calling cm.cleanup(simdir) will remove all pre-existing output files.
# Run a simple Mars sim
sim = Simulation(
target="Mars",
surface="hireslocal",
local_location=(0, 0),
pix=200.0,
local_radius=20.0e3,
rng_seed=86186233405, # This will ensure we get the same crater population each time we run the example
simdir=simdir,
ask_overwrite=False,
reset=True,
)
# This will automatically generate a hillshade plot every time the simulation is saved. All components of Cratermaker have a save_actions property that can be used to specify actions to be performed when the save function is called. This is useful for automatically generating plots or other outputs at specified intervals during the simulation.
sim.save_actions = [
{
"plot": {
"plot_style": "hillshade",
"cmap": "pink",
"scalebar": True,
"label": "Mars region simulation",
"show": True,
"save": True,
}
}
]
sim.run(age=1000)
sim.show3d(variable_name="face_elevation", cmap="pink")
# We can also display the saved image directly. The name will depend on the plot_style option used above.
Image(filename=sim.surface.plot_dir / "local_surface_hillshade000001.png")
Total running time of the script: (1 minutes 20.274 seconds)