[bfdf16]: / Body / AAUHuman / LegTLEM2.1 / TLEM2.1 / ModelSegmentParameters.any

Download this file

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 = (.Talus.SubTalarJoint + .Talus.AnkleJoint)/2;
  // 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
};