33
34
35
37
38
39
40#include "implicit_f.inc"
41#include "comlock.inc"
42
43
44
45#include "scr02_c.inc"
46#include "scr18_c.inc"
47
48
49
50 INTEGER NODFT, NODLT
51 TYPE(NLOCAL_STR_), TARGET :: NLOC_DMG
53 . dt2t,dtnod_nlocal
54
55
56
57 INTEGER N,I,NDDL,NPOS
58 my_real,
DIMENSION(:),
ALLOCATABLE ::
59 . dtn
60 my_real,
POINTER,
DIMENSION(:) ::
61 . mass,stifn
63 . dtnod,dt2p
64
65 dtnod = ep20
66
67 IF (nodadt > 0) THEN
68
69
70 stifn => nloc_dmg%STIFNL(1:nloc_dmg%L_NLOC,1)
71 mass => nloc_dmg%MASS(1:nloc_dmg%L_NLOC)
72
73
74 ALLOCATE(dtn(nloc_dmg%L_NLOC))
75 dtn(1:nloc_dmg%L_NLOC) = zero
76
77
78 DO n = nodft,nodlt
79
80 npos = nloc_dmg%POSI(n)
81
82 nddl = nloc_dmg%POSI(n+1) - npos
83
84 DO i = npos,npos+nddl-1
85 dtn(i) = dtfac1(11)*cdamp*sqrt(two*mass(i)/
max(stifn(i),em20))
86 dtnod =
min(dtnod,dtn(i))
87 ENDDO
88 ENDDO
89#include "lockon.inc"
90 dtnod_nlocal =
min(dtnod_nlocal,dtnod)
91#include "lockoff.inc"
92
94 dtnod = dtnod_nlocal
95
96 IF ((idtmin(11)==3).OR.(idtmin(11)==4).OR.(idtmin(11)==8)) THEN
97
98 IF (dtnod < dtmin1(11)*(sqrt(csta))) THEN
99 DO n = nodft,nodlt
100
101 npos = nloc_dmg%POSI(n)
102
103 nddl = nloc_dmg%POSI(n+1) - npos
104
105 DO i = npos,npos+nddl-1
106 IF (dtn(i) < dtmin1(11)) THEN
107 dt2p = dtmin1(11)/(dtfac1(11)*cdamp)
108 mass(i) = csta*
max(mass(i),half * stifn(i) * dt2p * dt2p * onep00001)
109 ENDIF
110 ENDDO
111 ENDDO
112 dtnod = dtmin1(11)*(sqrt(csta))
113 ENDIF
114 ENDIF
115
116#include "lockon.inc"
117
118 IF (dtnod < dt2t) THEN
119 dt2t =
min(dt2t,dtnod)
120 ENDIF
121#include "lockoff.inc"
122
123
124 DO n = nodft,nodlt
125
126 npos = nloc_dmg%POSI(n)
127
128 nddl = nloc_dmg%POSI(n+1) - npos
129
130 stifn(npos:npos+nddl-1) = em20
131 ENDDO
132
133
134 IF (ALLOCATED(dtn)) DEALLOCATE(dtn)
135
136 ENDIF