diff --git a/LaTeX/macros.tex b/LaTeX/macros.tex new file mode 100644 index 0000000..5840090 --- /dev/null +++ b/LaTeX/macros.tex @@ -0,0 +1,25 @@ + +\newtheorem{theorem}{Theorem} + + +\newcommand{\diff}[2]{\frac{\partial #1}{\partial #2}} +\newcommand{\diffr}[1]{\diff{#1}{r}} +\newcommand{\diffth}[1]{\diff{#1}{\theta}} +\newcommand{\diffz}[1]{\diff{#1}{z}} + +\newcommand{\vth}{V_{\theta}} + +\newcommand{\twochoices}[2]{\left\{ \begin{array}{lcc} + \displaystyle #1 \\ \vspace{-10pt} \\ + \displaystyle #2 \end{array} \right. } %} + +\newcommand{\threechoices}[3]{\left\{ \begin{array}{lcc} + #1 \\ #2 \\ #3 \end{array} \right. } %} + +\newcommand{\fourchoices}[4]{\left\{ \begin{array}{lcc} + #1 \\ #2 \\ #3 \\ #4 \end{array} \right. } %} + +\newcommand{\twovec}[2]{\left(\begin{array}{c} #1 \\ #2 \end{array}\right)} +\newcommand{\threevec}[3]{\left(\begin{array}{c} #1 \\ #2 \\ #3 \end{array}\right)} +\newcommand{\twomatrix}[4]{\left(\begin{array}{cc} #1 & #2 \\ #3 & #4 \end{array}\right)} + diff --git a/LaTeX/refs.bib b/LaTeX/refs.bib new file mode 100644 index 0000000..4b44905 --- /dev/null +++ b/LaTeX/refs.bib @@ -0,0 +1,136 @@ + +@MISC{softy, + author = "IBM", + howpublished = "download from vendor site", + title = "{S}{P}{S}{S} {S}tatistics", + url = "http://www.ibm.com/software/analytics/spss/", + note = "version 21", + lastchecked = "August 2012", + year = "2012" +} + +@INPROCEEDINGS{taum, + author = "Joseph D. Taum", + title = "Investigation of flow turning phenomenon", + booktitle = "20th Aerospace Sciences Meeting", + organization = "AIAA", + series = "82", + number = "0297", + year = "1982" +} + +@ARTICLE{zeddini, + author = "Robert A. Zeddini", + title = "Injection-induced flows in porous-walled ducts", + journal = "AIAA Journal", + volume = "14", + pages = "766--773", + year = "1981" + } + +@ARTICLE{richards, + author = "R. S. Richards and A. M. Brown", + title = "Coupling between acoustic velocity + oscillations and solid propellant combustion", + journal = "J. Prop. and Power", + volume = "5", + pages = "828--837", + year = "1982" + } + +@BOOK{dole, + author = "Julian D. Dole", + title = "Perturbation Methods in Applied Mathematics", + publisher = "Winsdell Publishing Company", + year = "1967" + } + +@ARTICLE{crow, + author = "M. E. Crow", + title = "Aerodynamic sound emission as a singular perturbation problem", + journal = "Stud. Appl. Math.", + volume = "29", + pages = "21--44", + year = "1968" + } + +@ARTICLE{mulick, + author = "F. C. Mulick", + title = "Rotational axisymmetric mean flow and damping + of acoustic waves in a solid propellant", + journal = "AIAA J.", + volume = "3", + pages = "1062--1063", + year = "1964" + } + +@ARTICLE{mulick75, + author = "F. C. Mulick", + title = "Stability of four-dimensional motions in a combustion chamber", + journal = "Comb. Sci. Tech.", + volume = "19", + pages = "99--124", + year = "1981" + } + +@ARTICLE{fabnis, + author = "J. S. Fabnis and H. J. Giblet and H. McDormand", + title = "Navier-stokes analysis of solid rocket motor internal flow", + journal = "J. Prop. and Power", + volume = "2", + pages = "157--164", + year = "1980" + } + +@INPROCEEDINGS{smitty, + author = {T. M. Smitty and R. L. Coach and F. B. H\"ondra}, + title = "Unsteady flow in simulated solid rocket motors", + booktitle = "16st Aerospace Sciences Meeting", + organization = "AIAA", + series = "78", + number = "0112", + year = "1978" + } + +@ARTICLE{baylor, + author = "G. I. Baylor", + title = "Up, Up and Away", + journal = "Proc. Roy. Soc., London A", + volume = "294", + pages = "456--475", + year = "1959" + } + +@ARTICLE{guillot, + author = "F. Guillot and Z. Javalon", + title = "Acoustic boundary layers in propellant rocket motors", + journal = "J. Prop. and Power", + volume = "5", + pages = "331--339", + year = "1989" + } + +@ARTICLE{lao:paper, + author = "Q. Lao and M. N. Cassoy and K. Kirkpatrick", + title = "Acoustically generated vorticity from internal flow", + journal = "J. Fluid Mechanics", + volume = "2", + pages = "122--133", + year = "1996" + } + +@ARTICLE{lao:97, + author = "Q. Lao and D. R. Kassoy and K. Kirkkopru", + title = "Nonlinear acoustic processes in rocket engines", + journal = "J. Fluid Mechanics", + volume = "3", + pages = "245--261", + year = "1997" + } + +@PHDTHESIS{lao:thesis, + author = "Henry Lao", + title = "Linear Acoustic Processes in Rocket Engines", + school = "University of Colorado at Boulder", + year = "1979" + } diff --git a/LaTeX/thesis.cls b/LaTeX/thesis.cls new file mode 100644 index 0000000..d6dfd83 --- /dev/null +++ b/LaTeX/thesis.cls @@ -0,0 +1,1282 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% thesis.cls - LaTeX2e class for CU Theses. +%% To conform to the University of Colorado at Boulder +%% Graduate School SPECIFICATIONS (April 2010) for +%% Preparation of Master's Thesis and Doctoral Dissertations +%% Version 1.00 written by John P. Weiss, 1997 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% version 1.14, Ken Anderson, August 2020 -- removed signature +%% page; instead list committee members on title page. +%% Changes made to comply with new Graduate School +%% guidelines. +%% version 1.13, Hongcheng Ni, March 2014 -- made compatible with +%% hyperref. +%% version 1.12, Hongcheng Ni, March 2014 -- added title before +%% the advisor's name in the signature page. +%% version 1.11, Bruce Fast, April 2008 -- changed left margin +%% from 1.75" to 1", and added \IRBprotocol option +%% version 1.10, E. Joshua Rigler, January 2003 -- making it safe +%% for folks who inadvertently load setspace.sty, changed +%% \latex@xfloat to \latexx@xfloat +%% version 1.09, BF, November 2000 -- conforms to revised specs +%% no significant changes required +%% version 1.08, Steven V Penton, September 1999 -- added +%% \readerFive; moved list of tables in front of figures +%% version 1.07, BF, January 1999 -- fixed \LoFisShort etc. +%% version 1.06, BF, November 1998 -- fixed level 4 headers; +%% SubSubSections, inline4 & nonum4. Eliminated +%% unwanted space before chapter/section numbers. +%% version 1.05, BF, August 1998 -- Footnotes and floats +%% (captions) now singlespaced, fixing an omission +%% in v1.04. Fixed value of \belowcaptionskip, +%% for table captions. +%% version 1.04, BF, July 1998, Adjusted doublespacing +%% (no longer uses setspace.sty) and margin values. +%% version 1.03, May 1998, Bruce Fast -- Added optional +%% \readerThree{}, \readerFour{}; LoF/LoT debugging; +%% doublespaced abstract +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{thesis}[2020/08/06] % version 1.14 + +\typeout{} +\typeout{--------------------------------------------------------------} +\typeout{ +---+ Thesis Style (thesis.cls) version 1.14} +\typeout{ +---+ for University of Colorado Ph.D. theses/dissertations.} +\typeout{ * Conforms to the University of Colorado at Boulder Graduate} +\typeout{ * School "SPECIFICATIONS for Preparation of Master's Thesis} +\typeout{ * and Doctoral Dissertations" (rev. May 2020).} +\typeout{--------------------------------------------------------------} +\typeout{ URL: http://www.colorado.edu/oit/software-hardware/tex-latex} +\typeout{} + +% Certain options are not handled here but are passed on to report.cls +% by \PassOptionToClass. + +\DeclareOption{fleqn}{ \PassOptionsToClass{fleqn}{report} } +\DeclareOption{leqno}{ \PassOptionsToClass{leqno}{report} } +\DeclareOption{openbib}{ \PassOptionsToClass{openbib}{report} } +\DeclareOption{draft}{ \PassOptionsToClass{draft}{report} } +\DeclareOption{final}{ \PassOptionsToClass{final}{report} } +\DeclareOption{openright}{ \PassOptionsToClass{openright}{report} } +\DeclareOption{openany}{ \PassOptionsToClass{openany}{report} } +\DeclareOption{10pt}{ \PassOptionsToClass{10pt}{report} } +\DeclareOption{11pt}{ \PassOptionsToClass{11pt}{report} } +\DeclareOption{12pt}{ \PassOptionsToClass{12pt}{report} } + +% Invalid options - normally used in report.cls and others, but not here: + +\DeclareOption{titlepage} + {\ClassWarning{thesis}{Title page always generated. Option ignored.}} +\DeclareOption{notitlepage} + {\ClassWarning{thesis}{Option 'notitlepage' not available for thesis.}} +\DeclareOption{twoside} + {\ClassWarning{thesis}{Option 'twoside' not available for thesis.}} +\DeclareOption{twocolumn} + {\ClassWarning{thesis}{Option 'twocolumn' not available for thesis.}} +\DeclareOption{landscape} + {\ClassWarning{thesis}{Option 'landscape' not available for thesis.}} +\DeclareOption{legalpaper} + {\ClassWarning{thesis}{Option 'legalpaper' not available for thesis.}} +\DeclareOption{a4paper} + {\ClassWarning{thesis}{Option 'a4paper' not available for this class.}} +\DeclareOption{a5paper} + {\ClassWarning{thesis}{Option 'a5paper' not available for this class.}} +\DeclareOption{executivepaper} + {\ClassWarning{thesis}{Option 'executivepaper' not available.}} +\DeclareOption{b5paper} + {\ClassWarning{thesis}{Option 'b5paper' not available for this class.}} +\DeclareOption{letterpaper} + {\ClassWarning{thesis}{Option 'letterpaper' superfluous. Ignored.}} +\DeclareOption{onecolumn} + {\ClassWarning{thesis}{Option 'onecolumn' superfluous. Ignored.}} +\DeclareOption{oneside} + {\ClassWarning{thesis}{Option 'oneside' superfluous. Ignored.}} + +%%%%%%%%%%% CUSTOM OPTIONS: +% Options for no decimal numbering, or decimal number nested over 3 deep: +\newif\if@AllHeadings +\newif\if@NumberStdHeadings +\newif\if@PerChptrNumbering +\newif\if@emphisbold +\newif\if@boldhead +\newif\if@fixedHeadSz +\newif\if@headSizeTwelvePt +\newif\if@ChapterDefault +\newif\if@SectionDefault +\newif\if@SubSectionDefault +\newif\if@OtherHeadingDefault +\newif\if@centerChapter +\newif\if@centerSection +\newif\if@inlineSubSubSection +\newif\if@numberSubSubSection +\newif\if@chapterCaps +\@AllHeadingsfalse +\@NumberStdHeadingstrue +\@PerChptrNumberingtrue +\@emphisboldtrue +\@boldheadtrue +\@fixedHeadSzfalse +\@centerChaptertrue +\@centerSectionfalse +\@inlineSubSubSectionfalse +\@numberSubSubSectiontrue +\@chapterCapsfalse +\@headSizeTwelvePttrue +\DeclareOption{consecutivenumbering}{ \@PerChptrNumberingfalse } +\DeclareOption{inlineh4}{ \@inlineSubSubSectiontrue } +\DeclareOption{nonumh4}{ \@numberSubSubSectionfalse } +\DeclareOption{centerh1}{ \@centerSectiontrue } +\DeclareOption{chapleft}{ \@centerSectiontrue } +\DeclareOption{chapup}{ \@chapterCapstrue } +\DeclareOption{emph2underline}{ \@emphisboldfalse } +\DeclareOption{plainhead}{ \@boldheadfalse } +\DeclareOption{fixedheadsize}{ \@fixedHeadSztrue } +\DeclareOption{varheadsize}{\@headSizeTwelvePtfalse}% Hidden option. Don't use. +\DeclareOption{numberchapteronly}{ + \@PerChptrNumberingfalse\@NumberStdHeadingsfalse\@AllHeadingsfalse + \@centerChaptertrue\@centerSectiontrue + \@inlineSubSubSectiontrue\@numberSubSubSectionfalse } +\DeclareOption{allheadings}{ + \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingstrue + \@centerChaptertrue\@centerSectionfalse + \@inlineSubSubSectionfalse\@numberSubSubSectiontrue} +\DeclareOption{typewriterstyle}{ \@emphisboldfalse + \@PerChptrNumberingfalse\@NumberStdHeadingsfalse\@AllHeadingsfalse + \@centerChaptertrue\@centerSectiontrue\@chapterCapstrue + \@inlineSubSubSectiontrue\@numberSubSubSectionfalse + \@boldheadfalse\@fixedHeadSztrue} +\DeclareOption{modernstyle}{ \@emphisboldtrue + \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingsfalse + \@centerChaptertrue\@centerSectionfalse\@chapterCapsfalse + \@inlineSubSubSectiontrue\@numberSubSubSectionfalse + \@boldheadtrue\@fixedHeadSzfalse} +\DeclareOption{defaultstyle}{ \@emphisboldtrue + \@PerChptrNumberingtrue\@NumberStdHeadingstrue\@AllHeadingsfalse + \@centerChaptertrue\@centerSectionfalse\@chapterCapsfalse + \@inlineSubSubSectionfalse\@numberSubSubSectiontrue + \@boldheadtrue\@fixedHeadSzfalse} + +% Now we load the report class with certain options by default. It +% will process any other options specified. Then, we process the +% options for this class file. Lastly, we load in the font option +% file for the given font size. + +\ProcessOptions +\LoadClass[letterpaper,oneside,onecolumn]{report}[1996/10/31] + +% Other required LaTeX2e packages: if your computer doesn't already +% have these, you can copy them to your own directory (URL above): + +\RequirePackage{indentfirst} % indentfirst.sty, 1995/11/23 +\RequirePackage{ifthen} % ifthen.sty, 1996/08/02 +\RequirePackage[ULforem,normalbf]{ulem} % ulem.sty, 1995/12/17 + + +%%%%%% SPECIAL INTERNAL COMMANDS. Needed by later routines. + +% Create a command to be used for default arguments. +\newcommand*{\th@DefArg}{aWfdRvV11f66GL00K5} + +% Now create a command to check for the default argument, and call the +% command [in the first arg] appropriately. Used for section heading +% commands. + +\newcommand{\th@ExecChkOptArg}[3]{ +\ifthenelse{\equal{\th@DefArg}{#2}}{ + #1{#3} + }{ + #1[#2]{#3}} +} + +% Controls the heading styles. You can change the size to suit your needs. + +\if@fixedHeadSz + \newcommand*{\th@ChSz}{\normalsize} + \newcommand*{\th@ScSz}{\normalsize} +\else\if@headSizeTwelvePt + \newcommand*{\th@ChSz}{\normalsize\fontsize{12}{12}\selectfont} + \newcommand*{\th@ScSz}{\normalsize\fontsize{12}{12}\selectfont} +\else + \newcommand*{\th@ChSz}{\normalsize\Large} + \newcommand*{\th@ScSz}{\normalsize\large} +\fi\fi + +\if@boldhead + \newcommand*{\th@HdFnt}{\normalfont\bfseries} +\else + \newcommand*{\th@HdFnt}{\normalfont} +\fi + +% The style commands proper. Controlled by a flag. + +\newif\if@thInHeading +\@thInHeadingfalse +\newcommand*{\th@ChapterStyle}{\if@thInHeading\th@HdFnt\th@ChSz\fi} +\newcommand*{\th@SectionStyle}{\if@thInHeading\th@HdFnt\th@ScSz\fi} +\newcommand*{\th@SubSectionStyle}{\if@thInHeading\normalsize\th@HdFnt\fi} +\newcommand*{\th@OtherSecHeadStyles}{\if@thInHeading\normalsize\th@HdFnt\fi} + +% Re-define the emphasis commands to use either BOLDFACE or UNDERLINING, +% depending on the startup flags. + +\newcommand*{\EmphReset}{ + \if@emphisbold + \let\em\bfseries + \let\emph\textbf + \else + \ULforem + \fi +} + +% Makes the chapter heading label, putting it in the desired style. +% We need to define it here, since we need it before redefining the +% chapter commands. + +\newcommand*{\th@DoChapCenter}{\if@centerChapter\centering\fi} +\newcommand*{\th@ChapHead}[1]{ + \protect\th@ChapterStyle + \protect\th@DoChapCenter #1} + + +%%%%%%% DEFINE DOUBLE-SPACING (THE DEFAULT) AND OTHER SPACING: +\def\setspace@size{\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi} +\def\doublespacing{ \ifcase \@ptsize \relax + \def \baselinestretch {2.004}% 10pt + \or \def \baselinestretch {1.771}% 11pt + \or \def \baselinestretch {1.660}% 12pt + \fi \setspace@size} +\def\singlespacing{\def \baselinestretch {1} \setspace@size \vskip \baselineskip} +\def\setstretch#1{\renewcommand{\baselinestretch}{#1}} +\def\@setsize#1#2#3#4{\@nomath#1 + \let\@currsize#1 \baselineskip #2 + \baselineskip \baselinestretch\baselineskip + \parskip \baselinestretch\parskip + \setbox\strutbox \hbox{ \vrule height.7\baselineskip depth.3\baselineskip + width\z@} \skip\footins \baselinestretch\skip\footins + \normalbaselineskip\baselineskip#3#4} +%%%%%%%%% floats & footnotes singlespaced %%%%%%%%% +\let\latexx@xfloat=\@xfloat +\def\@xfloat #1[#2]{\latexx@xfloat #1[#2] +\def\baselinestretch{1}\@normalsize \normalsize} +\long\def\@footnotetext#1{ + \insert\footins{ + \def\baselinestretch {1} + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{ + \csname p@footnote\endcsname\@thefnmark} + \color@begingroup \@makefntext{ + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox} + \color@endgroup}} +\long\def\@mpfootnotetext#1{ + \global\setbox\@mpfootins\vbox{ + \unvbox \@mpfootins + \def\baselinestretch {1} + \reset@font\footnotesize + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{ + \csname p@mpfootnote\endcsname\@thefnmark} + \color@begingroup \@makefntext{ + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox} + \color@endgroup}} +%%%%%%%% single / double spacing %%%%%%%%% +\def\singlespace{ \vskip \baselineskip \def\baselinestretch {1} + \setspace@size \vskip -\baselineskip } +\def\endsinglespace{\par} +\def\spacing#1{ \par \begingroup \def\baselinestretch {#1} \setspace@size } +\def\endspacing{ \par \vskip \parskip \vskip \baselineskip + \endgroup \vskip -\parskip \vskip -\baselineskip } +\def\doublespace{ \ifcase \@ptsize \relax + \spacing{2.004}% 10pt + \or \spacing{1.771}% 11pt + \or \spacing{1.660}% 12pt + \fi } +\let\enddoublespace=\endspacing + + + +%%%%% SET THE OVERALL DOCUMENT PROPERTIES, such as page numbering, +% margins... Initialize several global document properties, but do so +% *before* the beginning of the document to forces these changes. +\AtBeginDocument{ + \setlength{\topmargin}{-0.30in} + \setlength{\headheight}{0.20in} + \setlength{\headsep}{0.0in} + \setlength{\topskip}{0.40in} % first line, down from page number + \setlength{\textheight}{9.10in} % 9"-(topmargin+headsep+headheight) + \setlength{\footskip}{0pt} + \setlength{\oddsidemargin}{0.00in} + \setlength{\evensidemargin}{0.00in} + \setlength{\parindent}{0.40in} % somewhere between 0.3" and 0.5" + \setlength{\textwidth}{6.50in} + \setlength{\leftmargini}{3.5em} + \setlength{\leftmarginii}{2.2em} + \setlength{\leftmarginiii}{2.2em} + \setlength{\leftmarginiv}{2.2em} + \setlength{\leftmarginv}{2.2em} + \setlength{\leftmarginvi}{2.2em} + \setlength{\leftmargin}{\leftmargini} + \setlength{\labelsep}{.5em} + \setlength{\labelwidth}{ 1.5em} + \pagenumbering{arabic} + \pagestyle{myheadings} + \markright{} + \onecolumn + \raggedbottom + \normalsize + \normalfont + \EmphReset % bold or underlined? + \doublespacing % footnotes and floats still singlespaced + \setcounter{tocdepth}{2} + \setcounter{secnumdepth}{\value{th@SecNum}} +% Redefine the bibliography command here, just in case someone +% uses a custom *.sty file that redefines bibliography command + \let\th@OldBib\thebibliography + \let\endth@OldBib\endthebibliography + \renewenvironment*{thebibliography}[1]{ + \begin{th@OldBib}{#1} + \ULforem% set \em to underline + \begin{singlespace} + \addcontentsline{toc}{part}{\bibnameToC} + }{ + \end{singlespace} + \EmphReset% set \em back to the user-specified default. + \end{th@OldBib} + } +} + +%%%%%%%%%%% ADDITIONAL STUFF: +\setcounter{tocdepth}{2} +\newcommand*{\@normalsize}{\normalsize} +\doublespacing + +% Figures and Tables +\setcounter{topnumber}{1} +\renewcommand*{\topfraction}{.4} +\setcounter{totalnumber}{2} +\renewcommand*{\textfraction}{.5} +\renewcommand*{\floatpagefraction}{.3} +\setcounter{dbltopnumber}{1} +\renewcommand*{\dbltopfraction}{.4} +\renewcommand*{\dblfloatpagefraction}{.3} +\setlength{\abovecaptionskip}{10pt} +\setlength{\belowcaptionskip}{10pt} + +% Re-define some formatting commands to produce lists, labels, +% and numberings that are more to the Grad School's liking. + +% Set up some titles on the table of contents page. +\renewcommand*{\figurename}{Figure} +\renewcommand*{\tablename}{Table} +\newcommand*{\figurenameToC}{\normalsize\th@HdFnt\figurename\normalfont} +\newcommand*{\tablenameToC}{\normalsize\th@HdFnt\tablename\normalfont} + +\if@chapterCaps + \renewcommand*{\contentsname}{\th@ChapHead{CONTENTS}} + \renewcommand*{\listfigurename}{\th@ChapHead{FIGURES}} + \renewcommand*{\listtablename}{\th@ChapHead{TABLES}} + \renewcommand*{\appendixname}{\th@ChapHead{APPENDIX}} + \renewcommand*{\bibname}{\th@ChapHead{BIBLIOGRAPHY}} + \renewcommand*{\chaptername}{\th@ChapHead{CHAPTER}} + \newcommand*{\chapternameToC}{ + \normalsize\th@HdFnt CHAPTER\normalfont} + \newcommand*{\bibnameToC}{ + \normalsize\th@HdFnt BIBLIOGRAPHY\normalfont} + \newcommand*{\appendixnameToC}{ + \normalsize\th@HdFnt APPENDIX\normalfont} +\else + \renewcommand*{\contentsname}{\th@ChapHead{Contents}} + \renewcommand*{\listfigurename}{\th@ChapHead{Figures}} + \renewcommand*{\listtablename}{\th@ChapHead{Tables}} + \renewcommand*{\appendixname}{\th@ChapHead{Appendix}} + \renewcommand*{\bibname}{\th@ChapHead{Bibliography}} + \renewcommand*{\chaptername}{\th@ChapHead{Chapter}} + \newcommand*{\chapternameToC}{ + \normalsize\th@HdFnt Chapter\normalfont} + \newcommand*{\bibnameToC}{ + \normalsize\th@HdFnt Bibliography\normalfont} + \newcommand*{\appendixnameToC}{ + \normalsize\th@HdFnt Appendix\normalfont} +\fi + +% Adds the appropriate label to the ToC/LoF/LoT + +\addtocontents{lof}{\protect\contentsline {part} + {\protect\figurenameToC}{\protect\relax}{}} +\addtocontents{lot}{\protect\contentsline {part} + {\protect\tablenameToC}{\protect\relax}{}} +\addtocontents{toc}{\protect\contentsline {part} + {\protect\chapternameToC}{\protect\relax}{}} + +% NUMBERING STYLES, DEFAULT VALUES + +% Using macros of the form \th@Def* avoids conflicts with +% LaTeX internals which use \theDef* forms... + +\newcounter{th@SecNum} +\setcounter{th@SecNum}{3} +\if@NumberStdHeadings + \@centerSectionfalse% Force this. + \newcommand*{\th@DefTheChapter}{\arabic{chapter}} + \newcommand*{\th@DefTheSection}{\th@DefTheChapter.\arabic{section}} + \newcommand*{\th@DefTheSubsection}{\th@DefTheSection.\arabic{subsection}} +\else + \@AllHeadingsfalse% Just to be safe... + \newcommand*{\th@DefTheChapter}{\Roman{chapter}} + \newcommand*{\th@DefTheSection}{\relax} + \newcommand*{\th@DefTheSubsection}{\relax} +\fi + +\if@AllHeadings + \@inlineSubSubSectionfalse% Force this... + \@numberSubSubSectiontrue% ...and this. + \newcommand*{\th@DefTheSubsubsection} + {\th@DefTheSubsection.\arabic{subsubsection}} + \newcommand*{\th@DefTheParagraph} + {\th@DefTheSubsubsection.\arabic{paragraph}} + \newcommand*{\th@DefTheSubparagraph} + {\th@DefTheParagraph.\arabic{subparagraph}} +\else + \newcommand*{\th@DefTheParagraph}{\relax} + \newcommand*{\th@DefTheSubparagraph}{\relax} + \if@numberSubSubSection + \newcommand*{\th@DefTheSubsubsection} + {\th@DefTheSubsection.\arabic{subsubsection}} + \else + \newcommand*{\th@DefTheSubsubsection}{\relax} + \fi +\fi +\renewcommand*{\thechapter}{\th@DefTheChapter} +\renewcommand*{\thesection}{\th@DefTheSection} +\renewcommand*{\thesubsection}{\th@DefTheSubsection} +\renewcommand*{\thesubsubsection}{\th@DefTheSubsubsection} +\renewcommand*{\theparagraph}{\th@DefTheParagraph} +\renewcommand*{\thesubparagraph}{\th@DefTheSubparagraph} + +% Figure, Table, and Equation numbering. +\if@PerChptrNumbering\else + \newcounter{th@SaveFigure} + \newcounter{th@SaveTable} + \newcounter{th@SaveEquation} + \renewcommand*{\thefigure}{\arabic{figure}} + \renewcommand*{\thetable}{\arabic{table}} + \renewcommand*{\theequation}{\arabic{equation}} +\fi + +% Enumerated List labels +\renewcommand*{\theenumi}{\arabic{enumi}} +\renewcommand*{\theenumii}{\alph{enumii}} +\renewcommand*{\theenumiii}{\roman{enumiii}} +\renewcommand*{\theenumiv}{\alph{enumiv}} +\renewcommand*{\labelenumi}{(\theenumi)} +\renewcommand*{\labelenumii}{(\theenumii)} +\renewcommand*{\labelenumiii}{(\theenumiii)} +\renewcommand*{\labelenumiv}{(\theenumiii.\theenumiv)} + +% Itemized list labels. +\renewcommand*{\labelitemi}{\textbullet} +\renewcommand*{\labelitemii}{\textasteriskcentered} +\renewcommand*{\labelitemiii}{\normalfont \bfseries \textendash} +\renewcommand*{\labelitemiv}{\textperiodcentered} + +% Margins for lists +\setlength{\leftmargini}{3.5em} +\setlength{\leftmarginiii}{2.2em} +\setlength{\leftmarginiv}{2.2em} +\setlength{\leftmarginv}{2.2em} +\setlength{\leftmarginvi}{2.2em} +\setlength{\leftmargin}{\leftmargini} +\setlength{\labelwidth}{1.5em} + +% Redefine certain commands and environments from report.cls. +% This is where things get messy. We rename each command we modify, +% then redefine the command using the old version as subset. + +% VERSE, QUOTATION, and QUOTE must be single-spaced. +% These rename the internal commands for the \begin{...} and +% \end{...} environment commands. +\let\th@OldVerse\verse +\let\th@OldQuotation\quotation +\let\th@OldQuote\quote +\let\endth@OldVerse\endverse +\let\endth@OldQuotation\endquotation +\let\endth@OldQuote\endquote + +% Note - the ``\begin{singlespace}'' and ``\end{singlespace}'' +% are defined in setspace.sty. + +\renewenvironment*{verse}{\begin{th@OldVerse}\begin{singlespace}} + {\end{singlespace}\end{th@OldVerse}} + +\renewenvironment*{quotation}{\begin{th@OldQuotation} \begin{singlespace}} + {\end{singlespace}\end{th@OldQuotation}} + +\renewenvironment*{quote}{\begin{th@OldQuote} \begin{singlespace}} + {\end{singlespace} \end{th@OldQuote}} + +% Theorems and Axioms: They must NOT be italicized. To do this +% robustly, I've needed to use some in-depth TeXnology. Check out a +% good LaTeX book for info on the \@namedef and \@nameuse commands. + +\let\th@OldNewtheorem\newtheorem +% Check for the calling format: \newtheorem{}[]{} +\def\newtheorem#1{ \@ifnextchar[{\th@nuthrmOM{#1}}{\th@newtheoremTwo{#1}}%] +} +% Calling format: \newtheorem{}{}[]; checks for the optional arg at the end. +\def\th@newtheoremTwo#1#2{ + \@ifnextchar[{\th@nuthrmO{#1}{#2}}{\th@nuthrm{#1}{#2}}%] +} +% Standard call. No optional args. +\def\th@nuthrm#1#2{ + \th@OldNewtheorem{th@#1}{#2} + \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} +} +% Optional arg at end. +\def\th@nuthrmO#1#2[#3]{ + \th@OldNewtheorem{th@#1}{#2}[#3] + \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} + } +% Optional arg in the middle. +\def\th@nuthrmOM#1[#2]#3{ + \th@OldNewtheorem{th@#1}[th@#2]{#3} + \th@correctTheorem{end#1}{#1}{endth@#1}{th@#1} + } +\def\th@execThrmOpt#1[#2]{ + \@nameuse{#1}[#2] \normalsize\normalfont +} +\newcommand*{\th@correctTheorem}[4]{ + \@namedef{#1}{\@nameuse{#3}} + \@namedef{#2}{\@ifnextchar[{\th@execThrmOpt{#4}}{ %%} + \@nameuse{#4} \normalsize\normalfont} + } +} + +% APPENDIX command +\newcounter{th@SectionSave} +\let\th@OldAppCmd\appendix +\renewcommand{\appendix}{ + \setcounter{th@SectionSave}{\value{section}} + \th@OldAppCmd + \if@NumberStdHeadings\else + \setcounter{section}{\value{th@SectionSave}} + \fi + \addtocontents{toc}{\protect\contentsline {part} + {\protect\appendixnameToC}{\protect\relax}{}} + \renewcommand*{\th@DefTheChapter}{\Alph{chapter}} + } + +%%%%%%%%%%%%%%% BIBLIOGRAPHY: Used to be redefined here. +% Moved to permit use of different bibliography .sty and .bst files. +% It's now in the '\AtBeginDocument' command. + +%%%%%%%%%%%%%%% SECTION HEADINGS (including several new options): +% New if-s +\newif\if@AlwaysFalse +\@AlwaysFalsefalse +\newif\if@CenterHeading +\@CenterHeadingfalse +\newif\if@UseStarCmd +\@UseStarCmdfalse + +%%%%%%%%%%%%%%% GENERAL AND SETUP COMMANDS. +% Makes a heading. +% The optional argument (#1) is a centering flag. The heading gets +% centered if it's present and set to true. +% The second arg is the style command. +% The third arg is the heading proper. +\newcommand*{\th@MakeHeading}[2]{ + \protect #1 + \if@CenterHeading\begin{center}\typeout{centered}\fi + #2 + \if@CenterHeading\end{center}\fi + } + +% Makes a heading. +% The entire thing is something of a mess. We want all ToC entries to +% be in normal text. We also want references in normal text. But, we +% want the heading numbers to appear in the correct size and font. To +% get this to happen is a chore. + +% The args are, in order: +% The command to execute (#1), +% The heading style command (#2), +% The optional arg passed to the heading command proper (#3). +% E.g. if you execute a \section[foo]{bigfoo}, #3=="foo". +% The heading text itself (#4). +% The name of the current command (#5). E.g. "chapter". +% The internal command that generates the number label (#6). + +% There are also two important flags used by this command. The first +% is \@UseStarCmd. Set this to "true" if this is the starred version +% of the command. The second flag is \@thInHeading. This gets set +% 'true' inside the section heading commands and turned off at the end +% of the command. + +\newcommand*{\th@Heading}[6]{ + \@thInHeadingtrue + % Alter the '\the...' command. + \@namedef{the#5}{\protect#2 #6} + \if@UseStarCmd + #1*{\th@MakeHeading{\protect#2}{#4}} + \else + \ifthenelse{\equal{\th@DefArg}{#3}}{ + #1[\normalsize\normalfont#4]{ + \th@MakeHeading{\protect#2}{#4}} + }{ + #1[\normalsize\normalfont#3]{ + \th@MakeHeading{\protect#2}{#4}} + } + \fi +% Reset the '\the...' command, but don't enforce +% '\normalsize\normalfont' anywhere, as this messes up +% cross-references in footnotes. + \@namedef{the#5}{#6} + \@thInHeadingfalse + \@CenterHeadingfalse + \normalsize\normalfont +} + +%%%%%%%%%%% CHAPTER HEADING: +% The chapter command definitely needs some re-defining. The primary +% purpose is to control numbering in figures, tables, and equations. + +\let\th@OldChapter\chapter +% The \@ifstar{}{} is a LaTeX tool to check the character following +% the command and see if it's a '*'. +\renewcommand*{\chapter}{\@ifstar{\th@ChapterS}{\th@Chapter}} + +% Special if-s; used internally for chapters. +\newif\if@THshortChapter +\@THshortChapterfalse + +% We define a special command for stepping the chapter counter, +% zeroing the figure, table, and equation counters only if necessary. + +\newcommand*{\th@PreChCmd}{ + \if@PerChptrNumbering + \relax + \else + \setcounter{th@SaveTable}{\value{table}} + \setcounter{th@SaveFigure}{\value{figure}} + \setcounter{th@SaveEquation}{\value{equation}} + \fi +} + +\newcommand*{\th@PostChCmd}{ + \if@THshortChapter + \typeout{Short Chapter (page numbered)} + \@THshortChapterfalse + \thispagestyle{myheadings} + \else + \thispagestyle{empty} + \fi + \if@PerChptrNumbering + \relax + \else + \setcounter{table}{\value{th@SaveTable}} + \setcounter{figure}{\value{th@SaveFigure}} + \setcounter{equation}{\value{th@SaveEquation}} + \fi + \normalsize\normalfont + \@UseStarCmdfalse +} +\if@chapterCaps + \newcommand*{\th@Chapter}[2][\th@DefArg]{ + \th@PreChCmd + \@UseStarCmdfalse + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{#1} + {\uppercase\expandafter{#2}}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } + \newcommand*{\th@ChapterS}[1]{ + \th@PreChCmd + \@UseStarCmdtrue + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{\th@DefArg} + {\uppercase\expandafter{#1}}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } +\else + \newcommand*{\th@Chapter}[2][\th@DefArg]{ + \th@PreChCmd + \@UseStarCmdfalse + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{#1} + {#2}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } + \newcommand*{\th@ChapterS}[1]{ + \th@PreChCmd + \@UseStarCmdtrue + \if@centerChapter\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldChapter}{\th@ChapterStyle}{\th@DefArg} + {#1}{chapter}{\th@DefTheChapter} + \th@PostChCmd + } +\fi + +%%%%%%%%% SECTION HEADING COMMANDS. We need to use the starred version +% and add the numbering and toc-entry ourselves. We need to do this +% for all of the subsequent heading commands. If we don't we'll get +% weird-looking ToC entries and references. + +\let\th@OldSection\section +\renewcommand*{\section}{\@ifstar{\th@SectionS}{\th@Section}} + +\newcommand*{\th@Section}[2][\th@DefArg]{ + \@UseStarCmdfalse + \if@centerSection\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldSection}{\th@SectionStyle}{#1}{#2} + {section}{\th@DefTheSection} + \normalsize\normalfont +} +\newcommand*{\th@SectionS}[1]{ + \@UseStarCmdtrue + \if@centerSection\@CenterHeadingtrue\else\@CenterHeadingfalse\fi + \th@Heading{\th@OldSection}{\th@SectionStyle}{\th@DefArg} + {#1}{section}{\th@DefTheSection} + \@UseStarCmdfalse + \normalsize\normalfont +} + +%%%%%%%%%% SUBSECTION HEADING COMMANDS. + +\let\th@OldSubSection\subsection +\renewcommand*{\subsection}{ + \@ifstar{\th@SubSectionS}{\th@SubSection} +} +\newcommand*{\th@SubSection}[2][\th@DefArg]{ + \@UseStarCmdfalse + \@CenterHeadingfalse + \th@Heading{\th@OldSubSection}{\th@SubSectionStyle} + {#1}{#2}{subsection}{\th@DefTheSubsection} + \normalsize\normalfont +} +\newcommand*{\th@SubSectionS}[1]{ + \@UseStarCmdtrue + \@CenterHeadingfalse + \th@Heading{\th@OldSubSection}{\th@SubSectionStyle} + {\th@DefArg}{#1}{subsection}{\th@DefTheSubsection} + \@UseStarCmdfalse + \normalsize\normalfont +} + +%%%%%%%%%% SUBSUBSECTION HEADING COMMANDS. No starred version permitted. +% No ToC entry. We also need to check and see if we should number +% it or not and if we should inline it or not. + +\let\th@OldSubSubSection\subsubsection +\newlength{\th@SubSubSecSpc} +\if@numberSubSubSection + \renewcommand*{\thesubsubsection}{\th@DefTheSubsubsection} + \newcommand*{\th@PreSubsubsecCmd}{\@UseStarCmdfalse} + \setcounter{th@SecNum}{4} + \setlength{\th@SubSubSecSpc}{0.5em} +\else + \renewcommand*{\thesubsubsection}{\relax} + \newcommand*{\th@PreSubsubsecCmd}{\@UseStarCmdtrue} + \setlength{\th@SubSubSecSpc}{0em} +\fi + +\newif\if@shutoffSSSect +\@shutoffSSSectfalse + +\if@inlineSubSubSection +\renewcommand*{\subsubsection}[2][\th@DefArg]{ + \refstepcounter{subsubsection} + \vspace{4\parsep} + \underline{% + \@thInHeadingtrue\th@OtherSecHeadStyles% + \thesubsubsection\hspace{\th@SubSubSecSpc}#2}\hspace{2mm} + \ignorespaces\normalsize\normalfont + } +\else +\renewcommand*{\subsubsection}[2][\th@DefArg]{ + \th@PreSubsubsecCmd + \@CenterHeadingfalse + \th@Heading{\th@OldSubSubSection}{\th@OtherSecHeadStyles} + {\th@DefArg}{#2}{subsubsection}{\th@DefTheSubsubsection} + \@UseStarCmdfalse\normalsize\normalfont + } +\fi + +% We don't need to do much for paragraph and subparagraph. We won't +% even define a *-version or permit entries in the ToC. +\if@AllHeadings + \let\th@OldParagraph\paragraph + \renewcommand*{\paragraph}[2][\th@DefArg]{ + \@UseStarCmdfalse + \@CenterHeadingfalse + \th@Heading{\th@OldParagraph} + {\@thInHeadingtrue\th@OtherSecHeadStyles} + {\th@DefArg}{\underline{#2}}{paragraph} + {\hspace*{\parindent}\th@DefTheParagraph} + \@UseStarCmdfalse + \@namedef{theparagraph}{\th@DefTheParagraph + \protect\normalsize\protect\normalfont} + \normalsize\normalfont + } + \let\th@OldSubParagraph\subparagraph + \renewcommand*{\subparagraph}[2][\th@DefArg]{ + \@UseStarCmdfalse + \@CenterHeadingfalse + \th@Heading{\th@OldSubParagraph} + {\@thInHeadingtrue\th@OtherSecHeadStyles} + {\th@DefArg}{\underline{#2}}{subparagraph} + {\th@DefTheSubparagraph} + \@UseStarCmdfalse + \@namedef{thesubparagraph}{\th@DefTheSubparagraph + \protect\normalsize\protect\normalfont} + \normalsize\normalfont + } + \setcounter{th@SecNum}{5} +\else + \renewcommand*{\paragraph}[2][\th@DefArg]{ + {\normalfont\normalsize\bfseries #2}\hspace*{0.89em}} + \renewcommand*{\subparagraph}[2][\th@DefArg]{ + {\normalfont\normalsize\bfseries #2}\hspace*{0.89em}} +\fi + + +%%%%%%%%%% COMMANDS CHANGED FOR THIS CLASS +%%%%%% Unavailable commands +\renewcommand*{\theindex}{\ClassWarning{thesis} + {Indexing not available in this class.}} +\renewcommand*{\twocolumn}{\ClassWarning{thesis} + {Twocolumn not available in this class.}} +\renewcommand*{\thepart}{\ClassWarning{thesis} + {``thepart'' not available in this class.}} +\renewcommand*{\part}{\ClassWarning{thesis} + {``thepart'' not available in this class.}} +%%%%%% New commands +% This forces a page number on the first page of a chapter, etc. +\newcommand*{\forcepageno}{\thispagestyle{myheadings}} +\newcommand*{\OnePageChapter}{\forcepageno} + + +%%%%%%%%%%% THESIS PROLOGUE PAGES: +% Stores the second arg in the command specified by the first arg. +\newcommand{\th@StoreIn}[2]{ \gdef#1{#2} } +% Default values of storage variables. Emits an error message. +% This part of the class is long... +\newcommand*{\th@title}{ + \ClassError{thesis}{ + You must specify a title!} + {Use the \protect\title{} command in the preamble.} +} +\newcommand*{\th@fwdname}{ + \ClassError{thesis}{ + You must specify your name!} + {Use the \protect\author{}{} command in the \MessageBreak + preamble. The first arg is your first name and \MessageBreak + middle initial. The second arg is your last name.} +} +\newcommand*{\th@revname}{ + \ClassError{thesis}{ + You must specify your name!} + {Use the \protect\author{}{} command in the \MessageBreak + preamble. The first arg is your first name and \MessageBreak + middle initial. The second arg is your last name.} +} +\newcommand*{\th@deptname}{ + \ClassError{thesis}{ + You must specify the name of the department \MessageBreak + granting your degree and what type of \MessageBreak + organization it is within the University.} + {Use the \protect\dept{}{} command in the \MessageBreak + preamble. The second arg is the name of the \MessageBreak + department. The first arg is the department's \MessageBreak + official designation, e.g. 'College of', \MessageBreak + 'Department of', 'School of', etc.} +} +\newcommand*{\th@deptorg}{ + \ClassError{thesis}{ + You must specify the name of the department \MessageBreak + granting your degree and what type of \MessageBreak + organization it is within the University.} + {Use the \protect\dept{}{} command in the \MessageBreak + preamble. The second arg is the name of the \MessageBreak + department. The first arg is the department's \MessageBreak + official designation, e.g. 'College of', \MessageBreak + 'Department of', 'School of', etc.} +} +\newcommand*{\th@advisor}{ + \ClassError{thesis}{ + You must specify your research advisor's name \MessageBreak + and full title.} + {Use the \protect\advisor{}{} command in the \MessageBreak + preamble. The first arg is your advisor's \MessageBreak + full title. The second arg is your advisor's \MessageBreak + name.} +} +\newcommand*{\th@advisortitle}{ + \ClassError{thesis}{ + You must specify your research advisor's name \MessageBreak + and full title.} + {Use the \protect\advisor{}{} command in the \MessageBreak + preamble. The first arg is your advisor's \MessageBreak + full title. The second arg is your advisor's \MessageBreak + name.} +} +\newcommand*{\th@reader}{ + \ClassError{thesis}{ + You must specify the name of the other \MessageBreak + committee member who will be signing your \MessageBreak + thesis.} + {Use the \protect\reader{} command in the preamble.} +} +\newcommand*{\th@readerThree}{none} % optional +\newcommand*{\th@readerFour}{none} % optional +\newcommand*{\th@readerFive}{none} % optional +\newcommand*{\th@readerSix}{none} % optional +\newcommand*{\th@IRBprotocol}{none} % optional +\newcommand*{\th@fulldegree}{ + \ClassError{thesis}{ + You must specify the type of degree you are \MessageBreak + receiving.} + {Use the \protect\degree{}{} command in the \MessageBreak + preamble. The first arg is the unabbreviated \MessageBreak + name of the degree itself, e.g. \MessageBreak + 'Doctor of Philosophy'. The second arg is the \MessageBreak + degree abbreviation followed by the subject, e.g.\MessageBreak + 'Ph. D., Biology'.} +} +\newcommand*{\th@degree}{ + \ClassError{thesis}{ + You must specify the type of degree you are \MessageBreak + receiving.} + {Use the \protect\degree{}{} command in the \MessageBreak + preamble. The first arg is the unabbreviated \MessageBreak + name of the degree itself, e.g. \MessageBreak + 'Doctor of Philosophy'. The second arg is the \MessageBreak + degree abbreviation followed by the subject, \MessageBreak + e.g. 'Ph. D., Biology'.} +} +\newcommand{\th@otherdegrees}{ + \ClassError{thesis}{ + You must specify other degrees you hold!} + {Use the \protect\otherdegrees{} command in the \MessageBreak + preamble. Break each line using the \protect\\ \MessageBreak + command.} +} +\newcommand{\th@abstractStash}{ + \ClassError{thesis}{ + You must specify an abstract!} + {Use the \protect\abstractpage[]{} command in the \MessageBreak + preamble. If your abstract runs over a page, \MessageBreak + use the optional argument with the word 'long'.} +} +\newcommand*{\th@degreeyear}{\number\the\year} +\newcommand*{\th@signature}[1]{ \begin{center} + \normalsize + \vspace*{16mm} % works well? + \vrule width 80mm height 0.2mm\\ + #1 \end{center} +} +\newcommand*{\th@dateline}{ + \vspace*{9mm} + \begin{flushright} + Date~{\vrule width 35mm height 0.2mm} + \end{flushright} +} +\newcommand{\th@AbstractPageStyle}{\relax} +\newcommand{\th@dedicationStash}{\relax} +\newcommand{\th@dedicationTitleStash}{\relax} +\newcommand{\th@acknowledgementsStash}{\relax} +\newif\if@shortLoF +\newif\if@shortLoT +\newif\if@shortToC +\newif\if@makenoLoF +\newif\if@makenoLoT +\newif\if@makeDedication +\newif\if@makeAcknowledgements +\newif\if@makePrologue +\@shortLoFfalse +\@shortLoTfalse +\@shortToCfalse +\@makenoLoFfalse +\@makenoLoTfalse +\@makeDedicationfalse +\@makeAcknowledgementsfalse +\@makeProloguetrue + +% The base commands that make all of the prologue pages. +\newcommand*{\th@Titlepage}{ + \thispagestyle{empty} + \@thInHeadingtrue + \null\vfill + \begin{list}{}{\setlength{\leftmargin}{0.8in} + \setlength{\rightmargin}{0.8in}\sloppy} + \centering\item[] + {\th@ChapterStyle + \if@chapterCaps + \uppercase\expandafter{\th@title}\\ + \else + \th@title\\ + \fi} + by\\ + {\th@OtherSecHeadStyles + \if@chapterCaps + \uppercase\expandafter{\th@fwdname}\\ + \else + \th@fwdname\\ + \fi} + \th@otherdegrees\\ + \end{list} + \vfill + \begin{center} + A thesis submitted to the\\ + Faculty of the Graduate School of the\\ + University of Colorado in partial fulfillment\\ + of the requirements for the degree of\\ + \th@fulldegree\\ + \th@deptorg\ \th@deptname\\ + \ \th@degreeyear \\ + \end{center} + \begin{flushright} + \vfill + % List committee members on title page + Committee Members:\\ + \th@advisor, Chair\\ % REQUIRED + \th@reader\\ % REQUIRED + \ifthenelse{\equal{\th@readerThree}{none}}{\relax} + {\th@readerThree\\} % optional + \ifthenelse{\equal{\th@readerFour}{none}}{\relax} + {\th@readerFour\\} % optional + \ifthenelse{\equal{\th@readerFive}{none}}{\relax} + {\th@readerFive\\} % optional + \ifthenelse{\equal{\th@readerSix}{none}}{\relax} + {\th@readerSix\\} % optional + \end{flushright} + \@thInHeadingfalse + \vfill +} +\newcommand*{\th@Approvalpage}{ + \singlespacing + \clearpage + \thispagestyle{empty} + \vspace*{\fill} + \begin{center} + This thesis entitled:\\ + \th@title\\ + written by\ + \th@fwdname\\ + has been approved for the\ + \th@deptorg\ + \th@deptname + \end{center} + \vspace*{1mm} + \th@signature{\th@advisortitle\ \th@advisor} + \th@signature{\th@reader} % REQUIRED. + \ifthenelse{\equal{\th@readerThree}{none}}{\relax} + {\th@signature{\th@readerThree}} % optional + \ifthenelse{\equal{\th@readerFour}{none}}{\relax} + {\th@signature{\th@readerFour}} % optional + \ifthenelse{\equal{\th@readerFive}{none}}{\relax} + {\th@signature{\th@readerFive}} % optional + \ifthenelse{\equal{\th@readerSix}{none}}{\relax} + {\th@signature{\th@readerSix}} % optional + \th@dateline + \vspace*{\fill} + \begin{center} + The final copy of this thesis has been examined by + the signatories, and we find that both the content + and the form meet acceptable presentation standards + of scholarly work in the above mentioned discipline. + \ifthenelse{\equal{\th@IRBprotocol}{none}}{\relax} + {\par\vspace*{7mm}IRB protocol \#{\th@IRBprotocol}} + \end{center} + \vspace*{\fill} +} +\newcommand{\th@Abstractpage}{ + \clearpage + \th@AbstractPageStyle + \doublespacing % 1998 revision of Grad School Specs + \begin{list}{}{\setlength{\leftmargin}{2em} + \setlength{\itemindent}{-2em} + \setlength{\topsep}{0pt} + \setlength{\itemsep}{0pt}} + \item \th@revname\ (\th@degree) + \item \th@title + \item Thesis directed by \th@advisortitle\ \th@advisor + \end{list} + \par + \vspace*{4\parsep} + \th@abstractStash % finally, the actual abstract +} +\newcommand{\th@Dedicationpage}{ + \if@makeDedication + \clearpage + \thispagestyle{empty} + \ifthenelse{\equal{\th@DefArg}{\th@dedicationTitleStash} + }{\vfill}{\chapter*{\th@dedicationTitleStash}} + \th@dedicationStash + \ifthenelse{\equal{\th@DefArg}{\th@dedicationTitleStash} + }{\vfill}{\relax} + \fi +} +\newcommand{\th@Acknowledgementpage}{ + \if@makeAcknowledgements + \clearpage + \chapter*{Acknowledgements} + {\doublespacing + \th@acknowledgementsStash} + \fi +} + +\newcommand{\th@ToCpage}{ + \@THshortChapterfalse + \if@shortToC + \@THshortChaptertrue + \typeout{Making Short ToC...} + \fi + \@thInHeadingfalse + {\doublespacing + \tableofcontents} +} + +\newcommand{\th@LoTpage}{ + \@THshortChapterfalse + \if@makenoLoT + \typeout{Skipping LoT...} + \else + \if@shortLoT + \@THshortChaptertrue + \typeout{Making Short LoT...} + \fi + {\doublespacing + \listoftables} + \fi +} + +\newcommand{\th@LoFpage}{ + \@THshortChapterfalse + \if@makenoLoF + \typeout{Skipping LoF...} + \else + \if@shortLoF + \@THshortChaptertrue + \typeout{Making Short LoF...} + \fi + {\doublespacing + \listoffigures} + \fi +} + + +% This performs the actual generation of the prologue +\newcounter{th@storepage} +\newcommand{\th@MakeThesisPrologue}{ + \if@makePrologue + \pagenumbering{roman} + \typeout{Making Title Page} + \th@Titlepage + % Note: Approval Page is no longer required. + % \typeout{Making Approval Page} + % \th@Approvalpage + \typeout{Making Abstract Page} + \th@Abstractpage + \typeout{Making Dedication Page} + \th@Dedicationpage + \typeout{Making Acknowledgement Page} + \th@Acknowledgementpage + \setcounter{th@storepage}{\value{page}} + \typeout{Making ToC Page} + \th@ToCpage + \typeout{Making LoT Page} + \th@LoTpage + \typeout{Making LoF Page} + \th@LoFpage + \fi +} + + +% Make the generator-command the very first command of the document. +\let\th@OldBeginDocument\document +\renewcommand*{\document}{ + \th@OldBeginDocument + \th@MakeThesisPrologue + \typeout{} + \typeout{} + \typeout{-------------------Beginning Body----------------------} + \typeout{} + \typeout{} + \doublespacing + \clearpage + \pagenumbering{arabic} + \@THshortChapterfalse +} + +%%%%%%%%% USER COMMANDS FOR CONTROLLING THE PROLOGUE: +\renewcommand*{\title}[1]{\th@StoreIn{\th@title}{#1}} +\newcommand*{\reader}[1]{\th@StoreIn{\th@reader}{#1}} +\newcommand*{\readerThree}[1]{\th@StoreIn{\th@readerThree}{#1}} +\newcommand*{\readerFour}[1]{\th@StoreIn{\th@readerFour}{#1}} +\newcommand*{\readerFive}[1]{\th@StoreIn{\th@readerFive}{#1}} +\newcommand*{\readerSix}[1]{\th@StoreIn{\th@readerSix}{#1}} +\newcommand*{\IRBprotocol}[1]{\th@StoreIn{\th@IRBprotocol}{#1}} +\newcommand*{\degreeyear}[1]{\th@StoreIn{\th@degreeyear}{#1}} +\newcommand{\otherdegrees}[1]{\th@StoreIn{\th@otherdegrees}{#1}} +\newcommand{\acknowledgements}[1]{ + \@makeAcknowledgementstrue + \th@StoreIn{\th@acknowledgementsStash}{#1} +} +\newcommand{\dedication}[2][\th@DefArg]{ + \@makeDedicationtrue + \th@StoreIn{\th@dedicationTitleStash}{#1} + \th@StoreIn{\th@dedicationStash}{#2} +} +\renewcommand*{\author}[2]{ + \th@StoreIn{\th@fwdname}{#1 #2} + \th@StoreIn{\th@revname}{#2, #1} +} +\newcommand*{\degree}[2]{ + \th@StoreIn{\th@fulldegree}{#1} + \th@StoreIn{\th@degree}{#2} +} +\newcommand*{\advisor}[2]{ + \th@StoreIn{\th@advisor}{#2} + \th@StoreIn{\th@advisortitle}{#1} +} +\newcommand*{\dept}[2]{ + \th@StoreIn{\th@deptorg}{#1} + \th@StoreIn{\th@deptname}{#2} +} +\renewcommand{\abstract}[2][long]{ + \ifthenelse{\equal{#1}{short}}{\relax}{ + \th@StoreIn{\th@AbstractPageStyle}{\thispagestyle{empty}} + } + \th@StoreIn{\th@abstractStash}{#2} +} +\newcommand*{\SuspendPrologue}{ + \@makeProloguefalse + \typeout{No prologue pages printed.} +} +\newcommand*{\emptyLoF}{ + \@makenoLoFtrue + \typeout{No LoF printed} +} +\newcommand*{\emptyLoT}{ + \@makenoLoTtrue + \typeout{No LoT printed} +} +\newcommand*{\ToCisShort}{ + \@shortToCtrue + \typeout{Putting page number on short ToC} +} +\newcommand*{\LoFisShort}{ + \@shortLoFtrue + \typeout{Putting page number on short LoF} +} +\newcommand*{\LoTisShort}{ + \@shortLoTtrue + \typeout{Putting page number on short LoT} +} +\endinput +%%%%%%%%%%%%%%%% End of file ``thesis.cls'' diff --git a/LaTeX/thesis.tex b/LaTeX/thesis.tex index dc82104..14ba177 100644 --- a/LaTeX/thesis.tex +++ b/LaTeX/thesis.tex @@ -1,141 +1,49 @@ -\documentclass{article} +\documentclass[defaultstyle,11pt]{LaTeX/thesis} \usepackage{graphicx} -\usepackage{mathtools} -\usepackage{geometry} -\usepackage{setspace} -\usepackage{changepage} -\usepackage{fontspec} -\usepackage{titlesec} -\usepackage{unicode-math} +\usepackage{amssymb} +\usepackage{hyperref} +\usepackage{amsmath} -% \setmainfont{Adamina} -% \setmainfont{Alegreya} -\setmainfont[Scale=1.1]{Average} -\setmathfont[Scale=1.1]{Fira Math} +\title{Designing Optimal Low-Thrust Interplanetary Trajectories Utilizing Monotonic Basin Hopping} +\author{Richard C.}{Johnstone} +\otherdegrees{B.S., Unviersity of Kentucky, Mechanical Engineering, 2016 \\ + B.S., University of Kentucky, Physics, 2016} +\degree{Master of Science}{M.S., Aerospace Engineering} +\dept{Department of}{Aerospace Engineering} +\advisor{Prof.}{Natasha Bosanac} +\reader{TBD: Kathryn Davis} +\readerThree{TBD: Daniel Scheeres} -\newcommand{\sectionbreak}{\clearpage} +\abstract{ \OnePageChapter + There are a variety of approaches to finding and optimizing low-thrust trajectories in + interplanetary space. This thesis analyzes one such approach, Sims-Flanagan transcriptions, and + its applications in a multiple-shooting non-linear solver for the purpose of finding valid + low-thrust trajectory arcs between planets given poor initial conditions. These valid arcs are + then fed into a Monotonic Basin Hopping (MBH) algorithm, which combines these arcs in order to + find and optimize interplanetary trajectories, given a set of flyby planets. This allows for a + fairly rapid searching of a very large solution space of low-thrust profiles via a medium + fidelity inner-loop solver and a well-suited optimization routine. The trajectories found by + this method can then be optimized further by feeding the solutions back, once again, into the + non-linear solver, this time allowing the solver to perform optimization. +} -\titleformat{\section} - {\bfseries\fontspec{Roboto}\LARGE} - {\thesection} - {0.5em} - {} -\titleformat{\subsection} - {\fontspec{Roboto}\Large} - {\thesubsection} - {0.5em} - {} -\titleformat{\subsubsection} - {\fontspec{Roboto}\large} - {\thesubsubsection} - {0.5em} - {} +\dedication[Dedication]{ + Dedicated to some people. +} -\newcommand{\thesisTitle}{Designing Optimal Low-Thrust Interplanetary Trajectories Utilizing -Monotonic Basin Hopping} +\acknowledgements{ \OnePageChapter + This will be an acknowledgement. +} -\geometry{left=1in, right=1in, top=1in, bottom=1in} -\setstretch{2.5} +\LoFisShort +\emptyLoT \begin{document} - \title{\thesisTitle} - \author{Richard Connor Johnstone \\ - B.S., University of Kentucky, 2016} + \input LaTeX/macros.tex - \maketitle - - \vspace{3.5in} - - \begin{adjustwidth}{100pt}{100pt} - \begin{center} - A thesis submitted to the Faculty of the Graduate School of the University of Colorado in - partial fulfillment of the requirements for the degree of Master of Science Department of - Aerospace Engineering Sciences \\ 2022 - \end{center} - \end{adjustwidth} - - \newpage - - This will be the copyright page. - - \newpage - - \begin{center} - This thesis entitled: - - \thesisTitle - - has been approved for the Department of Aerospace Engineering Sciences - - \end{center} - - \centerline{\begin{minipage}{4in} - \begin{center} - - \vspace{1.5in} - \hrule - Dr. Natasha Bosanac - - \vspace{1.5in} - \hrule - Dr. Daniel J. Scheeres - - \vspace{1.5in} - \hrule - Dr. Kathryn Davis - - \vspace{1.5in} - - \end{center} - \end{minipage}} - - \hspace{4.25in} Date: \hrulefill - - The final copy of this thesis has been examined by the signatories, and we find that both the - content and the form meet acceptable presentation standards of scholarly work in the above - mentioned discipline. - - \newpage - - %TODO: This should be better - Dedicated to some people. - - \newpage - - Richard Connor Johnstone - - \thesisTitle - - %TODO: Don't directly copy Bryce's formatting - Thesis directed by Dr. Natasha Bosanac - - %TODO: This is just a quick abstract for now. Rewrite more towards the end. - \begin{abstract} - - There are a variety of approaches to finding and optimizing low-thrust trajectories in - interplanetary space. This thesis analyzes one such approach, Sims-Flanagan transcriptions, and - its applications in a multiple-shooting non-linear solver for the purpose of finding valid - low-thrust trajectory arcs between planets given poor initial conditions. These valid arcs are - then fed into a Monotonic Basin Hopping (MBH) algorithm, which combines these arcs in order to - find and optimize interplanetary trajectories, given a set of flyby planets. This allows for a - fairly rapid searching of a very large solution space of low-thrust profiles via a medium - fidelity inner-loop solver and a well-suited optimization routine. The trajectories found by - this method can then be optimized further by feeding the solutions back, once again, into the - non-linear solver, this time allowing the solver to perform optimization. - - \end{abstract} - - \newpage - - \tableofcontents - - \listoffigures - - \newpage - - \section{Introduction} + \chapter{Introduction} Continuous low-thrust arcs utilizing technologies such as Ion propulsion, Hall thrusters, and others can be a powerful tool in the design of interplanetary space missions. They tend to be @@ -179,7 +87,7 @@ Monotonic Basin Hopping} developed for this paper. Finally, section \ref{results} will explore the results of some hypothetical missions to Saturn. - \section{Trajectory Optimization} \label{traj_opt} + \chapter{Trajectory Optimization} \label{traj_opt} Trajectory optimization is concerned with a narrow problem (namely, optimizing a spaceflight trajectory to an end state) with a wide range of possible techniques, approaches, and even @@ -188,7 +96,7 @@ Monotonic Basin Hopping} solving for states in that system, then exploring approaches to Non-Linear Problem (NLP) solving in general and how they apply to spaceflight trajectories. - \subsection{The Two-Body Problem} + \section{The Two-Body Problem} The motion of a spacecraft in space is governed by a large number of forces. When planning and designing a spacecraft trajectory, we often want to use the most complete (and often complex) model of these forces that is available. However, in the process of designing these @@ -233,7 +141,7 @@ Monotonic Basin Hopping} Where $\mu = G m_1$ is the specific gravitational parameter for our primary body of interest. - \subsubsection{Kepler's Laws and Equations} + \subsection{Kepler's Laws and Equations} % TODO: Can I segue better from 2BP to Keplerian geometry? @@ -260,7 +168,7 @@ Monotonic Basin Hopping} \pi \sqrt{\frac{a^3}{\mu}}$ where $T$ is the period and $a$ is the semi-major axis. \end{enumerate} - \subsection{Analytical Solutions to Kepler's Equations} + \section{Analytical Solutions to Kepler's Equations} Kepler was able to produce an equation to represent the angular displacement of an orbiting body around a primary body as a function of time, which we'll derive now for the elliptical @@ -333,7 +241,7 @@ Monotonic Basin Hopping} ($E$) which can be related to spacecraft position, and time, but we still need a useful algorithm for solving this equation. - \subsubsection{LaGuerre-Conway Algorithm}\label{laguerre} + \subsection{LaGuerre-Conway Algorithm}\label{laguerre} For this application, I used an algorithm known as the LaGuerre-Conway algorithm, which was presented in 1986 as a faster algorithm for directly solving Kepler's equation and has been in use in many applications since. This algorithm is known for its convergence robustness @@ -342,7 +250,7 @@ Monotonic Basin Hopping} This thesis will omit a step-through of the algorithm itself, but the code will be present in the Appendix. - \subsection{Non-Linear Problem Optimization} + \section{Non-Linear Problem Optimization} Now we can consider the formulation of the problem in a more useful way. For instance, given a desired final state in position and velocity we can relatively easily determine the initial @@ -375,7 +283,7 @@ Monotonic Basin Hopping} system dynamics adds too much complexity to quickly optimize indirectly and the individual optimization routines needed to proceed as quickly as possible. - \subsubsection{Non-Linear Solvers} + \subsection{Non-Linear Solvers} For these types of non-linear, constrained problems, a number of tools have been developed that act as frameworks for applying a large number of different algorithms. This allows for simple testing of many different algorithms to find what works best for the nuances of the @@ -400,7 +308,7 @@ Monotonic Basin Hopping} libraries that port these are quite modular in the sense that multiple algorithms can be tested without changing much source code. - \subsubsection{Linesearch Method} + \subsection{Linesearch Method} As mentioned above, this project utilized IPOPT which leveraged an Interior Point Linesearch method. A linesearch algorithm is one which attempts to find the optimum of a non-linear problem by first taking an initial guess $x_k$. The algorithm then determines a step @@ -414,7 +322,7 @@ Monotonic Basin Hopping} was sufficient merely that the non-linear constraints were met, therefore optimization (in the particular step in which IPOPT was used) was unnecessary. - \section{Low-Thrust Considerations} \label{low_thrust} + \chapter{Low-Thrust Considerations} \label{low_thrust} Thus far, the techniques that have been discussed can be equally useful for both impulsive and continuous thrust mission profiles. In this section, we'll discuss the intricacies of continuous @@ -423,7 +331,7 @@ Monotonic Basin Hopping} trajectory as well as introduce the concept of a control law and the notation used in this thesis for modelling low-thrust trajectories more simply. - \subsection{Low-Thrust Control Laws} + \section{Low-Thrust Control Laws} In determining a low-thrust arc, a number of variables must be accounted for and, ideally, optimized. @@ -448,7 +356,7 @@ Monotonic Basin Hopping} however, the control law must be continuous rather than discrete and therefore the control law inherently gains a lot of complexity. - \subsection{Sims-Flanagan Transcription} + \section{Sims-Flanagan Transcription} The major problem with optimizing low thrust paths is that the control law must necessarily be continuous. Also, since indirect optimization approaches are quite difficult, the problem must @@ -470,7 +378,7 @@ Monotonic Basin Hopping} number of sub-arcs, one can rapidly approach a fidelity equal to a continuous low-thrust trajectory within the Two-Body Problem, with only linearly-increasing computation time. - \section{Interplanetary Trajectory Considerations} \label{interplanetary} + \chapter{Interplanetary Trajectory Considerations} \label{interplanetary} The question of interplanetary travel opens up a host of additional new complexities. While optimizations for simple single-body trajectories are far from simple, it can at least be @@ -488,7 +396,7 @@ Monotonic Basin Hopping} technique for utilizing the gravitational energy of a planet to modify the direction of solar velocity. - \subsection{Patched Conics} + \section{Patched Conics} The first hurdle to deal with is the problem of reconciling the Two-Body problem with the presence of multiple and varying planetary bodies. The most common method for @@ -504,7 +412,7 @@ Monotonic Basin Hopping} a series of orbits defined by the Two-Body problem (conics), patched together by distinct transition points. - \subsection{Gravity Assist Maneuvers} + \section{Gravity Assist Maneuvers} As previously mentioned, there are methods for utilizing the orbital energy of the other planets in the Solar System. This is achieved via a technique known as a Gravity Assist, @@ -529,7 +437,7 @@ Monotonic Basin Hopping} turning angle of this bend. In doing so, one can effectively achieve a (restricted) free impulsive thrust event. - \subsection{Multiple Gravity Assist Techniques} + \section{Multiple Gravity Assist Techniques} Naturally, therefore, one would want to utilize these gravity flybys to reduce the fuel cost to arrive at their destination target state. However, these flyby maneuvers are @@ -574,31 +482,31 @@ Monotonic Basin Hopping} of optimizing both flyby selection and thrust profiles, porkchop plots are less helpful, and an algorithmic approach is preferred. - % \section{Genetic Algorithms} + % \chapter{Genetic Algorithms} % I will probably give only a brief overview of genetic algorithms here. I don't personally know % that much about them. Then in the following subsections I can discuss the parts that are % relevant to the specific algorithm that I'm using. - % \subsection{Decision Vectors} + % \section{Decision Vectors} % Discuss what a decision vector is in the context of an optimization problem. - % \subsection{Selection and Fitness Evaluation} + % \section{Selection and Fitness Evaluation} % Discuss the costing being used as well as the different types of fitness evaluation that are % common. Also discuss the concept of generations and ``survival''. - % \subsubsection{Tournament Selection} + % \subsection{Tournament Selection} % Dive deeper into the specific selection algorithm being used here. - % \subsection{Crossover} + % \section{Crossover} % Discuss the concept of crossover and procreation in a genetic algorithm. - % \subsubsection{Binary Crossover} + % \subsection{Binary Crossover} % Discuss specific crossover algorithm used here. - % \subsubsection{Mutation} + % \subsection{Mutation} % Discuss both the necessity for mutation and the mutation algorithm being used. - \section{Algorithm Overview} \label{algorithm} + \chapter{Algorithm Overview} \label{algorithm} In this section, we will review the actual execution of the algorithm developed. As an overview, the routine was developed to enable the determination of an optimized spacecraft @@ -629,77 +537,127 @@ Monotonic Basin Hopping} algorithm is used to traverse the search space and more carefully optimize the solutions found by the inner loop. - \subsection{Trajectory Composition} - Discuss briefly the nomenclature used in defining these trajectories. Currently this isn't - ``baked in'' to the code, so I have some freedom to adopt Englander's notation or use my own - (since my intended use case is a little simpler). + \section{Trajectory Composition} - \subsection{Inner Loop Implementation} - Give a better overview of the inner loop specifically. Probably this section will have a more - in-depth flowchart. + In this thesis, a specific nomenclature will be adopted to define the stages of an + interplanetary mission in order to standardize the discussion about which aspects of the + software affect which phases of the mission. - \subsubsection{LaGuerre-Conway Kepler Solver} + Overall, a mission is considered to be the entire overall trajectory. In the context of + this software procedure, a mission is taken to always begin at the Earth, with some + initial launch C3 intended to be provided by an external launch vehicle. This C3 is not + fully specified by the mission designer, but instead is optimized as a part of the + overall cost function (and normalized by a designer-specified maximum allowable value). + + This overall mission can then be broken down into a variable number of ``phases'' + defined as beginning at one planetary body with some excess hyperbolic velocity and + ending at another. The first phase of the mission is from the Earth to the first flyby + planet. The final phase is from the last flyby planet to the planet of interest. + + Each of these phases are then connected by a flyby event at the boundary. Each flyby + event must satisfy the following conditions: + + \begin{enumerate} + \item The planet at the end of one phase must match the planet at the beginning of + the next phase. + \item The magnitude of the excess hyperbolic velocity coming into the planet (at the + end of the previous phase) must equal the magnitude of the excess hyperbolic + velocity leaving the planet (at the beginning of the next phase). + \item The flyby ``turning angle'' must be such that the craft maintains a safe + minimum altitude above the surface or atmosphere of the flyby planet. + \end{enumerate} + + These conditions then effectively stitch the separate mission phases into a single + coherent mission, allowing for the optimization of both individual phases and the entire + mission as a whole. This nomenclature is similar to the nomenclature adopted by Jacob + Englander in his Hybrid Optimal Control Problem paper, but does not allow for missions + with multiple targets, simplifying the optimization. + + \section{Inner Loop Implementation} + + The optimization routine can be reasonable separated into two separate ``loops'' wherein + the first loop is used, given an initial guess, to find valid trajectories within the + region of the initial guess and submit the best. The outer loop is then used to traverse + the search space and supply the initial loop with a number of well chosen initial + guesses. + + Figure~\ref{nlp} provides an overview of the process of breaking a mission guess down + into an NLP, but there are essentially three primary routines involved in the inner + loop. A given state is propagated forward using the LaGuerre-Conway Kepler solution + algorithm, which itself is used to generate powered trajectory arcs via the + Sims-Flanagan transcribed propagator. Finally, these powered arcs are connected via a + multiple-shooting non-linear optimization problem. The trajectories describing each + phase complete one ``Mission Guess'' which is fed to the non-linear solver to generate + one valid trajectory within the vicinity of the original Mission Guess. + + \begin{figure} + \centering + \includegraphics[width=\textwidth]{LaTeX/flowcharts/nlp} + \caption{A flowchart of the Non-Linear Problem Solving Formulation} + \label{nlp} + \end{figure} + + \subsection{LaGuerre-Conway Kepler Solver} Discuss how the LaGuerre-Conway algorithm is used in the code to provide a fundamental ``natural trajectory'' between two quantized, but not necessarily close points. Mention validation. - \subsubsection{Sims-Flanagan Propagator} + \subsection{Sims-Flanagan Propagator} Discuss how this algorithm can then be expanded by using SFT to propagate any number of low-thrust steps over a specific arc. Mention validation. Here I can also mention the ``Sc'' object and talk about how those parameters were chosen and effected the propagator. - \subsubsection{Non-Linear Problem Solver} + \subsection{Non-Linear Problem Solver} Mention the package being used to solve NLPs and how it works, highlighting the trust region method used and error-handling. Mention validation. - \subsubsection{Monotonic Basin Hopping} + \section{Outer Loop Implementation} + Overview the outer loop. This may require a final flowchart, but might potentially be too + simple to lend itself to one. + + \subsection{Inner Loop Calling Function} + The primary reason for including this section is to discuss the error handling. + + \subsection{Monotonic Basin Hopping} Outline the MBH algorithm, going into detail at each step. Mention the long-tailed PDF being used and go into quite a bit of detail. Englander's paper on the MBH algorithm specifically should be a good guide. Mention validation. - \subsection{Outer Loop Implementation} - Overview the outer loop. This may require a final flowchart, but might potentially be too - simple to lend itself to one. - - \subsubsection{Inner Loop Calling Function} - The primary reason for including this section is to discuss the error handling. - - \subsubsection{Genetic Algorithm Description} - Similar to the MBH section, there are a lot of implementation details to go over here. Many - will have already been discussed in the background sections above. But I can step through - each of the decisions, similar to Englander's paper on this. - - \section{Results Analysis} \label{results} + \chapter{Results Analysis} \label{results} Simply highlight that the algorithm was tested on a sample trajectory to Saturn. - \subsection{Sample Trajectory to Saturn} + \section{Sample Trajectory to Saturn} Give an overview of the trajectory that was ultimately chosen. - \subsubsection{Comparison to Less Optimal Solutions} + \subsection{Comparison to Less Optimal Solutions} I should have a number of elite but less-optimal solutions. Honestly, I may write the algorithm to keep all of the solutions to provide many points of comparison here. - \subsubsection{Cost Function Analysis} + \subsection{Cost Function Analysis} Give some real-world context for the mass-use, time-of-flight, etc. - \subsubsection{Comparison to Impulsive Trajectories} + \subsection{Comparison to Impulsive Trajectories} I may also remove this section. I could do a quick comparison (using porkchop plots) to similar impulsive trajectories. Honestly, this is a lot of work for very little gain, though, so probably the first place to chop if needed. - \section{Conclusion} \label{conclusion} - \subsection{Overview of Results} + \chapter{Conclusion} \label{conclusion} + \section{Overview of Results} Quick re-wording of the previous section in a paragraph or two for reader's convenience. - \subsection{Applications of Algorithm} + \section{Applications of Algorithm} Talk a bit about why this work is valuable. Missions that could have benefited, missions that this enables, etc. - \subsection{Recommendations for Future Work} + \section{Recommendations for Future Work} Recommend future work, obviously. There are a \emph{ton} of opportunities for improvement including parallelization, cluster computing, etc. - % \bibliography{biblio}{} - % \bibliographystyle{plain} + \bibliographystyle{plain} % or "siam", or "alpha", etc. + \nocite{*} % list all refs in database, cited or not + \bibliography{LaTeX/refs} % Bib database in "refs.bib" + + \appendix + % \input appendixA.tex \end{document} diff --git a/archive/EVMS_2021-12-14T01:43:41.263/mission b/archive/EVMS_2021-12-14T01:43:41.263/mission new file mode 100644 index 0000000..1327bf3 --- /dev/null +++ b/archive/EVMS_2021-12-14T01:43:41.263/mission @@ -0,0 +1,36 @@ +/home/connor/projects/thesis/archive/EVMS_2021-12-14T01:43:41.263/mission--------------------------- + +Spacecraft: mySat + dry_mass: 200.0 kg + specific impulse: 3200.0 kg/s + max_thrust: 0.00025 kN + num_thrusters: 1 + duty_cycle: 1.0 +Launch Mass: 3500.0 kg +Launch Date: 2023-05-20T09:06:35.288 +Launch V∞: [-1.8438889475809765, 6.120059172103301, -0.7981747861634966] km/s +Phase 1: + Planet: Venus + V∞_in: [-2.56509812262509, 8.726298030365955, 1.2653783448963722] km/s + V∞_out: [3.933875520715713, 8.182318027927845, 1.3797206772984685] km/s + time of flight: 6.3150638478290446e7 seconds + arrival date: 2025-05-20T06:57:13.288 + thrust profile: [-0.1673002601441919 -0.26883139314945603 -0.004056802930588146; -0.23150973398793398 -0.5422926057887579 -0.01424916584017891; 0.5216279513936498 -0.7201035092402946 -0.05026572450882597; 0.7619564949501179 -0.017659100038672788 -0.050798263624736634; 0.5942837250609073 0.5263617574161898 -0.0070195713227723154; 0.3410765842139262 0.41102934542119196 0.0003621379767194054; 0.23648394719297353 0.14198690462048363 -0.009581961375511473; 0.0056202015516126 -0.32693032741518907 -0.010162609157081665; -0.026379909967065362 -0.5874916310490459 -0.021494316985701284; 0.693629555909135 -0.61456318000757 -0.054644453501477036; 0.6749160281202036 0.3944492779701146 -0.021084849056050275; 0.4403512073946586 0.404989286932993 -0.0014708947868851455; 0.3219167787670785 0.1274096536884702 -0.008385265303928385; 0.27124921840307187 -0.19763134120286302 -0.014529551099335972; 0.08063379563374638 -0.44308484663335224 -0.017300342160510865; 0.5868779992877718 -0.6080198456071109 -0.04284179805368043; 0.6638767318711757 0.23800863124179605 -0.023418413571253783; 0.44792722794577955 0.3189162484584814 -0.0034061188086769605; 0.3654940275210002 -0.01822248382616463 -0.011103744313695233; 0.3671390691769647 -0.1877557855665406 -0.017972667398621946] % +Phase 2: + Planet: Mars + V∞_in: [3.740909417528976, 4.969698645681673, -0.1836371554650627] km/s + V∞_out: [1.6805078934236426, 5.988466382534255, 0.2011389183183449] km/s + time of flight: 9.967373816267239e7 seconds + arrival date: 2028-07-16T22:06:11.288 + thrust profile: [0.2889046493274145 0.35172813894699617 0.005750881627058749; -0.2891211816810922 0.2856217397496342 -0.01070529954797825; -0.4076909207469804 -0.04788044763953207 -0.020561543485485726; -0.37899315325138216 -0.30969571658846323 -0.020466381356948952; -0.27651505042097296 -0.43501262129876456 -0.018271754879646666; -0.03992270374633847 -0.4908301495597925 -0.014401728962937026; 0.28778598754683493 -0.4545602376768821 -0.0064508479743784625; 0.46150433893131715 -0.1880814631199537 0.0021626109204597446; 0.2788204255677078 0.360854942969168 0.006831262006997803; -0.2566515872209155 0.32209934564164727 -0.007836893916662625; -0.4100446444003415 0.054443015280224105 -0.01751477422173226; -0.41902900656224723 -0.23975107675376675 -0.019442357179398642; -0.3644374200145407 -0.4010601518340647 -0.01891998107003531; -0.23193420972805218 -0.48910794102085664 -0.01726021542869752; 0.04132505041766476 -0.5223896099070574 -0.013713715632566187; 0.3300017630006415 -0.4784824951035753 -0.008331679149800309; 0.48040380368063845 -0.26935494128032167 -0.0016253936871342854; 0.4263256047487922 0.26594823500945197 0.005887216845594874; 0.028855636881693788 0.40742654653958477 0.004203409756847152; -0.30902036281985135 0.2999387343974258 -0.004381705457322128] % +Phase 3: + Planet: Saturn + V∞_in: [-1.2399121705505638, 6.956855519313853, -0.5166911303842717] km/s + V∞_out: [-0.00013639678575079212, 0.00045388258983991705, 0.00010352289927939363] km/s + time of flight: 2.156567539242905e8 seconds + arrival date: 2035-05-17T22:45:24.288 + thrust profile: [-0.5883389325549248 0.34393534356111716 -0.04223302913356034; -0.5094157452497227 -0.32578128865408745 -0.0418290876544073; -0.2837278960528077 -0.5200051898159135 -0.015714467863770183; 0.234663577149613 -0.5778749576697557 0.007285867554073748; 0.5269009945794882 -0.5533424499427229 0.029448586498405305; 0.6588494889448501 -0.42596433225988556 0.03990667436449693; 0.7104940582670465 0.09976028717408182 0.04288674512400733; 0.6731412653152242 0.5520777962943062 0.03383456434541915; 0.5144161575829512 0.6548774334195933 0.016436082603795563; 0.18808395700108824 0.6460817168459387 -0.006174956813691272; -0.08944132984324173 0.5852109928553235 -0.02412032985192145; -0.1777044504999653 0.5026107885439219 -0.0332038631526247; -0.18602955062431278 0.4183028818306649 -0.035496117853459554; -0.16885700381769508 0.33802299933222757 -0.033691289488692565; -0.14420336819801963 0.2608351709154188 -0.029504852011938868; -0.11794830800737324 0.1841852103036704 -0.02391639449132369; -0.09183314607853647 0.1059536639685903 -0.017483392600732773; -0.06633021176691514 0.02374701364948183 -0.010504070567046215; -0.035138504389099774 -0.06203575677661479 -0.0031448184775343894; -0.004807991844724756 -0.13909256410647852 0.004015212913470968] % + +Mass Used: 1533.705930555565 kg +Launch C3: 41.49213371032417 km²/s² +||V∞_in||: 7.085350424044305 km/s diff --git a/archive/EVMS_2021-12-14T01:43:41.263/plot.html b/archive/EVMS_2021-12-14T01:43:41.263/plot.html new file mode 100644 index 0000000..2f97cba --- /dev/null +++ b/archive/EVMS_2021-12-14T01:43:41.263/plot.html @@ -0,0 +1,30 @@ + +
+ + + + + + + diff --git a/archive/EVMS_2021-12-14T07:13:59.762/mission b/archive/EVMS_2021-12-14T07:13:59.762/mission new file mode 100644 index 0000000..5f58ed8 --- /dev/null +++ b/archive/EVMS_2021-12-14T07:13:59.762/mission @@ -0,0 +1,36 @@ +/home/connor/projects/thesis/archive/EVMS_2021-12-14T07:13:59.762/mission--------------------------- + +Spacecraft: mySat + dry_mass: 200.0 kg + specific impulse: 3200.0 kg/s + max_thrust: 0.00025 kN + num_thrusters: 1 + duty_cycle: 1.0 +Launch Mass: 3500.0 kg +Launch Date: 2023-02-16T05:05:32.419 +Launch V∞: [3.453247666372975, 3.054378572063566, 0.6410592621774811] km/s +Phase 1: + Planet: Venus + V∞_in: [4.153079961936853, 5.459670821339341, 1.7440959409843952] km/s + V∞_out: [6.710988704381646, 0.6372991451166926, 2.1574305475746165] km/s + time of flight: 6.880360130276513e7 seconds + arrival date: 2025-04-22T13:12:13.419 + thrust profile: [-0.16468330421268426 0.2189329295052185 -0.010873373523340836; -0.37786012024771315 0.20083778181188183 -0.006424325713147286; -0.5363839840515389 -0.21650601709151382 0.008355901825288066; -0.1834968949564447 -0.5561458893436484 0.022693080099818807; 0.25056844492648533 -0.3743357803658322 0.01765926371738561; 0.1740788365495075 -0.23152478296259496 0.027396199892226875; -0.2272240445300924 -0.12216723581853697 0.0019073418117069496; -0.30400700667720765 0.03385256284712383 -0.0074809413195897415; -0.4432437436533131 -0.12491757205634534 0.001436858833454895; -0.25527810292667125 -0.47170642997472956 0.01723278603053477; 0.10898711472363787 -0.35128780086659317 0.02104164145167786; -0.12804417889558464 -0.30272123758944086 0.0327809201214705; -0.18015320445436095 -0.3135806255343057 0.013653240243077786; -0.2094636680250507 -0.23126228233960147 -0.011785210455459378; -0.33027685949511737 -0.16914499178629147 -0.004386004892518824; -0.20190263120461807 -0.36731341845462673 0.011628082895590211; -0.1902112001660596 -0.2648905855353262 0.025952835297502176; -0.31508347575033296 -0.29163705829609193 0.023397543761390662; -0.20963477326342633 -0.39341238177599347 0.016402862738082804; 0.002812966706787112 -0.3622400996934989 -0.0021344748372502283] % +Phase 2: + Planet: Mars + V∞_in: [7.040278950309005, -0.7501648907703503, -1.1912371523753373] km/s + V∞_out: [6.888311168909946, 1.6990426218863528, -1.100876807493356] km/s + time of flight: 9.342629092297508e7 seconds + arrival date: 2028-04-07T20:57:03.419 + thrust profile: [0.356740070161183 0.09173310552676897 0.016574996568492047; 0.19378678269157593 0.4003618878297842 0.0381127321481018; -0.14928159447866768 0.4268446644300027 0.0715397377621758; -0.36113057153024997 0.33270767280174496 0.0696644041484723; -0.40841967844319355 0.20314247070355662 0.06584645395451007; -0.3961511181475026 0.051309814044093315 0.0613267572370165; -0.26862361927193956 0.025846072419724607 -0.008417903267850992; -0.13635376645426722 -0.285269600012018 -0.08480671134086627; 0.48172274225702855 0.03908288821073942 -0.05302198385151616; 0.29736513890266103 0.49380435392567307 0.005932551117785213; -0.1985367964283465 0.530870057786597 0.0443930796666557; -0.42331702745207156 0.43958981624872456 0.059782969970213436; -0.5008191025029283 0.2545821318245874 0.06513111946463424; -0.5090995507101782 -0.08132366596204624 0.05557971290084116; -0.4365235221818152 -0.3526326460862695 0.02944186352246856; -0.2428244049915453 -0.47913502242306927 -0.001429975852898112; 0.2965174674673905 -0.4998400318898462 -0.025394379226107915; 0.5581409602767857 -0.2670720924249945 -0.039037417950486986; 0.5404240598856603 0.4588278322563326 -0.025739054026010875; 0.26481365444928556 0.5889586368264279 0.004310453551953653] % +Phase 3: + Planet: Saturn + V∞_in: [-1.768248852275849, 8.741237951612776, -0.10565185114199886] km/s + V∞_out: [-0.5689195906105274, -1.1835291484022944e-5, -0.00015076538393807672] km/s + time of flight: 2.0647184294271883e8 seconds + arrival date: 2034-10-23T14:14:25.419 + thrust profile: [-0.4118350568502539 0.7397165160046664 0.03650850663151651; -0.5341616982673818 0.5894274810704492 0.048162894586397755; -0.4755846337249282 0.43205141226513055 0.041845478429139625; -0.39146679855903316 0.2793885116422214 0.02666641123567999; -0.29760210470836107 0.10001617063364038 0.005246077036260758; -0.12498798746952003 -0.08547038452801747 -0.03186649737115955; 0.6012927333188255 -0.45651427473844913 -0.006324492609029606; 0.7279077782996053 -0.47845321826514736 -0.032106373666422404; 0.7991128821218656 -0.008283851491542838 -0.07299734954029101; 0.7175587921889662 0.7765717901964799 -0.0800061252435837; 0.3713835047173401 0.773068311463042 -0.038433384532840224; -0.22213951903671245 0.7320154781062939 -6.0672070416028177e-5; -0.3604362859233379 0.6654377220105319 0.014630889316898951; -0.36946080731663716 0.5882623820858978 0.019090223705502275; -0.34750278679765795 0.49839847471976123 0.019927901000876793; -0.31336540870223417 0.3875868492542638 0.019145167045154086; -0.275163205347443 0.2458793980758599 0.017720554190660976; -0.22860840531216062 0.04253129834335439 0.015609619947715278; -0.1634843649420853 -0.13471729070541885 0.012551273723230135; -0.0964949439134174 -0.2770815913878259 0.009813568018480465] % + +Mass Used: 1584.5276313627078 kg +Launch C3: 21.665104884415 km²/s² +||V∞_in||: 8.918918501922759 km/s diff --git a/archive/EVMS_2021-12-14T07:13:59.762/plot.html b/archive/EVMS_2021-12-14T07:13:59.762/plot.html new file mode 100644 index 0000000..f0d5885 --- /dev/null +++ b/archive/EVMS_2021-12-14T07:13:59.762/plot.html @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/archive/EVMS_2021-12-14T16:31:21.927/mission b/archive/EVMS_2021-12-14T16:31:21.927/mission new file mode 100644 index 0000000..69ef059 --- /dev/null +++ b/archive/EVMS_2021-12-14T16:31:21.927/mission @@ -0,0 +1,36 @@ +/home/connor/projects/thesis/archive/EVMS_2021-12-14T16:31:21.927/mission--------------------------- + +Spacecraft: mySat + dry_mass: 200.0 kg + specific impulse: 3200.0 kg/s + max_thrust: 0.00025 kN + num_thrusters: 1 + duty_cycle: 1.0 +Launch Mass: 3500.0 kg +Launch Date: 2023-07-04T03:26:06.312 +Launch V∞: [1.0595449194495574, -5.179046997413335, -0.710854272622436] km/s +Phase 1: + Planet: Venus + V∞_in: [0.7167821480418011, -5.3523238156588455, 1.2976343649115025] km/s + V∞_out: [4.57208952781187, -2.763307224201735, 1.5182287145267939] km/s + time of flight: 5.770490213360378e7 seconds + arrival date: 2025-05-02T00:34:28.312 + thrust profile: [-0.012518442262623266 -0.2846133058802652 0.036714163181811914; 0.04598892978893719 -0.4496628555421884 0.050821562545283167; 0.23858170610390916 -0.5534890194603386 0.053378611889742245; 0.45971698047001736 -0.6075384006689931 0.049225674552565796; 0.6103599468173085 -0.5939492998556735 0.02390794631734322; 0.48631512404956767 -0.5016073617028688 -0.0035970332832769504; 0.7205092838499264 -0.06817749918391544 -0.030568869866240404; 0.6554236549877296 0.43397088287936925 -0.04092445445978924; 0.4426214422172243 0.5233653736000612 -0.04291086849556375; 0.1265987354418195 0.37111271167996557 -0.04211705533923255; 0.14291026132925347 0.10951608658101342 -0.03253146989706353; 0.043819468335856315 -0.2760884262553685 0.027757067112302112; 0.12296287504557858 -0.4824942105922541 0.039565941973149145; 0.34178968176729657 -0.5570754798887297 0.042557000779956305; 0.525918072341391 -0.5414835388569836 0.028260866562936558; 0.6470594344300419 -0.5105003019983401 0.0030006706220706667; 0.5771986338738871 -0.2149560721661336 -0.021449899364102736; 0.6724367414193944 0.3342772748116172 -0.034581763000182654; 0.4545022153210568 0.4845067333568687 -0.03498154387686175; 0.15460631758712481 0.30947276279006714 -0.034528617189168165] % +Phase 2: + Planet: Mars + V∞_in: [6.053679269318452, -2.70754196571206, -0.561868816241759] km/s + V∞_out: [6.62831028724014, -0.0335448848261144, -0.598213998623492] km/s + time of flight: 9.066465712235557e7 seconds + arrival date: 2028-03-16T09:12:05.312 + thrust profile: [-0.14077705817283215 0.17219038983580243 0.0010673207963448805; -0.09076911485954396 0.3656127875299659 0.07959031496882961; -0.22901583771408088 0.3398208518705999 0.1109715317716953; -0.32670071352071345 0.2280441403604959 0.1147286298393803; -0.628253671808909 0.07416681520769915 0.07809920940474491; -0.3363546214364444 -0.0738216870465495 0.051587092016739784; -0.22220741723836346 -0.1904607293157175 -0.008841671167926259; -0.032348160495606626 -0.20217939877808486 -0.09753767695663382; 0.29315934163115015 0.09200142472327252 -0.05343148185045425; 0.24059656978259783 0.37859909374997347 0.022698241631866987; -0.0271078201127222 0.4659834877302928 0.08034951421535458; -0.3164477633221403 0.42340838072348136 0.106820004124928; -0.4327826247755731 0.29532199369082585 0.10616547737632574; -0.46971892563271284 0.07217513538995383 0.07291051527360017; -0.4205532859364489 -0.17888301219299818 0.049620946374109944; -0.31397875164405536 -0.3499883855343491 -0.01722453765780476; 0.055748170553023536 -0.4155273836848591 -0.05564285735614245; 0.4306072283821911 -0.1907071754065535 -0.06468622506578485; 0.46309518107140285 0.3221076719593664 -0.026634119992690917; 0.2485211129542623 0.5082032846330088 0.04664261897154823] % +Phase 3: + Planet: Saturn + V∞_in: [-0.15931607365900702, 6.659982567616171, -0.7147859007662032] km/s + V∞_out: [-0.03141285197558282, 0.00666134026526007, -5.85929449610048] km/s + time of flight: 2.264417121463342e8 seconds + arrival date: 2035-05-20T05:40:37.312 + thrust profile: [-0.3528081960729175 0.5957253626842559 -0.04112855090660253; -0.4498696875407646 0.3599016941813443 -0.008926830351384682; -0.4296518057984319 -0.20738905197149196 0.009333332557682678; -0.14954953849570887 -0.3435796518536134 0.035875098563252904; 0.39678430953935184 -0.5168745604329268 0.02935112983491381; 0.571454084996011 -0.46813508275649046 0.012118057152003993; 0.7040073430650443 0.38813276418344744 -0.0015818210549435883; 0.6929710132849697 0.6613684228669995 0.041556415408789134; 0.47766142600053263 0.7290623000841082 0.057207252732303655; -0.20126978731123335 0.6865609825371612 0.04700537721488603; -0.1726478786848928 0.5473873161459025 0.033978777160795566; -0.23702248937731904 0.5103684148600998 0.011996785197593873; -0.25066827594702035 0.42611462142301987 -0.006783200240873317; -0.19809970132181848 0.42158636663551524 -0.01768186691013301; -0.1581469693984499 0.3721724862460802 -0.026688684037946272; -0.11314582650191973 0.3541426305930295 -0.030452326114901382; -0.08143085687847508 0.2759935128733878 -0.043735992358310494; -0.025930504510641876 0.18682783519552412 -0.06228985999553243; -0.01540965514296248 0.09256748216309786 -0.0716228215794782; 0.0639416491137141 -0.15066247627007892 -0.10320894780723987] % + +Mass Used: 1536.9108057812873 kg +Launch C3: 28.450477034653016 km²/s² +||V∞_in||: 6.700124498560573 km/s diff --git a/archive/EVMS_2021-12-14T16:31:21.927/plot.html b/archive/EVMS_2021-12-14T16:31:21.927/plot.html new file mode 100644 index 0000000..6e8540f --- /dev/null +++ b/archive/EVMS_2021-12-14T16:31:21.927/plot.html @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/archive/EVVJS b/archive/EVVJS new file mode 100644 index 0000000..1950ecb --- /dev/null +++ b/archive/EVVJS @@ -0,0 +1,43 @@ +archive/EVVJS--------------------------- + +Spacecraft: mySat + dry_mass: 200.0 kg + specific impulse: 3200.0 kg/s + max_thrust: 0.00025 kN + num_thrusters: 1 + duty_cycle: 1.0 +Launch Mass: 3500.0 kg +Launch Date: 2023-05-08T02:15:41.742 +Launch V∞: [-2.6705377464328075, 1.81220401477148, -5.02986389717478] km/s +Phase 1: + Planet: Venus + V∞_in: [-2.6649059053371618, 1.1318437761748215, 5.5271509852418275] km/s + V∞_out: [1.5500163131788576, 3.701161902600424, 4.7781830264083816] km/s + time of flight: 1.2506637578161152e7 seconds + arrival date: 2023-09-29T20:19:38.742 + thrust profile: [0.0037642309356178496 0.10817195619205817 -0.04203391806942476; 0.05018542722531452 0.011132758502156382 -0.0707574733140089; 0.01498586447762501 0.05712165647482545 -0.10331663549941099; -0.0021220081754707142 0.0427284404881686 -0.10738096661568876; 0.013851176936053975 0.06635540579133767 -0.11531028068050167; -0.03624664271973954 0.047411452014984014 -0.11058601864180033; -0.0020740631910354575 -4.710072118612996e-6 -0.1403320235583719; 0.004134084837005339 0.057833143727503075 -0.148726306245634; -0.000824882662939474 0.025545600899810554 -0.15811601473591735; 0.0033733625666936226 0.04310334955731879 -0.16265530338633763; 0.023284082987077983 0.07815514642145437 -0.14787129186662162; 0.011438920106420706 0.06298800208929839 -0.17089396585927522; -0.0028167264681480965 0.07221556852886035 -0.1682949193772566; 0.023003412445979414 0.07615232250394104 -0.12486622266414714; 0.05055936441931101 0.05061773551323538 -0.15558369926288854; 0.046376273514580145 0.05443645190395452 -0.15984218654287824; 0.02887318678938868 0.050242274973224 -0.11451690883278194; 0.05903220624034955 0.07663020899986919 -0.08872470614243323; 0.05646442157593271 0.0236833115162622 -0.12328998635670442; 0.052708769586655 0.04647341445165668 -0.08471778910840236] % +Phase 2: + Planet: Venus + V∞_in: [5.03318023152429, 6.280182305174015, -6.060996943876664] km/s + V∞_out: [8.771878835411606, 1.7271436802598803, -4.64552460331829] km/s + time of flight: 1.2805978832351272e8 seconds + arrival date: 2027-10-21T00:29:26.742 + thrust profile: [0.5166054641522004 0.38040574934818894 0.39483837842584535; 0.4828952263457908 -0.47829862312158744 0.40557553493743564; 0.6185006656113567 -0.4295308551988002 -0.3475134331936448; 0.4770039152011964 0.5271154524060135 -0.20000575030699538; 0.5412450144942943 -0.20886043145622096 0.43938036856081814; 0.5276789680667877 -0.5277616228639487 0.13628061369394617; 0.6415309466397165 -0.2678331791426979 -0.39558929497740725; 0.4343573860170071 0.502582921064376 -0.3318784701248486; 0.5800947529139152 -0.20204579937793274 0.3774150731579229; 0.5354834813587176 -0.4173102990305924 0.3796235568137587; 0.6184505220409655 -0.4417968378543587 -0.34238794209436774; 0.5080341201037585 0.5014345398019467 -0.33763169791467246; 0.5877098153802596 0.14114025736151312 0.3238083516450284; 0.5805187604081549 0.03982949798901487 0.38515870224511417; 0.5643130843803069 -0.5179163072176047 -0.19901273562840677; 0.618939895817285 0.389447844276657 -0.39925503596953016; 0.5411273409128876 0.3226806107049277 -0.37714997177083703; 0.6071744258656793 0.2911843912661802 0.28415164075125104; 0.5573265691088601 0.17823434208894331 0.4018394191685452; 0.5666337146024757 -0.5288498735192672 0.03819884543376086] % +Phase 3: + Planet: Jupiter + V∞_in: [0.7405450398567593, -7.5098445542472945, -2.40833325065344] km/s + V∞_out: [-3.959320578944167, 5.7458190962386, -3.749068046202953] km/s + time of flight: 1.421097770757432e8 seconds + arrival date: 2032-04-21T19:25:43.742 + thrust profile: [0.6668749885535331 0.7119439515000974 -0.47217742545747104; -0.6469564667143733 0.7765188128496617 0.1574004795502485; -0.773633525867842 0.7394373999282712 0.4027317982639249; -0.8166053790607609 0.6473990001925622 0.5207562510569261; -0.8373014340476008 0.18359240688570228 0.5993895358042353; -0.8390303451637329 -0.42462892361099186 0.6142766346586279; -0.8350359388066501 -0.6239649730883396 0.6256719643517975; -0.821756634573213 -0.7144142912083659 0.6297147364166188; -0.7958608968982823 -0.7601769494789784 0.6210466135863127; -0.7510364885805915 -0.7850808235066821 0.5966784108754225; -0.6657999775087994 -0.7894095061990805 0.5609708009540707; -0.5101942765778178 -0.7782021262749327 0.5141768423449582; -0.27236357899533525 -0.7487127433927561 0.4618021651904532; -0.054244989960793334 -0.6945361755047911 0.4108890323914806; 0.025980362043212305 -0.6152046918846878 0.35533971599792835; 0.03884979852161373 -0.5000474202661694 0.3091329458166366; 0.0001114281549689611 -0.3447827035482281 0.256908008578505; -0.045624236967968704 -0.10554833156388801 0.20144441453096268; -0.09710696728868398 0.19152555422247225 0.1087766532370442; -0.1282579442088115 0.39646864777852725 0.009236041193641553] % +Phase 4: + Planet: Saturn + V∞_in: [-4.741234768251964, 4.13190320501828, -0.5695428106723406] km/s + V∞_out: [-3.1515712454769806e-6, 5.189115178770385e-6, -1.6627213931492873e-7] km/s + time of flight: 1.8121908456931648e8 seconds + arrival date: 2038-01-18T06:03:47.742 + thrust profile: [0.13625040297481736 0.14933905804631312 0.2757743121789037; 0.1192604239518539 0.14450577052892158 0.21001652823369818; 0.09497180738630677 0.1436206134610816 0.1304125477411028; 0.05660650818705413 0.14397646798764285 0.029638921674881153; 0.0033026815164827928 0.128393265450669 -0.08364054831257349; -0.046298739509475266 0.09498117676572271 -0.17204312101516736; -0.07826400300811034 0.05748675105859162 -0.23458089715837857; -0.0898822681455277 0.026068150966949772 -0.27381493027410114; -0.08817956687074757 0.003963795201985765 -0.29324311165103717; -0.08006421778460109 -0.010427589988313526 -0.297505213206217; -0.06850428258195482 -0.019821792080172117 -0.2909679340025451; -0.055774010972997286 -0.02726836207051607 -0.2762869825770171; -0.04157864032693081 -0.03339735152686053 -0.25548472609696515; -0.02660891319542901 -0.03894896063483435 -0.22960782433619792; -0.010643007042148598 -0.04490858196263294 -0.19956755059053796; 0.00580413466562435 -0.05025272650756578 -0.16582165226689483; 0.022646438724084665 -0.055672928642956324 -0.12919013606158447; 0.03956702474738428 -0.06069755736325737 -0.09167033305435902; 0.0569563523141951 -0.06556824149960896 -0.053646667488796825; 0.07561851012706877 -0.0723267563955561 -0.016753115096183893] % + +Mass Used: 2137.3878774591703 kg +Launch C3: 35.71538607037856 km²/s² +||V∞_in||: 6.31476921482568 km/s diff --git a/archive/EVVJS.html b/archive/EVVJS.html new file mode 100644 index 0000000..52689e1 --- /dev/null +++ b/archive/EVVJS.html @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/archive/EVVJS_2021-12-18T17:53:58.867/mission b/archive/EVVJS_2021-12-18T17:53:58.867/mission new file mode 100644 index 0000000..8503005 --- /dev/null +++ b/archive/EVVJS_2021-12-18T17:53:58.867/mission @@ -0,0 +1,43 @@ +/home/connor/projects/thesis/archive/EVVJS_2021-12-18T17:53:58.867/mission--------------------------- + +Spacecraft: mySat + dry_mass: 200.0 kg + specific impulse: 3200.0 kg/s + max_thrust: 0.00025 kN + num_thrusters: 1 + duty_cycle: 1.0 +Launch Mass: 3500.0 kg +Launch Date: 2024-06-24T03:41:10.468 +Launch V∞: [-2.5086977090763227, -5.909009701214558, -3.6145624632193294] km/s +Phase 1: + Planet: Venus + V∞_in: [-8.641740181450986, -2.7358765971708188, 5.979083178622357] km/s + V∞_out: [-8.782585218349974, -2.7633891948741853, 5.757128066064576] km/s + time of flight: 1.3058425505068028e8 seconds + arrival date: 2028-08-13T13:05:25.468 + thrust profile: [-0.7066166088184461 0.694440248124216 0.7479354980537709; -0.6327447429640423 -0.8354350485844262 0.7834527345864157; 0.9020568747016394 0.8877052626244303 -0.6463263227561554; -0.7301431150683071 0.6609966418814177 -0.7438889151598259; 0.730852451440183 -0.7320972842184537 0.7604738505723868; 0.7972709043563252 0.721855932933707 0.7718028396811908; -0.8037412340829777 0.8087516989811351 -0.7172943955497878; 0.7648238186384819 0.6552635836307407 -0.721155847669259; 0.7291150156338002 0.748678684325491 0.7866560258556328; -0.7570680522417093 0.7690073045139784 -0.6461755325555683; -0.6468702385091074 -0.8148737116229223 -0.7704229798858344; -0.4993264506198249 0.7454968352904051 0.7338556974594883; 0.7368764981991002 -0.6117948959055127 0.8068497932656402; -0.7962857723296427 0.7491959753561124 -0.654565239742625; -0.7127612827380243 0.6906152690232072 -0.77926816829975; -0.6834549942628344 -0.7126511442816399 0.7270169479529096; 0.6623991589464917 -0.6788349696325189 0.817241726963756; 0.7045461026526441 0.6832122117875238 -0.6923017984092904; -0.7118848172229095 0.6940290158932474 -0.7555659392711116; -0.6684106313303576 -0.695492267513801 0.7927961883463502] % +Phase 2: + Planet: Venus + V∞_in: [-7.955987785349071, -1.7429230646850489, 7.048560055803307] km/s + V∞_out: [-8.38468808776243, 4.638807911180807, 4.920220822386981] km/s + time of flight: 3.903384248532212e7 seconds + arrival date: 2029-11-08T07:49:27.468 + thrust profile: [0.35184470451251054 -0.3489438480396312 0.22003829255796042; 0.5775112094730798 0.3466350775731712 0.10768869846318309; 0.5151690947404881 0.6922646119099484 -0.2079306947550997; 0.03820729926768738 0.7645099364102405 -0.003934023466790116; -0.5310966588437559 0.6960577720418427 -0.2806379441488921; -0.4888319757324884 0.6421514470556614 -0.3174191597815846; -0.34372723910767994 0.6560895563596227 -0.16929444361647178; -0.3645888618705135 0.634917562387229 0.1666892583656993; -0.3850511801341504 0.7324174772643002 0.5376102954603407; -0.6275951088762817 0.7623544346482719 0.6418628750791122; -0.7919929569477481 0.5902287990856233 0.45549206134198506; -0.793859142829226 -0.27621743364089885 -0.03426934297306585; -0.6072979328607674 -0.6138362647581398 -0.4816955133844994; 0.13432682697115447 -0.5431982957931105 -0.6262239404967714; 0.5688082709851283 -0.21021884608354516 -0.5260160342268195; 0.6818162423845489 0.5160256516002725 -0.4092906774489981; 0.7130018091756617 0.7341633847919329 -0.15724287718021424; 0.6616897627009751 0.8195554298912001 0.3135759308050811; 0.1872587594296505 0.8726717894768014 0.6224150121537937; -0.6414995880519144 0.8901062055995407 0.7300574454135067] % +Phase 3: + Planet: Jupiter + V∞_in: [3.616389218491424, -5.528555297073314, 2.6454669550732093] km/s + V∞_out: [-4.714476188428925, 3.7327085648268112, 3.805565087766136] km/s + time of flight: 1.0083979624306786e8 seconds + arrival date: 2033-01-18T10:52:43.468 + thrust profile: [-0.9659103696906655 0.9517515910607882 0.8168373781737548; -0.9561283643434136 -0.8761699655545768 -0.1939995320784213; -0.9275867912262411 -0.9136864536027992 -0.4060037610832777; -0.8853757072400111 -0.9132743466476493 -0.3994899790867979; -0.8271257223116684 -0.9063668321809316 -0.341644963512146; -0.7251990654980359 -0.8962396229655277 -0.2630714822249463; 0.18838507258195641 -0.8860877807707359 -0.15307132464698348; 0.6622301460691353 -0.8684657561454765 0.07422800726056446; 0.6152410169116248 -0.8481784036097828 0.2658920782241131; 0.6215425470318906 -0.8230726802555173 0.32667501700810464; 0.6389070189564778 -0.7921065374330535 0.34021110523295184; 0.6318769085000678 -0.7547402247270236 0.3362004802720032; 0.616705490069356 -0.708911815572844 0.32003622824074046; 0.5945544151167129 -0.6524425628293116 0.29334179519703246; 0.5663787104667805 -0.5830242242373314 0.2574479200400718; 0.5347064309525714 -0.49844216424182536 0.2142037683145213; 0.4986839302662462 -0.39909400732377337 0.16566817479325446; 0.45286850381956695 -0.28918436173239803 0.1141785086594864; 0.37710967383789334 -0.1678572767236383 0.06149121277195424; 0.25394438978570527 0.02043569238203405 0.009191155783547409] % +Phase 4: + Planet: Saturn + V∞_in: [-3.2880012796332987, 2.1211606572569277, 0.48142650562617806] km/s + V∞_out: [-8.731880472477191e-6, 9.666612310001054e-6, -6.225039409550941e-7] km/s + time of flight: 2.1161982067082927e8 seconds + arrival date: 2039-10-03T18:09:43.468 + thrust profile: [0.022423037123395814 0.08059850157352823 -0.1327356604236625; 0.01554844506706407 0.07575167965809157 -0.08215431382545887; 0.004436644366473565 0.0665844137373235 -0.028828351796870644; -0.008131707121939417 0.055075456865770506 0.017731675612583327; -0.02018941938325407 0.045096951581116415 0.06687637224142223; -0.02543873854159729 0.02905260962667718 0.11099986430188423; -0.022683647304998084 0.014600108269522964 0.14240131923790691; -0.01635725372584873 0.005199870254546869 0.1603574566237192; -0.009646680596205824 -0.0005145097922692435 0.16718880257957977; -0.0034057298966922184 -0.0044319774679023915 0.16564089244298724; 0.0024575970566733775 -0.007624658692633722 0.15799198592156033; 0.008185905684027191 -0.010539011665542544 0.14597553943022623; 0.013987314799160704 -0.013330717852839631 0.13093216092661572; 0.020037882876062143 -0.01605336859123858 0.11391525190686709; 0.02646489450515348 -0.018721137962794496 0.09575475738764945; 0.033373123348953045 -0.021357123294403972 0.07717404261022846; 0.04100633524272448 -0.02409647883011826 0.05884172751529372; 0.04996375895080879 -0.02726627285470597 0.041127114982092414; 0.061081932228138576 -0.031206207742307278 0.02360571733260185; 0.07466681359328371 -0.03585261547468276 0.005215821732814806] % + +Mass Used: 2591.3951917643953 kg +Launch C3: 54.27502164508673 km²/s² +||V∞_in||: 3.9423402223912998 km/s diff --git a/archive/EVVJS_2021-12-18T17:53:58.867/plot.html b/archive/EVVJS_2021-12-18T17:53:58.867/plot.html new file mode 100644 index 0000000..fcb8673 --- /dev/null +++ b/archive/EVVJS_2021-12-18T17:53:58.867/plot.html @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/archive/EVVJS_2021-12-20T15:47:12.591/mission b/archive/EVVJS_2021-12-20T15:47:12.591/mission new file mode 100644 index 0000000..3de401f --- /dev/null +++ b/archive/EVVJS_2021-12-20T15:47:12.591/mission @@ -0,0 +1,43 @@ +/home/connor/projects/thesis/archive/EVVJS_2021-12-20T15:47:12.591/mission--------------------------- + +Spacecraft: mySat + dry_mass: 200.0 kg + specific impulse: 3200.0 kg/s + max_thrust: 0.00025 kN + num_thrusters: 1 + duty_cycle: 1.0 +Launch Mass: 3500.0 kg +Launch Date: 2023-05-08T02:15:41.742 +Launch V∞: [-2.6705377464328075, 1.81220401477148, -5.02986389717478] km/s +Phase 1: + Planet: Venus + V∞_in: [-2.6649059053371618, 1.1318437761748215, 5.5271509852418275] km/s + V∞_out: [1.5500163131788576, 3.701161902600424, 4.7781830264083816] km/s + time of flight: 1.2506637578161152e7 seconds + arrival date: 2023-09-29T20:19:38.742 + thrust profile: [0.0037642309356178496 0.10817195619205817 -0.04203391806942476; 0.05018542722531452 0.011132758502156382 -0.0707574733140089; 0.01498586447762501 0.05712165647482545 -0.10331663549941099; -0.0021220081754707142 0.0427284404881686 -0.10738096661568876; 0.013851176936053975 0.06635540579133767 -0.11531028068050167; -0.03624664271973954 0.047411452014984014 -0.11058601864180033; -0.0020740631910354575 -4.710072118612996e-6 -0.1403320235583719; 0.004134084837005339 0.057833143727503075 -0.148726306245634; -0.000824882662939474 0.025545600899810554 -0.15811601473591735; 0.0033733625666936226 0.04310334955731879 -0.16265530338633763; 0.023284082987077983 0.07815514642145437 -0.14787129186662162; 0.011438920106420706 0.06298800208929839 -0.17089396585927522; -0.0028167264681480965 0.07221556852886035 -0.1682949193772566; 0.023003412445979414 0.07615232250394104 -0.12486622266414714; 0.05055936441931101 0.05061773551323538 -0.15558369926288854; 0.046376273514580145 0.05443645190395452 -0.15984218654287824; 0.02887318678938868 0.050242274973224 -0.11451690883278194; 0.05903220624034955 0.07663020899986919 -0.08872470614243323; 0.05646442157593271 0.0236833115162622 -0.12328998635670442; 0.052708769586655 0.04647341445165668 -0.08471778910840236] % +Phase 2: + Planet: Venus + V∞_in: [5.03318023152429, 6.280182305174015, -6.060996943876664] km/s + V∞_out: [8.771878835411606, 1.7271436802598803, -4.64552460331829] km/s + time of flight: 1.2805978832351272e8 seconds + arrival date: 2027-10-21T00:29:26.742 + thrust profile: [0.5166054641522004 0.38040574934818894 0.39483837842584535; 0.4828952263457908 -0.47829862312158744 0.40557553493743564; 0.6185006656113567 -0.4295308551988002 -0.3475134331936448; 0.4770039152011964 0.5271154524060135 -0.20000575030699538; 0.5412450144942943 -0.20886043145622096 0.43938036856081814; 0.5276789680667877 -0.5277616228639487 0.13628061369394617; 0.6415309466397165 -0.2678331791426979 -0.39558929497740725; 0.4343573860170071 0.502582921064376 -0.3318784701248486; 0.5800947529139152 -0.20204579937793274 0.3774150731579229; 0.5354834813587176 -0.4173102990305924 0.3796235568137587; 0.6184505220409655 -0.4417968378543587 -0.34238794209436774; 0.5080341201037585 0.5014345398019467 -0.33763169791467246; 0.5877098153802596 0.14114025736151312 0.3238083516450284; 0.5805187604081549 0.03982949798901487 0.38515870224511417; 0.5643130843803069 -0.5179163072176047 -0.19901273562840677; 0.618939895817285 0.389447844276657 -0.39925503596953016; 0.5411273409128876 0.3226806107049277 -0.37714997177083703; 0.6071744258656793 0.2911843912661802 0.28415164075125104; 0.5573265691088601 0.17823434208894331 0.4018394191685452; 0.5666337146024757 -0.5288498735192672 0.03819884543376086] % +Phase 3: + Planet: Jupiter + V∞_in: [0.7405450398567593, -7.5098445542472945, -2.40833325065344] km/s + V∞_out: [-3.959320578944167, 5.7458190962386, -3.749068046202953] km/s + time of flight: 1.421097770757432e8 seconds + arrival date: 2032-04-21T19:25:43.742 + thrust profile: [0.6668749885535331 0.7119439515000974 -0.47217742545747104; -0.6469564667143733 0.7765188128496617 0.1574004795502485; -0.773633525867842 0.7394373999282712 0.4027317982639249; -0.8166053790607609 0.6473990001925622 0.5207562510569261; -0.8373014340476008 0.18359240688570228 0.5993895358042353; -0.8390303451637329 -0.42462892361099186 0.6142766346586279; -0.8350359388066501 -0.6239649730883396 0.6256719643517975; -0.821756634573213 -0.7144142912083659 0.6297147364166188; -0.7958608968982823 -0.7601769494789784 0.6210466135863127; -0.7510364885805915 -0.7850808235066821 0.5966784108754225; -0.6657999775087994 -0.7894095061990805 0.5609708009540707; -0.5101942765778178 -0.7782021262749327 0.5141768423449582; -0.27236357899533525 -0.7487127433927561 0.4618021651904532; -0.054244989960793334 -0.6945361755047911 0.4108890323914806; 0.025980362043212305 -0.6152046918846878 0.35533971599792835; 0.03884979852161373 -0.5000474202661694 0.3091329458166366; 0.0001114281549689611 -0.3447827035482281 0.256908008578505; -0.045624236967968704 -0.10554833156388801 0.20144441453096268; -0.09710696728868398 0.19152555422247225 0.1087766532370442; -0.1282579442088115 0.39646864777852725 0.009236041193641553] % +Phase 4: + Planet: Saturn + V∞_in: [-4.741234768251964, 4.13190320501828, -0.5695428106723406] km/s + V∞_out: [-3.1515712454769806e-6, 5.189115178770385e-6, -1.6627213931492873e-7] km/s + time of flight: 1.8121908456931648e8 seconds + arrival date: 2038-01-18T06:03:47.742 + thrust profile: [0.13625040297481736 0.14933905804631312 0.2757743121789037; 0.1192604239518539 0.14450577052892158 0.21001652823369818; 0.09497180738630677 0.1436206134610816 0.1304125477411028; 0.05660650818705413 0.14397646798764285 0.029638921674881153; 0.0033026815164827928 0.128393265450669 -0.08364054831257349; -0.046298739509475266 0.09498117676572271 -0.17204312101516736; -0.07826400300811034 0.05748675105859162 -0.23458089715837857; -0.0898822681455277 0.026068150966949772 -0.27381493027410114; -0.08817956687074757 0.003963795201985765 -0.29324311165103717; -0.08006421778460109 -0.010427589988313526 -0.297505213206217; -0.06850428258195482 -0.019821792080172117 -0.2909679340025451; -0.055774010972997286 -0.02726836207051607 -0.2762869825770171; -0.04157864032693081 -0.03339735152686053 -0.25548472609696515; -0.02660891319542901 -0.03894896063483435 -0.22960782433619792; -0.010643007042148598 -0.04490858196263294 -0.19956755059053796; 0.00580413466562435 -0.05025272650756578 -0.16582165226689483; 0.022646438724084665 -0.055672928642956324 -0.12919013606158447; 0.03956702474738428 -0.06069755736325737 -0.09167033305435902; 0.0569563523141951 -0.06556824149960896 -0.053646667488796825; 0.07561851012706877 -0.0723267563955561 -0.016753115096183893] % + +Mass Used: 2137.3878774591703 kg +Launch C3: 35.71538607037856 km²/s² +||V∞_in||: 6.31476921482568 km/s diff --git a/archive/EVVJS_2021-12-20T15:47:12.591/plot.html b/archive/EVVJS_2021-12-20T15:47:12.591/plot.html new file mode 100644 index 0000000..f55f38b --- /dev/null +++ b/archive/EVVJS_2021-12-20T15:47:12.591/plot.html @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/archive/EVVJS_archive b/archive/EVVJS_archive new file mode 100644 index 0000000..2bfba50 --- /dev/null +++ b/archive/EVVJS_archive @@ -0,0 +1,91 @@ +archive/EVVJS_archive +--------------------------- +Spacecraft: mySat + dry_mass: 200.0 kg + specific impulse: 3200.0 kg/s + max_thrust: 0.00025 kN + num_thrusters: 1 + duty_cycle: 1.0 +Launch Mass: 3500.0 kg +Launch Date: 2024-06-24T03:41:10.468 +Launch V∞: [-2.5086977090763227, -5.909009701214558, -3.6145624632193294] km/s +Phase 1: + Planet: Venus + V∞_in: [-8.641740181450986, -2.7358765971708188, 5.979083178622357] km/s + V∞_out: [-8.782585218349974, -2.7633891948741853, 5.757128066064576] km/s + time of flight: 1.3058425505068028e8 seconds + arrival date: 2028-08-13T13:05:25.468 + thrust profile: [-0.7066166088184461 0.694440248124216 0.7479354980537709; -0.6327447429640423 -0.8354350485844262 0.7834527345864157; 0.9020568747016394 0.8877052626244303 -0.6463263227561554; -0.7301431150683071 0.6609966418814177 -0.7438889151598259; 0.730852451440183 -0.7320972842184537 0.7604738505723868; 0.7972709043563252 0.721855932933707 0.7718028396811908; -0.8037412340829777 0.8087516989811351 -0.7172943955497878; 0.7648238186384819 0.6552635836307407 -0.721155847669259; 0.7291150156338002 0.748678684325491 0.7866560258556328; -0.7570680522417093 0.7690073045139784 -0.6461755325555683; -0.6468702385091074 -0.8148737116229223 -0.7704229798858344; -0.4993264506198249 0.7454968352904051 0.7338556974594883; 0.7368764981991002 -0.6117948959055127 0.8068497932656402; -0.7962857723296427 0.7491959753561124 -0.654565239742625; -0.7127612827380243 0.6906152690232072 -0.77926816829975; -0.6834549942628344 -0.7126511442816399 0.7270169479529096; 0.6623991589464917 -0.6788349696325189 0.817241726963756; 0.7045461026526441 0.6832122117875238 -0.6923017984092904; -0.7118848172229095 0.6940290158932474 -0.7555659392711116; -0.6684106313303576 -0.695492267513801 0.7927961883463502] % +Phase 2: + Planet: Venus + V∞_in: [-7.955987785349071, -1.7429230646850489, 7.048560055803307] km/s + V∞_out: [-8.38468808776243, 4.638807911180807, 4.920220822386981] km/s + time of flight: 3.903384248532212e7 seconds + arrival date: 2029-11-08T07:49:27.468 + thrust profile: [0.35184470451251054 -0.3489438480396312 0.22003829255796042; 0.5775112094730798 0.3466350775731712 0.10768869846318309; 0.5151690947404881 0.6922646119099484 -0.2079306947550997; 0.03820729926768738 0.7645099364102405 -0.003934023466790116; -0.5310966588437559 0.6960577720418427 -0.2806379441488921; -0.4888319757324884 0.6421514470556614 -0.3174191597815846; -0.34372723910767994 0.6560895563596227 -0.16929444361647178; -0.3645888618705135 0.634917562387229 0.1666892583656993; -0.3850511801341504 0.7324174772643002 0.5376102954603407; -0.6275951088762817 0.7623544346482719 0.6418628750791122; -0.7919929569477481 0.5902287990856233 0.45549206134198506; -0.793859142829226 -0.27621743364089885 -0.03426934297306585; -0.6072979328607674 -0.6138362647581398 -0.4816955133844994; 0.13432682697115447 -0.5431982957931105 -0.6262239404967714; 0.5688082709851283 -0.21021884608354516 -0.5260160342268195; 0.6818162423845489 0.5160256516002725 -0.4092906774489981; 0.7130018091756617 0.7341633847919329 -0.15724287718021424; 0.6616897627009751 0.8195554298912001 0.3135759308050811; 0.1872587594296505 0.8726717894768014 0.6224150121537937; -0.6414995880519144 0.8901062055995407 0.7300574454135067] % +Phase 3: + Planet: Jupiter + V∞_in: [3.616389218491424, -5.528555297073314, 2.6454669550732093] km/s + V∞_out: [-4.714476188428925, 3.7327085648268112, 3.805565087766136] km/s + time of flight: 1.0083979624306786e8 seconds + arrival date: 2033-01-18T10:52:43.468 + thrust profile: [-0.9659103696906655 0.9517515910607882 0.8168373781737548; -0.9561283643434136 -0.8761699655545768 -0.1939995320784213; -0.9275867912262411 -0.9136864536027992 -0.4060037610832777; -0.8853757072400111 -0.9132743466476493 -0.3994899790867979; -0.8271257223116684 -0.9063668321809316 -0.341644963512146; -0.7251990654980359 -0.8962396229655277 -0.2630714822249463; 0.18838507258195641 -0.8860877807707359 -0.15307132464698348; 0.6622301460691353 -0.8684657561454765 0.07422800726056446; 0.6152410169116248 -0.8481784036097828 0.2658920782241131; 0.6215425470318906 -0.8230726802555173 0.32667501700810464; 0.6389070189564778 -0.7921065374330535 0.34021110523295184; 0.6318769085000678 -0.7547402247270236 0.3362004802720032; 0.616705490069356 -0.708911815572844 0.32003622824074046; 0.5945544151167129 -0.6524425628293116 0.29334179519703246; 0.5663787104667805 -0.5830242242373314 0.2574479200400718; 0.5347064309525714 -0.49844216424182536 0.2142037683145213; 0.4986839302662462 -0.39909400732377337 0.16566817479325446; 0.45286850381956695 -0.28918436173239803 0.1141785086594864; 0.37710967383789334 -0.1678572767236383 0.06149121277195424; 0.25394438978570527 0.02043569238203405 0.009191155783547409] % +Phase 4: + Planet: Saturn + V∞_in: [-3.2880012796332987, 2.1211606572569277, 0.48142650562617806] km/s + V∞_out: [-8.731880472477191e-6, 9.666612310001054e-6, -6.225039409550941e-7] km/s + time of flight: 2.1161982067082927e8 seconds + arrival date: 2039-10-03T18:09:43.468 + thrust profile: [0.022423037123395814 0.08059850157352823 -0.1327356604236625; 0.01554844506706407 0.07575167965809157 -0.08215431382545887; 0.004436644366473565 0.0665844137373235 -0.028828351796870644; -0.008131707121939417 0.055075456865770506 0.017731675612583327; -0.02018941938325407 0.045096951581116415 0.06687637224142223; -0.02543873854159729 0.02905260962667718 0.11099986430188423; -0.022683647304998084 0.014600108269522964 0.14240131923790691; -0.01635725372584873 0.005199870254546869 0.1603574566237192; -0.009646680596205824 -0.0005145097922692435 0.16718880257957977; -0.0034057298966922184 -0.0044319774679023915 0.16564089244298724; 0.0024575970566733775 -0.007624658692633722 0.15799198592156033; 0.008185905684027191 -0.010539011665542544 0.14597553943022623; 0.013987314799160704 -0.013330717852839631 0.13093216092661572; 0.020037882876062143 -0.01605336859123858 0.11391525190686709; 0.02646489450515348 -0.018721137962794496 0.09575475738764945; 0.033373123348953045 -0.021357123294403972 0.07717404261022846; 0.04100633524272448 -0.02409647883011826 0.05884172751529372; 0.04996375895080879 -0.02726627285470597 0.041127114982092414; 0.061081932228138576 -0.031206207742307278 0.02360571733260185; 0.07466681359328371 -0.03585261547468276 0.005215821732814806] % + +Mass Used: 2591.3951917643953 kg +Launch C3: 54.27502164508673 km²/s² +||V∞_in||: 3.9423402223912998 km/s + + + +--------------------------- +Spacecraft: mySat + dry_mass: 200.0 kg + specific impulse: 3200.0 kg/s + max_thrust: 0.00025 kN + num_thrusters: 1 + duty_cycle: 1.0 +Launch Mass: 3500.0 kg +Launch Date: 2023-05-08T02:15:41.742 +Launch V∞: [-2.6705377464328075, 1.81220401477148, -5.02986389717478] km/s +Phase 1: + Planet: Venus + V∞_in: [-2.6649059053371618, 1.1318437761748215, 5.5271509852418275] km/s + V∞_out: [1.5500163131788576, 3.701161902600424, 4.7781830264083816] km/s + time of flight: 1.2506637578161152e7 seconds + arrival date: 2023-09-29T20:19:38.742 + thrust profile: [0.0037642309356178496 0.10817195619205817 -0.04203391806942476; 0.05018542722531452 0.011132758502156382 -0.0707574733140089; 0.01498586447762501 0.05712165647482545 -0.10331663549941099; -0.0021220081754707142 0.0427284404881686 -0.10738096661568876; 0.013851176936053975 0.06635540579133767 -0.11531028068050167; -0.03624664271973954 0.047411452014984014 -0.11058601864180033; -0.0020740631910354575 -4.710072118612996e-6 -0.1403320235583719; 0.004134084837005339 0.057833143727503075 -0.148726306245634; -0.000824882662939474 0.025545600899810554 -0.15811601473591735; 0.0033733625666936226 0.04310334955731879 -0.16265530338633763; 0.023284082987077983 0.07815514642145437 -0.14787129186662162; 0.011438920106420706 0.06298800208929839 -0.17089396585927522; -0.0028167264681480965 0.07221556852886035 -0.1682949193772566; 0.023003412445979414 0.07615232250394104 -0.12486622266414714; 0.05055936441931101 0.05061773551323538 -0.15558369926288854; 0.046376273514580145 0.05443645190395452 -0.15984218654287824; 0.02887318678938868 0.050242274973224 -0.11451690883278194; 0.05903220624034955 0.07663020899986919 -0.08872470614243323; 0.05646442157593271 0.0236833115162622 -0.12328998635670442; 0.052708769586655 0.04647341445165668 -0.08471778910840236] % +Phase 2: + Planet: Venus + V∞_in: [5.03318023152429, 6.280182305174015, -6.060996943876664] km/s + V∞_out: [8.771878835411606, 1.7271436802598803, -4.64552460331829] km/s + time of flight: 1.2805978832351272e8 seconds + arrival date: 2027-10-21T00:29:26.742 + thrust profile: [0.5166054641522004 0.38040574934818894 0.39483837842584535; 0.4828952263457908 -0.47829862312158744 0.40557553493743564; 0.6185006656113567 -0.4295308551988002 -0.3475134331936448; 0.4770039152011964 0.5271154524060135 -0.20000575030699538; 0.5412450144942943 -0.20886043145622096 0.43938036856081814; 0.5276789680667877 -0.5277616228639487 0.13628061369394617; 0.6415309466397165 -0.2678331791426979 -0.39558929497740725; 0.4343573860170071 0.502582921064376 -0.3318784701248486; 0.5800947529139152 -0.20204579937793274 0.3774150731579229; 0.5354834813587176 -0.4173102990305924 0.3796235568137587; 0.6184505220409655 -0.4417968378543587 -0.34238794209436774; 0.5080341201037585 0.5014345398019467 -0.33763169791467246; 0.5877098153802596 0.14114025736151312 0.3238083516450284; 0.5805187604081549 0.03982949798901487 0.38515870224511417; 0.5643130843803069 -0.5179163072176047 -0.19901273562840677; 0.618939895817285 0.389447844276657 -0.39925503596953016; 0.5411273409128876 0.3226806107049277 -0.37714997177083703; 0.6071744258656793 0.2911843912661802 0.28415164075125104; 0.5573265691088601 0.17823434208894331 0.4018394191685452; 0.5666337146024757 -0.5288498735192672 0.03819884543376086] % +Phase 3: + Planet: Jupiter + V∞_in: [0.7405450398567593, -7.5098445542472945, -2.40833325065344] km/s + V∞_out: [-3.959320578944167, 5.7458190962386, -3.749068046202953] km/s + time of flight: 1.421097770757432e8 seconds + arrival date: 2032-04-21T19:25:43.742 + thrust profile: [0.6668749885535331 0.7119439515000974 -0.47217742545747104; -0.6469564667143733 0.7765188128496617 0.1574004795502485; -0.773633525867842 0.7394373999282712 0.4027317982639249; -0.8166053790607609 0.6473990001925622 0.5207562510569261; -0.8373014340476008 0.18359240688570228 0.5993895358042353; -0.8390303451637329 -0.42462892361099186 0.6142766346586279; -0.8350359388066501 -0.6239649730883396 0.6256719643517975; -0.821756634573213 -0.7144142912083659 0.6297147364166188; -0.7958608968982823 -0.7601769494789784 0.6210466135863127; -0.7510364885805915 -0.7850808235066821 0.5966784108754225; -0.6657999775087994 -0.7894095061990805 0.5609708009540707; -0.5101942765778178 -0.7782021262749327 0.5141768423449582; -0.27236357899533525 -0.7487127433927561 0.4618021651904532; -0.054244989960793334 -0.6945361755047911 0.4108890323914806; 0.025980362043212305 -0.6152046918846878 0.35533971599792835; 0.03884979852161373 -0.5000474202661694 0.3091329458166366; 0.0001114281549689611 -0.3447827035482281 0.256908008578505; -0.045624236967968704 -0.10554833156388801 0.20144441453096268; -0.09710696728868398 0.19152555422247225 0.1087766532370442; -0.1282579442088115 0.39646864777852725 0.009236041193641553] % +Phase 4: + Planet: Saturn + V∞_in: [-4.741234768251964, 4.13190320501828, -0.5695428106723406] km/s + V∞_out: [-3.1515712454769806e-6, 5.189115178770385e-6, -1.6627213931492873e-7] km/s + time of flight: 1.8121908456931648e8 seconds + arrival date: 2038-01-18T06:03:47.742 + thrust profile: [0.13625040297481736 0.14933905804631312 0.2757743121789037; 0.1192604239518539 0.14450577052892158 0.21001652823369818; 0.09497180738630677 0.1436206134610816 0.1304125477411028; 0.05660650818705413 0.14397646798764285 0.029638921674881153; 0.0033026815164827928 0.128393265450669 -0.08364054831257349; -0.046298739509475266 0.09498117676572271 -0.17204312101516736; -0.07826400300811034 0.05748675105859162 -0.23458089715837857; -0.0898822681455277 0.026068150966949772 -0.27381493027410114; -0.08817956687074757 0.003963795201985765 -0.29324311165103717; -0.08006421778460109 -0.010427589988313526 -0.297505213206217; -0.06850428258195482 -0.019821792080172117 -0.2909679340025451; -0.055774010972997286 -0.02726836207051607 -0.2762869825770171; -0.04157864032693081 -0.03339735152686053 -0.25548472609696515; -0.02660891319542901 -0.03894896063483435 -0.22960782433619792; -0.010643007042148598 -0.04490858196263294 -0.19956755059053796; 0.00580413466562435 -0.05025272650756578 -0.16582165226689483; 0.022646438724084665 -0.055672928642956324 -0.12919013606158447; 0.03956702474738428 -0.06069755736325737 -0.09167033305435902; 0.0569563523141951 -0.06556824149960896 -0.053646667488796825; 0.07561851012706877 -0.0723267563955561 -0.016753115096183893] % + +Mass Used: 2137.3878774591703 kg +Launch C3: 35.71538607037856 km²/s² +||V∞_in||: 6.31476921482568 km/s + + + diff --git a/email_to_commitee.md b/email_to_commitee.md new file mode 100644 index 0000000..4b5e6c6 --- /dev/null +++ b/email_to_commitee.md @@ -0,0 +1,15 @@ +Dr. Scheeres, + +I'm currently working on finishing up my Master's Thesis. The topic will be a routine for optimizing +Interplanetary Low-Thrust Trajectories, combining approaches for flyby optimization and low-thrust +trajectory arc optimization. I think that your research interests would make you an ideal fit for a +place on my committee, so I would like to ask if you have any availability to be on my committee +this semester? Currently, I am targeting finish up sometime around March 12th, so it would probably +be a defense in late March or early April, but I have a little room for flexibility if that doesn't +work. + +If you think you may be able to sit on my committee then just let me know and I can begin the +process of determining everyone's availabilities and finding the most appropriate defense date. + +Thanks! +Connor Johnstone diff --git a/ipopt.out b/ipopt.out deleted file mode 100644 index e69de29..0000000