235 lines (200 with data), 11.3 kB
AnyFolder Measures = {
AnyFolder Kinematics = {
AnyFolder Knee = {
AnyRefFrame& ref0 = Main.Model.Segs.Tibia.AnatomicalFrame;
AnyRefFrame& ref1 = Main.Model.Segs.Femur.AnatomicalFrame;
AnyFolder Floating = {
AnyFolder Segs = {
AnySeg Femur_Dummy = {
r0 = Main.Model.Segs.Femur.r0
+ Main.Model.Segs.Femur.AnatomicalFrame.sRel * Main.Model.Segs.Femur.Axes0';
Axes0 = Main.Model.Segs.Femur.Axes0 * Main.Model.Segs.Femur.AnatomicalFrame.ARel;
Mass = 0;
Jii = {0, 0, 0};
};
AnySeg Tibia_Dummy = {
r0 = Main.Model.Segs.Tibia.r0
+ Main.Model.Segs.Tibia.AnatomicalFrame.sRel * Main.Model.Segs.Tibia.Axes0';
Axes0 = Main.Model.Segs.Tibia.Axes0 * Main.Model.Segs.Tibia.AnatomicalFrame.ARel;
Mass = 0;
Jii = {0, 0, 0};
};
};//Segs
AnyFolder Joints = {
AnyCylindricalJoint Femur_Connect = {
Axis = x;
AnyRefFrame& ref0 = Main.Model.Segs.Femur.AnatomicalFrame;
AnyRefFrame& ref1 = ..Segs.Femur_Dummy;
};
AnyCylindricalJoint Inter_Connect = {
Axis = y;
AnyRefFrame& ref0 = ..Segs.Femur_Dummy;
AnyRefFrame& ref1 = ..Segs.Tibia_Dummy;
};
AnyCylindricalJoint Tibia_Connect = {
Axis = z;
AnyRefFrame& ref0 = ..Segs.Tibia_Dummy;
AnyRefFrame& ref1 = Main.Model.Segs.Tibia.AnatomicalFrame;
};
};
AnyFolder Measures = {
AnyVar Lin_Tibia_LateralMedial = .Joints.Femur_Connect.Pos[0] ;
AnyVar Lin_Tibia_AnteriorPosterior = .Joints.Inter_Connect.Pos[0];
AnyVar Lin_Tibia_SuperiorInferior = .Joints.Tibia_Connect.Pos[0] ;
AnyVar Rot_Tibia_FlexionExtension = (-1)*.Joints.Femur_Connect.Pos[1];
AnyVar Rot_Tibia_AdductionAbduction = .Joints.Inter_Connect.Pos[1];
AnyVar Rot_Tibia_InternalExternal = .Joints.Tibia_Connect.Pos[1];
AnyVar Lin_Tibia_LateralMedial_in_mm = Lin_Tibia_LateralMedial * 1000;
AnyVar Lin_Tibia_AnteriorPosterior_in_mm = Lin_Tibia_AnteriorPosterior * 1000;
AnyVar Lin_Tibia_SuperiorInferior_in_mm = Lin_Tibia_SuperiorInferior * 1000;
AnyVar Rot_Tibia_FlexionExtension_in_deg = Rot_Tibia_FlexionExtension*(180/pi);
AnyVar Rot_Tibia_AdductionAbduction_in_deg = Rot_Tibia_AdductionAbduction*(180/pi);
AnyVar Rot_Tibia_InternalExternal_in_deg = Rot_Tibia_InternalExternal*(180/pi);
};
};//Floating
};//Knee
AnyFolder Patella = {
AnyFolder Floating = {
AnyFolder Segs = {
AnySeg Femur_Dummy = {
r0 = Main.Model.Segs.Femur.r0
+ Main.Model.Segs.Femur.AnatomicalFrame.sRel * Main.Model.Segs.Femur.Axes0';
Axes0 = Main.Model.Segs.Femur.Axes0 * Main.Model.Segs.Femur.AnatomicalFrame.ARel;
Mass = 0;
Jii = {0, 0, 0};
};
AnySeg Patella_Dummy = {
r0 = Main.Model.Segs.Patella.r0
+ Main.Model.Segs.Patella.AnatomicalFrame.sRel * Main.Model.Segs.Patella.Axes0';
Axes0 = Main.Model.Segs.Patella.Axes0 * Main.Model.Segs.Patella.AnatomicalFrame.ARel;
Mass = 0;
Jii = {0, 0, 0};
};
};//Segs
AnyFolder Joints = {
AnyCylindricalJoint Femur_Connect = {
Axis = x;
AnyRefFrame& ref0 = Main.Model.Segs.Femur.AnatomicalFrame;
AnyRefFrame& ref1 = ..Segs.Femur_Dummy;
};
AnyCylindricalJoint Inter_Connect = {
Axis = y;
AnyRefFrame& ref0 = ..Segs.Femur_Dummy;
AnyRefFrame& ref1 = ..Segs.Patella_Dummy;
};
AnyCylindricalJoint Patella_Connect = {
Axis = z;
AnyRefFrame& ref0 = ..Segs.Patella_Dummy;
AnyRefFrame& ref1 = Main.Model.Segs.Patella.AnatomicalFrame;
};
};
AnyFolder Measures = {
AnyVar Lin_Patella_MedialShift = -.Joints.Femur_Connect.Pos[0] ;
AnyVar Lin_Patella_AnteriorPosterior = .Joints.Inter_Connect.Pos[0];
AnyVar Lin_Patella_SuperiorInferior = .Joints.Patella_Connect.Pos[0] ;
AnyVar Rot_Patella_FlexionExtension = (-1)*.Joints.Femur_Connect.Pos[1];
AnyVar Rot_Patella_MedialSpin = .Joints.Inter_Connect.Pos[1];
AnyVar Rot_Patella_MedialTilt = .Joints.Patella_Connect.Pos[1];
AnyVar Lin_Patella_MedialShift_in_mm = Lin_Patella_MedialShift * 1000;
AnyVar Lin_Patella_AnteriorPosterior_in_mm = Lin_Patella_AnteriorPosterior * 1000;
AnyVar Lin_Patella_SuperiorInferior_in_mm = Lin_Patella_SuperiorInferior * 1000;
AnyVar Rot_Patella_FlexionExtension_in_deg = Rot_Patella_FlexionExtension*(180/pi);
AnyVar Rot_Patella_MedialSpin_in_deg = Rot_Patella_MedialSpin*(180/pi);
AnyVar Rot_Patella_MedialTilt_in_deg = Rot_Patella_MedialTilt*(180/pi);
};
};//Floating
};//Patella
AnyFolder Ligaments = {
AnyVar aPCL_Length_in_mm = Main.Model.Ligaments.aPCL.PLine.Pos[0] * 1000.0;
AnyVar pPCL_Length_in_mm = Main.Model.Ligaments.pPCL.PLine.Pos[0] * 1000.0;
AnyVar LCL_Length_in_mm = Main.Model.Ligaments.LCL.PLine.Pos[0] * 1000.0;
};
};//Kinematics
AnyFolder Kinetics = {
#if USE_FDK == 1
AnyFolder TibioFemoral = {
AnyVar Contact_Total = vnorm(Main.Model.Contacts.Femur_Tibia_medial.Fmaster+Main.Model.Contacts.Femur_Tibia_lateral.Fmaster);
};
AnyFolder PatelloFemoral = {
AnyVar Contact_Total = vnorm(Main.Model.Contacts.Femur_Patella.Fmaster);
};
#endif
AnyFolder aPCL = {
AnyVar Force = abs(Main.Model.Ligaments.aPCL.Force.Fout[0]);
};
AnyFolder pPCL = {
AnyVar Force = abs(Main.Model.Ligaments.pPCL.Force.Fout[0]);
};
};
AnyFolder Forces = {
AnyVar BodyWeight = BODY_MASS * vnorm(Main.KneeSimulatorStudy.Gravity);
AnyFolder Quadriceps = {
AnyVar Force = abs(Main.KneeSimulatorStudy.Actuators.Quadriceps.Fout[0]);
AnyVar Force_Ratio_BW = Force / .BodyWeight ;
};
#if USE_FDK == 1
AnyFolder TibioFemoral = {
AnyForceMomentMeasure2 Measure_Contact_Total = {
AnyForceBase& ForceM = Main.Model.Contacts.Femur_Tibia_medial;
AnyForceBase& ForceL = Main.Model.Contacts.Femur_Tibia_lateral;
AnyRefFrame& RefNode = Main.Model.Segs.Tibia.AnatomicalFrame;
AnySeg& Seg = Main.Model.Segs.Tibia;
AnyVec3 Flocal = F*RefNode.Axes;
AnyVec3 Mlocal = M*RefNode.Axes;
};
AnyForceMomentMeasure2 Measure_Contact_Medial = {
AnyForceBase& Force = Main.Model.Contacts.Femur_Tibia_medial;
AnyRefFrame& RefNode = Main.Model.Segs.Tibia.AnatomicalFrame;
AnySeg& Seg = Main.Model.Segs.Tibia;
AnyVec3 Flocal = F*RefNode.Axes;
AnyVec3 Mlocal = M*RefNode.Axes;
};
AnyForceMomentMeasure2 Measure_Contact_Lateral = {
AnyForceBase& Force = Main.Model.Contacts.Femur_Tibia_lateral;
AnyRefFrame& RefNode = Main.Model.Segs.Tibia.AnatomicalFrame;
AnySeg& Seg = Main.Model.Segs.Tibia;
AnyVec3 Flocal = F*RefNode.Axes;
AnyVec3 Mlocal = M*RefNode.Axes;
};
AnyVar ContactForce_BothCondyles_Compression = -Measure_Contact_Total.Flocal[2];
AnyVar ContactForce_BothCondyles_Anterior = Measure_Contact_Total.Flocal[1];
AnyVar ContactForce_BothCondyles_Lateral = Measure_Contact_Total.Flocal[0];
AnyVar ContactForce_BothCondyles_Total = vnorm(Measure_Contact_Total.Flocal);
AnyVar ContactForce_MedialCondyle_Compression = -Measure_Contact_Medial.Flocal[2];
AnyVar ContactForce_MedialCondyle_Anterior = Measure_Contact_Medial.Flocal[1];
AnyVar ContactForce_MedialCondyle_Lateral = Measure_Contact_Medial.Flocal[0];
AnyVar ContactForce_MedialCondyle_Total = vnorm(Measure_Contact_Medial.Flocal);
AnyVar ContactForce_LateralCondyle_Compression = -Measure_Contact_Lateral.Flocal[2];
AnyVar ContactForce_LateralCondyle_Anterior = Measure_Contact_Lateral.Flocal[1];
AnyVar ContactForce_LateralCondyle_Lateral = Measure_Contact_Lateral.Flocal[0];
AnyVar ContactForce_LateralCondyle_Total = vnorm(Measure_Contact_Lateral.Flocal);
AnyVar ContactForce_BothCondyles_Compression_Ratio_BW = abs(ContactForce_BothCondyles_Compression) / .BodyWeight ;
AnyVar ContactForce_BothCondyles_Anterior_Ratio_BW = abs(ContactForce_BothCondyles_Anterior) / .BodyWeight ;
AnyVar ContactForce_BothCondyles_Lateral_Ratio_BW = abs(ContactForce_BothCondyles_Lateral) / .BodyWeight ;
AnyVar ContactForce_BothCondyles_Total_Ratio_BW = abs(ContactForce_BothCondyles_Total) / .BodyWeight ;
AnyVar ContactForce_MedialCondyle_Compression_Ratio_BW = abs(ContactForce_MedialCondyle_Compression) / .BodyWeight ;
AnyVar ContactForce_MedialCondyle_Anterior_Ratio_BW = abs(ContactForce_MedialCondyle_Anterior) / .BodyWeight ;
AnyVar ContactForce_MedialCondyle_Lateral_Ratio_BW = abs(ContactForce_MedialCondyle_Lateral) / .BodyWeight ;
AnyVar ContactForce_MedialCondyle_Total_Ratio_BW = abs(ContactForce_MedialCondyle_Total) / .BodyWeight ;
AnyVar ContactForce_LateralCondyle_Compression_Ratio_BW = abs(ContactForce_LateralCondyle_Compression) / .BodyWeight ;
AnyVar ContactForce_LateralCondyle_Anterior_Ratio_BW = abs(ContactForce_LateralCondyle_Anterior) / .BodyWeight ;
AnyVar ContactForce_LateralCondyle_Lateral_Ratio_BW = abs(ContactForce_LateralCondyle_Lateral) / .BodyWeight ;
AnyVar ContactForce_LateralCondyle_Total_Ratio_BW = abs(ContactForce_LateralCondyle_Total) / .BodyWeight ;
};
AnyFolder PatelloFemoral = {
AnyVar ContactForce = abs(vnorm(Main.Model.Contacts.Femur_Patella.Fmaster));
AnyVar ContactForce_Stress =
NONE_ZERO_DIVISION(ContactForce, Main.Model.Contacts.Femur_Patella.ContactArea, 1e-5);
AnyVar ContactForce_Ratio_BW = ContactForce / .BodyWeight;
AnyVar ContactForce_Ratio_QuadricepsForce =
NONE_ZERO_DIVISION(ContactForce, .Quadriceps.Force, 1e-5);
};
#endif
AnyFolder PatelloTibial = {
AnyVar TendonForce = abs(Main.Model.Tendons.PT.Length_Driver.Reaction.Fout[0]);
AnyVar TendonForce_Ratio_BW = TendonForce / .BodyWeight;
AnyVar TendonForce_Ratio_QuadricepsForce =
NONE_ZERO_DIVISION(TendonForce, .Quadriceps.Force, 1e-5);
};
};
};