35 SUBROUTINE lossfun_98(NVAR,NDC,X,FUN,DFUN,CONS,DCONS,IGOTO,
36 . NPC,PLD ,IFUNC,NFUNC,UPARAM,LENC,LENT,
47#include "implicit_f.inc"
53 INTEGER IGOTO ,SIZEPN,NPTBI
56 . cons(*),dcons(*),x(nvar),uparam(*),fun(nvar),dfun(nvar),
62 INTEGER NPC(*), NFUNC, IFUNC(NFUNC)
63 my_real FINTER ,PLD(*)
66 INTENT(IN) :: npc,pld,igoto ,xbia,nptbi
67 INTENT(INOUT) :: fun,dfun,cons,dcons
71 INTEGER I,II,J,ID,NP1,NP2,J1,K,K1,NCON, ITER,NITER,
72 . PN1,PN2,ISYM,LENC,LENT
74 . embc,embt,y,fmins,fminf,dembc,embcp,flexp,
75 . flex1,flex2,lc0,lt0,dc0,dt0,hc0,ht0,kc,kt,kfc,kft,
76 . hc,ht,dcc,dc,dt,udc,udt,hdc,hdt,fc,ft,fpc,fpt,kf,
77 . deric,dtt,func,dcp,dtp, t1,t2,a1,a2,dflex,flex2p,flex1p,
78 . fminc,fmint,fminc2,fmins2,fminf2,fminf1,yp,embtp,dembt,yfac(8)
81 . ec(lenc),fcu(lenc),lc(lenc),yc(lenc),sigc(lenc),
83 . xfib(lenc),yfib(lenc),
84 . xcfib(nptbi),ycfib(nptbi),xtfib(nptbi),ytfib(nptbi)
86 . et(lent),ftu(lent),lt(lent),yt(lent),sigt(lent),
107 dembc =
max(em03 * embc, em10)
108 dflex =
max(em03 * flex1, em10)
109 dembt =
max(em03 * embt, em10)
116 hc0 = sqrt(dc0*dc0 - one)
119 ht0 = sqrt(dt0*dt0 - one)
123 CALL fct_fiber_2(npc,pld ,ifunc(7),ifunc(8),yfac(7),yfac(8),xbia,nptbi,
124 . flex1,flex2,dc0,hc0,dt0,ht0,xcfib,ycfib,xtfib,ytfib )
127 pn2 = npc(ifunc(1)+1)
128 lenc = (pn2 - pn1) / 2
133 ec(i) = pld(npc(ifunc(1))+ ii )
134 fcu(i)= pld(npc(ifunc(1))+ ii+1 )*yfac(1)
136 . yfac(1),flex1,flex2,embc ,sigc(i))
137 a1 = (fcu(i) - sigc(i))/
max(em20,fcu(i))
138 fminc = fminc + a1**2
142 pn2 = npc(ifunc(2)+1)
143 lent = half*(pn2 - pn1)
146 et(i) = pld(npc(ifunc(2))+ ii )
147 ftu(i)= pld(npc(ifunc(2))+ ii+1 )*yfac(2)
149 . yfac(2),flex1,flex2,embt,sigt(i))
150 a2 = (ftu(i) - sigt(i))/
max(em20,ftu(i))
151 fmint = fmint + a2**2 !somme de la difference des carres
154 IF (igoto == 5 .or. igoto == 8) fun = (fminc + fmint )/two
159 IF (igoto == 3 .or. igoto == 8)
THEN
164 hc0 = sqrt(dc0*dc0 - one)
167 ec(i) = pld(npc(ifunc(1))+ ii )
168 fcu(i)= pld(npc(ifunc(1))+ ii +1)*yfac(1)
170 . yfac(1),flex1,flex2,embcp,sigc(i))
172 a1 = (fcu(i) - sigc(i))/
max(em20,fcu(i))
173 fmins = fmins + a1**2
176 dfun(1) = (fmins - fminc) / dembc
186 hc0 = sqrt(dc0*dc0 - one)
189 ec(i) = pld(npc(ifunc(1))+ ii )
190 fcu(i)= pld(npc(ifunc(1))+ ii +1)*yfac(1)
192 . yfac(1),flexp,flex2,embc,sigc(i))
194 a1 = (fcu(i) - sigc(i))/
max(em20,fcu(i))
196 fminf1 = fminf1 + a1**2
200 ht0 = sqrt(dt0*dt0 - one)
203 et(i) = pld(npc(ifunc(2))+ ii )
204 ftu(i)= pld(npc(ifunc(2))+ ii +1)*yfac(2)
206 . yfac(2),flexp,flex2,embt,sigt(i))
208 a1 = (ftu(i) - sigt(i))/
max(em20,ftu(i))
209 fminf2 = fminf2 + a1**2
212 dfun(2) = (fminf1 + fminf2 - fminc - fmint) / dflex
224 ht0 = sqrt(dt0*dt0 - one)
227 et(i) = pld(npc(ifunc(2))+ ii )
228 ftu(i)= pld(npc(ifunc(2))+ ii +1)*yfac(2)
230 . yfac(2),flex1,flex2,embtp,sigt(i))
232 a1 = (ftu(i) - sigt(i))/
max(em20,ftu(i))
233 fmins2 = fmins2 + a1**2
236 dfun(3) = (fmins2 - fmint) / dembt
246 hc0 = sqrt(dc0*dc0 - one)
249 ec(i) = pld(npc(ifunc(1))+ ii )
250 fcu(i)= pld(npc(ifunc
252 . yfac(1),flex1,flexp,embc,sigc(i))
254 a1 = (fcu(i) - sigc(i))/
max(em20,fcu(i))
256 fminf1 = fminf1 + a1**2
259 ht0 = sqrt(dt0*dt0 - one)
262 et(i) = pld(npc(ifunc(2))+ ii )
263 ftu(i)= pld(npc(ifunc(2))+ ii +1)*yfac(2)
265 . yfac(2),flex1,flexp,embt,sigt(i))
267 a1 = (ftu(i) - sigt(i))/
max(em20,ftu(i))
269 fminf2 = fminf2 + a1**2
271 dfun(4) = (fminf1 + fminf2 - fminc - fmint) / dflex
285 dembc =
max(em03 * embc, em10)
286 dflex =
max(em03 * flex1, em10)
292 hc0 = sqrt(dc0*dc0 - one)
295 ht0 = sqrt(dt0*dt0 - one)
298 pn2 = npc(ifunc(7)+1)
299 sizepn = half*(pn2 - pn1)
303 CALL fct_fiber(npc,pld ,ifunc(7),sizepn,dc0,hc0,xfib,yfib)
310 ec(i) = pld(npc(ifunc(1))+ ii )
311 fcu(i)= pld(npc(ifunc(1))+ ii+1 )*yfac(1)
313 CALL calc_uniax(ec(i),xfib,yfib,sizepn,dc0,hc0,
314 . yfac(1),flex1,embc,sigc(i))
315 a1 = (fcu(i) - sigc(i))/
max(em20,fcu(i))
316 fminc = fminc + a1**2
319 IF (igoto == 5 .or. igoto == 8) fun = fminc
324 IF (igoto == 3 .or. igoto == 8)
THEN
328 hc0 = sqrt(dc0*dc0 - one)
333 ec(i) = pld(npc(ifunc(1))+ ii )
334 fcu(i)= pld(npc(ifunc(1))+ ii +1)*yfac(1)
335 CALL calc_uniax(ec(i),xfib,yfib,sizepn,dc0,hc0,
336 . yfac(1),flex1,embcp,sigc(i))
337 a1 = (fcu(i) - sigc(i))/
max(em20,fcu(i))
338 fmins = fmins + a1**2
341 dfun(1) = (fmins - fminc) / dembc
347 hc0 = sqrt(dc0*dc0 - one)
352 ec(i) = pld(npc(ifunc(1))+ ii )
353 fcu(i)= pld(npc(ifunc(1))+ ii +1)*yfac(1)
354 CALL calc_uniax(ec(i),xfib,yfib,sizepn,dc0,hc0,
355 . yfac(1),flexp,embc,sigc(i))
357 a1 = (fcu(i) - sigc(i))/
max(em20,fcu(i))
359 fminf = fminf + a1**2
362 dfun(2) = (fminf - fminc) / dflex
491 . XBIA,NPTBI,KFC,KFT,DC0,HC0,DT0,HT0,XCFIB,YCFIB,XTFIB,YTFIB )
500#include "implicit_f.inc"
505 my_real FINTER ,PLD(*),XBIA(NPTBI)
507 INTEGER I,J,IDN1,IDN2,NPTBI,NP1, NITER,ITER
509 . dc0,hc0,dt0,ht0,lc,lt,dc,udc,udt,hdc,hdt,yfac1,yfac2,yc,yt,
510 . fpc,fpt, y,hc,ht,dt, fc,ft,kf,kft,kfc,func,deric,
511 . xx(nptbi),yb(nptbi),xfib(nptbi),yfib(nptbi),xcfib(nptbi),
512 . ycfib(nptbi),xtfib(nptbi),ytfib(nptbi),dcc(nptbi),
513 . dtt(nptbi),stissuc(nptbi),stissut(nptbi)
515 INTENT(IN) :: npc,pld ,nptbi,yfac1,yfac2
521 stissuc(i) = yfac1 * finter(idn1,xbia(i),npc,pld,fpc)
522 stissut(i) = yfac2 * finter(idn2,xbia(i),npc,pld,fpt)
531 dc = sqrt(lc *lc + hc*hc)
532 dt = sqrt(lt *lt + ht*ht)
537 fc = stissuc(i) * lc/dc
540 ft = stissut(i) * lt/dt
544 func = kf*y + fc * hdc - ft * hdt
545 deric = kf + fpc*hdc + fc*udc*(one - hdc*hdc)
546 . + fpt*hdt + ft*udt*(one - hdt*hdt)
560 dc = sqrt(lc *lc + hc*hc)
561 dt = sqrt(lt *lt + ht*ht)
564 ycfib(i) = stissuc(i) *lc/dc
565 ytfib(i) = stissut(i) *lt/dt