40#include "implicit_f.inc"
58 my_real,
DIMENSION(:),
ALLOCATABLE ::
60 my_real,
POINTER,
DIMENSION(:) ::
66 my_real,
PARAMETER :: csta = 40.0d0
68 my_real,
PARAMETER :: cdamp = 0.7d0
74 stifn => nloc_dmg%STIFNL(1:nloc_dmg%L_NLOC,1)
75 mass => nloc_dmg%MASS(1:nloc_dmg%L_NLOC)
78 ALLOCATE(dtn(nloc_dmg%L_NLOC))
79 dtn(1:nloc_dmg%L_NLOC) = zero
84 npos = nloc_dmg%POSI(n)
86 nddl = nloc_dmg%POSI(n+1) - npos
88 DO i = npos,npos+nddl-1
89 dtn(i) = dtfac1(11)*cdamp*sqrt(two*mass(i)/
max(stifn(i),em20))
90 dtnod =
min(dtnod,dtn(i))
94 dtnod_nlocal =
min(dtnod_nlocal,dtnod)
100 IF ((idtmin(11)==3).OR.(idtmin(11)==4).OR.(idtmin(11)==8))
THEN
102 IF (dtnod < dtmin1(11)*(sqrt(csta)))
THEN
105 npos = nloc_dmg%POSI(n)
107 nddl = nloc_dmg%POSI(n+1) - npos
109 DO i = npos,npos+nddl-1
110 IF (dtn(i) < dtmin1(11))
THEN
111 dt2p = dtmin1(11)/(dtfac1(11)*cdamp)
112 mass(i) = csta*
max(mass(i),half * stifn(i) * dt2p * dt2p * onep00001)
117 dtnod = dtmin1(11)*(sqrt(csta))
122 IF (dtnod < dt2t)
THEN
123 dt2t =
min(dt2t,dtnod)
125#include "lockoff.inc"
130 npos = nloc_dmg%POSI(n)
132 nddl = nloc_dmg%POSI(n+1) - npos
134 stifn(npos:npos+nddl-1) = em20
138 IF (
ALLOCATED(dtn))
DEALLOCATE(dtn)