-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added new system tests GT files for mmoc.
- Loading branch information
1 parent
21bfee7
commit 8fefb8c
Showing
22 changed files
with
4,046 additions
and
0 deletions.
There are no files selected for viewing
710 changes: 710 additions & 0 deletions
710
src/mmoc/tests/system/gt_data/BouncingBall/BouncingBall.c
Large diffs are not rendered by default.
Oops, something went wrong.
226 changes: 226 additions & 0 deletions
226
src/mmoc/tests/system/gt_data/BouncingBall/BouncingBall.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
15
src/mmoc/tests/system/gt_data/BouncingBall/BouncingBall.ini
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
69
src/mmoc/tests/system/gt_data/BouncingBall/BouncingBall.mo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; |
Oops, something went wrong.