Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TO DO file text #15

Open
demisjohn opened this issue Apr 11, 2018 · 0 comments
Open

TO DO file text #15

demisjohn opened this issue Apr 11, 2018 · 0 comments

Comments

@demisjohn
Copy link
Owner

demisjohn commented Apr 11, 2018

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant