#acl +All:read Default #format wiki #language en <<TableOfContents>> == Synopsis == The overall goal of this case study is to understand convergence characteristics of Open Knee(s) - Generation 1 model to conduct simulations in an efficient and effective manner. === Use Case === The case relies on simulations of varying levels of tibiofemoral joint loading to evaluate the performance of the model in terms of convergence while reasonably predicting joint mechanics. Convergence is defined by the ease and speed of simulations. Relative predictive accuracy evaluates changes in predicted joint kinematics and tissue stress-strain distributions. === Simulation Aims === * To understand the role of joint loading on convergence characteristics * To understand the role of simulation (numerical analysis) parameters on convergence characteristics * To understand model parameters on convergence characteristics * To understand new model features on convergence characteristics === Model === The model is based on Open Knee(s) - Generation 1 model, which was updated for FEBio version 2.1: . https://simtk.org/svn/openknee/_gen1/src/tf_joint_FEBio_v2.feb === Inputs === The loading and boundary conditions relies on prescribed time histories of movement and loading of the tibiofemoral joint (six degrees of freedom) for various loading scenarios (see Simulation Conditions): * flexion * internal/external rotation torque * varus/valgus torque * anterior/posterior force * medial/lateral force * compression/distraction force === Outputs === * Convergence metrics (primary) * Completion of simulation (Yes/No) * If not completed - time point at which the simulation crashed * If completed - computation time (also provide computer specifications), number of iterations * Time histories of kinematics-kinetics of the tibiofemoral joint (six degrees of freedom) (secondary) * flexion torque * internal/external rotation * varus/valgus * anterior/posterior translation * medial/lateral translation * compression/distraction * Post-processed joint mechanics information (secondary) * Comparison of tibia kinetics and femur kinetics * Comparison of tibiofemoral joint kinematics to baseline simulation results * Time histories of stress-strain behavior (secondary) === Simulation Conditions === * Simulation (numerical analysis) parameters (refer to FEBio manual for descriptions): * Convergence tolerances * dtol * etol * rtol * lstol * Time stepper properties * dtmin * dtmax * max_retries * opt_iter * aggressiveness * Newton/quasi-Newton parameters * max_refs * max_ups * cmax * min_residual * Analysis type (static/dynamic) * Model parameters * Increase of menisci circumferential modulus * Increase of cartilage modulus (relative to menisci) * Increase of ligament fiber moduli * Change in tibia and femur inertial properties (for dynamic simulations) * Model changes * Addition of transverse ligament * Python script finds most anterior nodes of menisci and creates spring. * Found in Source Code Repository (febmod_tl.py in https://simtk.org/websvn/wsvn/openknee/_gen1/src/febmod_modules/#__gen1_src_febmod_modules_) * Easiest methods to find node ID is to use FEBio PostView and use node selection tool. * Literature for Young's modulus of 200 N/mm: (Donahue et al., Journal of Biomechanics, 36: 19-34, 2003) * XML file for FE Model found in Source Code Repository (tf_joint_FEBio_v2_mod1.feb in https://simtk.org/websvn/wsvn/openknee/_gen1/src/transverse_ligament/tf_joint_FEBio_v2_mod200/#__gen1_src_transverse_ligament_tf_joint_FEBio_v2_mod200_) * Model successfully converged. * Distributed attachment of meniscal horns * Attachment of medial meniscus to medial collateral ligament * Attachment of lateral and medial menisci to tibia * Application of in situ ligament strain * Additional ligaments * Femur stabilization through low stiffness linear and torsional springs * Use of different constitutive models * Loading conditions * passive flexion * internal/external rotation laxity * anterior-posterior translation laxity * varus/valgus laxity * pivot shift ---- == Use Cases == ---- === max_retries & max_refs === '''Parameter permutations:''' * max_retries = 5,10,20 * max_refs = 5,10,20 '''Converged:''' * all permutations '''Ranking:''' 1. max_retries = 5, max_refs = 20 1. max_retries = 20, max_refs = 20 both have similar results '''Results:''' https://simtk.org/svn/openknee/app/Convergence/sol/max_retries_refs_1/ ---- === flexion angle & Anterior-Posterior (AP) force === ==== SET 1 ==== '''Parameter permutations:''' * flexion angle = 0,30,60,90 degrees * AP force = -100 (P), 100 (A) N * max_retries = 5 * max_refs = 20 '''Converged:''' * flexion angle = 0 degrees * AP force = -100 (P) N '''Non-converged:''' * all other permutations * failed due to: ''Max. nr of retries reached.'' '''Results:''' https://simtk.org/svn/openknee/app/Convergence/sol/flexion_AP_1/ ==== SET 2 ==== '''Parameter permutations:''' * flexion angle = 0,30,60,90 degrees * AP force = -100 (P), 100 (A) N * max_retries = 20 * max_refs = 20 '''Converged:''' * flexion angle = 0,30 degrees * AP force = -100 (P) N '''Non-converged:''' * all other permutations * flexion angle = 60 degrees completed flexion * flexion angle = 90 degrees did not complete flexion '''Results:''' https://simtk.org/svn/openknee/app/Convergence/sol/flexion_AP_2/ ---- === flexion angle & Internal-External (IE) torque === ==== SET 1 ==== '''Parameter permutations:''' * flexion angle = 0,30,60,90 degrees * IE torque = -5 (I), 5 (E) N*mm = -0.005,0.005 N*m * max_retries = 5 * max_refs = 20 '''Converged:''' * flexion angle = 0,30 degrees * IE torque = -5,5 N*mm '''Nonconverged''' * flexion angle = 60,90 degrees * IE torque = -5,5 N*mm * failed due to: ''Max. nr of retries reached.'' '''Results:''' https://simtk.org/svn/openknee/app/Convergence/sol/flexion_IE_1/ ==== SET 2 ==== '''Parameter permutations:''' * flexion angle = 0,30,60,90 degrees * IE torque = -5000 (I), 5000 (E) N*mm = -5,5 N*m * max_retries = 5 * max_refs = 20 '''Nonconverged:''' * all permutations * flexion angle = 0,30 degrees, completed flexion, began applying loading * flexion angle = 60,90 degrees, didn't complete flexion * failed due to: ''Max. nr of retries reached.'' '''Results:''' https://simtk.org/svn/openknee/app/Convergence/sol/flexion_IE_2/ ---- === flexion angle & Varus-Valgus (VV) torque === ==== SET 1 ==== '''Parameter permutations:''' * flexion angle = 0,30,60,90 degrees * VV torque = -10 (Varus), 10 (Valgus) N*mm = -0.01,0.01 N*m * max_retries = 5 * max_refs = 20 '''Converged:''' * flexion angle = 0,30 degrees * VV torque = -10,10 N*mm '''Nonconverged:''' * flexion angle = 60,90 degrees * VV torque = -10,10 N*mm * failed due to: ''Max. nr of retries reached.'' '''Results:''' https://simtk.org/svn/openknee/app/Convergence/sol/flexion_VV_1/ ==== SET 2 ==== '''Parameter permutations:''' * flexion angle = 0,30,60,90 degrees * VV torque = -10000 (Varus), 10000 (Valgus) N*mm = -10,10 N*m * max_retries = 5 * max_refs = 20 '''Converged:''' * flexion angle = 0 degrees * VV torque = -10000,10000 N*mm '''Nonconverged:''' * flexion angle = 30,60,90 degrees * VV torque = -10000,10000 N*mm * flexion angle = 30,60 degrees, began loading * flexion angle = 90 degrees, didn't finish flexion * failed due to: ''Max. nr of retries reached.'' '''Results:''' https://simtk.org/svn/openknee/app/Convergence/sol/flexion_VV_2/ ---- === SPRING SETS, 90 degree passive flexion, 1.0 s, ramp-only === tf_joint_FEBio_v2.feb, repository revision 1103 Load curve: ramp only (without hold as in original version) Passive flexion, 90 degrees Total time = 1.0 s NONE CONVERGED!!! SUMMARY: || Spring Set || None || Transverse || Transverse || Transverse || Medial || Medial || Medial || Capsule || Capsule || Capsule || || Stiffness (N/mm) / spring || 0 || 33.3 || 66.6 || 100 || 33.3 || 66.6 || 100 || 33.3 || 66.6 || 100 || || # Springs || 0 || 3 || 3 || 3 || 137 || 137 || 137 || 130 || 130 || 130 || || Total Stiffness (N/mm) || 0 || 100 || 200 || 300 || 4566.6 || 9133.3 || 13700 || 4333.3 || 8666.6 || 13000 || || Fraction Complete || 0.141834 || 0.666360 || 0.827006 || 0.883352 || 0.859743 || 0.909037 || 0.978855 || 0.507349 || 0.444903 || 0.584906 || || Flexion achieved (deg) || 12.8 || 60.0 || 74.4 || 79.5 || 77.4 || 81.8 || 88.1 || 45.7 || 40.0 || 52.6 || ==== NO SPRING SETS ==== Grood-Suntay Kinematics: {{attachment:no_springs_flexion_90.png}} ==== Transverse Ligament ==== ===== 33.3 N/mm / spring ===== {{attachment:transverse_33.3_flexion_90.png}} ===== 66.6 N/mm / spring ===== {{attachment:transverse_66.6_flexion_90.png}} ===== 100 N/mm / spring ===== {{attachment:transverse_100_flexion_90.png}} ==== Medial Ligament ==== ===== 33.3 N/mm / spring ===== {{attachment:medial_33.3_flexion_90.png}} ===== 66.6 N/mm / spring ===== {{attachment:medial_66.6_flexion_90.png}} ===== 100 N/mm / spring ===== {{attachment:medial_100_flexion_90.png}} ==== Joint Capsule ==== ===== 33.3 N/mm / spring ===== {{attachment:capsule_33.3_flexion_90.png}} ===== 66.6 N/mm / spring ===== {{attachment:capsule_66.6_flexion_90.png}} ===== 100 N/mm / spring ===== {{attachment:capsule_100_flexion_90.png}} === SPRING SETS, 45 degree passive flexion, 1.0 s, ramp-only === tf_joint_FEBio_v2.feb, repository revision 1103 Load curve: ramp only (without hold as in original version) Passive flexion, 45 degrees Total time = 1.0 s CONVERGED!!! Flexion achieved = 45 degrees === SPRING SETS, 90 degree passive flexion, 2.0 s, ramp-only === tf_joint_FEBio_v2.feb, repository revision 1103 Load curve: ramp only (without hold as in original version) Passive flexion, 90 degrees Total time = 2.0 s NONE CONVERGED!!! SUMMARY: || Spring Set || None || Transverse || Transverse || Transverse || Medial || Medial || Medial || Capsule || Capsule || Capsule || || Stiffness (N/mm) / spring || 0 || 33.3 || 66.6 || 100 || 33.3 || 66.6 || 100 || 33.3 || 66.6 || 100 || || # Springs || 0 || 3 || 3 || 3 || 137 || 137 || 137 || 130 || 130 || 130 || || Flexion achieved (deg) || 78.3 || 73.8 || 56.2 || 79.9 || 40.5 || 66.6 || 60.3 || 77.4 || 76.5 || 42.3 || ---- == Team Members == Ahmet Erdemir - study planning, assisting simulations, interpretation of results Craig Bennetts - scripting for large scale analysis, execution of simulations, interpretation of results Snehal Chokhandre - execution of simulations, interpretation of results == Progress == === Source Code Repository === https://simtk.org/svn/openknee/app/Convergence/ === Data === https://simtk.org/svn/openknee/app/Convergence/dat/ === Model Customization === https://simtk.org/svn/openknee/app/Convergence/src/ === Simulations === === Post-Processing === https://simtk.org/svn/openknee/app/Convergence/sol/ === Publications === https://simtk.org/svn/openknee/app/Convergence/doc/ == References ==