Restore SIM_cannon_aero to its former glory.

This commit is contained in:
John M. Penn 2015-09-03 19:08:55 -05:00
parent 77c8cd656f
commit abb95b8b6c
8 changed files with 124 additions and 0 deletions

View File

@ -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.

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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]} ;

View File

@ -0,0 +1,2 @@
TRICK_CFLAGS += -I${TRICK_HOME}/trick_models
TRICK_CXXFLAGS += -I${TRICK_HOME}/trick_models

View File

@ -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 \