- Project Summary
- Installation
- module I: Axisymmetric Indentation
- module II: Objective Function Analysis
- module III: Parameter Identification
indentify is an open-source MATLAB project designed for exploring the identifiability of soft-tissue material parameters (hyperelastic laws) from noninvasive indentation test and inverse finite-element analysis. indentify utilizes the open-sourced software GIBBON MATLAB toolbox and FEBio nonlinear FE solver to create an automated and customizable environment for characterizing and solving the inverse problem with synthetic test data.
Current modules capabilities:
- Axisymmetric Indentation: Carry out preliminary, bulk calculations, on a customizable FE model.
- Objective Function Analysis: Define, evaluate and visualize the objective function.
- Parameter Identification: Implement and compare nonlinear optimization schemes for minimizing the objective function.
Create a local copy of indentify by simply cloning the latest repository to your preferred <local directory>
:
cd <local directory>
git init
git clone https://github.com/SolavLab/indentify
Alternatively, download and unzip the files manually.
Before indentify can be used, the following software packages must be installed (follow instructions in links):
- FEBio
- gibbonCode/GIBBON
- MATLAB - Optimization Toolbox™ (
HOME tab
→environment
→Add-Ons Explorer
) - yamlmatlab (already included with indentify)
important: make sure to add the indentify folder (<indentify directory>
) and subfolders to MATLAB's search path:
HOME tab
→environment
→Set path
→add with subfolders
→<indentify directory>
or
command line
→addpath(genpath('<indentify directory>'))
Exploring material parameters identifiability and sensitivity, often requires preliminary numerical data obtained by numerous FE simulations, which is later used to evaluate the objective function. As such, indentify utilizes GIBBON to implement an automation script for writing and executing FE models in batch: AxisymIndent_main.m
.
The first section of AxisymIndent_main.m
contains user-specified parameters which define the jobs that are to be carried in that analysis. After the user specifies the master directory for the analysis (runPath
), a separate subdirectory (savePath
) is created automatically for each job in the batch, wherein an appropriate FEBio input file (.feb) is written and solved with FEBio's solver.
An analysis may contain one or more jobs varying by mesh size and/or material parameters according to the following user-specified parameters, which are treated as vectors: mesh_density_facotr
,P1
,P2
and k_factor
. Therefore, the total amount of jobs in an analysis is given by the product of their lengths (see example 1).
Example 1: setting
mesh_density_facotr=1:10
and the rest as scalars will yield 10 jobs in total with increasingly finer meshes (useful for mesh convergence studies).
For parameter identifiability analysis, set the values of P1
and P2
to cover the parameter space with the desired ranges and resolutions (see example 2).
Example 2: setting
mat_type='OG'
,P1=[1:1:51]*1e-3
,P2=[1:1:37]
and the rest as scalars, will repeat the indentation test over a grid of 51x37 parameter sets with the first-order Ogden material model (1887 jobs in total). See Table 2 in paper.
The purpose of this module is to investigate the contribution of different measurement modalities, namely indentation forces-depth and full-field surface displacement measurement, to the identifiability of several hyperselastic constitutive parameters.
The main script of this module, SensitivityAnalysis_main.m
, performs post-processing on the data generated by the Axisymmetric Indentation module. This includes the objective function definition (objFun.m
), evaluation, visualization over a 2D parameter space, and exportation (MakePlots.m
). indentify currently supports 2D and 3D contour, surface, and scatter plots of the objective function and its gradient magnitude at various indentation depths (visualization type controlled by value of colormap_data_field
in SensitivityAnalysis_main.m
).
Additionally, MakePlots.m
uses finite-differences to derive a second order approximation to the objective function at the global minimum, and displays heatmaps of certain of its properties which are helpful for evaluating the sensitivity. For a detailed explanation on the outputed visuals and practical examples, see this paper.