File size: 876 Bytes
fa34304
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import numpy as np

def generate_sigma_x(x, dx, wavelength, domain_size, sigma_max=0.5, pml_factor=5):
    """
    Generate the 1D PML damping profile sigma(x) for the x-dimension.
    
    Parameters:
      x : 1D numpy array of x coordinates.
      dx : grid spacing in x.
      wavelength : wavelength in microns.
      domain_size : total transverse domain size (in microns).
      sigma_max : maximum damping value (default 0.5).
      pml_factor : number of wavelengths to use for the PML thickness.
    
    Returns:
      sigma_x : 1D numpy array of damping values.
    """
    pml_thickness = int(pml_factor * wavelength / dx)
    pml_width = pml_thickness * dx
    x_edge = domain_size / 2 - pml_width
    sigma_x = np.where(np.abs(x) > x_edge,
                       sigma_max * ((np.abs(x) - x_edge) / pml_width) ** 2,
                       0)
    return sigma_x