Some Thoughts on Simulating Volatiles

Hi experts,

I am currently attempting to implement the simulation of volatile substances (such as water) movement in the mantle using ASPECT. Specifically, I aim to simulate long-term (approximately 1 billion years) water migration in the mantle using compressible viscoplastic materials in a 2D annular domain (360°, with realistic Earth’s inner and outer radii). After reviewing relevant literature (links provided at the end), I have developed some thoughts on this problem and am eager to know if my approach is feasible or if it has any flaws.

a. Basic Concept

Similar to the referenced literature, I plan to use a particle-based method to simulate the material field. Specifically, there will be a mantle rock composition field and a water content field (expressed as mass fraction). Each mantle rock particle has a maximum water capacity, which is obtained via lookup tables based on its composition (C), pressure (p), and temperature (T).

As the mantle flows, the maximum water capacity of each particle changes. If the current water content of a particle exceeds its maximum capacity, the excess water should migrate.

b. Assumptions for Water Migration

The excess water is assumed to move in the direction of buoyancy (i.e., opposite to gravity, referred to as “upward” hereafter) with a velocity sufficiently large (relative to the mantle velocity) that it continues moving until the excess water is either reabsorbed by other rocks or exits the model through the surface boundary (analogous to volcanic eruptions).

c. Implementation Details

I will add a water migration process to the particle advection step (within advance_timestep()), specifically after exchanging ghost particles.

This migration process will be implemented using a global array of structs, where each struct corresponds one-to-one with each cell in ASPECT via an ID. Each struct records:

  • The ID of the cell
  • The coordinates of the cell’s center
  • The ID of the adjacent cell above (as defined earlier)
  • The mass of water to be migrated from this cell
  • The remaining capacity for additional water in this cell

This array will be sorted by coordinates to ensure a traversal order from bottom to top.

The implementation steps are:

  1. Create the global array: Traverse all cells and their particles to populate the structs with initial data.
  2. Update the array: Traverse the sorted array to redistribute excess water according to the assumptions above.
  3. Update particles: Based on the updated array, adjust the water content of particles in each cell. Specifically, if a cell receives additional water in step 2, this water is distributed among its particles.

d. Supplementary Notes

  1. The water content field records water as a percentage (%), while the global array uses absolute mass. Conversion between these requires each particle’s mass, which is assumed to be the total cell mass divided by the number of particles in that cell.
  2. In adaptive meshes, a cell might have two cells above it. In this case, water migrating from the lower cell is evenly distributed between the two upper cells.
  3. For particle creation/deletion:
  • Newly created particles have no initial water content.
  • When particles are deleted, their water content is redistributed among remaining particles in the same cell.

My Questions

  1. Will this approach accurately capture long-term large-scale water migration in the mantle, such as water from the surface being transported into the lower mantle via long-term subduction?
  2. In adaptive meshes, will varying numbers of particles in cells of different refinement levels significantly affect water content calculations?
  3. Once implemented, what validation methods would best test the accuracy of this model?

Thank you for taking the time to read this. I welcome any feedback or suggestions you may have.

Literature

Growth of continental crust and lithosphere subduction in the Hadean revealed by geochemistry and geodynamics | Nature Communications

Frontiers | Building archean cratonic roots

@Franco - Welcome to the community and thank you for posting to the forum!

Likewise, thank you for clearly outlining the problem you would like to address with ASPECT, relevant literature, and a first-order idea for the numerical workflow and implementation.

Before we dive into the specifics our your proposed plan, here a few general thoughts and links to existing functionality that it may be helpful to review before we discuss specific plans further:

  1. There is a framework for combining fluid-rock interaction and solid material models (e.g. visco plastic, grain size) via the reactive fluid transport model. This material model composites a solid base model with a material model that handles the fluid-rock interaction component (chemical reactions, modifications to viscosity, etc).
  2. There is an advection method that advects a field based on a fluids Darcy velocity, which is a simplification from the full two-phase flow equations implemented in ASPECT.
  3. This cookbook illustrates how to use these features, and may a good place to start if you have not already looked at it and the associated code.
  4. As of this summer, ASPECT does have the capability to track distinct sets of particles. This could be used to to track distinct solid and fluid phases, and I believe some of the developers have begun working on this or at least have thought about it.
  5. Depending on how you determine the fluid (water) velocities, you may run into a significant computational challenge with small time steps size. My group is currently working on coupled volatile transport in subduction systems, and in many cases the time steps go down to 10s of years due to high fluid velocities. This may be intractable in models running for billions of years.

To summarize, I think there is quite a bit of existing functionality that you can build on to achieve your goals, but there are some computational bottlenecks that may arise depending on how the fluid velocities are handled.

Please let us know once you are ready to discuss further, and again welcome to the community and thank you for posting your question to the forum.

Cheers,
John