54 s11,s22,s33,s12,s23,s13,ielem,mu,kappa)
83 INTEGER ::
j,
k,l,
m,ierr,ielem
85 REAL*8 :: s11,s22,s33,s12,s13,s23
86 REAL*8 :: shear_modulus
88 REAL*8 :: cij(3,3), bulk, sqrt_n, cr,
n
89 REAL*8 :: e_vec(3,3), sigma_a(3)
90 REAL*8 :: e_val(3), e_chain, xi3, xmu, xxx, xmu_max, xjay
91 REAL*8 :: fv1(3), fv2(3), stretch(3)
138 CALL
rs(3,3,cij,e_val,1,e_vec,fv1,fv2,ierr)
140 print *,
' error occurs at element ', ielem
151 e_chain=
sqrt(stretch(1)**2+stretch(2)**2+stretch(3)**2)
152 e_chain=1.0d0/
sqrt(3.0d0)*(e_chain)
161 xjay= stretch(1)*stretch(2)*stretch(3)
170 CALL
solve_x(xxx,xmu,ielem,stretch)
175 sigma_a(
k)=cr*sqrt_n*(stretch(
k)**2-e_chain**2)/ &
176 e_chain*xxx + bulk*log(
sqrt(xi3))
189 fact = xjay * sigma_a(
k) / (stretch(
k)**2)
191 s11 = s11 + e_vec(1,
k) * e_vec(1,
k) * fact
192 s22 = s22 + e_vec(2,
k) * e_vec(2,
k) * fact
193 s33 = s33 + e_vec(3,
k) * e_vec(3,
k) * fact
194 s12 = s12 + e_vec(1,
k) * e_vec(2,
k) * fact
195 s23 = s23 + e_vec(2,
k) * e_vec(3,
k) * fact
196 s13 = s13 + e_vec(1,
k) * e_vec(3,
k) * fact
226 REAL*8 x, xmu, f, fp,
dx, x0
227 REAL*8 sinh, cosh, coth
235 10 sinh = (exp(
x) - exp(-
x))*0.5d0
236 cosh = (exp(
x) + exp(-
x))*0.5d0
238 f = coth -1.d0/
x - xmu
239 IF(abs(f) .LE. 1.0
d-10) go to 20
240 fp = -1.d0/(sinh**2) + 1.d0/(
x**2)
244 IF(iter .GT. 10000)
THEN
245 print *,
' iteration exceeds 10000'
246 print *,
' program stop ! '
248 WRITE(*,*) (stretch(
k),
k=1,3)
259 SUBROUTINE rs(nm,n,a,w,matz,z,fv1,fv2,ierr)
263 INTEGER n,nm,ierr,matz
264 REAL*8 a(nm,
n),w(
n),
z(nm,
n),fv1(
n),fv2(
n)
313 IF (
n .LE. nm) go to 10
317 10
IF (matz .NE. 0) go to 20
322 CALL
tql1(
n,w,fv1,ierr)
326 CALL
tql2(nm,
n,w,fv1,
z,ierr)
346 p = dmax1(abs(
a),abs(
b))
347 IF (p .EQ. 0.0d0) go to 20
348 r = (dmin1(abs(
a),abs(
b))/p)**2
351 IF (t .EQ. 4.0d0) go to 20
415 INTEGER i,
j,l,
m,
n,ii,l1,l2,mml,ierr
417 REAL*8 c,c2,c3,dl1,el1,f,
g,h,p,
r,
s,s2,tst1,tst2,
pythag
424 IF (
n .EQ. 1) go to 1001
435 h = abs(
d(l)) + abs(e(l))
436 IF (tst1 .LT. h) tst1 = h
439 tst2 = tst1 + abs(e(
m))
440 IF (tst2 .EQ. tst1) go to 120
445 120
IF (
m .EQ. l) go to 210
446 130
IF (
j .EQ. 30) go to 1000
452 p = (
d(l1) -
g) / (2.0d0 * e(l))
454 d(l) = e(l) / (p +
sign(
r,p))
455 d(l1) = e(l) * (p +
sign(
r,p))
458 IF (l2 .GT.
n) go to 145
487 p = -
s * s2 * c3 * el1 * e(l) / dl1
490 tst2 = tst1 + abs(e(l))
491 IF (tst2 .GT. tst1) go to 130
494 IF (l .EQ. 1) go to 250
498 IF (p .GE.
d(
i-1)) go to 270
512 SUBROUTINE tql2(nm,n,d,e,z,ierr)
583 INTEGER i,
j,
k,l,
m,
n,ii,l1,l2,nm,mml,ierr
584 REAL*8 d(
n),e(
n),
z(nm,
n)
585 REAL*8 c,c2,c3,dl1,el1,f,
g,h,p,
r,
s,s2,tst1,tst2,
pythag
590 IF (
n .EQ. 1) go to 1001
601 h = abs(
d(l)) + abs(e(l))
602 IF (tst1 .LT. h) tst1 = h
605 tst2 = tst1 + abs(e(
m))
606 IF (tst2 .EQ. tst1) go to 120
611 120
IF (
m .EQ. l) go to 220
612 130
IF (
j .EQ. 30) go to 1000
618 p = (
d(l1) -
g) / (2.0d0 * e(l))
620 d(l) = e(l) / (p +
sign(
r,p))
621 d(l1) = e(l) * (p +
sign(
r,p))
624 IF (l2 .GT.
n) go to 145
660 p = -
s * s2 * c3 * el1 * e(l) / dl1
663 tst2 = tst1 + abs(e(l))
664 IF (tst2 .GT. tst1) go to 130
674 IF (
d(
j) .GE. p) go to 260
679 IF (
k .EQ.
i) go to 300
701 INTEGER i,
j,
k,l,
n,ii,nm,jp1
702 REAL*8 a(nm,
n),
d(
n),e(
n),e2(
n)
763 IF (l .LT. 1) go to 130
768 IF (
scale .NE. 0.0d0) go to 140
791 IF (l .EQ. 1) go to 285
798 g = e(
j) +
a(
j,
j) * f
800 IF (l .LT. jp1) go to 220
804 e(
k) = e(
k) +
a(
k,
j) * f
820 250 e(
j) = e(
j) - h *
d(
j)
891 INTEGER i,
j,
k,l,
n,ii,nm,jp1
892 REAL*8 a(nm,
n),
d(
n),e(
n),
z(nm,
n)
903 IF (
n .EQ. 1) go to 510
910 IF (l .LT. 2) go to 130
915 IF (
scale .NE. 0.0d0) go to 140
943 g = e(
j) +
z(
j,
j) * f
945 IF (l .LT. jp1) go to 220
949 e(
k) = e(
k) +
z(
k,
j) * f
965 250 e(
j) = e(
j) - hh *
d(
j)
986 IF (h .EQ. 0.0d0) go to 380
989 330
d(
k) =
z(
k,
i) / h
subroutine tql1(n, d, e, ierr)
subroutine rs(nm, n, a, w, matz, z, fv1, fv2, ierr)
static SURF_BEGIN_NAMESPACE double sign(double x)
subroutine tred2(nm, n, a, d, e, z)
subroutine tql2(nm, n, d, e, z, ierr)
subroutine tred1(nm, n, a, d, e, e2)
void scale(const Real &a, Nodal_data &x)
void int int int REAL REAL REAL * z
REAL *8 function pythag(a, b)
subroutine arruda_boyce(Cij, S11, S22, S33, S12, S23, S13, ielem, mu, kappa)
subroutine solve_x(x, xmu, i, stretch)