def ex1(): ''' Ristikkorakenteen ratkaisu ''' n1 = teefem.geom.Node(x=0, y=0, z=0) n2 = teefem.geom.Node(x=1, y=0, z=0) n3 = teefem.geom.Node(x=0, y=1, z=0) s1 = teefem.geom.Seg2(nodes = (n1,n2)) s2 = teefem.geom.Seg2(nodes = (n2,n3)) s3 = teefem.geom.Seg2(nodes = (n3,n1)) mesh1 = teefem.geom.Mesh() mesh1.nodes = set([n1,n2,n3]) mesh1.shapes = set([s1,s2,s3]) mesh1.nset['GA'] = set([n1,n3]) mesh1.nset['LOAD'] = set([n2]) mesh1.elset['OM'] = set([s1,s2,s3]) model = Bar2DModel(mesh = mesh1) mat = teefem.materials.elastic(E = 210.0e9, nu = 0.3) teefem.assign_material(elements = model.elset['OM'], material = mat) load = teefem.nodal_force(DY = -100.0e3) encastre = teefem.dirichlet_bc(encastre = True) teefem.assign_bc(nodes = model.nset['LOAD'], bc = load) teefem.assign_bc(nodes = model.nset['GA'], bc = encastre) carel = BarCharacteristic(area = 10e-4) teefem.assign_char(elements = model.elset['OM'], char = carel) model.static_solve() dymin = min([node.fields['DEPL']['DY'] for node in model.nodes]) print("DY: %0.14E"%(dymin*1000))
def ex1(): ''' Ristikkorakenteen ratkaisu ''' n1 = teefem.geom.Node(x=0, y=0, z=0) n2 = teefem.geom.Node(x=1, y=0, z=0) n3 = teefem.geom.Node(x=0, y=1, z=0) s1 = teefem.geom.Seg2(nodes=(n1, n2)) s2 = teefem.geom.Seg2(nodes=(n2, n3)) s3 = teefem.geom.Seg2(nodes=(n3, n1)) mesh1 = teefem.geom.Mesh() mesh1.nodes = set([n1, n2, n3]) mesh1.shapes = set([s1, s2, s3]) mesh1.nset['GA'] = set([n1, n3]) mesh1.nset['LOAD'] = set([n2]) mesh1.elset['OM'] = set([s1, s2, s3]) model = Bar2DModel(mesh=mesh1) mat = teefem.materials.elastic(E=210.0e9, nu=0.3) teefem.assign_material(elements=model.elset['OM'], material=mat) load = teefem.nodal_force(DY=-100.0e3) encastre = teefem.dirichlet_bc(encastre=True) teefem.assign_bc(nodes=model.nset['LOAD'], bc=load) teefem.assign_bc(nodes=model.nset['GA'], bc=encastre) carel = BarCharacteristic(area=10e-4) teefem.assign_char(elements=model.elset['OM'], char=carel) model.static_solve() dymin = min([node.fields['DEPL']['DY'] for node in model.nodes]) print("DY: %0.14E" % (dymin * 1000))
# Solmupisteryhmät mesh.create_node_groups() # Malli mdl = ROTSOL(mesh=mesh) # Materiaali assign_material( elements=mdl.elset('OM1'), material=materials.elastic(E=E, nu=nu), ) # Pistekuorma keskelle assign_bc( nodes=mdl.nset('P1'), bc=teefem.nodal_force(fx=-F), ) # Jäykkä tuki ylä- ja alareunaan assign_bc( nodes=mdl.nset('GA1'), bc=dirichlet_bc(dx=0, dy=0), ) # Ratkaistaan maksimitaipumaa alustakertoimen funktiona. # Saadaan kiva animaatio. Ja kuvaaja. mdl.static_solve() mdl.plot(scalefactor=1e6) show()
mdl = teefem.models.cplan(mesh=mesh) # Ryhmät OM1_el = mdl.elset['OM1'] # Koko domain GA1_no = mdl.nset['GA1'] # Vasen reuna GA2_el = mdl.elset['GA2'] # Yläreuna P1_no = mdl.nset['P1'] # Pistevoima # Materiaali mat = teefem.materials.elastic(E=210.0e9, nu=0.3) teefem.assign_material(elements=OM1_el, material=mat) # Reunaehdot, huom. TeeFEMissä tasojännitystila-elementin paksuus on oletuksena 1 bc1 = teefem.pressure_bc(pressure=lambda k: -q / t) bc2 = teefem.dirichlet_bc(encastre=True) bc3 = teefem.nodal_force(fy=-F / t) # Kytketään reunaehdot malliin # 1. Jakautunut kuormitus elementtiryhmään GA2 teefem.assign_bc(elements=GA2_el, bc=bc1) # 2. Vasen reuna jäykästi kiinni teefem.assign_bc(nodes=GA1_no, bc=bc2) # 3. Pistevoima alareunaan teefem.assign_bc(nodes=P1_no, bc=bc3) # Ratkaisu import time t0 = time.clock() mdl.static_solve() t1 = time.clock() print("Solving KU=F took {0} seconds".format(t1 - t0))
# Solmupisteryhmät mesh.create_node_groups() # Malli mdl = ROTSOL(mesh = mesh) # Materiaali assign_material( elements = mdl.elset('OM1'), material = materials.elastic(E = E, nu = nu), ) # Pistekuorma keskelle assign_bc( nodes = mdl.nset('P1'), bc = teefem.nodal_force(fx = -F), ) # Jäykkä tuki ylä- ja alareunaan assign_bc( nodes = mdl.nset('GA1'), bc = dirichlet_bc(dx=0,dy=0), ) # Ratkaistaan maksimitaipumaa alustakertoimen funktiona. # Saadaan kiva animaatio. Ja kuvaaja. mdl.static_solve() mdl.plot(scalefactor=1e6) show()
mdl = teefem.models.cplan(mesh = mesh) # Ryhmät OM1_el = mdl.elset['OM1'] # Koko domain GA1_no = mdl.nset['GA1'] # Vasen reuna GA2_el = mdl.elset['GA2'] # Yläreuna P1_no = mdl.nset['P1'] # Pistevoima # Materiaali mat = teefem.materials.elastic(E = 210.0e9, nu = 0.3) teefem.assign_material(elements = OM1_el, material = mat) # Reunaehdot, huom. TeeFEMissä tasojännitystila-elementin paksuus on oletuksena 1 bc1 = teefem.pressure_bc(pressure = lambda k: -q/t) bc2 = teefem.dirichlet_bc(encastre = True) bc3 = teefem.nodal_force(fy = -F/t) # Kytketään reunaehdot malliin # 1. Jakautunut kuormitus elementtiryhmään GA2 teefem.assign_bc(elements = GA2_el, bc = bc1) # 2. Vasen reuna jäykästi kiinni teefem.assign_bc(nodes = GA1_no, bc = bc2) # 3. Pistevoima alareunaan teefem.assign_bc(nodes = P1_no, bc = bc3) # Ratkaisu import time t0 = time.clock() mdl.static_solve() t1 = time.clock() print("Solving KU=F took {0} seconds".format(t1-t0))