30 character*20 labmpc(*)
32 integer nodeforc(2,*),ndirforc(*),node,i,nforc,nforc_,j,
33 & iamforc(*),iamplitude,nam,ntrans,inotr(2,*),itr,idf(3),
34 & ikforc(*),ilforc(*),idof,id,k,isector,idefforc(*),ipompc(*),
35 & nodempc(3,*),nmpc,ikmpc(*),ilmpc(*)
37 real*8 xforc(*),val,trab(7,*),a(3,3),co(3,*)
48 if((i.ge.5).and.(i.le.7))
then 53 call nident(ikmpc,idof,nmpc,id)
55 if(ikmpc(id).eq.idof)
then 56 if(labmpc(ilmpc(id))(1:14).eq.
'ROTTRACOUPLING')
then 57 node=nodempc(1,nodempc(3,ipompc(ilmpc(id))))
58 i=nodempc(2,nodempc(3,ipompc(ilmpc(id))))
70 if((itr.eq.0).or.(i.eq.0).or.(i.gt.3))
then 75 call nident(ikforc,idof,nforc,id)
78 if(ikforc(id).eq.idof)
then 80 if(nodeforc(2,k).eq.isector)
then 81 if(add.or.(idefforc(k).eq.1))
then 83 if(iamforc(k).ne.iamplitude)
then 84 write(*,*)
'*ERROR in forcadd:' 85 write(*,*)
' it is not allowed to ' 86 write(*,*)
' define two concentrated' 87 write(*,*)
' loads/fluxes' 88 write(*,*)
' different amplitudes ' 89 write(*,*)
' in one step' 90 write(*,*)
'node: ',node,
' dof:',i
97 if(.not.user) idefforc(k)=1
99 if(nam.gt.0) iamforc(k)=iamplitude
111 if(nforc.gt.nforc_)
then 112 write(*,*)
'*ERROR in forcadd: increase nforc_' 115 nodeforc(1,nforc)=node
116 nodeforc(2,nforc)=isector
119 if(.not.user) idefforc(nforc)=1
120 if(nam.gt.0) iamforc(nforc)=iamplitude
125 ikforc(j)=ikforc(j-1)
126 ilforc(j)=ilforc(j-1)
139 call nident(ikforc,idof,nforc,id)
142 if(ikforc(id).eq.idof)
then 144 if(nodeforc(2,k).eq.isector)
then 157 if((idf(1).ne.0).and.(.not.user))
then 166 if((.not.add).and.(idefforc(idf(i)).ne.1))
167 & val=val-xforc(idf(1))*a(1,i)-xforc(idf(2))*a(2,i)
168 & -xforc(idf(3))*a(3,i)
170 xforc(idf(1))=xforc(idf(1))+val*a(1,i)
171 xforc(idf(2))=xforc(idf(2))+val*a(2,i)
172 xforc(idf(3))=xforc(idf(3))+val*a(3,i)
179 if((iamforc(idf(1)).ne.iamplitude).or.
180 & (iamforc(idf(2)).ne.iamplitude).or.
181 & (iamforc(idf(3)).ne.iamplitude))
then 182 write(*,*)
'*ERROR in forcadd:' 183 write(*,*)
' it is not allowed to ' 184 write(*,*)
' define two concentrated' 185 write(*,*)
' loads/fluxes with' 186 write(*,*)
' different amplitudes ' 187 write(*,*)
' in one step' 188 write(*,*)
'node: ',node,
' dof:',i
192 iamforc(idf(j))=iamplitude
198 if(nforc.gt.nforc_)
then 199 write(*,*)
'*ERROR in forcadd: increase nforc_' 202 nodeforc(1,nforc)=node
203 nodeforc(2,nforc)=isector
208 xforc(nforc)=val*a(j,i)
211 if(nam.gt.0) iamforc(nforc)=iamplitude
216 call nident(ikforc,idof,nforc-1,id)
218 ikforc(k)=ikforc(k-1)
219 ilforc(k)=ilforc(k-1)
subroutine nident(x, px, n, id)
Definition: nident.f:26