SeisModels.jl

SeisModels.jl: A Julia package for models of the Earth's interior - Published in JOSS (2020)

https://github.com/anowacki/seismodels.jl

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    2 of 7 committers (28.6%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

earth geophysics julia seismology

Keywords from Contributors

flux pde the-human-brain ecology graphics julialang dynamical-systems meshing earth-observation connectivity
Last synced: 6 months ago · JSON representation

Repository

Seismic models of the interior of the Earth and other planets

Basic Info
  • Host: GitHub
  • Owner: anowacki
  • License: other
  • Language: Julia
  • Default Branch: master
  • Size: 1.01 MB
Statistics
  • Stars: 8
  • Watchers: 3
  • Forks: 2
  • Open Issues: 0
  • Releases: 11
Topics
earth geophysics julia seismology
Created over 6 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License

README.md

SeisModels.jl

Build status

Build Status Code coverage

Documentation

Publication status

DOI

What is SeisModels.jl?

A Julia package for dealing with models of the Earth's (and other quasi-1D planets') seismic properties.

Currently, only three kinds of one-dimensional models are supported, but all model parameterisations and models are acceptable for inclusion. Contributions are welcome.

Built in models are listed in the documentation.

How to install

SeisModels.jl can be added to your Julia install like so:

julia julia> import Pkg; Pkg.add("SeisModels")

How to use

Model types

The module defines the SeisModel type and subtypes of this specify the kind of model (i.e., symmetry, nature of basis function, etc.).

```julia julia> using SeisModels

julia> subtypes(SeisModel) 1-element Array{Any,1}: SeisModel1D

julia> subtypes(SeisModel1D) 3-element Array{Any,1}: LinearLayeredModel PREMPolyModel SteppedLayeredModel ```

So, there are currently three types of models implemented, all 1D models, with polynomial, linear or constant basis within each layer.

Calculating properties

You can either create your own models by creating a new instance of one of the immutable types, or use the inbuilt models. For instance, for PREM, one can evaluate at an arbitrary radius:

  • VP
  • VS
  • density ρ
  • anisotropic parameters VPH, VPV, VSH, VSV and η

Calculate these by calling the function with the model as the first argument:

```julia julia> vp(PREM, 3500) 13.71171655163979

julia> Qκ(PREM, 1000) 1327.7

julia> density(AK135, radius(AK135, 20)) 2.449 ```

In the last example, we used the radius function to convert depth in the AK135 model to radius and calculate the density at 20 km depth. Some functions also accept the depth keyword argument to instead evaluate properties at a point below the surface:

julia julia> density(AK135, radius(AK135, 20)) == density(AK135, 20, depth=true) true

You can also evaluate values programmatically (i.e., where the parameter of interest is a variable) by using the exported evaluate function, and broadcast the call to get multiple values:

```julia julia> evaluate(AK135, :vp, 3580) 13.653094354838709

julia> parameters = (:vp, :vs, :density);

julia> evaluate.(AK135, parameters, 3680) (13.591187999999999, 7.226264, 5.4003499999999995) ```

Model input and output

Support for reading and writing model files is currently limited. However, SeisModels does support reading and writing of Mineos-format ‘tabular’ models (i.e., SteppedLayeredModels) via the read_mineos and write_mineos functions.

Reference

Exported types

  • SeisModel: Abstract supertype of all models
    • SeisModel1D: Abstract supertype of 1D models
    • LinearLayeredModel: 1D model with linearly-varying properties between node points
    • PREMPolyModel: 1D model defined by PREM-style polynomials (of arbitrary degree)
    • SteppedLayeredModel: 1D model with constant properties between node points

Exported model instances

  • Earth
    • AK135
    • IASP91
    • PREM
    • PREM_NOOCEAN
    • STW105
  • Moon
    • MOON_WEBER_2011

Exported functions

Model properties

  • depth: Return depth in km given a radius and model
  • hasattenuation: Whether a model includes attenuation
  • hasdensity: Whether a model includes density
  • isanisotropic: Whether a model is anisotropic
  • radius: Return radius in km given a depth and model
  • surface_radius: Radius in km of planet

Evaluation functions

  • evaluate: Evaluate a given field for a model at any radius
  • vp: P-wave velocity in km/s
  • vs: S-wave velocity in km/s
  • density: Density in g/cm^3
  • vph: Horizontal P-wave velocity in km/s
  • vpv: Vertical (radial) P-wave velocity in km/s
  • vsh: Horizontally-polarised S-wave velocity in km/s
  • vsv: Vertically-polarised S-wave velocity in km/s
  • eta: Anisotropic parameter
  • , Qmu: Shear quality factor
  • , Qkappa: Bulk quality factor

