partvec_from_cartesian Subroutine

public subroutine partvec_from_cartesian(xp, up, upcart)

Uses

  • proc~~partvec_from_cartesian~~UsesGraph proc~partvec_from_cartesian partvec_from_cartesian module~mod_geometry mod_geometry proc~partvec_from_cartesian->module~mod_geometry module~mod_global_parameters mod_global_parameters proc~partvec_from_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 from Cartesian coordinates

Arguments

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

Called by

proc~~partvec_from_cartesian~~CalledByGraph proc~partvec_from_cartesian partvec_from_cartesian proc~lorentz_integrate_particles Lorentz_integrate_particles proc~lorentz_integrate_particles->proc~partvec_from_cartesian

Source Code

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

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

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


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

  end subroutine partvec_from_cartesian