| 
                                
                                    @@ 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.  |