Repository navigation
Expand file tree
/
Copy pathtestfunc.py
More file actions
65 lines (54 loc) · 1.75 KB
/
Copy pathtestfunc.py
File metadata and controls
65 lines (54 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Copyright 2013 DEVSIM LLC
#
# SPDX-License-Identifier: Apache-2.0
from devsim import (
add_1d_contact,
add_1d_mesh_line,
add_1d_region,
create_1d_mesh,
create_device,
finalize_mesh,
node_model,
print_node_values,
register_function,
symdiff,
)
from math import cos
from math import sin
device = "MyDevice"
region = "MyRegion"
####
#### Meshing
####
create_1d_mesh(mesh="dog")
add_1d_mesh_line(mesh="dog", pos=0.0, ps=0.1, tag="top")
add_1d_mesh_line(mesh="dog", pos=1.0, ps=0.1, tag="bot")
add_1d_contact(mesh="dog", name="top", material="metal", tag="top")
add_1d_contact(mesh="dog", name="bot", material="metal", tag="bot")
add_1d_region(mesh="dog", material="Si", region=region, tag1="top", tag2="bot")
finalize_mesh(mesh="dog")
create_device(mesh="dog", device=device)
symdiff(expr="declare(gee(x,y))")
symdiff(expr="declare(sin(x))")
symdiff(expr="define(cos(x), -sin(x))")
symdiff(expr="define(sin(x), cos(x))")
# proc cos {x} {
# return [expr cos($x)]
# }
# proc sin {x} {
# return [expr sin($x)]
# }
#
# This is a degenerate case causing the result object of this procedure to be the same as
# one of our original arguments
def gee(x, y):
return x
register_function(name="cos", procedure=cos, nargs=1)
register_function(name="sin", procedure=sin, nargs=1)
register_function(name="gee", procedure=gee, nargs=2)
node_model(device=device, region=region, name="gee", equation="gee(x, 1)")
node_model(device=device, region=region, name="foo", equation="sin(3.14159*0.25)")
node_model(device=device, region=region, name="bar", equation="diff(sin(x),x)")
print_node_values(device=device, region=region, name="gee")
print_node_values(device=device, region=region, name="foo")
print_node_values(device=device, region=region, name="bar")