46 integer,
intent(in) :: np
47 real(rp),
intent(in) :: orth_p(np,3)
48 real(rp),
intent(out) :: geo_p(np,3)
59 geo_p(p,3) = sqrt( orth_p(p,1)**2 + orth_p(p,2)**2 + orth_p(p,3)**2 )
60 geo_p(p,2) = asin( orth_p(p,3) / geo_p(p,3) )
61 geo_p(p,1) = atan( orth_p(p,2) / orth_p(p,1) )
67 if ( geo_p(p,1) <= 0.0_rp .and. orth_p(p,1) < 0.0_rp )
then
68 geo_p(p,1) = geo_p(p,1) + pi
69 else if ( geo_p(p,1) >= 0.0_rp .and. orth_p(p,1) < 0.0_rp )
then
70 geo_p(p,1) = geo_p(p,1) - pi
72 if ( orth_p(p,1) == 0.0_rp .and. orth_p(p,2) == 0.0_rp )
then
74 else if ( orth_p(p,1) == 0.0_rp )
then
75 geo_p(p,1) = sign(1.0_rp, orth_p(p,2)) * 0.5_rp * pi
91 integer,
intent(in) :: np
92 real(rp),
intent(in) :: geo_p(np,3)
93 real(rp),
intent(out) :: orth_p(np,3)
100 orth_p(p,1) = geo_p(p,3) * cos(geo_p(p,2)) * cos(geo_p(p,1))
101 orth_p(p,2) = geo_p(p,3) * cos(geo_p(p,2)) * sin(geo_p(p,1))
102 orth_p(p,3) = geo_p(p,3) * sin(geo_p(p,2))
113 integer,
intent(in) :: np
114 real(rp),
intent(in) :: orth_v(np,3)
115 real(rp),
intent(in) :: geo_p(np,3)
116 real(rp),
intent(out) :: geo_v(np,3)
119 real(rp) :: sin_geo_p1
120 real(rp) :: cos_geo_p1
121 real(rp) :: sin_geo_p2
122 real(rp) :: cos_geo_p2
127 sin_geo_p1 = sin(geo_p(p,1))
128 cos_geo_p1 = cos(geo_p(p,1))
129 sin_geo_p2 = sin(geo_p(p,2))
130 cos_geo_p2 = cos(geo_p(p,2))
132 geo_v(p,3) = orth_v(p,1) * cos_geo_p2 * cos_geo_p1 &
133 + orth_v(p,2) * cos_geo_p2 * sin_geo_p1 &
134 + orth_v(p,3) * sin_geo_p2
136 geo_v(p,2) = - orth_v(p,1) * sin_geo_p2 * cos_geo_p1 &
137 - orth_v(p,2) * sin_geo_p2 * sin_geo_p1 &
138 + orth_v(p,3) * cos_geo_p2
140 geo_v(p,1) = - orth_v(p,1) * sin_geo_p1 &
141 + orth_v(p,2) * cos_geo_p1
152 integer,
intent(in) :: np
153 real(rp),
intent(in) :: geo_v(np,3)
154 real(rp),
intent(in) :: geo_p(np,3)
155 real(rp),
intent(out) :: orth_v(np,3)
158 real(rp) :: sin_geo_p1
159 real(rp) :: cos_geo_p1
160 real(rp) :: sin_geo_p2
161 real(rp) :: cos_geo_p2
166 sin_geo_p1 = sin(geo_p(p,1))
167 cos_geo_p1 = cos(geo_p(p,1))
168 sin_geo_p2 = sin(geo_p(p,2))
169 cos_geo_p2 = cos(geo_p(p,2))
171 orth_v(p,1) = geo_v(p,3) * cos_geo_p1 * cos_geo_p2 &
172 - geo_v(p,2) * cos_geo_p1 * sin_geo_p2 &
173 - geo_v(p,1) * sin_geo_p1
175 orth_v(p,2) = geo_v(p,3) * sin_geo_p1 * cos_geo_p2 &
176 - geo_v(p,2) * sin_geo_p1 * sin_geo_p2 &
177 + geo_v(p,1) * cos_geo_p1
179 orth_v(p,3) = geo_v(p,3) * sin_geo_p2 + geo_v(p,2) * cos_geo_p2