Skip to content

Commit 725e4b5

Browse files
committed
Zhong model
Not finished, I will debug it tomorrow
1 parent 9d302cb commit 725e4b5

File tree

4 files changed

+111
-0
lines changed

4 files changed

+111
-0
lines changed

epidemic_zhong_et_al/sirs_zhong.ma

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#include(sirs_zhong_macros.inc)
2+
[top]
3+
components : area
4+
5+
[area]
6+
type : cell
7+
width : 50
8+
height : 50
9+
delay : transport
10+
defaultDelayTime : 1
11+
border : wrapped
12+
neighbors : area(-1,0)
13+
neighbors : area(0,-1) area(0,0) area(0,1)
14+
neighbors : area(1,0)
15+
initialvalue : -1
16+
17+
18+
localtransition : sirs-zhong-rule
19+
20+
statevariables: population area p contact_rate cured_rate t_i t_p t_l t_r i_sus_0 i_inc_1 i_inc_2 i_inf_3 i_inf_4 i_lat_5 i_lat_6 i_rec_7 i_rec8 i_rec9
21+
statevalues: 100 1 1000 0.5 0.02 2 2 2 3 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
22+
initialvariablesvalue: sirs_zhong.var
23+
24+
neighborports : initial sus_0 inc_1 inc_2 inf_3 inf_4 lat_5 lat_6 rec_7 rec_8 rec_9 pop
25+
26+
[sirs-zhong-rule]
27+
rule : {~initial := 0; ~pop := $population; ~sus_0 := $i_sus_0; ~inc_1 := $i_inc_1; ~inc_2 := $i_inc_2; ~inf_3 := $i_inf_3; ~inf_4 := $i_inf_4; ~lat_5 := $i_lat_5; ~lat_6 := $i_lat_6; ~rec_7 := $i_rec_7; ~rec_8 := $i_rec_8; ~rec_9 := $i_rec_9;}
28+
1 {(0,0)~initial = -1}
29+
30+
rule : {
31+
~pop := $population; ~sus_0 := $i_sus_0; ~inc_1 := $i_inc_1; ~inc_2 := $i_inc_2; ~inf_3 := $i_inf_3; ~inf_4 := $i_inf_4; ~lat_5 := $i_lat_5; ~lat_6 := $i_lat_6; ~rec_7 := $i_rec_7; ~rec_8 := $i_rec_8; ~rec_9 := $i_rec_9;
32+
}
33+
{
34+
$i_rec_9 := $i_rec_8;
35+
$i_rec_8 := $i_rec_9;
36+
$i_rec_7 := $i_lat_6 + #macro(local_cured);
37+
38+
$i_lat_6 := trunc(min((1 - $cured_rate) * $i_lat_5, 1)*100)/100;
39+
$i_lat_5 := trunc(min((1 - $cured_rate) * $i_inf_4, 1)*100)/100;
40+
$i_inf_4 := trunc(min((1 - $cured_rate) * $i_inf_3, 1)*100)/100;
41+
$i_inf_3 := trunc(min((1 - $cured_rate) * $i_inc_2, 1)*100)/100;
42+
$i_inc_2 := trunc(min((1 - $cured_rate) * $i_inc_1, 1)*100)/100;
43+
$i_inc_1 := #macro(internal_infected) + #macro(external_infected);
44+
45+
$i_sus_0 := 1 - $i_inc_1 - $i_inc_2 - $i_inf_3 - $i_inf_4 - $i_lat_5 - $i_lat_6 - $i_rec_7 - $i_rec8 - $i_rec9;
46+
47+
}
48+
1 { (0,0)~initial != -1 }
49+
50+
51+
52+
53+
54+
55+
56+
57+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[-100; -0.001] 255 0 0
2+
[0; 0.200] 0 0 0
3+
[0.201; 0.400] 50 50 50
4+
[0.401; 0.600] 100 100 100
5+
[0.601; 0.800] 150 150 150
6+
[0.801; 1.00] 200 200 200
7+
[1.001;100] 255 0 0
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
(25,25) = 100 1 1000 0.5 0.02 2 2 2 3 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
2+
#BeginMacro(local_cured)
3+
(( trunc(min($cured_rate * $i_lat_5, 1)*100) +
4+
trunc(min($cured_rate * $i_inf_4, 1)*100) +
5+
trunc(min($cured_rate * $i_inf_3, 1)*100) +
6+
trunc(min($cured_rate * $i_inc_2, 1)*100) +
7+
trunc(min($cured_rate * $i_inc_1, 1)*100) ) / 100 )
8+
#EndMacro
9+
10+
#BeginMacro(internal_infected)
11+
( truncate(min(( $contact_rate *
12+
((%i_sus_0 * $population) / $area) *
13+
%i_sus_0 *
14+
($i_lat_6 + $i_lat_5 + $i_inf_4 + $i_inf_3 + $i_incv_2 + $i_inc_1)
15+
) / $p, 1)*100) / 100 )
16+
#EndMacro
17+
18+
#BeginMacro(external_infected)
19+
( truncate(min(( $connection *
20+
$contact_rate *
21+
((%i_sus_0 * $population) / $area) *
22+
%i_sus_0 *
23+
((1,0)~lat_6 + (1,0)~lat_5 + (1,0)~inf_4 + (1,0)~inf_3 + (1,0)~inc_2 + (1,0)~inc_1)
24+
) / $p, 1)*100) / 100 )
25+
+
26+
( truncate(min(( $connection *
27+
$contact_rate *
28+
((%i_sus_0 * $population) / $area) *
29+
%i_sus_0 *
30+
((0,-1)~lat_6 + (0,-1)~lat_5 + (0,-1)~inf_4 + (0,-1)~inf_3 + (0,-1)~inc_2 + (0,-1)~inc_1)
31+
) / $p, 1)*100) / 100 )
32+
+
33+
( truncate(min(( $connection *
34+
$contact_rate *
35+
((%i_sus_0 * $population) / $area) *
36+
%i_sus_0 *
37+
((0,1)~lat_6 + (0,1)~lat_5 + (0,1)~inf_4 + (0,1)~inf_3 + (0,1)~inc_2 + (0,1)~inc_1)
38+
) / $p, 1)*100) / 100 )
39+
+
40+
( truncate(min(( $connection *
41+
$contact_rate *
42+
((%i_sus_0 * $population) / $area) *
43+
%i_sus_0 *
44+
((-1,0)~lat_6 + (-1,0)~lat_5 + (-1,0)~inf_4 + (-1,0)~inf_3 + (-1,0)~inc_2 + (-1,0)~inc_1)
45+
) / $p, 1)*100) / 100 )
46+
#EndMacro

0 commit comments

Comments
 (0)