Exemplo n.º 1
0
    def setType(self, type):
        """

        :param type:
        :return:
        """
        self._type = fix_string(type.title())
Exemplo n.º 2
0
    def setType(self, type):
        """

        :param type:
        :return:
        """
        self._type = fix_string(type.title())
Exemplo n.º 3
0
    def plot(self, x, y, color=None, label=None, str_id=None):
        """

        :param x: options = (delta)
        :param y: options = (Fn, dqn)
        :param color:
        :return:
        """
        _contact_indices = self._contact()

        label, color = self._plot_info(color)
        label = fix_string(label)
        if x == "delta":
            x_data = abs(
                self._distance_solution_container[_contact_indices])[1::]
        elif x == "t":
            x_data = self._t_solution_container[
                _contact_indices] - self._t_solution_container[
                    _contact_indices][0]
        else:
            raise ValueError, "x not corrent!"

        if y == "Fn":
            y_data = abs(self._Fn_solution_container[_contact_indices]) / 0.015
        elif y == "dqn":
            y_data = self._dqn_solution_container[_contact_indices][1::]
        else:
            raise ValueError, "y not corrent!"

        # plt.plot(x_data, y_data, marker=None, color=color, label=r"$\textrm{%s}$"%label)
        plt.plot(x_data, y_data, marker=None, color=color, label=label)
Exemplo n.º 4
0
    def plot(self, x, y, colors=None, labels=None):
        """

        """
        if colors is None:
            colors = [None] * len(self.mbd_solutions)

        if labels is None:
            labels = [None] * len(self.mbd_solutions)

        #    plot the data
        for i, (sol, color, label) in enumerate(zip(self.mbd_solutions, colors, labels)):
            if label is None:
                try:
                    _indx = sol._name.index('0')+3
                    label = sol._name[_indx::]
                    label = fix_string(label)
                except:
                    label = sol._name

            print label
            sol._plot(x, y, color=color, label=label)
               [.2, 0.2, 0.2],
               [0, 0, .5],
               [.7, .3, .1],
               [0.1, 0.1, .9]]

fig = plt.figure(num=1, figsize=(8, 6), dpi=100, facecolor='w', edgecolor='k')
ax = plt.subplot(111, aspect="auto")
ax.ticklabel_format(style='sci',scilimits=(-4,4), axis='both')

#   tex settings
rcParams['text.usetex'] = True

rc('font', family='serif')

for contact_model, _color in zip(contact_models, _colors):
    _label = fix_string(contact_model._type)
    plt.plot(c_r, contact_model.ksi_solution_data, label=_label, color=_color)

ax.legend(loc='best', fontsize=12)#, bbox_to_anchor=(1, 0.5))
plt.grid()
# plt.legend(loc='upper right', bbox_to_anchor=(1, 1))
# plt.show()
plt.tick_params(axis='both', which='major', labelsize=12)
plt.tick_params(axis='both', which='minor', labelsize=12)

# plt.xlabel(r'\ $\delta$ [m]', fontsize=12)
# plt.ylabel(r'\ $dq_n$ [m/s]', fontsize=12)
plt.ylabel(r'\ $\chi$', fontsize=12)
plt.xlabel(r'\ c_r', fontsize=12)
# plt.ylabel(r'\ $F$ [N]', fontsize=12)
# y_label.set_rotation(0)
_colors = [[0, 0, 0], [.7, .3, .1], [1, 0, 0], [0, 1, 0], [0, 0, 1],
           [.5, .5, .5], [.2, 0.2, 0.2], [0, 0, .5], [.7, .3, .1],
           [0.1, 0.1, .9]]

sb.set_style(style='white')
fig = plt.figure(num=1, figsize=(8, 6), dpi=100, facecolor='w', edgecolor='k')
ax = plt.subplot(111, aspect="auto")
ax.ticklabel_format(style='sci', scilimits=(-4, 4), axis='both')

#   tex settings
mpl.rcParams['text.usetex'] = True
mpl.rc('font', family='serif')

for contact_model, _color in zip(contact_models, _colors):
    _label = fix_string(contact_model._type)
    plt.plot(c_r, contact_model.ksi_solution_data, label=_label, color=_color)

leg = ax.legend(loc='best', fontsize=12,
                frameon=True)  #, bbox_to_anchor=(1, 0.5))
leg.get_frame().set_alpha(1)
plt.grid()
# plt.legend(loc='upper right', bbox_to_anchor=(1, 1))
# plt.show()
plt.tick_params(axis='both', which='major', labelsize=12)
plt.tick_params(axis='both', which='minor', labelsize=12)

