def _progenitor_setup(self,progenitor,leading,useTMHessian):
        """The part of the setup relating to the progenitor's orbit"""
        #Progenitor orbit: Calculate actions, frequencies, and angles for the progenitor
        self._progenitor= progenitor() #call to get new Orbit
        # Make sure we do not use physical coordinates
        self._progenitor.turn_physical_off()
        acfs= self._aA.actionsFreqsAngles(self._progenitor,
                                          _firstFlip=(not leading),
                                          use_physical=False)
        self._progenitor_jr= acfs[0][0]
        self._progenitor_lz= acfs[1][0]
        self._progenitor_jz= acfs[2][0]
        self._progenitor_Omegar= acfs[3]
        self._progenitor_Omegaphi= acfs[4]
        self._progenitor_Omegaz= acfs[5]
        self._progenitor_Omega= numpy.array([acfs[3],acfs[4],acfs[5]]).reshape(3)
        self._progenitor_angler= acfs[6]
        self._progenitor_anglephi= acfs[7]
        self._progenitor_anglez= acfs[8]
        self._progenitor_angle= numpy.array([acfs[6],acfs[7],acfs[8]]).reshape(3)
        #Calculate dO/dJ Jacobian at the progenitor
        if useTMHessian:
            h, fr,fp,fz,e= self._aAT.hessianFreqs(self._progenitor_jr,
                                                  self._progenitor_lz,
                                                  self._progenitor_jz)
            self._dOdJp= h
            # Replace frequencies with TM frequencies
            self._progenitor_Omegar= fr
            self._progenitor_Omegaphi= fp
            self._progenitor_Omegaz= fz
            self._progenitor_Omega= numpy.array([self._progenitor_Omegar,
                                                 self._progenitor_Omegaphi,
                                                 self._progenitor_Omegaz]).reshape(3)
        else:
            self._dOdJp= calcaAJac(self._progenitor._orb.vxvv,
                                   self._aA,dxv=None,dOdJ=True,
                                   _initacfs=acfs)
        self._dOdJpInv= numpy.linalg.inv(self._dOdJp)
        self._dOdJpEig= numpy.linalg.eig(self._dOdJp)
        return None
def _progenitor_setup ( self , progenitor , leading , useTMHessian ) : self . _progenitor = progenitor ( ) self . _progenitor . turn_physical_off ( ) acfs = self . _aA . actionsFreqsAngles ( self . _progenitor , _firstFlip = ( not leading ) , use_physical = False ) self . _progenitor_jr = acfs [ 0 ] [ 0 ] self . _progenitor_lz = acfs [ 1 ] [ 0 ] self . _progenitor_jz = acfs [ 2 ] [ 0 ] self . _progenitor_Omegar = acfs [ 3 ] self . _progenitor_Omegaphi = acfs [ 4 ] self . _progenitor_Omegaz = acfs [ 5 ] self . _progenitor_Omega = numpy . array ( [ acfs [ 3 ] , acfs [ 4 ] , acfs [ 5 ] ] ) . reshape ( 3 ) self . _progenitor_angler = acfs [ 6 ] self . _progenitor_anglephi = acfs [ 7 ] self . _progenitor_anglez = acfs [ 8 ] self . _progenitor_angle = numpy . array ( [ acfs [ 6 ] , acfs [ 7 ] , acfs [ 8 ] ] ) . reshape ( 3 ) if useTMHessian : h , fr , fp , fz , e = self . _aAT . hessianFreqs ( self . _progenitor_jr , self . _progenitor_lz , self . _progenitor_jz ) self . _dOdJp = h self . _progenitor_Omegar = fr self . _progenitor_Omegaphi = fp self . _progenitor_Omegaz = fz self . _progenitor_Omega = numpy . array ( [ self . _progenitor_Omegar , self . _progenitor_Omegaphi , self . _progenitor_Omegaz ] ) . reshape ( 3 ) else : self . _dOdJp = calcaAJac ( self . _progenitor . _orb . vxvv , self . _aA , dxv = None , dOdJ = True , _initacfs = acfs ) self . _dOdJpInv = numpy . linalg . inv ( self . _dOdJp ) self . _dOdJpEig = numpy . linalg . eig ( self . _dOdJp ) return None
The part of the setup relating to the progenitor's orbit