Files copyright Jakub Koery, University of Glasgow
1. “DiscreteModelMATLAB.m”
Matlab code (produced in Matlab version R2021a) simulating discrete model for corneal mechanics using default model parameters. This single file contains multiple Matlab functions. The main code calls function SolveAtGivenIOP() which solves the discrete problem for increasing value of intraocular pressure and outputs the solution (coordinates of all network nodes). Function SolveAtGivenIOP() in turn calls function root2d(), in which a vector F of functions dependent on the node coordinates x is defined; SolveAtGivenIOP() then solves the algebraic system F(x)=0. Function root2d() call functions LamellarSegmentForce() RadialCrosslinkForce() and DiagonalCrosslinkForce() which output the axial forces (magnitude, X and Y components) that the three families of elements experience, with their end points being specified as input variables.
The code produces the following “.csv” (Excel) files: ‘XComponentsIOP#1_HealthyN#2.csv’ and ‘YComponentsIOP#1_HealthyN#2.csv’, where #1 is the value of intraocular pressure in kPa and #2 is the value of N. These files store tables containing the x and y coordinates of the solution. Every row in the tables represents (x or y) coordinates of nodes with a fixed Phi coordinate (increasing from the first row to the last), while every column represents nodes with a fixed R coordinate (increasing from the first column to the last) in the initial configuration.
---------------------------------------------------------------------------------------------------------------------------------------
2. “ContinuumModelFEniCS.py”
FEniCS code (produced in FEniCS version 2019.2.0.dev0–) simulating continuum model of corneal mechanics using default parameters (single file). This file solves the continuum problem for increasing value of central damage (default is 0, i.e. healthy cornea). The code is based on the documented demo Hyperelasticity (© Copyright FEniCS Project, https://bitbucket.org/fenics-project/) which can be found at
https://fenicsproject.org/olddocs/dolfin/1.6.0/python/demo/documented/hyperelasticity/python/documentation.html
Our code produces the following files:
a) vtu file ‘displacementConusDamage#1Exponent#2.vtu’, where #1 is the maximum damage (D_{max} in the paper) and #2 is the exponent determining the damage profile (xi in the paper). This file stores the displacement vector field for increasing value of central damage - this can be visualized (for example) in ParaView.
b) .csv (Excel) files ‘AnteriorCurrentConusDamage#1Exponent#2.csv’ and ‘PosteriorCurrentConusDamage#1Exponent#2.csv’ containing 2 columns of data describing the anterior and posterior surfaces, whereby the first and second columns store the x and y coordinates of the displaced cornea, respectively.
--------------------------------------------------------------------------------------------------------------------------------------
Both the discrete and the continuum code simulate corneal mechanics using default model parameters. It is then straight-forward to vary one or more of these parameters.