Skip to content

Commit

Permalink
Added new system tests GT files for mmoc.
Browse files Browse the repository at this point in the history
  • Loading branch information
joaquinffernandez committed Jun 1, 2023
1 parent 21bfee7 commit 8fefb8c
Show file tree
Hide file tree
Showing 22 changed files with 4,046 additions and 0 deletions.
710 changes: 710 additions & 0 deletions src/mmoc/tests/system/gt_data/BouncingBall/BouncingBall.c

Large diffs are not rendered by default.

226 changes: 226 additions & 0 deletions src/mmoc/tests/system/gt_data/BouncingBall/BouncingBall.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
// Model data access macro.

#define MODEL_DATA_ACCESS(m) \
double* x = m->x; \
double* d = m->d; \
double* a = m->alg;

// Coeff multipliers definition.

#define COEFF_MULTIPLIER(c) COEFF_MULTIPLIER_##c
#define COEFF_MULTIPLIER_0 1
#define COEFF_MULTIPLIER_1 1
#define COEFF_MULTIPLIER_2 2
#define COEFF_MULTIPLIER_3 6

// Model Variables Macros

// Macros definition for variable: _event_1
#define _idx_event_1 0
#define _eval_event_1 0

// Macros definition for variable: _event_2
#define _idx_event_2 1
#define _eval_event_2 1

// Macros definition for variable: _event_3
#define _idx_event_3 2
#define _eval_event_3 2

// Macros definition for variable: _out_exp_1
#define _idx_out_exp_1 0
#define _eval_out_exp_1 0

// Macros definition for variable: ball1_flange1_f
#define _idx_ball1_flange1_f(coeff) 12
#define _state_idx_ball1_flange1_f(coeff) 12*4 + coeff
#define _ball1_flange1_f(coeff) a[_state_idx_ball1_flange1_f(coeff)]

// Macros definition for variable: ball1_flange1_s
#define _idx_ball1_flange1_s(coeff) 3
#define _state_idx_ball1_flange1_s(coeff) 3*4 + coeff
#define _ball1_flange1_s(coeff) a[_state_idx_ball1_flange1_s(coeff)]

// Macros definition for variable: ball1_flange1_v
#define _idx_ball1_flange1_v(coeff) 2
#define _state_idx_ball1_flange1_v(coeff) 2*4 + coeff
#define _ball1_flange1_v(coeff) a[_state_idx_ball1_flange1_v(coeff)]

// Macros definition for variable: ball1_g
#define _ball1_g __PAR__ball1_g

// Macros definition for variable: ball1_m
#define _ball1_m __PAR__ball1_m

// Macros definition for variable: ball1_v
#define _idx_ball1_v(coeff) 1
#define _state_idx_ball1_v(coeff) 1*4 + coeff
#define _ball1_v(coeff) x[_state_idx_ball1_v(coeff)] * COEFF_MULTIPLIER(coeff)
#define _init_ball1_v(coeff) x[_state_idx_ball1_v(coeff)]
#define _q_ball1_v(coeff) q[_state_idx_ball1_v(coeff)] * COEFF_MULTIPLIER(coeff)
#define _eval_ball1_v(coeff) 1
#define _eval_dep_ball1_v(coeff) dx[_state_idx_ball1_v(coeff)]

// Macros definition for variable: ball1_y
#define _idx_ball1_y(coeff) 0
#define _state_idx_ball1_y(coeff) 0*4 + coeff
#define _ball1_y(coeff) x[_state_idx_ball1_y(coeff)] * COEFF_MULTIPLIER(coeff)
#define _init_ball1_y(coeff) x[_state_idx_ball1_y(coeff)]
#define _q_ball1_y(coeff) q[_state_idx_ball1_y(coeff)] * COEFF_MULTIPLIER(coeff)
#define _eval_ball1_y(coeff) 0
#define _eval_dep_ball1_y(coeff) dx[_state_idx_ball1_y(coeff)]

// Macros definition for variable: d0
#define _idx_d0 0
#define _d0 d[_idx_d0]

// Macros definition for variable: d1
#define _idx_d1 1
#define _d1 d[_idx_d1]

