63 alfa11,alfa12,alfa13, &
64 alfa21,alfa22,alfa23, &
65 alfa31,alfa32,alfa33, &
66 beta11,beta12,beta13, &
67 beta21,beta22,beta23, &
68 beta31,beta32,beta33, &
69 gamma1,gamma2,gamma3, &
70 delta1,delta2,delta3, &
71 tt, csi_s, eta_s, zeta_s, nofi, id_mpi,&
72 ipiu, imeno, toll1, toll2 , flag)
77 integer*4 :: per_csi, per_eta, per_zeta
78 integer*4 :: iic, il,ih
79 integer*4,
intent(out) :: tt
80 integer*4,
intent(in) :: nofi,id_mpi,ipiu,imeno, flag
82 real*8 :: ll,lm ,xvt1,yvt1,xvt2,yvt2,xvc1,yvc1,xvc2,yvc2
83 real*8 :: a1,a2,a3,b1,b2,b3,c1,c2,c3,d1,d2,d3
84 real*8 :: e1,e2,e3,f1,f2,f3,g1,g2,g3,h1,h2,h3
85 real*8 :: delta_csi, delta_eta, delta_zeta
86 real*8 :: a,b,c,d,e,f,g,h,p, det
87 real*8 :: a11, a12, a13, a21, a22, a23, a31, a32, a33
88 real*8 :: ff1, ff2, ff3
89 real*8 :: alfa11,alfa12,alfa13,alfa21,alfa22,alfa23,alfa31,alfa32,alfa33
90 real*8 :: beta11,beta12,beta13,beta21,beta22,beta23,beta31,beta32,beta33
91 real*8 :: gamma1,gamma2,gamma3,delta1,delta2,delta3
92 real*8,
intent(in) :: xnod, ynod, znod, toll1, toll2
93 real*8,
intent(out) :: csi_s, eta_s, zeta_s
138 a = a1*eta_s*zeta_s + b1*eta_s + d1*zeta_s + e1
139 b = a1*csi_s*zeta_s + b1*csi_s + c1*zeta_s + f1
140 c = a1*csi_s*eta_s + c1*eta_s + d1*csi_s + g1
142 d = a2*eta_s*zeta_s + b2*eta_s + d2*zeta_s + e2
143 e = a2*csi_s*zeta_s + b2*csi_s + c2*zeta_s + f2
144 f = a2*csi_s*eta_s + c2*eta_s + d2*csi_s + g2
146 g = a3*eta_s*zeta_s + b3*eta_s + d3*zeta_s + e3
147 h = a3*csi_s*zeta_s + b3*csi_s + c3*zeta_s + f3
148 p = a3*csi_s*eta_s + c3*eta_s + d3*csi_s + g3
150 det = a*(e*p - f*h) - b*(d*p - f*g) + c*(d*h -e*g)
152 if(det .eq. 0.d0)
then
166 ff1 = a1*csi_s*eta_s*zeta_s + b1*csi_s*eta_s + c1*eta_s*zeta_s + d1*csi_s*zeta_s &
167 + e1*csi_s + f1*eta_s + g1*zeta_s + h1 -8.d0*xnod
169 ff2 = a2*csi_s*eta_s*zeta_s + b2*csi_s*eta_s + c2*eta_s*zeta_s + d2*csi_s*zeta_s &
170 + e2*csi_s + f2*eta_s + g2*zeta_s + h2 -8.d0*ynod
172 ff3 = a3*csi_s*eta_s*zeta_s + b3*csi_s*eta_s + c3*eta_s*zeta_s + d3*csi_s*zeta_s &
173 + e3*csi_s + f3*eta_s + g3*zeta_s + h3 -8.d0*znod
176 delta_csi = (-1.d0/det)*(a11*ff1 + a21*ff2 + a31*ff3)
178 delta_eta = (-1.d0/det)*(a12*ff1 + a22*ff2 + a32*ff3)
180 delta_zeta = (-1.d0/det)*(a13*ff1 + a23*ff2 + a33*ff3)
184 if (abs(delta_csi).le. toll1 .and. abs(delta_eta).le. toll1 .and. abs(delta_zeta).le. toll1 )
then
188 if (dabs(csi_s) .gt. toll2 .or. dabs(eta_s) .gt. toll2 .or. dabs(zeta_s).gt. toll2 )
then
198 csi_s = csi_s + delta_csi
199 eta_s = eta_s + delta_eta
200 zeta_s = zeta_s + delta_zeta
202 if (csi_s .gt. 1.d0 .AND. csi_s .lt. 2.d0 .AND. per_csi .eq. 0)
then
207 if (csi_s .lt. -1.d0 .AND. csi_s .gt. -2.d0 .AND. per_csi .eq. 0)
then
213 if (eta_s .gt. 1.d0 .AND. eta_s .lt. 2.d0 .AND. per_eta .eq. 0)
then
218 if (eta_s .lt. -1.d0 .AND. eta_s .gt. -2.d0 .AND. per_eta .eq. 0)
then
223 if (zeta_s .gt. 1.d0 .AND. zeta_s .lt. 2.d0 .AND. per_zeta .eq. 0)
then
228 if (zeta_s .lt. -1.d0 .AND. zeta_s .gt. -2.d0 .AND. per_zeta .eq. 0)
then
236 if(il .ge. nofiter)
then
subroutine newton_rapson(xnod, ynod, znod, alfa11, alfa12, alfa13, alfa21, alfa22, alfa23, alfa31, alfa32, alfa33, beta11, beta12, beta13, beta21, beta22, beta23, beta31, beta32, beta33, gamma1, gamma2, gamma3, delta1, delta2, delta3, tt, csi_s, eta_s, zeta_s, nofi, id_mpi, ipiu, imeno, toll1, toll2, flag)
Performs the Newton Rapson algorithm.