17 integer,
intent(in) :: sectType
18 real(kind=
kreal),
intent(out) :: d(:,:)
19 real(kind=
kreal),
optional :: temp
20 real(kind=
kreal) :: ee, pp, coef1, coef2, ina(1), outa(2)
24 if(
present(temp) )
then
26 call fetch_tabledata(
mc_isoelastic, matl%dict, outa, ierr, ina )
46 select case (secttype)
48 d(1,1)=ee*(1.d0-pp)/(1.d0-2.d0*pp)/(1.d0+pp)
49 d(1,2)=ee*pp/(1.d0-2.d0*pp)/(1.d0+pp)
57 d(4,4)=ee/(1.d0+pp)*0.5d0
58 d(5,5)=ee/(1.d0+pp)*0.5d0
59 d(6,6)=ee/(1.d0+pp)*0.5d0
73 coef1=ee/((1.d0+pp)*(1.d0-2.d0*pp))
74 coef2=ee/(2.d0*(1.d0+pp))
75 d(1,1)=coef1*(1.d0-pp)
85 coef1=ee*(1.d0-pp)/((1.d0+pp)*(1.d0-2.d0*pp))
86 coef2=(1.d0-2.d0*pp)/(2.d0*(1.d0-pp))
88 d(1,2)=coef1*pp/(1.d0-pp)
104 stop
"Section type not defined"
114 integer,
intent(in) :: sectType
115 real(kind=
kreal),
intent(in) :: bij(3,3)
116 real(kind=
kreal),
intent(out) :: dmat(:,:)
117 real(kind=
kreal),
optional :: temp
118 real(kind=
kreal) :: e1, e2, e3, g12, g23, g13, nyu12, nyu23,nyu13
119 real(kind=
kreal) :: nyu21,nyu32,nyu31, delta1, ina(1), outa(9)
120 real(kind=
kreal) :: tm(6,6)
123 if(
present(temp) )
then
127 stop
"Fails in fetching orthotropic elastic constants!"
132 stop
"Fails in fetching orthotropic elastic constants!"
148 delta1 = 1.d0/(1.d0 -nyu12*nyu21 -nyu23*nyu32 -nyu31*nyu13 -2.d0*nyu21*nyu32*nyu13)
151 dmat(1,1) = e1*(1.d0-nyu23*nyu32)*delta1
152 dmat(2,2) = e2*(1.d0-nyu13*nyu31)*delta1
153 dmat(3,3) = e3*(1.d0-nyu12*nyu21)*delta1
154 dmat(1,2) = e1*(nyu21+nyu31*nyu23)*delta1
155 dmat(1,3) = e1*(nyu31+nyu21*nyu32)*delta1
156 dmat(2,3) = e2*(nyu32+nyu12*nyu31)*delta1
161 dmat(2,1) = dmat(1,2)
162 dmat(3,2) = dmat(2,3)
163 dmat(3,1) = dmat(1,3)
167 dmat = matmul( transpose(tm), dmat)
168 dmat = matmul( dmat, (tm) )
175 (matl, secttype, c, &
176 e1_hat, e2_hat, e3_hat, cg1, cg2, cg3, &
181 integer,
intent(in) :: sectType, n_layer
182 real(kind =
kreal),
intent(out) :: c(:, :, :, :)
183 real(kind =
kreal),
intent(in) :: e1_hat(3), e2_hat(3), e3_hat(3)
184 real(kind =
kreal),
intent(in) :: cg1(3), cg2(3), cg3(3)
185 real(kind =
kreal),
intent(out) :: alpha
189 real(kind =
kreal) :: ee, pp, ee2, g12, g23, g31, theta, pp2
190 real(kind =
kreal) :: outa(2)
191 real(kind =
kreal) :: lambda1, lambda2, mu, k_correction
192 real(kind =
kreal) :: c_hat(3, 3, 3, 3), d(5,5), d_hat(5,5), d_temp(5,5), t(5,5)
193 real(kind =
kreal) :: e_hat_dot_cg(3, 3)
194 real(kind =
kreal) :: alpha_over_mu
196 integer :: index_i(5), index_j(5), index_k(5), index_l(5)
197 integer :: is, js, ii, ij, ik, il
198 integer :: i, j, k, l, total_layer, matl_type
208 matl_type = matl%shell_var(n_layer)%ortho
209 if(matl_type == 0)
then
212 ee = matl%shell_var(n_layer)%ee
213 pp = matl%shell_var(n_layer)%pp
227 lambda1 = ee/( 1.0d0-pp*pp )
229 mu = 0.5d0*ee/( 1.0d0+pp )
234 k_correction = 5.0d0/6.0d0
239 alpha = alpha_over_mu*mu
244 c_hat(:, :, :, :) = 0.0d0
248 c_hat(1, 1, 1, 1) = lambda1
249 c_hat(1, 1, 2, 2) = lambda2
250 c_hat(2, 2, 1, 1) = lambda2
251 c_hat(2, 2, 2, 2) = lambda1
252 c_hat(1, 2, 1, 2) = mu
253 c_hat(1, 2, 2, 1) = mu
254 c_hat(2, 1, 1, 2) = mu
255 c_hat(2, 1, 2, 1) = mu
256 c_hat(1, 3, 1, 3) = k_correction*mu
257 c_hat(1, 3, 3, 1) = k_correction*mu
258 c_hat(2, 3, 2, 3) = k_correction*mu
259 c_hat(2, 3, 3, 2) = k_correction*mu
260 c_hat(3, 1, 3, 1) = k_correction*mu
261 c_hat(3, 1, 1, 3) = k_correction*mu
262 c_hat(3, 2, 3, 2) = k_correction*mu
263 c_hat(3, 2, 2, 3) = k_correction*mu
267 elseif(matl_type == 1)
then
268 total_layer = matl%totallyr
270 ee = matl%shell_var(n_layer)%ee
271 pp = matl%shell_var(n_layer)%pp
272 ee2 = matl%shell_var(n_layer)%ee2
273 g12 = matl%shell_var(n_layer)%g12
274 g23 = matl%shell_var(n_layer)%g23
275 g31 = matl%shell_var(n_layer)%g31
276 theta = matl%shell_var(n_layer)%angle
283 k_correction = 5.0d0/6.0d0
287 alpha = alpha_over_mu * 0.5d0 * ee / ( 1.0d0+pp )
300 d(1,1) = ee / (1.0d0 - pp * pp2)
301 d(1,2) = pp2 * ee / (1.0d0- pp * pp2)
302 d(2,1) = pp2 * ee / (1.0d0- pp * pp2)
303 d(2,2) = ee2 / (1.0d0 - pp * pp2)
308 t(1,1) = cos(theta) * cos(theta)
309 t(1,2) = sin(theta) * sin(theta)
310 t(2,1) = sin(theta) * sin(theta)
311 t(2,2) = cos(theta) * cos(theta)
312 t(3,3) = cos(theta) * cos(theta) - sin(theta) * sin(theta)
313 t(1,3) = sin(theta) * cos(theta)
314 t(2,3) = -sin(theta) * cos(theta)
315 t(3,1) = -2.0d0 * sin(theta) * cos(theta)
316 t(3,2) = 2.0d0 * sin(theta) * cos(theta)
324 d_temp(1,1) = d(1,1)*t(1,1)+d(1,2)*t(2,1)
325 d_temp(1,2) = d(1,1)*t(1,2)+d(1,2)*t(2,2)
326 d_temp(2,1) = d(2,1)*t(1,1)+d(2,2)*t(2,1)
327 d_temp(2,2) = d(2,1)*t(1,2)+d(2,2)*t(2,2)
328 d_temp(3,1) = d(3,3)*t(3,1)
329 d_temp(3,2) = d(3,3)*t(3,2)
330 d_temp(1,3) = d(1,1)*t(1,3)+d(1,2)*t(2,3)
331 d_temp(2,3) = d(2,1)*t(1,3)+d(2,2)*t(2,3)
332 d_temp(3,3) = d(3,3)*t(3,3)
333 d_temp(4,4) = d(4,4)*t(4,4)
334 d_temp(4,5) = d(4,4)*t(4,5)
335 d_temp(5,4) = d(5,5)*t(5,4)
336 d_temp(5,5) = d(5,5)*t(5,5)
340 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)
341 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)
342 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)
343 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)
344 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)
345 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)
346 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)
347 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)
348 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)
349 d_hat(4,4) = t(4,4)*d_temp(4,4)+t(5,4)*d_temp(5,4)
350 d_hat(4,5) = t(4,4)*d_temp(4,5)+t(5,4)*d_temp(5,5)
351 d_hat(5,4) = t(4,5)*d_temp(4,4)+t(5,5)*d_temp(5,4)
352 d_hat(5,5) = t(4,5)*d_temp(4,5)+t(5,5)*d_temp(5,5)
357 c_hat(:, :, :, :) = 0.0d0
396 c_hat(ii, ij, ik, il) = d_hat(is, js)
404 write(*,*)
'shell matl type isnot collect'
408 select case( secttype )
412 = e1_hat(1)*cg1(1)+e1_hat(2)*cg1(2) &
415 = e2_hat(1)*cg1(1)+e2_hat(2)*cg1(2) &
417 e_hat_dot_cg(3, 1) = 0.0d0
419 = e1_hat(1)*cg2(1)+e1_hat(2)*cg2(2) &
422 = e2_hat(1)*cg2(1)+e2_hat(2)*cg2(2) &
424 e_hat_dot_cg(3, 2) = 0.0d0
426 = e1_hat(1)*cg3(1)+e1_hat(2)*cg3(2) &
429 = e2_hat(1)*cg3(1)+e2_hat(2)*cg3(2) &
432 = e3_hat(1)*cg3(1)+e3_hat(2)*cg3(2) &
439 c(1, 1, 1, 1) = 0.0d0
440 c(2, 2, 1, 1) = 0.0d0
441 c(1, 2, 1, 1) = 0.0d0
442 c(2, 2, 2, 2) = 0.0d0
443 c(1, 2, 2, 2) = 0.0d0
444 c(1, 2, 1, 2) = 0.0d0
445 c(3, 1, 1, 1) = 0.0d0
446 c(3, 1, 2, 2) = 0.0d0
447 c(3, 1, 1, 2) = 0.0d0
448 c(2, 3, 1, 1) = 0.0d0
449 c(2, 3, 2, 2) = 0.0d0
450 c(2, 3, 1, 2) = 0.0d0
451 c(3, 1, 3, 1) = 0.0d0
452 c(3, 1, 2, 3) = 0.0d0
453 c(2, 3, 2, 3) = 0.0d0
466 *e_hat_dot_cg(i, 1)*e_hat_dot_cg(j ,1) &
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, 1)*e_hat_dot_cg(l, 1)
476 *e_hat_dot_cg(i, 1)*e_hat_dot_cg(j, 2) &
477 *e_hat_dot_cg(k, 1)*e_hat_dot_cg(l, 1)
481 *e_hat_dot_cg(i, 2)*e_hat_dot_cg(j, 2) &
482 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 2)
487 *e_hat_dot_cg(i, 1)*e_hat_dot_cg(j, 2) &
488 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 2)
492 *e_hat_dot_cg(i, 1)*e_hat_dot_cg(j, 2) &
493 *e_hat_dot_cg(k, 1)*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, 1)
507 *e_hat_dot_cg(i, 3)*e_hat_dot_cg(j, 1) &
508 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 2)
512 *e_hat_dot_cg(i, 3)*e_hat_dot_cg(j, 1) &
513 *e_hat_dot_cg(k, 1)*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, 1)
531 *e_hat_dot_cg(i, 2)*e_hat_dot_cg(j, 3) &
532 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 2)
536 *e_hat_dot_cg(i, 2)*e_hat_dot_cg(j, 3) &
537 *e_hat_dot_cg(k, 1)*e_hat_dot_cg(l, 2)
554 *e_hat_dot_cg(i, 3)*e_hat_dot_cg(j, 1) &
555 *e_hat_dot_cg(k, 3)*e_hat_dot_cg(l, 1)
576 *e_hat_dot_cg(i, 3)*e_hat_dot_cg(j, 1) &
577 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 3)
590 *e_hat_dot_cg(i, 2)*e_hat_dot_cg(j, 3) &
591 *e_hat_dot_cg(k, 2)*e_hat_dot_cg(l, 3)
601 c(1, 1, 2, 2) = c(2, 2, 1, 1)
602 c(1, 1, 1, 2) = c(1, 2, 1, 1)
603 c(1, 1, 2, 3) = c(2, 3, 1, 1)
604 c(1, 1, 3, 1) = c(3, 1, 1, 1)
605 c(2, 2, 1, 2) = c(1, 2, 2, 2)
606 c(2, 2, 2, 3) = c(2, 3, 2, 2)
607 c(2, 2, 3, 1) = c(3, 1, 2, 2)
608 c(1, 2, 2, 3) = c(2, 3, 1, 2)
609 c(1, 2, 3, 1) = c(3, 1, 1, 2)
610 c(2, 3, 3, 1) = c(3, 1, 2, 3)
integer(kind=4), parameter kreal
This module provides functions for elastic material.
subroutine linearelastic_shell(matl, sectType, c, e1_hat, e2_hat, e3_hat, cg1, cg2, cg3, alpha, n_layer)
subroutine calelasticmatrix_ortho(matl, sectType, bij, DMAT, temp)
Calculate orthotropic elastic matrix.
subroutine calelasticmatrix(matl, sectType, D, temp)
Calculate isotropic elastic matrix.
This module provides aux functions.
subroutine transformation(jacob, tm)
This module summarizes all infomation of material properties.
integer(kind=kint), parameter m_youngs
integer(kind=kint), parameter planestress
integer(kind=kint), parameter d3
integer(kind=kint), parameter planestrain
integer(kind=kint), parameter shell
integer(kind=kint), parameter m_poisson
integer(kind=kint), parameter axissymetric
character(len=dict_key_length) mc_isoelastic
character(len=dict_key_length) mc_orthoelastic
integer(kind=kint), parameter m_alpha_over_mu
Stucture to management all material relates data.