-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathqm-cost-vs-acc.typ
80 lines (70 loc) · 1.58 KB
/
qm-cost-vs-acc.typ
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#import "@preview/cetz:0.3.4": canvas, draw
#import draw: line, content, circle
#set page(width: auto, height: auto, margin: 8pt)
#let range = 9
#let xy-ratio = 2 / 3
#canvas({
let arrow-style = (mark: (end: "stealth", scale: .75), fill: black)
// Draw axes
line((-0.5, 0), (range, 0), ..arrow-style) // x-axis
line((0, -0.5), (0, range * xy-ratio), ..arrow-style) // y-axis
// Add axis labels
content(
(range + 0.1, .15),
[computational complexity],
anchor: "south-east",
)
content(
(0.2, range * xy-ratio),
[accuracy],
anchor: "north-west",
)
// Add N^n labels below x-axis
for n in std.range(1, 9) {
content(
(n, -0.3),
$N^#n$,
anchor: "north",
)
}
// Add dashed diagonal line
line(
(0, 0),
(range, range * xy-ratio),
stroke: (dash: "dashed", paint: gray, thickness: .75pt),
)
// Data points with labels
let methods = (
(2, "semi-empirical", "SE"),
(4, "Hartree-Fock", "HF"),
(5, "Moller-Plesset 2nd order", "MP2"),
(6, "Configuration Interaction", "CISD"),
(7, "Coupled Cluster", "CCSD(T)"),
)
// Draw blue dots for standard methods
for (x, name, abbr) in methods {
circle(
(x, x * xy-ratio),
radius: 2pt,
fill: rgb("#393998"),
stroke: none,
)
content(
(x + 0.2, x * xy-ratio - 0.2),
[#name],
anchor: "north-west",
)
}
// Special point for DFT
circle(
(3, 5 * xy-ratio),
radius: 2.4pt,
fill: rgb("#de2626"),
stroke: none,
)
content(
(2.7, 5 * xy-ratio),
[DFT],
anchor: "east",
)
})