This repository supports the Material MAP website, a non-commercial, ad-free project aimed at assisting engineers in finding examples of material model parameter sets for LS-DYNA, sourced from articles published under Open Access.
The primary goal of the website is to provide engineers with a library of material models, linking directly to original open-access sources along with citation information for each reference. The project enables users to search and explore a variety of material models conveniently.
Visit the website: Material MAP
Material MAP is a static website, built to offer a reference library for material models used in LS-DYNA simulations. All site data is stored in multiple toml
files in the data
directory, allowing easy updates and additions. Users are welcome to contribute by creating pull requests with new references and material models or correcting existing data.
- Non-commercial: The site is entirely ad-free and provides its content for informational purposes only.
- Open-access links: All data references point to open-access sources, ensuring users can access original articles freely.
- Citation Information: Each reference includes proper citation details to give credit to the original authors.
- User Contribution: Contributions are encouraged, allowing users to add new material models or improve data accuracy.
- Automatic Date Tracking: File modification dates are automatically tracked using Git history.
- Material Calculators: Interactive calculators for various material models:
- Swift's Law Calculator for metal strain hardening
- Johnson-Cook Calculator for dynamic material behavior
- Mooney-Rivlin Calculator for hyperelastic materials
- Gibson-Ashby Calculator for cellular materials
- CEB-FIP Calculator for concrete properties
- Fork the repository
- Create a new TOML file in
/data/
folder - Follow the existing format (see TOML Structure below)
- Update
/dist/file-list.json
- Submit a pull request
- Source must be published under Open Access license
- LS-DYNA material parameters must be validated
- Reference URL must be accessible without paywall
- All required fields must be completed
- Maintainers review the pull request
- If approved, the material is merged into the database
- You'll be notified of the final decision
Thank you for contributing to MaterialMap! 🎉
This section describes the structure of TOML files used in the Material MAP project. Each TOML file contains an array of material definitions with specific fields.
Each TOML file should contain an array of material objects using the [[material]]
syntax:
[[material]]
# Material definition fields here
[[material]]
# Another material definition
Contains the LS-DYNA material model definition as a multi-line string. This field should include:
- Material model keyword (e.g.,
*MAT_ELASTIC_TITLE
,*MAT_PLASTIC_KINEMATIC_TITLE
) - Material name/description
- Parameter definitions with proper LS-DYNA formatting
- Comments with source attribution
Example:
mat_data = """
*MAT_ELASTIC_TITLE
Steel AISI 1020
$ Source: Material handbook
$--------1---------2---------3---------4---------5---------6---------7---------8
$# mid ro e pr da db not used
1 7.85e-6 200000 0.29 0.0 0.0 0
"""
Note: Material ID and name are automatically extracted from this field by the application.
List of applications or material types where this material model is used.
Example:
app = [
"Steel AISI 1020",
"Structural steel",
"Automotive components"
]
URL link to the original source or reference material.
Example:
url = "https://example.com/material-data"
Contains the LS-DYNA equation of state definition as a multi-line string. Used when the material requires an EOS model.
Example:
eos_data = """
*EOS_GRUNEISEN_TITLE
Steel EOS
$--------1---------2---------3---------4---------5---------6---------7---------8
$# eosid c s gamma a e0 v0
1 4569 1.49 2.17 0.0 0.0 1.0
"""
Contains additional material model data (e.g., MAT_ADD definitions) as a multi-line string.
Contains thermal material model data as a multi-line string.
Full citation or reference to the original source material.
Example:
ref = "Smith, J. et al. (2024). Material Properties of Steel. Journal of Materials, 15(3), 123-145."
[[material]]
mat_data = """
*MAT_PLASTIC_KINEMATIC_TITLE
Steel AISI 1020
$ Smith, J. et al. (2024). Material Properties of Steel
$--------1---------2---------3---------4---------5---------6---------7---------8
$# mid ro e pr sigy etan beta src
1 7.85e-6 200000 0.29 250.0 1000.0 0.0 0.0
$# srp fs vp
0.0 0.0 0.0
"""
eos_data = """
*EOS_GRUNEISEN_TITLE
Steel EOS
$--------1---------2---------3---------4---------5---------6---------7---------8
$# eosid c s gamma a e0 v0
1 4569 1.49 2.17 0.0 0.0 1.0
"""
app = [
"Steel AISI 1020",
"Structural applications",
"Automotive components"
]
ref = "Smith, J. et al. (2024). Material Properties of Steel. Journal of Materials, 15(3), 123-145."
url = "https://example.com/steel-properties"
-
Automatic ID Extraction: Material IDs are automatically extracted from the first line of
mat_data
,eos_data
,mat_add_data
, andmat_thermal_data
fields. -
Material Name Extraction: Material names are extracted from the first line of the respective data fields, with
_TITLE
suffix removed if present. -
Field Validation: The application expects at minimum
mat_data
,app
, andurl
fields to be present. -
Date Handling: The "Added" date is automatically calculated from the file's last modification date in Git history.
-
URL Validation: URLs should be valid and accessible for reference purposes.
-
Multi-line Strings: TOML uses triple quotes (
"""
) for multi-line strings, which is perfect for LS-DYNA card definitions.
The project uses automatic date calculation for all materials. The add
field has been removed from all TOML files and is now automatically calculated from the file's last modification date in Git history.
- Primary: Git commit date (
git log -1 --format=%cI -- "filepath"
) - Fallback: Filesystem modification time (
fs.statSync().mtime
)
- Simplified TOML Structure: No need to manually specify dates
- Automatic Updates: Dates update automatically when files are modified
- Git Integration: Leverages Git history for accurate tracking
- Reduced Errors: Eliminates manual date entry mistakes
- data/: Contains TOML files with material model data from various sources
- dist/: Contains generated file list used by the application
- lib/: Contains JSON configuration files for material models
- src/: Contains modular source code
- src/js/: JavaScript modules
- src/js/components/: UI components
- src/js/modules/: Core functionality modules
- src/js/utils/: Utility functions and helpers
- PlotlyChartManager.js: Unified chart management for all calculators
- src/css/: CSS styles
- src/css/base/: Base styles
- src/css/components/: Component-specific styles
- src/css/pages/: Page-specific styles
- src/js/: JavaScript modules
- assets/: Static assets
- assets/css/: Compiled CSS files
- assets/js/: Compiled JavaScript files
- assets/images/: Image files
- assets/icons/: Icons and favicons
- scripts/: Build and utility scripts
- .github/workflows/: Contains GitHub Actions workflow for file list generation
- index.html: Main application page
- about.html: About page
- scripts-modular.js: Entry point for modular JavaScript
- service-worker.js: Service worker for offline capabilities
- package.json: Project configuration and dependencies
-
Runtime Dependencies:
- jQuery (v3.7.0) - JavaScript library
- DataTables (v1.13.7) - Table enhancement plugin
- smol-toml (v1.3.1) - TOML parsing library
- Plotly.js (v2.32.0) - Interactive charting library
- Google Fonts (Inter, Fira Code)
-
Development Dependencies:
- Playwright (v1.54.2) - Testing framework
- ESLint (v8.56.0) - Code linting
- Prettier (v3.1.0) - Code formatting
The project implements a unified plotting system through the PlotlyChartManager
class to ensure consistent chart styling and behavior across all calculators.
- Consistent Styling: All charts share the same visual style and interactive features
- Simplified API: Common chart creation methods for different material models
- Responsive Design: Charts automatically resize based on screen dimensions
- Export Functionality: Built-in support for exporting charts as images
The PlotlyChartManager
provides both specialized methods for specific chart types and a generic method for custom charts:
// Initialize chart manager
const chartManager = new PlotlyChartManager();
// Create a generic plot
chartManager.createGenericPlot('chartContainerId', traces, layoutOptions);
// Create specialized material model charts
chartManager.createSwiftLawChart('containerId', parameters, options);
chartManager.createJohnsonCookChart('containerId', parameters, strainRates, options);
chartManager.createMooneyRivlinChart('containerId', parameters, options);
chartManager.createGibsonAshbyChart('containerId', parameters, options);
For detailed documentation, see /src/js/utils/README-PlotlyChartManager.md
.
# Install dependencies
npm install
# Start development server
npm run dev
# Generate file list
npm run generate-file-list
# Run tests
npm test
# Lint code
npm run lint
# Format code
npm run format
# Validate TOML data
npm run validate-data
This project is licensed under the Creative Commons Attribution-NonCommercial (CC BY-NC) License. This license allows non-commercial copying and modification of the content with attribution to the original project.
Disclaimer: All data provided on the Material MAP website is to be used at the user's own risk.