#define alphax 0.0204 #define alphay 0.0246 #define betax 0.02 #define betay 0.0158 #define k1 7.0 #define k2 1.0 #define k3 7.0 #define k4 2 #define m1 0.00005 #define z0 9.0 #define gamma 0.08 //#define r1 10.0 //#define r0 4.0 #define d0 1.0 #define c1 0.0121 #define c2 0.06 #define c3 0.02 #define Gx ((alphax/(1+exp((k1-z)*k2)))-(betax/(1+exp((z-k3)*k4)))) #define Gy ((alphay * (1 - (d0 * (z / z0)))) - betay) #define Mxy (m1 * (1 - (z / z0))) #define scale 1.0 #define T 365.0 [0, 365.0] time; [0, T] tau; [0.0, 35.0] x; [0.0, 10.0] y; [0.0, 20.0] z; [0.0, 7.99] r0; [8.0, 15.0] r1; {mode 1; invt: (x >= 0.0); (x <= 35); (y >= 0.0); (y <= 10); (z >= 0.0); (z <= 20); (r0 >= 0.0); (r0 <= 7.99); (r1 >= 8.0); (r1 <= 15.0); (tau >= 0.0); (tau <= T); flow: d/dt[r0] = 0; d/dt[r1] = 0; d/dt[x] = scale * ((Gx - Mxy - c1) * x + c2); d/dt[y] = scale * (Mxy * x + Gy * y); d/dt[z] = scale * (-z * gamma + c3); d/dt[tau] = scale * 1.0; jump: ((x+y)=r0) ==> @2 (and (tau' = tau) (x' = x) (y'= y) (z' = z)); } {mode 2; invt: (x >= 0.0); (x <= 35); (y >= 0.0); (y <= 10); (z >= 0.0); (z <= 20); (r0 >= 0.0); (r0 <= 7.99); (r1 >= 8.0); (r1 <= 15.0); (tau >= 0.0); (tau <= T); flow: d/dt[r0] = 0; d/dt[r1] = 0; d/dt[x] = scale * ((Gx - Mxy - c1) * x + c2); d/dt[y] = scale * (Mxy * x + Gy * y); d/dt[z] = scale * ((z0 - z) * gamma + c3); d/dt[tau] = scale * 1.0; jump: ((x+y)=r1) ==> @1 (and (tau' = tau) (x' = x) (y'= y) (z' = z)); } init: @1 (and (x = 28.9) (y = 0.8) (z = 7.7) (r0 >= 0.0) (r0 <= 7.99) (r1 >= 8.0) (r0 <= 15.0) (tau = 0)); goal: @1 (and (x >= 0.0) (x <= 30.0) (y >= 0.0) (y <= 10.0) (z >= 0.0) (z <= 20.0) (r0 >= 0.0) (r0 <= 7.99) (r1 >= 8.0) (r0 <= 15.0) (tau = T));