Samee-ur commited on
Commit
5a79e72
·
verified ·
1 Parent(s): 2b28a91

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -1
app.py CHANGED
@@ -14,6 +14,29 @@ step_wl = 0.01
14
  wavelengths = np.arange(start_wl, stop_wl + step_wl, step_wl)
15
  materials = ['Si', 'Si3N4', 'SiO2', 'AlN']
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  @tool
18
  def simulate_spectrum_100nm(layer_order: List[str]) -> List[float]:
19
  """
@@ -52,7 +75,6 @@ def cosine_similarity(vec1: List[float], vec2: List[float]) -> float:
52
  a, b = np.array(vec1), np.array(vec2)
53
  return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))
54
 
55
-
56
  # --- Target Spectrum Generator ---
57
  def get_target_spectrum(layer_order, thickness=0.1):
58
  source = Source(wavelength=start_wl)
 
14
  wavelengths = np.arange(start_wl, stop_wl + step_wl, step_wl)
15
  materials = ['Si', 'Si3N4', 'SiO2', 'AlN']
16
 
17
+ @tool
18
+ def simulate_spectrum_10nm(layer_order: List[str]) -> List[float]:
19
+ """
20
+ Simulates the optical transmission spectrum for a given sequence of material layers at 10nm thickness.
21
+
22
+ Args:
23
+ layer_order (List[str]): A list of material names (e.g., ["Si", "SiO2", "AlN"]) representing the order of layers in the optical stack.
24
+
25
+ Returns:
26
+ List[float]: The transmission spectrum across a predefined wavelength range.
27
+ """
28
+ source = Source(wavelength=start_wl)
29
+ reflection_layer = Layer(n=1.0)
30
+ transmission_layer = Layer(material=Material("Si"))
31
+ try:
32
+ layers = [Layer(material=Material(m), thickness=0.01) for m in layer_order]
33
+ stack = LayerStack(*layers, incident_layer=reflection_layer, transmission_layer=transmission_layer)
34
+ solver = Solver(stack, source, (1, 1))
35
+ result = solver.solve(wavelength=wavelengths)
36
+ return np.array(result['TTot']).tolist()
37
+ except Exception as e:
38
+ return []
39
+
40
  @tool
41
  def simulate_spectrum_100nm(layer_order: List[str]) -> List[float]:
42
  """
 
75
  a, b = np.array(vec1), np.array(vec2)
76
  return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))
77
 
 
78
  # --- Target Spectrum Generator ---
79
  def get_target_spectrum(layer_order, thickness=0.1):
80
  source = Source(wavelength=start_wl)