/* * Development and validation of a 3-D model to predict knee joint * loading during dynamic movement * * Model Status * * This CellML runs in OpenCell (note that it cannot be run in * COR due to "circular arguments" or "DAEs"). The units have been * checked and they are consistent. * * Model Structure * * ABSTRACT: The purpose of this study was to develop a subject-specific * 3-D model of the lower extremity to predict neuromuscular control * effects on 3-D knee joint loading during movements that can * potentially cause injury to the anterior cruciate ligament (ACL) * in the knee. The simulation consisted of a forward dynamic 3-D * musculoskeletal model of the lower extremity, scaled to represent * a specific subject. Inputs of the model were the initial position * and velocity of the skeletal elements, and the muscle stimulation * patterns. Outputs of the model were movement and ground reaction * forces, as well as resultant 3-D forces and moments acting across * the knee joint. An optimization method was established to find * muscle stimulation patterns that best reproduced the subject's * movement and ground reaction forces during a sidestepping task. * The optimized model produced movements and forces that were * generally within one standard deviation of the measured subject * data. Resultant knee joint loading variables extracted from * the optimized model were comparable to those reported in the * literature. The ability of the model to successfully predict * the subject's response to altered initial conditions was quantified * and found acceptable for use of the model to investigate the * effect of altered neuromuscular control on knee joint loading * during sidestepping. Monte Carlo simulations (N = 100,000) using * randomly perturbed initial kinematic conditions, based on the * subject's variability, resulted in peak anterior force, valgus * torque and internal torque values of 378 N, 94 Nm and 71 Nm, * respectively, large enough to cause ACL rupture. We conclude * that the procedures described in this paper were successful * in creating valid simulations of normal movement, and in simulating * injuries that are caused by perturbed neuromuscular control. * * The original paper reference is cited below: * * Development and validation of a 3-D model to predict knee joint * loading during dynamic movement, S.G. McLean, A. Su and A.J. * van den Bogert, 2003,Journal of Biomechanical Engineering, 125, * 6, 864-874. PubMed ID: 14986412 */ import nsrunit; unit conversion on; unit metre_per_second=1 meter^1*second^(-1); unit per_metre=1 meter^(-1); unit per_metre_second=1 meter^(-1)*second^(-1); unit per_second=1 second^(-1); unit second_per_metre=1 meter^(-1)*second^1; unit newton_per_second=1 kilogram^1*meter^1*second^(-3); unit newton_per_metre2=1 kilogram^1*meter^(-1)*second^(-2); math main { realDomain time second; time.min=0; extern time.max; extern time.delta; real F_CE(time) newton; real f_L_CE(time) newton; real g_V_CE(time) dimensionless; real a dimensionless; a=0.8; real F_min newton; F_min=10; real F_max newton; F_max=7000; real L_CE(time) metre; when(time=time.min) L_CE=0.038; real f_L_CE.L_CE_opt metre; f_L_CE.L_CE_opt=0.093; real f_L_CE.W dimensionless; f_L_CE.W=0.63; real lambda_a second_per_metre; real g_V_CE.V_max metre_per_second; g_V_CE.V_max=0.93; real V_CE(time) dimensionless; real g_V_CE.A dimensionless; g_V_CE.A=0.25; real g_V_CE.g_max dimensionless; g_V_CE.g_max=1.5; real d1 dimensionless; real d2 dimensionless; real d3 dimensionless; real g_V_CE.gamma dimensionless; g_V_CE.gamma=5.67; real d1.V_max metre_per_second; d1.V_max=0.93; real d1.A dimensionless; d1.A=0.25; real d1.g_max dimensionless; d1.g_max=1.5; real d1.S metre_per_second; d1.S=2; real d2.S metre_per_second; d2.S=2; real d2.A dimensionless; d2.A=0.25; real d2.V_max metre_per_second; d2.V_max=0.93; real d2.gamma dimensionless; d2.gamma=5.67; real d3.g_max dimensionless; d3.g_max=1.5; real d3.gamma dimensionless; d3.gamma=5.67; real F_SEE(time) newton; real k_SEE newton_per_metre2; k_SEE=1000000; real L_SEE(time) metre; real F_SEE.L_slack metre; F_SEE.L_slack=0.0025; real F_PEE(time) newton; real k_PEE newton_per_metre2; real F_PEE.L_slack metre; F_PEE.L_slack=0.0025; real k_PEE.W dimensionless; k_PEE.W=0.63; real k_PEE.L_CE_opt metre; k_PEE.L_CE_opt=0.01; real L_m(time) metre; real F_m(time) newton; // // F_CE=(f_L_CE*g_V_CE*a); // f_L_CE=(F_max*((1 metre)*((1 metre)-L_CE)-f_L_CE.L_CE_opt^2)/(f_L_CE.W^2*f_L_CE.L_CE_opt^2)); // g_V_CE=(if (V_CE<=0) (lambda_a*g_V_CE.V_max+V_CE)/(lambda_a*g_V_CE.V_max-V_CE/g_V_CE.A) else if ((0(g_V_CE.gamma*d1)) d3+d2*V_CE else 0); // d1=(d1.V_max*d1.A*(d1.g_max-1)/(d1.S*(d1.A+1))); // d2=(d2.S*(d2.A+1)/(d2.V_max*d2.A*(d2.gamma+1)^2)); // d3=((d3.g_max-1)*d3.gamma^2/(d3.gamma+1)^2+1); // F_SEE=(if (L_SEE<=F_SEE.L_slack) (0 newton) else k_SEE*(L_SEE-F_SEE.L_slack)^2); // F_PEE=(if (L_CE<=F_PEE.L_slack) (0 newton) else k_PEE*(L_CE-F_PEE.L_slack)^2); // k_PEE=(F_max/(k_PEE.W*k_PEE.L_CE_opt)^2); // V_CE=((1 per_metre)*(1/g_V_CE*(F_SEE*(L_m-L_CE)-F_PEE*L_CE)/(a*f_L_CE))); // F_m=F_SEE; // // lambda_a=((1 second_per_metre)*(1-exp((-1)*3.82*a)+a*exp((-1)*3.82))); // L_CE:time=((1 metre_per_second)*V_CE); // L_SEE=(L_m-L_CE); // L_m=(if (time<=(1 second)) (.038 metre) else if ((time>(1 second)) and (time<(2 second))) (.038 metre)+(.002 metre_per_second)*(time-(1 second)) else (.04 metre)); }