38 use element_mod , only : nixs
39
40
41
42#include "implicit_f.inc"
43#include "comlock.inc"
44
45
46
47#include "units_c.inc"
48#include "warn_c.inc"
49#include "com01_c.inc"
50#include "com04_c.inc"
51#include "com08_c.inc"
52#include "task_c.inc"
53
54
55
56 INTEGER NME, NSN, NOINT,ITASK,MX_CAND,
57 . ESH_T, I_STOK_GLOB
58 INTEGER CAND_E(*),CAND_N(*),IXS(NIXS,*),IXS16(8,*),
59 . NSV(*),MWA(*),NELEM(*),IXS20(12,*),IXS10(6,*)
60
61 my_real
62 . TZINF,MINBOX
63 my_real
64 . X(3,*),EMINX(6,*),XSAV(3,*),V(3,*) ,A(3,*)
65
66
67
68
69 INTEGER I, J, K, CONT,NB_N_B ,NSNF,NSNL,
70 . IP1, IP2, IP21, IP22, IP31, MAXSIZ,
71 . NE,N8,N10,N20,N16
72
73
74
75 IF (DEBUG(3)>=1) THEN
76#include "lockon.inc"
77 WRITE(ISTDO,*)'** NEW SORT FOR INTERFACE NUMBER ',NOINT,
78 . ' AT CYCLE ',NCYCLE
79 WRITE(IOUT,*)'** NEW SORT FOR INTERFACE NUMBER ',NOINT,
80 . ' AT CYCLE ',NCYCLE
81#include "lockoff.inc"
82 ENDIF
83
84 NSNF = 1 + ITASK*NSN / NTHREAD
85 NSNL = (ITASK+1)*NSN / NTHREAD
86 DO I=NSNF,NSNL
87 J=NSV(I)
88 XSAV(1,J) = X(1,J)+DT2*(V(1,J)+DT12*A(1,J))
89 XSAV(2,J) = X(2,J)+DT2*(V(2,J)+DT12*A(2,J))
90 XSAV(3,J) = X(3,J)+DT2*(V(3,J)+DT12*A(3,J))
91 END DO
92 DO K=1,8
93 DO I=1+ESH_T,NME+ESH_T
94 J=IXS(K+1,NELEM(I))
95 XSAV(1,J) = X(1,J)+DT2*(V(1,J)+DT12*A(1,J))
96 XSAV(2,J) = X(2,J)+DT2*(V(2,J)+DT12*A(2,J))
97 XSAV(3,J) = X(3,J)+DT2*(V(3,J)+DT12*A(3,J))
98 ENDDO
99 ENDDO
100 DO I=1+ESH_T,NME+ESH_T
101 NE=NELEM(I)
102 N8 = NE
103 N10 = N8-NUMELS8
104 N20 = N10-NUMELS10
105 N16 = N20-NUMELS20
106 IF(N16>0)THEN
107 DO K=1,8
108 J=IXS16(K,N16)
109 XSAV(1,J) = X(1,J)+DT2*(V(1,J)+DT12*A(1,J))
110 XSAV(2,J) = X(2,J)+DT2*(V(2,J)+DT12*A(2,J))
111 XSAV(3,J) = X(3,J)+DT2*(V(3,J)+DT12*A(3,J))
112 ENDDO
113 ELSEIF(N20>0)THEN
114 DO K=1,12
115 J=IXS20(K,N20)
116 IF(J/=0)THEN
117 XSAV(1,J) = X(1,J)+DT2*(V(1,J)+DT12*A(1,J))
118 XSAV(2,J) = X(2,J)+DT2*(V(2,J)+DT12*A(2,J))
119 XSAV(3,J) = X(3,J)+DT2*(V(3,J)+DT12*A(3,J))
120 ENDIF
121 ENDDO
122 ELSEIF(N10>0)THEN
123 DO K=1,6
124 J=IXS10(K,N10)
125 XSAV(1,J) = X(1,J)+DT2*(V(1,J)+DT12*A(1,J))
126 XSAV(2,J) = X(2,J)+DT2*(V(2,J)+DT12*A(2,J))
127 XSAV(3,J) = X(3,J)+DT2*(V(3,J)+DT12*A(3,J))
128 ENDDO
129 ENDIF
130 ENDDO
131
132 NB_N_B = 1
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147 MAXSIZ = 3*(NME+100)
148 IP1 = 1
149 IP2 = IP1+NME+100
150 IP21= IP2+MAXSIZ
151 IP22= IP21+NSN
152 IP31= IP22+NSN
153
154
155
156 CONT = 1
157
158
159
160 DO WHILE (CONT/=0)
161 CALL I16TRI(
162 1 MWA(IP1),MWA(IP2) ,MWA(IP21),MWA(IP22),NSN ,
163 2 TZINF ,IXS ,IXS16 ,IXS20 ,NELEM ,
164 3 NSV ,MAXSIZ ,CAND_N ,CAND_E ,MINBOX ,
165 5 CONT ,NB_N_B ,EMINX ,I_STOK_GLOB,NME ,
166 6 ITASK ,NOINT ,X ,V ,A ,
167 7 MX_CAND ,IXS10 ,ESH_T )
168 ENDDO
169
170 RETURN