30 character*20 labmpc(*)
31 character*81 set(*),leftset,tieset(3,*)
32 character*132 textpart(16)
34 integer istep,istat,n,key,i,ns(5),ics(*),istartset(*),
35 & iendset(*),ialset(*),id,ipompc(*),nodempc(3,*),nmpc,nmpc_,
36 & ikmpc(*),ilmpc(*),mpcfree,i1(2),i2(2),i3,i4,i5,j,k,
37 & mpcfreeold,idof,node,ileft,nset,irepeat,ipoinpc(0:*),
38 & mpc,iline,ipol,inl,ipoinp(2,*),inp(3,*),mcs,lprev,ij,nmethod
40 real*8 coefmpc(*),csab(7),
x1(2),x2(2),x3,x4,x5,dd,xn,yn,zn,
50 write(*,*)
'*ERROR in selcycsymmods:' 51 write(*,*)
' *SELECT CYCLIC SYMMETRY MODES' 52 write(*,*)
' should be placed within a step definition' 60 write(*,*)
'*ERROR in selcycsymmods: the only valid procedure' 61 write(*,*)
' for cyclic symmetry calculations' 62 write(*,*)
' with nodal diameters is *FREQUENCY' 70 if(textpart(i)(1:5).eq.
'NMIN=')
then 71 read(textpart(i)(6:15),
'(i10)',iostat=istat) ns(2)
72 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
73 &
"*SELECT CYCLIC SYMMETRY MODES%")
74 elseif(textpart(i)(1:5).eq.
'NMAX=')
then 75 read(textpart(i)(6:15),
'(i10)',iostat=istat) ns(3)
76 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
77 &
"*SELECT CYCLIC SYMMETRY MODES%")
80 &
'*WARNING in selcycsymmods: parameter not recognized:' 82 & textpart(i)(1:index(textpart(i),
' ')-1)
84 &
"*SELECT CYCLIC SYMMETRY MODES%")
92 write(*,*)
'*WARNING in selcycsymmods: minimum nodal' 93 write(*,*)
' diameter must be nonnegative' 95 if(ns(3).lt.ns(2))
then 96 write(*,*)
'*ERROR in selcycsymmods: maximum nodal' 97 write(*,*)
' diameter should not exceed minimal one' 106 leftset=tieset(2,int(cs(17,ij)))
115 if(set(i).eq.leftset)
exit 123 if(irepeat.eq.1)
then 130 call nident(ikmpc,idof,nmpc,id)
132 if(ikmpc(id).eq.idof)
then 135 call mpcrem(mpc,mpcfree,nodempc,nmpc,ikmpc,
136 & ilmpc,labmpc,coefmpc,ipompc)
148 if(ns(2).ne.ns(3))
then 149 if((ns(2).eq.0).or.(ns(2).eq.1))
then 150 write(*,*)
'*ERROR: axis of cyclic symmetry' 151 write(*,*)
' is part of the structure;' 152 write(*,*)
' nodal diameters 0, 1, and' 153 write(*,*)
' those above must be each in' 154 write(*,*)
' separate steps.' 166 dd=dsqrt(xn*xn+yn*yn+zn*zn)
174 if(dabs(xn).gt.1.d-10)
then 183 elseif(dabs(yn).gt.1.d-10)
then 192 elseif(dabs(zn).gt.1.d-10)
then 208 idof=8*(node-1)+i1(k)
209 call nident(ikmpc,idof,nmpc,id)
211 if(ikmpc(id).eq.idof)
then 212 write(*,*)
'*ERROR in selcycsymmods:' 213 write(*,*)
' node',node,
214 &
' on cyclic symmetry' 215 write(*,*)
' axis is used in other MPC' 232 nodempc(1,mpcfree)=node
233 nodempc(2,mpcfree)=i1(k)
234 coefmpc(mpcfree)=
x1(k)
235 mpcfree=nodempc(3,mpcfree)
236 if(mpcfree.eq.0)
then 237 write(*,*)
'*ERROR in selcycsymmods:' 238 write(*,*)
' increase memmpc_' 241 nodempc(1,mpcfree)=node
242 nodempc(2,mpcfree)=i2(k)
243 coefmpc(mpcfree)=x2(k)
245 mpcfree=nodempc(3,mpcfree)
246 if(mpcfree.eq.0)
then 247 write(*,*)
'*ERROR in selcycsymmods:' 248 write(*,*)
' increase memmpc_' 251 nodempc(3,mpcfreeold)=0
253 elseif(ns(2).eq.1)
then 257 if(dabs(xn).gt.1.d-10)
then 264 elseif(dabs(yn).gt.1.d-10)
then 284 call nident(ikmpc,idof,nmpc,id)
286 if(ikmpc(id).eq.idof)
then 287 write(*,*)
'*ERROR in selcycsymmods:' 288 write(*,*)
' node',node,
289 &
' on cyclic symmetry' 290 write(*,*)
' axis is used in other MPC' 307 nodempc(1,mpcfree)=node
308 nodempc(2,mpcfree)=i3
310 mpcfree=nodempc(3,mpcfree)
311 if(mpcfree.eq.0)
then 312 write(*,*)
'*ERROR in selcycsymmods:' 313 write(*,*)
' increase memmpc_' 316 nodempc(1,mpcfree)=node
317 nodempc(2,mpcfree)=i4
319 mpcfree=nodempc(3,mpcfree)
320 if(mpcfree.eq.0)
then 321 write(*,*)
'*ERROR in selcycsymmods:' 322 write(*,*)
' increase memmpc_' 325 nodempc(1,mpcfree)=node
326 nodempc(2,mpcfree)=i5
329 mpcfree=nodempc(3,mpcfree)
330 if(mpcfree.eq.0)
then 331 write(*,*)
'*ERROR in selcycsymmods:' 332 write(*,*)
' increase memmpc_' 335 nodempc(3,mpcfreeold)=0
339 call nident(ikmpc,idof,nmpc,id)
341 if(ikmpc(id).eq.idof)
then 342 write(*,*)
'*ERROR in selcycsymmods:' 343 write(*,*)
' node',node,
344 &
' on cyclic symmetry' 345 write(*,*)
' axis is used in other MPC' 362 nodempc(1,mpcfree)=node
364 coefmpc(mpcfree)=1.d0
366 mpcfree=nodempc(3,mpcfree)
367 if(mpcfree.eq.0)
then 368 write(*,*)
'*ERROR in selcycsymmods:' 369 write(*,*)
' increase memmpc_' 372 nodempc(3,mpcfreeold)=0
382 if(irepeat.eq.0) irepeat=1
384 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
385 & ipoinp,inp,ipoinpc)
static double * x1
Definition: filtermain.c:48
subroutine mpcrem(i, mpcfree, nodempc, nmpc, ikmpc, ilmpc, labmpc, coefmpc, ipompc)
Definition: mpcrem.f:21
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21
subroutine nident(x, px, n, id)
Definition: nident.f:26