The project uses a Makefile for common development tasks:
make help # Show all available targets
make test # Run full test suite (23 tests, ~90s)
make quick-bench # Quick benchmark at 41³ (~30s)
make figures # Generate figures for main paper (coherence_gravity_coupling.tex)
make paper # Build coherence_gravity_coupling.pdf (main paper)
make null-results # Build null_results.pdf (curvature-EM constraints paper)
make bsm-paper # Build curvature_em_to_bsm.pdf (BSM parameter space paper)
make analysis # Analysis CLI for null_results.tex (curvature-EM bounds)
make optimize # Run geometry optimization (for main paper experiments)
make cache-info # Show cache statistics
make cache-clean # Clear all cached resultsThe project generates three main papers:
make paper
# or manually:
cd papers
pdflatex coherence_gravity_coupling.tex && bibtex coherence_gravity_coupling \
&& pdflatex coherence_gravity_coupling.tex && pdflatex coherence_gravity_coupling.texmake null-results
# or manually:
cd papers
pdflatex null_results.tex && bibtex null_results \
&& pdflatex null_results.tex && pdflatex null_results.texmake bsm-paper
# or manually:
cd papers/kappaR_to_BSM
pdflatex curvature_em_to_bsm.tex && pdflatex curvature_em_to_bsm.texWhy multiple pdflatex runs? LaTeX requires 2-3 passes to resolve cross-references, citations, and bibliography. The sequence (pdflatex → bibtex → pdflatex → pdflatex) ensures all references are correct.
# Main paper figures → papers/figures/*.pdf,*.png
python scripts/generate_figures.py
# BSM parameter space plots
python scripts/generate_bsm_plots.py
# Analysis reports (CSV/Markdown/LaTeX)
python scripts/generate_report.py --all# Curvature-EM coupling analysis
python scripts/analysis_cli.py --kappa-R 5e17 --B-field 10 --delta 1e-6
# Convergence study
python scripts/convergence_study.py --grids 41,61,81 --materials YBCO,Al
# Geometry optimization
python scripts/optimize_geometry.py --target-sensitivity 1e-12# Full test suite
pytest
# Quick smoke tests
pytest -q
# Specific test categories
pytest tests/test_solver.py # Solver validation
pytest tests/test_physics.py # Physics consistency
pytest tests/test_integration.py # End-to-end tests
# Coverage report
pytest --cov=src --cov-report=html# Format code
black src/ tests/ scripts/
# Lint
flake8 src/ tests/ scripts/
# Type checking
mypy src/# Profile solver
python scripts/profile_solver.py --grid 61
# Memory usage
python scripts/memory_profile.py
# Benchmark suite
python scripts/benchmark.py --fullThe solver uses intelligent caching to speed up repeated calculations:
# Show cache statistics
make cache-info
# Clear all cached results
make cache-clean
# Clear specific cache types
python scripts/cache_manager.py --clear-solver
python scripts/cache_manager.py --clear-figures# Use multiple cores for LaTeX
export LATEX_JOBS=4
make paper
# Parallel testing
pytest -n auto # Requires pytest-xdist# Enable debug mode
export DEBUG=1
python scripts/generate_figures.py
# Verbose solver output
export SOLVER_DEBUG=1
python examples/basic_solver.py# Use custom config file
python scripts/analysis_cli.py --config my_config.yaml
# Override default parameters
python scripts/generate_figures.py --xi 100 --grid 61papers/figures/convergence_analysis.pdf- Grid convergence studypapers/figures/material_comparison.pdf- Material propertiespapers/figures/landscape_YBCO_z_slice.pdf- Solution landscapepapers/figures/epsilon_vs_curvature.pdf- BSM parameter spacepapers/figures/curvature_amplification.pdf- Amplification factors
results/reports/convergence_report.md- Convergence analysisresults/reports/material_analysis.csv- Material comparison dataresults/reports/exclusion_limits.tex- LaTeX tables for papers
papers/coherence_gravity_coupling.pdf- Main paper (5 pages)papers/null_results.pdf- Null results paperpapers/kappaR_to_BSM/curvature_em_to_bsm.pdf- BSM paper
results/analysis/*.h5- Numerical solution dataresults/cache/*.pkl- Cached computationsresults/benchmarks/*.json- Performance metrics