51 integer jdof(*),n,nkn,i,j,k,imax,iit,idiscon,node,nodeold,
52 & nodemax,idirold,idirmax,jnode(*),idof,id,iold(3),inew(3),
53 & ikmpc(*),nmpc,ikboun(*),nboun,idir,nendnode
55 real*8 x(3,*),u(3,*),f,a(*),aa(3),cgx(3),cgu(3),pi(3),b(3),
56 & xi(3),dd,al,a1,amax,
c1,c2,c3,c4,c9,c10,force,xcoef,
62 &
'*ERROR in meanrotmpc: MPC has wrong number of terms' 76 &
'*ERROR in meanrotmpc: rotation vector has zero length' 93 cgx(j)=cgx(j)+x(j,3*i-2)
94 cgu(j)=cgu(j)+u(j,3*i-2)
117 pi(j)=x(j,3*i-2)-cgx(j)
118 xi(j)=u(j,3*i-2)-cgu(j)+pi(j)
123 c1=pi(1)*aa(1)+pi(2)*aa(2)+pi(3)*aa(3)
128 c1=xi(1)*aa(1)+xi(2)*aa(2)+xi(3)*aa(3)
133 c1=pi(1)*pi(1)+pi(2)*pi(2)+pi(3)*pi(3)
134 if(
c1.lt.1.d-20)
then 135 if(label(8:9).ne.
'BS')
then 136 write(*,*)
'*WARNING in meanrotmpc: node ',jnode(3*i-2)
137 write(*,*)
' is very close to the ' 138 write(*,*)
' rotation axis through the' 139 write(*,*)
' center of gravity of' 140 write(*,*)
' the nodal cloud in a' 141 write(*,*)
' mean rotation MPC.' 142 write(*,*)
' This node is not taken' 143 write(*,*)
' into account in the MPC' 147 c3=xi(1)*xi(1)+xi(2)*xi(2)+xi(3)*xi(3)
150 al=(aa(1)*pi(2)*xi(3)+aa(2)*pi(3)*xi(1)+aa(3)*pi(1)*xi(2)
151 & -aa(3)*pi(2)*xi(1)-aa(1)*pi(3)*xi(2)-aa(2)*pi(1)*xi(3))
158 c4=aa(2)*pi(3)-aa(3)*pi(2)
160 c4=aa(3)*pi(1)-aa(1)*pi(3)
162 c4=aa(1)*pi(2)-aa(2)*pi(1)
164 c9=(c4/c2-al*xi(j)/c3)/dsqrt(1.d0-al*al)
168 c10=c9*(1.d0-1.d0/
real(nkn))
172 a(k*3-3+j)=a(k*3-3+j)+c10
200 if(dabs(a(1)).lt.1.d-5)
then 205 if(label(8:9).eq.
'BS')
then 207 transcoef(i)=a(n-4+i)
214 if(label(8:9).eq.
'BS')
then 220 if(dabs(a(i)).gt.amax)
then 223 if(label(8:9).eq.
'BS')
then 224 if(a(i)*transcoef(idir).gt.0) cycle
232 call nident(ikmpc,idof,nmpc,id)
234 if(ikmpc(id).eq.idof) cycle
239 call nident(ikboun,idof,nboun,id)
241 if(ikboun(id).eq.idof) cycle
250 write(*,*)
'*ERROR in umpc_mean_rot' 251 write(*,*)
' no mean rotation MPC can be' 252 write(*,*)
' generated for the MPC containing' 253 write(*,*)
' node ',jnode(1)
264 if(nodemax.ne.nodeold)
then 269 if(jnode(i).eq.nodemax)
then 270 if(jdof(i).eq.1)
then 272 elseif(jdof(i).eq.2)
then 284 jnode(iold(j))=jnode(inew(j))
285 jdof(iold(j))=jdof(inew(j))
286 a(iold(j))=a(inew(j))
297 if(jdof(i).eq.idirmax)
then 303 if(iold(1).ne.inew(1))
then 307 jdof(iold(j))=jdof(inew(j))
308 a(iold(j))=a(inew(j))
static double * c1
Definition: mafillvcompmain.c:30
subroutine nident(x, px, n, id)
Definition: nident.f:26