Example #1
0
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))
Example #2
0
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))
Example #3
0
# 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()
Example #4
0
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))
Example #5
0
# 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()
Example #6
0
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))