This is the Python code accompanying the paper I. Loboda and A. Réva, "Optimization of the Ritchey-Chrétien telescope for a discrete set of reference spheres," Opt. Express 33, 38015-38028 (2025).
This code implements the method described in the paper, allowing optimization of a Ritchey–Chrétien telescope design to match a set of standard reference spheres used in optical manufacturing. The approach minimizes the required aspherization of the mirrors while making only minimal modifications to the telescope's geometry.
RC_opt.py— the main library containing the optimization routines.User_manual.ipynb— a Jupyter notebook with a detailed usage example, illustrating the optimization process with two space-based EUV solar telescopes, ARKA and KORTES, analyzed in the paper.GOST_1807-75.csv— a sample reference sphere catalog (Soviet/Russian standard GOST 1807-75) used in the examples.Manuscript/— LaTeX source files for the paper (necessary style files can be downloaded from the Optica Publishing Group Guide for Authors).Paper_Figures.ipynb— a Jupyter notebook used to reproduce the figures and tables for the paper.LICENSE.txt— license information for this repository.
- Python 3.7+
numpyscipymatplotlibJupyter(for running the example notebook)
You can install the dependencies with:
pip install numpy scipy matplotlib jupyterlab1️⃣ Clone the repository:
git clone https://github.com/Melmot/RCopt.git
cd RCopt2️⃣ Open the Jupyter notebook:
jupyter lab RCopt_example.ipynb3️⃣ Follow the notebook to see how to:
- Import the library and set up a telescope
- Load a set of standard reference spheres
- Optimize the telescope layout to minimize required aspherization
- Visualize and export aspherization profiles
- Export the final design to a Zemax file
Contributions, bug reports, and suggestions are welcome! Please open an issue or submit a pull request.
If you use this code in your research, please cite: