{"id":34241908,"url":"https://github.com/danielpeter/membranesphere","last_synced_at":"2026-03-11T07:34:25.716Z","repository":{"id":293700465,"uuid":"984376883","full_name":"danielpeter/membraneSphere","owner":"danielpeter","description":"membraneSphere simulates waves on a spherical membrane.","archived":false,"fork":false,"pushed_at":"2025-05-19T11:55:24.000Z","size":80583,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-05T06:27:44.519Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Fortran","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danielpeter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-15T20:42:20.000Z","updated_at":"2025-05-22T16:59:41.000Z","dependencies_parsed_at":"2025-05-16T17:53:31.151Z","dependency_job_id":null,"html_url":"https://github.com/danielpeter/membraneSphere","commit_stats":null,"previous_names":["danielpeter/membranesphere"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/danielpeter/membraneSphere","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpeter%2FmembraneSphere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpeter%2FmembraneSphere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpeter%2FmembraneSphere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpeter%2FmembraneSphere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielpeter","download_url":"https://codeload.github.com/danielpeter/membraneSphere/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpeter%2FmembraneSphere/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30374423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-16T04:23:23.004Z","updated_at":"2026-03-11T07:34:25.551Z","avatar_url":"https://github.com/danielpeter.png","language":"Fortran","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# membraneSphere - membrane waves on a spherical Earth\n\n---\n\n![membrane wave simulation](doc/wave-simulation2.gif \"membrane wave simulation\")\n\n*membraneSphere* is a software package to simulate waves on a spherical membrane.\nIt implements the membrane wave method introduced by Tanimoto (1990).\nMembrane waves are an analogue for seismic surface waves.\nThe zero-thickness sphere is discretized by a geodesic grid (Tape, 2003).\nWave propagation on this sphere is solved by a finite-difference scheme for such hexagonal grids (Tape, 2003; Heikes \u0026 Randall, 1995a).\n\nThe theory behind this software implementation of the membrane waves is explained in these publications:\n\n* *Peter, D., C. Tape, L. Boschi and J. H. Woodhouse*, 2007.\u003cbr\u003e\n  **Surface wave tomography: global membrane waves and adjoint methods**,\u003cbr\u003e\n  Geophys. J. Int., 171: p. 1098-1117.\u003cbr\u003e\n  [doi:10.1111/j.1365-246X.2007.03554.x]( https://doi.org/10.1111/j.1365-246X.2007.03554.x)\n\n\n* *Tape, C. H.*, 2003.\u003cbr\u003e\n  **Waves on a Spherical Membrane**,\u003cbr\u003e\n  M.Sc. thesis, University of Oxford, U.K.\u003cbr\u003e\n  [thesis membrane](https://sites.google.com/alaska.edu/carltape/home/research/thesis_membrane)\n\n\n---\n\n## Quick start\n\n### Installation and compilation\n\nDownload sources:\n```\n$ git clone https://github.com/danielpeter/membraneSphere.git\n```\n\nCompile binaries:\n```\n$ cd membraneSphere/\n$ ./configure\n$ make all\n```\n\nThe compilation requires to have a Fortran compiler and corresponding MPI library installed on your system.\nTo use a specific compiler, one can for example run the configuration for an Intel compiler installation with\n```\n$ ./configure FC=ifort MPIFC=mpiifort\n```\nYou can also modify the Makefile according to your specific needs.\n\n### Run a membrane wave simulation\n\nGo to the `examples/Love_waves_150s/` folder:\n```\n$ cd examples/Love_waves_150s/\n```\nand run the simulation script:\n```\n$ ./run_this_example.sh\n```\n\nThis 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.\n\n\n---\n\n## Details\n\n### Infos about the repository folders\n\n- `data/griddata/`\n\n    holds the data for the grid construction\n\n- `data/phasedata/`\n\n    has two examples of phase speed models which can be used for a heterogeneous\n    background earth in the membrane wave simulation\n\n- `src/propagation/`\n\n    the main executables propagation, timelag \u0026 adjointMethod are located therein\n\n- `src/include/`\n\n    contains source files for routines\n\n\n\n### Main executables are in the folder `src/propagation/`\n\n* **propagation.f90**  -  forward modeling of membrane waves\n\n    The main program 'propagation' calculates a simulation of membrane waves\n    propagating over a sphere.\n\n    It reads the main input file Parameter_Input. Other parameters can be set\n    in the `commonModules.f90` file.\n\n    File output is the seismogram\n    (format: time/displacement, time in seconds),\n    written in the data directory given in Parameter_Input.\n\n    For checking, it also outputs the used phase map\n    (format: longitude/latitude/phasespeed)\n    and the phase speed squared at the vertices\n    (format: verticeID/phasespeedsquared).\n\n    Visualization of the seismograms can be done with the GNUPLOT application.\n    The scripts/ folder holds a bash-script for visualization of the\n    phase map with GMT.\n\n\n* **adjointMethod.f90**  -  kernel construction by membrane waves\n\n    The executable performs a simulation, where no scatterer is present,\n    and calculates the adjoint source.\n    Then it makes a time-reversed simulation and computes the kernel values.\n\n    It reads the main input file `Parameter_Input`. Other parameters can be set\n    in the `commonModules.f90` file.\n\n    The kernel values are written to a file in the data directory given in `Parameter_Input`\n    (format: longitude/latitude/kernelvalue/vertexID).\n    Kernel values are evaluated at the vertices of the spherical membrane grid only.\n    The kernel-file name can be set in `Parameter_Input` as well.\n\n    To visualize the kernel, there are two bash-scripts in the `scripts/` folder\n    using GMT. These scripts `gmtplot_2Dkernel.sh` (plot as 2D map) and\n    `gmtplot_3Dkernel.sh` (plot in 3D perspective) interpolate the kernel file\n    and output cross-sections at different longitudes as well.\n\n\n* **timelag.f90**  -  phase shift/time shift of two seismograms\n\n    This utility program calculates the time lag between two seismograms.\n\n    It reads only the input file `Timelag_Input`. Other parameters (especially\n    the filter parameters) are taken from `commonModules.f90`.\n\n    The time shift result is written to the console.\n\n* **heterogeneousPhaseshift.f90** - synthetic phase-shift calculations\n\n    This program outputs a synthetic database of phase-shift measurements\n    for any heterogeneous input model.\n\n    Given a source/station file specified in the `Parameter_Input` file,\n    it numerically calculates the phase shift\n    for each particular setup, based on cross-correlations between a\n    reference trace (PREM) and the synthetic trace for any heterogeneous\n    background phase-velocity model.\n\n\n### Parameters to change on different machines\n\n- codes are written in Fortran90, use the appropriate compiler flags\n  in the Makefile by setting F90, FFLAGS, LDFLAGS\n\n- in `src/include/constants.h` you have to choose precision (use single, it'll do).\n\n- in `src/include/commonModules.f90` you have to choose source parameters (see Carl Tape's thesis) and filter parameters.\n  There are also a few others, but defaults should do it.\n\n- For simulation runs, you probably want to create a new work directory. Examples are given in `examples/` subdirectory.\n  The main program `propagation` reads in simulation parameters from file `Parameter_Input`,\n  where you can choose the physical model (grid refinement level, simulation times and wave type)\n  and set the source/receiver geometry.\n  You can also select to place a scatterer and/or use a heterogeneous background phase speed model.\n\n  The program `timelag` reads in parameters from file `Timelag_Input`.\n  You would want to specify two traces and a window size to compute the time lag between those trace sections.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielpeter%2Fmembranesphere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielpeter%2Fmembranesphere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielpeter%2Fmembranesphere/lists"}