subroutine init_vectors_cartesian() integer :: j double precision :: LOS_psi double precision :: vec_z(1:3),vec_temp1(1:3),vec_temp2(1:3) ! vectors for image coordinate vec_LOS(1)=-cos(dpi*LOS_phi/180.d0)*sin(dpi*LOS_theta/180.d0) vec_LOS(2)=-sin(dpi*LOS_phi/180.d0)*sin(dpi*LOS_theta/180.d0) vec_LOS(3)=-cos(dpi*LOS_theta/180.d0) do j=1,3 if (abs(vec_LOS(j))<=smalldouble) vec_LOS(j)=zero enddo vec_z(:)=zero vec_z(3)=1.d0 if (LOS_theta==zero) then vec_xI1(1)=cos(dpi*LOS_phi/180.d0) vec_xI1(2)=sin(dpi*LOS_phi/180.d0) vec_xI1(3)=zero else call cross_product_loc(vec_LOS,vec_z,vec_xI1) endif call cross_product_loc(vec_xI1,vec_LOS,vec_xI2) vec_temp1=vec_xI1/sqrt(vec_xI1(1)**2+vec_xI1(2)**2+vec_xI1(3)**2) vec_temp2=vec_xI2/sqrt(vec_xI2(1)**2+vec_xI2(2)**2+vec_xI2(3)**2) LOS_psi=dpi*image_rotate/180.d0 vec_xI1=vec_temp1*cos(LOS_psi)-vec_temp2*sin(LOS_psi) vec_xI2=vec_temp2*cos(LOS_psi)+vec_temp1*sin(LOS_psi) do j=1,3 if (abs(vec_xI1(j))<smalldouble) vec_xI1(j)=zero if (abs(vec_xI2(j))<smalldouble) vec_xI2(j)=zero enddo if (mype==0) write(*,'(a,f5.2,f6.2,f6.2,a)') ' LOS vector: [',vec_LOS(1),& vec_LOS(2),vec_LOS(3),']' if (mype==0) write(*,'(a,f5.2,f6.2,f6.2,a)') ' xI1 vector: [',vec_xI1(1),& vec_xI1(2),vec_xI1(3),']' if (mype==0) write(*,'(a,f5.2,f6.2,f6.2,a)') ' xI2 vector: [',vec_xI2(1),& vec_xI2(2),vec_xI2(3),']' end subroutine init_vectors_cartesian