c Program transinner.f character(6) check real*8 zero(3),one(3),two(3),e1(3),e2(3),v1(3) integer*2 top open(unit=5,file='inner_1304.out') top=1 check='OTCI1' one(1)=-24.742071276554 one(2)=54.8701652120875 one(3)=125.956131596648 e1(1)=0.02608807020939 e1(2)=0.01343642881879 e1(3)=0.02354709772675 two(1)=-24.875779717961 two(2)=55.0718802636610 two(3)=63.8718583742114 e2(1)=0.02664933382074 e2(2)=0.01327839823966 e2(3)=0.02470238195341 call transformer(check,one,two,top) check='OTCI5' one(1)=-24.844623951288 one(2)=55.3175055373766 one(3)=62.8111866078179 e1(1)=0.02664262606979 e1(2)=0.01327787119012 e1(3)=0.02469662884295 call transformer2(check,one,top) check='OTCI11' one(1)=24.8262678831298 one(2)=55.8442872701655 one(3)=-61.794807561954 e1(1)=0.02349736508681 e1(2)=0.01281117042118 e1(3)=0.02146262125965 call transformer3(check,one,top) check='OTCI15' one(1)=24.6469896426369 one(2)=55.8051615677410 one(3)=-125.06774876725 e1(1)=0.02395751154462 e1(2)=0.01339864741070 e1(3)=0.02567057695986 two(1)=24.8643370264394 two(2)=55.7912921782960 two(3)=-62.767076628446 e2(1)=0.02349109110636 e2(2)=0.02145772237319 e2(3)=0.01281108881016 call transformer(check,one,two,top) top=0 check='OBCI1' one(1)=24.4656848434787 one(2)=-57.921784723938 one(3)=125.628011287072 e1(1)=0.02605540784986 e1(2)=0.01341991454507 e1(3)=0.02364648019553 two(1)=24.4548040521357 two(2)=-57.832772025718 two(3)=63.4755379055482 e2(1)=0.02670086981244 e2(2)=0.01322896550997 e2(3)=0.02445802959391 call transformer(check,one,two,top) check='OBCI5' one(1)=24.4748376348895 one(2)=-58.069729131062 one(3)=62.5178835908559 e1(1)=0.02669474427740 e1(2)=0.01322846337140 e1(3)=0.02445312988232 call transformer2(check,one,top) check='OBCI11' one(1)=-24.850294324477 one(2)=-57.324480826795 one(3)=-61.970037627064 e1(1)=0.02351168337869 e1(2)=0.01273762722742 e1(3)=0.02145141480097 call transformer3(check,one,top) check='OBCI15' one(1)=-24.882971693376 one(2)=-57.230293167473 one(3)=-124.93452267243 e1(1)=0.02390957826256 e1(2)=0.01321311342977 e1(3)=0.02556850656287 two(1)=-24.968349085604 two(2)=-57.368984146364 two(3)=-62.994724112786 e2(1)=0.02350457651135 e2(2)=0.01273732228531 e2(3)=0.02144663713391 call transformer(check,one,two,top) close(unit=5) end subroutine transformer(check,one,two,top) character(6) check real*8 zero(3),one(3),two(3),v(3),v1(3) real*8 modv,modv1,modv2,modv3,x,y,z real*8 xp(3),yp(3),zp(3),p(3) integer*2 i2,top call modulus(one,two,modv) do i=1,3 zero(i)=0. xp(i)=(one(i)-two(i))/modv v1(i)=0. end do zp(1)=0. if(top.eq.1) then zp(2)=1. else zp(2)=-1. end if zp(3)=0. call cross(zp,xp,yp) call modulus(xp,zero,modv1) call modulus(yp,zero,modv2) call modulus(zp,zero,modv3) do i=1,3 xp(i)=xp(i)/modv1 yp(i)=yp(i)/modv2 zp(i)=zp(i)/modv3 end do do i2=1,4 call padposition(i2,v) do i=1,3 v1(i)=v(1)*xp(i)+v(2)*yp(i)+v(3)*zp(i) end do do i=1,3 p(i)=two(i)+v1(i) end do write(5,1) check,p(1),p(2),p(3) end do 1 format(A6,3F14.7) end subroutine transformer2(check,one,top) character(6) check real*8 zero(3),one(3),two(3),v(3),v1(3) real*8 modv,modv1,modv2,modv3,x,y,z real*8 xp(3),yp(3),zp(3),p(3) integer*2 i2,top xp(1)=0. xp(2)=0. xp(3)=1. if(top.eq.1) then yp(1)=1. else yp(1)=-1. end if yp(2)=0. yp(3)=0. zp(1)=0. zp(2)=0. zp(3)=1. do i2=1,4 call padposition2(i2,v) do i=1,3 v1(i)=v(1)*xp(i)+v(2)*yp(i)+v(3)*zp(i) end do do i=1,3 p(i)=one(i)+v1(i) end do write(5,1) check,p(1),p(2),p(3) end do 1 format(A6,3F14.7) end subroutine transformer3(check,one,top) character(6) check real*8 zero(3),one(3),two(3),v(3),v1(3) real*8 modv,modv1,modv2,modv3,x,y,z real*8 xp(3),yp(3),zp(3),p(3) integer*2 i2,top xp(1)=0. xp(2)=0. xp(3)=1. if(top.eq.1) then yp(1)=1. else yp(1)=-1. end if yp(2)=0. yp(3)=0. zp(1)=0. zp(2)=0. zp(3)=1. do i2=1,4 call padposition2(i2,v) do i=1,3 v1(i)=v(1)*xp(i)+v(2)*yp(i)+v(3)*zp(i) end do do i=1,3 p(i)=one(i)-v1(i) end do write(5,1) check,p(1),p(2),p(3) end do 1 format(A6,3F14.7) end subroutine modulus(a,b,answer) real*8 a(3),b(3),c(3),answer do i=1,3 c(i)=b(i)-a(i) end do answer=(c(1)**2+c(2)**2+c(3)**2)**0.5 end subroutine cross(a,b,c) real*8 a(3),b(3),c(3) c(1)=a(2)*b(3)-a(3)*b(2) c(2)=a(3)*b(1)-a(1)*b(3) c(3)=a(1)*b(2)-a(2)*b(1) end subroutine padposition(i,v) real*8 v(3),p1,p2,p3,p4,shift integer*2 i v(3)=0. shift=-0.0 p1=1.017+shift p2=6.798+shift p3=42.903+shift p4=61.087+shift if(i.eq.1) then v(1)=p1 v(2)=p2 end if if(i.eq.2) then v(1)=p4 v(2)=p2 end if if(i.eq.3) then v(1)=p1 v(2)=p3 end if if(i.eq.4) then v(1)=p4 v(2)=p3 end if end subroutine padposition2(i,v) real*8 v(3),p1,p2,p3,p4,shift integer*2 i v(3)=0. shift=-0.0 p1=-61.087+shift p2=6.798+shift p3=42.903+shift p4=-1.017+shift if(i.eq.1) then v(1)=p1 v(2)=p2 end if if(i.eq.2) then v(1)=p4 v(2)=p2 end if if(i.eq.3) then v(1)=p1 v(2)=p3 end if if(i.eq.4) then v(1)=p4 v(2)=p3 end if end