31 character*1 typeboun(*)
32 character*20 labmpc(*)
34 integer ipompc(*),nodempc(3,*),nmpc,nmpc_,mpcfree,nk,nk_,
36 & ilmpc(*),node,id,mpcfreeold,j,idof,l,nodeboun(*),nodea,nodeb,
37 & ndirboun(*),ikboun(*),ilboun(*),nboun,nboun_,inode,jmax,k,nodec,
40 real*8 coefmpc(3,*),co(3,*),dd,dmax,pac(3),pbc(3),xboun(*)
42 save nodea,nodeb,nodec,jmax
47 elseif(inode.eq.2)
then 50 elseif(inode.eq.3)
then 53 pac(j)=co(j,nodea)-co(j,nodec)
54 pbc(j)=co(j,nodeb)-co(j,nodec)
56 dmax=abs(pac(2)*pbc(3)-pac(3)*pbc(2))
58 dd=abs(pac(1)*pbc(3)-pac(3)*pbc(1))
63 dd=abs(pac(1)*pbc(2)-pac(2)*pbc(1))
73 write(*,*)
'*ERROR in planempc: increase nk_' 84 call nident(ikmpc,idof,nmpc,id)
86 if(ikmpc(id).eq.idof)
then 87 write(*,*)
'*WARNING in planempc: DOF for node ',node
88 write(*,*)
' in direction ',j,
' has been used' 89 write(*,*)
' on the dependent side of another MPC' 90 write(*,*)
' PLANE constraint cannot be applied' 95 if(nmpc.gt.nmpc_)
then 96 write(*,*)
'*ERROR in planempc: increase nmpc_' 101 labmpc(nmpc)=
'PLANE ' 110 nodempc(1,mpcfree)=node
112 mpcfree=nodempc(3,mpcfree)
113 nodempc(1,mpcfree)=node
115 mpcfree=nodempc(3,mpcfree)
116 nodempc(1,mpcfree)=node
118 mpcfree=nodempc(3,mpcfree)
119 nodempc(1,mpcfree)=nodea
121 mpcfree=nodempc(3,mpcfree)
122 nodempc(1,mpcfree)=nodea
124 mpcfree=nodempc(3,mpcfree)
125 nodempc(1,mpcfree)=nodea
127 mpcfree=nodempc(3,mpcfree)
128 nodempc(1,mpcfree)=nodeb
130 mpcfree=nodempc(3,mpcfree)
131 nodempc(1,mpcfree)=nodeb
133 mpcfree=nodempc(3,mpcfree)
134 nodempc(1,mpcfree)=nodeb
136 mpcfree=nodempc(3,mpcfree)
137 nodempc(1,mpcfree)=nodec
139 mpcfree=nodempc(3,mpcfree)
140 nodempc(1,mpcfree)=nodec
142 mpcfree=nodempc(3,mpcfree)
143 nodempc(1,mpcfree)=nodec
145 mpcfree=nodempc(3,mpcfree)
146 nodempc(1,mpcfree)=nk
149 mpcfree=nodempc(3,mpcfree)
150 nodempc(3,mpcfreeold)=0
152 call nident(ikboun,idof,nboun,id)
154 if(nboun.gt.nboun_)
then 155 write(*,*)
'*ERROR in planempc: increase nboun_' 162 ikboun(m)=ikboun(m-1)
163 ilboun(m)=ilboun(m-1)
subroutine nident(x, px, n, id)
Definition: nident.f:26