The Elara Handbook
Welcome to Project Elara! Project Elara is a mission of a team of committed scientists, engineers, and talented people, working across many different fields, to pass down a better world to our future generations.
Who we are¶
We are an organization committed to developing open-source technologies that we believe can create a better future. Our current research focus is in developing a space-based solar power system that is 100% open-source and dedicated to a sustainable, resilient, and affordable energy future. We choose to make all of our work open-source, because we want that future to be for everyone.
These are indeed lofty goals, and we realize that even trying to begin is hardly simple. Therefore, we work as a team to accomplish this mission together. To advance, share, and preserve our collective knowledge and expertise, and to build on each other’s work, we have put together this encyclopedic book. Everything you’d ever need to learn, develop, or contribute to Project Elara can be found here. And we dedicate this book to the world: the Project Elara Handbook is released into the public domain and free to view, share, remix, and download, forever.
Reading the Handbook¶
Aside from being Project Elara’s primary documentation, the Handbook can also be used as a comprehensive textbook for students in the sciences. It contains the majority of the content covered in a typical undergraduate course of physics and engineering, in addition to some more advanced and specific topics. Even if you’re not interested in Project Elara, we hope that the Elara Handbook can be useful as a general reference and textbook, particularly for self-learning or studying. If this is you, feel free to skip the majority of Project Elara-related content and start reading at Chapter 3.
Getting involved¶
Project Elara is built on a community of passionate and dedicate people - and we welcome anyone to join our team! If you would like to contribute to Project Elara, we
The newcomer’s guide¶
If you’re new to the Project, we are very glad to have you join us! To get started, please read How to get started in the project, which contains a complete, step-by-step guide on getting started with the Project.
Once you’ve gotten started, reading the Elara Handbook is the recommended way to learn more about the science behind our work. That said, we understand that reading technical and scientific documentation can easily be quite confusing, so we have organized the Handbook to require minimal prerequisite knowledge and background to read. For this, the Handbook is split into three main sections: Chapters 1-4 (“The Basics”) are about the fundamentals of our work, Chapters 5-12 (“The Specifics”) are about intermediate-level topics, and the remainder of the book is about advanced topics. They can be read in order, or read separately. While everyone’s learning needs are different, we give some suggestions for which of the sections to read based on your interests/comfort level with the technical sciences:
I just want to learn about Project Elara, but I’m not interested in the technical stuff. In that case, reading just the Project Elara overview chapter in “The Basics” should be enough!
I want to learn the technical stuff, but I’m unfamiliar with calculus, introductory physics, or computer programming. In that case, we recommend reading all the chapters in “The Basics” before progressing any further. We also recommend reading at least some of the chapters in “The Specifics”. While reading everything in this chapter will provide you with a thorough understanding on which to do research, we understand that is not for everyone, so read according to your interests and time
I have good familiarity with calculus, introductory physics, and computer programming (in at least one language). In that case, we recommend just skimming through “The Basics” for a basic review. Afterwards, we strongly recommend reading through as much of “The Specifics” as possible. This section covers all the theoretical and applied foundations for understanding the Project’s core research, and explains the Project’s research. However, it is not necessary to read anything beyond.
I am strongly interested in theoretical or computational physics, and have a strong math and physics background. In that case, you should be set reading just the Project Elara overview chapter in “The Basics”, then jumping straight to “The Expert’s Guide”.
I am a developer and just want to work on code. In that case, we recommend reading the first part of “The Basics”, and then jumping straight to the Developer guide. You may then choose to read whichever parts suit your interest/are needed for the work you plan to do.
We are so grateful for each and every one of our team members, and everyone’s contributions, no matter how small, will be tracked and (eventually) added to Contributions at the end of the book. Your work brings us one step closer to changing the world for the better.
PDF version¶
For offline usage, a PDF version of this book can be downloaded from https://
FAQs¶
I don’t understand the code within the Handbook. What is it there for?
Many pages in the Handbook contain inline code that does scientific calculations, generates graphs and plots, or solves particular equations. You do not need to understand them, but we will go over programming within the Handbook so that the code makes more sense.
Why is there so much incomplete/misplaced/undecipherable content?
We are a small team and though we want to produce documentation and work of the highest quality, our time constraints mean that the Handbook does have sections that seem out of place or are far too rushed. The Handbook is a work-in-progress and we highly encourage reporting any issues you find to our issues tracker.
Do I have to read through everything? This seems like a lot and I’m not sure I can read this much.
No, you don’t have to read any more than you feel comfortable with! It’s okay to skip sections or read only a small portion of the Handbook. We wrote this Handbook to be comprehensive because (among other reasons) we wanted to explain everything possible so that someone reading wouldn’t get lost when we explain our research. But there is no need to learn everything or read it all!
I’m reading the PDF version of the Elara Handbook and I notice a bunch of stuff that doesn’t look like it should be there or weirdly-formatted stuff. What’s that about?
The web version of the Elara Handbook is the primary version (for now) and it includes internal links and HTML content that doesn’t always translate super well to PDFs. While we try to make the two compatible, we unfortunately haven’t had the time to look over everything. Again, we encourage you to report issues you find to our issue tracker (the link is given above).
The chapter numbers in the PDF don’t line up to the web version or the titles in the Handbook, why is that?
Our PDF generator tool works in a way that doesn’t distinguish between actual chapters and introductory pages. We are trying to figure out a way to solve this issue, but it will take some time, and again, please report this issue (and any similar ones) so we know which places need fixing.
Quickstart for developers¶
Do you want to contribute to making the Handbook better? Then this section is for you! First, some background: this book is written using Jupyterbook, a Python-based tool for making scientific books containing runnable code. The source code is hosted on Project Elara’s Codeberg in the elara-handbook repository. To edit the Handbook, ensure you have Git and Python installed, then clone the repository:
git clone https://codeberg.org/elaraproject/elara-handbook
cd elara-handbookThen you can start writing! The source files of the book are written in Markdown and are located in the book/ directory. We recommend using a markdown editor like Obsidian or Zettlr which makes editing much more convenient, but this is not strictly necessary. Simply follow the below instructions:
To write a new section, first switch to a new editing branch with
git checkout -b YOUR_NEW_BRANCHNAME(replaceYOUR_NEW_BRANCHNAMEwith an appropriate name for the branch as you see fit)Copy a template from the
templates/folder in the repository root and copy it into one of the directories (e.g.basics/,specifics/, etc.)Then rename it to a suitable name and add the filename to
_toc.ymllocated in the repository root in the appropriate section (make sure that it is the correct relative file path from the root of the repo, e.g. it should start withbook/location-to-your-fileand you do not need to include the file extension)You can now start editing! Remember to commit and open a pull request (Codeberg provides automated tools for this) so we can merge in your changes!
Git information¶
For developers working on Windows, it is highly recommended to configure Git to automatically handle line-endings via git config --global core.autocrlf true before editing anything. See this article here which explains why it is necessary.
HTML builds¶
To build the book locally and see it live on your web browser, ensure you have the following installed:
Python 3.10+
Bash/Zsh and
sh(for Windows users who don’t have either, you will need to install Git Bash for Windows or Cygwin)Just, which is used for automated builds
To install Just, please see the instructions in its GitHub repository. It is possible to build the book without Just (see manual build instructions below), but it becomes a lot more complicated.
Automatic build¶
Assuming you have all the prerequisites, building the book HTML can be done with only a couple of commands:
just install # you only need to run this the first time
just serve # to start a development serverManual build¶
If you want to build manually (without Just), you will first need to install Jupyterbook and all the other book dependencies. It is optional but recommended to create a Python virtual environment for this, which can be done as follows:
# for all platforms, first run:
python -m venv .venv/
# next command varies by platform:
# Unix (Mac/Linux)
source .venv/bin/activate
# Windows powershell
.venv/Scripts/Activate.ps1
# Cygwin/Git bash for windows
source .venv/Scripts/activateAfterwards, install the Python dependencies manually, and enter into the book/ folder:
pip install -r requirements.txt
cd book/Finally, start the development server, which will build the book and show a preview (simply navigate to http://
# You MUST run this in the book/ folder
jupyter book startNote that the above command only renders the static content of the book (meaning that no code in the book is executed). If you want code to be executed as well (be aware this will run slower), then enter the following command:
# You MUST run this in the book/ folder
jupyter book start --executePDF export¶
The Elara Handbook can also be compiled into a standalone PDF (you might want to do this, for example, to read the Handbook offline). For this, you’ll need to have a LaTeX compiler installed. See instructions on the LaTeX website for more information.
In addition, you will also need to have [ImageMagick] installed. To install it, go to its official website’s installation page, which has detailed instructions for how to install ImageMagick.
To build the book PDF, we offer two different options for building the PDF, depending on the degree of manual control you want. We strongly recommend the automatic builds since it requires much less work, but the choice is up to you.
Automatic PDF builds¶
To build automatically, simply run:
mkdir target/ # only run this on first build
just build-pdfThis should build a file called elara-handbook.pdf in the target/ folder, and can be read right away (be aware that the build can take several minutes).
Manual PDF builds¶
To build manually, run the following commands:
mkdir target/ # only run this on first build
cd build/
jupyter build book --pdfThe book will be located at target/elara-handbook.pdf and can be read right away.
Optional steps for PDF builds¶
If you have completed all the previous step, you should have the book PDF compiled, but it will not have the cover art as in the downloadable PDF version on the Elara Handbook website. If you want the PDF to look exactly like the downloadable version, there is one additional step - you will need to append the book cover. For this, there are two options: using Ghostscript, or using pdfmerge.
Appending cover using pdfmerge¶
This is definitely the easier way, and recommended in general unless if you already have GhostScript application installed. Assuming you have followed the previous steps for building the PDF, simply run (in the repository root):
python -m pdfmerge target/elara-handbook.pdf book/cover.pdf target/elara-handbook.pdfThe PDF (with the cover art included) will then be available at target/elara-handbook.pdf for reading.
Appending cover using Ghostscript¶
If you want to use Ghostscript, make sure it is available first; you can check by running gs --version (on Windows, gswin64c --version). If you don’t have Ghostscript, you will need to install it from its downloads page. Then, from the root directory of the repository, run:
# if on Linux/macOS
gs -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=target/elara-handbook.pdf \
-dBATCH book/cover.pdf target/elara-handbook.pdf
# if on Windows (assuming 64-bit system)
gswin64c -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=target/elara-handbook.pdf \
-dBATCH book/cover.pdf target/elara-handbook.pdfThat’s it! Simply open target/elara-handbook.pdf and you can read the entire handbook offline.
Obsidian-specific settings¶
If you are using the Obsidian editor to edit pages for the Elara Handbook, there are some settings that provide a more comfortable editing experience, which we provide instructions for below.
LaTeX editing plugins¶
We highly recommend installing the obsidian-latex plugin, as it provides support for custom LaTeX commands (such as \mathrm for typesetting physical units) that are not shipped with Obsidian by default. We have already set up a LaTeX snippets file that should load automatically upon installing the plugin, so you can get started as fast as possible.
Additionally, you may want to install the Obsidian LaTeX suite plugin, which provides macros for faster (and more comfortable) LaTeX typing.
Hide build files and other artifacts¶
This is very useful to make sure Obsidian doesn’t accidentally edit the build files. To use this function, install the File Ignore plugin and enable it. Then in the plugin settings (in the “Rules” textbox) enter the following:
temp/
*.tmp
.DS_Store
Thumbs.db
_build/Afterwards press “Hide files” and Obsidian will stop indexing the build directories, as well as config files. Note that it is also very important when building the book locally to modify the build command to:
# Again this must be run in the book/ folder of the repository
jupyter book start --path-output ._build/This is because using the standard command jupyter book start clashes with the file ignore plugin and makes it fail!
Hide the inline titles¶
Go to Settings → Appearance and disable “Inline Title”.
License¶
All material in the Elara Handbook is dedicated to the public domain.
The Elara Handbook is dedicated to the public domain. You may freely use, redistribute (free or for a fee), copy, modify, and (most importantly of all) learn from this book. Just be aware that this book cannot be copyrighted, patented, or claimed as your own work (as it is inherently in the public domain). You may also freely plagiarize this book, make proprietary modifications to this book and/or its included source code and sell it, use this book commercially, or include this book as part of a product. We, however, do not encourage such practices, as they are fundamentally against our values, and we would hope that if you derive profit from this book, you contribute some part of your profits to helping Project Elara and its mission.
More specifically, the Handbook is dual-licensed under the Unlicense and Creative Commons CC0 License (both are public domain licenses) as it contains both traditional book content and included executable code; this is because the Unlicense is designed for source code, whereas CC0 is designed for creative works. In situations where an ambiguity arises as to which license should be applied, whichever of the two below licenses is more permissive will be regarded as the sole license to be applied across the whole work.
The Unlicense
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to https://
Creative Commons CC0 1.0 Universal License
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an “owner”) of an original work of authorship and/or a database (each, a “Work”).
Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works (“Commons”) that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the “Affirmer”), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights (“Copyright and Related Rights”). Copyright and Related Rights include, but are not limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; ii. moral rights retained by the original author(s) and/or performer(s); iii. publicity and privacy rights pertaining to a person’s image or likeness depicted in a Work; iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; v. rights protecting the extraction, dissemination, use and reuse of data in a Work; vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer’s Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the “Waiver”). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer’s heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer’s express Statement of Purpose.
Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer’s express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer’s Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the “License”). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer’s express Statement of Purpose.
Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person’s Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.