partvec_to_cartesian Subroutine

public subroutine partvec_to_cartesian(xp, up, upcart)

Uses

  • proc~~partvec_to_cartesian~~UsesGraph proc~partvec_to_cartesian partvec_to_cartesian module~mod_geometry mod_geometry proc~partvec_to_cartesian->module~mod_geometry module~mod_global_parameters mod_global_parameters proc~partvec_to_cartesian->module~mod_global_parameters module~mod_comm_lib mod_comm_lib module~mod_geometry->module~mod_comm_lib module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Convert vector to Cartesian coordinates

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: xp(1:3)
double precision, intent(in) :: up(1:3)
double precision, intent(out) :: upcart(1:3)

Called by

proc~~partvec_to_cartesian~~CalledByGraph proc~partvec_to_cartesian partvec_to_cartesian proc~lorentz_integrate_particles Lorentz_integrate_particles proc~lorentz_integrate_particles->proc~partvec_to_cartesian

Source Code

  subroutine partvec_to_cartesian(xp,up,upcart)
    ! conversion of a generic vector from cylindrical/spherical to cartesian coordinates done here
    use mod_global_parameters
    use mod_geometry

    double precision, intent(in)  :: xp(1:3),up(1:3)
    double precision, intent(out) :: upcart(1:3)

    select case (coordinate)
    case (Cartesian,Cartesian_stretched,Cartesian_expansion)
      upcart(1:3)=up(1:3)
    case (cylindrical)
      upcart(1) = cos(xp(phi_)) * up(r_) - sin(xp(phi_)) * up(phi_)
      upcart(2) = cos(xp(phi_)) * up(phi_) + sin(xp(phi_)) * up(r_)
      upcart(3) = up(z_)
    case (spherical)
      upcart(1) = up(1)*sin(xp(2))*cos(xp(3)) + up(2)*cos(xp(2))*cos(xp(3)) - &
         up(3)*sin(xp(3))


      upcart(2) = up(1)*sin(xp(2))*sin(xp(3)) + up(2)*cos(xp(2))*sin(xp(3)) + &
         up(3)*cos(xp(3))
      upcart(3) = up(1)*cos(xp(2)) - up(2)*sin(xp(2))
    case default
      write(*,*) "No converter for coordinate=",coordinate
    end select

  end subroutine partvec_to_cartesian