Convert vector to Cartesian coordinates
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | xp(1:3) | |||
| double precision, | intent(in) | :: | up(1:3) | |||
| double precision, | intent(out) | :: | upcart(1:3) |
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