40#include "implicit_f.inc"
50 my_real,
INTENT(INOUT) :: a(3,numnod),v(3,numnod),x(3,numnod)
51 DOUBLE PRECISION,
INTENT(INOUT) :: XDP(3,NUMNOD)
55 INTEGER I,J,K,L,NODE1,NODE2,NODE3,ANCHOR_NODE,NODE2_N,ORIENTATION_NODE,SWIP,INDEX
67 anchor_node =
slipring(i)%FRAM(j)%ANCHOR_NODE
68 orientation_node =
slipring(i)%FRAM(j)%ORIENTATION_NODE
73 IF (orientation_node > 0)
THEN
75 nn(1) = x(1,orientation_node) - x(1,anchor_node)
76 nn(2) = x(2,orientation_node) - x(2,anchor_node)
77 nn(3) = x(3,orientation_node) - x(3,anchor_node)
78 norm = sqrt(
max(em30,nn(1)*nn(1)+nn(2)*nn(2)+nn(3)*nn(3)))
83 n1(1) = x(1,node1) - x(1,node2)
84 n1(2) = x(2,node1) - x(2,node2)
85 n1(3) = x(3,node1) - x(3,node2)
86 norm = sqrt(
max(em30,n1(1)*n1(1)+n1(2)*n1(2)+n1(3)*n1(3)))
91 n2(1) = x(1,node3) - x(1,node2)
92 n2(2) = x(2,node3) - x(2,node2)
93 n2(3) = x(3,node3) - x(3,node2)
94 norm = sqrt(
max(em30,n2(1)*n2(1)+n2(2)*n2(2)+n2(3)*n2(3)))
99 n3(1) = n1(2)*n2(3)-n1(3)*n2(2)
100 n3(2) = n1(3)*n2(1)-n1(1)*n2(3)
101 n3(3) = n1(1)*n2(2)-n1(2)*n2(1)
102 norm = sqrt(
max(em30,n3(1)*n3(1)+n3(2)*n3(2)+n3(3)*n3(3)))
107 scal = abs(n3(1)*nn(1)+n3(2)*nn(2)+n3(3)*nn(3))
108 slipring(i)%FRAM(j)%ORIENTATION_ANGLE = acos(scal)
111 IF(
slipring(i)%FRAM(j)%UPDATE < zero)
THEN
113 v(1,node2)=v(1,anchor_node)-
slipring(i)%FRAM(j)%MATERIAL_FLOW*
slipring(i)%FRAM(j)%VECTOR(1)
114 v(2,node2)=v(2,anchor_node)-
slipring(i)%FRAM(j)%MATERIAL_FLOW*
slipring(i)%FRAM(j)%VECTOR(2)
115 v(3,node2)=v(3,anchor_node)-
slipring(i)%FRAM(j)%MATERIAL_FLOW*
slipring(i)%FRAM(j)%VECTOR(3)
117 v(1,node3)=v(1,anchor_node)
118 v(2,node3)=v(2,anchor_node)
119 v(3,node3)=v(3,anchor_node)
121 a(1,node3)=a(1,anchor_node)
122 a(2,node3)=a(2,anchor_node)
123 a(3,node3)=a(3,anchor_node)
125 x(1,node3)=x(1,anchor_node)
126 x(2,node3)=x(2,anchor_node)
127 x(3,node3)=x(3,anchor_node)
130 xdp(1,node3)=xdp(1,anchor_node)
131 xdp(2,node3)=xdp(2,anchor_node)
132 xdp(3,node3)=xdp(3,anchor_node)
135 ELSEIF(
slipring(i)%FRAM(j)%UPDATE > zero)
THEN
137 v(1,node2)=v(1,anchor_node)-
slipring(i)%FRAM(j)%MATERIAL_FLOW*
slipring(i)%FRAM(j)%VECTOR(4)
138 v(2,node2)=v(2,anchor_node)-
slipring(i)%FRAM(j)%MATERIAL_FLOW*
slipring(i)%FRAM(j)%VECTOR(5)
139 v(3,node2)=v(3,anchor_node)-
slipring(i)%FRAM(j)%MATERIAL_FLOW*
slipring(i)%FRAM(j)%VECTOR(6)
141 v(1,node1)=v(1,anchor_node)
142 v(2,node1)=v(2,anchor_node)
143 v(3,node1)=v(3,anchor_node)
145 a(1,node1)=a(1,anchor_node)
146 a(2,node1)=a(2,anchor_node)
147 a(3,node1)=a(3,anchor_node)
149 x(1,node1)=x(1,anchor_node)
150 x(2,node1)=x(2,anchor_node)
151 x(3,node1)=x(3,anchor_node)
154 xdp(1,node1)=xdp(1,anchor_node)
155 xdp(2,node1)=xdp(2,anchor_node)
156 xdp(3,node1)=xdp(3,anchor_node)
161 v(1,node2)=v(1,anchor_node)
162 v(2,node2)=v(2,anchor_node)
163 v(3,node2)=v(3,anchor_node)
165 a(1,node2)=a(1,anchor_node)
166 a(2,node2)=a(2,anchor_node)
167 a(3,node2)=a(3,anchor_node)
192 v(1,node2_n)=v(1,anchor_node)
193 v(2,node2_n)=v(2,anchor_node)
194 v(3,node2_n)=v(3,anchor_node)
196 a(1,node2_n)=a(1,anchor_node)
198 a(3,node2_n)=a(3,anchor_node)
202 IF (
retractor(i)%INACTI_NODE(k)==node2) swip = 1
209 v(1,node2)=v(1,anchor_node)
210 v(2,node2)=v(2,anchor_node)
211 v(3,node2)=v(3,anchor_node)
213 v(1,node1)=v(1,anchor_node)
214 v(2,node1)=v(2,anchor_node)
215 v(3,node1)=v(3,anchor_node)
217 a(1,node1)=a(1,anchor_node)
218 a(2,node1)=a(2,anchor_node)
219 a(3,node1)=a(3,anchor_node)
221 x(1,node1)=x(1,anchor_node)
222 x(2,node1)=x(2,anchor_node)
223 x(3,node1)=x(3,anchor_node)
226 xdp(1,node1)=xdp(1,anchor_node)
227 xdp(2,node1)=xdp(2,anchor_node)
228 xdp(3,node1)=xdp(3,anchor_node)
237 v(1,node2)=v(1,anchor_node
238 v(2,node2)=v(2,anchor_node)
239 v(3,node2)=v(3,anchor_node)
241 a(1,node2)=a(1,anchor_node)
242 a(2,node2)=a(2,anchor_node)
243 a(3,node2)=a(3,anchor_node)
251 v(1,l)=v(1,anchor_node)
252 v(2,l)=v(2,anchor_node)
253 v(3,l)=v(3,anchor_node)
255 a(1,l)=a(1,anchor_node)
256 a(2,l)=a(2,anchor_node)
257 a(3,l)=a(3,anchor_node)