init_vectors_cartesian Subroutine

public subroutine init_vectors_cartesian()

Arguments

None

Calls

proc~~init_vectors_cartesian~~CallsGraph proc~init_vectors_cartesian init_vectors_cartesian proc~cross_product_loc cross_product_loc proc~init_vectors_cartesian->proc~cross_product_loc

Called by

proc~~init_vectors_cartesian~~CalledByGraph proc~init_vectors_cartesian init_vectors_cartesian proc~get_image get_image proc~get_image->proc~init_vectors_cartesian proc~get_spectrum get_spectrum proc~get_spectrum->proc~init_vectors_cartesian proc~get_euv_image get_EUV_image proc~get_euv_image->proc~get_image proc~get_euv_spectrum get_EUV_spectrum proc~get_euv_spectrum->proc~get_spectrum proc~get_sxr_image get_SXR_image proc~get_sxr_image->proc~get_image proc~get_whitelight_image get_whitelight_image proc~get_whitelight_image->proc~get_image

Source Code

    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