Giter Site home page Giter Site logo

timothy-xia / elasticmatrix Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dannyramasawmy/elasticmatrix

0.0 0.0 0.0 41.36 MB

The ElasticMatrix software uses the partial-wave method to model elastic wave propagation in multilayered anisotropic media.

Home Page: https://dannyramasawmy.github.io/ElasticMatrix/

License: GNU Lesser General Public License v3.0

MATLAB 100.00%

elasticmatrix's Introduction

ElasticMatrix Toolbox

The ElasticMatrix Toolbox uses the partial-wave method [1,3,4] to model elastic wave propagation in multi-layered anisotropic media up to transverse-isotropic symmetry when the wave propagation is along a plane of symmetry.

Download

Download from github, or MATLAB file exchange: View ElasticMatrix Toolbox on File Exchange.

View the documentation online: https://dannyramasawmy.github.io/ElasticMatrix/

Installation

To add the ElasticMatrix Toolbox source-code and all the examples:

addpath(genpath('<folderpath>/ElasticMatrix')) 

To add the ElasticMatrix Toolbox source-code without examples:

addpath('<folderpath>/ElasticMatrix/src-pw')

The source code is found in the src-pw folder.

Requirements

ElasticMatrix has been tested with MATLAB2016a and above and should run on most personal laptops and desktop machines.

Documentation

  • To view the html documentation in MATLAB:

    • help (or press F1) -> Supplemental Software -> ElasticMatrix Toolbox
  • ./examples folder contains example scripts demonstrating some of the capabilities of the code.

  • ./examples_mlx folder contains example scripts in the MATLAB live script style.

  • ./documentation folder contains a reference list for the mathematical background.

Functionality

Some of the code functionality includes:

  • Plotting slowness profiles.
  • Plotting reflection and transmission coefficients.
  • Calculating dispersion curves for simple plate structures.
  • Plotting displacement and stress fields.
  • Calculating the directivity of Fabry-Perot ultrasound sensors, see [1].

FAQ

  • Dispersion curves are tracing incorrectly? Please try the "coarse" dispersion curve method.

Contact

Danny Ramasawmy

[email protected]

or

Bradley Treeby

[email protected]

Ben Cox

[email protected]

File Tree

The file tree for the ElasticMatrix Toolbox is shown below. Files/folders marked with an asterisk (*) are not included when using download in git and are only included if the repository is cloned. Files marked with a double asterisk are not pushed to the public repository, please contact the author if these are required.

Tree compiled: 2019-11-11

