Skip to content

Blog

We have posted the following blog articles:

A working example

(contributed by Daniel Douglas)

Introduction

Following the previous article, which outlined how to setup a python virtual environment using uv and then compile ASPECT with LandLab, we will now outline how to run a more geologically interesting example demonstrating the successful interfacing between the two software packages. The model will be a 3D Cartesian box that gets uniformly uplifted over the model time, with topography that gets eroded based on stream power and hillslope diffusion. A crucial piece of information which must be passed between ASPECT and LandLab is the velocity. For each time step, the ASPECT model will solve the Stokes equations to determine the velocity within the ASPECT model domain. ASPECT will then send the velocities at the model surface, which is the interface between LandLab and ASPECT, to LandLab where it will be used to uplift and laterally advect the surface while calculating changes in the topography due to erosion/deposition. This change in topography will then be passed back to ASPECT as a velocity which is used to advect the surface of ASPECT to match the surface of LandLab, and the process continues.

Using uv for Python and C++ MPI applications

(contributed by Timo Heister)

Introduction

Based on the first article, that described coupling an MPI Python application with an MPI C++ application, today we will talk about an easy way to set up and install necessary dependencies. A relatively new project in the Python ecosystem is uv. We are going to use uv to install Python and necessaryt dependencies to run a coupled Landlab+ASPECT simulation.

Coupling of MPI parallel Python and C++ simulations

(contributed by Timo Heister)

Introduction

In this article we document the experiments we performed to learn how to correctly couple a Python simulation code to a C++ simulation code, where both projects support parallel computations using MPI. We will need this for this project to couple Landlab (for surface evolution, written in Python) and ASPECT (for the interior, written in C++).