Example #1
0
femm = FEMMDeforLinear(material=m,
                       fes=fes,
                       integration_rule=GaussRule(dim=3, order=3))
femm.associate_geometry(geom)
S = femm.connection_matrix(geom)
perm = reverse_cuthill_mckee(S, symmetric_mode=True)
u.numberdofs(node_perm=perm)
print('Number of degrees of freedom', u.nfreedofs)

start = time.time()
K = femm.stiffness(geom, u)
print('Matrix assembly', time.time() - start)

start = time.time()
dT = NodalField(nfens=fens.count(), dim=1)
dT.fun_set_values(fens.xyz, lambda x: math.sqrt(x[0]**2 + x[1]**2) + x[2])
print(numpy.max(dT.values))
print(numpy.min(dT.values))
F = femm.thermal_strain_loads(geom, u, dT)
print('Load vector assembly', time.time() - start)
print(numpy.max(F), numpy.min(F))

start = time.time()
# U, info = lgmres(K, F)
# print(info)
lu = splu(K)
del K
U = lu.solve(F)
u.scatter_sysvec(U)

print('Solution', time.time() - start)
Example #2
0
femm = FEMMDeforLinear(material=m,
                       fes=fes,
                       integration_rule=GaussRule(dim=3, order=2))
femm.associate_geometry(geom)
S = femm.connection_matrix(geom)
perm = reverse_cuthill_mckee(S, symmetric_mode=True)
u.numberdofs(node_perm=perm)
print('Number of degrees of freedom', u.nfreedofs)

start = time.time()
K = femm.stiffness(geom, u)
print('Matrix assembly', time.time() - start)

start = time.time()
dT = NodalField(nfens=fens.count(), dim=1)
dT.fun_set_values(fens.xyz, lambda x: 100)
F = femm.thermal_strain_loads(geom, u, dT)
print(F)
print('Load vector assembly', time.time() - start)

start = time.time()
# U, info = lgmres(K, F)
# print(info)
lu = splu(K)
del K
U = lu.solve(F)
u.scatter_sysvec(U)

print('Solution', time.time() - start)
#
print('Done', time.time() - start0)