membranesphere
membraneSphere simulates waves on a spherical membrane.
Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.1%) to scientific vocabulary
Repository
membraneSphere simulates waves on a spherical membrane.
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 1
Metadata Files
README.md
membraneSphere - membrane waves on a spherical Earth

membraneSphere is a software package to simulate waves on a spherical membrane. It implements the membrane wave method introduced by Tanimoto (1990). Membrane waves are an analogue for seismic surface waves. The zero-thickness sphere is discretized by a geodesic grid (Tape, 2003). Wave propagation on this sphere is solved by a finite-difference scheme for such hexagonal grids (Tape, 2003; Heikes & Randall, 1995a).
The theory behind this software implementation of the membrane waves is explained in these publications:
Peter, D., C. Tape, L. Boschi and J. H. Woodhouse, 2007.
Surface wave tomography: global membrane waves and adjoint methods,
Geophys. J. Int., 171: p. 1098-1117.
doi:10.1111/j.1365-246X.2007.03554.xTape, C. H., 2003.
Waves on a Spherical Membrane,
M.Sc. thesis, University of Oxford, U.K.
thesis membrane
Quick start
Installation and compilation
Download sources:
$ git clone https://github.com/danielpeter/membraneSphere.git
Compile binaries:
$ cd membraneSphere/
$ ./configure
$ make all
The compilation requires to have a Fortran compiler and corresponding MPI library installed on your system.
To use a specific compiler, one can for example run the configuration for an Intel compiler installation with
$ ./configure FC=ifort MPIFC=mpiifort
You can also modify the Makefile according to your specific needs.
Run a membrane wave simulation
Go to the examples/Love_waves_150s/ folder:
$ cd examples/Love_waves_150s/
and run the simulation script:
$ ./run_this_example.sh
This will run two membrane wave simulations, one for a homogeneous phase-velocity map and another one with a heterogeneous phase-velocity map. It then computes the cross-correlation time lag between the two resulting traces.
Details
Infos about the repository folders
data/griddata/holds the data for the grid construction
data/phasedata/has two examples of phase speed models which can be used for a heterogeneous background earth in the membrane wave simulation
src/propagation/the main executables propagation, timelag & adjointMethod are located therein
src/include/contains source files for routines
Main executables are in the folder src/propagation/
propagation.f90 - forward modeling of membrane waves
The main program 'propagation' calculates a simulation of membrane waves propagating over a sphere.
It reads the main input file Parameter_Input. Other parameters can be set in the
commonModules.f90file.File output is the seismogram (format: time/displacement, time in seconds), written in the data directory given in Parameter_Input.
For checking, it also outputs the used phase map (format: longitude/latitude/phasespeed) and the phase speed squared at the vertices (format: verticeID/phasespeedsquared).
Visualization of the seismograms can be done with the GNUPLOT application. The scripts/ folder holds a bash-script for visualization of the phase map with GMT.
adjointMethod.f90 - kernel construction by membrane waves
The executable performs a simulation, where no scatterer is present, and calculates the adjoint source. Then it makes a time-reversed simulation and computes the kernel values.
It reads the main input file
Parameter_Input. Other parameters can be set in thecommonModules.f90file.The kernel values are written to a file in the data directory given in
Parameter_Input(format: longitude/latitude/kernelvalue/vertexID). Kernel values are evaluated at the vertices of the spherical membrane grid only. The kernel-file name can be set inParameter_Inputas well.To visualize the kernel, there are two bash-scripts in the
scripts/folder using GMT. These scriptsgmtplot_2Dkernel.sh(plot as 2D map) andgmtplot_3Dkernel.sh(plot in 3D perspective) interpolate the kernel file and output cross-sections at different longitudes as well.timelag.f90 - phase shift/time shift of two seismograms
This utility program calculates the time lag between two seismograms.
It reads only the input file
Timelag_Input. Other parameters (especially the filter parameters) are taken fromcommonModules.f90.The time shift result is written to the console.
heterogeneousPhaseshift.f90 - synthetic phase-shift calculations
This program outputs a synthetic database of phase-shift measurements for any heterogeneous input model.
Given a source/station file specified in the
Parameter_Inputfile, it numerically calculates the phase shift for each particular setup, based on cross-correlations between a reference trace (PREM) and the synthetic trace for any heterogeneous background phase-velocity model.
Parameters to change on different machines
codes are written in Fortran90, use the appropriate compiler flags in the Makefile by setting F90, FFLAGS, LDFLAGS
in
src/include/constants.hyou have to choose precision (use single, it'll do).in
src/include/commonModules.f90you have to choose source parameters (see Carl Tape's thesis) and filter parameters. There are also a few others, but defaults should do it.For simulation runs, you probably want to create a new work directory. Examples are given in
examples/subdirectory. The main programpropagationreads in simulation parameters from fileParameter_Input, where you can choose the physical model (grid refinement level, simulation times and wave type) and set the source/receiver geometry. You can also select to place a scatterer and/or use a heterogeneous background phase speed model.
The program timelag reads in parameters from file Timelag_Input.
You would want to specify two traces and a window size to compute the time lag between those trace sections.
Owner
- Name: daniel peter
- Login: danielpeter
- Kind: user
- Website: https://danielpeter.github.io
- Repositories: 12
- Profile: https://github.com/danielpeter
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If this software turns out to be helpful for your research, please cite both the article from preferred-citation and the software itself."
title: 'membraneSphere'
version: v1.2
date-released: '2025-03-01'
repository-code: https://github.com/danielpeter/membraneSphere/tree/v1.2
url: "https://github.com/danielpeter/membraneSphere"
type: software
identifiers:
- type: doi
- value: 10.5281/zenodo.10413988
license: "MIT"
authors:
- family-names: Peter
given-names: Daniel
preferred-citation:
type: article
authors:
- family-names: Peter
given-names: Daniel
- family-names: Tape
given-names: Carl
- family-names: Boschi
given-names: Lapo
- family-names: Woodhouse
given-names: John
title: "Surface wave tomography: global membrane waves and adjoint methods"
journal: "Geophys. J. Int."
volume: 171
start: 1098 # First page number
end: 1117 # Last page number
year: 2007
GitHub Events
Total
- Watch event: 1
- Push event: 2
- Gollum event: 8
- Create event: 6
Last Year
- Watch event: 1
- Push event: 2
- Gollum event: 8
- Create event: 6