33 integer*4 :: sID, direction
34 real*8,
dimension(3) :: gr_acc
35 real*8,
dimension(4) :: tn, tn1, tn2, tn3, tn4, temp, du, df, vec, a_old, v_old, u_old, f_old
37 tn = 0; tn1 = 0; tn2 = 0; tn3 = 0; tn4 = 0; temp = 0; du = 0; df = 0; vec = 0
38 a_old =
sys(sid)%a(:,direction); v_old =
sys(sid)%v(:,direction); u_old =
sys(sid)%u(:,direction); f_old =
sys(sid)%f(:,direction)
40 tn1(1) =
sys(sid)%Ms(1,1)*gr_acc(direction)
41 tn1(2) =
sys(sid)%Mf*gr_acc(direction)
42 tn1(4) = (
sys(sid)%Ms(1,1) +
sys(sid)%Mf)*gr_acc(3)
44 temp = (1 - 2*
sys(sid)%beta_newmark)/(2*
sys(sid)%beta_newmark)*a_old + 1/(
sys(sid)%beta_newmark*
sys(sid)%dt)*v_old
45 tn2 = matmul(
sys(sid)%MAT_M,temp)
47 temp = (
sys(sid)%gamma_newmark - 2*
sys(sid)%beta_newmark)/(2*
sys(sid)%beta_newmark)*
sys(sid)%dt*a_old + &
48 (
sys(sid)%gamma_newmark -
sys(sid)%beta_newmark)/(
sys(sid)%beta_newmark)*v_old
49 tn3 = matmul(
sys(sid)%MAT_C,temp)
51 tn4 = matmul(
sys(sid)%MAT_KS,u_old)
53 tn = tn1 + tn2 + tn3 - tn4 - f_old
55 du = matmul(
sys(sid)%MAT_MCinv,tn)
57 df = matmul(
sys(sid)%MAT_KI,du)
59 sys(sid)%u(:,direction) = u_old + du
61 sys(sid)%f(:,direction) = f_old + df
63 vec = matmul(
sys(sid)%MAT_KS,
sys(sid)%u(:,direction))
64 sys(sid)%fs(direction) = vec(1)
65 sys(sid)%fb(direction) =
sys(sid)%f(2,direction) +
sys(sid)%Mf*(gr_acc(direction) - a_old(2))
67 sys(sid)%v(:,direction) = v_old + (2*
sys(sid)%beta_newmark -
sys(sid)%gamma_newmark)/(2*
sys(sid)%beta_newmark)*
sys(sid)%dt*a_old + &
68 sys(sid)%gamma_newmark/(
sys(sid)%beta_newmark*
sys(sid)%dt)*(du - v_old*
sys(sid)%dt)
70 sys(sid)%a(:,direction) = (2*
sys(sid)%beta_newmark - 1)/(2*
sys(sid)%beta_newmark)*a_old + &
71 1/(
sys(sid)%beta_newmark*
sys(sid)%dt2)*(du - v_old*
sys(sid)%dt)
73 sys(sid)%IntForce(1,direction) =
sys(sid)%f(2,direction)