mirror of
https://github.com/nasa/trick.git
synced 2025-03-21 11:35:19 +00:00
Restore SIM_cannon_jet as decsribed in the tutorial.
This commit is contained in:
parent
6657c7b0dc
commit
d0e6eb1617
@ -1,6 +1,6 @@
|
||||
/****************************** TRICK HEADER ******************************
|
||||
PURPOSE: ( Define CANNON_AERO type. )
|
||||
Tutorial Section 8
|
||||
Tutorial Sections 8, and 9
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef CANNON_AERO_H
|
||||
@ -60,7 +60,7 @@ typedef struct {
|
||||
double coefficient_lift ; /* -- Lift coefficient */
|
||||
double coefficient_cross ; /* -- Cross-Force coefficient */
|
||||
|
||||
/* Jet */
|
||||
/* Jet (Tutorial Section 9) */
|
||||
int jet_on ; /* -- 0|1 */
|
||||
int jet_count ; /* -- How many jet firings? */
|
||||
double force_jet[3] ; /* N Jet force per firing */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/****************************** TRICK HEADER ******************************
|
||||
PURPOSE: (Cannon_aero Prototypes)
|
||||
Tutorial Section 8
|
||||
Tutorial Sections 8, and 9
|
||||
***************************************************************************/
|
||||
#ifndef CANNON_AERO_PROTO_H
|
||||
#define CANNON_AERO_PROTO_H
|
||||
@ -20,6 +20,9 @@ int cannon_integ_aero(CANNON_AERO*) ;
|
||||
double cannon_impact_aero(CANNON_AERO*) ;
|
||||
int cannon_aero_default_data(CANNON_AERO*) ;
|
||||
|
||||
/* Tutorial Section 9 */
|
||||
int cannon_force_jet(CANNON_AERO*) ;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -1,7 +1,7 @@
|
||||
/****************************** TRICK HEADER ******************************
|
||||
PURPOSE: (Set the default data values)
|
||||
LIBRARY_DEPENDENCY: ((cannon_aero_default_data.o))
|
||||
Tutorial Section 8
|
||||
Tutorial Sections 8, and 9
|
||||
***************************************************************************/
|
||||
#include "../include/cannon_aero_proto.h"
|
||||
|
||||
@ -18,8 +18,9 @@ int cannon_aero_default_data(CANNON_AERO* C) {
|
||||
C->ball_radius = 3.63/100 ;
|
||||
C->ball_area = 41.59/10000 ;
|
||||
C->g = -9.81 ;
|
||||
C->force_jet_Z_plus = 1.0 * newton ;
|
||||
|
||||
/* Tutorial Section 9 */
|
||||
C->force_jet_Z_plus = 1.0 * newton ;
|
||||
|
||||
/* Regula Falsi impact critter setup */
|
||||
C->rf.lower_set = No ;
|
||||
|
@ -1,12 +1,11 @@
|
||||
/*********************************** TRICK HEADER **************************
|
||||
PURPOSE: ( Jet fire force )
|
||||
/****************************** TRICK HEADER ******************************
|
||||
PURPOSE: ( Jet fire force )
|
||||
Tutorial Section 9
|
||||
***************************************************************************/
|
||||
#include "../include/cannon_aero_proto.h"
|
||||
|
||||
#include "../include/cannon_aero.h"
|
||||
int cannon_force_jet( CANNON_AERO *C ) {
|
||||
|
||||
int cannon_force_jet(
|
||||
CANNON_AERO *C )
|
||||
{
|
||||
if ( C->jet_on && C->jet_count < 4 ) {
|
||||
C->force_jet[2] = C->force_jet_Z_plus ;
|
||||
C->jet_count++ ;
|
||||
|
5
trick_sims/SIM_cannon_jet/README.md
Normal file
5
trick_sims/SIM_cannon_jet/README.md
Normal file
@ -0,0 +1,5 @@
|
||||
#SIM\_cannon\_jet
|
||||
|
||||
This simulation is described in the Trick Tutorial, Section 9.
|
||||
|
||||
It is a derivation of SIM\_cannon\_aero that adds propulsion to the cannon ball.
|
16
trick_sims/SIM_cannon_jet/RUN_curveball/input.py
Normal file
16
trick_sims/SIM_cannon_jet/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_jet/RUN_fastball/input.py
Normal file
16
trick_sims/SIM_cannon_jet/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)
|
36
trick_sims/SIM_cannon_jet/RUN_jet_read/input.py
Normal file
36
trick_sims/SIM_cannon_jet/RUN_jet_read/input.py
Normal file
@ -0,0 +1,36 @@
|
||||
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)
|
||||
|
||||
# Tutorial Section 9.1.6.1 - Input Read Statement
|
||||
#trick.add_read(0.4 , """
|
||||
#dyn.baseball.jet_on = 1 """)
|
||||
|
||||
# Tutorial Section 9.1.7 - Input Events
|
||||
my_event = trick.new_event("my_event")
|
||||
my_event.set_cycle(0.01)
|
||||
my_event.condition(0,"""dyn.baseball.pos[0] <= 9.0 """)
|
||||
#my_event.action(0,""" dyn.baseball.jet_on = 1
|
||||
# print "action taken"
|
||||
#""")
|
||||
|
||||
# Tutorial Section 9.1.7.2 - Input Event Which Corrects Delay
|
||||
my_event.action(0,""" dyn.baseball.jet_on = 1
|
||||
trick.cannon_force_jet(dyn.baseball)
|
||||
""")
|
||||
|
||||
trick.add_event(my_event)
|
||||
my_event.activate()
|
||||
|
||||
dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 6)
|
||||
trick.stop(5.2)
|
14
trick_sims/SIM_cannon_jet/RUN_test/input.py
Normal file
14
trick_sims/SIM_cannon_jet/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_jet/RUN_test/unit_test.py
Normal file
14
trick_sims/SIM_cannon_jet/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)
|
54
trick_sims/SIM_cannon_jet/S_define
Normal file
54
trick_sims/SIM_cannon_jet/S_define
Normal file
@ -0,0 +1,54 @@
|
||||
/************************TRICK HEADER*************************
|
||||
PURPOSE: (Tutorial, Section 9)
|
||||
|
||||
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)
|
||||
(cannon/aero/src/cannon_force_jet.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 ) ;
|
||||
|
||||
(0.1, "effector") cannon_force_jet( &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],
|
||||
dyn.baseball.force_jet[0]} ;
|
6
trick_sims/SIM_cannon_jet/S_overrides.mk
Normal file
6
trick_sims/SIM_cannon_jet/S_overrides.mk
Normal file
@ -0,0 +1,6 @@
|
||||
ifndef TRICK_HOME
|
||||
$(error TRICK_HOME environment variable is not set. Please set it and retry.)
|
||||
endif
|
||||
|
||||
TRICK_CFLAGS += -I${TRICK_HOME}/trick_models
|
||||
TRICK_CXXFLAGS += -I${TRICK_HOME}/trick_models
|
Loading…
x
Reference in New Issue
Block a user