// Macros definition for variable: fixed1_flange1_f
#define _idx_fixed1_flange1_f(coeff) 13
#define _state_idx_fixed1_flange1_f(coeff) 13*4 + coeff
#define _fixed1_flange1_f(coeff) a[_state_idx_fixed1_flange1_f(coeff)]

// Macros definition for variable: fixed1_flange1_s
#define _idx_fixed1_flange1_s(coeff) 0
#define _state_idx_fixed1_flange1_s(coeff) 0*4 + coeff
#define _fixed1_flange1_s(coeff) a[_state_idx_fixed1_flange1_s(coeff)]

// Macros definition for variable: fixed1_flange1_v
#define _idx_fixed1_flange1_v(coeff) 1
#define _state_idx_fixed1_flange1_v(coeff) 1*4 + coeff
#define _fixed1_flange1_v(coeff) a[_state_idx_fixed1_flange1_v(coeff)]

// Macros definition for variable: fixed1_s0
#define _fixed1_s0 __PAR__fixed1_s0

// Macros definition for variable: spring1_b
#define _spring1_b __PAR__spring1_b

// Macros definition for variable: spring1_dv
#define _idx_spring1_dv(coeff) 8
#define _state_idx_spring1_dv(coeff) 8*4 + coeff
#define _spring1_dv(coeff) a[_state_idx_spring1_dv(coeff)]

// Macros definition for variable: spring1_dy
#define _idx_spring1_dy(coeff) 9
#define _state_idx_spring1_dy(coeff) 9*4 + coeff
#define _spring1_dy(coeff) a[_state_idx_spring1_dy(coeff)]

// Macros definition for variable: spring1_flange1_f
#define _idx_spring1_flange1_f(coeff) 10
#define _state_idx_spring1_flange1_f(coeff) 10*4 + coeff
#define _spring1_flange1_f(coeff) a[_state_idx_spring1_flange1_f(coeff)]

// Macros definition for variable: spring1_flange1_s
#define _idx_spring1_flange1_s(coeff) 6
#define _state_idx_spring1_flange1_s(coeff) 6*4 + coeff
#define _spring1_flange1_s(coeff) a[_state_idx_spring1_flange1_s(coeff)]

// Macros definition for variable: spring1_flange1_v
#define _idx_spring1_flange1_v(coeff) 7
#define _state_idx_spring1_flange1_v(coeff) 7*4 + coeff
#define _spring1_flange1_v(coeff) a[_state_idx_spring1_flange1_v(coeff)]

// Macros definition for variable: spring1_flange2_f
#define _idx_spring1_flange2_f(coeff) 11
#define _state_idx_spring1_flange2_f(coeff) 11*4 + coeff
#define _spring1_flange2_f(coeff) a[_state_idx_spring1_flange2_f(coeff)]

// Macros definition for variable: spring1_flange2_s
#define _idx_spring1_flange2_s(coeff) 4
#define _state_idx_spring1_flange2_s(coeff) 4*4 + coeff
#define _spring1_flange2_s(coeff) a[_state_idx_spring1_flange2_s(coeff)]

// Macros definition for variable: spring1_flange2_v
#define _idx_spring1_flange2_v(coeff) 5
#define _state_idx_spring1_flange2_v(coeff) 5*4 + coeff
#define _spring1_flange2_v(coeff) a[_state_idx_spring1_flange2_v(coeff)]

// Macros definition for variable: spring1_k
#define _spring1_k __PAR__spring1_k


// Model Parameters Declaration

// Macro for parameter: ball1_g
double __PAR__ball1_g;
// Macro for parameter: ball1_m
double __PAR__ball1_m;
// Macro for parameter: fixed1_s0
double __PAR__fixed1_s0;
// Macro for parameter: spring1_b
double __PAR__spring1_b;
// Macro for parameter: spring1_k
double __PAR__spring1_k;

// Derivative Equations Macros

// Macros for equation: 1

// Macros for equation: 2


// Algebraic Equations Macros

// Macros for algebraic equation: 1

// Macros for algebraic equation: 2

// Macros for algebraic equation: 3

// Macros for algebraic equation: 4

// Macros for algebraic equation: 5

// Macros for algebraic equation: 6

// Macros for algebraic equation: 7

// Macros for algebraic equation: 8

