|  | @@ 363-404 (lines=42) @@ | 
                                                            
                                    | 360 |  |         # if array is returned, dtype is object, so convert to float | 
                                                            
                                    | 361 |  |         return np.float64(glat), np.float64(glon), np.float64(error) | 
                                                            
                                    | 362 |  |  | 
                                                            
                                    | 363 |  |     def _apex2qd_nonvectorized(self, alat, alon, height): | 
                                                            
                                    | 364 |  |         """Convert from apex to quasi-dipole (not-vectorised) | 
                                                            
                                    | 365 |  |  | 
                                                            
                                    | 366 |  |         Parameters | 
                                                            
                                    | 367 |  |         ----------- | 
                                                            
                                    | 368 |  |         alat : (float) | 
                                                            
                                    | 369 |  |             Apex latitude in degrees | 
                                                            
                                    | 370 |  |         alon : (float) | 
                                                            
                                    | 371 |  |             Apex longitude in degrees | 
                                                            
                                    | 372 |  |         height : (float) | 
                                                            
                                    | 373 |  |             Height in km | 
                                                            
                                    | 374 |  |  | 
                                                            
                                    | 375 |  |         Returns | 
                                                            
                                    | 376 |  |         --------- | 
                                                            
                                    | 377 |  |         qlat : (float) | 
                                                            
                                    | 378 |  |             Quasi-dipole latitude in degrees | 
                                                            
                                    | 379 |  |         qlon : (float) | 
                                                            
                                    | 380 |  |             Quasi-diplole longitude in degrees | 
                                                            
                                    | 381 |  |         """ | 
                                                            
                                    | 382 |  |  | 
                                                            
                                    | 383 |  |         alat = helpers.checklat(alat, name='alat') | 
                                                            
                                    | 384 |  |  | 
                                                            
                                    | 385 |  |         # convert modified apex to quasi-dipole: | 
                                                            
                                    | 386 |  |         qlon = alon | 
                                                            
                                    | 387 |  |  | 
                                                            
                                    | 388 |  |         # apex height | 
                                                            
                                    | 389 |  |         hA = self.get_apex(alat) | 
                                                            
                                    | 390 |  |  | 
                                                            
                                    | 391 |  |         if hA < height: | 
                                                            
                                    | 392 |  |             if np.isclose(hA, height, rtol=0, atol=1e-5): | 
                                                            
                                    | 393 |  |                 # allow for values that are close | 
                                                            
                                    | 394 |  |                 hA = height | 
                                                            
                                    | 395 |  |             else: | 
                                                            
                                    | 396 |  |                 estr = 'height {:.3g} is > apex height'.format(np.max(height))\ | 
                                                            
                                    | 397 |  |                        + ' {:.3g} for alat {:.3g}'.format(hA, alat) | 
                                                            
                                    | 398 |  |                 raise ApexHeightError(estr) | 
                                                            
                                    | 399 |  |  | 
                                                            
                                    | 400 |  |         salat = np.sign(alat) if alat != 0 else 1 | 
                                                            
                                    | 401 |  |         qlat = salat * np.degrees(np.arccos(np.sqrt((self.RE + height) / | 
                                                            
                                    | 402 |  |                                                     (self.RE + hA)))) | 
                                                            
                                    | 403 |  |  | 
                                                            
                                    | 404 |  |         return qlat, qlon | 
                                                            
                                    | 405 |  |  | 
                                                            
                                    | 406 |  |     def apex2qd(self, alat, alon, height): | 
                                                            
                                    | 407 |  |         """Converts modified apex to quasi-dipole coordinates. | 
                                                                                
                                |  | @@ 437-457 (lines=21) @@ | 
                                                            
                                    | 434 |  |         # if array is returned, the dtype is object, so convert to float | 
                                                            
                                    | 435 |  |         return np.float64(qlat), np.float64(qlon) | 
                                                            
                                    | 436 |  |  | 
                                                            
                                    | 437 |  |     def _qd2apex_nonvectorized(self, qlat, qlon, height): | 
                                                            
                                    | 438 |  |  | 
                                                            
                                    | 439 |  |         qlat = helpers.checklat(qlat, name='qlat') | 
                                                            
                                    | 440 |  |  | 
                                                            
                                    | 441 |  |         alon = qlon | 
                                                            
                                    | 442 |  |         hA = self.get_apex(qlat, height)  # apex height | 
                                                            
                                    | 443 |  |  | 
                                                            
                                    | 444 |  |         if hA < self.refh: | 
                                                            
                                    | 445 |  |             if np.isclose(hA, self.refh, rtol=0, atol=1e-5): | 
                                                            
                                    | 446 |  |                 # allow for values that are close | 
                                                            
                                    | 447 |  |                 hA = self.refh | 
                                                            
                                    | 448 |  |             else: | 
                                                            
                                    | 449 |  |                 estr = 'apex height ({:.3g}) is < reference height '.format(hA) | 
                                                            
                                    | 450 |  |                 estr += '({:.3g}) for qlat {:.3g}'.format(self.refh, qlat) | 
                                                            
                                    | 451 |  |                 raise ApexHeightError(estr) | 
                                                            
                                    | 452 |  |  | 
                                                            
                                    | 453 |  |         sqlat = np.sign(qlat) if qlat != 0 else 1 | 
                                                            
                                    | 454 |  |         alat = sqlat * np.degrees(np.arccos(np.sqrt((self.RE + self.refh) / | 
                                                            
                                    | 455 |  |                                                     (self.RE + hA)))) | 
                                                            
                                    | 456 |  |  | 
                                                            
                                    | 457 |  |         return alat, alon | 
                                                            
                                    | 458 |  |  | 
                                                            
                                    | 459 |  |     def qd2apex(self, qlat, qlon, height): | 
                                                            
                                    | 460 |  |         """Converts quasi-dipole to modified apex coordinates. |