53 2 MS ,NIN ,ITASK ,WEIGHT ,ISENDTO ,
54 3 IRCVFROM,RETRI ,IAD_ELEM,FR_ELEM ,ITAB ,
55 4 NRTM_T ,ESHIFT,NODNX_SMS,RENUM,NSNFIOLD ,
56 5 INTBUF_TAB,TEMP,NODADT_THERM)
65 use check_sorting_criteria_mod ,
only : check_sorting_criteria
69#include "implicit_f.inc"
79#include "timeri_c.inc"
80 COMMON /i11mainc/bminma,result,nrtsr,i_memg,nsnrold
81 INTEGER RESULT,NRTSR,I_MEMG,NSNROLD
87 TYPE(timer_),
INTENT(INOUT) :: TIMERS
88 INTEGER,
INTENT(IN) :: ITASK
89 INTEGER NIN , RETRI, NRTM_T, ESHIFT
90 INTEGER (NPARI,NINTER), ITAB(*),
91 . WEIGHT(*), IAD_ELEM(2,*) ,(*),
92 . isendto(ninter+1,*),ircvfrom(ninter+1,*),nodnx_sms(*),
93 . renum(*),nsnfiold(nspmd)
94 INTEGER ,
INTENT(IN) :: NODADT_THERM
97 . x(*), v(3,*), ms(*),temp(*)
99 TYPE(intbuf_struct_) INTBUF_TAB
103 INTEGER KD(50), JD(50), JFI, KFI, MULTIMP,
104 . i, ild, i_sk_old, i_stok1,
105 . add1, nb_n_b, noint,
106 . ncont, ncontact,i_mem,cand_n_old,
107 . loc_proc, kd11_t,i_sk_new,nft,jlt,j,i_stok,iadfin,iform
108 INTEGER,
DIMENSION(:),
ALLOCATABLE :: OLDINBUF1, OLDINBUF2
111 . GAP, MAXBOX, MINBOX, TZINF,
112 . , YMAXL, ZMAXL, XMINL, YMINL, ZMINL, INACTI,DRAD,DGAPLOAD
113 INTEGER :: NMN, NSN,,NRTS,NRTM
114 logical :: need_computation
119 call check_sorting_criteria( need_computation,nin,npari,nspmd,
120 . itask,ipari(1,nin),tt,intbuf_tab )
121 if( .not.need_computation )
return
134 multimp =ipari(23,nin)
137 ncontact=multimp*ncont
140 nsnrold = ipari(24,nin)
145 gap = intbuf_tab%VARIABLES(2)
146 drad =intbuf_tab%VARIABLES(24)
147 dgapload =intbuf_tab%VARIABLES(46)
151 maxbox = intbuf_tab%VARIABLES(9)
152 minbox = intbuf_tab%VARIABLES(12)
153 tzinf = intbuf_tab%VARIABLES(8)
166 intbuf_tab%ADCCM(i) = 0
169 intbuf_tab%CHAIN(i) = 0
176 i_stok = intbuf_tab%I_STOK(1)
179 intbuf_tab%I_STOK(1)=0
182 DO nft=0, i_sk_old - 1 , nvsiz
183 jlt =
min( nvsiz, i_sk_old - nft )
186 1 i_sk_new ,intbuf_tab%CAND_N, intbuf_tab%CAND_E, intbuf_tab%FTSAVX, intbuf_tab%FTSAVY,
187 2 intbuf_tab%FTSAVZ,iform , intbuf_tab%ADCCM , intbuf_tab%CHAIN , ncontact,
188 . itab,jlt, nft,intbuf_tab%IFPEN,intbuf_tab%STFS,nin,nrts)
191 intbuf_tab%I_STOK(1) = i_sk_new
203 1 x ,intbuf_tab%NSV ,intbuf_tab%MSR,nsn ,nmn ,
204 2 itask ,intbuf_tab%XSAV,xminl ,yminl ,zminl ,
205 3 xmaxl ,ymaxl ,zmaxl )
207 bminma(1) =
max(bminma(1),xmaxl)
208 bminma(2) =
max(bminma(2),ymaxl)
209 bminma(3) =
max(bminma(3),zmaxl)
210 bminma(4) =
min(bminma(4),xminl)
211 bminma(5) =
min(bminma(5),yminl)
212 bminma(6) =
min(bminma(6),zminl)
213#include "lockoff.inc"
221 IF(abs(bminma(6)-bminma(3))>2*ep30.OR.
222 + abs(bminma(5)-bminma(2))>2*ep30.OR.
223 + abs(bminma(4)-bminma(1))>2*ep30)
THEN
224 CALL ancmsg(msgid=87,anmode=aninfo,
225 . i1=noint,c1=
'(I7BUCE)')
229 bminma(1)=bminma(1)+tzinf
230 bminma(2)=bminma(2)+tzinf
231 bminma(3)=bminma(3)+tzinf
232 bminma(4)=bminma(4)-tzinf
233 bminma(5)=bminma(5)-tzinf
234 bminma(6)=bminma(6)-tzinf
237 CALL ancmsg(msgid=36,anmode=aninfo,
252 IF (imonm > 0 .AND. itask == 0)
CALL startime(timers,26)
255 1 x ,bminma ,ipari(21,nin
256 2 tzinf ,intbuf_tab%IRECTM(1+2*eshift),gap,intbuf_tab%GAP_M(1+eshift),
257 3 intbuf_tab%VARIABLES(13) ,intbuf_tab%VARIABLES(7),drad,dgapload)
260 IF (imonm > 0 .AND. itask == 0)
CALL stoptime(timers,26)
265 IF (imonm > 0 .AND. itask == 0)
CALL startime(timers,25)
267 1 intbuf_tab%IRECTS,nrts ,x ,v ,ms ,
268 2 bminma ,weight ,intbuf_tab%STFS,nin ,isendto ,
270 4 intbuf_tab%GAP_S ,intbuf_tab%PENIS , itab ,ipari(21,nin),tzinf ,
271 5 nodnx_sms ,intbuf_tab%GAP_SL,nsnfiold,iform ,ipari(47,nin),
272 6 intbuf_tab%IELEC,intbuf_tab%AREAS ,temp ,ipari(36,nin),intbuf_tab%ADDSUBS,
273 7 intbuf_tab%LISUBS,ipari(72,nin),intbuf_tab%IPARTFRICS,intbuf_tab%INFLG_SUBS)
274 IF (imonm > 0 .AND. itask == 0)
CALL stoptime(timers,25)
283 1 intbuf_tab%CAND_N,renum ,intbuf_tab%I_STOK(1), nin, nrts,
284 2 nsnfiold ,nsnrold ,intbuf_tab%ADCCM
285 3 intbuf_tab%CAND_E,ncontact,nrtm)
293 cand_n_old = intbuf_tab%I_STOK(1)
298 IF (
ALLOCATED(oldinbuf1))
DEALLOCATE(oldinbuf1)
299 IF (
ALLOCATED(oldinbuf2))
DEALLOCATE
301 ALLOCATE(oldinbuf1(nrtm), oldinbuf2(2*ncontact))
303 oldinbuf1(1:nrtm) = 0
304 oldinbuf2(1:2*ncontact) = 0
307 oldinbuf1(i) = intbuf_tab%ADCCM(i)
310 oldinbuf2(i) = intbuf_tab%CHAIN(i)
331 1 x ,intbuf_tab%IRECTS ,intbuf_tab%IRECTM(1+
332 2 nrtm_t,nsn ,intbuf_tab%CAND_E,intbuf_tab%CAND_N
333 3 noint ,intbuf_tab%I_STOK(1),tzinf ,maxbox ,minbox ,
334 4 nb_n_b,eshift ,ild ,bminma ,ncontact ,
335 6 intbuf_tab%ADCCM(1+eshift) ,intbuf_tab%CHAIN,nin ,itab ,nrtsr ,
336 7 ncont ,intbuf_tab%GAP_S ,intbuf_tab%STFS,intbuf_tab%PENIS,ipari(21,nin),
337 8 intbuf_tab%STFM(1+eshift),ipari(42,nin),i_mem , itask ,iform ,
339 1 intbuf_tab%GAP_ML(1+eshift),intbuf_tab%VARIABLES(13),intbuf_tab%VARIABLES(7), gap,
340 2 ipari(63,nin),intbuf_tab%KREMNODE(1+2*eshift),intbuf_tab%REMNODE,dgapload)
346#include "lockoff.inc"
356 intbuf_tab%ADCCM(i)= oldinbuf1(i)
359 intbuf_tab%CHAIN(i)= oldinbuf2(i)
361 DEALLOCATE(oldinbuf1,oldinbuf2)
371 multimp =
max(ipari(23,nin) +4,ipari(23,nin)+
min(20,(250000/ncont)))
384 intbuf_tab%I_STOK(1)=cand_n_old
385 multimp=ipari(23,nin)
386 ncontact=multimp*ncont
391 intbuf_tab%VARIABLES(9) =
min(maxbox,intbuf_tab%VARIABLES(9))
392 intbuf_tab%VARIABLES(12) =
min(minbox,intbuf_tab%VARIABLES(12))
393 intbuf_tab%VARIABLES(8) =
min(tzinf,intbuf_tab%VARIABLES(8))
394 intbuf_tab%VARIABLES(5) = intbuf_tab%VARIABLES(8)-gap
395 result = result + ild
396#include "lockoff.inc"
403 intbuf_tab%I_STOK(1) = i_sk_old
408 maxbox = intbuf_tab%VARIABLES(9)
409 minbox = intbuf_tab%VARIABLES(12)
410 tzinf = intbuf_tab%VARIABLES(8)
416 IF (imonm > 0)
CALL startime(timers,26)
418 intbuf_tab%VARIABLES(5) = -intbuf_tab%VARIABLES(5)
420 1 result ,nrts ,intbuf_tab%CAND_N,intbuf_tab%I_STOK(1),nin,
421 2 ipari(22,nin),nrtsr,multimp ,ipari(21,nin),ipari(47,nin),
422 2 ipari(36,nin),ipari(72,nin),nodadt_therm)
425 ipari(24,nin) = nrtsr
427 IF (imonm > 0)
CALL stoptime(timers,26)
431 IF (
ALLOCATED(oldinbuf1))
DEALLOCATE(oldinbuf1)
432 IF (
ALLOCATED(oldinbuf2))
DEALLOCATE(oldinbuf2)
subroutine i11buce_vox(x, irects, irectm, nrts, nmn, nrtm, nsn, cand_m, cand_s, maxgap, noint, ii_stok, tzinf, maxbox, minbox, nb_n_b, eshift, ild, bminma, ncontact, addcm, chaine, nin, itab, nrtsr, ncont, gap_s, stifs, penis, igap, stifm, iauto, i_mem, itask, iform, ifpen, drad, gap_m, gap_s_l, gap_m_l, gapmin, bgapsmx, gap, flagremnode, kremnode, remnode, dgapload)
subroutine i11main_tri(timers, ipari, x, v, ms, nin, itask, weight, isendto, ircvfrom, retri, iad_elem, fr_elem, itab, nrtm_t, eshift, nodnx_sms, renum, nsnfiold, intbuf_tab, temp, nodadt_therm)
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)