Derived properties

  • bulk_modulus: Bulk modulus (K) in Pa
  • gravity: Acceleration due to gravity in m/s^2 at a given radius
  • mass: Mass in kg from centre of model to a given radius
  • moment_of_inertia: MOI in kg m^2
  • poissons_ratio: Poisson's ratio
  • pressure: Pressure in Pa
  • shear_modulus: Shear modulus (G) in Pa
  • surface_mass: Mass between two radii
  • youngs_modulus: Young's modulus in Pa

IO

  • read_mineos: Read Mineos tabular-format file
  • write_mineos: Write Mineos tabular-format file
  • read_tvel: Write tvel-format file
  • write_tvel: Write tvel-format file

Getting help

Types and methods are documented, so at the REPL type ? to get a help?> prompt, and type the name of the function:

```julia help?> PREMPolyModel search: PREMPolyModel

PREMPolyModel <: SeisModel1D

Type describing the Earth as a set of layers within which properties vary according to a set of polynomials.

Physical parameters are represented by arrays of size (order+1,n), where n is the number of layers, and order is the order of polynomial which is used to represent the parameter. Hence a constant layer has size (1,n), and to compute the value of x in layer i, for an Earth radius of a km, at a radius of r km, the expression is:

val_x = x[i,1] + (r/a)x[i,2] + (r/a)^2x[i,3] ... (r/a)^order*x[i,order+1]

```

Citing

If you use SeisModels.jl for your work, please cite the following paper: - Nowacki, A., 2020. SeisModels.jl: A Julia package for models of the Earth’s interior. Journal of Open Source Software 5, 2043. doi:10.21105/joss.02043

Owner

  • Name: Andy Nowacki
  • Login: anowacki
  • Kind: user

Lecturer at the School of Earth and Environment, University of Leeds, studying the Earth's deep interior.

JOSS Publication

SeisModels.jl: A Julia package for models of the Earth's interior
Published
March 17, 2020
Volume 5, Issue 47, Page 2043
Authors
Andy Nowacki ORCID
School of Earth and Environment, University of Leeds
Editor
Katy Barnhart ORCID
Tags
geophysics seismology Earth

GitHub Events

Total
  • Watch event: 1
  • Delete event: 1
  • Push event: 4
  • Pull request event: 3
  • Create event: 2
Last Year
  • Watch event: 1
  • Delete event: 1
  • Push event: 4
  • Pull request event: 3
  • Create event: 2

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 114
  • Total Committers: 7
  • Avg Commits per committer: 16.286
  • Development Distribution Score (DDS): 0.132
Past Year
  • Commits: 1
  • Committers: 1
  • Avg Commits per committer: 1.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Andy Nowacki a****i@l****k 99
dependabot[bot] 4****] 5
Andy Nowacki a****i@b****k 4
adigitoleo a****o@d****m 3
femtocleaner[bot] f****] 1
Julia TagBot 5****t 1
CompatHelper Julia c****y@j****g 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 2
  • Total pull requests: 18
  • Average time to close issues: 6 months
  • Average time to close pull requests: 12 days
  • Total issue authors: 2
  • Total pull request authors: 5
  • Average comments per issue: 4.0
  • Average comments per pull request: 0.5
  • Merged pull requests: 17
  • Bot issues: 0
  • Bot pull requests: 6
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 8 days
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • JuliaTagBot (1)
  • adigitoleo (1)
Pull Request Authors
  • dependabot[bot] (10)
  • anowacki (8)
  • adigitoleo (2)
  • github-actions[bot] (1)
  • JuliaTagBot (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (10) github_actions (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 3 total
  • Total dependent packages: 1
  • Total dependent repositories: 0
  • Total versions: 11
juliahub.com: SeisModels

Seismic models of the interior of the Earth and other planets

  • Versions: 11
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 3 Total
Rankings
Dependent repos count: 9.9%
Average: 31.8%
Forks count: 33.3%
Dependent packages count: 38.9%
Stargazers count: 45.1%
Last synced: 6 months ago

Dependencies

.github/workflows/CI.yaml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
  • julia-actions/setup-julia latest composite
.github/workflows/CompatHelper.yml actions
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite