Source code for o3seespy.command.element.misc

from o3seespy.command.element.base_element import ElementBase


[docs]class SurfaceLoad(ElementBase): """ The SurfaceLoad Element Class This command is used to construct a SurfaceLoad element object. """ op_type = 'SurfaceLoad' def __init__(self, osi, ele_nodes, p): """ Initial method for SurfaceLoad Parameters ---------- osi: o3seespy.OpenSeesInstance ele_nodes: list The four nodes defining the element, input in counterclockwise order (-ndm 3 -ndf 3) p: float Applied pressure loading normal to the surface, outward is positive, inward is negative Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=2) >>> coords = [[0, 0], [1, 0], [1, 1], [0, 1]] >>> ele_nodes = [o3.node.Node(osi, *coords[x]) for x in range(4)] >>> o3.element.SurfaceLoad(osi, ele_nodes=ele_nodes, p=1.0) """ self.osi = osi self.ele_node_tags = [x.tag for x in ele_nodes] self.ele_nodes = ele_nodes self.p = float(p) osi.n_ele += 1 self._tag = osi.n_ele self._parameters = [self.op_type, self._tag, *self.ele_node_tags, self.p] self.to_process(osi)
[docs]class VS3D4(ElementBase): """ The VS3D4 Element Class This command is used to construct a four-node 3D viscous-spring boundary quad element object based on a bilinear isoparametric formulation. """ op_type = 'VS3D4' def __init__(self, osi, ele_nodes, big_e, big_g, rho, big_r, alpha_n, alpha_t): """ Initial method for VS3D4 Parameters ---------- osi: o3seespy.OpenSeesInstance ele_nodes: list 4 end nodes big_e: float Young's modulus of element material big_g: float Shear modulus of element material rho: float Mass density of element material big_r: float Distance from the scattered wave source to the boundary alpha_n: float Correction parameter in the normal direction alpha_t: float Correction parameter in the tangential direction Examples -------- >>> import o3seespy as o3 >>> osi = o3.OpenSeesInstance(ndm=2) >>> coords = [[0, 0], [1, 0], [1, 1], [0, 1]] >>> ele_nodes = [o3.node.Node(osi, *coords[x]) for x in range(4)] >>> o3.element.VS3D4(osi, ele_nodes=ele_nodes, big_e=1.0, big_g=1.0, rho=1.0, big_r=1.0, alpha_n=1.0, alpha_t=1.0) """ self.osi = osi self.ele_node_tags = [x.tag for x in ele_nodes] self.ele_nodes = ele_nodes self.big_e = float(big_e) self.big_g = float(big_g) self.rho = float(rho) self.big_r = float(big_r) self.alpha_n = float(alpha_n) self.alpha_t = float(alpha_t) osi.n_ele += 1 self._tag = osi.n_ele self._parameters = [self.op_type, self._tag, *self.ele_node_tags, self.big_e, self.big_g, self.rho, self.big_r, self.alpha_n, self.alpha_t] self.to_process(osi)
[docs]class AC3D8(ElementBase): """ The AC3D8 Element Class This command is used to construct an eight-node 3D brick acoustic element object based on a trilinear isoparametric formulation. """ op_type = 'AC3D8' def __init__(self, osi, ele_nodes, mat): """ Initial method for AC3D8 Parameters ---------- osi: o3seespy.OpenSeesInstance ele_nodes: list 8 end nodes mat: obj Material object of previously defined nd material Examples -------- >>> import o3seespy as o3 >>> # Example is currently not working >>> osi = o3.OpenSeesInstance(ndm=2) >>> coords = [[0, 0], [1, 0], [1, 1], [0, 1]] >>> ele_nodes = [o3.node.Node(osi, *coords[x]) for x in range(4)] >>> mat = o3.nd_material.ElasticIsotropic(osi, 1, 0.45) >>> o3.element.AC3D8(osi, ele_nodes=ele_nodes, mat=mat) """ self.osi = osi self.ele_node_tags = [x.tag for x in ele_nodes] self.ele_nodes = ele_nodes self.mat = mat osi.n_ele += 1 self._tag = osi.n_ele self._parameters = [self.op_type, self._tag, *self.ele_node_tags, self.mat.tag] self.to_process(osi)
[docs]class ASI3D8(ElementBase): """ The ASI3D8 Element Class This command is used to construct an eight-node zero-thickness 3D brick acoustic-structure interface element object based on a bilinear isoparametric formulation. The nodes in the acoustic domain share the same coordinates with the nodes in the solid domain. """ op_type = 'ASI3D8' def __init__(self, osi, ele_nodes1, ele_nodes2): """ Initial method for ASI3D8 Parameters ---------- osi: o3seespy.OpenSeesInstance ele_nodes1: None ele_nodes2: None Examples -------- >>> import o3seespy as o3 >>> # Example is currently not working >>> osi = o3.OpenSeesInstance(ndm=2) >>> o3.element.ASI3D8(osi, ele_nodes1=1, ele_nodes2=1) """ self.osi = osi self.ele_nodes1 = ele_nodes1 self.ele_nodes2 = ele_nodes2 osi.n_ele += 1 self._tag = osi.n_ele self._parameters = [self.op_type, self._tag, *self.ele_nodes1, *self.ele_nodes2] self.to_process(osi)
[docs]class AV3D4(ElementBase): """ The AV3D4 Element Class This command is used to construct a four-node 3D acoustic viscous boundary quad element object based on a bilinear isoparametric formulation. """ op_type = 'AV3D4' def __init__(self, osi, ele_nodes, mat): """ Initial method for AV3D4 Parameters ---------- osi: o3seespy.OpenSeesInstance ele_nodes: list 4 end nodes mat: obj Material object of previously defined nd material Examples -------- >>> import o3seespy as o3 >>> # Example is currently not working >>> osi = o3.OpenSeesInstance(ndm=2) >>> coords = [[0, 0], [1, 0], [1, 1], [0, 1]] >>> ele_nodes = [o3.node.Node(osi, *coords[x]) for x in range(4)] >>> mat = o3.nd_material.ElasticIsotropic(osi, 1, 0.45) >>> o3.element.AV3D4(osi, ele_nodes=ele_nodes, mat=mat) """ self.osi = osi self.ele_node_tags = [x.tag for x in ele_nodes] self.ele_nodes = ele_nodes self.mat = mat osi.n_ele += 1 self._tag = osi.n_ele self._parameters = [self.op_type, self._tag, *self.ele_node_tags, self.mat.tag] self.to_process(osi)