53 1 IPARI ,X ,INTBUF_TAB,V ,
54 2 MS ,NIN ,ITASK ,MWAG ,WEIGHT ,
55 3 ISENDTO ,IRCVFROM,RETRI ,IAD_ELEM,FR_ELEM ,
56 4 ITAB ,KINET ,NRTM_T ,RENUM ,
57 5 NSNFIOLD,ESHIFT ,NUM_IMP ,IND_IMP ,NODNX_SMS,
58 6 H3D_DATA, MULTI_FVM,INTHEAT,IDT_THERM,NODADT_THERM)
68 use check_sorting_criteria_mod ,
only : check_sorting_criteria
72#include "implicit_f.inc"
82#include "timeri_c.inc"
84 COMMON /i7mainc/bminma,curv_max_max,result,nsnr,nsnrold,i_memg,nmn_g
85 INTEGER RESULT,NSNR,NSNROLD,I_MEMG,NMN_G
87 . BMINMA(6),CURV_MAX_MAX
91 TYPE(timer_),
INTENT(INOUT) :: TIMERS
92 INTEGER NIN ,ITASK, RETRI, NRTM_T,ESHIFT,
93 . NUM_IMP ,IND_IMP(*),
95 . IPARI(NPARI,NINTER), MWAG(*),
96 . ISENDTO(NINTER+1,*),IRCVFROM(+1,*),
97 . weight(*), iad_elem(2,*) ,fr_elem(*),
98 . renum(*), nsnfiold(nspmd), nodnx_sms(*)
99 INTEGER,
INTENT(IN) :: INTHEAT
100 INTEGER,
INTENT(IN) :: IDT_THERM
101 INTEGER,
INTENT(IN) :: NODADT_THERM
105 TYPE(intbuf_struct_) INTBUF_TAB
107 TYPE(multi_fvm_struct),
INTENT(INOUT) :: MULTI_FVM
111 INTEGER LOC_PROC, IFQ, INTTH, ITIED,
112 . i, ip0, ip1, ip2, ip21, i_sk_old,
113 . add1, nb_n_b, noint, inacti, multimp, igap, i_stok ,nmn_l
115 . ILD, NCONTACT,NCONT,INTFRIC,
116 . I_MEM,CAND_N_OLD,IDUM1(1),, IVIS2
119 . gap,maxbox,minbox,tzinf,
120 . xmaxl, ymaxl, zmaxl, xminl, yminl, zminl, gapmin, gapmax,
121 . sx,sy,sz,sx2,sy2,sz2,
122 . c_maxl,curv_max(nrtm_t),rdum1(1)
123 INTEGER :: NMN,NSN,NTY
124 logical :: need_computation
128 call check_sorting_criteria( need_computation,nin,npari,nspmd,
129 . itask,ipari(1,nin),tt,intbuf_tab )
130 if( .not.need_computation )
return
150 inacti =ipari(22,nin)
151 multimp=ipari(23,nin)
153 ncontact=multimp*ncont
155 nsnrold = ipari(24,nin)
157 gap =intbuf_tab%VARIABLES(2)
158 gapmin=intbuf_tab%VARIABLES(13)
159 gapmax=intbuf_tab%VARIABLES(16)
168 maxbox = intbuf_tab%VARIABLES(9)
169 minbox = intbuf_tab%VARIABLES(12)
170 tzinf = intbuf_tab%VARIABLES(8)
189 ip1 = ip0 + nsn + nsnrold + 3
191 i_sk_old = intbuf_tab%I_STOK(1)
193 1 nsn+nsnrold ,i_sk_old ,intbuf_tab%CAND_N,intbuf_tab%CAND_E,
194 2 intbuf_tab%CAND_P,intbuf_tab%FTSAVX,intbuf_tab%FTSAVY,intbuf_tab%FTSAVZ
195 3 mwag(ip0) ,intbuf_tab%IFPEN)
197 intbuf_tab%I_STOK(1)=i_sk_old
204 1 x ,intbuf_tab%NSV,intbuf_tab%MSR,nsn ,nmn ,
205 2 itask ,intbuf_tab%XSAV,xminl ,yminl
206 3 xmaxl ,ymaxl ,zmaxl ,c_maxl,curv_max,
207 4 ipari(39,nin),intbuf_tab%IRECTM(1+4*eshift) ,nrtm_t,sx ,sy ,
208 5 sz ,sx2 ,sy2 ,sz2 ,nmn_l)
210 bminma(1) =
max(bminma(1),xmaxl)
211 bminma(2) =
max(bminma(2),ymaxl)
212 bminma(3) =
max(bminma(3),zmaxl)
213 bminma(4) =
min(bminma(4),xminl)
214 bminma(5) =
min(bminma(5),yminl)
215 bminma(6) =
min(bminma(6),zminl)
216 curv_max_max =
max(curv_max_max,c_maxl)
217 nmn_g = nmn_g + nmn_l
218#include "lockoff.inc"
224 IF(abs(bminma(6)-bminma(3))>2*ep30.OR.
225 + abs(bminma(5)-bminma(2))>2*ep30.OR.
226 + abs(bminma(4)-bminma(1))>2*ep30)
THEN
227 CALL ancmsg(msgid=87,anmode=aninfo,
228 . i1=noint,c1=
'(I23BUCE)')
232 bminma(1)=bminma(1)+tzinf+curv_max_max
233 bminma(2)=bminma(2)+tzinf+curv_max_max
234 bminma(3)=bminma(3)+tzinf+curv_max_max
235 bminma(4)=bminma(4)-tzinf-curv_max_max
236 bminma(5)=bminma(5)-tzinf-curv_max_max
237 bminma(6)=bminma(6)-tzinf-curv_max_max
240 CALL ancmsg(msgid=36,anmode=aninfo,
256 IF (imonm > 0 .AND. itask == 0)
CALL startime(timers,26)
258 1 x ,bminma ,ipari(21,nin),nrtm_t,intbuf_tab%STFM(1+eshift),
259 2 tzinf ,curv_max,gapmin ,gapmax,intbuf_tab%GAP_M(1+eshift),
260 3 intbuf_tab%IRECTM(1+4*eshift),gap ,intbuf_tab%VARIABLES(7) ,intbuf_tab%MSR)
263 IF (imonm > 0 .AND. itask == 0)
CALL stoptime(timers,26)
271 IF (imonm > 0 .AND. itask == 0)
CALL startime(timers,25)
274 1 intbuf_tab%NSV,nsn ,x ,v ,ms ,
275 2 bminma ,weight ,intbuf_tab%STFNS,nin ,isendto,
276 3 ircvfrom ,iad_elem,fr_elem ,nsnr ,ipari(21,nin),
277 4 intbuf_tab%GAP_S,itab ,kinet ,ifq ,inacti ,
278 5 nsnfiold,intth,idum1,rdum1,rdum1 ,
279 6 num_imp ,nodnx_sms,rdum1,nty ,idum1 ,
280 7 rdum1 ,rdum1,rdum1,rdum1 ,idum1 ,ilev,idum1,
281 8 intfric ,idum1 ,itied, ivis2, intbuf_tab%IF_ADH)
282 IF (imonm > 0 .AND. itask == 0)
CALL stoptime(timers,25)
289 1 intbuf_tab%CAND_N,renum ,intbuf_tab%I_STOK(1), nin, nsn,
294 cand_n_old = intbuf_tab%I_STOK(1)
304 IF (imonm > 0 .AND. itask == 0)
CALL startime(timers,30)
306 1 x ,intbuf_tab%IRECTM(1+4*eshift),intbuf_tab%NSV
307 2 nrtm_t ,nsn ,intbuf_tab%CAND_E ,intbuf_tab%CAND_N,gap ,
308 3 noint ,intbuf_tab%I_STOK(1),tzinf ,maxbox ,minbox ,
309 4 ncontact ,nb_n_b ,eshift ,intbuf_tab%CAND_P,ncont ,
310 6 ild ,weight ,intbuf_tab%STFNS,nin ,
311 7 intbuf_tab%STFM(1+eshift) ,ipari(21,nin),intbuf_tab%GAP_S,gapmin,gapmax,
312 8 ipari(39,nin),num_imp ,itask,
313 9 i_mem ,intbuf_tab%MSR,intbuf_tab%GAP_M(
314 a renum ,nsnrold ,intbuf_tab%IFPEN,mwag ,bminma ,
315 b nmn ,intbuf_tab%IRECTM,intbuf_tab%VARIABLES(7),
316 c intheat,idt_therm,nodadt_therm )
322#include "lockoff.inc"
335 multimp = ipari(23,nin) + 4
340 intbuf_tab%I_STOK(1)=cand_n_old
341 multimp=ipari(23,nin)
342 ncontact=multimp*ncont
348 IF (imonm > 0 .AND. itask == 0)
CALL stoptime(timers,30)
351 intbuf_tab%VARIABLES(9) =
min(maxbox,intbuf_tab%VARIABLES(9))
352 intbuf_tab%VARIABLES(12) =
min(minbox
353 intbuf_tab%VARIABLES(8) =
min(tzinf,intbuf_tab%VARIABLES(8))
354 intbuf_tab%VARIABLES(5) = intbuf_tab%VARIABLES(8)-sqrt(three)*gap
355 result = result + ild
356#include "lockoff.inc"
364 intbuf_tab%I_STOK(1) = i_sk_old
369 maxbox = intbuf_tab%VARIABLES(9)
370 minbox = intbuf_tab%VARIABLES(12)
371 tzinf = intbuf_tab%VARIABLES(8)
378 IF (imonm > 0)
CALL startime(timers,26)
379 intbuf_tab%VARIABLES(5) = -intbuf_tab%VARIABLES(5)
382 1 result ,nsn ,intbuf_tab%CAND_N,intbuf_tab%I_STOK(1),nin,
383 2 ipari(21,nin),nsnr,multimp
384 3 ilev ,nsnfiold, ipari, h3d_data,intfric,
385 4 multi_fvm,nodadt_therm)
389 .
CALL imp_rnumcd(intbuf_tab%CAND_N,nin,nsn,num_imp,ind_imp )
391 IF (imonm > 0)
CALL stoptime(timers,26)
subroutine i23buce(x, irect, nsv, inacti, nrtm, nsn, cand_e, cand_n, gap, noint, ii_stok, tzinf, maxbox, minbox, ncontact, nb_n_b, eshift, cand_p, ncont, ild, weight, stfn, nin, stf, igap, gap_s, gapmin, gapmax, icurv, num_imp, itask, i_mem, msr, gap_m, nsnr, curv_max, renum, nsnrold, ifpen, mwag, bminma, nmn, irectg, bgapsmx, intheat, idt_therm, nodadt_therm)
subroutine i23main_tri(timers, ipari, x, intbuf_tab, v, ms, nin, itask, mwag, weight, isendto, ircvfrom, retri, iad_elem, fr_elem, itab, kinet, nrtm_t, renum, nsnfiold, eshift, num_imp, ind_imp, nodnx_sms, h3d_data, multi_fvm, intheat, idt_therm, nodadt_therm)