mirror of
https://github.com/nasa/trick.git
synced 2025-04-07 19:34:23 +00:00
Restore SIM_cannon_aero to its former glory.
This commit is contained in:
parent
77c8cd656f
commit
abb95b8b6c
10
trick_sims/SIM_cannon_aero/README.md
Normal file
10
trick_sims/SIM_cannon_aero/README.md
Normal 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.
|
||||
|
||||
|
16
trick_sims/SIM_cannon_aero/RUN_curveball/input.py
Normal file
16
trick_sims/SIM_cannon_aero/RUN_curveball/input.py
Normal 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)
|
16
trick_sims/SIM_cannon_aero/RUN_fastball/input.py
Normal file
16
trick_sims/SIM_cannon_aero/RUN_fastball/input.py
Normal 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)
|
14
trick_sims/SIM_cannon_aero/RUN_test/input.py
Normal file
14
trick_sims/SIM_cannon_aero/RUN_test/input.py
Normal 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)
|
14
trick_sims/SIM_cannon_aero/RUN_test/unit_test.py
Normal file
14
trick_sims/SIM_cannon_aero/RUN_test/unit_test.py
Normal 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)
|
50
trick_sims/SIM_cannon_aero/S_define
Normal file
50
trick_sims/SIM_cannon_aero/S_define
Normal 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]} ;
|
2
trick_sims/SIM_cannon_aero/S_overrides.mk
Normal file
2
trick_sims/SIM_cannon_aero/S_overrides.mk
Normal file
@ -0,0 +1,2 @@
|
||||
TRICK_CFLAGS += -I${TRICK_HOME}/trick_models
|
||||
TRICK_CXXFLAGS += -I${TRICK_HOME}/trick_models
|
@ -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 \
|
||||
|
Loading…
x
Reference in New Issue
Block a user