212 lines (179 with data), 8.6 kB
/*
This dataset is part of The TLEMsafe Project Dataset. The dataset was
created during the TLEMsafe project (www.tlemsafe.eu) funded by the
European Commission under Grant Agreement (no. 247860) and under the
TLEMsafe Consortium Agreement.
Use the following paper when citing:
Carbone, V., Fluit, R., Pellikaan, P., van der Krogt, M.M., Janssen, D.,
Damsgaard, M., Vigneron, L., Feilkas, T., Koopman, H.F.J.M., Verdonschot, N., 2015.
TLEM 2.0 - a comprehensive musculoskeletal geometry dataset for
subject-specific modeling of lower extremity.
J. Biomech. 48, 734-741. doi:10.1016/j.jbiomech.2014.12.034
*/
Pelvis = {
/// Based on the mass of TLEM1.2 but corrected with
/// the ratio TLEM2/TLEM1 segment length ratio
AnyVar MassStandard = 11.222;
AnyVec3 Jii = {0.0221,0.01,0.0221}; //Taken from SimpleSpineModel
AnyVec3 Jij = {0,0,0};
AnyVec3 sCoM = {-0.0481, -0.0356, 0.000000};
//AnyVar PelvisWidth = 0.1686;
//--> Folowing lines can be used for the definition of width and depth standards
//AnyVar WidthStandard = 2*..Seg.Pelvis.Muscles.StdPar.HipJointTD[2];
//AnyVar DepthStandard = vnorm({..Seg.Pelvis.Muscles.StdPar.AsisIpsilateral[0],..Seg.Pelvis.Muscles.StdPar.AsisIpsilateral[1],0.0}-{..Seg.Pelvis.Muscles.StdPar.PsisIpsilateral[0],..Seg.Pelvis.Muscles.StdPar.PsisIpsilateral[1],0.0});
//<--
//-->Following lines can be used for checking values after scaling
//AnyVar Width = 2*..Seg.Pelvis.HipJoint.sRel[2];
//AnyVar Depth = vnorm({..Seg.Pelvis.Muscles.ASIS.sRel[0],..Seg.Pelvis.Muscles.ASIS.sRel[1],0.0}-{..Seg.Pelvis.Muscles.PSIS.sRel[0],..Seg.Pelvis.Muscles.PSIS.sRel[1],0.0});
//<--
AnyVar Width = 0.1686071;
AnyVar Depth = 0.1232004;
AnyVar Height =0.1080;
AnyFloat SacralInterfaceMorphingPointsPickedMidline = {
{-0.0532969, 0.0174809, 0},
{-0.0814901, 0.0267602, 0},
{-0.116077, 0.0107404, 0},
{-0.127061, -0.0166724, 0},
{-0.127067, -0.0427844, 0},
{-0.112505, -0.0906497, 0},
{-0.109755, -0.0788577, 0},
{-0.114394, -0.0499161, 0}
};
AnyFloat SacralInterfaceMorphingPointsPickedRight = {
{-0.114996, -0.0686438, 0.026907},
{-0.0692806, -0.0140378, 0.0521637},
{-0.091345, 0.039045, 0.0451483},
{-0.0905573, 0.00050158, 0.0493511},
{-0.113881, -0.0829519, 0.0117245},
{-0.120877, -0.0757372, 0.0068624},
{-0.125407, -0.0574067, 0.00839754}
};
AnyFloat SacralInterfaceMorphingPoints = arrcat(
SacralInterfaceMorphingPointsPickedMidline,
SacralInterfaceMorphingPointsPickedRight,
SacralInterfaceMorphingPointsPickedRight * {{1,0,0},{0,1,0},{0,0,-1}}
);
AnyFloat PelvicIntefaceMorphingRightPoints = {
{0.0148707, -0.0811221, 0.00264832},
{0.0146978, -0.0815507, 0.0221842},
{-0.00937356, -0.108878, 0.00161407},
{-0.0142942, -0.121428, 0.0178059},
{-0.0358482, -0.137161, 0.03241},
{-0.0334113, -0.091979, 0.0533088},
{-0.00444837, -0.0824284, 0.044096},
{-0.0406596, -0.0958259, 0.0644109},
{-0.0740169, -0.139538, 0.0567328},
{-0.0870028, -0.120556, 0.053496},
{-0.0798662, -0.111316, 0.0661271},
{-0.0444867, -0.0666016, 0.057759},
{-0.0297858, -0.0533666, 0.0984848},
{-0.0148699, -0.0627096, 0.0747082},
{-0.0875349, -0.0791206, 0.0485497},
{-0.0789282, -0.0317647, 0.0685245},
{-0.102302, -0.0330257, 0.0507615},
{-0.113153, -0.0217399, 0.0454614},
{-0.12479, 5.86157e-005, 0.0445341},
{-0.116361, 0.0144844, 0.037176},
{-0.0804496, 0.0306697, 0.0531175},
{-0.0626139, -0.00495678, 0.0606976},
{-0.0838581, -0.0194495, 0.0479099},
{-0.088922, 0.0569577, 0.0672591},
{-0.104913, 0.051696, 0.0734968},
{-0.0650451, 0.0384862, 0.127344},
{-0.0441311, -0.0213854, 0.0998263},
{-0.0152355, -0.0126288, 0.109558},
{-0.0033686, 0.0136623, 0.118427},
{-0.0299353, 0.0242636, 0.135871},
{-0.0416322, -0.000682139, 0.10062},
AsisIpsilateral*.TF',
PsisIpsilateral*.TF',
PubicTubercleIpsilateral*.TF'
};
AnyMat33 LeftMirror = { {1, 0, 0}, {0, 1, 0}, {0, 0, -1}};
AnyMatrix points_RBF_unscaled = arrcat(SacralInterfaceMorphingPoints, PelvicIntefaceMorphingRightPoints, PelvicIntefaceMorphingRightPoints*LeftMirror);
AnyMatrix GluteusWrappingSurfacePoints = {{-0.04011+0.020, 0.12595-0.02, 0.013490+0.03} * .TF' - FrameOffset,
{-0.02738+0.015,-0.06247-0.02,-0.03611-0.05} * .TF' - FrameOffset };
};
Thigh= {
AnyVec3 sCoM = {-0.0081, 0.2220, 0.0191}*.TF';
AnyVar KneeWidth = 0.0975;
/// Based on the mass of TLEM1.2 but corrected with
/// the ratio TLEM2/TLEM1 segment length ratio
AnyVar MassStandard = 6.0191; //11.54; // kg, Klein Horsman dataset
AnyVar LengthStandard = vnorm(..Seg.Thigh.StdPar.HipJoint-..Seg.Thigh.StdPar.KneeJoint);
AnyVar LengthStandardForFibers = 0.4098;//**used for fiber length scaling**
AnyVar Density = 1000;
AnyVar Length = vnorm(..Seg.Thigh.KneeJoint.sRel-..Seg.Thigh.HipJoint.sRel);
AnyVar Radius = (..Seg.Thigh.Mass/(3.1416*Length*Density))^0.5;
AnyVar Ixx = 0.25*..Seg.Thigh.Mass*Radius*Radius + 1/12*..Seg.Thigh.Mass*Length*Length;
AnyVar Iyy = 0.5*..Seg.Thigh.Mass*Radius*Radius;
AnyVar Izz = Ixx;
AnyMat33 JM=..Seg.Thigh.ScalingNode.ARel*{{Ixx,0,0},{0,Iyy,0},{0,0,Izz}}*..Seg.Thigh.ScalingNode.ARel';
AnyVec3 Jii = {JM[0][0], JM[1][1], JM[2][2]};
AnyVec3 Jij = {JM[1][0], JM[2][1], JM[2][0]};
};
Patella = {
AnyVar MassStandard = 0.025;
AnyVar LengthStandard = 0;
AnyVar Density = 1000;
AnyVar Ixx = 0;
AnyVar Iyy = 0;
AnyVar Izz = Ixx;
AnyVec3 Jii = {Ixx, Iyy, Izz};
AnyVec3 Jij = {0,0,0};
};
Shank = {
/// Based on the mass of TLEM1.2 but corrected with
/// the ratio TLEM2/TLEM1 segment length ratio
AnyVar MassStandard = 3.6287;
AnyVar Density = 1000;
AnyVar LengthStandardForFibers = 0.4098;//**used for fiber length scaling
AnyVar LengthStandard = vnorm(..Seg.Shank.StdPar.KneeJoint-..Seg.Shank.StdPar.AnkleJoint);
AnyVec3 sCoM = {-0.0128, 0.2081, 0.0009}*.TF';
AnyVar AnkleWidth = 0.0753;
AnyVar Length = vnorm(..Seg.Shank.KneeJoint.sRel-..Seg.Shank.AnkleJoint.sRel);
AnyVar Radius = (..Seg.Shank.Mass/(3.1416*Length*..StandardParameters.Shank.Density))^0.5;
AnyVar Ixx = 0.25*..Seg.Shank.Mass*Radius*Radius + 1/12*..Seg.Shank.Mass*Length*Length;
AnyVar Iyy = 0.5*..Seg.Shank.Mass*Radius*Radius;
AnyVar Izz = Ixx;
AnyMat33 JM=..Seg.Shank.ScalingNode.ARel*{{Ixx,0,0},{0,Iyy,0},{0,0,Izz}}*..Seg.Shank.ScalingNode.ARel';
AnyVec3 Jii = {JM[0][0], JM[1][1], JM[2][2]};
AnyVec3 Jij = {JM[1][0], JM[2][1], JM[2][0]};
};
Talus = {
/// Based on the mass of TLEM1.2 but corrected with
/// the ratio TLEM2/TLEM1 segment length ratio
AnyVar MassStandard = 0.26049;
AnyVar Density = 1000;
AnyVar LengthStandard = 0.133*vnorm(.Foot.BigToeNode-.Foot.HeelNode);
AnyVec3 sCoM = {0.01395452, 0.01595584, -0.01253307}*.TF';
// kg, 20% of Klein Horsman dataset Mass of Foot (% calculated from bone volume ratio);
#if BM_FOOT_MODEL == _FOOT_MODEL_DEFAULT_
AnyVar Ixx = 2/5 * ..Seg.Talus.Mass * (vnorm(0.5*(..Seg.Talus.AnkleJoint.sRel - ..Seg.Talus.MedialMalleolus.sRel)))^2;
AnyVar Iyy = Ixx;
AnyVar Izz = Ixx;
AnyVec3 Jii = {Ixx, Iyy, Izz};
AnyVec3 Jij = {0,0,0};
#endif
};
Foot = {
/// Based on the mass of TLEM1.2 but corrected with
/// the ratio TLEM2/TLEM1 segment length ratio
AnyVar MassStandard = 0.7226;
AnyVar LengthStandardForFibers = 0.285;//**used for fiber length scaling**
AnyVar LengthStandard = vnorm(.Foot.BigToeNode-.Foot.HeelNode);
AnyVar HeightStandard = vnorm(.Foot.SubTalarJoint-.Foot.HeelContactNodeLow);
AnyVar WidthStandard = vnorm(.Foot.ToeLateralContactNode-.Foot.ToeMedialContactNode);
AnyVar Density = 1000;
AnyVec3 sCoM = { 0.0509 , -0.0161 , 0.0139 }*.TF';
#if BM_FOOT_MODEL == _FOOT_MODEL_DEFAULT_
AnyVar Length = vnorm(..Seg.Foot.BigToeNode.sRel-..Seg.Foot.HeelNode.sRel);
AnyVar Radius = (..Seg.Foot.Mass/(3.1416*Length*Density))^0.5;
AnyVar Ixx = 0.25*..Seg.Foot.Mass*Radius*Radius + 1/12*..Seg.Foot.Mass*Length*Length;
AnyVar Iyy = 0.5*..Seg.Foot.Mass*Radius*Radius;
AnyVar Izz = Ixx;
AnyMat33 JM=..Seg.Foot.ScalingNode.ARel*{{Iyy,0,0},{0,Ixx,0},{0,0,Izz}}*..Seg.Foot.ScalingNode.ARel';
AnyVec3 Jii = {JM[0][0], JM[1][1], JM[2][2]};
AnyVec3 Jij = {JM[1][0], JM[2][1], JM[2][0]};
#endif
};