74 alfa11,alfa12,alfa13,alfa21,alfa22,alfa23,&
75 alfa31,alfa32,alfa33,beta11,beta12,beta13,&
76 beta21,beta22,beta23,beta31,beta32,beta33,&
77 gamma1,gamma2,gamma3,delta1,delta2,delta3,&
81 func_type,func_indx,func_data,nfdata,nf,t_stress,tag_func,yon,gamma_new,&
82 tcase, nnod_loc, vs_tria)
89 integer*4 :: nnt,tagmat
91 integer*4 :: vcase,nfdata
92 integer*4 :: nf,fn,ielem,tcase,nnod_loc,in,is
94integer*4,
dimension(nf) :: func_type
95integer*4,
dimension(nf +1) :: func_indx
96 integer*4,
dimension(0:cs_nnz) :: cs
97 integer*4,
dimension(nf) :: tag_func
99 integer*4,
dimension(nn,nn,nn) :: yon
101 real*8 :: alfa11,alfa12,alfa13,alfa21,alfa22,alfa23,alfa31,alfa32,alfa33
102 real*8 :: beta11,beta12,beta13,beta21,beta22,beta23,beta31,beta32,beta33
103 real*8 :: gamma1,gamma2,gamma3,delta1,delta2,delta3
104 real*8 :: dxdx,dxdy,dxdz,dydx,dydy,dydz,dzdx,dzdy,dzdz,det_j
109 real*8 :: csi,fpeak,q,pi,gamma
111 real*8,
dimension(nfdata) :: func_data
112 real*8,
dimension(nn) :: ct,ww
113 real*8,
dimension(nnod_loc) :: vs_tria
115 real*8,
dimension(nn,nn) :: dd
117 real*8,
dimension(nn,nn,nn) :: rho,gamma0,gamma_new
118 real*8,
dimension(nn,nn,nn) :: mc_el,mck_el
119 real*8,
dimension(nn,nn,nn) :: r_el
130 if (yon(i,j,k).eq.1)
then
132 dxdx = alfa11 +beta12*ct(k) +beta13*ct(j) &
134 dydx = alfa21 +beta22*ct(k) +beta23*ct(j) &
136 dzdx = alfa31 +beta32*ct(k) +beta33*ct(j) &
138 dxdy = alfa12 +beta11*ct(k) +beta13*ct(i) &
140 dydy = alfa22 +beta21*ct(k) +beta23*ct(i) &
142 dzdy = alfa32 +beta31*ct(k) +beta33*ct(i) &
144 dxdz = alfa13 +beta11*ct(j) +beta12*ct(i) &
146 dydz = alfa23 +beta21*ct(j) +beta22*ct(i) &
148 dzdz = alfa33 +beta31*ct(j) +beta32*ct(i) &
150 det_j = dxdz * (dydx*dzdy - dzdx*dydy) &
151 - dydz * (dxdx*dzdy - dzdx*dxdy)
152 + dzdz * (dxdx*dydy - dydx*dxdy)
154 is = nn*nn*(k -1) +nn*(j -1) +i
155 in = cs(cs(ielem -1) +is)
158 if(tcase .ne. 16)
then
160 if (vcase.eq.tag_func(fn))
then
161 if (func_type(fn) .eq. 61)
then
167 pi = 4.0d0 * datan(1.0d0)
168 gamma = pi * fpeak / q
171 if (gamma0(i,j,k) .ge. gamma) gamma = gamma0
172 gamma_new(i,j,k) = gamma
174 mc_el(i,j,k) = 2.d0 * gamma * rho(i,j,k) &
176 mck_el(i,j,k) = (gamma**2) * rho(i,j,k) &
182 elseif (tcase .eq. 16)
then
185 if (vcase .eq. tag_func(fn))
then
186 if (func_type(fn) .eq. 61 .and. vs_tria(in)
then
193 pi = 4.0d0 * datan(1.0d0)
194 gamma = pi * fpeak / q
197 if (gamma0(i,j,k) .ge. gamma) gamma = gamma0
198 gamma_new(i,j,k) = gamma
200 mc_el(i,j,k) = 2.d0 * gamma * rho(i,j,k)
202 mck_el(i,j,k) = (gamma**2) * rho(i,j,k)
206 elseif (func_type(fn) .eq. 63 .and. vs_tria
then
212 pi = 4.0d0 * datan(1.0d0)
213 gamma = pi * fpeak / q
216 if (gamma0(i,j,k) .ge. gamma) gamma = gamma0
217 gamma_new(i,j,k) = gamma
219 mc_el(i,j,k) = 2.d0 * gamma * rho(i,j,k)
221 mck_el(i,j,k) = (gamma**2) * rho(i,j,k)
subroutine make_damping_matrix_nle(nn, ct, ww, dd, rho, gamma0, alfa11, alfa12, alfa13, alfa21, alfa22, alfa23, alfa31, alfa32, alfa33, beta11, beta12, beta13, beta21, beta22, beta23, beta31, beta32, beta33, gamma1, gamma2, gamma3, delta1, delta2, delta3, mc_el, mck_el, cs_nnz, cs, ielem, vcase, r_el, fpeak, func_type, func_indx, func_data, nfdata, nf, t_str
Make damping matrices for non-linear elastic materials.