

@ 1,3 +1,19 @@ 



""" 



Sparse matrix solvers 







This file holds the sparse matrix solvers, as well as the 



CSRMatrix sparse matrix representation. 







The FDFD solver (fdfd_cg_solver()) solves an FDFD problem by 



creating a sparse matrix representing the problem (using 



fdfd_tools) and then passing it to cg(), which performs a 



conjugate gradient solve. 







cg() is capable of solving arbitrary sparse matrices which 



satisfy the constraints for the 'conjugate gradient' algorithm 



(positive definite, symmetric) and some that don't. 



""" 







from typing import List, Dict, Any 



import time 






@ 133,16 +149,16 @@ def cg(a: 'scipy.sparse.csr_matrix', 



return x 











def cg_solver(omega: complex, 



dxes: List[List[numpy.ndarray]], 



J: numpy.ndarray, 



epsilon: numpy.ndarray, 



mu: numpy.ndarray = None, 



pec: numpy.ndarray = None, 



pmc: numpy.ndarray = None, 



adjoint: bool = False, 



solver_opts: Dict[str, Any] = None, 



) > numpy.ndarray: 



def fdfd_cg_solver(omega: complex, 



dxes: List[List[numpy.ndarray]], 



J: numpy.ndarray, 



epsilon: numpy.ndarray, 



mu: numpy.ndarray = None, 



pec: numpy.ndarray = None, 



pmc: numpy.ndarray = None, 



adjoint: bool = False, 



solver_opts: Dict[str, Any] = None, 



) > numpy.ndarray: 



""" 



Conjugate gradient FDFD solver using CSR sparse matrices, mainly for 



testing and development since it's much slower than the solver in main.py. 


