Show
Ignore:
Timestamp:
02/24/08 20:03:46 (9 months ago)
Author:
otter
Message:

Unit errors in MultiBody corrected (unit="1" added for unit vectors, other missing units added, e.g. for RealInput)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/maintenance/2.2.2/Modelica/Mechanics/MultiBody/Joints.mo

    r572 r1051  
    914914  protected  
    915915    parameter Integer ndim=if world.enableAnimation and animation then 1 else 0; 
    916     parameter Real e[3]=Frames.normalize(n); 
     916    parameter Real e[3](each final unit="1")=Frames.normalize(n); 
    917917  protected  
    918918    Visualizers.Advanced.Shape box_x[ndim]( 
     
    16971697    SI.Position rRod_a[3]  
    16981698      "Position vector from frame_a to frame_b resolved in frame_a"; 
    1699     Real eRod_a[3]  
     1699    Real eRod_a[3](each final unit="1")  
    17001700      "Unit vector in direction from frame_a to frame_b, resolved in frame_a"; 
    17011701    SI.Position r_CM_0[3]  
     
    20442044      Frames.length(rRod_ia)  
    20452045      "Length of rod (distance between origin of frame_a and origin of frame_b)"; 
    2046     final parameter Real eRod_ia[3]=Frames.normalize(rRod_ia)  
     2046    final parameter Real eRod_ia[3](each final unit="1")=Frames.normalize(rRod_ia)  
    20472047      "Unit vector from origin of frame_a to origin of frame_b, resolved in frame_ia"; 
    2048     final parameter Real e2_ia[3]=Frames.normalize(cross(n1_a, eRod_ia))  
     2048    final parameter Real e2_ia[3](each final unit="1")=Frames.normalize(cross(n1_a, eRod_ia))  
    20492049      "Unit vector in direction of axis 2 of universal joint, resolved in frame_ia (orthogonal to n1_a and eRod_ia; note: frame_ia is parallel to frame_a when the universal joint angles are zero)"; 
    2050     final parameter Real e3_ia[3]=cross(eRod_ia, e2_ia)  
     2050    final parameter Real e3_ia[3](each final unit="1")=cross(eRod_ia, e2_ia)  
    20512051      "Unit vector perpendicular to eRod_ia and e2_ia, resolved in frame_ia"; 
    20522052    SI.Power totalPower  
     
    20542054    SI.Force f_b_a1[3]  
    20552055      "frame_b.f without f_rod part, resolved in frame_a (needed for analytic loop handling)"; 
    2056     Real eRod_a[3]  
     2056    Real eRod_a[3](each final unit="1")  
    20572057      "Unit vector in direction of rRod_a, resolved in frame_a (needed for analytic loop handling)"; 
    20582058    SI.Position rRod_0[3](start=rRod_ia)  
     
    23272327    SI.Force f_ia_a[3] "frame_ia.f resolved in frame_a"; 
    23282328    SI.Torque t_ia_a[3] "frame_ia.t resolved in frame_a"; 
    2329     Real n2_a[3]  
     2329    Real n2_a[3](each final unit="1")  
    23302330      "Vector in direction of axis 2 of the universal joint (e2_ia), resolved in frame_a"; 
    23312331    Real length2_n2_a(start=1, unit="m2") "Square of length of vector n2_a"; 
    23322332    SI.Length length_n2_a "Length of vector n2_a"; 
    2333     Real e2_a[3]  
     2333    Real e2_a[3](each final unit="1")  
    23342334      "Unit vector in direction of axis 2 of the universal joint (e2_ia), resolved in frame_a"; 
    2335     Real e3_a[3]  
     2335    Real e3_a[3](each final unit="1")  
    23362336      "Unit vector perpendicular to eRod_ia and e2_a, resolved in frame_a"; 
    2337     Real der_rRod_a_L[3] "= der(rRod_a)/rodLength"; 
     2337    Real der_rRod_a_L[3](each final unit="1/s") "= der(rRod_a)/rodLength"; 
    23382338    SI.AngularVelocity w_rel_ia1[3]; 
    23392339    Frames.Orientation R_rel_ia1; 
     
    28382838        "= true, if total power flowing into this component shall be determined (must be zero)" 
    28392839        annotation (Dialog(tab="Advanced")); 
    2840       final parameter Real eAxis_ia[3]=Frames.normalize(nAxis_ia)  
     2840      final parameter Real eAxis_ia[3](each final unit="1")=Frames.normalize(nAxis_ia)  
    28412841        "Unit vector from origin of frame_a to origin of frame_b, resolved in frame_ia"; 
    2842       final parameter Real e2_ia[3]=Frames.normalize(cross(n1_a, eAxis_ia))  
     2842      final parameter Real e2_ia[3](each final unit="1")=Frames.normalize(cross(n1_a, eAxis_ia))  
    28432843        "Unit vector in direction of second rotation axis of universal joint, resolved in frame_ia"; 
    2844       final parameter Real e3_ia[3]=cross(eAxis_ia, e2_ia)  
     2844      final parameter Real e3_ia[3](each final unit="1")=cross(eAxis_ia, e2_ia)  
    28452845        "Unit vector perpendicular to eAxis_ia and e2_ia, resolved in frame_ia"; 
    28462846      SI.Position s  
     
    31673167      SI.Position rAxis_a[3]  
    31683168        "Position vector from origin of frame_a to origin of frame_b resolved in frame_a"; 
    3169       Real eAxis_a[3]  
     3169      Real eAxis_a[3](each final unit="1")  
    31703170        "Unit vector in direction of rAxis_a, resolved in frame_a"; 
    3171       Real e2_a[3]  
     3171      Real e2_a[3](each final unit="1")  
    31723172        "Unit vector in direction of second rotation axis of universal joint, resolved in frame_a"; 
    3173       Real e3_a[3]  
     3173      Real e3_a[3](each final unit="1")  
    31743174        "Unit vector perpendicular to eAxis_a and e2_a, resolved in frame_a"; 
    3175       Real n2_a[3]  
     3175      Real n2_a[3](each final unit="1")  
    31763176        "Vector in direction of second rotation axis of universal joint, resolved in frame_a"; 
    31773177      Real length2_n2_a(unit="m2") "Square of length of vector n2_a"; 
    31783178      SI.Length length_n2_a "Length of vector n2_a"; 
    3179       Real der_rAxis_a_L[3] "= der(rAxis_a)/axisLength"; 
     3179      Real der_rAxis_a_L[3](each final unit="1/s") "= der(rAxis_a)/axisLength"; 
    31803180      SI.AngularVelocity w_rel_ia1[3]; 
    31813181      Frames.Orientation R_ia1_a; 
     
    34773477        "= true, if total power flowing into this component shall be determined (must be zero)" 
    34783478        annotation (Dialog(tab="Advanced")); 
    3479       final parameter Real eRod1_ia[3]=rod1.eRod_ia  
     3479      final parameter Real eRod1_ia[3](each final unit="1")=rod1.eRod_ia  
    34803480        "Unit vector from origin of frame_a to origin of spherical joint, resolved in frame_ia"; 
    3481       final parameter Real e2_ia[3]=rod1.e2_ia  
     3481      final parameter Real e2_ia[3](each final unit="1")=rod1.e2_ia  
    34823482        "Unit vector in direction of axis 2 of universal joint, resolved in frame_ia"; 
    34833483      final parameter SI.Distance rod1Length=rod1.rodLength  
     
    39733973        "= true, if total power flowing into this component shall be determined (must be zero)" 
    39743974        annotation (Dialog(tab="Advanced")); 
    3975       final parameter Real eRod1_ia[3]=rod1.eRod_ia  
     3975      final parameter Real eRod1_ia[3](each final unit="1")=rod1.eRod_ia  
    39763976        "Unit vector from origin of frame_a to origin of spherical joint, resolved in frame_ia"; 
    3977       final parameter Real e2_ia[3]=rod1.e2_ia  
     3977      final parameter Real e2_ia[3](each final unit="1")=rod1.e2_ia  
    39783978        "Unit vector in direction of axis 2 of universal joint, resolved in frame_ia"; 
    39793979      final parameter SI.Distance rod1Length=rod1.rodLength  
     
    51265126        "Axes of revolute joints resolved in frame_a (all axes are parallel to each other)" 
    51275127        annotation (Evaluate=true); 
    5128       final parameter Real n_b[3](fixed=false) = {0,0,1}  
     5128      final parameter Real n_b[3](each final unit="1", fixed=false) = {0,0,1}  
    51295129        "Axis of revolute joint fixed and resolved in frame_b"  
    51305130        annotation (Evaluate=true); 
     
    51605160        "= true, if total power flowing into this component shall be determined (must be zero)" 
    51615161        annotation (Dialog(tab="Advanced")); 
    5162       final parameter Real e_a[3]=Frames.normalize(n_a)  
     5162      final parameter Real e_a[3](each final unit="1")=Frames.normalize(n_a)  
    51635163        "Unit vector along axes of rotations, resolved in frame_a"; 
    5164       final parameter Real e_ia[3]=jointUSR.e2_ia  
     5164      final parameter Real e_ia[3](each final unit="1")=jointUSR.e2_ia  
    51655165        "Unit vector along axes of rotations, resolved in frame_ia"; 
    5166       final parameter Real e_b[3]=jointUSR.revolute.e  
     5166      final parameter Real e_b[3](each final unit="1")=jointUSR.revolute.e  
    51675167        "Unit vector along axes of rotations, resolved in frame_b, frame_ib and frame_im"; 
    51685168      SI.Power totalPower=jointUSR.totalPower  
     
    54705470        "= true, if total power flowing into this component shall be determined (must be zero)" 
    54715471        annotation (Dialog(tab="Advanced")); 
    5472       final parameter Real e_a[3]=Frames.normalize(n_a)  
     5472      final parameter Real e_a[3](each final unit="1")=Frames.normalize(n_a)  
    54735473        "Unit vector along axes of rotations, resolved in frame_a"; 
    5474       final parameter Real e_ia[3]=jointUSP.e2_ia  
     5474      final parameter Real e_ia[3](each final unit="1")=jointUSP.e2_ia  
    54755475        "Unit vector along axes of rotations, resolved in frame_ia"; 
    5476       final parameter Real e_im[3](each fixed=false)  
     5476      final parameter Real e_im[3](each final unit="1",each fixed=false)  
    54775477        "Unit vector along axes of rotations, resolved in frame_im"; 
    5478       final parameter Real e_b[3]=jointUSP.prismatic.e  
     5478      final parameter Real e_b[3](each final unit="1")=jointUSP.prismatic.e  
    54795479        "Unit vector along axes of translation of the prismatic joint, resolved in frame_b and frame_ib"; 
    54805480      SI.Power totalPower=jointUSP.totalPower  
     
    58475847    protected  
    58485848      outer Modelica.Mechanics.MultiBody.World world; 
    5849       parameter Real e[3]=Frames.normalize(n)  
     5849      parameter Real e[3](each final unit="1")=Frames.normalize(n)  
    58505850        "Unit vector in direction of rotation axis, resolved in frame_a (= same as in frame_b)"; 
    5851       parameter Real nnx_a[3]=if abs(e[1]) > 0.1 then {0,1,0} else (if abs(e[2]) 
     5851      parameter Real nnx_a[3](each final unit="1")=if abs(e[1]) > 0.1 then {0,1,0} else (if abs(e[2]) 
    58525852           > 0.1 then {0,0,1} else {1,0,0})  
    58535853        "Arbitrary vector that is not aligned with rotation axis n"  
    58545854        annotation (Evaluate=true); 
    5855       parameter Real ey_a[3]=Frames.normalize(cross(e, nnx_a))  
     5855      parameter Real ey_a[3](each final unit="1")=Frames.normalize(cross(e, nnx_a))  
    58565856        "Unit vector orthogonal to axis n of revolute joint, resolved in frame_a" 
    58575857        annotation (Evaluate=true); 
    5858       parameter Real ex_a[3]=cross(ey_a, e)  
     5858      parameter Real ex_a[3](each final unit="1")=cross(ey_a, e)  
    58595859        "Unit vector orthogonal to axis n of revolute joint and to ey_a, resolved in frame_a" 
    58605860        annotation (Evaluate=true); 
    5861       Real ey_b[3] "ey_a, resolved in frame_b"; 
    5862       Real ex_b[3] "ex_a, resolved in frame_b"; 
     5861      Real ey_b[3](each final unit="1") "ey_a, resolved in frame_b"; 
     5862      Real ex_b[3](each final unit="1") "ex_a, resolved in frame_b"; 
    58635863      Frames.Orientation R_rel  
    58645864        "Dummy or relative orientation object from frame_a to frame_b"; 
    58655865      Frames.Orientation R_rel_inv  
    58665866        "Dummy or relative orientation object from frame_b to frame_a"; 
    5867       Real r_rel_a[3]  
     5867      Modelica.SIunits.Position r_rel_a[3]  
    58685868        "Position vector from origin of frame_a to origin of frame_b, resolved in frame_a"; 
    58695869      SI.Force f_c[2] "Dummy or constraint forces in direction of ex_a, ey_a"; 
     
    60286028        "= true, if generalized variables (s,v) shall be used as states (StateSelect.always)" 
    60296029        annotation (Dialog(tab="Advanced")); 
    6030       final parameter Real e[3]=Frames.normalize(n)  
     6030      final parameter Real e[3](each final unit="1")=Frames.normalize(n)  
    60316031        "Unit vector in direction of prismatic axis n"; 
    60326032       
     
    62316231      final parameter Boolean positiveBranch(fixed=false)  
    62326232        "Based on phi_guess, selection of one of the two solutions of the non-linear constraint equation"; 
    6233       final parameter Real e[3]=Modelica.Mechanics.MultiBody.Frames.normalize(n)  
     6233      final parameter Real e[3](each final unit="1")=Modelica.Mechanics.MultiBody.Frames.normalize(n)  
    62346234        "Unit vector in direction of rotation axis, resolved in frame_a"; 
    62356235       
     
    63766376        import Modelica.Math.*; 
    63776377        input SI.Length L "Length of length constraint"; 
    6378         input Real e[3]  
     6378        input Real e[3](each final unit="1") 
    63796379          "Unit vector along axis of rotation, resolved in frame_a (= same in frame_b)"; 
    63806380        input SI.Angle angle_guess  
     
    65766576      final parameter Boolean positiveBranch(fixed=false)  
    65776577        "Selection of one of the two solutions of the non-linear constraint equation"; 
    6578       final parameter Real e[3]=Modelica.Mechanics.MultiBody.Frames.normalize(n)  
     6578      final parameter Real e[3](each final unit="1")=Modelica.Mechanics.MultiBody.Frames.normalize(n)  
    65796579        "Unit vector in direction of translation axis, resolved in frame_a"; 
    65806580      SI.Position s  
     
    67016701      SI.Position r_b[3]=position_b  
    67026702        "Position vector from frame_b to frame_b side of length constraint, resolved in frame_b of revolute joint"; 
    6703       Real rbra[3] "= rb - ra"; 
     6703      Modelica.SIunits.Position rbra[3] "= rb - ra"; 
    67046704      Real B "Coefficient B of equation: s*s + B*s + C = 0"; 
    67056705      Real C "Coefficient C of equation: s*s + B*s + C = 0"; 
     
    67256725        import Modelica.Math.*; 
    67266726        input SI.Length L "Length of length constraint"; 
    6727         input Real e[3]  
     6727        input Real e[3](each final unit="1")  
    67286728          "Unit vector along axis of translation, resolved in frame_a (= same in frame_b)"; 
    67296729        input SI.Position d_guess  
     
    67356735        output Boolean positiveBranch "Branch of the initial solution"; 
    67366736      protected  
    6737         Real rbra[3] "= rb - ra"; 
     6737        Modelica.SIunits.Position rbra[3] "= rb - ra"; 
    67386738        Real B "Coefficient B of equation: d*d + B*d + C = 0"; 
    67396739        Real C "Coefficient C of equation: d*d + B*d + C = 0";