-
Notifications
You must be signed in to change notification settings - Fork 34
TO DO file text #15
Description
From @demisjohn on March 30, 2018 5:48
# Copied from the "TODO" file in the repo.
Presumably Peter Beinstman's list of action items.
-don't polute global namespace with scipy
-document photonic wire, plot example of BlochStack, Cavity
-document BlochSection
-document band diagrams
-document Blochstack
-document ASR solver
-document keep_all_estimates?
-example with scipy.io.write_array(outfile, P_TM)
-GARCLED: tip to choose ref index non integer
-testsuite for oleds
-PhC splitter in testsuite
-what to do with code for grating at the substrate side?
-T scheme when S scheme fails due to resonance?
-change blochmode.get_kx() to blochmode.kx()
-add doc to make sure the cladding is large enough
-add doc to do all the dimensions in micron
-loss is negative index
-add doc to use geometry only fo a single period
-BlochStack(0) + .. + BlochStack(0) doesn't cache calculations.
-switch to SVN on sourceforge?
-cmake?
-investigate setuptools
-investigate pyste?
-check if numpy wrappers can get rid of copying
-check ref_counting in these wrappers
-compare with numpy boost python code
-pass C++ exception to Python
-see if camfr_wrap can be updated further (default arguments, python function)
-fPIC, optimise options for fortran, scons bug?
-testsuite windows
-overlap_slice under windows.
-write Error: didn't find enough modes, and Warning: singular system to stdout?
-check -funroll_loops
-test with -Wall
-remove explicit dependency on python version from machine_cfg.py.
-get rid of backward modes detection and use always lossy branchcut?
-speed up slabs with small delta n
-experiment with precompiled headers
-BlochSection with single non-uniform slab
-fix pw_vcsel.py
-phasar2.py
-plot doesn't work for Circ waveguide
-free_temps: slab_cache = []
-document flux failure for PML?
-circ: tracking solver in eps rather than in n
-plot n section doesn't work
-take kx0, .. into account for recalc_needed() for BlochSection
-stabilise PML in series solver
-series solver for degenerate waveguides: double_prism, zipper (relax mueller),
dircoup (PML)
-S_flux at arbitrary position
-circ S flux does not respect begin and end point
-infstack: fix ext_field_expansion, calc_interface_field, fw_bw(s.length())
-reformulate TE as fourier series
-Trent's algorithm to invert Toeplitz
-always take minimum number of modes in series solver
-stability tips for infstacks
-planar set_kt
-time 'a = b + multiply()' vs 'c.reference(multiply()); a = b+c'
-band calculation with fixed k_t
-averaging of eps
-remove f,zabs debug code from slabmode.cpp
-document field_calc_heuristic
-mode_calc from core only for guided modes
-try RCWA like overlap scheme. Could be more stable.
-definition of cladding index in 3D doesn't work well for graded index
structures.
CAMFR 3D:
-implement Ez, Hz in plane wave modes
-use blas for overlap calculations
-revisit calc_global in combination with arnoldi eigensolver.
-calc_band --> calc_overlap: need normalisation for calc_global?
-check if creation of extra interface in middle of core is needed
-clean up RefSectionMode::field (not used, but still)
-re-enable symmetry?
-improve interface of SectionDisp, remove f member of Section
-rework place where stack gets split up in left and right part (3D_core.py)
-optimise ref section overlap
-Section1D: both TE and TM modes, normalise, fw_bw_at, compare to 2D, kz=0
-free slabmatrixcache?
-generalise cache to work with different M in each section.
-implement SectionFlux
-pml=0 in simple_stack.py worng sign of kz
-dispersion relation of 2D slabs: try to eliminate need for O_II_I in
interface.cpp
-Remove kludge for normalising coodinates in field profiles
-PML in z direction (check field profiles, numeric overlap integral)
-speed up nomalisation through cache?
-slaboverlap TE_TM: introduce 'same' function
MEDIUM TERM:
-enum.export_values()
-speed up M - U1, where U1 is unit matrix
-speed up S_scheme_fields by avoiding explicit matrix multiplication.
-short cut check_error in Bessel functions
-try to prevent user from plotting in an infstack.
-inc/ext_S_flux: split over materials
-possibility to set PML layer by layer
-more general handling of decoupled waveguides
-eliminate warning for zero transmission through wall when calculating fields in stack
-group identical sections in Geometry
-blochmode fw,bw at
-easier notation for InfStack: inf*(expression)?
-prevent GC of temporary objects in expressions (walls, flipped, infstack)
-new function: stack::field(r0, r1, delta_r) to calc field on a grid,
ability to cache field profiles and speed up
-stack field on layer discontinuity: speed up by not propagating
-cleverer inc/ext_field_expansion that does not calculate internal fields
when not needed
-implement Bloch modes for MonoScatterers, InfStack for DiagScatters
-speed up Bloch for symmetric structures?
-investigate throwing exceptions to Python
-tune new complex zero finder
-related: make definition of C_upperright uniform
-related: test it for leaky modes
-related: reenable complex modes in circ
-related: test sign of beta in backward modes in circ (using power flux)
-investigate mode problems for CircM with large claddings
-use asymptotic expansions to find high order modes for circular
structures
-write a GUI for defining complicated structures
-add Python docbook comments
-making stripping of executable dependent on debug switches
-automatic setting of global.orthogonal
-explicitly return all modes found in Cavity::find_all_modes
-make 'precision' dynamic
-global numeric status register?
-cavity::calc_sigma: instead of using only the fw field, is it more robust
to use fw_backward field to determine dominant mode?
-cavity: instead of using SVD, use eigenvalue decomposition or Arnoldi
-try out LAPACK 3.0 special svd routine (zgesdd)
-PC_wall: add waveguide interface if needed
-faster location of PC_wall eigenmodes
-convert slabwall PC to Material Stacks
-slabwall: cache get_R12 for startfield, get_error
-kill virtual functions in SlabWall (perhaps elsewhere too, get_kz()?)
-PC and TBC walls for Sections
SOURCE MAINTENANCE
-dynamic name of camfr library (i.e. camfr vs camfr_work defined in only
one place) http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/223972
-Use scons Clean function
-remove old mode profile calculator
-Section sorter to mode.h
-build: eliminate as many makefiles as possible
-remove set_precision_enhancement and friends
-make the C++ naming convention more uniform and in sync with Python names
(e.g. circ_disp -> CircDisp, Material_length -> MaterialLength, ...)
-use BaseMaterial where appropriate
-completely redesign / rework Expression and its link to Stack
-make state of inc_field_bw consistent when calling set_interface_field
LOW PRIORITY
-is reciprocity exploitable?
-auto-partitioning of stacks in optimal diagonal substacks
-narrower minima in cavity::find_all_modes? (Peter)
-tilde in S_scheme: return more refs? (Peter)
-split scaling (Peter)
-scaling for complex modes, scaling when tracing (Peter)
-check sqrt(power) -> -1 norm (Peter)
-related: consolidate signedsqrt in material.h and circ.cpp (Peter)
Copied from original issue: #11