def checked_resonances2(elt, neigs=0, tol=1e-6): """ Compute resonances with two densities in order to check convergence. If the same answer occurs to within tol, accept the pole as converged. Inputs: elt - coarse mesh neigs - number of poles desired? (default: 0 -> compute all) tol - absolute estimated error tolerance (default: 1e-6) Use tol = 0 to return everything """ (l, V) = compute_resonances(elt, neigs) if neigs == 0: neigs = len(l) N = problem_size(elt) dl = np.zeros((neigs,1)) V = V[0:N,:] for k in range(0,neigs): dl[k] = errest_resonance(elt, l[k], V[:,k]) if tol > 0: # Filter eigenvalues is_good = np.abs(dl) < tol l = l[is_good] dl = dl[is_good] V = V[:,is_good]
def checked_resonances(elt, neigs=0, tol=1e-6): """ Compute resonances with two densities in order to check convergence. If the same answer occurs to within tol, accept the pole as converged. Inputs: elt -- coarse mesh neigs -- number of poles desired? (default: 0 -> compute all) tol -- match tolerance (default: 1e-6) Output: l -- """ elt2 = copy.deepcopy(elt) for i in range(len(elt)): elt2[i]['order'] = int(np.ceil(elt[i]['order'] * 1.5)) l1 = compute_resonances(elt=elt, neigs=neigs) l2 = compute_resonances(elt=elt2, neigs=neigs) l = compare_eigs(l2, l1, tol) return l