Skip to content

TO DO file text #15

@demisjohn

Description

@demisjohn

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions