Changeset 1019
- Timestamp:
- 01/29/2008 05:35:04 PM (12 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
Modelica/trunk/Modelica/Mechanics/MultiBody/Joints.mo
r1002 r1019 4191 4191 extent={{-100,-100},{100,100}}, 4192 4192 grid={1,1}, 4193 initialScale=0.2), graphics ={4193 initialScale=0.2), graphics( 4194 4194 Text( 4195 4195 extent={{-140,-41},{140,-66}}, … … 4317 4317 points={{90,30},{90,40},{95,40}}, 4318 4318 color={95,95,95}, 4319 thickness=2) }),4319 thickness=2))), 4320 4320 Diagram(coordinateSystem( 4321 4321 preserveAspectRatio=true, … … 4733 4733 extent={{-100,-100},{100,100}}, 4734 4734 grid={1,1}, 4735 initialScale=0.2), graphics ={4735 initialScale=0.2), graphics( 4736 4736 Rectangle( 4737 4737 extent={{50,20},{80,-20}}, … … 4864 4864 points={{95,40},{90,40},{90,30}}, 4865 4865 color={135,135,135}, 4866 thickness=2) }),4866 thickness=2))), 4867 4867 Diagram(coordinateSystem( 4868 4868 preserveAspectRatio=true, 4869 4869 extent={{-100,-100},{100,100}}, 4870 4870 grid={1,1}, 4871 initialScale=0.2), graphics ={4871 initialScale=0.2), graphics( 4872 4872 Line( 4873 4873 points={{-78,30},{-50,30}}, … … 4885 4885 points={{3,30},{-43,30}}, 4886 4886 color={128,128,128}, 4887 arrow={Arrow.None,Arrow.Filled}) }));4887 arrow={Arrow.None,Arrow.Filled})))); 4888 4888 4889 4889 Modelica.Mechanics.MultiBody.Joints.Internal.PrismaticWithLengthConstraint … … 5968 5968 extent={{-100,-100},{100,100}}, 5969 5969 grid={1,1}, 5970 initialScale=0.2), graphics ={5970 initialScale=0.2), graphics( 5971 5971 Rectangle( 5972 5972 extent={{-90,90},{90,-90}}, … … 6058 6058 points={{100,40},{93,40},{93,3}}, 6059 6059 color={95,95,95}, 6060 thickness=2) }),6060 thickness=2))), 6061 6061 Diagram(coordinateSystem( 6062 6062 preserveAspectRatio=true, … … 6785 6785 Real k1 "Constant of quadratic equation"; 6786 6786 Real k2 "Constant of quadratic equation"; 6787 Real k1a; 6788 Real k1b; 6787 6789 Real kcos1 "k1*cos(angle1)"; 6788 6790 Real ksin1 "k1*sin(angle1)"; … … 6836 6838 C := r_a*r_a + r_b*r_b - L*L - 2*e_r_b*e_r_a; 6837 6839 k1 := A*A + B*B; 6838 k2 := sqrt(k1 - C*C); 6840 k1a :=k1 - C*C; 6841 assert(k1a > 1.e-10, " 6842 Singular position of loop (either no or two analytic solutions; 6843 the mechanism has lost one-degree-of freedom in this position). 6844 Try first to use another Modelica.Mechanics.MultiBody.Joints.Assemblies.JointXXX component. 6845 In most cases it is best that the joints outside of the JointXXX 6846 component are revolute and NOT prismatic joints. If this also 6847 lead to singular positions, it could be that this kinematic loop 6848 cannot be solved analytically. In this case you have to build 6849 up the loop with basic joints (NO aggregation JointXXX components) 6850 and rely on dynamic state selection, i.e., during simulation 6851 the states will be dynamically selected in such a way that in no 6852 position a degree of freedom is lost. 6853 "); 6854 k1b := max(k1a, 1.0e-12); 6855 k2 := sqrt(k1b); 6839 6856 6840 6857 kcos1 := -A*C + B*k2; … … 7195 7212 Real k1 "Constant of quadratic equation solution"; 7196 7213 Real k2 "Constant of quadratic equation solution"; 7214 Real k1a; 7215 Real k1b; 7197 7216 Real d1 "solution 1 of quadratic equation"; 7198 7217 Real d2 "solution 2 of quadratic equation"; … … 7222 7241 C := rbra*rbra - L*L; 7223 7242 k1 := B/2; 7224 k2 := sqrt(k1*k1 - C); 7243 k1a :=k1*k1 - C; 7244 assert(noEvent(k1a > 1.e-10), " 7245 Singular position of loop (either no or two analytic solutions; 7246 the mechanism has lost one-degree-of freedom in this position). 7247 Try first to use another Modelica.Mechanics.MultiBody.Joints.Assemblies.JointXXX component. 7248 If this also lead to singular positions, it could be that this 7249 kinematic loop cannot be solved analytically with a fixed state 7250 selection. In this case you have to build up the loop with 7251 basic joints (NO aggregation JointXXX components) and rely on 7252 dynamic state selection, i.e., during simulation the states will 7253 be dynamically selected in such a way that in no position a 7254 degree of freedom is lost. 7255 "); 7256 k1b :=max(k1a, 1.0e-12); 7257 k2 :=sqrt(k1b); 7225 7258 d1 := -k1 + k2; 7226 7259 d2 := -k1 - k2;
