# ---- Solve problem -------------------------------------------------------- print("Assembling system matrix...") n_dofs = np.size(dofs) ex, ey = cfc.coordxtr(edof, coords, dofs) K = np.zeros([n_dofs, n_dofs]) for eltopo, elx, ely, elMarker in zip(edof, ex, ey, elementmarkers): # Calc element stiffness matrix: Conductivity matrix D is taken # from Ddict and depends on which region (which marker) the element is in. Ke = cfc.flw2i8e(elx, ely, ep, Ddict[elMarker]) cfc.assem(eltopo, K, Ke) print("Solving equation system...") f = np.zeros([n_dofs, 1]) bc = np.array([], 'i') bc_val = np.array([], 'i') bc, bc_val = cfu.applybc(bdofs, bc, bc_val, 2, 30.0) bc, bc_val = cfu.applybc(bdofs, bc, bc_val, 3, 0.0) a, r = cfc.solveq(K, f, bc, bc_val) # ---- Compute element forces -----------------------------------------------
n_dofs = np.size(dofs) ex, ey = cfc.coordxtr(edof, coords, dofs) K = np.zeros([n_dofs, n_dofs]) for el_topo, elx, ely, marker in zip(edof, ex, ey, element_markers): # Calc element stiffness matrix: Conductivity matrix D is taken # from Ddict and depends on which region (which marker) the element is in. if mesh.el_type == 2: Ke = cfc.flw2te(elx, ely, ep, D) elif mesh.el_type == 3: Ke = cfc.flw2i4e(elx, ely, ep, D) elif mesh.el_type == 16: Ke = cfc.flw2i8e(elx, ely, ep, D) else: print("Element type not supported") cfc.assem(el_topo, K, Ke) print("Solving equation system...") f = np.zeros([n_dofs, 1]) bc = np.array([], 'i') bc_val = np.array([], 'f') bc, bc_val = cfu.applybc(bdofs, bc, bc_val, id_outer, 30.0) bc, bc_val = cfu.applybc(bdofs, bc, bc_val, id_hole1, 300.0) bc, bc_val = cfu.applybc(bdofs, bc, bc_val, id_hole2, 400.0)