46 integer,
intent(in) :: np
47 real(rp),
intent(in) :: orth_p(np,3)
48 real(rp),
intent(out) :: geo_p(np,3)
56 geo_p(p,3) = sqrt( orth_p(p,1)**2 + orth_p(p,2)**2 + orth_p(p,3)**2 )
57 geo_p(p,2) = asin( orth_p(p,3) / geo_p(p,3) )
58 geo_p(p,1) = atan( orth_p(p,2) / orth_p(p,1) )
62 if ( geo_p(p,1) <= 0.0_rp .and. orth_p(p,1) < 0.0_rp )
then
63 geo_p(p,1) = geo_p(p,1) + pi
64 else if ( geo_p(p,1) >= 0.0_rp .and. orth_p(p,1) < 0.0_rp )
then
65 geo_p(p,1) = geo_p(p,1) - pi
67 if ( orth_p(p,1) == 0.0_rp .and. orth_p(p,2) == 0.0_rp )
then
69 else if ( orth_p(p,1) == 0.0_rp )
then
70 geo_p(p,1) = sign(1.0_rp, orth_p(p,2)) * 0.5_rp * pi
83 integer,
intent(in) :: np
84 real(rp),
intent(in) :: geo_p(np,3)
85 real(rp),
intent(out) :: orth_p(np,3)
92 orth_p(p,1) = geo_p(p,3) * cos(geo_p(p,2)) * cos(geo_p(p,1))
93 orth_p(p,2) = geo_p(p,3) * cos(geo_p(p,2)) * sin(geo_p(p,1))
94 orth_p(p,3) = geo_p(p,3) * sin(geo_p(p,2))
105 integer,
intent(in) :: np
106 real(rp),
intent(in) :: orth_v(np,3)
107 real(rp),
intent(in) :: geo_p(np,3)
108 real(rp),
intent(out) :: geo_v(np,3)
111 real(rp) :: sin_geo_p1
112 real(rp) :: cos_geo_p1
113 real(rp) :: sin_geo_p2
114 real(rp) :: cos_geo_p2
119 sin_geo_p1 = sin(geo_p(p,1))
120 cos_geo_p1 = cos(geo_p(p,1))
121 sin_geo_p2 = sin(geo_p(p,2))
122 cos_geo_p2 = cos(geo_p(p,2))
124 geo_v(p,3) = orth_v(p,1) * cos_geo_p2 * cos_geo_p1 &
125 + orth_v(p,2) * cos_geo_p2 * sin_geo_p1 &
126 + orth_v(p,3) * sin_geo_p2
128 geo_v(p,2) = - orth_v(p,1) * sin_geo_p2 * cos_geo_p1 &
129 - orth_v(p,2) * sin_geo_p2 * sin_geo_p1 &
130 + orth_v(p,3) * cos_geo_p2
132 geo_v(p,1) = - orth_v(p,1) * sin_geo_p1 &
133 + orth_v(p,2) * cos_geo_p1
144 integer,
intent(in) :: np
145 real(rp),
intent(in) :: geo_v(np,3)
146 real(rp),
intent(in) :: geo_p(np,3)
147 real(rp),
intent(out) :: orth_v(np,3)
150 real(rp) :: sin_geo_p1
151 real(rp) :: cos_geo_p1
152 real(rp) :: sin_geo_p2
153 real(rp) :: cos_geo_p2
158 sin_geo_p1 = sin(geo_p(p,1))
159 cos_geo_p1 = cos(geo_p(p,1))
160 sin_geo_p2 = sin(geo_p(p,2))
161 cos_geo_p2 = cos(geo_p(p,2))
163 orth_v(p,1) = geo_v(p,3) * cos_geo_p1 * cos_geo_p2 &
164 - geo_v(p,2) * cos_geo_p1 * sin_geo_p2 &
165 - geo_v(p,1) * sin_geo_p1
167 orth_v(p,2) = geo_v(p,3) * sin_geo_p1 * cos_geo_p2 &
168 - geo_v(p,2) * sin_geo_p1 * sin_geo_p2 &
169 + geo_v(p,1) * cos_geo_p1
171 orth_v(p,3) = geo_v(p,3) * sin_geo_p2 + geo_v(p,2) * cos_geo_p2