""" from skfem import * from skfem.models.elasticity import linear_elasticity,\ lame_parameters, linear_stress from skfem.models.helpers import dot, ddot,\ prod, sym_grad import numpy as np from skfem.io import from_meshio from skfem.io.json import from_file, to_file from pathlib import Path # create meshes mesh_file = Path(__file__).with_name("ex04_mesh.json") try: m = from_file(mesh_file) except FileNotFoundError: from pygmsh import generate_mesh from pygmsh.built_in import Geometry geom = Geometry() points = [] lines = [] points.append(geom.add_point([0., 0., 0.], .1)) points.append(geom.add_point([0., 1., 0.], .1)) points.append(geom.add_point([0., -1., 0.], .1)) lines.append(geom.add_circle_arc(points[2], points[0], points[1])) geom.add_physical(lines[-1], 'contact') lines.append(geom.add_line(points[1], points[2])) geom.add_physical(lines[-1], 'dirichlet') geom.add_physical(geom.add_plane_surface(geom.add_line_loop(lines)), 'domain')
C = \\frac{2 E}{V^2}. """ from packaging import version from pathlib import Path from skfem.mesh import MeshTri from skfem.assembly import InteriorBasis, FacetBasis from skfem.utils import solve, asm, condense, projection from skfem.element import ElementTriP1 from skfem.models.poisson import laplace, unit_load, mass from skfem.io.json import from_file import numpy as np mesh = from_file(Path(__file__).parent / 'meshes' / 'ex35.json') element = ElementTriP1() # permeability of vacuum mu0 = 1.25663706212e-6 # permittivity of vacuum eps0 = 8.8541878128e-12 # relative permittivity of polytetrafluoroethylene eps_ptfe = 2.1 # relative permittivity of fluorinated ethylene propylene eps_fep = 2.1 global_basis = InteriorBasis(mesh, element) inner_conductor_basis = InteriorBasis(
""" from pathlib import Path from typing import Optional import numpy as np from skfem import * from skfem.helpers import dot, grad from skfem.models.poisson import mass, unit_load from skfem.io.json import from_file joule_heating = 5. heat_transfer_coefficient = 7. thermal_conductivity = {'core': 101., 'annulus': 11.} mesh = from_file(Path(__file__).parent / 'meshes' / 'disk.json') radii = sorted([np.linalg.norm(mesh.p[:, mesh.t[:, s]], axis=0).max() for s in mesh.subdomains.values()]) @BilinearForm def conduction(u, v, w): return dot(w['conductivity'] * grad(u), grad(v)) convection = mass element = ElementQuad1() basis = InteriorBasis(mesh, element) conductivity = basis.zero_w() for subdomain, elements in mesh.subdomains.items():
* Barkley, D., M. G. M. Gomes, & R. D. Henderson (2002). Three-dimensional instability in flow over a backward-facing step. Journal of Fluid Mechanics 473. pp. 167–190. `doi:10.1017/s002211200200232x <http://dx.doi.org/10.1017/s002211200200232x>`_ """ from pathlib import Path from matplotlib.pyplot import subplots import numpy as np from scipy.sparse import bmat from skfem import * from skfem.models.poisson import vector_laplace, laplace from skfem.models.general import divergence, rot from skfem.io.json import from_file mesh = from_file( Path(__file__).parent / 'meshes' / 'backward-facing_step.json') element = {'u': ElementVectorH1(ElementTriP2()), 'p': ElementTriP1()} basis = { variable: InteriorBasis(mesh, e, intorder=3) for variable, e in element.items() } D = np.concatenate([b.all() for b in basis['u'].find_dofs().values()]) A = asm(vector_laplace, basis['u']) B = -asm(divergence, basis['u'], basis['p']) K = bmat([[A, B.T], [B, None]], 'csr') uvp = np.zeros(K.shape[0])
* Barkley, D., M. G. M. Gomes, & R. D. Henderson (2002). Three-dimensional instability in flow over a backward-facing step. Journal of Fluid Mechanics 473. pp. 167–190. `doi:10.1017/s002211200200232x <http://dx.doi.org/10.1017/s002211200200232x>`_ """ from pathlib import Path from matplotlib.pyplot import subplots import numpy as np from scipy.sparse import bmat from skfem import * from skfem.models.poisson import vector_laplace, laplace from skfem.models.general import divergence, rot from skfem.io.json import from_file mesh = from_file(Path(__file__).with_name("backward-facing_step.json")) element = {'u': ElementVectorH1(ElementTriP2()), 'p': ElementTriP1()} basis = { variable: InteriorBasis(mesh, e, intorder=3) for variable, e in element.items() } D = np.concatenate([b.all() for b in basis['u'].find_dofs().values()]) A = asm(vector_laplace, basis['u']) B = -asm(divergence, basis['u'], basis['p']) K = bmat([[A, B.T], [B, None]], 'csr') uvp = np.zeros(K.shape[0])
for k in range(basis.Nbfun): phi = basis.elem.gbasis(basis.mapping, pts, k, tind=cells)[0][0].flatten() w += u[basis.element_dofs[k, cells]] * phi return w return interpolator parser = ArgumentParser() parser.add_argument("--mesh", type=Path) args = parser.parse_args() if args.mesh: mesh = from_file(args.mesh) else: try: mesh = from_file(Path("cylinder.json")) except Exception as e: from cylinder_dmsh import CylinderDmsh print("Couldn't find cylinder.json; generating in dmsh.") mesher = CylinderDmsh() mesh = mesher.mesh mesher.save() element = { "u": skfem.ElementVectorH1(skfem.ElementTriP2()), "p": skfem.ElementTriP1() }
""" from pathlib import Path from typing import Optional import numpy as np from skfem import * from skfem.helpers import dot, grad from skfem.models.poisson import mass, unit_load from skfem.io.json import from_file joule_heating = 5. heat_transfer_coefficient = 7. thermal_conductivity = {'core': 101., 'annulus': 11.} mesh = from_file(Path(__file__).with_name("disk.json")) radii = sorted([ np.linalg.norm(mesh.p[:, mesh.t[:, s]], axis=0).max() for s in mesh.subdomains.values() ]) @BilinearForm def conduction(u, v, w): return dot(w['conductivity'] * grad(u), grad(v)) convection = mass element = ElementQuad1() basis = InteriorBasis(mesh, element)