Computation for SDOF shear model.
28
30
31 implicit none
32
33 integer*4 :: sID, ndof, direction, Usign
34 integer*4 :: idof, i, j
35 real*8 :: gr_acc
36 real*8, dimension(ndof) :: e, de, s, syspeff0, syspeff
37
38 syspeff0 = 0
39
40 do idof=1,ndof
41 syspeff(idof) = gr_acc*
sys(sid)%Ms(idof,idof)
42 enddo
43
44 if (ndof.gt.1) then
45 do idof=1,ndof-1
46 syspeff0(idof) = syspeff(idof) -
sys(sid)%IntForce(idof,direction) +
sys(sid)%IntForce(idof+1,direction)
47 enddo
48 endif
49 syspeff0(ndof) = syspeff(ndof) -
sys(sid)%IntForce(ndof,direction)
50
51
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 )
56 else
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 )
60
61
62
63
64
65 endif
66
67
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
73 endif
74
75
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
79 do j=2,ndof
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)
82 enddo
83
84 do j=1,ndof
85 sys(sid)%MaxIDR(j,direction) = max(
sys(sid)%MaxIDR(j,direction), abs(
sys(sid)%IDR(j,direction)/
sys(sid)%Floor_h))
86 enddo
87 endif
88
89 do idof= 1,ndof
90
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
93
94 sys(sid)%tempA1(idof,direction) =
sys(sid)%tempRA1(idof,direction) - gr_acc
95
96
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
100 enddo
101
102 do idof=1,ndof
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)
106
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))
115 endif
116 elseif (
sys(sid)%StructType.eq.2) then
117
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
123 endif
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) )
127 endif
128 endif
129
130 sys(sid)%IntForce(idof,direction) = s(idof)
131
132 enddo
133
134 return
subroutine linear_elastic(e0, s, de)
Defines stress-strain relation for LE SDOF oscillator.
subroutine perfectly_plastic(e0, s, de, fy)
Defines stress-strain relation for EPP SDOF oscillator.
subroutine central_difference(ndof, m, m_inv, c, dt, u, u1, u0, p, flag_minv)
Computes the displacement of the oscillator through central difference scheme.
subroutine ksteel02(props, s, e, de, et, statev, spd, yield, ideath)
subroutine trilinear(k, h, s, f, de, e, fy, fh, fu, ey, eh, eu, branch, damage)
Defines stress-strain relation for TRILINEAR SDOF oscillator.
Contains parameters for MDOF.
type(system), dimension(:), allocatable sys
SDOF system.