27       character*80 orname(*)
    28       character*132 textpart(16)
    30       integer norien,norien_,istep,istat,n,key,i,iline,ipol,inl,
    31      &  ipoinp(2,*),inp(3,*),ipoinpc(0:*),iaxis,j
    33       real*8 orab(7,*),a(3,3),c(3,3),angle,p(3),dc,ds,pi
    37      &       
'*ERROR reading *ORIENTATION: *ORIENTATION should be'    38          write(*,*) 
'  placed before all step definitions'    43       if(norien.gt.norien_) 
then    44          write(*,*) 
'*ERROR reading *ORIENTATION: increase norien_'    55          if(textpart(i)(1:5).eq.
'NAME=') 
then    56             orname(norien)=textpart(i)(6:85)
    57             if(textpart(i)(86:86).ne.
' ') 
then    58                write(*,*) 
'*ERROR reading *ORIENTATION: name too long'    59                write(*,*) 
'       (more than 80 characters)'    60                write(*,*) 
'       orientation name:',textpart(i)(1:132)
    63          elseif(textpart(i)(1:7).eq.
'SYSTEM=') 
then    64             if(textpart(i)(8:8).eq.
'C') 
then    69      &        
'*WARNING reading *ORIENTATION: parameter not recognized:'    71      &                 textpart(i)(1:index(textpart(i),
' ')-1)
    77       call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
    79       if((istat.lt.0).or.(key.eq.1)) 
then    81      &      
'*ERROR reading *ORIENTATION: definition of the following'    82          write(*,*) 
'  orientation is not complete: ',orname(norien)
    87          read(textpart(i)(1:20),
'(f20.0)',iostat=istat) orab(i,norien)
    88          if(istat.gt.0) 
call inputerror(inpc,ipoinpc,iline,
    92       call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
    95       if((istat.lt.0).or.(key.eq.1)) 
return    97       read(textpart(1)(1:10),
'(i10)',iostat=istat) iaxis
    98       if(istat.gt.0) 
call inputerror(inpc,ipoinpc,iline,
   100       read(textpart(2)(1:20),
'(f20.0)',iostat=istat) angle
   101       if(istat.gt.0) 
call inputerror(inpc,ipoinpc,iline,
   107       if(orab(7,norien).lt.0.d0) 
then   108          write(*,*) 
'*ERROR reading *ORIENTATION'   109          write(*,*) 
'       additional rotation about an angle'   110          write(*,*) 
'       is only allowed for rectangular systems'   125       angle=angle*pi/180.d0
   128       c(1,1)=dc+(1.d0-dc)*p(1)*p(1)
   129       c(1,2)=-ds*p(3)+(1.d0-dc)*p(1)*p(2)
   130       c(1,3)=ds*p(2)+(1.d0-dc)*p(1)*p(3)
   131       c(2,1)=ds*p(3)+(1.d0-dc)*p(2)*p(1)
   132       c(2,2)=dc+(1.d0-dc)*p(2)*p(2)
   133       c(2,3)=-ds*p(1)+(1.d0-dc)*p(2)*p(3)
   134       c(3,1)=-ds*p(2)+(1.d0-dc)*p(3)*p(1)
   135       c(3,2)=ds*p(1)+(1.d0-dc)*p(3)*p(2)
   136       c(3,3)=dc+(1.d0-dc)*p(3)*p(3)
   144             orab(i,norien)=orab(i,norien)+c(i,j)*a(j,1)
   152          orab(i+3,norien)=0.d0
   154             orab(i+3,norien)=orab(i+3,norien)+c(i,j)*a(j,2)
   158       call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
   159      &     ipoinp,inp,ipoinpc)
 
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21