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)
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)