New Mexico Tech
Dept. Earth & Env. Science

Ronni Grapenthin - CrusDe Project

CrusDe - Overview

CrusDe is a plug-in based simulation framework to study effects due to changes in loads resting on the Earth's surface. Such changes could for example involve a melting glacier, oscillating snow loads, or lava flows. The focus in the simulation could be the response of the Earth's crust in terms of stress changes, changes in strain rates, or simply uplift or subsidence and the respective horizontal displacements of the crust (over time). Users are enabled to:

CrusDe implements Green's method in which a unit impulse response is convolved with a force as shown in Figure 1. Realizations of its model elements are independent and exchangeable on the basis of a plug-in approach. Experiment definitions are given in XML files (see Listing 1). To this point CrusDe can simulate everything it was given a unit impulse response.

Figure 1: Data flow (arrows) between {\sc CrusDe}'s software components (boxes). The fundamental equation is given for reference; the terms are vertically aligned with implementing components. The boxes in dark gray with bold arrows mark the minimum of participating software components; elements in light gray are optional. Reflexive arrows denote reuse of components within their category, i.e. a new Green's function can only use other existing Green's functions. Reflexive arrows refer to components that can access functionality of other components of its category. The 2D convolution operator takes data from the Green's and load function. Depending on whether relaxation or load history are defined the 3D convolution must be used, which itself reuses the 2D operator. The result for the examined area is calculated and post-processors can be applied to it. A result handler writes the modeling results in a particular format to the file system or might be used to pass it to a different

\noindent CrusDe's plug-in mechanism aims for straightforward extendability allowing modelers to include, for example, yet not supported Earth models. Current Green's function implementations:

can be combined to express: due to: that can have independent load history and crustal decay functions.

A complete experiment definition is given in the following:

<?xml version="1.0" encoding="UTF-8"?>

<!-- This model is equivalent to the one used in Grapenthin et al., GRL, 2007 to de- -->
<!-- scribe the elastic response of the crust to annual changes in the snow load of  -->
<!-- Icelandic ice caps. We used a simple sinusoidal function as a load history. The -->
<!-- result shows the elastic response of the crust to the load changes over a full  -->
<!-- year. The load maximum is in mid-May (day 140).                                 -->

<experiment name="icelandic rhythmics">
  <file   name="result" value="./elastic_timeseries.nc" />  <!--result file -->
<!-- MODEL SPACE CONFIG -->  
  <region    name="west"      value="146427" />
  <region    name="east"      value="804368" />
  <region    name="south"     value="296989" />
  <region    name="north"     value="739536" />
  <parameter name="gridsize"  value="5000"   />            <!-- cell border size [m] -->
 
<!-- MODEL TIME CONFIG -->  
  <parameter name="timestep_size"  value="1"/>             <!-- each step is a day  -->
  <parameter name="timesteps"      value="365"/>           <!-- 365 steps == 1 year -->

<!-- KERNEL DEFINITION - we want to do something with time, hence 3d convolution! -->
  <kernel> <plugin name="fast 3d convolution" /> </kernel>
  
<!-- EARTH MODEL (equations 1 and 2 in Pinel et al., 2007, GJI)-->
 <greens_function>
  <plugin    name="elastic halfspace (pinel)"/>
  <parameter name="g"  value="9.81"/>                      <!--acc. due to gravity-->
  <parameter name="nu" value="0.25" />                     <!--Poisson ratio-->
  <parameter name="E"  value="40"/>                        <!--Young's modulus-->
 </greens_function>

<!-- LOAD MODEL-each value of the load history will be multiplied with the -->
<!-- convolution result of the Green's function and the load function.     -->
 <load_function>
    <!--load of arbitrary shape, defined in a file in xyz format in Lambert coords-->
    <load>
      <plugin    name="irregular load" />            
      <parameter name="rho"      value="1000"/>
      <parameter name="file"     value="./load/load_all_glaciers.dat"/>
    </load>
    
    <!--load history: a cosine, define period, set the point of maximum amplitude -->
    <load_history>
      <plugin    name="sinusoidal" />
      <parameter name="period_length" value="365"/>	   <!-- period is a year   -->
      <parameter name="peak" value="140" />		   <!-- maximum in mid-May -->
    </load_history>
 </load_function>

<!-- POSTPROCESSORS - here come the things that add a little comfort to the results -->
  <postprocessor> 
    <!-- we want the horizontal displacement for cylindrical coordinates -->
    <plugin name="xy2r" /> 
  </postprocessor>

<!-- RESULT HANDLER - write data in netCDF format -->
  <output> <plugin name="netcdf writer"/> </output>
</experiment>
Figure 2: A full experiment / model definition for CrusDe given in XML.

I would be pleased to receive new plug-in solutions (sufficiently documented / commented) for any category, discuss the solutions, and make them available to the public.

| Last modified: March 12 2019 15:18.