Files

27 lines
1.4 KiB
Python

import os, sys, time
os.environ["OMP_NUM_THREADS"] = "4"
os.environ["MKL_NUM_THREADS"] = "4"
import devsim
import psutil
import glob, ctypes
mkl_libs = glob.glob(os.path.join(os.path.dirname(sys.executable), "../lib/libmkl_rt.so.*"))
mkl = ctypes.CDLL(mkl_libs[0]) if mkl_libs else None
devsim.set_parameter(name="solver_type", value="pardiso")
devsim.create_gmsh_mesh(mesh="test", file="device_2d.msh")
devsim.add_gmsh_region(mesh="test", gmsh_name="Silicon", region="Silicon", material="Silicon")
devsim.finalize_mesh(mesh="test")
devsim.create_device(mesh="test", device="test")
devsim.node_solution(device="test", region="Silicon", name="Potential")
devsim.edge_model(device="test", region="Silicon", name="EField", equation="(Potential@n0 - Potential@n1)*EdgeInverseLength")
devsim.edge_model(device="test", region="Silicon", name="EField:Potential@n0", equation="EdgeInverseLength")
devsim.edge_model(device="test", region="Silicon", name="EField:Potential@n1", equation="-EdgeInverseLength")
devsim.equation(device="test", region="Silicon", name="PotentialEquation", variable_name="Potential", edge_model="EField", variable_update="default")
for i in range(10):
devsim.solve(type="dc", absolute_error=1e10, relative_error=1e-1, maximum_iterations=1)
if mkl: mkl.MKL_Free_Buffers()
mem = psutil.Process().memory_info().rss / (1024**2)
print(f"Step {i} Memory: {mem:.1f} MB")