[bfdf16]: / Body / AAUHuman / Trunk / SegmentsLumbar.any

Download this file

996 lines (726 with data), 52.3 kB

/**
Definitions of Segments in the Lumbar Part of the Spine + the pelvis
Abbrevitations:
ALL = Anterior Longitudinal Ligament
PLL = Posterior Longitudinal Ligament
LS = Ligamentum Supraspinale
LI = Ligamentum Interspinalia

MF = Multifidi
ILpl = Iliocostalis Lumborum pars lumborum (part of Erector Spinae)
LTpl = Longissimus Thoracis pars lumborum (part of Erector Spinae)
ILpt = Iliocostalis Lumborum pars thoracis (part of Erector Spinae)
LTpt = Longissimus Thoracis pars thoracis (part of Erector Spinae)
PM = Psoas Major
QL = Quadratus Lumborum
RA = Rectus Abdominis
OE = Obliquus Externus
OI = Obliquus Internus

C = Costae
CI = Crista Iliaca
CP = Crista Pubica
SIPS = Spina iliaca posterior superior
SIPI = Spina iliaca Posterior inferior
T = Thoracal hvirvel
L = Lumbal hvirvel
S = Sacral segment
*/
AnyFolder SegmentsLumbar = {
  
  #include "PelvisSeg.any"
  
  PelvisSeg={
    AnyFolder &StdPar=..ModelParameters.Pelvis;    
    #include "PelvisMuscleAttachementNodes.any"
  };
 
  AnySeg SacrumSeg = {

    AnyFolder &StdPar=..ModelParameters.Sacrum;    
    
    //initial position found as a function of pelvis pos and orientation
    r0=.PelvisSeg.PelvisSacrumJntNode.sRel*.PelvisSeg.Axes0'+.PelvisSeg.r0-SacrumPelvisJntNode.sRel*Axes0';    
    Axes0=.PelvisSeg.Axes0;
    Mass = 1e-5; // Pelvis contains the mass of Sacrum
    Jii = {0.001,0.001,0.001};
    
    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
    
    // Sacrum is part of the pelvis so they scales together
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.PelvisSeg.ScaleFunction;
    AnyRefNode& ScalingNode = AnatomicalFrameTrunk;
    AnyRefNode AnatomicalFrameTrunk = {
      sRel = ..PelvisSeg.AnatomicalFrameTrunk.sRel;
      ARel = ..PelvisSeg.AnatomicalFrameTrunk.ARel;
    };
    AnyFunTransform3D& Scale = .PelvisSeg.Scale;

    
    // Joint nodes
    AnyRefNode SacrumL5JntNode = {
      sRel = .Scale(.StdPar.SacrumL5JntNode_pos);
      // Rotated node with x axis parallel to the sacrum base surface
      AnyRefNode RotNode = {
        ARel = RotMat(0.5*(..SacrumBaseAnteriorNode.sRel + ..SacrumBasePosteriorNode.sRel),
                      ..SacrumBaseAnteriorNode.sRel,
                      0.5*(..SacrumBaseAnteriorNode.sRel + ..SacrumBasePosteriorNode.sRel) + (..SacrumBaseNodeL.sRel - ..SacrumBaseNodeR.sRel))*RotMat(pi/2,x);
      };
    };    
    AnyRefNode SacrumPelvisJntNode = {sRel = .Scale(.StdPar.SacrumPelvisJntNode_pos);};   
    
    // Nodes at the anterior and posterior points on the sacrum base that articulates with L5
    AnyRefNode SacrumBaseAnteriorNode = {sRel = .Scale(.StdPar.SacrumBaseAnteriorNode_pos);};
    AnyRefNode SacrumBasePosteriorNode = {sRel = .Scale(.StdPar.SacrumBasePosteriorNode_pos);};
    
    // Nodes at the right and left points on the sacrum base that articulates with L5
    AnyRefNode SacrumBaseNodeR = {sRel = .Scale(.StdPar.Right.SacrumBaseNode_pos);};
    AnyRefNode SacrumBaseNodeL = {sRel = .Scale(.StdPar.Left.SacrumBaseNode_pos);};
    
  /// The Right node is used by different body part for adding mirrored nodes
  /// (muscle origins/insertions etc) to the sacrum segment
  AnyRefNode Right= {
    AnyInt Sign = 1;
      AnyFunTransform3D& Scale = .Scale;
  };

  /// The Left node is used by different body part for adding mirrored nodes
  /// (muscle origins/insertions etc) to the sacrum segment
  AnyRefNode Left=  {
    AnyInt Sign = -1;
      AnyFunTransform3D& Scale = .Scale;
  };    
}; // SacrumSeg   
   
   
   // -------- Drawing object section (pelvis&sacrum)-------- 
   #if (! BM_LEG_MODEL_IS_TLEM) | (BM_PELVIS_DISPLAY == _PELVIS_DISPLAY_LEGANDTRUNKPELVIS_)
   SacrumSeg = {
     #if (BM_PELVIS_DISPLAY == _PELVIS_DISPLAY_LEGANDTRUNKPELVIS_)
     DrwSacrumForTrunk.Opacity = Main.DrawSettings.BonesOpacity.Sacrum*0.5;
     AnyDrawSurf DrwSacrumForTrunk = 
     #else
     DrwSacrum.Opacity = Main.DrawSettings.BonesOpacity.Sacrum;
     AnyDrawSurf DrwSacrum =         
     #endif
     {
       FileName = ...STL.FilenameSacrumSeg;
       RGB = ...ColorRef.Segments;
       AnyFunTransform3D &Scale =.Scale;   
     };
     
   }; // SacrumSeg
   #endif
   // -------- End of drawing section (pelvis&sacrum)-------- 

  
  AnySeg L5Seg = {
   
    AnyFolder &StdPar=..ModelParameters.L5;    
    
    //initial position found as a function of pelvis pos and orientation
    r0=.SacrumSeg.SacrumL5JntNode.sRel*.SacrumSeg.Axes0'+.SacrumSeg.r0-L5SacrumJntNode.sRel*Axes0'; 
    
    // This file includes the trunk specifc scaling function
    // and anatomical reference system
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.L5Seg.ScaleFunction;
    #include "TrunkScalingAndAnatomicalFrame.any"

    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
    AnyFunTransform3D &ScaleAbdominal =..Scaling.GeometricalScaling.Lumbar.ScaleFunction;
    AnyVar MassS = ..Scaling.MassScaling.Lumbar.MassScale;
  
    AnyVar MassStandard = ..StandardParameters.Lumbar.Mass/5;
    Mass = MassS*MassStandard;       
    
    Jii = {0.001,0.001,0.001};
    
    sCoM = Scale(StdPar.sCoM_pos);
    JaboutCoMOnOff = On;
    
    AnyRefNode L5SacrumJntNode = {sRel = .Scale(.StdPar.L5SacrumJntNode_pos);};        
    AnyRefNode L4L5JntNode = {
      sRel = .Scale(.StdPar.L4L5JntNode_pos); 
      AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1,0,0};};
      // Rotated node with x axis parallel to the superior endplate surface
      AnyRefNode RotNode = {
        ARel = RotMat(0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel),
                      ..SuperiorEndplateAnteriorNode.sRel,
                      0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel) + (..SuperiorEndplateNodeL.sRel - ..SuperiorEndplateNodeR.sRel))*RotMat(pi/2,x);
      };
    };
    
    // Nodes at the anterior and posterior points on the superior endplate
    AnyRefNode SuperiorEndplateAnteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplateAnteriorNode_pos);};
    AnyRefNode SuperiorEndplatePosteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplatePosteriorNode_pos);};
    
    // Nodes at the right and left points on the superior endplate
    AnyRefNode SuperiorEndplateNodeR = {sRel = .Scale(.StdPar.Right.SuperiorEndplateNode_pos);};
    AnyRefNode SuperiorEndplateNodeL = {sRel = .Scale(.StdPar.Left.SuperiorEndplateNode_pos);};
    
    //These nodes are used for adding extra used by other body parts to the right 
    //and left side of the segment
    AnyRefNode Right = {AnyFunTransform3D&Scale=.Scale;};
    AnyRefNode Left = {AnyFunTransform3D&Scale=.Scale;};
    
    
    // Ligament Nodes        
    AnyRefNode LINodeSuperior = {sRel = .Scale(.StdPar.LINodeSuperior_pos);};
    // End of ligament Nodes
    
    // Multifidi Nodes
    AnyRefNode MFdL3L5NodeR = {sRel = .Scale(.StdPar.Right.MFdL3L5Node_pos);};
    AnyRefNode MFdL3L5NodeL = {sRel = .Scale(.StdPar.Left.MFdL3L5Node_pos);};
    
    AnyRefNode MFdL5S1NodeR = {sRel = .Scale(.StdPar.Right.MFdL5S1Node_pos);};
    AnyRefNode MFdL5S1NodeL = {sRel = .Scale(.StdPar.Left.MFdL5S1Node_pos);};
    
    AnyRefNode MFmL2L5NodeR = {sRel = .Scale(.StdPar.Right.MFmL2L5Node_pos);};
    AnyRefNode MFmL2L5NodeL = {sRel = .Scale(.StdPar.Left.MFmL2L5Node_pos);};
    
    AnyRefNode MFmL5SacrumNodeR = {sRel = .Scale(.StdPar.Right.MFmL5SacrumNode_pos);};
    AnyRefNode MFmL5SacrumNodeL = {sRel = .Scale(.StdPar.Left.MFmL5SacrumNode_pos);};
    
    AnyRefNode MFtsL1L5NodeR = {sRel = .Scale(.StdPar.Right.MFtsL1L5Node_pos);};
    AnyRefNode MFtsL1L5NodeL = {sRel = .Scale(.StdPar.Left.MFtsL1L5Node_pos);};
    
    AnyRefNode MFtsL2L5NodeR = {sRel = .Scale(.StdPar.Right.MFtsL2L5Node_pos);};
    AnyRefNode MFtsL2L5NodeL = {sRel = .Scale(.StdPar.Left.MFtsL2L5Node_pos);};
    
    AnyRefNode MFtsL5SacrumNodeR = {sRel = .Scale(.StdPar.Right.MFtsL5SacrumNode_pos);};
    AnyRefNode MFtsL5SacrumNodeL = {sRel = .Scale(.StdPar.Left.MFtsL5SacrumNode_pos);};
    // End of Multifidi Nodes
    
    // Erector Spinae Nodes
    AnyRefNode LTplL5IliumNodeR = {sRel = .Scale(.StdPar.Right.LTplL5IliumNode_pos);};
    AnyRefNode LTplL5IliumNodeL = {sRel = .Scale(.StdPar.Left.LTplL5IliumNode_pos);};

    AnyRefNode LTptT5L5NodeR = {sRel = .Scale(.StdPar.Right.LTptT5L5Node_pos);};
    AnyRefNode LTptT5L5NodeL = {sRel = .Scale(.StdPar.Left.LTptT5L5Node_pos);};
    
    AnyRefNode LTptT6S1Via11NodeR = {sRel = .Scale(.StdPar.Right.LTptT6S1Via11Node_pos);};
    AnyRefNode LTptT6S1Via11NodeL = {sRel = .Scale(.StdPar.Left.LTptT6S1Via11Node_pos);};
    
    AnyRefNode LTptT7S2Via10NodeR = {sRel = .Scale(.StdPar.Right.LTptT7S2Via10Node_pos);};
    AnyRefNode LTptT7S2Via10NodeL = {sRel = .Scale(.StdPar.Left.LTptT7S2Via10Node_pos);};
    
    AnyRefNode LTptT8S3Via9NodeR = {sRel = .Scale(.StdPar.Right.LTptT8S3Via9Node_pos);};
    AnyRefNode LTptT8S3Via9NodeL = {sRel = .Scale(.StdPar.Left.LTptT8S3Via9Node_pos);};
    
    AnyRefNode LTptT9S4Via8NodeR = {sRel = .Scale(.StdPar.Right.LTptT9S4Via8Node_pos);};
    AnyRefNode LTptT9S4Via8NodeL = {sRel = .Scale(.StdPar.Left.LTptT9S4Via8Node_pos);};
    
    AnyRefNode LTptT10SacrumVia7NodeR = {sRel = .Scale(.StdPar.Right.LTptT10SacrumVia7Node_pos);};
    AnyRefNode LTptT10SacrumVia7NodeL = {sRel = .Scale(.StdPar.Left.LTptT10SacrumVia7Node_pos);};
    
    AnyRefNode LTptT11SacrumVia6NodeR = {sRel = .Scale(.StdPar.Right.LTptT11SacrumVia6Node_pos);};
    AnyRefNode LTptT11SacrumVia6NodeL = {sRel = .Scale(.StdPar.Left.LTptT11SacrumVia6Node_pos);};
    
    AnyRefNode LTptT12SacrumVia5NodeR = {sRel = .Scale(.StdPar.Right.LTptT12SacrumVia5Node_pos);};
    AnyRefNode LTptT12SacrumVia5NodeL = {sRel = .Scale(.StdPar.Left.LTptT12SacrumVia5Node_pos);};
    // End of Erector Spinae Nodes
    
    // Psoas Major Nodes
    AnyRefNode PML5_TMNodeR = {sRel = .Scale(.StdPar.Right.PML5_TMNode_pos);};
    AnyRefNode PML5_TMNodeL = {sRel = .Scale(.StdPar.Left.PML5_TMNode_pos);};
    
    AnyRefNode PML5T_TMNodeR = {sRel = .Scale(.StdPar.Right.PML5T_TMNode_pos);};
    AnyRefNode PML5T_TMNodeL = {sRel = .Scale(.StdPar.Left.PML5T_TMNode_pos);};
    
    AnyRefNode PMT12I_TMVia4NodeR = {sRel = .Scale(.StdPar.Right.PMT12I_TMVia4Node_pos);};
    AnyRefNode PMT12I_TMVia4NodeL = {sRel = .Scale(.StdPar.Left.PMT12I_TMVia4Node_pos);};
    
    AnyRefNode PML1I_TMVia3NodeR = {sRel = .Scale(.StdPar.Right.PML1I_TMVia3Node_pos);};
    AnyRefNode PML1I_TMVia3NodeL = {sRel = .Scale(.StdPar.Left.PML1I_TMVia3Node_pos);};
    
    AnyRefNode PML2I_TMVia2NodeR = {sRel = .Scale(.StdPar.Right.PML2I_TMVia2Node_pos);};
    AnyRefNode PML2I_TMVia2NodeL = {sRel = .Scale(.StdPar.Left.PML2I_TMVia2Node_pos);};
    
    AnyRefNode PML3I_TMVia1NodeR = {sRel = .Scale(.StdPar.Right.PML3I_TMVia1Node_pos);};
    AnyRefNode PML3I_TMVia1NodeL = {sRel = .Scale(.StdPar.Left.PML3I_TMVia1Node_pos);};
    
    AnyRefNode PML1T_TMVia4NodeR = {sRel = .Scale(.StdPar.Right.PML1T_TMVia4Node_pos);};
    AnyRefNode PML1T_TMVia4NodeL = {sRel = .Scale(.StdPar.Left.PML1T_TMVia4Node_pos);};
    
    AnyRefNode PML2T_TMVia3NodeR = {sRel = .Scale(.StdPar.Right.PML2T_TMVia3Node_pos);};
    AnyRefNode PML2T_TMVia3NodeL = {sRel = .Scale(.StdPar.Left.PML2T_TMVia3Node_pos);};
    
    AnyRefNode PML3T_TMVia2NodeR = {sRel = .Scale(.StdPar.Right.PML3T_TMVia2Node_pos);};
    AnyRefNode PML3T_TMVia2NodeL = {sRel = .Scale(.StdPar.Left.PML3T_TMVia2Node_pos);};
    
    AnyRefNode PML4T_TMVia1NodeR = {sRel = .Scale(.StdPar.Right.PML4T_TMVia1Node_pos);};
    AnyRefNode PML4T_TMVia1NodeL = {sRel = .Scale(.StdPar.Left.PML4T_TMVia1Node_pos);};
    // End of Psoas Major Nodes
    
    // Obliquus Externus Nodes
    AnyRefNode OEC10_RSNodeR = {sRel = .Scale(.StdPar.Right.OEC10_RSNode_pos);};
    AnyRefNode OEC10_RSNodeL = {sRel = .Scale(.StdPar.Left.OEC10_RSNode_pos);};
    // End of Obliquus Externus Nodes
        
    AnyDrawSurf DrwSTL = {
      FileName = ...STL.FilenameL5Seg;
      RGB = ...ColorRef.Segments;
      Opacity = Main.DrawSettings.BonesOpacity.L5;
      AnyFunTransform3D &Scale =.Scale;
    };
    
    AnyRefNode MidPoint={sRel=(.L4L5JntNode.sRel+.L5SacrumJntNode.sRel)*0.5;};    
    AnyRefNode &SupportNode= MidPoint;
    
    AnyRefNode BuckleContactNode={sRel= .ScaleAbdominal(.StdPar.BuckleContactNode_pos);};

    
  }; // End of L5Seg
  
  AnySeg L4Seg = {
  
    AnyFolder &StdPar=..ModelParameters.L4;    
	
	  //initial position found as a function of pelvis pos and orientation
    r0=.L5Seg.L4L5JntNode.sRel*.L5Seg.Axes0'+.L5Seg.r0-L4L5JntNode.sRel*Axes0'; 
    
    // This file includes the trunk specifc scaling function
    // and anatomical reference system
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.L4Seg.ScaleFunction;
    #include "TrunkScalingAndAnatomicalFrame.any"

    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
    AnyFunTransform3D &ScaleAbdominal =..ScalingTrunk.Lumbar.ScaleFunction;
    
    AnyVar MassS = ..Scaling.MassScaling.Lumbar.MassScale;
  
    AnyVar MassStandard = ..StandardParameters.Lumbar.Mass/5;
    Mass = MassS*MassStandard;           
    
    Jii = {0.001,0.001,0.001};
    
    sCoM = Scale(StdPar.sCoM_pos);
    JaboutCoMOnOff = On;
    
    AnyRefNode L4L5JntNode = {sRel = .Scale(.StdPar.L4L5JntNode_pos);};
    AnyRefNode L3L4JntNode = {
      sRel = .Scale(.StdPar.L3L4JntNode_pos); 
       AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1, 0, 0};};
      // Rotated node with x axis parallel to the superior endplate surface
      AnyRefNode RotNode = {
        ARel = RotMat(0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel),
                      ..SuperiorEndplateAnteriorNode.sRel,
                      0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel) + (..SuperiorEndplateNodeL.sRel - ..SuperiorEndplateNodeR.sRel))*RotMat(pi/2,x);
      };
    };
    
    // Nodes at the anterior and posterior points on the superior endplate
    AnyRefNode SuperiorEndplateAnteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplateAnteriorNode_pos);};
    AnyRefNode SuperiorEndplatePosteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplatePosteriorNode_pos);};
    
    // Nodes at the right and left points on the superior endplate
    AnyRefNode SuperiorEndplateNodeR = {sRel = .Scale(.StdPar.Right.SuperiorEndplateNode_pos);};
    AnyRefNode SuperiorEndplateNodeL = {sRel = .Scale(.StdPar.Left.SuperiorEndplateNode_pos);};
    
    //These nodes are used for adding extra used by other body parts to the right 
    //and left side of the segment
    AnyRefNode Right = {AnyFunTransform3D&Scale=.Scale;};
    AnyRefNode Left = {AnyFunTransform3D&Scale=.Scale;};
    
    // Ligament Nodes        
    AnyRefNode LSNode = {sRel = .Scale(.StdPar.LSNode_pos);};
    
    AnyRefNode LINodeInferior = {sRel = .Scale(.StdPar.LINodeInferior_pos);};
    AnyRefNode LINodeSuperior = {sRel = .Scale(.StdPar.LINodeSuperior_pos);};
    // End of ligament Nodes
    
    // Multifidi Nodes
    AnyRefNode MFdL2L4NodeR = {sRel = .Scale(.StdPar.Right.MFdL2L4Node_pos);};
    AnyRefNode MFdL2L4NodeL = {sRel = .Scale(.StdPar.Left.MFdL2L4Node_pos);};
    
    AnyRefNode MFdL4S1NodeR = {sRel = .Scale(.StdPar.Right.MFdL4S1Node_pos);};
    AnyRefNode MFdL4S1NodeL = {sRel = .Scale(.StdPar.Left.MFdL4S1Node_pos);};
    
    AnyRefNode MFmL1L4NodeR = {sRel = .Scale(.StdPar.Right.MFmL1L4Node_pos);};
    AnyRefNode MFmL1L4NodeL = {sRel = .Scale(.StdPar.Left.MFmL1L4Node_pos);};
    
    AnyRefNode MFmL4SacrumNodeR = {sRel = .Scale(.StdPar.Right.MFmL4SacrumNode_pos);};
    AnyRefNode MFmL4SacrumNodeL = {sRel = .Scale(.StdPar.Left.MFmL4SacrumNode_pos);};
    
    AnyRefNode MFtsL4SacrumNodeR = {sRel = .Scale(.StdPar.Right.MFtsL4SacrumNode_pos);};
    AnyRefNode MFtsL4SacrumNodeL = {sRel = .Scale(.StdPar.Left.MFtsL4SacrumNode_pos);};
    // End of Multifidi Nodes
    
    // Erector Spinae Nodes
    AnyRefNode ILplL4CINodeR = {sRel = .Scale(.StdPar.Right.ILplL4CINode_pos);};
    AnyRefNode ILplL4CINodeL = {sRel = .Scale(.StdPar.Left.ILplL4CINode_pos);};
    
    AnyRefNode LTplL4SIPSNodeR = {sRel = .Scale(.StdPar.Right.LTplL4SIPSNode_pos);};
    AnyRefNode LTplL4SIPSNodeL = {sRel = .Scale(.StdPar.Left.LTplL4SIPSNode_pos);};
    
    AnyRefNode LTptT4L4NodeR = {sRel = .Scale(.StdPar.Right.LTptT4L4Node_pos);};
    AnyRefNode LTptT4L4NodeL = {sRel = .Scale(.StdPar.Left.LTptT4L4Node_pos);};
    
    AnyRefNode ILplL1CIViaNodeR = {sRel = .Scale(.StdPar.Right.ILplL1CIViaNode_pos);};
    AnyRefNode ILplL1CIViaNodeL = {sRel = .Scale(.StdPar.Left.ILplL1CIViaNode_pos);};

    AnyRefNode ILplL2CIViaNodeR = {sRel = .Scale(.StdPar.Right.ILplL2CIViaNode_pos);};
    AnyRefNode ILplL2CIViaNodeL = {sRel = .Scale(.StdPar.Left.ILplL2CIViaNode_pos);};
    
    AnyRefNode LTptT5L5Via11NodeR = {sRel = .Scale(.StdPar.Right.LTptT5L5Via11Node_pos);};
    AnyRefNode LTptT5L5Via11NodeL = {sRel = .Scale(.StdPar.Left.LTptT5L5Via11Node_pos);};
    
    AnyRefNode LTptT6S1Via10NodeR = {sRel = .Scale(.StdPar.Right.LTptT6S1Via10Node_pos);};
    AnyRefNode LTptT6S1Via10NodeL = {sRel = .Scale(.StdPar.Left.LTptT6S1Via10Node_pos);};
    
    AnyRefNode LTptT7S2Via9NodeR = {sRel = .Scale(.StdPar.Right.LTptT7S2Via9Node_pos);};
    AnyRefNode LTptT7S2Via9NodeL = {sRel = .Scale(.StdPar.Left.LTptT7S2Via9Node_pos);};
    
    AnyRefNode LTptT8S3Via8NodeR = {sRel = .Scale(.StdPar.Right.LTptT8S3Via8Node_pos);};
    AnyRefNode LTptT8S3Via8NodeL = {sRel = .Scale(.StdPar.Left.LTptT8S3Via8Node_pos);};
    
    AnyRefNode LTptT9S4Via7NodeR = {sRel = .Scale(.StdPar.Right.LTptT9S4Via7Node_pos);};
    AnyRefNode LTptT9S4Via7NodeL = {sRel = .Scale(.StdPar.Left.LTptT9S4Via7Node_pos);};
    
    AnyRefNode LTptT10SacrumVia6NodeR = {sRel = .Scale(.StdPar.Right.LTptT10SacrumVia6Node_pos);};
    AnyRefNode LTptT10SacrumVia6NodeL = {sRel = .Scale(.StdPar.Left.LTptT10SacrumVia6Node_pos);};
    
    AnyRefNode LTptT11SacrumVia5NodeR = {sRel = .Scale(.StdPar.Right.LTptT11SacrumVia5Node_pos);};
    AnyRefNode LTptT11SacrumVia5NodeL = {sRel = .Scale(.StdPar.Left.LTptT11SacrumVia5Node_pos);};
    
    AnyRefNode LTptT12SacrumVia4NodeR = {sRel = .Scale(.StdPar.Right.LTptT12SacrumVia4Node_pos);};
    AnyRefNode LTptT12SacrumVia4NodeL = {sRel = .Scale(.StdPar.Left.LTptT12SacrumVia4Node_pos);};
    // End of Erector Spinae Nodes
    
    // Psoas Major Nodes
    AnyRefNode PML4I_TMNodeR = {sRel = .Scale(.StdPar.Right.PML4I_TMNode_pos);};
    AnyRefNode PML4I_TMNodeL = {sRel = .Scale(.StdPar.Left.PML4I_TMNode_pos);};
    
    AnyRefNode PML4T_TMNodeR = {sRel = .Scale(.StdPar.Right.PML4T_TMNode_pos);};
    AnyRefNode PML4T_TMNodeL = {sRel = .Scale(.StdPar.Left.PML4T_TMNode_pos);};
    
    AnyRefNode PMT12I_TMVia3NodeR = {sRel = .Scale(.StdPar.Right.PMT12I_TMVia3Node_pos);};
    AnyRefNode PMT12I_TMVia3NodeL = {sRel = .Scale(.StdPar.Left.PMT12I_TMVia3Node_pos);};

    AnyRefNode PML1I_TMVia2NodeR = {sRel = .Scale(.StdPar.Right.PML1I_TMVia2Node_pos);};
    AnyRefNode PML1I_TMVia2NodeL = {sRel = .Scale(.StdPar.Left.PML1I_TMVia2Node_pos);};
    
    AnyRefNode PML2I_TMVia1NodeR = {sRel = .Scale(.StdPar.Right.PML2I_TMVia1Node_pos);};
    AnyRefNode PML2I_TMVia1NodeL = {sRel = .Scale(.StdPar.Left.PML2I_TMVia1Node_pos);};
    
    AnyRefNode PML1T_TMVia3NodeR = {sRel = .Scale(.StdPar.Right.PML1T_TMVia3Node_pos);};
    AnyRefNode PML1T_TMVia3NodeL = {sRel = .Scale(.StdPar.Left.PML1T_TMVia3Node_pos);};
    
    AnyRefNode PML2T_TMVia2NodeR = {sRel = .Scale(.StdPar.Right.PML2T_TMVia2Node_pos);};
    AnyRefNode PML2T_TMVia2NodeL = {sRel = .Scale(.StdPar.Left.PML2T_TMVia2Node_pos);};
    
    AnyRefNode PML3T_TMVia1NodeR = {sRel = .Scale(.StdPar.Right.PML3T_TMVia1Node_pos);};
    AnyRefNode PML3T_TMVia1NodeL = {sRel = .Scale(.StdPar.Left.PML3T_TMVia1Node_pos);};
    // End of Psoas Major Nodes
    
    // Quadratus Lumborum Nodes
    AnyRefNode QLL4_CINodeR = {sRel = .Scale(.StdPar.Right.QLL4_CINode_pos);};
    AnyRefNode QLL4_CINodeL = {sRel = .Scale(.StdPar.Left.QLL4_CINode_pos);};
    // End of Quadratus Lumborum Nodes
    
    // Obliquus Externus Nodes
    AnyRefNode OEC9_RSNodeR = {sRel = .Scale(.StdPar.Right.OEC9_RSNode_pos);};
    AnyRefNode OEC9_RSNodeL = {sRel = .Scale(.StdPar.Left.OEC9_RSNode_pos);};
    // End of Obliquus Externus Nodes
    
    // Obliquus Internus Nodes
    AnyRefNode OICI_RS3NodeR = {sRel = .Scale(.StdPar.Right.OICI_RS3Node_pos);};
    AnyRefNode OICI_RS3NodeL = {sRel = .Scale(.StdPar.Left.OICI_RS3Node_pos);};   
    // End of Obliquus Internus Nodes
    
    AnyDrawSurf DrwSTL = {
      FileName = ...STL.FilenameL4Seg;
      RGB = ...ColorRef.Segments;
      Opacity = Main.DrawSettings.BonesOpacity.L4;
      AnyFunTransform3D &Scale =.Scale;
    };
     
    AnyRefNode MidPoint={sRel=(.L3L4JntNode.sRel+.L4L5JntNode.sRel)*0.5;};
    AnyRefNode SupportNode={sRel = .Scale(.StdPar.SupportNode_pos);};      
    AnyRefNode BuckleContactNode={sRel= .ScaleAbdominal(.StdPar.BuckleContactNode_pos);};
    

  }; // End of L4Seg
  
  AnySeg L3Seg = {
    AnyFolder &StdPar = ..ModelParameters.L3;
    //initial position found as a function of pelvis pos and orientation
    r0=.L4Seg.L3L4JntNode.sRel*.L4Seg.Axes0'+.L4Seg.r0-L3L4JntNode.sRel*Axes0'; 
    
    // This file includes the trunk specifc scaling function
    // and anatomical reference system
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.L3Seg.ScaleFunction;
    #include "TrunkScalingAndAnatomicalFrame.any"

    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
    AnyFunTransform3D &ScaleAbdominal =..ScalingTrunk.Lumbar.ScaleFunction;
        
    AnyVar MassS = ..Scaling.MassScaling.Lumbar.MassScale;
  
    AnyVar MassStandard = ..StandardParameters.Lumbar.Mass/5;
    Mass = MassS*MassStandard;
    
    Jii = {0.001,0.001,0.001};
    
    sCoM = Scale(StdPar.sCoM_pos);
    JaboutCoMOnOff = On;

    AnyRefNode L3L4JntNode = {sRel = .Scale(.StdPar.L3L4JntNode_pos);};    
    AnyRefNode L2L3JntNode = {
      sRel = .Scale(.StdPar.L2L3JntNode_pos); 
       AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1,0,0};};
      // Rotated node with x axis parallel to the superior endplate surface
      AnyRefNode RotNode = {
        ARel = RotMat(0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel),
                      ..SuperiorEndplateAnteriorNode.sRel,
                      0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel) + (..SuperiorEndplateNodeL.sRel - ..SuperiorEndplateNodeR.sRel))*RotMat(pi/2,x);
      };
    };
    
    // Nodes at the anterior and posterior points on the superior endplate
    AnyRefNode SuperiorEndplateAnteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplateAnteriorNode_pos);};
    AnyRefNode SuperiorEndplatePosteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplatePosteriorNode_pos);};
    
    // Nodes at the right and left points on the superior endplate
    AnyRefNode SuperiorEndplateNodeR = {sRel = .Scale(.StdPar.Right.SuperiorEndplateNode_pos);};
    AnyRefNode SuperiorEndplateNodeL = {sRel = .Scale(.StdPar.Left.SuperiorEndplateNode_pos);};
    
    //These nodes are used for adding extra used by other body parts to the right 
    //and left side of the segment
    AnyRefNode Right= {AnyFunTransform3D&Scale=.Scale;};
    AnyRefNode Left = {AnyFunTransform3D&Scale=.Scale;};
    
    
    // Ligament Nodes        
    AnyRefNode LSNode = {sRel = .Scale(.StdPar.LSNode_pos);};
    
    AnyRefNode LINodeInferior = {sRel = .Scale(.StdPar.LINodeInferior_pos);};
    AnyRefNode LINodeSuperior = {sRel = .Scale(.StdPar.LINodeSuperior_pos);};
    // End of ligament Nodes
    
    // Multifidi Nodes
    AnyRefNode MFdL1L3NodeR = {sRel = .Scale(.StdPar.Right.MFdL1L3Node_pos);};
    AnyRefNode MFdL1L3NodeL = {sRel = .Scale(.StdPar.Left.MFdL1L3Node_pos);};
    
    AnyRefNode MFdL3L5NodeR = {sRel = .Scale(.StdPar.Right.MFdL3L5Node_pos);};
    AnyRefNode MFdL3L5NodeL = {sRel = .Scale(.StdPar.Left.MFdL3L5Node_pos);};
    
    AnyRefNode MFmL3S1NodeR = {sRel = .Scale(.StdPar.Right.MFmL3S1Node_pos);};
    AnyRefNode MFmL3S1NodeL = {sRel = .Scale(.StdPar.Left.MFmL3S1Node_pos);};
    
    AnyRefNode MFtsL3LigamentNodeR = {sRel = .Scale(.StdPar.Right.MFtsL3LigamentNode_pos);};
    AnyRefNode MFtsL3LigamentNodeL = {sRel = .Scale(.StdPar.Left.MFtsL3LigamentNode_pos);};
    // End of Multifidi Nodes
    
    // Erector Spinae Nodes
    AnyRefNode ILplL3CINodeR = {sRel = .Scale(.StdPar.Right.ILplL3CINode_pos);};
    AnyRefNode ILplL3CINodeL = {sRel = .Scale(.StdPar.Left.ILplL3CINode_pos);};
    
    AnyRefNode LTplL3SIPSNodeR = {sRel = .Scale(.StdPar.Right.LTplL3SIPSNode_pos);};
    AnyRefNode LTplL3SIPSNodeL = {sRel = .Scale(.StdPar.Left.LTplL3SIPSNode_pos);};
    
    AnyRefNode LTptT3L3NodeR = {sRel = .Scale(.StdPar.Right.LTptT3L3Node_pos);};
    AnyRefNode LTptT3L3NodeL = {sRel = .Scale(.StdPar.Left.LTptT3L3Node_pos);};
    
    AnyRefNode ILplL1CIViaNodeR = {sRel = .Scale(.StdPar.Right.ILplL1CIViaNode_pos);};
    AnyRefNode ILplL1CIViaNodeL = {sRel = .Scale(.StdPar.Left.ILplL1CIViaNode_pos);};
    
    AnyRefNode ILplL2CIViaNodeR = {sRel = .Scale(.StdPar.Right.ILplL2CIViaNode_pos);};
    AnyRefNode ILplL2CIViaNodeL = {sRel = .Scale(.StdPar.Left.ILplL2CIViaNode_pos);};
    
    AnyRefNode LTplL1SIPSViaNodeR = {sRel = .Scale(.StdPar.Right.LTplL1SIPSViaNode_pos);};
    AnyRefNode LTplL1SIPSViaNodeL = {sRel = .Scale(.StdPar.Left.LTplL1SIPSViaNode_pos);};
    
    AnyRefNode LTplL2SIPSViaNodeR = {sRel = .Scale(.StdPar.Right.LTplL2SIPSViaNode_pos);};
    AnyRefNode LTplL2SIPSViaNodeL = {sRel = .Scale(.StdPar.Left.LTplL2SIPSViaNode_pos);};
    
    AnyRefNode ILptC5SIPSVia9NodeR = {sRel = .Scale(.StdPar.Right.ILptC5SIPSVia9Node_pos);};
    AnyRefNode ILptC5SIPSVia9NodeL = {sRel = .Scale(.StdPar.Left.ILptC5SIPSVia9Node_pos);};
    
    AnyRefNode ILptC6SIPSVia8NodeR = {sRel = .Scale(.StdPar.Right.ILptC6SIPSVia8Node_pos);};
    AnyRefNode ILptC6SIPSVia8NodeL = {sRel = .Scale(.StdPar.Left.ILptC6SIPSVia8Node_pos);};
    
    AnyRefNode ILptC7CIVia7NodeR = {sRel = .Scale(.StdPar.Right.ILptC7CIVia7Node_pos);};
    AnyRefNode ILptC7CIVia7NodeL = {sRel = .Scale(.StdPar.Left.ILptC7CIVia7Node_pos);};
    
    AnyRefNode ILptC8CIVia6NodeR = {sRel = .Scale(.StdPar.Right.ILptC8CIVia6Node_pos);};
    AnyRefNode ILptC8CIVia6NodeL = {sRel = .Scale(.StdPar.Left.ILptC8CIVia6Node_pos);};
    
    AnyRefNode ILptC9CIVia5NodeR = {sRel = .Scale(.StdPar.Right.ILptC9CIVia5Node_pos);};
    AnyRefNode ILptC9CIVia5NodeL = {sRel = .Scale(.StdPar.Left.ILptC9CIVia5Node_pos);};
    
    AnyRefNode ILptC10CIVia4NodeR = {sRel = .Scale(.StdPar.Right.ILptC10CIVia4Node_pos);};
    AnyRefNode ILptC10CIVia4NodeL = {sRel = .Scale(.StdPar.Left.ILptC10CIVia4Node_pos);};
    
    AnyRefNode ILptC11CIVia3NodeR = {sRel = .Scale(.StdPar.Right.ILptC11CIVia3Node_pos);};
    AnyRefNode ILptC11CIVia3NodeL = {sRel = .Scale(.StdPar.Left.ILptC11CIVia3Node_pos);};
    
    AnyRefNode ILptC12CIVia3NodeR = {sRel = .Scale(.StdPar.Right.ILptC12CIVia3Node_pos);};
    AnyRefNode ILptC12CIVia3NodeL = {sRel = .Scale(.StdPar.Left.ILptC12CIVia3Node_pos);};
    
    AnyRefNode LTptT4L4Via11NodeR = {sRel = .Scale(.StdPar.Right.LTptT4L4Via11Node_pos);};
    AnyRefNode LTptT4L4Via11NodeL = {sRel = .Scale(.StdPar.Left.LTptT4L4Via11Node_pos);};
    
    AnyRefNode LTptT5L5Via10NodeR = {sRel = .Scale(.StdPar.Right.LTptT5L5Via10Node_pos);};
    AnyRefNode LTptT5L5Via10NodeL = {sRel = .Scale(.StdPar.Left.LTptT5L5Via10Node_pos);};
    
    AnyRefNode LTptT6S1Via9NodeR = {sRel = .Scale(.StdPar.Right.LTptT6S1Via9Node_pos);};
    AnyRefNode LTptT6S1Via9NodeL = {sRel = .Scale(.StdPar.Left.LTptT6S1Via9Node_pos);};
    
    AnyRefNode LTptT7S2Via8NodeR = {sRel = .Scale(.StdPar.Right.LTptT7S2Via8Node_pos);};
    AnyRefNode LTptT7S2Via8NodeL = {sRel = .Scale(.StdPar.Left.LTptT7S2Via8Node_pos);};
    
    AnyRefNode LTptT8S3Via7NodeR = {sRel = .Scale(.StdPar.Right.LTptT8S3Via7Node_pos);};
    AnyRefNode LTptT8S3Via7NodeL = {sRel = .Scale(.StdPar.Left.LTptT8S3Via7Node_pos);};
    
    AnyRefNode LTptT9S4Via6NodeR = {sRel = .Scale(.StdPar.Right.LTptT9S4Via6Node_pos);};
    AnyRefNode LTptT9S4Via6NodeL = {sRel = .Scale(.StdPar.Left.LTptT9S4Via6Node_pos);};
    
    AnyRefNode LTptT10SacrumVia5NodeR = {sRel = .Scale(.StdPar.Right.LTptT10SacrumVia5Node_pos);};
    AnyRefNode LTptT10SacrumVia5NodeL = {sRel = .Scale(.StdPar.Left.LTptT10SacrumVia5Node_pos);};
    
    AnyRefNode LTptT11SacrumVia4NodeR = {sRel = .Scale(.StdPar.Right.LTptT11SacrumVia4Node_pos);};
    AnyRefNode LTptT11SacrumVia4NodeL = {sRel = .Scale(.StdPar.Left.LTptT11SacrumVia4Node_pos);};
    
    AnyRefNode LTptT12SacrumVia3NodeR = {sRel = .Scale(.StdPar.Right.LTptT12SacrumVia3Node_pos);};
    AnyRefNode LTptT12SacrumVia3NodeL = {sRel = .Scale(.StdPar.Left.LTptT12SacrumVia3Node_pos);};
    // End of Erector Spinae Nodes
    
    // Psoas Major Nodes
    AnyRefNode PML3I_TMNodeR = {sRel = .Scale(.StdPar.Right.PML3I_TMNode_pos);};
    AnyRefNode PML3I_TMNodeL = {sRel = .Scale(.StdPar.Left.PML3I_TMNode_pos);};
    
    AnyRefNode PML3T_TMNodeR = {sRel = .Scale(.StdPar.Right.PML3T_TMNode_pos);};
    AnyRefNode PML3T_TMNodeL = {sRel = .Scale(.StdPar.Left.PML3T_TMNode_pos);};
    
    AnyRefNode PMT12I_TMVia2NodeR = {sRel = .Scale(.StdPar.Right.PMT12I_TMVia2Node_pos);};
    AnyRefNode PMT12I_TMVia2NodeL = {sRel = .Scale(.StdPar.Left.PMT12I_TMVia2Node_pos);};
        
    AnyRefNode PML1I_TMVia1NodeR = {sRel = .Scale(.StdPar.Right.PML1I_TMVia1Node_pos);};
    AnyRefNode PML1I_TMVia1NodeL = {sRel = .Scale(.StdPar.Left.PML1I_TMVia1Node_pos);};
    
    AnyRefNode PML1T_TMVia2NodeR = {sRel = .Scale(.StdPar.Right.PML1T_TMVia2Node_pos);};
    AnyRefNode PML1T_TMVia2NodeL = {sRel = .Scale(.StdPar.Left.PML1T_TMVia2Node_pos);};
    
    AnyRefNode PML2T_TMVia1NodeR = {sRel = .Scale(.StdPar.Right.PML2T_TMVia1Node_pos);};
    AnyRefNode PML2T_TMVia1NodeL = {sRel = .Scale(.StdPar.Left.PML2T_TMVia1Node_pos);};
    // End of Psoas Major Nodes
    
    // Quadratus Lumborum Nodes
    AnyRefNode QLL3_CINodeR = {sRel = .Scale(.StdPar.Right.QLL3_CINode_pos);};
    AnyRefNode QLL3_CINodeL = {sRel = .Scale(.StdPar.Left.QLL3_CINode_pos);};
    // End of Quadratus Lumborum Nodes
    
    // Obliquus Externus Nodes
    AnyRefNode OEC8_RSNodeR = {sRel = .Scale(.StdPar.Right.OEC8_RSNode_pos);};
    AnyRefNode OEC8_RSNodeL = {sRel = .Scale(.StdPar.Left.OEC8_RSNode_pos);};
    // End of Obliquus Externus Nodes
    
    // Obliquus Internus Nodes
    AnyRefNode OICI_RS2NodeR = {sRel = .Scale(.StdPar.Right.OICI_RS2Node_pos);};
    AnyRefNode OICI_RS2NodeL = {sRel = .Scale(.StdPar.Left.OICI_RS2Node_pos);};
    // End of Obliquus Internus Nodes
    
    //AnyDrawSeg DrwSeg = {};
    
    AnyDrawSurf DrwSTL = {
      FileName = ...STL.FilenameL3Seg;
      RGB = ...ColorRef.Segments;
      Opacity = Main.DrawSettings.BonesOpacity.L3;
      AnyFunTransform3D &Scale =.Scale;
    };
    
    AnyRefNode MidPoint={sRel=(.L2L3JntNode.sRel+.L3L4JntNode.sRel)*0.5; };     

    AnyRefNode SupportNode={sRel = .Scale(.StdPar.SupportNode_pos);};
    AnyRefNode BuckleContactNode={sRel = .ScaleAbdominal(.StdPar.BuckleContactNode_pos);};
    
  }; // End of L3Seg
  
  AnySeg L2Seg = {
    AnyFolder &StdPar=..ModelParameters.L2;
    
    //initial position found as a function of pelvis pos and orientation
    r0=.L3Seg.L2L3JntNode.sRel*.L3Seg.Axes0'+.L3Seg.r0-L2L3JntNode.sRel*Axes0'; 
    
    // This file includes the trunk specifc scaling function
    // and anatomical reference system
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.L2Seg.ScaleFunction;
    #include "TrunkScalingAndAnatomicalFrame.any"
    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols

    AnyFunTransform3D &ScaleAbdominal =..ScalingTrunk.Lumbar.ScaleFunction;
    
    AnyVar MassS = ..Scaling.MassScaling.Lumbar.MassScale;
  
    AnyVar MassStandard = ..StandardParameters.Lumbar.Mass/5;
    Mass = MassS*MassStandard;
    
     Jii = {0.001,0.001,0.001};
    
    sCoM = Scale(StdPar.sCoM_pos);
    JaboutCoMOnOff = On;

    AnyRefNode L2L3JntNode = {sRel = .Scale(.StdPar.L2L3JntNode_pos);};    
    AnyRefNode L1L2JntNode = {
      sRel = .Scale(.StdPar.L1L2JntNode_pos); 
       AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1,0,0};};
      // Rotated node with x axis parallel to the superior endplate surface
      AnyRefNode RotNode = {
        ARel = RotMat(0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel),
                      ..SuperiorEndplateAnteriorNode.sRel,
                      0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel) + (..SuperiorEndplateNodeL.sRel - ..SuperiorEndplateNodeR.sRel))*RotMat(pi/2,x);
      };
    };
    
    // Nodes at the anterior and posterior points on the superior endplate
    AnyRefNode SuperiorEndplateAnteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplateAnteriorNode_pos);};
    AnyRefNode SuperiorEndplatePosteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplatePosteriorNode_pos);};
    
    // Nodes at the right and left points on the superior endplate
    AnyRefNode SuperiorEndplateNodeR = {sRel = .Scale(.StdPar.Right.SuperiorEndplateNode_pos);};
    AnyRefNode SuperiorEndplateNodeL = {sRel = .Scale(.StdPar.Left.SuperiorEndplateNode_pos);};
    
    //These nodes are used for adding extra used by other body parts to the right 
    //and left side of the segment
    AnyRefNode Right = {AnyFunTransform3D&Scale=.Scale;};
    AnyRefNode Left = {AnyFunTransform3D&Scale=.Scale;};
    
    
    // Ligament Nodes    
    AnyRefNode LSNode = {sRel = .Scale(.StdPar.LSNode_pos);};
    AnyRefNode LSNode2 = {sRel = .Scale(.StdPar.LSNode2_pos);};
    
    AnyRefNode LINodeInferior = {sRel = .Scale(.StdPar.LINodeInferior_pos);};
    AnyRefNode LINodeSuperior = {sRel = .Scale(.StdPar.LINodeSuperior_pos);};
    // End of ligament Nodes
    
    // Multifidi Nodes
    AnyRefNode MFdL2L4NodeR = {sRel = .Scale(.StdPar.Right.MFdL2L4Node_pos);};
    AnyRefNode MFdL2L4NodeL = {sRel = .Scale(.StdPar.Left.MFdL2L4Node_pos);};
                                                   
    AnyRefNode MFmL2L5NodeR = {sRel = .Scale(.StdPar.Right.MFmL2L5Node_pos);};
    AnyRefNode MFmL2L5NodeL = {sRel = .Scale(.StdPar.Left.MFmL2L5Node_pos);};
    
    AnyRefNode MFtsL2L5NodeR = {sRel = .Scale(.StdPar.Right.MFtsL2L5Node_pos);};
    AnyRefNode MFtsL2L5NodeL = {sRel = .Scale(.StdPar.Left.MFtsL2L5Node_pos);};
                                                    
    AnyRefNode MFtsL2S1NodeR = {sRel = .Scale(.StdPar.Right.MFtsL2S1Node_pos);};
    AnyRefNode MFtsL2S1NodeL = {sRel = .Scale(.StdPar.Left.MFtsL2S1Node_pos);};
    
    AnyRefNode MFtstL2SIPSNodeR = {sRel = .Scale(.StdPar.Right.MFtstL2SIPSNode_pos);};
    AnyRefNode MFtstL2SIPSNodeL = {sRel = .Scale(.StdPar.Left.MFtstL2SIPSNode_pos);};
    // End of Multifidi Nodes
    
    // Erector Spinae Nodes
    AnyRefNode ILplL2CINodeR = {sRel = .Scale(.StdPar.Right.ILplL2CINode_pos);};
    AnyRefNode ILplL2CINodeL = {sRel = .Scale(.StdPar.Left.ILplL2CINode_pos);};
    
    AnyRefNode LTplL2SIPSNodeR = {sRel = .Scale(.StdPar.Right.LTplL2SIPSNode_pos);};
    AnyRefNode LTplL2SIPSNodeL = {sRel = .Scale(.StdPar.Left.LTplL2SIPSNode_pos);};
    
    AnyRefNode LTptT2L2NodeR = {sRel = .Scale(.StdPar.Right.LTptT2L2Node_pos);};
    AnyRefNode LTptT2L2NodeL = {sRel = .Scale(.StdPar.Left.LTptT2L2Node_pos);};
    
    AnyRefNode ILplL1CIViaNodeR = {sRel = .Scale(.StdPar.Right.ILplL1CIViaNode_pos);};
    AnyRefNode ILplL1CIViaNodeL = {sRel = .Scale(.StdPar.Left.ILplL1CIViaNode_pos);}; 
    
    AnyRefNode LTplL1SIPSViaNodeR = {sRel = .Scale(.StdPar.Right.LTplL1SIPSViaNode_pos);};
    AnyRefNode LTplL1SIPSViaNodeL = {sRel = .Scale(.StdPar.Left.LTplL1SIPSViaNode_pos);};
    
    AnyRefNode ILptC5SIPSVia8NodeR = {sRel = .Scale(.StdPar.Right.ILptC5SIPSVia8Node_pos);};
    AnyRefNode ILptC5SIPSVia8NodeL = {sRel = .Scale(.StdPar.Left.ILptC5SIPSVia8Node_pos);};
                                                          
    AnyRefNode ILptC6SIPSVia7NodeR = {sRel = .Scale(.StdPar.Right.ILptC6SIPSVia7Node_pos);};
    AnyRefNode ILptC6SIPSVia7NodeL = {sRel = .Scale(.StdPar.Left.ILptC6SIPSVia7Node_pos);};
    
    AnyRefNode ILptC7CIVia6NodeR = {sRel = .Scale(.StdPar.Right.ILptC7CIVia6Node_pos);};
    AnyRefNode ILptC7CIVia6NodeL = {sRel = .Scale(.StdPar.Left.ILptC7CIVia6Node_pos);};
                                                        
    AnyRefNode ILptC8CIVia5NodeR = {sRel = .Scale(.StdPar.Right.ILptC8CIVia5Node_pos);};
    AnyRefNode ILptC8CIVia5NodeL = {sRel = .Scale(.StdPar.Left.ILptC8CIVia5Node_pos);};
                                                        
    AnyRefNode ILptC9CIVia4NodeR = {sRel = .Scale(.StdPar.Right.ILptC9CIVia4Node_pos);};
    AnyRefNode ILptC9CIVia4NodeL = {sRel = .Scale(.StdPar.Left.ILptC9CIVia4Node_pos);};
    
    AnyRefNode ILptC10CIVia3NodeR = {sRel = .Scale(.StdPar.Right.ILptC10CIVia3Node_pos);};
    AnyRefNode ILptC10CIVia3NodeL = {sRel = .Scale(.StdPar.Left.ILptC10CIVia3Node_pos);};
                                                         
    AnyRefNode ILptC11CIVia2NodeR = {sRel = .Scale(.StdPar.Right.ILptC11CIVia2Node_pos);};
    AnyRefNode ILptC11CIVia2NodeL = {sRel = .Scale(.StdPar.Left.ILptC11CIVia2Node_pos);};
                                                         
    AnyRefNode ILptC12CIVia2NodeR = {sRel = .Scale(.StdPar.Right.ILptC12CIVia2Node_pos);};
    AnyRefNode ILptC12CIVia2NodeL = {sRel = .Scale(.StdPar.Left.ILptC12CIVia2Node_pos);};
                                                         
    AnyRefNode LTptT3L3Via11NodeR = {sRel = .Scale(.StdPar.Right.LTptT3L3Via11Node_pos);};
    AnyRefNode LTptT3L3Via11NodeL = {sRel = .Scale(.StdPar.Left.LTptT3L3Via11Node_pos);};
                                                         
    AnyRefNode LTptT4L4Via10NodeR = {sRel = .Scale(.StdPar.Right.LTptT4L4Via10Node_pos);};
    AnyRefNode LTptT4L4Via10NodeL = {sRel = .Scale(.StdPar.Left.LTptT4L4Via10Node_pos);};
    
    AnyRefNode LTptT5L5Via9NodeR = {sRel = .Scale(.StdPar.Right.LTptT5L5Via9Node_pos);};
    AnyRefNode LTptT5L5Via9NodeL = {sRel = .Scale(.StdPar.Left.LTptT5L5Via9Node_pos);};
                                                        
    AnyRefNode LTptT6S1Via8NodeR = {sRel = .Scale(.StdPar.Right.LTptT6S1Via8Node_pos);};
    AnyRefNode LTptT6S1Via8NodeL = {sRel = .Scale(.StdPar.Left.LTptT6S1Via8Node_pos);};
                                                        
    AnyRefNode LTptT7S2Via7NodeR = {sRel = .Scale(.StdPar.Right.LTptT7S2Via7Node_pos);};
    AnyRefNode LTptT7S2Via7NodeL = {sRel = .Scale(.StdPar.Left.LTptT7S2Via7Node_pos);};
                                                        
    AnyRefNode LTptT8S3Via6NodeR = {sRel = .Scale(.StdPar.Right.LTptT8S3Via6Node_pos);};
    AnyRefNode LTptT8S3Via6NodeL = {sRel = .Scale(.StdPar.Left.LTptT8S3Via6Node_pos);};
                                                        
    AnyRefNode LTptT9S4Via5NodeR = {sRel = .Scale(.StdPar.Right.LTptT9S4Via5Node_pos);};
    AnyRefNode LTptT9S4Via5NodeL = {sRel = .Scale(.StdPar.Left.LTptT9S4Via5Node_pos);};
    
    AnyRefNode LTptT10SacrumVia4NodeR = {sRel = .Scale(.StdPar.Right.LTptT10SacrumVia4Node_pos);};
    AnyRefNode LTptT10SacrumVia4NodeL = {sRel = .Scale(.StdPar.Left.LTptT10SacrumVia4Node_pos);};
                                                             
    AnyRefNode LTptT11SacrumVia3NodeR = {sRel = .Scale(.StdPar.Right.LTptT11SacrumVia3Node_pos);};
    AnyRefNode LTptT11SacrumVia3NodeL = {sRel = .Scale(.StdPar.Left.LTptT11SacrumVia3Node_pos);};
                                                             
    AnyRefNode LTptT12SacrumVia2NodeR = {sRel = .Scale(.StdPar.Right.LTptT12SacrumVia2Node_pos);};
    AnyRefNode LTptT12SacrumVia2NodeL = {sRel = .Scale(.StdPar.Left.LTptT12SacrumVia2Node_pos);};
    // End of Erector Spinae Nodes
    
    // Psoas Major Nodes
    AnyRefNode PML2I_TMNodeR = {sRel = .Scale(.StdPar.Right.PML2I_TMNode_pos);};
    AnyRefNode PML2I_TMNodeL = {sRel = .Scale(.StdPar.Left.PML2I_TMNode_pos);};
    
    AnyRefNode PML2T_TMNodeR = {sRel = .Scale(.StdPar.Right.PML2T_TMNode_pos);};
    AnyRefNode PML2T_TMNodeL = {sRel = .Scale(.StdPar.Left.PML2T_TMNode_pos);};
	
    AnyRefNode PMT12I_TMVia1NodeR = {sRel = .Scale(.StdPar.Right.PMT12I_TMVia1Node_pos);};
    AnyRefNode PMT12I_TMVia1NodeL = {sRel = .Scale(.StdPar.Left.PMT12I_TMVia1Node_pos);}; 
    
    AnyRefNode PML1T_TMVia1NodeR = {sRel = .Scale(.StdPar.Right.PML1T_TMVia1Node_pos);};
    AnyRefNode PML1T_TMVia1NodeL = {sRel = .Scale(.StdPar.Left.PML1T_TMVia1Node_pos);}; 
    // End of Psoas Major Nodes
    
    // Quadratus Lumborum Nodes
    AnyRefNode QLL2_CINodeR = {sRel = .Scale(.StdPar.Right.QLL2_CINode_pos);};
    AnyRefNode QLL2_CINodeL = {sRel = .Scale(.StdPar.Left.QLL2_CINode_pos);}; 
    // End of Quadratus Lumborum Nodes
    
    // Obliquus Externus Nodes
    AnyRefNode OEC7_RSNodeR = {sRel = .Scale(.StdPar.Right.OEC7_RSNode_pos);};
    AnyRefNode OEC7_RSNodeL = {sRel = .Scale(.StdPar.Left.OEC7_RSNode_pos);};    
    // End of Obliquus Externus Nodes
    
    // Obliquus Internus Nodes
    AnyRefNode OICI_RS1NodeR = {sRel = .Scale(.StdPar.Right.OICI_RS1Node_pos);};
    AnyRefNode OICI_RS1NodeL = {sRel = .Scale(.StdPar.Left.OICI_RS1Node_pos);};  
    // End of Obliquus Internus Nodes
    
    AnyDrawSurf DrwSTL = {
      FileName = ...STL.FilenameL2Seg;
      RGB = ...ColorRef.Segments;
      Opacity = Main.DrawSettings.BonesOpacity.L2;
      AnyFunTransform3D &Scale =.Scale;
    };
    
    AnyRefNode MidPoint={sRel=(.L1L2JntNode.sRel+.L2L3JntNode.sRel)*0.5;}; 
    AnyRefNode SupportNode={sRel = .Scale(.StdPar.SupportNode_pos);};
    AnyRefNode BuckleContactNode={sRel = .ScaleAbdominal(.StdPar.BuckleContactNode_pos);};

  }; // End of L2Seg

  AnySeg L1Seg = {
    
    // Reference to generic data
    AnyFolder &StdPar = ..ModelParameters.L1;

    //initial position found as a function of pelvis pos and orientation
    r0=.L2Seg.L1L2JntNode.sRel*.L2Seg.Axes0'+.L2Seg.r0-L1L2JntNode.sRel*Axes0';
         
    // This file includes the trunk specifc scaling function
    // and anatomical reference system
    AnyFunTransform3D &GeomScale = ..Scaling.GeometricalScaling.L1Seg.ScaleFunction;
    #include "TrunkScalingAndAnatomicalFrame.any"
    AnyRefNode MoCapMarkerFrameAMMR24 = {}; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
    
    AnyFunTransform3D &ScaleAbdominal =..ScalingTrunk.Lumbar.ScaleFunction;   
    
    AnyVar MassS = ..Scaling.MassScaling.Lumbar.MassScale;
  
    AnyVar MassStandard = ..StandardParameters.Lumbar.Mass/5;
    Mass = MassS*MassStandard;
    
    Jii = {0.001,0.001,0.001};
    
    sCoM = Scale(StdPar.sCoM_pos);
    JaboutCoMOnOff = On;
    
    AnyRefNode L1L2JntNode = {sRel = .Scale(.StdPar.L1L2JntNode_pos);};    
    AnyRefNode T12L1JntNode = {
      sRel = .Scale(.StdPar.T12L1JntNode_pos); 
       AnyDrawNodes DrwNode = {Visible ??=..DrwSTL.Visible; ScaleXYZ = 0.003*{1,1,1};RGB = {1, 0, 0};};
      // Rotated node with x axis parallel to the superior endplate surface
      AnyRefNode RotNode = {
        ARel = RotMat(0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel),
                      ..SuperiorEndplateAnteriorNode.sRel,
                      0.5*(..SuperiorEndplateAnteriorNode.sRel + ..SuperiorEndplatePosteriorNode.sRel) + (..SuperiorEndplateNodeL.sRel - ..SuperiorEndplateNodeR.sRel))*RotMat(pi/2,x);
      };
    };
    
    // Nodes at the anterior and posterior points on the superior endplate
    AnyRefNode SuperiorEndplateAnteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplateAnteriorNode_pos);};
    AnyRefNode SuperiorEndplatePosteriorNode = {sRel = .Scale(.StdPar.SuperiorEndplatePosteriorNode_pos);};
    
    // Nodes at the right and left points on the superior endplate
    AnyRefNode SuperiorEndplateNodeR = {sRel = .Scale(.StdPar.Right.SuperiorEndplateNode_pos);};
    AnyRefNode SuperiorEndplateNodeL = {sRel = .Scale(.StdPar.Left.SuperiorEndplateNode_pos);};
    
    //These nodes are used for adding extra used by other body parts to the right 
    //and left side of the segment
    AnyRefNode Right= {AnyFunTransform3D&Scale=.Scale;};
    AnyRefNode Left = {AnyFunTransform3D&Scale=.Scale;};
        
    
    // Ligament Nodes    
    AnyRefNode LSNode = {sRel = .Scale(.StdPar.LSNode_pos);};
    
    AnyRefNode LINodeInferior = {sRel = .Scale(.StdPar.LINodeInferior_pos);};
    AnyRefNode LINodeSuperior = {sRel = .Scale(.StdPar.LINodeSuperior_pos);};
    // End of ligament Nodes
    
    // Multifidi Nodes
    AnyRefNode MFdL1L3NodeR = {sRel = .Scale(.StdPar.Right.MFdL1L3Node_pos);};
    AnyRefNode MFdL1L3NodeL = {sRel = .Scale(.StdPar.Left.MFdL1L3Node_pos);};
    
    AnyRefNode MFmL1L4NodeR = {sRel = .Scale(.StdPar.Right.MFmL1L4Node_pos);};
    AnyRefNode MFmL1L4NodeL = {sRel = .Scale(.StdPar.Left.MFmL1L4Node_pos);};
    
    AnyRefNode MFtsL1L5NodeR = {sRel = .Scale(.StdPar.Right.MFtsL1L5Node_pos);};
    AnyRefNode MFtsL1L5NodeL = {sRel = .Scale(.StdPar.Left.MFtsL1L5Node_pos);};
    
    AnyRefNode MFtsL1S1NodeR = {sRel = .Scale(.StdPar.Right.MFtsL1S1Node_pos);};
    AnyRefNode MFtsL1S1NodeL = {sRel = .Scale(.StdPar.Left.MFtsL1S1Node_pos);};
    
    AnyRefNode MFtstL1SIPSNodeR = {sRel = .Scale(.StdPar.Right.MFtstL1SIPSNode_pos);};
    AnyRefNode MFtstL1SIPSNodeL = {sRel = .Scale(.StdPar.Left.MFtstL1SIPSNode_pos);};
    // End of Multifidi Nodes
    
    // Erector Spinae Nodes
    AnyRefNode ILplL1CINodeR = {sRel = .Scale(.StdPar.Right.ILplL1CINode_pos);};
    AnyRefNode ILplL1CINodeL = {sRel = .Scale(.StdPar.Left.ILplL1CINode_pos);};

    AnyRefNode LTplL1SIPSNodeR = {sRel = .Scale(.StdPar.Right.LTplL1SIPSNode_pos);};
    AnyRefNode LTplL1SIPSNodeL = {sRel = .Scale(.StdPar.Left.LTplL1SIPSNode_pos);};

    AnyRefNode LTptT1L1NodeR = {sRel = .Scale(.StdPar.Right.LTptT1L1Node_pos);};
    AnyRefNode LTptT1L1NodeL = {sRel = .Scale(.StdPar.Left.LTptT1L1Node_pos);};
    
    AnyRefNode ILptC5SIPSVia7NodeR = {sRel = .Scale(.StdPar.Right.ILptC5SIPSVia7Node_pos);};
    AnyRefNode ILptC5SIPSVia7NodeL = {sRel = .Scale(.StdPar.Left.ILptC5SIPSVia7Node_pos);};
    
    AnyRefNode ILptC6SIPSVia6NodeR = {sRel = .Scale(.StdPar.Right.ILptC6SIPSVia6Node_pos);};
    AnyRefNode ILptC6SIPSVia6NodeL = {sRel = .Scale(.StdPar.Left.ILptC6SIPSVia6Node_pos);};
    
    AnyRefNode ILptC7CIVia5NodeR = {sRel = .Scale(.StdPar.Right.ILptC7CIVia5Node_pos);};
    AnyRefNode ILptC7CIVia5NodeL = {sRel = .Scale(.StdPar.Left.ILptC7CIVia5Node_pos);};
    
    AnyRefNode ILptC8CIVia4NodeR = {sRel = .Scale(.StdPar.Right.ILptC8CIVia4Node_pos);};
    AnyRefNode ILptC8CIVia4NodeL = {sRel = .Scale(.StdPar.Left.ILptC8CIVia4Node_pos);};
    
    AnyRefNode ILptC9CIVia3NodeR = {sRel = .Scale(.StdPar.Right.ILptC9CIVia3Node_pos);};
    AnyRefNode ILptC9CIVia3NodeL = {sRel = .Scale(.StdPar.Left.ILptC9CIVia3Node_pos);};
    
    AnyRefNode ILptC10CIVia2NodeR = {sRel= .Scale(.StdPar.Right.ILptC10CIVia2Node_pos);};
    AnyRefNode ILptC10CIVia2NodeL = {sRel= .Scale(.StdPar.Left.ILptC10CIVia2Node_pos);};

    AnyRefNode ILptC11CIVia1NodeR = {sRel= .Scale(.StdPar.Right.ILptC11CIVia1Node_pos);};
    AnyRefNode ILptC11CIVia1NodeL = {sRel= .Scale(.StdPar.Left.ILptC11CIVia1Node_pos);};

    AnyRefNode ILptC12CIVia1NodeR = {sRel= .Scale(.StdPar.Right.ILptC12CIVia1Node_pos);};
    AnyRefNode ILptC12CIVia1NodeL = {sRel= .Scale(.StdPar.Left.ILptC12CIVia1Node_pos);};

    AnyRefNode LTptT2L2Via11NodeR = {sRel= .Scale(.StdPar.Right.LTptT2L2Via11Node_pos);};
    AnyRefNode LTptT2L2Via11NodeL = {sRel= .Scale(.StdPar.Left.LTptT2L2Via11Node_pos);};

    AnyRefNode LTptT3L3Via10NodeR = {sRel= .Scale(.StdPar.Right.LTptT3L3Via10Node_pos);};
    AnyRefNode LTptT3L3Via10NodeL = {sRel= .Scale(.StdPar.Left.LTptT3L3Via10Node_pos);};

    AnyRefNode LTptT4L4Via9NodeR = {sRel = .Scale(.StdPar.Right.LTptT4L4Via9Node_pos);};
    AnyRefNode LTptT4L4Via9NodeL = {sRel = .Scale(.StdPar.Left.LTptT4L4Via9Node_pos);};
                                   
    AnyRefNode LTptT5L5Via8NodeR = {sRel = .Scale(.StdPar.Right.LTptT5L5Via8Node_pos);};
    AnyRefNode LTptT5L5Via8NodeL = {sRel = .Scale(.StdPar.Left.LTptT5L5Via8Node_pos);};
                                   
    AnyRefNode LTptT6S1Via7NodeR = {sRel = .Scale(.StdPar.Right.LTptT6S1Via7Node_pos);};
    AnyRefNode LTptT6S1Via7NodeL = {sRel = .Scale(.StdPar.Left.LTptT6S1Via7Node_pos);};
                                   
    AnyRefNode LTptT7S2Via6NodeR = {sRel = .Scale(.StdPar.Right.LTptT7S2Via6Node_pos);};
    AnyRefNode LTptT7S2Via6NodeL = {sRel = .Scale(.StdPar.Left.LTptT7S2Via6Node_pos);};
                                   
    AnyRefNode LTptT8S3Via5NodeR = {sRel = .Scale(.StdPar.Right.LTptT8S3Via5Node_pos);};
    AnyRefNode LTptT8S3Via5NodeL = {sRel = .Scale(.StdPar.Left.LTptT8S3Via5Node_pos);};
                                   
    AnyRefNode LTptT9S4Via4NodeR = {sRel = .Scale(.StdPar.Right.LTptT9S4Via4Node_pos);};
    AnyRefNode LTptT9S4Via4NodeL = {sRel = .Scale(.StdPar.Left.LTptT9S4Via4Node_pos);};
    
    AnyRefNode LTptT10SacrumVia3NodeR = {sRel = .Scale(.StdPar.Right.LTptT10SacrumVia3Node_pos);};
    AnyRefNode LTptT10SacrumVia3NodeL = {sRel = .Scale(.StdPar.Left.LTptT10SacrumVia3Node_pos);};
                                        
    AnyRefNode LTptT11SacrumVia2NodeR = {sRel = .Scale(.StdPar.Right.LTptT11SacrumVia2Node_pos);};
    AnyRefNode LTptT11SacrumVia2NodeL = {sRel = .Scale(.StdPar.Left.LTptT11SacrumVia2Node_pos);};
                                        
    AnyRefNode LTptT12SacrumVia1NodeR = {sRel = .Scale(.StdPar.Right.LTptT12SacrumVia1Node_pos);};
    AnyRefNode LTptT12SacrumVia1NodeL = {sRel = .Scale(.StdPar.Left.LTptT12SacrumVia1Node_pos);};
    // End of Erector Spinae Nodes
    
    // Psoas Major Nodes
    AnyRefNode PML1I_TMNodeR = {sRel = .Scale(.StdPar.Right.PML1I_TMNode_pos);};
    AnyRefNode PML1I_TMNodeL = {sRel = .Scale(.StdPar.Left.PML1I_TMNode_pos);};
    
    AnyRefNode PML1T_TMNodeR = {sRel = .Scale(.StdPar.Right.PML1T_TMNode_pos);};
    AnyRefNode PML1T_TMNodeL = {sRel = .Scale(.StdPar.Left.PML1T_TMNode_pos);};
    // End of Psoas Major Nodes
    
    // Quadratus Lumborum Nodes
    AnyRefNode QLL1_CINodeR = {sRel = .Scale(.StdPar.Right.QLL1_CINode_pos);};
    AnyRefNode QLL1_CINodeL = {sRel = .Scale(.StdPar.Left.QLL1_CINode_pos);};
    // End of Quadratus Lumborum Nodes
    
    AnyDrawSurf DrwSTL = {
      FileName = ...STL.FilenameL1Seg;
      RGB = ...ColorRef.Segments;
      Opacity = Main.DrawSettings.BonesOpacity.L1;
      AnyFunTransform3D &Scale =.Scale;
    };
    
    AnyRefNode MidPoint={sRel=(.L1L2JntNode.sRel+.T12L1JntNode.sRel)*0.5;}; 
    AnyRefNode SupportNode={sRel = .Scale(.StdPar.SupportNode_pos);};      
    AnyRefNode BuckleContactNode={sRel = .ScaleAbdominal(.StdPar.BuckleContactNode_pos);};
  }; // End of L1Seg
}; // End of SegmentsLumbar