Process Experimental Data - OpenKnee(s)¶
Kinematics¶
The experimentally measured tibial kinetics are imported from the appropriate .tdms
file, and the data under the heading State.JCS
are utilized. Two adjustments are made to the experimental data. The first converts the relative joint kinematics reported in State.JCS
to absolute joint kinematics. The second converts to the sign conventions used by CSU.
Kinematics Adjustment 1 - Offset¶
The experimentally measured kinematics from OpenKnee(s) reports the change in kinematics relative to a “neutral” joint position. These kinematics are adjusted to the absolute joint kinematics because the knee model inputs are absolute kinematics, and the model’s kinematic results are reported as absolute kinematics. This adjustment is made by applying a constant offset to the reported experimental kinematics. This offset is the joint kinematics necessary needed to achieve a experimentally measured “neutral” position.
The kinematics needed to achieve this “neutral” joint position are reported in the State.cfg
file. Given that the kinematics from the .tdms
file under the State.JCS
heading are utilized, the neutral position from the [JCS]
block of the State.cfg
file is used. Below is an example of the relevant parts from the State.cfg
file.
[JCS]
Position Offset (m,rad) = "<size(s)=6> -0.0006018416 -0.0042514883 -0.0255631685 0.1450310182 0.0232244115 -0.2681618244"
These values are parsed using custom Python scripts, and the values are converted from m to mm, and radians to degrees. These values are taken to correspond to the following kinematics in this order: [Medial tibial translation, Posterior tibial translation, Superior tibial translation, Flexion, Valgus, Internal tibial rotation].
The absolute joint kinematics are defined by adding the offset values to the corresponding kinematics from the .tdms file (State.JCS
).
Kinematics Adjustment 2 - CSU convention¶
The joint kinematics are converted to the convention used by CSU after the offsets are applied to the kinematics. This adjustment is made to keep the experimental descriptions of motion consistent the the descriptions of motion output by the knee model. The CSU convention describes motions as:
- Medial tibial translation
- Anterior tibial translation
- Superior tibial translation
- Flexion
- Varus
- Internal tibial rotation.
To convert to the CSU convention, the sign of the kinematics for two motions are changed:
JCS Posterior
kinematics are multiplied by -1 to convert to anterior tibial translation.JCS Valgus
kinematics are multiplied by -1 to convert to varus rotation.
Kinetics¶
The experimentally measured tibial kinetics are imported from the appropriate .tdms
file, and the data under the heading State.JCS Load
are used to define the load inputs for the test case simulation step. However, the data is processed to adjust the description of the positive loading directions. These adjustments are made by changing the sign of the reported data.
The following sections described how the experimentally measured loads are adjusted. Note that the sign changes may be redundant, however this is done intentionally to keep a consistent workflow between data sources and between right and left knee models.
Kinetics Adjustment 1 - CSU convention¶
The first adjustment is used to change from the reported SimVitro convention on directions to the CSU convention. The CSU convention has the positive x direction pointing to the right, and the positive y direction pointing anteriorly. The signs of the data reported in the .tdms file under State.JCS Load
are adjusted based on their descriptions (Table 1). This step is not strictly necessary, however this keeps the data consistent with the modeling workflow used at CSU.
These adjustments are made when the data is imported from the .tdms
file, and before the loading profiles are defined for the Abaqus simulation. The loading profiles are defined using these adjustments, and the data can be found in the appropriate .inp
files. Below is a description of the adjustments described in Table 1
Lateral Drawer
is converted to medial tibial drawer by multiplying the corresponding experimental data by -1Anterior Drawer
is not adjustedDistraction
is not adjustedExtension Torque
is converted to flexion torque by multiplying the corresponding experimental data by -1Varus Torque
is not adjustedExternal Rotation Torque
is converted to internal tibial rotation torque by multiplying the corresponding experimental data by -1
Kinetics Adjustment 2 - Right or Left Knee¶
The signs of the loads may be changed depending on whether a right or left knee specimen is being simulated. This is because the loads are applied with respect to the fixed tibial coordinate system, and the positive directions of this coordinate system may not match the experimental data’s loading directions.
For example, based on the CSU convention, the positive x direction points to the right. The SimVitro reported load that corresponds to this direction is Lateral Drawer
. For a right knee, the Lateral Drawer
direction and the tibia’s x-axis point in the same direction. Conversely, for a left knee the Lateral Drawer
direction and the tibia’s x-axis point in opposite directions. The sign of the reported data is changed because the loads are applied with respect to the tibia’s fixed coordinate system.
These adjustments are applied in the part of the Abaqus .inp
file that is used to define the test cases step. An example of these adjustments can be seen in the code block below.
- Below is a description of how the experimental loads are adjusted for each degree of freedom.
- After the previous adjustment (Table 1), the data is described as
medial tibial drawer
. For a right knee, the data is multiplied by -1 (Table 1) to change the load tolateral tibial drawer
. - The data is reported as
anterior tibial drawer
, and not adjusted in the previous step (Table 1). The anterior direction is in the positive y relative to the fixed tibial coordinate system for left and right knees, so this value is not changed for right or left knees (Table 1). - The data is reported as
distraction
, and not adjusted in the previous step (Table 1). A load that acts in the inferior direction relative to the fixed tibial coordinate system will cause joint distraction regardless of a right or left knee. The positive direction for the tibia’s z-axis points in the superior direction, therefore the sign for both right and left knees is changed to make the distraction load act in the inferior direction (Table 1). - The flexion angle of the joint is prescribed, so the extension torque is not applicable.
- The data is reported as
varus torque
, and not adjusted in the previous step (Table 1). The y-axis of tibia’s fixed coordinate system points in the anterior direction. For a right knee, a positive torque around the tibia’s y-axis causes varus, so the sign is not changed for a right knee. However the sign is changed for a left knee because a positive torque about the y-axis of a right tibia causes valgus. - After the previous adjustment (Table 1), the data is described as
internal tibial rotation torque
. A positive rotation about the positive z-direction of a right knee causes internal tibial rotation, so the sign is not changed for a right knee. However the sign is changed for a left knee because a positive rotation about the positive z-direction of a left knee causes external tibial rotation.
- After the previous adjustment (Table 1), the data is described as
Axis | Reported | CSU convention | Right knee | Left knee |
---|---|---|---|---|
\(x_1\) | JCS Load Lateral Drawer_LP Filtered 1.0 Hz | -1 | -1 | 1 |
\(x_2\) | JCS Load Anterior Drawer_LP Filtered 1.0 Hz | 1 | 1 | 1 |
\(x_3\) | JCS Load Distraction_LP Filtered 1.0 Hz | 1 | -1 | -1 |
\(x_4\) (N/A) | JCS Load Extension Torque_LP Filtered 1.0 Hz | -1 | 1 (N/A) | 1 (N/A) |
\(x_5\) | JCS Load Varus Torque_LP Filtered 1.0 Hz | 1 | 1 | -1 |
\(x_6\) | JCS Load External Rotation Torque_LP Filtered 1.0 Hz | -1 | 1 | -1 |
Below is an example code showing how loads are specified in the Abaqus input file for a simulation of a left knee:
** Medial tibial drawer force, -1. for right knee and 1. for left knee
*CLOAD, amplitude=medialTibialDrawerForce, follower, op=new
JointCoordSys.1, 1, 1.
** Anterior tibial drawer force, 1. for right and left knee
*CLOAD, amplitude=anteriorTibialDrawerForce, follower, op=new
JointCoordSys.1, 2, 1.
** Distraction force, -1. for right and left knee
*CLOAD, amplitude=distractionForce, follower, op=new
JointCoordSys.1, 3, -1.
** Varus torque, 1. for right knee and -1. for left knee
*CLOAD, amplitude=varusTorque, follower, op=new
JointCoordSys.1, 5, -1.
** Internal tibial rotation torque, 1. for right knee and -1. for left knee
*CLOAD, amplitude=internalTibialRotationTorque, follower, op=new
JointCoordSys.1, 6, -1.
Where each amplitude is the magnitude of the corresponding load, where the adjustments from adjustment 1 are reflected.
The node JointCoordSys.1
is the node that is coincident with the origin of the tibia’s fixed coordinate system. The integer following JointCoordSys.1
indicates the degree of freedom that the load is applied to, and this corresponds with \(x_i\) in Table 1. The final integer is multiplied by the specified amplitude. This is used to adjust for a right or left knee according to Table 1.