Complex Problems is a plugin subsystem where each problem contributes:
problem.pydescriptor and dialog entry pointui.pyconfiguration dialogsolver.pyspecialized numerical modelresult_dialog.pycustom visualization tabs- optional
model.pyhelpers
| ID | Name | Core model | Typical outputs |
|---|---|---|---|
coupled_oscillators |
Coupled Harmonic Oscillators | 1D oscillator chain with linear/nonlinear couplings | mode energies, phase-space, recurrence behavior |
membrane_2d |
2D Nonlinear Membrane | discrete 2D lattice membrane | displacement animation, energy drift, 2D FFT |
nonlinear_waves |
Nonlinear Waves (NLSE + KdV) | split-step / pseudo-spectral propagation | space-time map, phase/spectrum, invariants |
schrodinger_td |
Schrodinger TD (1D/2D) | split-operator spectral TDSE | density/phase evolution, expectation values |
antenna_radiation |
Antenna Radiation | far-field analytical radiation patterns | gain/directivity maps, polar cuts, E/H fields |
aerodynamics_2d |
Aerodynamics 2D | incompressible flow with projection + obstacle penalization | speed/vorticity maps, Cd/Cl curves |
pipe_flow |
Pipe Flow | steady Darcy-Weisbach and transient 1D pressure-wave model | pressure/velocity profiles, Reynolds/friction metrics |
- Open
Complex Problemsfrom main menu. - Pick a module from the left list.
- Review the right-side details panel (type, description, configurable options, outputs).
- Open the selected module.
- Expand
How to configure(collapsed by default) if needed. - Configure model-specific parameters.
- Run solve (background execution + loading dialog).
- Explore module-specific tabs and diagnostics.
- Mathematical labels use Unicode notation when possible (
xₘᵢₙ,tₘₐₓ,Nₓ, ...). - If a true Unicode subscript is not available, use
base_subscriptwith Unicode symbol, e.g.N_θ,N_φ. - Static explanatory text is shown as non-editable labels (not copy-oriented text boxes).
- Intentional copy-friendly Unicode helper blocks remain in custom-equation / transform workflows.
Most modules expose magnitude checks in results:
- conservation drift (
energy_drift_rel,norm_drift_rel, etc.) - stability indicators (CFL-like constraints, divergence, max amplitude)
- physical metrics (gain/directivity peaks, drag/lift summaries)
Use these before trusting conclusions from very aggressive settings.
- Increase grid resolution only after validating lower-cost runs.
- Keep
dtconservative for nonlinear or wave-dominated models. - Prefer default integrators first; compare alternatives after baseline validation.
- For 2D models, tune both spatial resolution and output sampling cadence.
Follow the package pattern:
src/complex_problems/<plugin_name>/
__init__.py
problem.py
ui.py
solver.py
result_dialog.py
model.py (optional)
Then register the plugin in src/complex_problems/problem_registry.py.
Detailed implementation guidance is in Developer Guide.