Source code for o3seespy.command.element.contact

from o3seespy.command.element.base_element import ElementBase


[docs]class SimpleContact2D(ElementBase): """ The SimpleContact2D Element Class This command is used to construct a SimpleContact2D element object. """ op_type = 'SimpleContact2D' def __init__(self, osi, i_node, j_node, c_node, l_node, mat, g_tol, f_tol): """ Initial method for SimpleContact2D Parameters ---------- osi: o3seespy.OpenSeesInstance i_node: obj Retained nodes (-ndm 2 -ndf 2) j_node: obj Retained nodes (-ndm 2 -ndf 2) c_node: obj Constrained node (-ndm 2 -ndf 2) l_node: obj Lagrange multiplier node (-ndm 2 -ndf 2) mat: obj Unique integer object associated with previously-defined ndmaterial object g_tol: float Gap tolerance f_tol: float Force tolerance Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=2, ndf=2) >>> i_node = o3.node.Node(osi, 0.0, 0.0) >>> j_node = o3.node.Node(osi, 0.0, 1.0) >>> c_node = o3.node.Node(osi, 0.0, 0.0) >>> l_node = o3.node.Node(osi, 0.0, 1.0) >>> mat = o3.nd_material.ContactMaterial2D(osi, mu=1.0, g_mod=1.0, c=1.0, t=1.0) >>> o3.element.SimpleContact2D(osi, i_node=i_node, j_node=j_node, c_node=c_node, l_node=l_node, mat=mat, >>> g_tol=1.0, f_tol=1.0) """ self.osi = osi self.i_node = i_node self.j_node = j_node self.c_node = c_node self.l_node = l_node self.mat = mat self.g_tol = float(g_tol) self.f_tol = float(f_tol) osi.n_ele += 1 self._tag = osi.n_ele self._parameters = [self.op_type, self._tag, self.i_node.tag, self.j_node.tag, self.c_node.tag, self.l_node.tag, self.mat.tag, self.g_tol, self.f_tol] self.to_process(osi)
[docs]class SimpleContact3D(ElementBase): """ The SimpleContact3D Element Class This command is used to construct a SimpleContact3D element object. """ op_type = 'SimpleContact3D' def __init__(self, osi, i_node, j_node, k_node, l_node, c_node, lagr_node, mat, g_tol, f_tol): """ Initial method for SimpleContact3D Parameters ---------- osi: o3seespy.OpenSeesInstance i_node: obj Master nodes (-ndm 3 -ndf 3) j_node: obj Master nodes (-ndm 3 -ndf 3) k_node: obj Master nodes (-ndm 3 -ndf 3) l_node: obj Master nodes (-ndm 3 -ndf 3) c_node: obj Constrained node (-ndm 3 -ndf 3) lagr_node: obj Lagrange multiplier node (-ndm 3 -ndf 3) mat: obj Unique integer object associated with previously-defined ndmaterial object g_tol: float Gap tolerance f_tol: float Force tolerance Examples -------- >>> import o3seespy as o3 >>> # Example is currently not working >>> osi = o3.OpenSeesInstance(ndm=3, ndf=3) >>> i_node = o3.node.Node(osi, 0.0, 0.0, 0.0) >>> j_node = o3.node.Node(osi, 0.0, 1.0, 0.0) >>> k_node = o3.node.Node(osi, 0.0, 0.0, 0.0) >>> c_node = o3.node.Node(osi, 0.0, 0.0, 0.0) >>> l_node = o3.node.Node(osi, 0.0, 1.0, 0.0) >>> lagr_node = o3.node.Node(osi, 0.0, 1.0, 0.0) >>> mat = o3.nd_material.ContactMaterial3D(osi, mu=1.0, g_mod=1.0, c=1.0, t=1.0) >>> o3.element.SimpleContact3D(osi, i_node=i_node, j_node=j_node, k_node=k_node, l_node=l_node, c_node=c_node, >>> lagr_node=lagr_node, mat=mat, g_tol=1.0, f_tol=1.0) """ self.osi = osi self.i_node = i_node self.j_node = j_node self.k_node = k_node self.l_node = l_node self.c_node = c_node self.lagr_node = lagr_node self.mat = mat self.g_tol = float(g_tol) self.f_tol = float(f_tol) osi.n_ele += 1 self._tag = osi.n_ele self._parameters = [self.op_type, self._tag, self.i_node.tag, self.j_node.tag, self.k_node.tag, self.l_node.tag, self.c_node.tag, self.lagr_node.tag, self.mat.tag, self.g_tol, self.f_tol] self.to_process(osi)
[docs]class BeamContact2D(ElementBase): """ The BeamContact2D Element Class This command is used to construct a BeamContact2D element object. """ op_type = 'BeamContact2D' def __init__(self, osi, i_node, j_node, s_node, l_node, mat, width, g_tol, f_tol, c_flag): """ Initial method for BeamContact2D Parameters ---------- osi: o3seespy.OpenSeesInstance i_node: obj Master nodes (-ndm 2 -ndf 3) j_node: obj Master nodes (-ndm 2 -ndf 3) s_node: obj Slave node (-ndm 2 -ndf 2) l_node: obj Lagrange multiplier node (-ndm 2 -ndf 2) mat: obj Unique integer object associated with previously-defined ndmaterial object width: float The width of the wall represented by the beam element in plane strain g_tol: float Gap tolerance f_tol: float Force tolerance c_flag: int Optional initial contact flag Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=2) >>> i_node = o3.node.Node(osi, 0.0, 0.0) >>> j_node = o3.node.Node(osi, 0.0, 1.0) >>> s_node = o3.node.Node(osi, 0.0, 1.0) >>> l_node = o3.node.Node(osi, 0.0, 1.0) >>> mat = o3.nd_material.ContactMaterial2D(osi, mu=1.0, g_mod=1.0, c=1.0, t=1.0) >>> o3.element.BeamContact2D(osi, i_node=i_node, j_node=j_node, s_node=s_node, l_node=l_node, mat=mat, width=1.0, >>> g_tol=1.0, f_tol=1.0, c_flag=1) """ self.osi = osi self.i_node = i_node self.j_node = j_node self.s_node = s_node self.l_node = l_node self.mat = mat self.width = float(width) self.g_tol = float(g_tol) self.f_tol = float(f_tol) self.c_flag = int(c_flag) osi.n_ele += 1 self._tag = osi.n_ele self._parameters = [self.op_type, self._tag, self.i_node.tag, self.j_node.tag, self.s_node.tag, self.l_node.tag, self.mat.tag, self.width, self.g_tol, self.f_tol, self.c_flag] self.to_process(osi)
[docs]class BeamContact3D(ElementBase): """ The BeamContact3D Element Class This command is used to construct a BeamContact3D element object. """ op_type = 'BeamContact3D' def __init__(self, osi, i_node, j_node, c_node, l_node, radius, crd_transf, mat, g_tol, f_tol, c_flag): """ Initial method for BeamContact3D Parameters ---------- osi: o3seespy.OpenSeesInstance i_node: obj Master nodes (-ndm 3 -ndf 6) j_node: obj Master nodes (-ndm 3 -ndf 6) c_node: obj Constrained node (-ndm 3 -ndf 3) l_node: obj Lagrange multiplier node (-ndm 3 -ndf 3) radius: float Constant radius of circular beam associated with beam element crd_transf: obj Unique integer object associated with previously-defined geometrictransf object mat: obj Unique integer object associated with previously-defined ndmaterial object g_tol: float Gap tolerance f_tol: float Force tolerance c_flag: int Optional initial contact flag Examples -------- >>> import o3seespy as o3 >>> # Example is currently not working >>> osi = o3.OpenSeesInstance(ndm=3, ndf=6) >>> i_node = o3.node.Node(osi, 0.0, 0.0, 0.0) >>> j_node = o3.node.Node(osi, 0.0, 1.0, 0.0) >>> osi.reset_model_params(ndm=3, ndf=3) >>> c_node = o3.node.Node(osi, 0.0, 1.0, 0.0) >>> l_node = o3.node.Node(osi, 0.0, 1.0, 0.0) >>> osi.reset_model_params(ndm=3, ndf=6) >>> mat = o3.nd_material.ContactMaterial3D(osi, mu=1.0, g_mod=1.0, c=1.0, t=1.0) >>> crd_transf = o3.geom_transf.Linear3D(osi, vecxz=[1.0, 1.0], d_i=[1.0, 1.0], d_j=[1.0, 1.0]) >>> o3.element.BeamContact3D(osi, i_node=i_node, j_node=j_node, c_node=c_node, l_node=l_node, radius=1.0, >>> crd_transf=crd_transf, mat=mat, g_tol=1.0, f_tol=1.0, c_flag=1) """ self.osi = osi self.i_node = i_node self.j_node = j_node self.c_node = c_node self.l_node = l_node self.radius = float(radius) self.crd_transf = crd_transf self.mat = mat self.g_tol = float(g_tol) self.f_tol = float(f_tol) self.c_flag = int(c_flag) osi.n_ele += 1 self._tag = osi.n_ele self._parameters = [self.op_type, self._tag, self.i_node.tag, self.j_node.tag, self.c_node.tag, self.l_node.tag, self.radius, self.crd_transf.tag, self.mat.tag, self.g_tol, self.f_tol, self.c_flag] self.to_process(osi)
[docs]class BeamEndContact3D(ElementBase): """ The BeamEndContact3D Element Class This command is used to construct a BeamEndContact3D element object. """ op_type = 'BeamEndContact3D' def __init__(self, osi, i_node, j_node, c_node, l_node, radius, g_tol, f_tol, c_flag): """ Initial method for BeamEndContact3D Parameters ---------- osi: o3seespy.OpenSeesInstance i_node: obj Master node from the beam (-ndm 3 -ndf 6) j_node: obj The remaining node on the beam element with ``inode`` (-ndm 3 -ndf 6) c_node: obj Constrained node (-ndm 3 -ndf 3) l_node: obj Lagrange multiplier node (-ndm 3 -ndf 3) radius: float Radius of circular beam associated with beam element g_tol: float Gap tolerance f_tol: float Force tolerance c_flag: float Optional initial contact flag Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=3, ndf=6) >>> i_node = o3.node.Node(osi, 0.0, 0.0, 0.0) >>> j_node = o3.node.Node(osi, 0.0, 1.0, 0.0) >>> osi.reset_model_params(ndm=3, ndf=3) >>> c_node = o3.node.Node(osi, 0.0, 1.0, 0.0) >>> l_node = o3.node.Node(osi, 0.0, 1.0, 0.0) >>> o3.element.BeamEndContact3D(osi, i_node=i_node, j_node=j_node, c_node=c_node, l_node=l_node, radius=1.0, >>> g_tol=1.0, f_tol=1.0, c_flag=1.0) """ self.osi = osi self.i_node = i_node self.j_node = j_node self.c_node = c_node self.l_node = l_node self.radius = float(radius) self.g_tol = float(g_tol) self.f_tol = float(f_tol) self.c_flag = float(c_flag) osi.n_ele += 1 self._tag = osi.n_ele self._parameters = [self.op_type, self._tag, self.i_node.tag, self.j_node.tag, self.c_node.tag, self.l_node.tag, self.radius, self.g_tol, self.f_tol, self.c_flag] self.to_process(osi)