27 lines
1.4 KiB
Python
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")
|