def __init__(self,stl,controls,name="body", r_ref=None, x_ref=None): 
        """stl must be an STL object"""

        self.stl = stl
        geom_points = stl.points

        self.coords = Coordinates(geom_points,cartesian=True)

        self.P = self.coords.cylindrical
        self.P_cart = self.coords.cartesian
        self.P_bar = geom_points.copy() #just initialization
        if isinstance(controls,int): 
            X = geom_points[:,0]
            x_max = np.max(X)
            x_min = np.min(X)
            C_x = np.linspace(x_min,x_max,controls) 
            C_r = np.zeros((controls,))
            control_points = np.array(zip(C_x,C_r))

            self.C = control_points 
            self.n_controls = controls
        else: 
            self.C = controls
            self.n_controls = len(control_points)
        self.C_bar = self.C.copy()
        self.delta_C = np.zeros(self.C.shape)
        self.bs = Bspline(self.C,geom_points)

        self.name = name

        if x_ref is not None: 
            self.x_mag = float(x_ref)
        else: 
            self.x_mag = 10**np.floor(np.log10(np.average(geom_points[:,0])))

        if r_ref is not None: 
            self.r_mag = float(r_ref)
        else: 
            indecies = np.logical_and(abs(geom_points[:,2])<.0001, 0 > geom_points[:,1])
            points = geom_points[indecies]
            self.r_mag = 10**np.floor(np.log10(np.average(points[:,1]))) #grab the order of magnitude of the average
        

        #for revolution of 2-d profile
        #self.n_theta = 20

        #sgrab the theta values from the points 
        self.Theta = self.P[:,2]
        #this is too complex. shouldn't need to tile, then flatten later.
        self.sin_theta = np.tile(np.sin(self.Theta),(self.n_controls,1)).T.flatten()
        self.cos_theta = np.tile(np.cos(self.Theta),(self.n_controls,1)).T.flatten()
        # self.sin_theta = np.tile(np.sin(self.Theta),self.n_controls)
        # self.cos_theta = np.tile(np.cos(self.Theta),self.n_controls)

        #calculate derivatives
        #in polar coordinates
        self.dP_bar_xqdC = np.array(self.x_mag*self.bs.B.flatten())
        self.dP_bar_rqdC = np.array(self.r_mag*self.bs.B.flatten())

        #Project Polar derivatives into revolved cartisian coordinates
        self.dXqdC = self.dP_bar_xqdC.reshape(-1,self.n_controls)
        self.dYqdC = (self.dP_bar_rqdC*self.sin_theta).reshape(-1,self.n_controls)
        self.dZqdC = (self.dP_bar_rqdC*self.cos_theta).reshape(-1,self.n_controls)
dataset/ETHPy150Open OpenMDAO/OpenMDAO-Framework/openmdao.lib/src/openmdao/lib/geometry/ffd_axisymetric.py/Body.__init__/swapped operands of `>`