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 "parit_c.inc"
57#include "task_c.inc"
58#include "sms_c.inc"
59
60
61
62 INTEGER JLT, NIN, NOINT, CS_LOC(*),
63 . N1(MVSIZ), N2(MVSIZ), M1(MVSIZ), M2(MVSIZ),
64 . NSMS(*), ISKYI_SMS(LSKYI_SMS,*), NRTS
66 . hs1(mvsiz),hs2(mvsiz),hm1(mvsiz),hm2(mvsiz),stif(mvsiz),
67 . mskyi_sms(*), k1(mvsiz), k2(mvsiz), k3(mvsiz), k4(mvsiz),
68 . c1(mvsiz), c2(mvsiz), c3(mvsiz), c4(mvsiz)
69
70
71
72 INTEGER I, IG, NISKYL1, NISKYL, NN
74 . mas1, mas2, mas3, mas4, dts
75
76
77 niskyl1 = 0
78 DO i=1,jlt
79 IF(nsms(i)==0.OR.stif(i)==zero) cycle
80 IF (hm1(i)/=zero) niskyl1 = niskyl1 + 2
81 IF (hm2(i)/=zero) niskyl1 = niskyl1 + 2
82 ENDDO
83#include "lockon.inc"
84 niskyl = nisky_sms
85 nisky_sms = nisky_sms + niskyl1
86#include "lockoff.inc"
87
88 IF (niskyl+niskyl1 > lskyi_sms) THEN
89 CALL ancmsg(msgid=26,anmode=aninfo)
91 ENDIF
92
93 DO i=1,jlt
94 IF(nsms(i)==0.OR.stif(i)==zero) cycle
95
96 IF(nsms(i)>0)THEN
97 dts = dtmins/dtfacs
98 ELSE
99 dts = dtmins_int/dtfacs_int
100 END IF
101
102 mas1= half * dts * ( dts * k1(i) + c1(i) )
103 mas2= half * dts * ( dts * k2(i) + c2(i) )
104 mas3= half * dts * ( dts * k3(i) + c3(i) )
105 mas4= half * dts * ( dts * k4(i) + c4(i) )
106
107 IF(cs_loc(i)<=nrts) THEN
108 IF(hm1(i)/=zero)THEN
109 niskyl=niskyl+1
110 mskyi_sms(niskyl)=
max(mas1,mas3)
111 iskyi_sms(niskyl,1)=n1(i)
112 iskyi_sms(niskyl,2)=m1(i)
113 iskyi_sms(niskyl,3)=ispmd+1
114 niskyl=niskyl+1
115 mskyi_sms(niskyl)=
max(mas2,mas3)
116 iskyi_sms(niskyl,1)=n2(i)
117 iskyi_sms(niskyl,2)=m1(i)
118 iskyi_sms(niskyl,3)=ispmd+1
119 END IF
120 IF(hm2(i)/=zero)THEN
121 niskyl=niskyl+1
122 mskyi_sms(niskyl)=
max(mas1,mas4)
123 iskyi_sms(niskyl,1)=n1(i)
124 iskyi_sms(niskyl,2)=m2(i)
125 iskyi_sms(niskyl,3)=ispmd+1
126 niskyl=niskyl+1
127 mskyi_sms(niskyl)=
max(mas2,mas4)
128 iskyi_sms(niskyl,1)=n2(i)
129 iskyi_sms(niskyl,2)=m2(i)
130 iskyi_sms(niskyl,3)=ispmd+1
131 END IF
132 ELSE
133 IF(hm1(i)/=zero)THEN
134 niskyl=niskyl+1
135 mskyi_sms(niskyl)=
max(mas1,mas3)
137 iskyi_sms(niskyl,2)=m1(i)
139 niskyl=niskyl+1
140 mskyi_sms(niskyl)=
max(mas2,mas3)
141 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n2(i))
142 iskyi_sms(niskyl,2)=m1(i)
144 END IF
145 IF(hm2(i)/=zero)THEN
146 niskyl=niskyl+1
147 mskyi_sms(niskyl)=
max(mas1,mas4)
148 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n1(i))
149 iskyi_sms(niskyl,2)=m2(i)
151 niskyl=niskyl+1
152 mskyi_sms(niskyl)=
max(mas2,mas4)
153 iskyi_sms(niskyl,1)=
nodamsfie(nin)%P(n2(i))
154 iskyi_sms(niskyl,2)=m2(i)
156 END IF
157 END IF
158 ENDDO
159
160 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)