# car_ride.mbd #----------------------------------------------------------------------------- # [Data Block] begin: data; problem: initial value; end: data; #----------------------------------------------------------------------------- # [ Block] begin: initial value; initial time: 0.; final time: 12.; time step: 1.e-3; max iterations: 100; tolerance: 1.e-6; derivatives tolerance: 1.e-4; derivatives max iterations: 100; end: initial value; #----------------------------------------------------------------------------- # Design Variables set: real L_WheelBase = 2.8; #[m] Wheel base set: real L_Front = 1.2; #[m] Londitudinal distance from front axle to sprung mass cg set: real H_CG = 0.8; #[m] Vertical distance from front axle to sprung mass cg set: real L_Tread_Fr = 1.5; #[m] Front tread set: real L_Tread_Rr = 1.5; #[m] Rear tread set: real m_Sprung = 1400.; #[kg] Sprung mass set: real I_Sprung_roll = 430.; #[kg m^2] Sprung mass moment of inertia set: real I_Sprung_pitch = 1100.; #[kg m^2] Sprung mass moment of inertia set: real I_Sprung_yaw = 1150.; #[kg m^2] Sprung mass moment of inertia set: real m_Unsprung_Fr = 40.; #[kg] Front unsprung mass (at wheel center) set: real m_Unsprung_Rr = 40.; #[kg] Rear unsprung mass (at wheel center) set: real L_SwingArm_Fr = 1.5; #[m] Front swing arm length set: real L_SwingArm_Rr = 1.5; #[m] Rear swing arm length set: real K_Spring_Fr = 3.e4; #[N/m] Front spring stiffness set: real K_Spring_Rr = 5.e4; #[N/m] Rear spring stiffness set: real C_Damper_Fr = 3.e3; #[Ns/m] Front damper viscosity coefficient set: real C_Damper_Rr = 3.e3; #[Ns/m] Rear damper viscosity coefficient set: real K_Tire_Fr = 5.e5; #[N/m] Front tire stiffness set: real K_Tire_Rr = 5.e5; #[N/m] Rear tire stiffness set: real C_Tire_Fr = 1.e2; #[Ns/m] Front tire viscosity coefficient set: real C_Tire_Rr = 1.e2; #[Ns/m] Rear tire viscosity coefficient set: real V = 60; #[km/h] Speed of the car set: real g = 9.81; #[m/s^2] Gravity acceleration #----------------------------------------------------------------------------- # [Control Data Block] begin: control data; use: rigid bodies, gravity, in assembly; output meter: meter, 0., forever, steps, 10; structural nodes: 1 # Sprung mass +4 # Unsprung mass +4 # Road input rig ; rigid bodies: 1 # Sprung mass +4 # Unsprung mass ; joints: 4 # Revh - Arm +4 # Dfmd - Spring & Damper +4 # Dfmd - Tire +4 # Totp - Road input rig ; gravity; end: control data; #----------------------------------------------------------------------------- # Reference Labels set: integer Ref_WheelCenter_FrLh = 1; set: integer Ref_WheelCenter_FrRh = 2; set: integer Ref_WheelCenter_RrLh = 3; set: integer Ref_WheelCenter_RrRh = 4; set: integer Ref_JoRevh_SwingArm_FrLh = 11; set: integer Ref_JoRevh_SwingArm_FrRh = 12; set: integer Ref_JoRevh_SwingArm_RrLh = 13; set: integer Ref_JoRevh_SwingArm_RrRh = 14; # Node Labels set: integer NoDyn_Sprung = 1; set: integer NoDyn_Unsprung_FrLh = 11; set: integer NoDyn_Unsprung_FrRh = 12; set: integer NoDyn_Unsprung_RrLh = 13; set: integer NoDyn_Unsprung_RrRh = 14; set: integer NoDyn_Road_FrLh = 21; set: integer NoDyn_Road_FrRh = 22; set: integer NoDyn_Road_RrLh = 23; set: integer NoDyn_Road_RrRh = 24; # Body Labels set: integer Body_Sprung = 1; set: integer Body_Unsprung_FrLh = 11; set: integer Body_Unsprung_FrRh = 12; set: integer Body_Unsprung_RrLh = 13; set: integer Body_Unsprung_RrRh = 14; # Joint Labels set: integer JoRevh_SwingArm_FrLh = 1; set: integer JoRevh_SwingArm_FrRh = 2; set: integer JoRevh_SwingArm_RrLh = 3; set: integer JoRevh_SwingArm_RrRh = 4; set: integer JoDfmd_SpringDamper_FrLh = 11; set: integer JoDfmd_SpringDamper_FrRh = 12; set: integer JoDfmd_SpringDamper_RrLh = 13; set: integer JoDfmd_SpringDamper_RrRh = 14; set: integer JoDfmd_Tire_FrLh = 21; set: integer JoDfmd_Tire_FrRh = 22; set: integer JoDfmd_Tire_RrLh = 23; set: integer JoDfmd_Tire_RrRh = 24; set: integer JoTotp_RoadInput_FrLh = 31; set: integer JoTotp_RoadInput_FrRh = 32; set: integer JoTotp_RoadInput_RrLh = 33; set: integer JoTotp_RoadInput_RrRh = 34; #----------------------------------------------------------------------------- # Scalar Functions include: "sf_Road_LH.sub"; include: "sf_Road_RH.sub"; #----------------------------------------------------------------------------- # Intermediate Variables set: real L_Rear = L_WheelBase - L_Front; set: real Preload_Spring_Fr = L_Rear/L_WheelBase * m_Sprung * g /2.; set: real Preload_Spring_Rr = L_Front/L_WheelBase * m_Sprung * g /2.; set: real Preload_Tire_Fr = Preload_Spring_Fr + m_Unsprung_Fr * g; set: real Preload_Tire_Rr = Preload_Spring_Rr + m_Unsprung_Rr * g; #----------------------------------------------------------------------------- # References reference: Ref_WheelCenter_FrLh, 0., L_Tread_Fr/2., 0., # absolute position eye, # absolute orientation null, # absolute velocity null; # absolute angular velocity reference: Ref_WheelCenter_FrRh, 0., -L_Tread_Fr/2., 0., # absolute position eye, # absolute orientation null, # absolute velocity null; # absolute angular velocity reference: Ref_WheelCenter_RrLh, -L_WheelBase, L_Tread_Rr/2., 0., # absolute position eye, # absolute orientation null, # absolute velocity null; # absolute angular velocity reference: Ref_WheelCenter_RrRh, -L_WheelBase, -L_Tread_Rr/2., 0., # absolute position eye, # absolute orientation null, # absolute velocity null; # absolute angular velocity reference: Ref_JoRevh_SwingArm_FrLh, reference, Ref_WheelCenter_FrLh, 0., -L_SwingArm_Fr, 0., # absolute position reference, Ref_WheelCenter_FrLh, euler, 0., pi/2., 0., # absolute orientation reference, Ref_WheelCenter_FrLh, null, # absolute velocity reference, Ref_WheelCenter_FrLh, null; # absolute angular velocity reference: Ref_JoRevh_SwingArm_FrRh, reference, Ref_WheelCenter_FrRh, 0., L_SwingArm_Fr, 0., # absolute position reference, Ref_WheelCenter_FrRh, euler, 0., -pi/2., 0., # absolute orientation reference, Ref_WheelCenter_FrRh, null, # absolute velocity reference, Ref_WheelCenter_FrRh, null; # absolute angular velocity reference: Ref_JoRevh_SwingArm_RrLh, reference, Ref_WheelCenter_RrLh, 0., -L_SwingArm_Rr, 0., # absolute position reference, Ref_WheelCenter_RrLh, euler, 0., pi/2., 0., # absolute orientation reference, Ref_WheelCenter_RrLh, null, # absolute velocity reference, Ref_WheelCenter_RrLh, null; # absolute angular velocity reference: Ref_JoRevh_SwingArm_RrRh, reference, Ref_WheelCenter_RrRh, 0., L_SwingArm_Rr, 0., # absolute position reference, Ref_WheelCenter_RrRh, euler, 0., -pi/2., 0., # absolute orientation reference, Ref_WheelCenter_RrRh, null, # absolute velocity reference, Ref_WheelCenter_RrRh, null; # absolute angular velocity #----------------------------------------------------------------------------- # [Nodes Block] begin: nodes; #----------------------------------------------------------------------------- # Structural Nodes structural: NoDyn_Sprung, dynamic, -L_Front, 0., H_CG, # absolute position eye, # absolute orientation null, # absolute velocity null; # absolute angular velocity structural: NoDyn_Unsprung_FrLh, dynamic, reference, Ref_WheelCenter_FrLh, null, # absolute position reference, Ref_WheelCenter_FrLh, eye, # absolute orientation reference, Ref_WheelCenter_FrLh, null, # absolute velocity reference, Ref_WheelCenter_FrLh, null; # absolute angular velocity structural: NoDyn_Unsprung_FrRh, dynamic, reference, Ref_WheelCenter_FrRh, null, # absolute position reference, Ref_WheelCenter_FrRh, eye, # absolute orientation reference, Ref_WheelCenter_FrRh, null, # absolute velocity reference, Ref_WheelCenter_FrRh, null; # absolute angular velocity structural: NoDyn_Unsprung_RrLh, dynamic, reference, Ref_WheelCenter_RrLh, null, # absolute position reference, Ref_WheelCenter_RrLh, eye, # absolute orientation reference, Ref_WheelCenter_RrLh, null, # absolute velocity reference, Ref_WheelCenter_RrLh, null; # absolute angular velocity structural: NoDyn_Unsprung_RrRh, dynamic, reference, Ref_WheelCenter_RrRh, null, # absolute position reference, Ref_WheelCenter_RrRh, eye, # absolute orientation reference, Ref_WheelCenter_RrRh, null, # absolute velocity reference, Ref_WheelCenter_RrRh, null; # absolute angular velocity structural: NoDyn_Road_FrLh, dynamic, reference, Ref_WheelCenter_FrLh, null, # absolute position reference, Ref_WheelCenter_FrLh, eye, # absolute orientation reference, Ref_WheelCenter_FrLh, null, # absolute velocity reference, Ref_WheelCenter_FrLh, null; # absolute angular velocity structural: NoDyn_Road_FrRh, dynamic, reference, Ref_WheelCenter_FrRh, null, # absolute position reference, Ref_WheelCenter_FrRh, eye, # absolute orientation reference, Ref_WheelCenter_FrRh, null, # absolute velocity reference, Ref_WheelCenter_FrRh, null; # absolute angular velocity structural: NoDyn_Road_RrLh, dynamic, reference, Ref_WheelCenter_RrLh, null, # absolute position reference, Ref_WheelCenter_RrLh, eye, # absolute orientation reference, Ref_WheelCenter_RrLh, null, # absolute velocity reference, Ref_WheelCenter_RrLh, null; # absolute angular velocity structural: NoDyn_Road_RrRh, dynamic, reference, Ref_WheelCenter_RrRh, null, # absolute position reference, Ref_WheelCenter_RrRh, eye, # absolute orientation reference, Ref_WheelCenter_RrRh, null, # absolute velocity reference, Ref_WheelCenter_RrRh, null; # absolute angular velocity end: nodes; #----------------------------------------------------------------------------- # [Elements Block] begin: elements; #----------------------------------------------------------------------------- # Bodies body: Body_Sprung, NoDyn_Sprung, m_Sprung, # mass null, # relative center of mass diag, I_Sprung_roll, I_Sprung_pitch, I_Sprung_yaw; # inertia matrix body: Body_Unsprung_FrLh, NoDyn_Unsprung_FrLh, m_Unsprung_Fr, # mass null, # relative center of mass diag, 1.e-3, 1.e-3, 1.e-3; # inertia matrix body: Body_Unsprung_FrRh, NoDyn_Unsprung_FrRh, m_Unsprung_Fr, # mass null, # relative center of mass diag, 1.e-3, 1.e-3, 1.e-3; # inertia matrix body: Body_Unsprung_RrLh, NoDyn_Unsprung_RrLh, m_Unsprung_Rr, # mass null, # relative center of mass diag, 1.e-3, 1.e-3, 1.e-3; # inertia matrix body: Body_Unsprung_RrRh, NoDyn_Unsprung_RrRh, m_Unsprung_Rr, # mass null, # relative center of mass diag, 1.e-3, 1.e-3, 1.e-3; # inertia matrix #----------------------------------------------------------------------------- # Joints joint: JoRevh_SwingArm_FrLh, revolute hinge, NoDyn_Sprung, reference, Ref_JoRevh_SwingArm_FrLh, null, # relative offset hinge, reference, Ref_JoRevh_SwingArm_FrLh, eye, # relative axis orientation NoDyn_Unsprung_FrLh, reference, Ref_JoRevh_SwingArm_FrLh, null, # relative offset hinge, reference, Ref_JoRevh_SwingArm_FrLh, eye; # relative axis orientation joint: JoRevh_SwingArm_FrRh, revolute hinge, NoDyn_Sprung, reference, Ref_JoRevh_SwingArm_FrRh, null, # relative offset hinge, reference, Ref_JoRevh_SwingArm_FrRh, eye, # relative axis orientation NoDyn_Unsprung_FrRh, reference, Ref_JoRevh_SwingArm_FrRh, null, # relative offset hinge, reference, Ref_JoRevh_SwingArm_FrRh, eye; # relative axis orientation joint: JoRevh_SwingArm_RrLh, revolute hinge, NoDyn_Sprung, reference, Ref_JoRevh_SwingArm_RrLh, null, # relative offset hinge, reference, Ref_JoRevh_SwingArm_RrLh, eye, # relative axis orientation NoDyn_Unsprung_RrLh, reference, Ref_JoRevh_SwingArm_RrLh, null, # relative offset hinge, reference, Ref_JoRevh_SwingArm_RrLh, eye; # relative axis orientation joint: JoRevh_SwingArm_RrRh, revolute hinge, NoDyn_Sprung, reference, Ref_JoRevh_SwingArm_RrRh, null, # relative offset hinge, reference, Ref_JoRevh_SwingArm_RrRh, eye, # relative axis orientation NoDyn_Unsprung_RrRh, reference, Ref_JoRevh_SwingArm_RrRh, null, # relative offset hinge, reference, Ref_JoRevh_SwingArm_RrRh, eye; # relative axis orientation joint: JoDfmd_SpringDamper_FrLh, deformable displacement joint, NoDyn_Sprung, reference, Ref_WheelCenter_FrLh, null, # relative offset NoDyn_Unsprung_FrLh, reference, Ref_WheelCenter_FrLh, null, # relative offset linear viscoelastic generic, diag, 0., 0., K_Spring_Fr, # stiffness diag, 0., 0., C_Damper_Fr, # viscosity coefficient prestress, 0., 0., Preload_Spring_Fr; joint: JoDfmd_SpringDamper_FrRh, deformable displacement joint, NoDyn_Sprung, reference, Ref_WheelCenter_FrRh, null, # relative offset NoDyn_Unsprung_FrRh, reference, Ref_WheelCenter_FrRh, null, # relative offset linear viscoelastic generic, diag, 0., 0., K_Spring_Fr, # stiffness diag, 0., 0., C_Damper_Fr, # viscosity coefficient prestress, 0., 0., Preload_Spring_Fr; joint: JoDfmd_SpringDamper_RrLh, deformable displacement joint, NoDyn_Sprung, reference, Ref_WheelCenter_RrLh, null, # relative offset NoDyn_Unsprung_RrLh, reference, Ref_WheelCenter_RrLh, null, # relative offset linear viscoelastic generic, diag, 0., 0., K_Spring_Rr, # stiffness diag, 0., 0., C_Damper_Rr, # viscosity coefficient prestress, 0., 0., Preload_Spring_Rr; joint: JoDfmd_SpringDamper_RrRh, deformable displacement joint, NoDyn_Sprung, reference, Ref_WheelCenter_RrRh, null, # relative offset NoDyn_Unsprung_RrRh, reference, Ref_WheelCenter_RrRh, null, # relative offset linear viscoelastic generic, diag, 0., 0., K_Spring_Rr, # stiffness diag, 0., 0., C_Damper_Rr, # viscosity coefficient prestress, 0., 0., Preload_Spring_Rr; joint: JoDfmd_Tire_FrLh, deformable displacement joint, NoDyn_Unsprung_FrLh, reference, Ref_WheelCenter_FrLh, null, # relative offset NoDyn_Road_FrLh, reference, Ref_WheelCenter_FrLh, null, # relative offset linear viscoelastic generic, diag, K_Tire_Fr, K_Tire_Fr, K_Tire_Fr, # stiffness diag, C_Tire_Fr, C_Tire_Fr, C_Tire_Fr, # viscosity coefficient prestress, 0., 0., Preload_Tire_Fr; joint: JoDfmd_Tire_FrRh, deformable displacement joint, NoDyn_Unsprung_FrRh, reference, Ref_WheelCenter_FrRh, null, # relative offset NoDyn_Road_FrRh, reference, Ref_WheelCenter_FrRh, null, # relative offset linear viscoelastic generic, diag, K_Tire_Fr, K_Tire_Fr, K_Tire_Fr, # stiffness diag, C_Tire_Fr, C_Tire_Fr, C_Tire_Fr, # viscosity coefficient prestress, 0., 0., Preload_Tire_Fr; joint: JoDfmd_Tire_RrLh, deformable displacement joint, NoDyn_Unsprung_RrLh, reference, Ref_WheelCenter_RrLh, null, # relative offset NoDyn_Road_RrLh, reference, Ref_WheelCenter_RrLh, null, # relative offset linear viscoelastic generic, diag, K_Tire_Rr, K_Tire_Rr, K_Tire_Rr, # stiffness diag, C_Tire_Rr, C_Tire_Rr, C_Tire_Rr, # viscosity coefficient prestress, 0., 0., Preload_Tire_Rr; joint: JoDfmd_Tire_RrRh, deformable displacement joint, NoDyn_Unsprung_RrRh, reference, Ref_WheelCenter_RrRh, null, # relative offset NoDyn_Road_RrRh, reference, Ref_WheelCenter_RrRh, null, # relative offset linear viscoelastic generic, diag, K_Tire_Rr, K_Tire_Rr, K_Tire_Rr, # stiffness diag, C_Tire_Rr, C_Tire_Rr, C_Tire_Rr, # viscosity coefficient prestress, 0., 0., Preload_Tire_Rr; joint: JoTotp_RoadInput_FrLh, total pin joint, NoDyn_Road_FrLh, position, reference, Ref_WheelCenter_FrLh, null, # relative offset position, reference, Ref_WheelCenter_FrLh, null, # absolute position position constraint, active, active, active, single, 0., 0., 1., string, "model::sf::SF_Road_LH(V/3.6*Time) * 1.e-2", orientation constraint, active, active, active, null; joint: JoTotp_RoadInput_FrRh, total pin joint, NoDyn_Road_FrRh, position, reference, Ref_WheelCenter_FrRh, null, # relative offset position, reference, Ref_WheelCenter_FrRh, null, # absolute position position constraint, active, active, active, single, 0., 0., 1., string, "model::sf::SF_Road_RH(V/3.6*Time) * 1.e-2", orientation constraint, active, active, active, null; joint: JoTotp_RoadInput_RrLh, total pin joint, NoDyn_Road_RrLh, position, reference, Ref_WheelCenter_RrLh, null, # relative offset position, reference, Ref_WheelCenter_RrLh, null, # absolute position position constraint, active, active, active, single, 0., 0., 1., string, "model::sf::SF_Road_LH(V/3.6*Time-L_WheelBase) * 1.e-2", orientation constraint, active, active, active, null; joint: JoTotp_RoadInput_RrRh, total pin joint, NoDyn_Road_RrRh, position, reference, Ref_WheelCenter_RrRh, null, # relative offset position, reference, Ref_WheelCenter_RrRh, null, # absolute position position constraint, active, active, active, single, 0., 0., 1., string, "model::sf::SF_Road_RH(V/3.6*Time-L_WheelBase) * 1.e-2", orientation constraint, active, active, active, null; #----------------------------------------------------------------------------- # Gravity gravity: 0., 0., -1., const, g; end: elements;