40
41
42
45
46
47
48#include "implicit_f.inc"
49#include "comlock.inc"
50
51
52
53#include "mvsiz_p.inc"
54
55
56
57#include "parit_c.inc"
58#include "task_c.inc"
59#include "sms_c.inc"
60
61
62
63 INTEGER JLT,NIN,NOINT,
64 . IX1(MVSIZ),IX2(MVSIZ),IX3(MVSIZ),IX4(MVSIZ),NSVG(MVSIZ),
65 . NSMS(*), ISKYI_SMS(LSKYI_SMS,*)
67 . h1(mvsiz),h2(mvsiz),h3(mvsiz),h4(mvsiz),stif(mvsiz),
68 . mskyi_sms(*), kt(mvsiz), c(mvsiz), cf(mvsiz), dtmini, dti
69
70
71
72 INTEGER I, IG, NISKYL1, NISKYL, NN
74 . mas, dts,dtm_int
75
76
77 niskyl1 = 0
78 DO i=1,jlt
79 IF(nsms(i)==0.OR.stif(i)==zero) cycle
80 IF (h1(i)/=zero) niskyl1 = niskyl1 + 1
81 IF (h2(i)/=zero) niskyl1 = niskyl1 + 1
82 IF (h3(i)/=zero) niskyl1 = niskyl1 + 1
83 IF (h4(i)/=zero) niskyl1 = niskyl1 + 1
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 IF (dtmini>zero) THEN
96 dtm_int=dtmini
97 ELSE
98 dtm_int=dtmins_int
99 ENDIF
100
101 DO i=1,jlt
102 IF(nsms(i)==0.OR.stif(i)==zero) cycle
103
104 IF(nsms(i)>0)THEN
105 dts = dtmins/dtfacs
107 ELSE
108 dts = dtm_int/dtfacs_int
110 END IF
111
112 mas= dts * ( dts * kt(i) + c(i) )
113 mas = half *
max( mas, dts * cf(i) )
114
115 ig =nsvg(i)
116 IF(ig > 0)THEN
117 IF(h1(i)/=zero)THEN
118 niskyl=niskyl+1
119 mskyi_sms(niskyl)=abs(h1(i))*mas
120 iskyi_sms(niskyl,1)=ig
121 iskyi_sms(niskyl,2)=ix1(i)
122 iskyi_sms(niskyl,3)=ispmd+1
123 END IF
124 IF(h2(i)/=zero)THEN
125 niskyl=niskyl+1
126 mskyi_sms(niskyl)=abs(h2(i))*mas
127 iskyi_sms(niskyl,1)=ig
128 iskyi_sms(niskyl,2)=ix2(i)
129 iskyi_sms(niskyl,3)=ispmd+1
130 END IF
131 IF(h3(i)/=zero)THEN
132 niskyl=niskyl+1
133 mskyi_sms(niskyl)=abs(h3(i))*mas
134 iskyi_sms(niskyl,1)=ig
135 iskyi_sms(niskyl,2)=ix3(i)
136 iskyi_sms(niskyl,3)=ispmd+1
137 END IF
138 IF(h4(i)/=zero)THEN
139 niskyl=niskyl+1
140 mskyi_sms(niskyl)=abs(h4(i))*mas
141 iskyi_sms(niskyl,1)=ig
142 iskyi_sms(niskyl,2)=ix4(i)
143 iskyi_sms(niskyl,3)=ispmd+1
144 END IF
145 ELSE
146 nn = -ig
147 IF(h1(i)/=zero)THEN
148 niskyl=niskyl+1
149 mskyi_sms(niskyl)=abs(h1(i))*mas
150 iskyi_sms(niskyl,1)=
nodamsfi(nin)%P(nn)
151 iskyi_sms(niskyl,2)=ix1(i)
153 END IF
154 IF(h2(i)/=zero)THEN
155 niskyl=niskyl+1
156 mskyi_sms(niskyl)=abs(h2(i))*mas
157 iskyi_sms(niskyl,1)=
nodamsfi(nin)%P(nn)
158 iskyi_sms(niskyl,2)=ix2(i)
160 END IF
161 IF(h3(i)/=zero)THEN
162 niskyl=niskyl+1
163 mskyi_sms(niskyl)=abs(h3(i))*mas
164 iskyi_sms(niskyl,1)=
nodamsfi(nin)%P(nn)
165 iskyi_sms(niskyl,2)=ix3(i)
167 END IF
168 IF(h4(i)/=zero)THEN
169 niskyl=niskyl+1
170 mskyi_sms(niskyl)=abs(h4(i))*mas
171 iskyi_sms(niskyl,1)=
nodamsfi(nin)%P(nn)
172 iskyi_sms(niskyl,2)=ix4(i)
174 END IF
175 END IF
176 ENDDO
177
178 RETURN
type(int_pointer), dimension(:), allocatable nodamsfi
type(int_pointer), dimension(:), allocatable procamsfi
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)