33 integer*4 :: sID, ndof, direction, Usign
34 integer*4 :: idof, i, j
36 real*8,
dimension(ndof) :: e, de, s, syspeff0, syspeff
41 syspeff(idof) = gr_acc*
sys(sid)%Ms(idof,idof)
46 syspeff0(idof) = syspeff(idof) -
sys(sid)%IntForce(idof,direction) +
sys(sid)%IntForce(idof+1,direction)
49 syspeff0(ndof) = syspeff(ndof) -
sys(sid)%IntForce(ndof,direction)
52 if (
sys(sid)%StructType.eq.1)
then
54 sys(sid)%tempU(1,direction),
sys(sid)%tempU1(1,direction), &
55 sys(sid)%tempU0(1,direction), syspeff0,
sys(sid)%flag_Minv )
58 sys(sid)%dt,
sys(sid)%tempU(1:ndof,direction),
sys(sid)%tempU1(1:ndof,direction), &
59 sys(sid)%tempU0(1:ndof,direction), syspeff0,
sys(sid)%flag_Minv )
68 if(
sys(sid)%const_law.eq.3)
then
69 if (
sys(sid)%tempU(1, direction).ge.0.0) usign = 1
70 if (
sys(sid)%tempU(1, direction).lt.0.0) usign = -1
71 if ((abs(
sys(sid)%tempU(1, direction)).ge.
sys(sid)%EU).or.(
sys(sid)%damage(direction).eq.1)) &
72 sys(sid)%tempU(1,direction) = usign*
sys(sid)%EU
76 sys(sid)%variIDR(1,direction) =
sys(sid)%tempU(1,direction) -
sys(sid)%IDR(1,direction)
77 sys(sid)%IDR(1,direction)=
sys(sid)%tempU(1,direction);
78 if (
sys(sid)%StructType.eq.2)
then
80 sys(sid)%variIDR(j,direction) = (
sys(sid)%tempU(j,direction) -
sys(sid)%tempU(j-1,direction)) -
sys(sid)%IDR(j,direction)
81 sys(sid)%IDR(j,direction) =
sys(sid)%tempU(j,direction) -
sys(sid)%tempU(j-1,direction)
85 sys(sid)%MaxIDR(j,direction) = max(
sys(sid)%MaxIDR(j,direction), abs(
sys(sid)%IDR(j,direction)/
sys(sid)%Floor_h))
91 sys(sid)%tempRA1(idof,direction) = (
sys(sid)%tempU(idof,direction) +
sys(sid)%tempU0(idof,direction) - &
92 2.d0*
sys(sid)%tempU1(idof, direction))/
sys(sid)%dt2
94 sys(sid)%tempA1(idof,direction) =
sys(sid)%tempRA1(idof,direction) - gr_acc
97 sys(sid)%tempU0(idof,direction)=
sys(sid)%tempU1(idof,direction)
98 sys(sid)%tempU1(idof,direction)=
sys(sid)%tempU(idof,direction)
99 sys(sid)%tempU(idof,direction)=0
103 e(idof) =
sys(sid)%IDR(idof,direction) -
sys(sid)%variIDR(idof,direction)
104 de(idof)=
sys(sid)%variIDR(idof,direction)
105 s(idof) =
sys(sid)%IntForce(idof,direction)
107 if (
sys(sid)%StructType.eq.1)
then
108 if (
sys(sid)%const_law.eq.1)
then
110 elseif (
sys(sid)%const_law.eq.2)
then
112 elseif (
sys(sid)%const_law.eq.3)
then
113 call trilinear(
sys(sid)%Ks,
sys(sid)%Hs,
sys(sid)%Ss, s, de, e,
sys(sid)%FY,
sys(sid)%FH,
sys(sid)%FU,
sys(sid)%EY, &
114 sys(sid)%EH,
sys(sid)%EU,
sys(sid)%branch(direction),
sys(sid)%damage(direction))
116 elseif (
sys(sid)%StructType.eq.2)
then
118 if (
sys(sid)%const_law.eq.1)
then
120 elseif (
sys(sid)%const_law.eq.2)
then
121 if ((abs(
sys(sid)%IDR(idof,direction))/
sys(sid)%Floor_h).GT.
sys(sid)%dval(idof,4))
then
122 sys(sid)%MDOFIDeath(idof,direction) = 1
124 call ksteel02(
sys(sid)%props(idof,1:10,1), s(idof), e(idof), de(idof),
sys(sid)%MDOFEt(idof,direction), &
125 sys(sid)%MDOFstatev(idof,1:11,direction),
sys(sid)%MDOFspd(idof,direction), &
126 sys(sid)%MDOFyield(idof,direction),
sys(sid)%MDOFIDeath(idof,direction) )
130 sys(sid)%IntForce(idof,direction) = s(idof)
subroutine trilinear(k, h, s, f, de, e, fy, fh, fu, ey, eh, eu, branch, damage)
Defines stress-strain relation for TRILINEAR SDOF oscillator.