Skip to content

IngridKJ/momentum_balance_inertia

Repository files navigation

momentum_balance_inertia

This repository contains everything needed to run the simulation examples found in the MPSA-Newmark paper.

Models

The model classes are standardized setups for solving the elastic wave equation with absorbing boundary conditions with PorePy. There are currently two model class setups:

  • elastic_wave_equation_abc considers a general setup for solving the elastic wave equation with absorbing boundaries on all domain sides.
  • elastic_wave_equation_abc_linear considers the case where all equations related to fractures in the domain are discarded. In practice this means that the model class is used for solving elastic wave propagation in rocks without fractures, or in rocks with open fractures (inner zero traction Neumann boundaries). In both cases the problem is linear, meaning that the Jacobian doesn't change between time steps. Hence, this model setup facilitates that the Jacobian is assembled only once. The linear model setup should be used together with the custom run-model function which is detailed in the section below.

Custom solvers and run-functions

solvers contains mixins for custom solvers. Specifically, the mixin that is there now will allow for PETSc usage whenever that is available. It also takes into consideration whether the Jacobian should be assembled or fetched, where the latter is the case if elastic_wave_equation_abc_linear is the model setup to be run.

run_models contains custom run-models functions. In the case of a the Jacobian being assembled only once, adaptations were needed to the run-model-function which originally lies within PorePy such that the residual was not assembled twice per time step.

Verification: Convergence and energy decay analyses

Convergence analysis of MPSA-Newmark

The convergence analyses presented in the article are performed with homogeneous Dirichlet conditions on a 3D simplex grid:

All the runscripts utilize manufactured_solution_dynamic_3D as the manufactured solution setup.

Convergence analysis of MPSA-Newmark with absorbing boundaries

Convergence of the solution is performed in a quasi-1D setting

Convergence in space and time:

All the runscripts utilize model_convergence_ABC2 as the model class setup.

Energy decay analysis of MPSA-Newmark with absorbing boundaries

The energy decay analysis is performed both for successive refinement of the grid, as well as for varying wave incidence angles.

Simulation examples

Simulation example runscripts are found within this folder.

Utility material

A collection of utility material is found within the utils directory:

  • anisotropy mixins contains mixins for anisotropic stiffness tensors.
  • perturbed_geometry_mixins contains mixins for three types/configurations of perturbed geometry.
  • stiffness tensors contains a fourth order stiffness tensor object for a transversely isotropic material.
  • utility functions contains mostly functions related to analytical solution expressions and fetching subdomain-related quantities.

I refer to the files within the directory for more details about the specific contents.

Tests

Tests are covering:

  • MPSA-Newmark convergence with homogeneous Dirichlet conditions in 2D and 3D.
  • MPSA-Newmark convergence with absorbing boundary conditions.
  • Construction of the transversely isotropic tensor.
  • The utility function inner_domain_cells which is used in the construction of the transversely isotropic tensor.

About

Code for including inertia term to momentum balance

Resources

Stars

Watchers

Forks

Languages