Coder Social home page Coder Social logo

hemmelig / anisotropy Goto Github PK

View Code? Open in Web Editor NEW
20.0 20.0 4.0 218 KB

Toolkit for the study of seismic anisotropy.

Home Page: https://seismicanisotropy.readthedocs.io

License: GNU General Public License v3.0

Python 100.00%
anisotropy python science seismology

anisotropy's Introduction

Hey!

I am currently a post-doctoral research scientist at the Lamont-Doherty Earth Observatory (LDEO) at Columbia University.

I am interested in the relationship between stress, structure, and seismicity in volcanic environments, particularly how these factors evolve during volcanic intrusions. I develop software for the construction of high-fidelity catalogues of microseismicity from raw seismic data, including analysis tools for magnitude estimates, focal mechanisms, and seismic anisotropy, as well as analytical forward modelling tools for deformation and seismic anisotropy.

At LDEO, I am working as part of the AVERT (Anticipating Volcanic Eruptions in Real Time) project to develop and field test a rugged hardware/software system for multi-disciplinary monitoring of remote volcanic systems. We are currently operating a near-real-time network on Cleveland volcano, in the Aleutian arc, as well as supporting the efforts of the Alaska Volcano Observatory at nearby Okmok volcano. Data from our geodetic, seismic, magnetic, and imagery (both infrared and visible spectrum) instruments are transmitted via satellite back to our servers, where they are made immediately available via our web portal.

My PhD research was centered on microseismic detection and seismic anisotropy in Iceland and northern Borneo. I have spent a good deal of time deploying, servicing, and de-commissioning seismic networks and dealing with the multitude of admin that is part and parcel of acquiring, and curating an archive of, high-quality seismic data.

I am an advocate for widening access to data and scientific research in general by improving practices out in the field and by the free publication of open-source tools and workflows that can be run at any scale. Critical to that is the promotion of best practices/pre-existing tools, community collaboration, and effective communication of ideas, from the mundane to the intricate.

Free and open science is the future.

anisotropy's People

Contributors

hemmelig avatar wasjabloch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

anisotropy's Issues

:star2: Feature request: Write examples for the effective media modelling code


Feature request

Summary:

Write examples (and tests!) for the effective media modelling code


Is your feature request related to a problem? Please describe.
No - simply an extension.

Describe the solution you'd like
A set of comprehensive examples that contain code snippets and an overview of the theory such that users can get started straight away building their own effective media models. I can provide some examples based on what I have used these models for.

Comprehensive tests should also be written that explore the functions in anisotropy.effective_media. Start by validating code against alternatives (e.g. MSAT), then produce a set of benchmarks with the code itself.

To-do list

  • Write test suite
    • Hudson models
    • Backus layering models
    • Tandon and Weng models
    • N-layer models of Silver and Savage
  • Write examples for documentation
    • Hudson model
    • Backus model - use example from Omry?
    • Tandon and Weng model - use example from Chapter 5 of my thesis.
    • N-layer model - use example data from northern Borneo

Material.rotate() should rotate self.C or return Material, instead of returning C

Currently, Material.rotate(alpha, beta, gamma, **kwargs) returns a numpy array of the rotated tensor. In my opinion, it would be more intuitive if it would either:

a) return nothing, but write the rotated tensor straight to self.C, or
b) return a copy of Material with the rotated tensor

imho (a) is more intuitive, but there may be reasons to prefer (b).

I'm happy to implement either.

:star2: Feature request: Develop plotting utilities


Feature request

Summary:

Develop plotting utilities


Is your feature request related to a problem? Please describe.
No - simply an extension.

Describe the solution you'd like
It would be useful to have some plotting utilities. For example:

  • Plotting up trade-offs between crack density/parameters of the material (e.g. the shear wave anisotropy)
  • Plotting pole figures for single-crystals, whole rock, and aggregate materials.
  • Shear-wave splitting figures (will need to formalise the existing parsers I have written..)
  • N-layering modelling

To-do list

  • Trade-off plots
  • Merge in plotting utilities for shear-wave splitting - would require some careful consideration of a dataclass that will form the basis of AnIO (AniBabel?)
  • N-layer modelling - the plotting function already exists, but could be removed to a central plotting module to make it simpler to find.

:star2: Feature request: Extend database of single-crystal and whole rock/aggregate elastic constants


Feature request

Summary:

Extend database of single-crystal and whole rock/aggregate elastic constants, improve core materials code, and consolidate with Telewavesim


Is your feature request related to a problem? Please describe.
No - simply an extension.

Describe the solution you'd like
Extend the existing database to include (at least!) all those materials that are currently available in the elast.py module of the Telewavesim package. In tandem, build in some additional functionality to the anisotropy.materials.Material class itself. For example, calculating the Voigt/Reuss/Voigt-Reuss-Hill aggregate bulk/shear moduli (equations set out in Hill, 1952).

At this stage, it is worth considering what should be required for the elastic constants for a given material to be included. At a minimum, this should probably be two additional fields on the anisotropy.materials.Material class - one containing a material identifier, likely just a string, and the other containing a reference. This could either be the full reference string (probably best) or simply the DOI.

Comprehensive tests should also be written that explore the functions in anisotropy.materials.core.py and some simple tutorial examples could be written that describe how to load a material from the database, how to mix an aggregate material, how to water the single-crystal elastic constants down with their isotropic component, how to define a custom material that is not in the database (and maybe some instructions on how to contribute it).

To-do list

  • Expand elastic database to include all those minerals that are available in Telewavesim - 4bcf0f3
    • Implement generalised methods to calculate the bulk/shear moduli (in the cases of both isotropic and generally anisotropic elastic tensors) - 32f4354
    • Add material_id and material_reference attributes to Material class - 57d1fdf
  • Write a function to calculate the isotropic component of a general elastic stiffness tensor (Browaeys and Chevrot, 2004) - 98fe159
  • Write tests
    • Elastic constant averaging functions
    • Bulk/shear moduli functions
    • Calculate polarisation - this one I definitely need to spend a little time understanding. Sketch vector diagram once solved.
    • Extensive test for the conversion between Voigt/full 4th rank tensor form - test all 81 elements of the tensor!
  • Create tutorials - 839e959
    • Loading a material
    • Mixing an aggregate
    • Watering down single-crystal tensors with their isotropic component
    • Defining custom materials (not in the database)

Something to do in a separate PR would be to test this module in-situ in the Telewavesim package, to ensure that all requirements are met there and this module can then become the single source for elastic tensor representation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.