diff --git a/trick_sims/SIM_cannon_aero/README.md b/trick_sims/SIM_cannon_aero/README.md new file mode 100644 index 00000000..dfebe887 --- /dev/null +++ b/trick_sims/SIM_cannon_aero/README.md @@ -0,0 +1,10 @@ +#SIM\_cannon\_aero + +This simulation is described in the Trick Tutorial, Section 8. + +It introduces Trick's **collect** mechanism while adding aero-dynamic +forces to the cannon ball (or is it a baseball?) to +simulate throwing a curve ball and a fast ball. Ok, it's a cannon that +shoots curveballs and fast balls. Just go with it. + + diff --git a/trick_sims/SIM_cannon_aero/RUN_curveball/input.py b/trick_sims/SIM_cannon_aero/RUN_curveball/input.py new file mode 100644 index 00000000..980ad12c --- /dev/null +++ b/trick_sims/SIM_cannon_aero/RUN_curveball/input.py @@ -0,0 +1,16 @@ +execfile("Modified_data/cannon_aero.dr") + +dyn.baseball.pos[0] = 16.0 +dyn.baseball.pos[1] = 0.1 +dyn.baseball.pos[2] = 2.0 + +dyn.baseball.vel[0] = -30.0 +dyn.baseball.vel[1] = -0.1 +dyn.baseball.vel[2] = 1.0 + +dyn.baseball.theta = trick.attach_units("d",-90.0) +dyn.baseball.phi = trick.attach_units("d",1.0) +dyn.baseball.omega0 = trick.attach_units("rev/s",30.0) + +dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 6) +trick.stop(5.2) diff --git a/trick_sims/SIM_cannon_aero/RUN_fastball/input.py b/trick_sims/SIM_cannon_aero/RUN_fastball/input.py new file mode 100644 index 00000000..d49da8f7 --- /dev/null +++ b/trick_sims/SIM_cannon_aero/RUN_fastball/input.py @@ -0,0 +1,16 @@ +execfile("Modified_data/cannon_aero.dr") + +dyn.baseball.pos[0] = 16.0 +dyn.baseball.pos[1] = 0.1 +dyn.baseball.pos[2] = 2.0 + +dyn.baseball.vel[0] = -30.0 +dyn.baseball.vel[1] = -0.1 +dyn.baseball.vel[2] = 1.0 + +dyn.baseball.theta = trick.attach_units("d",-90.0) +dyn.baseball.phi = trick.attach_units("d",1.0) +dyn.baseball.omega0 = trick.attach_units("rev/s",-30.0) + +dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 6) +trick.stop(5.2) diff --git a/trick_sims/SIM_cannon_aero/RUN_test/input.py b/trick_sims/SIM_cannon_aero/RUN_test/input.py new file mode 100644 index 00000000..7e1d3f30 --- /dev/null +++ b/trick_sims/SIM_cannon_aero/RUN_test/input.py @@ -0,0 +1,14 @@ +dyn.baseball.pos[0] = 16.0 +dyn.baseball.pos[1] = 0.1 +dyn.baseball.pos[2] = 2.0 + +dyn.baseball.vel[0] = -30.0 +dyn.baseball.vel[1] = -0.1 +dyn.baseball.vel[2] = 1.0 + +dyn.baseball.theta = trick.attach_units("d",-90.0) +dyn.baseball.phi = trick.attach_units("d",1.0) +dyn.baseball.omega0 = trick.attach_units("rev/s",30.0) + +dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 6) +trick.exec_set_terminate_time(5.2) diff --git a/trick_sims/SIM_cannon_aero/RUN_test/unit_test.py b/trick_sims/SIM_cannon_aero/RUN_test/unit_test.py new file mode 100644 index 00000000..7e1d3f30 --- /dev/null +++ b/trick_sims/SIM_cannon_aero/RUN_test/unit_test.py @@ -0,0 +1,14 @@ +dyn.baseball.pos[0] = 16.0 +dyn.baseball.pos[1] = 0.1 +dyn.baseball.pos[2] = 2.0 + +dyn.baseball.vel[0] = -30.0 +dyn.baseball.vel[1] = -0.1 +dyn.baseball.vel[2] = 1.0 + +dyn.baseball.theta = trick.attach_units("d",-90.0) +dyn.baseball.phi = trick.attach_units("d",1.0) +dyn.baseball.omega0 = trick.attach_units("rev/s",30.0) + +dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 6) +trick.exec_set_terminate_time(5.2) diff --git a/trick_sims/SIM_cannon_aero/S_define b/trick_sims/SIM_cannon_aero/S_define new file mode 100644 index 00000000..2bd6802f --- /dev/null +++ b/trick_sims/SIM_cannon_aero/S_define @@ -0,0 +1,50 @@ +/************************TRICK HEADER************************* +PURPOSE: (Tutorial, Section 8) + +LIBRARY DEPENDENCY: ((cannon/aero/src/cannon_init_aero.c) + (cannon/aero/src/cannon_force_gravity.c) + (cannon/aero/src/cannon_force_drag.c) + (cannon/aero/src/cannon_force_lift.c) + (cannon/aero/src/cannon_force_cross.c) + (cannon/aero/src/cannon_collect_forces.c) + (cannon/aero/src/cannon_integ_aero.c) + (cannon/aero/src/cannon_impact_aero.c) + (cannon/aero/src/cannon_aero_default_data.c) + ) +*************************************************************/ +#include "sim_objects/default_trick_sys.sm" + +##include "cannon/aero/include/cannon_aero.h" +##include "cannon/aero/include/cannon_aero_proto.h" + +class CannonSimObject : public Trick::SimObject { + + public: + CANNON_AERO baseball; + + CannonSimObject() { + + ("default_data") cannon_aero_default_data( &baseball ) ; + + ("initialization") cannon_init_aero( &baseball ) ; + + ("derivative") cannon_force_gravity( &baseball ) ; + ("derivative") cannon_force_drag( &baseball ) ; + ("derivative") cannon_force_lift( &baseball ) ; + ("derivative") cannon_force_cross( &baseball ) ; + ("derivative") cannon_collect_forces( &baseball ) ; + ("integration") trick_ret = cannon_integ_aero( &baseball ) ; + + ("dynamic_event") cannon_impact_aero( &baseball ) ; + } +} ; + +CannonSimObject dyn ; + +IntegLoop dyn_integloop (0.01) dyn ; + +collect dyn.baseball.force_collect = { + dyn.baseball.force_gravity[0], + dyn.baseball.force_drag[0], + dyn.baseball.force_magnus[0], + dyn.baseball.force_cross[0]} ; diff --git a/trick_sims/SIM_cannon_aero/S_overrides.mk b/trick_sims/SIM_cannon_aero/S_overrides.mk new file mode 100644 index 00000000..086e38ff --- /dev/null +++ b/trick_sims/SIM_cannon_aero/S_overrides.mk @@ -0,0 +1,2 @@ +TRICK_CFLAGS += -I${TRICK_HOME}/trick_models +TRICK_CXXFLAGS += -I${TRICK_HOME}/trick_models diff --git a/trick_sims/makefile b/trick_sims/makefile index 50dfe8ae..a4a1982c 100644 --- a/trick_sims/makefile +++ b/trick_sims/makefile @@ -8,6 +8,7 @@ COMPILE_DIRS = SIM_Ball++_L1 \ SIM_ball_L2 \ SIM_ball_L3 \ SIM_ball_default_data \ + SIM_cannon_aero \ SIM_cannon_analytic \ SIM_cannon_contact \ SIM_cannon_dt \ @@ -50,6 +51,7 @@ TEST_DIRS = SIM_Ball++_L1 \ SIM_ball_L2 \ SIM_ball_L3 \ SIM_ball_default_data \ + SIM_cannon_aero \ SIM_cannon_analytic \ SIM_cannon_contact \ SIM_cannon_dt \