17 integer,
intent(in) :: sectType
18 real(kind=
kreal),
intent(out) :: d(:,:)
19 real(kind=
kreal),
intent(in) :: temp
20 real(kind=
kreal) :: ee, pp, coef1, coef2, ina(1), outa(2)
21 integer(kind=kint),
intent(in),
optional :: hdflag
23 real(kind=
kreal) :: k, g
28 call fetch_tabledata(
mc_isoelastic, matl%dict, outa, ierr, ina )
37 select case (secttype)
39 k = ee/(1.d0-2.d0*pp)/3.d0
40 g = ee/(1.d0+pp)*0.5d0
41 if(
present(hdflag) )
then
42 if( hdflag == 1 ) k = 0.d0
43 if( hdflag == 2 ) g = 0.d0
45 d(1,1)=k+(4.d0/3.d0)*g
46 d(1,2)=k-(2.d0/3.d0)*g
70 coef1=ee/((1.d0+pp)*(1.d0-2.d0*pp))
71 coef2=ee/(2.d0*(1.d0+pp))
72 d(1,1)=coef1*(1.d0-pp)
82 coef1=ee*(1.d0-pp)/((1.d0+pp)*(1.d0-2.d0*pp))
83 coef2=(1.d0-2.d0*pp)/(2.d0*(1.d0-pp))
85 d(1,2)=coef1*pp/(1.d0-pp)
101 stop
"Section type not defined"
111 integer,
intent(in) :: secttype
112 real(kind=
kreal),
intent(in) :: bij(3,3)
113 real(kind=
kreal),
intent(out) :: dmat(:,:)
114 real(kind=
kreal),
intent(in) :: temp
115 real(kind=
kreal) :: e1, e2, e3, g12, g23, g13, nyu12, nyu23,nyu13
116 real(kind=
kreal) :: nyu21,nyu32,nyu31, delta1, ina(1), outa(9)
117 real(kind=
kreal) :: tm(6,6)
123 stop
"Fails in fetching orthotropic elastic constants!"
138 delta1 = 1.d0/(1.d0 -nyu12*nyu21 -nyu23*nyu32 -nyu31*nyu13 -2.d0*nyu21*nyu32*nyu13)
141 dmat(1,1) = e1*(1.d0-nyu23*nyu32)*delta1
142 dmat(2,2) = e2*(1.d0-nyu13*nyu31)*delta1
143 dmat(3,3) = e3*(1.d0-nyu12*nyu21)*delta1
144 dmat(1,2) = e1*(nyu21+nyu31*nyu23)*delta1
145 dmat(1,3) = e1*(nyu31+nyu21*nyu32)*delta1
146 dmat(2,3) = e2*(nyu32+nyu12*nyu31)*delta1
151 dmat(2,1) = dmat(1,2)
152 dmat(3,2) = dmat(2,3)
153 dmat(3,1) = dmat(1,3)
157 dmat = matmul( transpose(tm), dmat)
158 dmat = matmul( dmat, (tm) )
165 (matl, secttype, c, &
166 e1_hat, e2_hat, e3_hat, cg1, cg2, cg3, &
171 integer,
intent(in) :: sectType, n_layer
172 real(kind =
kreal),
intent(out) :: c(:, :, :, :)
173 real(kind =
kreal),
intent(in) :: e1_hat(3), e2_hat(3), e3_hat(3)
174 real(kind =
kreal),
intent(in) :: cg1(3), cg2(3), cg3(3)
175 real(kind =
kreal),
intent(out) :: alpha
179 real(kind =
kreal) :: ee, pp, ee2, g12, g23, g31, theta, pp2
180 real(kind =
kreal) :: outa(2)
181 real(kind =
kreal) :: lambda1, lambda2,
mu, k_correction
182 real(kind =
kreal) :: c_hat(3, 3, 3, 3), d(5,5), d_hat(5,5), d_temp(5,5), t(5,5)
183 real(kind =
kreal) :: e_hat_dot_cg(3, 3)
184 real(kind =
kreal) :: alpha_over_mu
186 integer :: index_i(5), index_j(5), index_k(5), index_l(5)
187 integer :: is, js, ii, ij, ik, il
188 integer :: i, j, k, l, total_layer, matl_type
198 matl_type = matl%shell_var(n_layer)%ortho
199 if(matl_type == 0)
then
202 ee = matl%shell_var(n_layer)%ee
203 pp = matl%shell_var(n_layer)%pp
217 lambda1 = ee/( 1.0d0-pp*pp )
219 mu = 0.5d0*ee/( 1.0d0+pp )
224 k_correction = 5.0d0/6.0d0
229 alpha = alpha_over_mu*
mu
234 c_hat(:, :, :, :) = 0.0d0
238 c_hat(1, 1, 1, 1) = lambda1
239 c_hat(1, 1, 2, 2) = lambda2
240 c_hat(2, 2, 1, 1) = lambda2
241 c_hat(2, 2, 2, 2) = lambda1
242 c_hat(1, 2, 1, 2) =
mu
243 c_hat(1, 2, 2, 1) =
mu
244 c_hat(2, 1, 1, 2) =
mu
245 c_hat(2, 1, 2, 1) =
mu
246 c_hat(1, 3, 1, 3) = k_correction*
mu
247 c_hat(1, 3, 3, 1) = k_correction*
mu
248 c_hat(2, 3, 2, 3) = k_correction*
mu
249 c_hat(2, 3, 3, 2) = k_correction*
mu
250 c_hat(3, 1, 3, 1) = k_correction*
mu
251 c_hat(3, 1, 1, 3) = k_correction*
mu
252 c_hat(3, 2, 3, 2) = k_correction*
mu
253 c_hat(3, 2, 2, 3) = k_correction*
mu
257 elseif(matl_type == 1)
then
258 total_layer = matl%totallyr
260 ee = matl%shell_var(n_layer)%ee
261 pp = matl%shell_var(n_layer)%pp
262 ee2 = matl%shell_var(n_layer)%ee2
263 g12 = matl%shell_var(n_layer)%g12
264 g23 = matl%shell_var(n_layer)%g23
265 g31 = matl%shell_var(n_layer)%g31
266 theta = matl%shell_var(n_layer)%angle
273 k_correction = 5.0d0/6.0d0
277 alpha = alpha_over_mu * 0.5d0 * ee / ( 1.0d0+pp )
290 d(1,1) = ee / (1.0d0 - pp * pp2)
291 d(1,2) = pp2 * ee / (1.0d0- pp * pp2)
292 d(2,1) = pp2 * ee / (1.0d0- pp * pp2)
293 d(2,2) = ee2 / (1.0d0 - pp * pp2)
298 t(1,1) = cos(theta) * cos(theta)
299 t(1,2) = sin(theta) * sin(theta)
300 t(2,1) = sin(theta) * sin(theta)
301 t(2,2) = cos(theta) * cos(theta)
302 t(3,3) = cos(theta) * cos(theta) - sin(theta) * sin(theta)
303 t(1,3) = sin(theta) * cos(theta)
304 t(2,3) = -sin(theta) * cos(theta)
305 t(3,1) = -2.0d0 * sin(theta) * cos(theta)
306 t(3,2) = 2.0d0 * sin(theta) * cos(theta)
314 d_temp(1,1) = d(1,1)*t(1,1)+d(1,2)*t(2,1)
315 d_temp(1,2) = d(1,1)*t(1,2)+d(1,2)*t(2,2)
316 d_temp(2,1) = d(2,1)*t(1,1)+d(2,2)*t(2,1)
317 d_temp(2,2) = d(2,1)*t(1,2)+d(2,2)*t(2,2)
318 d_temp(3,1) = d(3,3)*t(3,1)
319 d_temp(3,2) = d(3,3)*t(3,2)
320 d_temp(1,3) = d(1,1)*t(1,3)+d(1,2)*t(2,3)
321 d_temp(2,3) = d(2,1)*t(1,3)+d(2,2)*t(2,3)
322 d_temp(3,3) = d(3,3)*t(3,3)
323 d_temp(4,4) = d(4,4)*t(4,4)
324 d_temp(4,5) = d(4,4)*t(4,5)
325 d_temp(5,4) = d(5,5)*t(5,4)
326 d_temp(5,5) = d(5,5)*t(5,5)
330 d_hat(1,1) = t(1,1)*d_temp(1,1)+t(1,2)*d_temp(2,1)+t(3,1)*d_temp(3,1)
331 d_hat(1,2) = t(1,1)*d_temp(1,2)+t(1,2)*d_temp(2,2)+t(3,1)*d_temp(3,2)
332 d_hat(2,1) = t(2,1)*d_temp(1,1)+t(2,2)*d_temp(2,1)+t(3,2)*d_temp(3,1)
333 d_hat(2,2) = t(2,1)*d_temp(1,2)+t(2,2)*d_temp(2,2)+t(3,2)*d_temp(3,2)
334 d_hat(3,1) = t(1,3)*d_temp(1,1)+t(2,3)*d_temp(2,1)+t(3,3)*d_temp(3,1)
335 d_hat(3,2) = t(1,3)*d_temp(1,2)+t(2,3)*d_temp(2,2)+t(3,3)*d_temp(3,2)
336 d_hat(1,3) = t(1,1)*d_temp(1,3)+t(1,2)*d_temp(2,3)+t(3,1)*d_temp(3,3)
337 d_hat(2,3) = t(2,1)*d_temp(1,3)+t(2,2)*d_temp(2,3)+t(3,2)*d_temp(3,3)
338 d_hat(3,3) = t(1,3)*d_temp(1,3)+t(2,3)*d_temp(2,3)+t(3,3)*d_temp(3,3)
339 d_hat(4,4) = t(4,4)*d_temp(4,4)+t(5,4)*d_temp(5,4)
340 d_hat(4,5) = t(4,4)*d_temp(4,5)+t(5,4)*d_temp(5,5)
341 d_hat(5,4) = t(4,5)*d_temp(4,4)+t(5,5)*d_temp(5,4)
342 d_hat(5,5) = t(4,5)*d_temp(4,5)+t(5,5)*d_temp(5,5)
347 c_hat(:, :, :, :) = 0.0d0
386 c_hat(ii, ij, ik, il) = d_hat(is, js)
394 write(*,*)
'shell matl type isnot collect'
398 select case( secttype )
402 = e1_hat(1)*cg1(1)+e1_hat(2)*cg1(2) &
405 = e2_hat(1)*cg1(1)+e2_hat(2)*cg1(2) &
407 e_hat_dot_cg(3, 1) = 0.0d0
409 = e1_hat(1)*cg2(1)+e1_hat(2)*cg2(2) &
412 = e2_hat(1)*cg2(1)+e2_hat(2)*cg2(2) &
414 e_hat_dot_cg(3, 2) = 0.0d0
416 = e1_hat(1)*cg3(1)+e1_hat(2)*cg3(2) &
419 = e2_hat(1)*cg3(1)+e2_hat(2)*cg3(2) &
422 = e3_hat(1)*cg3(1)+e3_hat(2)*cg3(2) &
429 c(1, 1, 1, 1) = 0.0d0
430 c(2, 2, 1, 1) = 0.0d0
431 c(1, 2, 1, 1) = 0.0d0
432 c(2, 2, 2, 2) = 0.0d0
433 c(1, 2, 2, 2) = 0.0d0
434 c(1, 2, 1, 2) = 0.0d0
435 c(3, 1, 1, 1) = 0.0d0
436 c(3, 1, 2, 2) = 0.0d0
437 c(3, 1, 1, 2) = 0.0d0
438 c(2, 3, 1, 1) = 0.0d0
439 c(2, 3, 2, 2) = 0.0d0
440 c(2, 3, 1, 2) = 0.0d0
441 c(3, 1, 3, 1) = 0.0d0
442 c(3, 1, 2, 3) = 0.0d0
443 c(2, 3, 2, 3) = 0.0d0
456 *e_hat_dot_cg(i, 1)*e_hat_dot_cg(j ,1) &
457 *e_hat_dot_cg(k, 1)*e_hat_dot_cg(l, 1)
461 *e_hat_dot_cg(i, 2)*e_hat_dot_cg(j, 2) &
462 *e_hat_dot_cg(k, 1)*e_hat_dot_cg(l, 1)
466 *e_hat_dot_cg(i, 1)*e_hat_dot_cg(j, 2) &
467 *e_hat_dot_cg(k, 1)*e_hat_dot_cg(l, 1)
471 *e_hat_dot_cg(i, 2)*e_hat_dot_cg(j, 2) &
472 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 2)
477 *e_hat_dot_cg(i, 1)*e_hat_dot_cg(j, 2) &
478 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 2)
482 *e_hat_dot_cg(i, 1)*e_hat_dot_cg(j, 2) &
483 *e_hat_dot_cg(k, 1)*e_hat_dot_cg(l, 2)
492 *e_hat_dot_cg(i, 3)*e_hat_dot_cg(j, 1) &
493 *e_hat_dot_cg(k, 1)*e_hat_dot_cg(l, 1)
497 *e_hat_dot_cg(i, 3)*e_hat_dot_cg(j, 1) &
498 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 2)
502 *e_hat_dot_cg(i, 3)*e_hat_dot_cg(j, 1) &
503 *e_hat_dot_cg(k, 1)*e_hat_dot_cg(l, 2)
516 *e_hat_dot_cg(i, 2)*e_hat_dot_cg(j, 3) &
517 *e_hat_dot_cg(k, 1)*e_hat_dot_cg(l, 1)
521 *e_hat_dot_cg(i, 2)*e_hat_dot_cg(j, 3) &
522 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 2)
526 *e_hat_dot_cg(i, 2)*e_hat_dot_cg(j, 3) &
527 *e_hat_dot_cg(k, 1)*e_hat_dot_cg(l, 2)
544 *e_hat_dot_cg(i, 3)*e_hat_dot_cg(j, 1) &
545 *e_hat_dot_cg(k, 3)*e_hat_dot_cg(l, 1)
566 *e_hat_dot_cg(i, 3)*e_hat_dot_cg(j, 1) &
567 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 3)
580 *e_hat_dot_cg(i, 2)*e_hat_dot_cg(j, 3) &
581 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 3)
591 c(1, 1, 2, 2) = c(2, 2, 1, 1)
592 c(1, 1, 1, 2) = c(1, 2, 1, 1)
593 c(1, 1, 2, 3) = c(2, 3, 1, 1)
594 c(1, 1, 3, 1) = c(3, 1, 1, 1)
595 c(2, 2, 1, 2) = c(1, 2, 2, 2)
596 c(2, 2, 2, 3) = c(2, 3, 2, 2)
597 c(2, 2, 3, 1) = c(3, 1, 2, 2)
598 c(1, 2, 2, 3) = c(2, 3, 1, 2)
599 c(1, 2, 3, 1) = c(3, 1, 1, 2)
600 c(2, 3, 3, 1) = c(3, 1, 2, 3)