Overview
Comment:Split up the three if conditions on the switch and state value into
three separate ifs. This is because p2c seems to generate incorrect
code id just the one if is used (???).
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | origin/master | trunk
Files: files | file ages | folders
SHA3-256: b672998af4fca5b0402674d02cca2dd665e142835595626d4b1dae78f270128e
User & Date: gawthrop@users.sourceforge.net on 1998-10-01 18:20:50
Other Links: branch diff | manifest | tags
Context
1998-10-01
19:20:33
Cahged switch function check-in: e44ea9f4c9 user: gawthrop@users.sourceforge.net tags: origin/master, trunk
18:20:50
Split up the three if conditions on the switch and state value into
three separate ifs. This is because p2c seems to generate incorrect
code id just the one if is used (???).
check-in: b672998af4 user: gawthrop@users.sourceforge.net tags: origin/master, trunk
16:11:42
Implicit integration now handles switches check-in: c85f34cdf7 user: gawthrop@users.sourceforge.net tags: origin/master, trunk
Changes

Modified mttroot/mtt/bin/trans/switch_txt2m from [4e64889fa4] to [9166ff4a04].

12
13
14
15
16
17
18



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44






45
46
47
48

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64











65
66
67
68
69
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36



37
38
39
40
41

42
43
44
45
46
47
48
49
50
51
52

53
54
55
56
57
58
59
60
61

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84







+
+
+















-
-
-





-


+
+
+
+
+
+



-
+








-







+
+
+
+
+
+
+
+
+
+
+







###############################################################
## Version control history
###############################################################
## $Id$
## $Log$
## Revision 1.5  1998/10/01 16:05:34  peterg
## Separate switch.m file for euler and implicit integration
##
###############################################################


echo Creating  $1_switch.m
echo Creating  $1_switcha.m

# Find system constants
Nx=`grep "MTTNx " <$1_def.r | awk '{print $3}' | sed 's/;//'`

#Write some file headers
lang_header $1 switch m 'mttx' '[mttx]' > $1_switch.m

# Set states to zero
awk '{
  if ($1=="#"){
#    printf("for MTTi=1:%s\n", Nx)
#    printf("  mttxs(MTTi) = mttx(MTTi);\n")
#    printf("end;\n\n")
    printf("#== Switches set element of state vector to zero ==#\n")
  }
  else{
  printf("\n#== Switch: %s ==#\n",$1)
  printf("if (%s==0.0) \n", $1);
#  printf("if ((%s==0.0)||((%s<0.0)&&mttx(%s)<=0.0)) \n", $1,$1,$2);
  printf("  mttx(%s)=0.0;\n", $2);
  printf("end;\n");
  printf("if (%s<0.0)\n",$1);
  printf("  if (mttx(%s)<=0.0)\n",$2);
  printf("    mttx(%s)=0.0;\n", $2);
  printf("  end;\n");
  printf("end;\n");

  }
}' Nx=$Nx < $1_switch.txt >> $1_switch.m

# Matrix version
# Implicit integration version
#Write some file headers
lang_header $1 switcha m 'mttAA,mttx' '[mttAA]' > $1_switcha.m
awk '{
  if ($1=="#"){
    printf("#== Switches set row and column of A matrix to zero ==#\n")
  }
  else{
  printf("#== Switch: %s ==#\n",$1)
  #printf("if ((%s==0.0)||((%s<0.0)&&mttx(%s)<=0.0)) \n", $1,$1,$2);
  printf("if (%s==0.0) \n", $1);
  printf("  for  MTTi=1:%s\n",Nx)
  printf("    mttAA(MTTi,%s)=0.0;\n", $2)
  printf("    mttAA(%s,MTTi)=0.0;\n", $2)
  printf("  end;\n");
  printf("  mttAA(%s,%s) = 1.0;\n", $2,$2);
  printf("end;\n\n")

  printf("if (%s<0.0)\n",$1);
  printf("  if (mttx(%s)<=0.0)\n",$2);
  printf("    for  MTTi=1:%s\n",Nx)
  printf("      mttAA(MTTi,%s)=0.0;\n", $2)
  printf("      mttAA(%s,MTTi)=0.0;\n", $2)
  printf("    end;\n");
  printf("    mttAA(%s,%s) = 1.0;\n", $2,$2);
  printf("  end;\n");
  printf("end;\n");

  }
}' Nx=$Nx < $1_switch.txt >> $1_switcha.m




MTT: Model Transformation Tools
GitHub | SourceHut | Sourceforge | Fossil RSS ]