.
├── data
│   └── disperseTitaniumPlateData.txt
│   ├── disperseTeflonPlateData.txt
│
├── documentation
│   ├── 2019-07-19-BUG_coding_standard.md*
│   ├── example_template_file.m*
│   ├── functionTemplateFile.m*
│   ├── html
│   │   ├── ElasticMatrix.html
|   │   ├── example_dispersion_curve_PVDF_plate.html
│   │   ├── example_dispersion_curve_teflon_plate.html
│   │   ├── example_dispersion_curve_titanium_plate.html
│   │   ├── example_elasticmatrix_class.html
│   │   ├── example_extra_functions.html
│   │   ├── example_fabry_perot_directivity.html
│   │   ├── example_interface_parameters.html
│   │   ├── example_medium_class.html
│   │   ├── example_periodic_media.html
│   │   ├── example_plot_field_parameters.html
│   │   ├── example_plot_field_parameters_movie.html
│   │   ├── example_reflection_and_transmission.html
│   │   ├── example_slowness_profiles.html
│   │   ├── helptoc.xml
│   │   └── images
│   │       ├── elastic_matrix_banner.JPG
│   │       ├── ElasticMatrix - class diagram.png
│   │       └── sfg_example.JPG
│   └── references.txt
│
├── examples
│   ├── example_dispersion_curve_PVDF_plate.m
│   ├── example_dispersion_curve_teflon_plate.m
│   ├── example_dispersion_curve_tissue_plate.m
│   ├── example_dispersion_curve_titanium_plate.m
│   ├── example_elasticmatrix_class.m
│   ├── example_extra_functions.m
│   ├── example_fabry_perot_directivity.m
│   ├── example_fabry_perot_frequency_response.m
│   ├── example_interface_parameters.m
│   ├── example_medium_class.m
│   ├── example_periodic_media.m
│   ├── example_plot_field_parameters.m
│   ├── example_plot_field_parameters_movie.m
│   ├── example_reflection_and_transmission.m
│   └── example_slowness_profiles.m
│
├── examples_mlx
|   ├── example_dispersion_curve_PVDF_plate.mlx
│   ├── example_dispersion_curve_teflon_plate.mlx
│   ├── example_dispersion_curve_titanium_plate.mlx
│   ├── example_elasticmatrix_class.mlx
│   ├── example_extra_functions.mlx
│   ├── example_fabry_perot_directivity.mlx
│   ├── example_interface_parameters.mlx
│   ├── example_medium_class.mlx
│   ├── example_periodic_media.mlx
│   ├── example_plot_field_parameters.mlx
│   ├── example_plot_field_parameters_movie.mlx
│   ├── example_reflection_and_transmission.mlx
│   └── example_slowness_profiles.mlx
│
├── src-pw
│   ├── calculateReflectionTransmissionAnalytic.m
│   ├── cls.m
│   ├── @ElasticMatrix
│   │   ├── calculateDispersionCurvesCoarse.m
│   │   ├── calculateDispersionCurves.m
│   │   ├── calculateField.m
│   │   ├── calculateFieldMatrixAnisotropic.m
│   │   ├── calculate.m
│   │   ├── calculateMatrixModelKf.m
│   │   ├── calculateMatrixModel.m
│   │   ├── disp.m
│   │   ├── ElasticMatrix.m
│   │   ├── getPartialWaveAmplitudes.m
│   │   ├── plotDispersionCurves.m
│   │   ├── plotField.m
│   │   ├── plotInterfaceParameters.m
│   │   ├── plotRTCoefficients.m
│   │   ├── save.m
│   │   ├── setAngle.m
│   │   ├── setFilename.m
│   │   ├── setFrequency.m
│   │   ├── setMedium.m
│   │   ├── setPhasespeed.m
│   │   └── setWavenumber.m
│   ├── @FabryPerotSensor
│   │   ├── calculateDirectivity.m
│   │   ├── disp.m
│   │   ├── FabryPerotSensor.m
│   │   ├── getDirectivity.m
│   │   ├── plotDirectivity.m
│   │   ├── setMirrorLocations.m
│   │   ├── setSpotDiameter.m
│   │   └── setSpotType.m
│   ├── findClosest.m
│   ├── findClosestMinimum.m
│   ├── findZeroCrossing.m
│   ├── materialList.m
│   ├── @Medium
|   │   ├── availableMaterials.m
│   │   ├── calculateAlphaCoefficients.m
│   │   ├── calculateSlowness.m
│   │   ├── disp.m
│   │   ├── getAcousticProperties.m
│   │   ├── lameConversion.m
│   │   ├── Medium.m
│   │   ├── mtimes.m
│   │   ├── plotSlowness.m
│   │   ├── plus.m
│   │   ├── setDensity.m
│   │   ├── setName.m
│   │   ├── setStiffnessMatrix.m
│   │   ├── setThickness.m
│   │   ├── soundSpeedDensityConversion.m
│   │   ├── state.m
│   │   └── times.m
│   ├── normMe.m
│   ├── printLineBreaks.m
│   └── sfg.m
│
├── testing*
│   ├── run_all_tests_and_examples.m*
│   ├── test_comparison_with_GMM.m*
│   ├── test_elasticmatrix_class.m*
│   ├── test_fabry_perot_directivity.m*
│   ├── test_fabry_perot_frequency_response.m*
│   ├── test_fabryperotsensor_class.m*
│   ├── test_main_functions.m*
│   ├── test_medium_class.m*
│   ├── test_n_layers_vs_calculation_time.m*
│   └── test_partial_wave_amplitudes.m*
│
├── testing_data**
│   ├── Beard1999FrequencyResponseFabryPerotData.mat**
│   ├── glassEtalonFabryPerotDirectivityData.mat**
│   └── gmmIsotropicModelData.mat**
│     
├── info.xml
├── LICENSE.txt
└── README.md

References

[1] Ramasawmy, Danny R., et al. "ElasticMatrix: A MATLAB Toolbox for Anisotropic Elastic Wave Propagation in Layered Media.", (2019).

[2] Ramasawmy, Danny R., et al. "Analysis of the Directivity of Glass Etalon Fabry-Pérot Ultrasound Sensors." IEEE transactions on ultrasonics, ferroelectrics, and frequency control, (2019).

[3] Lowe, Michael JS. "Matrix techniques for modeling ultrasonic waves in multilayered media." IEEE transactions on ultrasonics, ferroelectrics, and frequency control, (1995).

[4] Nayfeh, Adnan H. "The general problem of elastic wave propagation in multilayered anisotropic media." The Journal of the Acoustical Society of America (1991).

[5] Pavlakovic, Brian, et al. "Disperse: A general purpose program for creating dispersion curves." Review of progress in quantitative nondestructive evaluation. Springer, Boston, (1997).

[6] Rose, Joseph L. "Ultrasonic guided waves in solid media." Cambridge university press, (2014).

[7] Cheeke, J. David N. "Fundamentals and applications of ultrasonic waves." CRC press, (2016).

[8] Beard, P. "Transduction mechanisms of the Fabry-Perot polymer film sensing concept for wideband ultrasound detection" IEEE transactions on ultrasonics, ferroelectrics, and frequency control, (1999).

[9] Cox, Benjamin T., and Paul C. Beard. "The frequency-dependent directivity of a planar Fabry-Perot polymer film ultrasound sensor." IEEE transactions on ultrasonics, ferroelectrics, and frequency control, (2007).

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.