From 4f9c1cdc0be833ee8db33b6dac842192c607f2ea Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Thu, 20 Oct 2016 17:35:27 -0500 Subject: [PATCH] Get rid of SIM_cannon_dt and combine Sim_cannon_contact and SIM_cannon_integ --- .../SIM_cannon_dt/Modified_data/cannon.dr | 17 --------- .../SIM_cannon_dt/Modified_data/realtime.py | 11 ------ .../Cannon/SIM_cannon_dt/RUN_test/input.py | 5 --- .../SIM_cannon_dt/RUN_test/unit_test.py | 2 - trick_sims/Cannon/SIM_cannon_dt/S_define | 34 ----------------- .../Cannon/SIM_cannon_dt/S_overrides.mk | 4 -- trick_sims/Cannon/SIM_cannon_dt/cannon.sc | 9 ----- trick_sims/Cannon/SIM_cannon_dt/cannon.tv | 3 -- .../SIM_cannon_integ/Modified_data/cannon.dr | 17 --------- trick_sims/Cannon/SIM_cannon_integ/README.md | 15 -------- .../Cannon/SIM_cannon_integ/RUN_test/input.py | 9 ----- .../SIM_cannon_integ/RUN_test/unit_test.py | 3 -- trick_sims/Cannon/SIM_cannon_integ/S_define | 36 ------------------ .../Cannon/SIM_cannon_integ/S_overrides.mk | 4 -- .../SIM_cannon_integ/images/CannonInit.png | Bin 44826 -> 0 bytes .../Modified_data/cannon.dr | 0 .../Modified_data/realtime.py | 0 .../RUN_test/input.py | 0 .../RUN_test/unit_test.py | 0 .../S_define | 0 .../S_overrides.mk | 0 .../cannon/gravity/include/cannon_dt_proto.h | 23 ----------- .../cannon/gravity/src/cannon_deriv_impact.c | 16 -------- .../models/cannon/gravity/src/cannon_dt.c | 34 ----------------- 24 files changed, 242 deletions(-) delete mode 100644 trick_sims/Cannon/SIM_cannon_dt/Modified_data/cannon.dr delete mode 100644 trick_sims/Cannon/SIM_cannon_dt/Modified_data/realtime.py delete mode 100644 trick_sims/Cannon/SIM_cannon_dt/RUN_test/input.py delete mode 100644 trick_sims/Cannon/SIM_cannon_dt/RUN_test/unit_test.py delete mode 100644 trick_sims/Cannon/SIM_cannon_dt/S_define delete mode 100644 trick_sims/Cannon/SIM_cannon_dt/S_overrides.mk delete mode 100644 trick_sims/Cannon/SIM_cannon_dt/cannon.sc delete mode 100644 trick_sims/Cannon/SIM_cannon_dt/cannon.tv delete mode 100644 trick_sims/Cannon/SIM_cannon_integ/Modified_data/cannon.dr delete mode 100644 trick_sims/Cannon/SIM_cannon_integ/README.md delete mode 100644 trick_sims/Cannon/SIM_cannon_integ/RUN_test/input.py delete mode 100644 trick_sims/Cannon/SIM_cannon_integ/RUN_test/unit_test.py delete mode 100644 trick_sims/Cannon/SIM_cannon_integ/S_define delete mode 100644 trick_sims/Cannon/SIM_cannon_integ/S_overrides.mk delete mode 100644 trick_sims/Cannon/SIM_cannon_integ/images/CannonInit.png rename trick_sims/Cannon/{SIM_cannon_contact => SIM_cannon_numeric}/Modified_data/cannon.dr (100%) rename trick_sims/Cannon/{SIM_cannon_contact => SIM_cannon_numeric}/Modified_data/realtime.py (100%) rename trick_sims/Cannon/{SIM_cannon_contact => SIM_cannon_numeric}/RUN_test/input.py (100%) rename trick_sims/Cannon/{SIM_cannon_contact => SIM_cannon_numeric}/RUN_test/unit_test.py (100%) rename trick_sims/Cannon/{SIM_cannon_contact => SIM_cannon_numeric}/S_define (100%) rename trick_sims/Cannon/{SIM_cannon_contact => SIM_cannon_numeric}/S_overrides.mk (100%) delete mode 100644 trick_sims/Cannon/models/cannon/gravity/include/cannon_dt_proto.h delete mode 100644 trick_sims/Cannon/models/cannon/gravity/src/cannon_deriv_impact.c delete mode 100644 trick_sims/Cannon/models/cannon/gravity/src/cannon_dt.c diff --git a/trick_sims/Cannon/SIM_cannon_dt/Modified_data/cannon.dr b/trick_sims/Cannon/SIM_cannon_dt/Modified_data/cannon.dr deleted file mode 100644 index 8810bedd..00000000 --- a/trick_sims/Cannon/SIM_cannon_dt/Modified_data/cannon.dr +++ /dev/null @@ -1,17 +0,0 @@ -global DR_GROUP_ID -global drg -try: - if DR_GROUP_ID >= 0: - DR_GROUP_ID += 1 -except NameError: - DR_GROUP_ID = 0 - drg = [] - -drg.append(trick.DRAscii("cannon")) -drg[DR_GROUP_ID].set_freq(trick.DR_Always) -drg[DR_GROUP_ID].set_cycle(0.01) -drg[DR_GROUP_ID].set_single_prec_only(False) -drg[DR_GROUP_ID].add_variable("dyn.cannon.pos[0]") -drg[DR_GROUP_ID].add_variable("dyn.cannon.pos[1]") -trick.add_data_record_group(drg[DR_GROUP_ID], trick.DR_Buffer) -drg[DR_GROUP_ID].enable() diff --git a/trick_sims/Cannon/SIM_cannon_dt/Modified_data/realtime.py b/trick_sims/Cannon/SIM_cannon_dt/Modified_data/realtime.py deleted file mode 100644 index e8ce8380..00000000 --- a/trick_sims/Cannon/SIM_cannon_dt/Modified_data/realtime.py +++ /dev/null @@ -1,11 +0,0 @@ - -trick.frame_log_on() -trick.real_time_enable() -trick.exec_set_software_frame(0.1) -trick.itimer_enable() - -trick.exec_set_enable_freeze(True) -trick.exec_set_freeze_command(True) - -simControlPanel = trick.SimControlPanel() -trick.add_external_application(simControlPanel) diff --git a/trick_sims/Cannon/SIM_cannon_dt/RUN_test/input.py b/trick_sims/Cannon/SIM_cannon_dt/RUN_test/input.py deleted file mode 100644 index 0c47ad16..00000000 --- a/trick_sims/Cannon/SIM_cannon_dt/RUN_test/input.py +++ /dev/null @@ -1,5 +0,0 @@ - -execfile("Modified_data/realtime.py") -execfile("Modified_data/cannon.dr") - -trick.exec_set_terminate_time(5.2) diff --git a/trick_sims/Cannon/SIM_cannon_dt/RUN_test/unit_test.py b/trick_sims/Cannon/SIM_cannon_dt/RUN_test/unit_test.py deleted file mode 100644 index 36018ab9..00000000 --- a/trick_sims/Cannon/SIM_cannon_dt/RUN_test/unit_test.py +++ /dev/null @@ -1,2 +0,0 @@ - -trick.exec_set_terminate_time(5.2) diff --git a/trick_sims/Cannon/SIM_cannon_dt/S_define b/trick_sims/Cannon/SIM_cannon_dt/S_define deleted file mode 100644 index 5a40072f..00000000 --- a/trick_sims/Cannon/SIM_cannon_dt/S_define +++ /dev/null @@ -1,34 +0,0 @@ -/************************TRICK HEADER************************* -PURPOSE: - (This S_define is used with the RUN_dt input file) -LIBRARY_DEPENDENCY: - ( - (cannon/gravity/src/cannon_dt.c) - (cannon/gravity/src/cannon_init.c) - (cannon/gravity/src/cannon_default_data.c) - ) -*************************************************************/ - -#include "sim_objects/default_trick_sys.sm" - - -##include "cannon/gravity/include/cannon.h" -##include "cannon/gravity/include/cannon_dt_proto.h" - -class CannonSimObject : public Trick::SimObject { - - public: - CANNON cannon ; - - CannonSimObject() { - ("default_data") cannon_default_data( &cannon ) ; - - ("initialization") cannon_init( &cannon ) ; - - (0.01, "scheduled") cannon_dt( &cannon ) ; - } - -} ; - -// Instantiations -CannonSimObject dyn ; diff --git a/trick_sims/Cannon/SIM_cannon_dt/S_overrides.mk b/trick_sims/Cannon/SIM_cannon_dt/S_overrides.mk deleted file mode 100644 index a2eff6d4..00000000 --- a/trick_sims/Cannon/SIM_cannon_dt/S_overrides.mk +++ /dev/null @@ -1,4 +0,0 @@ - -TRICK_CFLAGS += -I../models -TRICK_CXXFLAGS += -I../models - diff --git a/trick_sims/Cannon/SIM_cannon_dt/cannon.sc b/trick_sims/Cannon/SIM_cannon_dt/cannon.sc deleted file mode 100644 index 4ccfec5b..00000000 --- a/trick_sims/Cannon/SIM_cannon_dt/cannon.sc +++ /dev/null @@ -1,9 +0,0 @@ -Stripchart: - title = "Cannon Trajectory" - geometry = 800x800+300+0 - x_min = 0.0 - x_max = 250.0 - y_min = 0.0 - y_max = 40.0 - x_variable = dyn.cannon.pos[0] - dyn.cannon.pos[1] diff --git a/trick_sims/Cannon/SIM_cannon_dt/cannon.tv b/trick_sims/Cannon/SIM_cannon_dt/cannon.tv deleted file mode 100644 index 578ced82..00000000 --- a/trick_sims/Cannon/SIM_cannon_dt/cannon.tv +++ /dev/null @@ -1,3 +0,0 @@ -dyn.baseball.pos[0] 16 m NUMBER -dyn.baseball.pos[1] 0.1 m NUMBER -dyn.baseball.pos[2] 2 m NUMBER diff --git a/trick_sims/Cannon/SIM_cannon_integ/Modified_data/cannon.dr b/trick_sims/Cannon/SIM_cannon_integ/Modified_data/cannon.dr deleted file mode 100644 index 8810bedd..00000000 --- a/trick_sims/Cannon/SIM_cannon_integ/Modified_data/cannon.dr +++ /dev/null @@ -1,17 +0,0 @@ -global DR_GROUP_ID -global drg -try: - if DR_GROUP_ID >= 0: - DR_GROUP_ID += 1 -except NameError: - DR_GROUP_ID = 0 - drg = [] - -drg.append(trick.DRAscii("cannon")) -drg[DR_GROUP_ID].set_freq(trick.DR_Always) -drg[DR_GROUP_ID].set_cycle(0.01) -drg[DR_GROUP_ID].set_single_prec_only(False) -drg[DR_GROUP_ID].add_variable("dyn.cannon.pos[0]") -drg[DR_GROUP_ID].add_variable("dyn.cannon.pos[1]") -trick.add_data_record_group(drg[DR_GROUP_ID], trick.DR_Buffer) -drg[DR_GROUP_ID].enable() diff --git a/trick_sims/Cannon/SIM_cannon_integ/README.md b/trick_sims/Cannon/SIM_cannon_integ/README.md deleted file mode 100644 index cf7abedd..00000000 --- a/trick_sims/Cannon/SIM_cannon_integ/README.md +++ /dev/null @@ -1,15 +0,0 @@ -#SIM\_cannon\_integ - -![CannonPicture](images/CannonInit.png) - -###The Simulation - -This is a simulation of a cannon shooting a cannonball. Given the initial position of the cannon ball, the muzzle velocity (speed) of the cannon ball, and the elevation angle of the cannon barrel the simulation computes the cannon ball's trajectory and time of impact with the ground. - -The acceleration of gravity is assumed to be -9.81 m/s2. - - - - - - \ No newline at end of file diff --git a/trick_sims/Cannon/SIM_cannon_integ/RUN_test/input.py b/trick_sims/Cannon/SIM_cannon_integ/RUN_test/input.py deleted file mode 100644 index 67d1a2a9..00000000 --- a/trick_sims/Cannon/SIM_cannon_integ/RUN_test/input.py +++ /dev/null @@ -1,9 +0,0 @@ - -#execfile("Modified_data/realtime.py") -execfile("Modified_data/cannon.dr") - -trick.TMM_reduced_checkpoint(0) - -dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 4) - -trick.stop(6) diff --git a/trick_sims/Cannon/SIM_cannon_integ/RUN_test/unit_test.py b/trick_sims/Cannon/SIM_cannon_integ/RUN_test/unit_test.py deleted file mode 100644 index 29455032..00000000 --- a/trick_sims/Cannon/SIM_cannon_integ/RUN_test/unit_test.py +++ /dev/null @@ -1,3 +0,0 @@ - -dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 4) -trick.exec_set_terminate_time(5.2) diff --git a/trick_sims/Cannon/SIM_cannon_integ/S_define b/trick_sims/Cannon/SIM_cannon_integ/S_define deleted file mode 100644 index bdce1fd4..00000000 --- a/trick_sims/Cannon/SIM_cannon_integ/S_define +++ /dev/null @@ -1,36 +0,0 @@ -/************************TRICK HEADER************************* -PURPOSE: - (This S_define is used with RUN_integ input file) -LIBRARY DEPENDENCIES: - ( - (cannon/gravity/src/cannon_default_data.c) - (cannon/gravity/src/cannon_init.c) - (cannon/gravity/src/cannon_deriv.c) - (cannon/gravity/src/cannon_integ.c) - ) -*************************************************************/ - -#include "sim_objects/default_trick_sys.sm" - -##include "cannon/gravity/include/cannon.h" -##include "cannon/gravity/include/cannon_integ_proto.h" - -class CannonSimObject : public Trick::SimObject { - - public: - CANNON cannon ; - - CannonSimObject() { - ("default_data") cannon_default_data( &cannon ) ; - - ("initialization") cannon_init( &cannon ) ; - - ("derivative") cannon_deriv( &cannon ) ; - ("integration") trick_ret = cannon_integ( &cannon ) ; - } -} ; - -// Instantiations -CannonSimObject dyn ; - -IntegLoop dyn_integloop (0.01) dyn; diff --git a/trick_sims/Cannon/SIM_cannon_integ/S_overrides.mk b/trick_sims/Cannon/SIM_cannon_integ/S_overrides.mk deleted file mode 100644 index a2eff6d4..00000000 --- a/trick_sims/Cannon/SIM_cannon_integ/S_overrides.mk +++ /dev/null @@ -1,4 +0,0 @@ - -TRICK_CFLAGS += -I../models -TRICK_CXXFLAGS += -I../models - diff --git a/trick_sims/Cannon/SIM_cannon_integ/images/CannonInit.png b/trick_sims/Cannon/SIM_cannon_integ/images/CannonInit.png deleted file mode 100644 index 404ff6c7e2f78224e3452032687cd2cd41f9967c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44826 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 De&BLT diff --git a/trick_sims/Cannon/SIM_cannon_contact/Modified_data/cannon.dr b/trick_sims/Cannon/SIM_cannon_numeric/Modified_data/cannon.dr similarity index 100% rename from trick_sims/Cannon/SIM_cannon_contact/Modified_data/cannon.dr rename to trick_sims/Cannon/SIM_cannon_numeric/Modified_data/cannon.dr diff --git a/trick_sims/Cannon/SIM_cannon_contact/Modified_data/realtime.py b/trick_sims/Cannon/SIM_cannon_numeric/Modified_data/realtime.py similarity index 100% rename from trick_sims/Cannon/SIM_cannon_contact/Modified_data/realtime.py rename to trick_sims/Cannon/SIM_cannon_numeric/Modified_data/realtime.py diff --git a/trick_sims/Cannon/SIM_cannon_contact/RUN_test/input.py b/trick_sims/Cannon/SIM_cannon_numeric/RUN_test/input.py similarity index 100% rename from trick_sims/Cannon/SIM_cannon_contact/RUN_test/input.py rename to trick_sims/Cannon/SIM_cannon_numeric/RUN_test/input.py diff --git a/trick_sims/Cannon/SIM_cannon_contact/RUN_test/unit_test.py b/trick_sims/Cannon/SIM_cannon_numeric/RUN_test/unit_test.py similarity index 100% rename from trick_sims/Cannon/SIM_cannon_contact/RUN_test/unit_test.py rename to trick_sims/Cannon/SIM_cannon_numeric/RUN_test/unit_test.py diff --git a/trick_sims/Cannon/SIM_cannon_contact/S_define b/trick_sims/Cannon/SIM_cannon_numeric/S_define similarity index 100% rename from trick_sims/Cannon/SIM_cannon_contact/S_define rename to trick_sims/Cannon/SIM_cannon_numeric/S_define diff --git a/trick_sims/Cannon/SIM_cannon_contact/S_overrides.mk b/trick_sims/Cannon/SIM_cannon_numeric/S_overrides.mk similarity index 100% rename from trick_sims/Cannon/SIM_cannon_contact/S_overrides.mk rename to trick_sims/Cannon/SIM_cannon_numeric/S_overrides.mk diff --git a/trick_sims/Cannon/models/cannon/gravity/include/cannon_dt_proto.h b/trick_sims/Cannon/models/cannon/gravity/include/cannon_dt_proto.h deleted file mode 100644 index ecd99dd1..00000000 --- a/trick_sims/Cannon/models/cannon/gravity/include/cannon_dt_proto.h +++ /dev/null @@ -1,23 +0,0 @@ - -/************************************************************************* -PURPOSE: (Cannonball Prototypes) -**************************************************************************/ - -#ifndef CANNON_DT_PROTO -#define CANNON_DT_PROTO -#include -#include "cannon.h" - -#ifdef __cplusplus -extern "C" { -#endif - -int cannon_dt(CANNON*) ; -int cannon_init(CANNON*) ; -int cannon_default_data(CANNON*) ; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/trick_sims/Cannon/models/cannon/gravity/src/cannon_deriv_impact.c b/trick_sims/Cannon/models/cannon/gravity/src/cannon_deriv_impact.c deleted file mode 100644 index c6eedaaa..00000000 --- a/trick_sims/Cannon/models/cannon/gravity/src/cannon_deriv_impact.c +++ /dev/null @@ -1,16 +0,0 @@ -/***************************************************************************** -PURPOSE: ( Adding contact) -*****************************************************************************/ -#include "../include/cannon.h" -#include "../include/cannon_contact_proto.h" - -int cannon_deriv_impact( CANNON* C ) -{ - if ( ! C->impact ) { - /* Still above ground and flying */ - C->acc[0] = 0.0 ; - C->acc[1] = -9.81 ; - } - - return 0 ; -} diff --git a/trick_sims/Cannon/models/cannon/gravity/src/cannon_dt.c b/trick_sims/Cannon/models/cannon/gravity/src/cannon_dt.c deleted file mode 100644 index 553aee85..00000000 --- a/trick_sims/Cannon/models/cannon/gravity/src/cannon_dt.c +++ /dev/null @@ -1,34 +0,0 @@ -/***************************************************************************** -PURPOSE: ( Try dt ) -*****************************************************************************/ -#include "../include/cannon.h" -#include "../include/cannon_dt_proto.h" - -int cannon_dt( - CANNON* C ) -{ - double dt ; - double pos0[2] ; - double vel0[2] ; - double acc0[2] ; - - /* This dt matches the frequency of this job */ - dt = 0.01 ; - - /* Save off last state */ - pos0[0] = C->pos[0] ; pos0[1] = C->pos[1] ; - vel0[0] = C->vel[0] ; vel0[1] = C->vel[1] ; - acc0[0] = C->acc[0] ; acc0[1] = C->acc[1] ; - - /* Calculate new state based on last state */ - C->acc[0] = acc0[0] ; - C->acc[1] = acc0[1] ; - - C->vel[0] = vel0[0] + acc0[0]*dt ; - C->vel[1] = vel0[1] + acc0[1]*dt ; - - C->pos[0] = pos0[0] + vel0[0]*dt + (0.5)*acc0[0]*dt*dt ; - C->pos[1] = pos0[1] + vel0[1]*dt + (0.5)*acc0[1]*dt*dt ; - - return 0 ; -}