42
43
44
45 USE intbufdef_mod
47
48
49
50#include "implicit_f.inc"
51#include "comlock.inc"
52
53
54
55#include "com04_c.inc"
56#include "com08_c.inc"
57#include "param_c.inc"
58#include "warn_c.inc"
59#include "task_c.inc"
60
61
62
63 INTEGER IPARI(NPARI,NINTER),, NIN, ITAB(*), KINET(*),
64 . COUNT_REMSLV(*), NB_CANDT, I_OPT_STOK
65 INTEGER :: COUNT_REMSLVE(*)
66
68 . x(*), v(3,*)
69 TYPE(INTBUF_STRUCT_)
70
71
72
73 INTEGER NSNR, IGAP, I_STOK_GLO, SIZOPT, IEDGE, NEDGE, IGAP0, I_STOK, L_STOK
74 INTEGER N, NSNF, NSNL, NSNRF, NSNRL ,IFQ
75 INTEGER :: NRTM, NSN
76
78 . startt, stopt, drad, dgapload
79
80
81
82
83
85 1 ipari ,intbuf_tab ,itab ,nin )
86
87
88 startt=intbuf_tab%VARIABLES(3)
89 stopt =intbuf_tab%VARIABLES(11)
90 IF(startt>tt.OR.tt>stopt) RETURN
91
92 nrtm =ipari(4,nin)
93 nsn =ipari(5,nin)
94 nsnr =ipari(24,nin)
95 igap =ipari(21,nin)
96 ifq = ipari(31,nin)
97 drad = zero
98 IF(ipari(47,nin) > 0) drad =intbuf_tab%VARIABLES(32)
99 dgapload =intbuf_tab%VARIABLES(46)
100
101
102
103
104 i_stok_glo = intbuf_tab%I_STOK(1)
105 IF (debug(3)>=1) THEN
106 IF(itask==0) nb_candt = nb_candt + i_stok_glo
107 ENDIF
108 sizopt = intbuf_tab%S_CAND_OPT_N
109
110
111
112 i_opt_stok = intbuf_tab%I_STOK(2)
113
115 1 intbuf_tab%NSV,intbuf_tab%CAND_E,intbuf_tab%CAND_N,x,i_stok_glo ,
116 2 intbuf_tab%IRECTM,intbuf_tab%GAP_S,intbuf_tab%GAP_M,v,ipari(39,nin),
117 3 intbuf_tab%STFNS,itask ,intbuf_tab%STFM,nin ,ipari(5,nin) ,
118 4 intbuf_tab%IRTLM,intbuf_tab%TIME_S,intbuf_tab%MSEGLO,count_remslv,itab,
119 5 intbuf_tab%SECND_FR,nsnr ,intbuf_tab%PENE_OLD,intbuf_tab%STIF_OLD,
120 . intbuf_tab%MSEGTYP24,
121 6 nrtm ,intbuf_tab%VARIABLES(23),i_opt_stok,intbuf_tab%CAND_OPT_E,
122 . intbuf_tab%CAND_OPT_N,
123 7 sizopt,igap ,intbuf_tab%GAP_SL,intbuf_tab%GAP_ML,drad,
124 8 dgapload,intbuf_tab%ICONT_I)
125
126
127 IF(i_opt_stok > sizopt)THEN
128
129 IF(itask==0)THEN
131 END IF
132
134
135
136 sizopt = intbuf_tab%S_CAND_OPT_N
137 i_opt_stok = intbuf_tab%I_STOK(2)
139 1 intbuf_tab%NSV,intbuf_tab%CAND_E,intbuf_tab%CAND_N,x,i_stok_glo ,
140 2 intbuf_tab%IRECTM,intbuf_tab%GAP_S,intbuf_tab%GAP_M,v,ipari(39,nin),
141 3 intbuf_tab%STFNS,itask ,intbuf_tab%STFM,nin ,ipari(5,nin) ,
142 4 intbuf_tab%IRTLM,intbuf_tab%TIME_S,intbuf_tab%MSEGLO,count_remslv,itab,
143 5 intbuf_tab%SECND_FR,nsnr ,intbuf_tab%PENE_OLD,intbuf_tab%STIF_OLD,
144 . intbuf_tab%MSEGTYP24,
145 6 nrtm ,intbuf_tab%VARIABLES(23),i_opt_stok,intbuf_tab%CAND_OPT_E,
146 . intbuf_tab%CAND_OPT_N,
147 7 sizopt,igap ,intbuf_tab%GAP_SL,intbuf_tab%GAP_ML ,drad ,
148 8 dgapload,intbuf_tab%ICONT_I)
149 END IF
150
151
152
153 intbuf_tab%I_STOK(2)=i_opt_stok
154
155
156
157
158 nsnf = 1 + itask*nsn / nthread
159 nsnl = (itask+1)*nsn / nthread
160 DO n = nsnf,nsnl
161
162 IF(intbuf_tab%IRTLM(4*(n-1)+3) < 0) intbuf_tab%IRTLM(4*(n-1)+3)=0
163 ENDDO
164
165 nsnrf = 1 + itask*nsnr / nthread
166 nsnrl = (itask+1)*nsnr / nthread
167 DO n=nsnrf,nsnrl
169 ENDDO
170
171 iedge = ipari(58,nin)
172 igap0 = ipari(53,nin)
173 IF(iedge/=0)THEN
174 nedge = ipari(68,nin)
175 drad = zero
176 CALL i25optcd_edg(intbuf_tab%CANDM_E2E,intbuf_tab%CANDS_E2E,
177 . x ,intbuf_tab%I_STOK_E(1),intbuf_tab%IRECTM ,
178 2 nin ,v ,intbuf_tab%GAPE ,igap ,itask ,
179 3 intbuf_tab%STFM,intbuf_tab%GAP_E_L,count_remslve,drad ,
180 4 iedge ,nedge ,intbuf_tab%LEDGE ,intbuf_tab%MVOISIN ,
181 . intbuf_tab%NSV ,
182 5 igap0 ,intbuf_tab%STFE,
183 6 intbuf_tab%S_STFM, intbuf_tab%S_STFE,ifq,intbuf_tab%IFPEN_E,
184 7 intbuf_tab%FTSAVX_E,intbuf_tab%FTSAVY_E, intbuf_tab%FTSAVZ_E,dgapload )
185
186
187
188 CALL i25optcd_e2s(intbuf_tab%CANDM_E2S,intbuf_tab%CANDS_E2S,
189 . x ,intbuf_tab%I_STOK_E(2),intbuf_tab%IRECTM ,
190 2 nin ,v ,intbuf_tab%GAP_M ,igap ,itask ,
191 3 intbuf_tab%STFM,intbuf_tab%GAP_ML,count_remslve,drad ,
192 4 iedge ,nedge ,intbuf_tab%LEDGE ,intbuf_tab%MVOISIN ,
193 . intbuf_tab%NSV ,
194 5 nrtm,intbuf_tab%GAPE ,intbuf_tab%GAP_E_L ,igap0,
195 6 intbuf_tab%STFE,intbuf_tab%S_STFE,ifq,intbuf_tab%IFPEN_E2S,
196 7 intbuf_tab%FTSAVX_E2S,intbuf_tab%FTSAVY_E2S, intbuf_tab%FTSAVZ_E2S,dgapload)
197 END IF
198
199
200
201 RETURN
subroutine i25irtlm(ipari, intbuf_tab, itab, nin)
subroutine i25optcd(nsv, cand_e, cand_n, x, i_stok, irect, gap_s, gap_m, v, icurv, stfn, itask, stf, nin, nsn, irtlm, time_s, mseglo, count_remslv, itab, secnd_fr, nsnr, pene_old, stif_old, msegtyp, nrtm, pmax_gap, i_opt_stok, cand_opt_e, cand_opt_n, sizopt, igap, gap_s_l, gap_m_l, drad, dgapload, icont_i)
subroutine i25optcd_e2s(cand_m, cand_s, x, i_stok, irect, nin, v, gap_m, igap, itask, stf, gap_m_l, count_remslve, drad, iedge, nedge, ledge, mvoisin, nsv, nrtm, gape, gap_e_l, igap0, stfe, s_stfe, ifq, ifpen, cand_fx, cand_fy, cand_fz, dgapload)
subroutine i25optcd_edg(cand_m, cand_s, x, i_stok, irect, nin, v, gape, igap, itask, stf, gap_e_l, count_remslve, drad, iedge, nedge, ledge, mvoisin, nsv, igap0, stfe, s_stfm, s_stfe, ifq, ifpen, cand_fx, cand_fy, cand_fz, dgapload)
type(int_pointer2), dimension(:), allocatable irtlm_fi
subroutine upgrade_cand_opt(ni, k_stok, intbuf_tab)