forked from jan/fdfd_tools
		
	rename search_direction to direction
This commit is contained in:
		
							parent
							
								
									000cfabd78
								
							
						
					
					
						commit
						4a9596921f
					
				@ -68,7 +68,7 @@ This module contains functions for generating and solving the
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    k, f = find_k(frequency=1/1550,
 | 
					    k, f = find_k(frequency=1/1550,
 | 
				
			||||||
                  tolerance=(1/1550 - 1/1551),
 | 
					                  tolerance=(1/1550 - 1/1551),
 | 
				
			||||||
                  search_direction=[1, 0, 0],
 | 
					                  direction=[1, 0, 0],
 | 
				
			||||||
                  G_matrix=recip_lattice,
 | 
					                  G_matrix=recip_lattice,
 | 
				
			||||||
                  epsilon=epsilon,
 | 
					                  epsilon=epsilon,
 | 
				
			||||||
                  band=0)
 | 
					                  band=0)
 | 
				
			||||||
@ -369,7 +369,7 @@ def eigsolve(num_modes: int,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def find_k(frequency: float,
 | 
					def find_k(frequency: float,
 | 
				
			||||||
           tolerance: float,
 | 
					           tolerance: float,
 | 
				
			||||||
           search_direction: numpy.ndarray,
 | 
					           direction: numpy.ndarray,
 | 
				
			||||||
           G_matrix: numpy.ndarray,
 | 
					           G_matrix: numpy.ndarray,
 | 
				
			||||||
           epsilon: field_t,
 | 
					           epsilon: field_t,
 | 
				
			||||||
           mu: field_t = None,
 | 
					           mu: field_t = None,
 | 
				
			||||||
@ -380,7 +380,7 @@ def find_k(frequency: float,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    :param frequency: Target frequency.
 | 
					    :param frequency: Target frequency.
 | 
				
			||||||
    :param tolerance: Target frequency tolerance.
 | 
					    :param tolerance: Target frequency tolerance.
 | 
				
			||||||
    :param search_direction: k-vector direction to search along.
 | 
					    :param direction: k-vector direction to search along.
 | 
				
			||||||
    :param G_matrix: 3x3 matrix, with reciprocal lattice vectors as columns.
 | 
					    :param G_matrix: 3x3 matrix, with reciprocal lattice vectors as columns.
 | 
				
			||||||
    :param epsilon: Dielectric constant distribution for the simulation.
 | 
					    :param epsilon: Dielectric constant distribution for the simulation.
 | 
				
			||||||
        All fields are sampled at cell centers (i.e., NOT Yee-gridded)
 | 
					        All fields are sampled at cell centers (i.e., NOT Yee-gridded)
 | 
				
			||||||
@ -390,10 +390,10 @@ def find_k(frequency: float,
 | 
				
			|||||||
    return: (k, actual_frequency) The found k-vector and its frequency
 | 
					    return: (k, actual_frequency) The found k-vector and its frequency
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    search_direction = numpy.array(search_direction) / norm(search_direction)
 | 
					    direction = numpy.array(direction) / norm(direction)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_f(k0_mag: float, band: int = 0):
 | 
					    def get_f(k0_mag: float, band: int = 0):
 | 
				
			||||||
        k0 = search_direction * k0_mag
 | 
					        k0 = direction * k0_mag
 | 
				
			||||||
        n, _v = eigsolve(band + 1, k0, G_matrix=G_matrix, epsilon=epsilon)
 | 
					        n, _v = eigsolve(band + 1, k0, G_matrix=G_matrix, epsilon=epsilon)
 | 
				
			||||||
        f = numpy.sqrt(numpy.abs(numpy.real(n[band])))
 | 
					        f = numpy.sqrt(numpy.abs(numpy.real(n[band])))
 | 
				
			||||||
        return f
 | 
					        return f
 | 
				
			||||||
@ -401,6 +401,6 @@ def find_k(frequency: float,
 | 
				
			|||||||
    res = scipy.optimize.minimize_scalar(lambda x: abs(get_f(x, band) - frequency), 0.25,
 | 
					    res = scipy.optimize.minimize_scalar(lambda x: abs(get_f(x, band) - frequency), 0.25,
 | 
				
			||||||
                                         method='Bounded', bounds=(0, 0.5),
 | 
					                                         method='Bounded', bounds=(0, 0.5),
 | 
				
			||||||
                                         options={'xatol': abs(tolerance)})
 | 
					                                         options={'xatol': abs(tolerance)})
 | 
				
			||||||
    return res.x * search_direction, res.fun + frequency
 | 
					    return res.x * direction, res.fun + frequency
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user