# plt.xlabel(r'\ $\delta$ [m]', fontsize=12)
# plt.ylabel(r'\ $dq_n$ [m/s]', fontsize=12)
plt.ylabel(r'\ $\chi$', fontsize=18)
plt.xlabel(r'\ $c_r$', fontsize=18)
Exemplo n.º 7
0
    def _edit(self, item):
        """

        :return:
        """
        print "edit()"
        self.item = item

        #   get (and display in QLineEdit) contact name
        self.ui.name_lineEdit.setText(item._name)

        #   get (and display in QLineEdit) contact id
        self.ui.contactID_lineEdit.setText(str(item.contact_id))

        #   get (and display in QLineEdit) type line edit
        _index = self.ui.contactTypecomboBox.findText(QtCore.QString(item._type.title()))
        self.ui.contactTypecomboBox.setCurrentIndex(_index)

        #   contact model
        #   fix string
        # contact_model_type = fix_string(item.contact_model._type.title())
        # print "contact_model_type =", contact_model_type, type(contact_model_type)
        # #   get (and display in QLineEdit) contact model
        # _index = self.ui.contactModelTypecomboBox.findText(contact_model_type)
        # print
        # self.ui.contactModelTypecomboBox.setCurrentIndex(_index)

        #   coefficient of restitution
        if item.contact_model._type.title() == "Hertz":
            self.ui.restitution_coefficient_lineEdit.setEnabled(False)
        else:
            self.ui.restitution_coefficient_lineEdit.setText(str(item.contact_model.c_r))

        #   contact stiffness
        if hasattr(item.contact_model, "K"):
            self.ui.contact_stiffness_lineEdit.setText(str(item.contact_model.K))

        #   list of contact models where n is not used
        # _n_unused = ["Hertz", "Kelvin-Voigt", "Hunt-Crossley", "Herbert-McWhannell", "Flores et al", "Zhiying-Qishao", "Gonthier et al"]

        #   power exponent - n
        # print "contact_model_type =", contact_model_type
        if hasattr(item.contact_model, "n"):
            if item.contact_model != None:
                self.ui.power_exponent_lineEdit.setText(str(item.contact_model.n))
        else:
            self.ui.power_exponent_lineEdit.setEnabled(False)

        #   friction model
        #   get (and display in QLineEdit) friction model
        _index = self.ui.frictionModelTypecomboBox.findText(QtCore.QString(item.friction_model._type.title()))
        self.ui.frictionModelTypecomboBox.setCurrentIndex(_index)

        #   body id i
        self.ui.bodyIDi_lineEdit.setText(str(item.body_id_i))
        #   body id j
        self.ui.bodyIDj_lineEdit.setText(str(item.body_id_j))
        #   save data to file
        # self.ui.saveDataToFile_checkBox.setChecked(item.save_to_file)
        #   color
        self.ui.color_lineEdit.setText(array2string(item._color_GL))
        #   scale
        self.ui.scale_factor_lineEdit.setText(str(item._scale_GL))

        #    coefficient of restitution
        # self.ui.restitutionCoef_lineEdit.setText(str(item.contact_model.coef_of_restitution))
        
        #    coefficient of friction static
        # self.ui.frictionCoefStatic_lineEdit.setText(str(item.friction_model.coef_of_friction_static))
        
        #    coefficient of friction dynamic
        # self.ui.frictionCoefDynamic_lineEdit.setText(str(item.friction_model.coef_of_friction_dynamic))

        #   z coordinate of position of contact plane
        # self.ui.z_dim_lineEdit.setText(str(item.z_dim))

        #   TOL of distance
        self.ui.TOL_distance_lineEdit.setText(str(item.distance_TOL))

        #   default dissable all input and enable later only selected one
        self.ui.GeneralContactAddParams.setEnabled(False)
        self.ui.RevoluteClearanceJointAddParams.setEnabled(False)
        self.ui.SphereSphereContactAddParams.setEnabled(False)
        self.ui.PlaneSphereContactAddParams.setEnabled(False)

        #   list of GUI editable properties/parameters for each type of contact
        #   general contact
        self._GeneralContactAddParams = [self.ui.z_dim_lineEdit,
                                    self.ui.skin_thickness_i_lineEdit,
                                    self.ui.skin_thickness_j_lineEdit]

        #   revolute clearance joint contact
        self._RevoluteClearanceJointAddParams = [self.ui.uPi_lineEdit,
                                            self.ui.uPj_lineEdit,
                                            self.ui.Ri_lineEdit,
                                            self.ui.Rj_lineEdit]

        #   contact sphere-sphere
        self._ContactSphereSphere = [self.ui.R0i_lineEdit,
                                    self.ui.R0j_lineEdit]

        #   contact plane-sphere
        self._ContactPlaneSphere = [self.ui.normal_i_lineEdit,
                                    self.ui.R0j_sphere_lineEdit]

        _allAddParams = self._GeneralContactAddParams + self._RevoluteClearanceJointAddParams + self._ContactSphereSphere

        for _param in _allAddParams:
            _param.setEnabled(False)

        if item._type.title() == "General":
            self.ui.GeneralContactAddParams.setEnabled(True)

        elif item._type.title() == "Revolute Clearance Joint":
            self.ui.RevoluteClearanceJointAddParams.setEnabled(True)

            self.ui.uPi_lineEdit.setText(array2string(item.u_iP))
            self.ui.uPj_lineEdit.setText(array2string(item.u_jP))
            self.ui.Ri_lineEdit.setText(str(item.R0_i))
            self.ui.Rj_lineEdit.setText(str(item.R0_j))

            self.ui.contactModelTypecomboBox.clear()
            for i, _contact_model_type in enumerate(item.contact_model._types):
                _contact_model_type = fix_string(_contact_model_type)
                self.ui.contactModelTypecomboBox.insertItem(i, _contact_model_type)

            print "self.item.contact_model._type =", self.item.contact_model._type
            _index = self.ui.contactModelTypecomboBox.findText(fix_string(self.item.contact_model._type))
            print "_index =", _index
            self.ui.contactModelTypecomboBox.setCurrentIndex(_index)


        elif item._type.title() == "Contact Sphere-Sphere":
            self.ui.SphereSphereContactAddParams.setEnabled(True)
            self._updateAddParams(self._ContactSphereSphere)

            #   set parameters
            for R0_lineEdit, R_ in zip([self.ui.R0i_lineEdit, self.ui.R0j_lineEdit], item.R0_list):
                R0_lineEdit.setText(str(R_))

        elif item._type.title() == "Contact Plane-Sphere":
            self.ui.PlaneSphereContactAddParams.setEnabled(True)
            print "item.n_i_LCS =", item.n_i_LCS, type(item.n_i_LCS)
            self.ui.normal_i_lineEdit.setText(array2string(item.n_i_LCS))
            self.ui.R0j_sphere_lineEdit.setText(str(item.R0_j))

        self.item = item

        self._show()