39
40
41
44
45
46
47#include "implicit_f.inc"
48#include "comlock.inc"
49
50
51
52#include "mvsiz_p.inc"
53
54
55
56#include "assert.inc"
57#include "parit_c.inc"
58#include "task_c.inc"
59#include "sms_c.inc"
60
61
62
63 INTEGER, INTENT(IN) :: EDGE_ID(2,4*MVSIZ)
64 INTEGER JLT, NIN, NOINT, CS_LOC(*),
65 . N1(*), N2(*), M1(*), M2(*),
66 . NSMS(4*MVSIZ), ISKYI_SMS(LSKYI_SMS,*), NEDGE
68 . hs1(*),hs2(*),hm1(*),hm2(*),stif(*), mskyi_sms(*),
69 . k1(*), k2(*), k3(*), k4(*),
70 . c1(*), c2(*), c3(*), c4(*)
71
72
73
74 INTEGER I, IG, NISKYL1, NISKYL, NN
76 . mas1, mas2, mas3, mas4, dts
77
78
79 niskyl1 = 0
80 DO i=1,jlt
81 IF(nsms(i)==0.OR.stif(i)==zero) cycle
82 IF (hm1(i)/=zero) niskyl1 = niskyl1 + 2
83 IF (hm2(i)/=zero) niskyl1 = niskyl1 + 2
84 ENDDO
85#include "lockon.inc"
86 niskyl = nisky_sms
87 nisky_sms = nisky_sms + niskyl1
88#include "lockoff.inc"
89
90 IF (niskyl+niskyl1 > lskyi_sms) THEN
91 CALL ancmsg(msgid=26,anmode=aninfo)
93 ENDIF
94
95 DO i=1,jlt
96 debug_e2e(edge_id(1,i)==d_em .AND. edge_id(2,i) == d_es,nsms(i))
97
98 IF(nsms(i)==0.OR.stif(i)==zero) cycle
99
100 IF(nsms(i)>0)THEN
101 assert(dtfacs > 0)
102 dts = dtmins/dtfacs
103 ELSE
104 dts = dtmins_int/dtfacs_int
105 END IF
106
107 mas1= half * dts * ( dts * k1(i) + c1(i) )
108 mas2= half * dts * ( dts * k2(i) + c2(i) )
109 mas3= half * dts * ( dts * k3(i) + c3(i) )
110 mas4= half * dts * ( dts * k4(i) + c4(i) )
111
112 IF(cs_loc(i)<=nedge) THEN
113 IFTHEN
114 niskyl=niskyl+1
115 mskyi_sms(niskyl)=
max(mas1,mas3)
116 iskyi_sms(niskyl,1)=n1(i)
117 iskyi_sms(niskyl,2)=m1(i)
118 iskyi_sms(niskyl,3)=ispmd+1
119 niskyl=niskyl+1
120 mskyi_sms(niskyl)=
max(mas2,mas3)
121 iskyi_sms(niskyl,1)=n2(i)
122 iskyi_sms(niskyl,2)=m1(i)
123 iskyi_sms(niskyl,3)=ispmd+1
124 END IF
125 IF(hm2(i)/=zero)THEN
126 niskyl=niskyl+1
127 mskyi_sms(niskyl)=
max(mas1,mas4)
128 iskyi_sms(niskyl,1)=n1(i)
129 iskyi_sms(niskyl,2)=m2(i)
130 iskyi_sms(niskyl,3)=ispmd+1
131 niskyl=niskyl+1
132 mskyi_sms(niskyl)=
max(mas2,mas4)
133 iskyi_sms(niskyl,1)=n2(i)
134 iskyi_sms(niskyl,2)=m2(i)
135 iskyi_sms(niskyl,3)=ispmd+1
136 END IF
137 ELSE
138 IF(hm1(i)/=zero)THEN
139 niskyl=niskyl+1
140 mskyi_sms(niskyl)=
max(mas1,mas3)
141 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n1(i))
142 iskyi_sms(niskyl,2)=m1(i)
144 niskyl=niskyl+1
145 mskyi_sms(niskyl)=
max(mas2,mas3)
146 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n2(i))
147 iskyi_sms(niskyl,2)=m1(i)
149 END IF
150 IF(hm2(i)/=zero)THEN
151 niskyl=niskyl+1
152 mskyi_sms(niskyl)=
max(mas1,mas4)
153 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n1(i))
154 iskyi_sms(niskyl,2)=m2(i)
156 niskyl=niskyl+1
157 mskyi_sms(niskyl)=
max(mas2,mas4)
158 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n2(i))
159 iskyi_sms(niskyl,2)=m2(i)
161 END IF
162 END IF
163 ENDDO
164
165 RETURN
type(int_pointer), dimension(:), allocatable procamsfie
type(int_pointer), dimension(:), allocatable nodamsfie
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)