// Macros for algebraic equation: 9

// Macros for algebraic equation: 10

// Macros for algebraic equation: 11

// Macros for algebraic equation: 12

// Macros for algebraic equation: 13

// Macros for algebraic equation: 14


// Event Macros

// Macros for event: 1

// Macros for event: 2

// Macros for event: 3

#define _zc(coeff) zc[coeff]

// Output Equations Macros

// Macros for output equation: 1

#define _out out[0]

// Jacobian Macros definition.
#define _assign_jac(r, val) \
col_t = dvdx->df_dx_t->size[r] + dvdx->df_dx_t->index[r][0]; \
dvdx->df_dx_t->index[r][0]++; \
jac[col_t] = val;
#define _c_index(i) (i-1)

#define _time t

// Derivative Macros definition.
// Derivative definition for variable: ball1_v
#define _der_ball1_v(coeff) dx[coeff+1]
// Derivative definition for variable: ball1_y
#define _der_ball1_y(coeff) dx[coeff+1]
15 changes: 15 additions & 0 deletions src/mmoc/tests/system/gt_data/BouncingBall/BouncingBall.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
minstep=1.00000e-14;
zchyst=1.00000e-12;
derdelta=1.00000e-08;
symdiff=1;
lps=0;
nodesize=10000;
jacobian=1;
it=0.00000e+00;
ft=1.00000e+01;
sol="LIQSS3";
dqmin=(1.00000e-06);
dqrel=(1.00000e-03);
bdf=0;
BDFPartitionDepth=1;
BDFMaxStep=0.00000e+00;
69 changes: 69 additions & 0 deletions src/mmoc/tests/system/gt_data/BouncingBall/BouncingBall.mo
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
model BouncingBall
Real spring1_flange1_f;
Real spring1_flange1_s;
Real spring1_flange1_v;
Real spring1_flange2_f;
Real spring1_flange2_s;
Real spring1_flange2_v;
Real spring1_dy;
Real spring1_dv;
parameter Real spring1_b=10;
parameter Real spring1_k=10000;
Real fixed1_flange1_f;
Real fixed1_flange1_s;
Real fixed1_flange1_v;
parameter Real fixed1_s0=0;
Real ball1_flange1_f;
Real ball1_flange1_s;
Real ball1_flange1_v;
Real ball1_v;
parameter Real ball1_m=1;
parameter Real ball1_g=9.8;
Real ball1_y(start=10);
discrete Real d0;
discrete Real d1;
equation
fixed1_flange1_s = fixed1_s0;
fixed1_flange1_v = 0;
der(ball1_y) = ball1_v;
ball1_flange1_v = ball1_v;
ball1_flange1_s = ball1_y;
spring1_flange2_s = fixed1_flange1_s;
spring1_flange2_v = fixed1_flange1_v;
spring1_flange1_s = ball1_flange1_s;
spring1_flange1_v = ball1_flange1_v;
spring1_dv = spring1_flange1_v-spring1_flange2_v;
spring1_dy = spring1_flange1_s-spring1_flange2_s;
spring1_flange1_f = d0*(spring1_b*spring1_dv+spring1_k*spring1_dy)+(1-d0)*(0);
spring1_flange2_f = (((-spring1_flange1_f)));
ball1_flange1_f = (-spring1_flange1_f);
der(ball1_v) = (ball1_flange1_f-ball1_m*ball1_g)*(1/(ball1_m));
fixed1_flange1_f = (-spring1_flange2_f);
algorithm
when spring1_dy<0 then
d0:=1;
elsewhen spring1_dy>=0 then
d0:=0;
end when;
when d0>0 then
d1:=1;
elsewhen d0<1 then
d1:=0;
end when;
annotation(
experiment(
MMO_Description="",
MMO_Solver=LIQSS3,
MMO_PartitionMethod=Metis,
MMO_Output={ball1_y},
MMO_OutputType=CI_Sampled,
Jacobian=Dense,
MMO_BDF_PDepth=1,
MMO_BDF_Max_Step=0,
StartTime=0.0,
StopTime=10,
Tolerance={1e-3},
AbsTolerance={1e-6}
));
end BouncingBall;
Loading

0 comments on commit 8fefb8c

Please sign in to comment.