Source code for o3seespy.command.geom_transf

from o3seespy.base_model import OpenSeesObject


[docs]class GeomTransfBase(OpenSeesObject): op_base_type = "geomTransf"
[docs]class Linear2D(GeomTransfBase): """ The Linear2D GeomTransf Class """ op_type = 'Linear' def __init__(self, osi, d_i: list=None, d_j: list=None): """ Initial method for Linear2D Parameters ---------- osi: o3seespy.OpenSeesInstance d_i: list, optional Joint offset values -- offsets specified with respect to the global coordinate system for element-end node i (the number of arguments depends on the dimensions of the current model). d_j: list, optional Joint offset values -- offsets specified with respect to the global coordinate system for element-end node j (the number of arguments depends on the dimensions of the current model). Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=2) >>> d_i = [1.0, 1.0] >>> d_j = [1.0, 1.0] >>> o3.geom_transf.Linear2D(osi, d_i=d_i, d_j=d_j) """ self.osi = osi self.d_i = d_i self.d_j = d_j osi.n_transformation += 1 self._tag = osi.n_transformation self._parameters = [self.op_type, self._tag] if getattr(self, 'd_i') is not None: self._parameters += ['-jntOffset', *self.d_i] if getattr(self, 'd_j') is not None: if getattr(self, 'd_i') is None: raise ValueError('Cannot set: d_j and not: d_i') self._parameters += [*self.d_j] self.to_process(osi)
[docs]class Linear3D(GeomTransfBase): """ The Linear3D GeomTransf Class This command is used to construct a linear coordinate transformation (LinearCrdTransf) object, which performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global-coordinate system. """ op_type = 'Linear' def __init__(self, osi, vecxz, d_i: list=None, d_j: list=None): """ Initial method for Linear3D Parameters ---------- osi: o3seespy.OpenSeesInstance vecxz: list X, y, and z components of vecxz, the vector used to define the local x-z plane of the local-coordinate system. the local y-axis is defined by taking the cross product of the vecxz vector and the x-axis. these components are specified in the global-coordinate system x,y,z and define a vector that is in a plane parallel to the x-z plane of the local-coordinate system. these items need to be specified for the three-dimensional problem. d_i: list, optional Joint offset values -- offsets specified with respect to the global coordinate system for element-end node i (the number of arguments depends on the dimensions of the current model). d_j: list, optional Joint offset values -- offsets specified with respect to the global coordinate system for element-end node j (the number of arguments depends on the dimensions of the current model). Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=3) >>> vecxz = [1.0, 0.0, 0.0] >>> d_i = [1.0, 1.0, 0.0] >>> d_j = [1.0, 1.0, 0.0] >>> o3.geom_transf.Linear3D(osi, vecxz=vecxz, d_i=d_i, d_j=d_j) """ self.osi = osi self.vecxz = vecxz self.d_i = d_i self.d_j = d_j osi.n_transformation += 1 self._tag = osi.n_transformation self._parameters = [self.op_type, self._tag, *self.vecxz] if getattr(self, 'd_i') is not None: self._parameters += ['-jntOffset', *self.d_i] if getattr(self, 'd_j') is not None: if getattr(self, 'd_i') is None: raise ValueError('Cannot set: d_j and not: d_i') self._parameters += [*self.d_j] self.to_process(osi)
[docs]class PDelta2D(GeomTransfBase): """ The PDelta2D GeomTransf Class """ op_type = 'PDelta' def __init__(self, osi, d_i: list=None, d_j: list=None): """ Initial method for PDelta2D Parameters ---------- osi: o3seespy.OpenSeesInstance d_i: list, optional Joint offset values -- offsets specified with respect to the global coordinate system for element-end node i (the number of arguments depends on the dimensions of the current model). d_j: list, optional Joint offset values -- offsets specified with respect to the global coordinate system for element-end node j (the number of arguments depends on the dimensions of the current model). Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=2) >>> d_i = [1.0, 1.0] >>> d_j = [1.0, 1.0] >>> o3.geom_transf.PDelta2D(osi, d_i=d_i, d_j=d_j) """ self.osi = osi self.d_i = d_i self.d_j = d_j osi.n_transformation += 1 self._tag = osi.n_transformation self._parameters = [self.op_type, self._tag] if getattr(self, 'd_i') is not None: self._parameters += ['-jntOffset', *self.d_i] if getattr(self, 'd_j') is not None: if getattr(self, 'd_i') is None: raise ValueError('Cannot set: d_j and not: d_i') self._parameters += [*self.d_j] self.to_process(osi)
[docs]class PDelta3D(GeomTransfBase): """ The PDelta3D GeomTransf Class This command is used to construct the P-Delta Coordinate Transformation (PDeltaCrdTransf) object, which performs a linear geometric transformation of beam stiffness and resisting force from the basic system to the global coordinate system, considering second-order P-Delta effects. """ op_type = 'PDelta' def __init__(self, osi, vecxz, d_i: list=None, d_j: list=None): """ Initial method for PDelta3D Parameters ---------- osi: o3seespy.OpenSeesInstance vecxz: list X, y, and z components of vecxz, the vector used to define the local x-z plane of the local-coordinate system. the local y-axis is defined by taking the cross product of the vecxz vector and the x-axis. these components are specified in the global-coordinate system x,y,z and define a vector that is in a plane parallel to the x-z plane of the local-coordinate system. these items need to be specified for the three-dimensional problem. d_i: list, optional Joint offset values -- offsets specified with respect to the global coordinate system for element-end node i (the number of arguments depends on the dimensions of the current model). d_j: list, optional Joint offset values -- offsets specified with respect to the global coordinate system for element-end node j (the number of arguments depends on the dimensions of the current model). Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=2) >>> vecxz = [1.0, 1.0] >>> d_i = [1.0, 1.0] >>> d_j = [1.0, 1.0] >>> o3.geom_transf.PDelta3D(osi, vecxz=vecxz, d_i=d_i, d_j=d_j) """ self.osi = osi self.vecxz = vecxz self.d_i = d_i self.d_j = d_j osi.n_transformation += 1 self._tag = osi.n_transformation self._parameters = [self.op_type, self._tag, *self.vecxz] if getattr(self, 'd_i') is not None: self._parameters += ['-jntOffset', *self.d_i] if getattr(self, 'd_j') is not None: if getattr(self, 'd_i') is None: raise ValueError('Cannot set: d_j and not: d_i') self._parameters += [*self.d_j] self.to_process(osi)
[docs]class Corotational2D(GeomTransfBase): """ The Corotational2D GeomTransf Class """ op_type = 'Corotational' def __init__(self, osi, d_i: list=None, d_j: list=None): """ Initial method for Corotational2D Parameters ---------- osi: o3seespy.OpenSeesInstance d_i: list, optional Joint offset values -- offsets specified with respect to the global coordinate system for element-end node i (the number of arguments depends on the dimensions of the current model). d_j: list, optional Joint offset values -- offsets specified with respect to the global coordinate system for element-end node j (the number of arguments depends on the dimensions of the current model). Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=2) >>> d_i = [1.0, 1.0] >>> d_j = [1.0, 1.0] >>> o3.geom_transf.Corotational2D(osi, d_i=d_i, d_j=d_j) """ self.osi = osi self.d_i = d_i self.d_j = d_j osi.n_transformation += 1 self._tag = osi.n_transformation self._parameters = [self.op_type, self._tag] if getattr(self, 'd_i') is not None: self._parameters += ['-jntOffset', *self.d_i] if getattr(self, 'd_j') is not None: if getattr(self, 'd_i') is None: raise ValueError('Cannot set: d_j and not: d_i') self._parameters += [*self.d_j] self.to_process(osi)
[docs]class Corotational3D(GeomTransfBase): """ The Corotational3D GeomTransf Class This command is used to construct the Corotational Coordinate Transformation (CorotCrdTransf) object. Corotational transformation can be used in large displacement-small strain problems. """ op_type = 'Corotational' def __init__(self, osi, vecxz): """ Initial method for Corotational3D Parameters ---------- osi: o3seespy.OpenSeesInstance vecxz: list X, y, and z components of vecxz, the vector used to define the local x-z plane of the local-coordinate system. the local y-axis is defined by taking the cross product of the vecxz vector and the x-axis. these components are specified in the global-coordinate system x,y,z and define a vector that is in a plane parallel to the x-z plane of the local-coordinate system. these items need to be specified for the three-dimensional problem. Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=2) >>> vecxz = [1.0, 1.0] >>> o3.geom_transf.Corotational3D(osi, vecxz=vecxz) """ self.osi = osi self.vecxz = vecxz osi.n_transformation += 1 self._tag = osi.n_transformation self._parameters = [self.op_type, self._tag, *self.vecxz] self.to_process(osi)