Hello Pavel,
I was working on ligaments and I think I noticed something that might be wrong (I'm not sure though) in the definition of lumbar ligaments, both in the versions you sent me and in the default ones in the repository.
Basically I saw stiffness vectors are defined in the file Trunk/LigamentsLumbar.any, with 6 elements, one for each spine segment:
// mean stiffness values from Pintar et al. 1992, J Biomech
// stiffness vector L1L2, L2L3, L3L4, L4L5, L5Sacrum given in N/mm^-1
AnyVector kALL = {32.9, 32.4, 20.8, 39.5, 40.5, 13.2}*mm2m; // conversion to N/m
AnyVector kPLL = {10.0, 17.1, 36.6, 10.6, 25.8, 21.8}*mm2m; // conversion to N/m
AnyVector kISL = {12.1, 10.0, 9.6, 18.1, 8.7, 16.3}*mm2m; // conversion to N/m
AnyVector kSSL = {15.1, 23.0, 24.8, 34.8, 18.0, 17.8}*mm2m; // conversion to N/m
AnyVector kLF = {24.2, 23.0, 25.1, 34.5, 27.2, 20.2}*mm2m/2.0; // conversion to N/m + splitting (2 lig parts)
Then each one of the ligaments files refers to these vector in its file, pointing to the correspondent component of the vectors by means of an index "li", as I understand, like for L1L2Ligaments.any:
// Ligament group index
AnyIntVar li = 1;
// generic ligament lengths for the standard man
// (need to be calibrated if scaled)
ALLL1L2.L0 = 4.472135954999584e-003;
PLLL1L2.L0 = 2.828427124746193e-003;
ISL1L2.L0 = 1.784656829757482e-002;
SSL1L2.L0 = 1.926272306814388e-002;
FlavumL1L2.L0 = 1.369306393762912e-002;
#ifndef exclude_it
InterTransverseL1L2.L0 = 3.167885312722565e-002;
#endif
#ifndef exclude_all
AnyLigamentModelPol ALLL1L2 =
{
////L0 = .al_slack_length*1.5;
eps1 = ..epsALL[.li];
F1 = ..kALL[.li]eps1L0;
};
But it seems like in two files, L3L4Ligaments.any and L4L5Ligaments.any, the index is defined but not used, and an integer is used instead, which does not correspond to the index, for example in L3L4:
// Ligament group index
AnyIntVar li = 3;
// generic ligament lengths for the standard man
// (need to be calibrated if scaled)
ALLL3L4.L0 = 1.216552506059645e-002;
PLLL3L4.L0 = 3.000000000000114e-003;
ISL3L4.L0 = 5.000000000000116e-003;
SSL3L4.L0 = 7.516648189186516e-003;
FlavumL3L4.L0 = 6.422616289332482e-003;
#ifndef exclude_it
InterTransverseL3L4.L0 = 2.454083213086497e-002;
#endif
#ifndef exclude_all
AnyLigamentModelPol ALLL3L4 =
{
////L0 = .al_slack_length*1.5;
eps1 = ..epsALL[2];
F1 = ..kALL[2]eps1L0;
};
Shall those "[2]" be substituted with "[.li]" or are the files correct the way they are written now?
Thank you,
Michele