36 character*20 labmpc(*)
39 integer mi(*),nactdof(0:mi(2),*),nodeboun(*),ndirboun(*),
40 & ipompc(*),nodempc(3,*),mt,nk,ithermal(2),i,j,
41 & nener,iperturb(*),iout,nboun,nmpc,nmethod,ist,ndir,node,index,
42 & neq,incrementalmpc,nprint,ikin,calcul_fn,nforc,
43 & calcul_f,calcul_cauchy,calcul_qa,intpointvarm,intpointvart,
44 & irefnode,irotnode,iexpnode,irefnodeprev
46 real*8 v(0:mi(2),*),vini(0:mi(2),*),f(*),fn(0:mi(2),*),
47 & cam(5),vold(0:mi(2),*),b(*),xboun(*),coefmpc(*),
48 & veold(0:mi(2),*),accold(0:mi(2),*),xforc(*),
49 & qa(*),bet,gam,dtime,scal1,scal2,bnac,
54 if((iout.ne.2).and.(iout.gt.-1))
then 56 if((nmethod.ne.4).or.(iperturb(1).le.1))
then 57 if(ithermal(1).ne.2)
then 60 if(nactdof(j,i).gt.0)
then 66 if((iperturb(1).ne.0).and.(abs(nmethod).eq.1))
then 67 if(dabs(bnac).gt.cam(1))
then 69 cam(4)=nactdof(j,i)-0.5d0
75 if(ithermal(1).gt.1)
then 77 if(nactdof(0,i).gt.0)
then 83 if((iperturb(1).ne.0).and.(abs(nmethod).eq.1))
then 84 if(dabs(bnac).gt.cam(2))
then 86 cam(5)=nactdof(0,i)-0.5d0
97 if(ithermal(1).ne.2)
then 102 if(nactdof(j,i).gt.0)
then 107 v(j,i)=v(j,i)+scal1*bnac
108 if(dabs(scal1*bnac).gt.cam(1))
then 109 cam(1)=dabs(scal1*bnac)
110 cam(4)=nactdof(j,i)-0.5d0
112 veold(j,i)=veold(j,i)+scal2*bnac
113 accold(j,i)=accold(j,i)+bnac
117 if(ithermal(1).gt.1)
then 125 if(nactdof(0,i).gt.0)
then 131 if(dabs(bnac).gt.cam(2))
then 133 cam(5)=nactdof(0,i)-0.5d0
135 cam(3)=
max(cam(3),dabs(v(0,i)-vini(0,i)))
151 if((iperturb(1).ge.2).or.((iperturb(1).le.0).and.(iout.lt.0)))
153 if((iout.lt.1).and.(iout.gt.-2))
then 157 elseif((iout.ne.-2).and.(iperturb(2).eq.1))
then 163 if((filab(5)(1:4).eq.
'RF ').or.
164 & (filab(10)(1:4).eq.
'RFL '))
then 168 if((prlab(i)(1:4).eq.
'RF ').or.
169 & (prlab(i)(1:4).eq.
'RFL '))
then 179 if(calcul_fn.eq.1)
then 189 if(calcul_f.eq.1)
then 198 if(abs(iout).lt.2)
then 203 if(ndirboun(i).gt.mi(2)) cycle
215 if((nmethod.eq.4).and.(iperturb(1).gt.1))
then 222 bnac=(xboun(i)-v(ndir,node))/
224 if(nint(dtime*1.d28).ne.123571113)
then 225 veold(ndir,node)=veold(ndir,node)+
228 accold(ndir,node)=accold(ndir,node)+bnac
231 v(ndirboun(i),nodeboun(i))=fixed_disp
245 if((labmpc(i)(1:20).eq.
' ').or.
246 & (labmpc(i)(1:6).eq.
'CYCLIC').or.
247 & (labmpc(i)(1:9).eq.
'SUBCYCLIC'))
then 250 if((nmethod.eq.2).or.(nmethod.eq.3).or.
251 & ((iperturb(1).eq.0).and.(abs(nmethod).eq.1)))
262 if(ithermal(1).lt.2) cycle
263 elseif(ndir.gt.mi(2))
then 266 if(ithermal(1).eq.2) cycle
272 if(incrementalmpc.eq.0)
then 273 fixed_disp=fixed_disp-coefmpc(index)*
274 & v(nodempc(2,index),nodempc(1,index))
276 fixed_disp=fixed_disp-coefmpc(index)*
277 & (v(nodempc(2,index),nodempc(1,index))-
278 & vold(nodempc(2,index),nodempc(1,index)))
280 index=nodempc(3,index)
284 fixed_disp=fixed_disp/coefmpc(ist)
285 if(incrementalmpc.eq.1)
then 286 fixed_disp=fixed_disp+vold(ndir,node)
298 if((nmethod.eq.4).and.(iperturb(1).gt.1))
then 303 bnac=(fixed_disp-v(ndir,node))/
305 if(nint(dtime*1.d28).ne.123571113)
then 306 veold(ndir,node)=veold(ndir,node)+
309 accold(ndir,node)=accold(ndir,node)+bnac
312 v(ndir,node)=fixed_disp
318 if(ithermal(1).ne.2)
then 322 if(labmpc(i)(1:4).eq.
'KNOT')
then 323 irefnode=nodempc(1,nodempc(3,ipompc(i)))
324 if(irefnode.ne.irefnodeprev)
then 325 irefnodeprev=irefnode
326 iexpnode=nodempc(1,nodempc(3,nodempc(3,ipompc(i))))
327 if(labmpc(i)(5:5).ne.
'2')
then 328 irotnode=nodempc(1,nodempc(3,nodempc(3,
329 & nodempc(3,ipompc(i)))))
331 irotnode=nodempc(1,nodempc(3,nodempc(3,
332 & nodempc(3,nodempc(3,nodempc(3,ipompc(i)))))))
359 if((nmethod.eq.4).and.(iperturb(1).gt.1).and.
360 & (ithermal(1).le.1))
then 367 if((prlab(i)(1:4).eq.
'ENER').or.(prlab(i)(1:4).eq.
'ELSE').or.
368 & (prlab(i)(1:4).eq.
'CELS'))
then 369 elseif(prlab(i)(1:4).eq.
'ELKE')
then 383 if((nmethod.ge.4).and.(nmethod.le.5).and.(iperturb(1).lt.2))
then 385 if((filab(3)(1:4).eq.
'S ').or.
386 & (filab(4)(1:4).eq.
'E ').or.
387 & (filab(5)(1:4).eq.
'RF ').or.
388 & (filab(6)(1:4).eq.
'PEEQ').or.
389 & (filab(7)(1:4).eq.
'ENER').or.
390 & (filab(8)(1:4).eq.
'SDV ').or.
391 & (filab(13)(1:4).eq.
'ZZS ').or.
392 & (filab(13)(1:4).eq.
'ERR ').or.
393 & (filab(18)(1:4).eq.
'PHS ').or.
394 & (filab(20)(1:4).eq.
'MAXS').or.
395 & (filab(26)(1:4).eq.
'CONT').or.
396 & (filab(27)(1:4).eq.
'CELS')) intpointvarm=1
398 if((prlab(i)(1:4).eq.
'S ').or.
399 & (prlab(i)(1:4).eq.
'E ').or.
400 & (prlab(i)(1:4).eq.
'PEEQ').or.
401 & (prlab(i)(1:4).eq.
'ENER').or.
402 & (prlab(i)(1:4).eq.
'ELKE').or.
403 & (prlab(i)(1:4).eq.
'CDIS').or.
404 & (prlab(i)(1:4).eq.
'CSTR').or.
405 & (prlab(i)(1:4).eq.
'CELS').or.
406 & (prlab(i)(1:4).eq.
'SDV ').or.
407 & (prlab(i)(1:4).eq.
'RF '))
then 414 if((filab(9)(1:4).eq.
'HFL ').or.
415 & (filab(10)(1:4).eq.
'RFL ')) intpointvart=1
417 if((prlab(i)(1:4).eq.
'HFL ').or.
418 & (prlab(i)(1:4).eq.
'RFL ')) intpointvart=1
424 if(calcul_fn.eq.1)
then #define max(a, b)
Definition: cascade.c:32