54 p1, p2, yin, softparam, km, k2, gm, g2, vm, nu2, a_eta, a_zeta,&
55 cm, c2, lo, lm, l2, mm, m2, l_bar, strain, delstrain,&
56 s11, s22, s33, s12, s13, s23,ielem)
66 REAL(KIND=wp) :: cd, cb, softparam
68 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: lo, l_bar
69 REAL(KIND=wp) :: km, k2, gm, g2, vm, nu2, a_eta, a_zeta, cm
73 REAL(KIND=wp) ::
p1, p2, yin, c2,
y
75 REAL(KIND=wp) :: gy, tot
77 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: scriptj, tmpm
79 REAL(KIND=wp),
DIMENSION(1:6) :: strain, scriptjstrain, totv
81 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: lm, l2, mm, m2
83 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: dbm,dbb, dbd, dmm,dmb,dmd, ddm, ddb, ddd
85 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: a2, am
87 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: llbar
91 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: scriptam, scriptab, scriptad
93 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: scriptk
95 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: rinv, ninv, w, qm, q2,
r,
n
97 REAL(KIND=wp),
DIMENSION(1:6) ::
pt
99 REAL(KIND=wp) :: h, etke, dcd
101 REAL(KIND=wp),
PARAMETER :: tol = 1.e-6
103 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: checkstress1, checkstress2,
test
105 REAL(KIND=wp),
DIMENSION(1:6) :: mu_d, strain_m, strain_d, strain_b
106 REAL(KIND=wp),
DIMENSION(1:6) :: stress_d, stress_b, stress_m
108 REAL(KIND=wp),
DIMENSION(1:6,1:6) :: dident = reshape( &
109 (/1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, &
110 0.0_wp, 1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, &
111 0.0_wp, 0.0_wp, 1.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, &
112 0.0_wp, 0.0_wp, 0.0_wp, 1.0_wp, 0.0_wp, 0.0_wp, &
113 0.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 1.0_wp, 0.0_wp, &
114 0.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 0.0_wp, 1.0_wp /),(/6,6/) )
117 REAL(KIND=wp) :: delscriptk
119 REAL(KIND=wp),
DIMENSION(1:6) :: delstrain
121 REAL(KIND=wp) :: sum1, sum2, scalar1, scalar2, cd_gauss_old, nor, nor1
125 REAL(KIND=wp) :: dcd_old
127 REAL(KIND=wp) :: s11, s22, s33, s12, s13, s23
129 REAL(KIND=wp) :: cd_n, gytmp
131 INTEGER,
PARAMETER :: monnd = 175
142 dbm,dbb, dbd, dmm,dmb,dmd, ddm, ddb, ddd, a2, am, l_bar)
151 CALL
operatorj(lm, l2, l2, l2, l_bar, mm, m2, cm, cb, cd, &
152 dbm, dbb, dbd, dmm,dmb,dmd, ddm, ddb, ddd, &
153 am, a2, a2, a2, km, k2, gm, g2, vm, nu2, a_eta, a_zeta, &
154 scriptj,
n, ninv,
r, rinv, q2, qm, w)
163 scriptk = matmul(l2,q2) - matmul(w,matmul(lm,qm))
165 scriptk = matmul(rinv,scriptk)
167 scriptk = 2.d0*matmul(scriptj,scriptk)
169 scriptk = matmul(scriptk,transpose(a2) )
171 scriptk = matmul(scriptk,l2 )
173 scriptk = matmul(scriptk,ninv )
175 scriptk = matmul(scriptk,
r )
177 scriptam = am + matmul(dmd,matmul(ninv,
r))
178 scriptab = a2 + matmul(dbd,matmul(ninv,
r))
179 scriptad = a2 + matmul(ddd-dident, matmul(ninv,
r))
181 llbar = cm*matmul(lm,scriptam) + cb*matmul(l2,scriptab) + cd*matmul(l2,scriptad)
183 s11 = llbar(1,1)*delstrain(1) + llbar(1,2)*delstrain(2) + llbar(1,3)*delstrain(3)
184 s22 = llbar(2,1)*delstrain(1) + llbar(2,2)*delstrain(2) + llbar(2,3)*delstrain(3)
185 s33 = llbar(3,1)*delstrain(1) + llbar(3,2)*delstrain(2) + llbar(3,3)*delstrain(3)
187 skk = ( s11 + s22 + s33 )/3.d0
195 CALL
vecmatvecmul( strain, scriptj, delstrain, 6, scalar1)
203 gy = c2 - c2 * exp( - ( (
y - yin)/(
p1*yin) )**p2)
207 IF((gy - softparam).GT.0.d0.AND.scalar1<0.d0.AND.skk>0.d0.AND.cd.LT.c2)
THEN
241 dbm,dbb, dbd, dmm,dmb,dmd, ddm, ddb, ddd, a2, am, l_bar)
244 CALL
operatorj(lm, l2, l2, l2, l_bar, mm, m2, cm, cb, cd, &
245 dbm, dbb, dbd, dmm,dmb,dmd, ddm, ddb, ddd, &
246 am, a2, a2, a2, km, k2, gm, g2, vm, nu2, a_eta, a_zeta, &
247 scriptj,
n, ninv,
r, rinv, q2, qm, w)
251 scriptk = matmul(l2,q2) - matmul(w,matmul(lm,qm))
252 scriptk = matmul(rinv,scriptk)
253 scriptk = 2.d0*matmul(scriptj,scriptk)
254 scriptk = matmul(scriptk,transpose(a2) )
255 scriptk = matmul(scriptk,l2 )
256 scriptk = matmul(scriptk,ninv )
257 scriptk = matmul(scriptk,
r )
259 nor =
sqrt( (dcd - dcd_old)**2)
280 gy = c2 - c2 * exp( - ( (
y - yin)/(
p1*yin) )**p2)
296 print*,
'Did not converge'
297 print*,
'Element',ielem
300 IF( nor .LE. tol) exit
306 IF(cd.GT.0.99999d0*c2) cd = c2
312 IF(dcd.LT.0.d0.OR.cd.GT.c2)
THEN
313 print*,
'Dcd < 0 or cd > c2',ielem
314 print*,
' Dcd, cd', dcd, cd
319 dbm,dbb, dbd, dmm,dmb,dmd, ddm, ddb, ddd, a2, am, l_bar)
322 CALL
operatorj(lm, l2, l2, l2, l_bar, mm, m2, cm, cb, cd, &
323 dbm, dbb, dbd, dmm,dmb,dmd, ddm, ddb, ddd, &
324 am, a2, a2, a2, km, k2, gm, g2, vm, nu2, a_eta, a_zeta, &
325 scriptj,
n, ninv,
r, rinv, q2, qm, w)
330 scriptk = matmul(l2,q2) - matmul(w,matmul(lm,qm))
331 scriptk = matmul(rinv,scriptk)
332 scriptk = 2.d0*matmul(scriptj,scriptk)
333 scriptk = matmul(scriptk,transpose(a2) )
334 scriptk = matmul(scriptk,l2 )
335 scriptk = matmul(scriptk,ninv )
336 scriptk = matmul(scriptk,
r )
373 gy = c2 - c2 * exp( - ( (
y - yin)/(
p1*yin) )**p2)
382 IF(gy.gt.softparam) softparam = gy
386 scriptam = am + matmul(dmd,matmul(ninv,
r))
387 scriptab = a2 + matmul(dbd,matmul(ninv,
r))
388 scriptad = a2 + matmul((ddd-dident),matmul(ninv,
r))
394 tmpm = matmul(ninv,
r)
399 tot = tot + tmpm(ii,jj)*strain(jj)
407 tot = tot + am(ii,jj)*strain(jj)
415 tot = tot + dmd(ii,jj)*mu_d(jj)
417 strain_m(ii) = strain_m(ii) + tot
424 tot = tot + a2(ii,jj)*strain(jj)
432 tot = tot + dbd(ii,jj)*mu_d(jj)
434 strain_b(ii) = strain_b(ii) + tot
440 tot = tot + a2(ii,jj)*strain(jj)
448 tot = tot + ddd(ii,jj)*mu_d(jj)
450 strain_d(ii) = strain_d(ii) + tot
456 tot = tot + lm(ii,jj)*strain_m(jj)
464 tot = tot + l2(ii,jj)*strain_b(jj)
472 tot = tot + l2(ii,jj)*(strain_d(jj)-mu_d(jj))
491 llbar = cm*matmul(lm,scriptam) + cb*matmul(l2,scriptab) + cd*matmul(l2,scriptad)
493 s11 = llbar(1,1)*strain(1) + llbar(1,2)*strain(2) + llbar(1,3)*strain(3)
494 s22 = llbar(2,1)*strain(1) + llbar(2,2)*strain(2) + llbar(2,3)*strain(3)
495 s33 = llbar(3,1)*strain(1) + llbar(3,2)*strain(2) + llbar(3,3)*strain(3)
496 s12 = strain(6)*llbar(4,4)
497 s23 = strain(4)*llbar(5,5)
498 s13 = strain(5)*llbar(6,6)
500 IF(abs(s33 - (cm*stress_m(3) + cb*stress_b(3) + cd*stress_d(3))).GT.0.0001d0)
THEN
501 print*,cd, s33, cm*stress_m(3) + cb*stress_b(3) + cd*stress_d(3)
void int int REAL REAL * y
subroutine vecmatvecmul(a, B, c, ndim, scaler)
subroutine operatorj(Lm, Ld, Lb, L2, Lbar, Mm, M2, cm, cb, cd, Dbm, Dbb, Dbd, Dmm, Dmb, Dmd, Ddm, Ddb, Ddd, Am, Ab, Ad, A2, Km, K2, Gm, G2, vm, v2, a_eta, a_zeta, OpJ, N, Ninv, R, Rinv, Q2, Qm, W)
subroutine a_d_tensors(Lo, Lm, L2, Mm, M2, cm, cb, cd, Dbm, Dbb, Dbd, Dmm, Dmb, Dmd, Ddm, Ddb, Ddd, A2, Am, L_bar)
subroutine matous_const_model(cd, cb, p1, p2, Yin, SoftParam, Km, K2, Gm, G2, vm, nu2, a_eta, a_zeta, cm, c2, Lo, Lm, L2, Mm, M2, L_bar, strain, DelStrain, s11, s22, s33, s12, s13, s23, ielem)
Parent_type pt(const Point_2 &p)