From bca217e69837e2ecb788511b786f4adc9a74769e Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Tue, 11 Apr 2023 17:08:06 -0400 Subject: Remove extraneous directory in doc --- docs/Makefile | 70 ++++ docs/bibliography/conf.BBlog | 6 + docs/libs/ian.cls | 659 ++++++++++++++++++++++++++++++ docs/libs/iantheo.sty | 162 ++++++++ docs/libs/largearray.sty | 19 + docs/libs/point.sty | 106 +++++ docs/nstrophy_doc.tex | 336 +++++++++++++++ docs/nstrophy_doc/Makefile | 70 ---- docs/nstrophy_doc/bibliography/conf.BBlog | 6 - docs/nstrophy_doc/libs/ian.cls | 659 ------------------------------ docs/nstrophy_doc/libs/iantheo.sty | 162 -------- docs/nstrophy_doc/libs/largearray.sty | 19 - docs/nstrophy_doc/libs/point.sty | 106 ----- docs/nstrophy_doc/nstrophy_doc.tex | 336 --------------- 14 files changed, 1358 insertions(+), 1358 deletions(-) create mode 100644 docs/Makefile create mode 100644 docs/bibliography/conf.BBlog create mode 100644 docs/libs/ian.cls create mode 100644 docs/libs/iantheo.sty create mode 100644 docs/libs/largearray.sty create mode 100644 docs/libs/point.sty create mode 100644 docs/nstrophy_doc.tex delete mode 100644 docs/nstrophy_doc/Makefile delete mode 100644 docs/nstrophy_doc/bibliography/conf.BBlog delete mode 100644 docs/nstrophy_doc/libs/ian.cls delete mode 100644 docs/nstrophy_doc/libs/iantheo.sty delete mode 100644 docs/nstrophy_doc/libs/largearray.sty delete mode 100644 docs/nstrophy_doc/libs/point.sty delete mode 100644 docs/nstrophy_doc/nstrophy_doc.tex diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..c63e53f --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,70 @@ +PROJECTNAME=$(basename $(wildcard *.tex)) +LIBS=$(notdir $(wildcard libs/*)) +FIGS=$(notdir $(wildcard figs/*.fig)) + +PDFS=$(addsuffix .pdf, $(PROJECTNAME)) +SYNCTEXS=$(addsuffix .synctex.gz, $(PROJECTNAME)) + +all: $(PROJECTNAME) + +$(PROJECTNAME): $(LIBS) $(FIGS) + pdflatex -file-line-error $@.tex + pdflatex -file-line-error $@.tex + pdflatex -synctex=1 $@.tex + +$(PROJECTNAME).aux: $(LIBS) $(FIGS) + pdflatex -file-line-error -draftmode $(PROJECTNAME).tex + + +$(SYNCTEXS): $(LIBS) $(FIGS) + pdflatex -synctex=1 $(patsubst %.synctex.gz, %.tex, $@) + +install: $(PROJECTNAME) + cp $^.pdf $(INSTALLDIR)/ + +install-synctex: $(SYNCTEXS) + cp $^ $(INSTALLDIR)/ + +install-bibliography: bibliography/bibliography.tex + cp bibliography/bibliography.tex $(INSTALLDIR)/bibliography/ + + +libs: $(LIBS) + +$(LIBS): + ln -fs libs/$@ ./ + +bibliography/bibliography.tex: $(PROJECTNAME).aux + BBlog -c bibliography/conf.BBlog -d $(BIBLIOGRAPHY) -b bibliography/bibliography.tex + +figs: $(FIGS) + +$(FIGS): + make -C figs/$@ + ln -fs figs/$@/*.pdf ./ + + +clean-aux: clean-figs-aux + rm -f $(addsuffix .aux, $(PROJECTNAME)) + rm -f $(addsuffix .log, $(PROJECTNAME)) + rm -f $(addsuffix .out, $(PROJECTNAME)) + rm -f $(addsuffix .toc, $(PROJECTNAME)) + +clean-libs: + rm -f $(LIBS) + +clean-figs: + $(foreach fig,$(addprefix figs/, $(FIGS)), make -C $(fig) clean; ) + rm -f $(notdir $(wildcard figs/*.fig/*.pdf)) + +clean-figs-aux: + $(foreach fig,$(addprefix figs/, $(FIGS)), make -C $(fig) clean-aux; ) + + +clean-tex: + rm -f $(PDFS) $(SYNCTEXS) + +clean-bibliography: + rm -f bibliography/bibliography.tex + +clean: clean-aux clean-tex clean-libs clean-figs diff --git a/docs/bibliography/conf.BBlog b/docs/bibliography/conf.BBlog new file mode 100644 index 0000000..abe5ad4 --- /dev/null +++ b/docs/bibliography/conf.BBlog @@ -0,0 +1,6 @@ +format: \bibitem[%token%]{%citeref%}%author:auth% - {\it %title%}, %journal%, %year%|doi?,\par\penalty10000%n%doi:{\tt\color{blue}\href{http://dx.doi.org/%doi%}{%doi%}}||arxiv?, arxiv:{\tt\color{blue}\href{http://arxiv.org/abs/%arxiv%}{%arxiv%}}|.\par\medskip%n% %n% +out_file: bibliography.tex +filter:auth: s/([A-Z])[^, ]* /\1. /g; s/ ([^ ,]*),/_\1,_/g; s/ ([^ ,]*)$/_\1/g; s/ //g; s/_/ /g; +filter:journal: s/([a-zA-Z]) ([0-9]+)/\1~\\-\2/g; +aux_cmd: \\citation{ +extra: Gallavotti2022:Ga22:Ga22:\bibitem[%token%]{%citeref%}G.\-~Gallavotti - {\it Navier-Stokes and equivalence conjectures}, preprint, 2022\par\penalty10000%n%arxiv:{\tt\color{blue}\href{https://arxiv.org/abs/2211.02961}{2211.02961}}%n%%n% diff --git a/docs/libs/ian.cls b/docs/libs/ian.cls new file mode 100644 index 0000000..538a108 --- /dev/null +++ b/docs/libs/ian.cls @@ -0,0 +1,659 @@ +%% +%% Ian's class file +%% + +%% TeX format +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +%% class name +\ProvidesClass{ian}[2017/09/29] + +%% boolean to signal that this class is being used +\newif\ifianclass + +%% options +% no section numbering in equations +\DeclareOption{section_in_eq}{\sectionsineqtrue} +\DeclareOption{section_in_fig}{\sectionsinfigtrue} +\DeclareOption{section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} +\DeclareOption{section_in_all}{\sectionsineqtrue\sectionsinfigtrue\PassOptionsToPackage{section_in_theo}{iantheo}} +\DeclareOption{subsection_in_eq}{\subsectionsineqtrue} +\DeclareOption{subsection_in_fig}{\subsectionsinfigtrue} +\DeclareOption{subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} +\DeclareOption{subsection_in_all}{\subsectionsineqtrue\subsectionsinfigtrue\PassOptionsToPackage{subsection_in_theo}{iantheo}} +\DeclareOption{no_section_in_eq}{\sectionsineqfalse} +\DeclareOption{no_section_in_fig}{\sectionsinfigfalse} +\DeclareOption{no_section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} +\DeclareOption{no_section_in_all}{\sectionsineqfalse\sectionsinfigfalse\PassOptionsToPackage{no_section_in_theo}{iantheo}} +\DeclareOption{no_subsection_in_eq}{\subsectionsineqfalse} +\DeclareOption{no_subsection_in_fig}{\subsectionsinfigfalse} +\DeclareOption{no_subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} +\DeclareOption{no_subsection_in_all}{\subsectionsineqfalse\subsectionsinfigfalse\PassOptionsToPackage{no_subsection_in_theo}{iantheo}} +% reset point +\DeclareOption{point_reset_at_section}{\PassOptionsToPackage{reset_at_section}{point}} +\DeclareOption{point_no_reset_at_section}{\PassOptionsToPackage{no_reset_at_section}{point}} +\DeclareOption{point_reset_at_theo}{\PassOptionsToPackage{reset_at_theo}{point}} +\DeclareOption{point_no_reset_at_theo}{\PassOptionsToPackage{no_reset_at_theo}{point}} + +\def\ian@defaultoptions{ + \ExecuteOptions{section_in_all, no_subsection_in_all} + \ProcessOptions + + %% required packages + \RequirePackage{iantheo} + \RequirePackage{point} + \RequirePackage{color} + \RequirePackage{marginnote} + \RequirePackage{amssymb} + \PassOptionsToPackage{hidelinks}{hyperref} + \RequirePackage{hyperref} +} + +%% paper dimensions +\setlength\paperheight{297mm} +\setlength\paperwidth{210mm} + +%% fonts +\input{size11.clo} +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} + +%% text dimensions +\hoffset=-50pt +\voffset=-72pt +\textwidth=460pt +\textheight=704pt + + +%% remove default indentation +\parindent=0pt +%% indent command +\def\indent{\hskip20pt} + +%% something is wrong with \thepage, redefine it +\gdef\thepage{\the\c@page} + +%% array lines (to use the array environment) +\setlength\arraycolsep{5\p@} +\setlength\arrayrulewidth{.4\p@} + + +%% correct vertical alignment at the end of a document +\AtEndDocument{ + \vfill + \eject +} + + +%% hyperlinks +% hyperlinkcounter +\newcounter{lncount} +% hyperref anchor +\def\hrefanchor{% +\stepcounter{lncount}% +\hypertarget{ln.\thelncount}{}% +} + +%% define a command and write it to aux file +\def\outdef#1#2{% + % define command% + \expandafter\xdef\csname #1\endcsname{#2}% + % hyperlink number% + \expandafter\xdef\csname #1@hl\endcsname{\thelncount}% + % write command to aux% + \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1\endcsname{\csname #1\endcsname}}% + \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1@hl\endcsname{\thelncount}}% +} + +%% can call commands even when they are not defined +\def\safe#1{% + \ifdefined#1% + #1% + \else% + {\color{red}\bf?}% + \fi% +} + +%% define a label for the latest tag +%% label defines a command containing the string stored in \tag +\def\deflabel{ + \def\label##1{\expandafter\outdef{label@##1}{\safe\tag}} + + \def\ref##1{% + % check whether the label is defined (hyperlink runs into errors if this check is omitted) + \ifcsname label@##1@hl\endcsname% + \hyperlink{ln.\csname label@##1@hl\endcsname}{{\color{blue}\safe\csname label@##1\endcsname}}% + \else% + \ifcsname label@##1\endcsname% + {\color{blue}\csname ##1\endcsname}% + \else% + {\bf ??}% + \fi% + \fi% + } +} + + +%% make a custom link at any given location in the document +\def\makelink#1#2{% + \hrefanchor% + \outdef{label@#1}{#2}% +} + + +%% section command +% counter +\newcounter{sectioncount} +% space before section +\newlength\secskip +\setlength\secskip{40pt} +% a prefix to put before the section number, e.g. A for appendices +\def\sectionprefix{} +% define some lengths +\newlength\secnumwidth +\newlength\sectitlewidth +\def\section#1{ + % reset counters + \stepcounter{sectioncount} + \setcounter{subsectioncount}{0} + \ifsectionsineq + \setcounter{seqcount}0 + \fi + \ifsectionsinfig + \setcounter{figcount}0 + \fi + + % space before section (if not first) + \ifnum\thesectioncount>1 + \vskip\secskip + \penalty-1000 + \fi + + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\sectionprefix\thesectioncount} + + % get widths + \def\@secnum{{\bf\Large\sectionprefix\thesectioncount.\hskip10pt}} + \settowidth\secnumwidth{\@secnum} + \setlength\sectitlewidth\textwidth + \addtolength\sectitlewidth{-\secnumwidth} + + % print name + \parbox{\textwidth}{ + \@secnum + \parbox[t]{\sectitlewidth}{\Large\bf #1}} + + % write to table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@sec.\thesectioncount\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocsection{#1}{\thepage}} + \fi + + %space + \par\penalty10000 + \bigskip\penalty10000 +} + +%% subsection +% counter +\newcounter{subsectioncount} +% space before subsection +\newlength\subsecskip +\setlength\subsecskip{30pt} +\def\subsection#1{ + % counters + \stepcounter{subsectioncount} + \setcounter{subsubsectioncount}{0} + \ifsubsectionsineq + \setcounter{seqcount}0 + \fi + \ifsubsectionsinfig + \setcounter{figcount}0 + \fi + + % space before subsection (if not first) + \ifnum\thesubsectioncount>1 + \vskip\subsecskip + \penalty-500 + \fi + + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount} + + % get widths + \def\@secnum{{\bf\large\hskip.5cm\sectionprefix\thesectioncount.\thesubsectioncount.\hskip5pt}} + \settowidth\secnumwidth{\@secnum} + \setlength\sectitlewidth\textwidth + \addtolength\sectitlewidth{-\secnumwidth} + % print name + \parbox{\textwidth}{ + \@secnum + \parbox[t]{\sectitlewidth}{\large\bf #1}} + + % write to table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsec.\thesectioncount.\thesubsectioncount\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocsubsection{#1}{\thepage}} + \fi + + % space + \par\penalty10000 + \medskip\penalty10000 +} + +%% subsubsection +% counter +\newcounter{subsubsectioncount} +% space before subsubsection +\newlength\subsubsecskip +\setlength\subsubsecskip{20pt} +\def\subsubsection#1{ + % counters + \stepcounter{subsubsectioncount} + + % space before subsubsection (if not first) + \ifnum\thesubsubsectioncount>1 + \vskip\subsubsecskip + \penalty-500 + \fi + + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount} + + % get widths + \def\@secnum{{\bf\hskip1.cm\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount.\hskip5pt}} + \settowidth\secnumwidth{\@secnum} + \setlength\sectitlewidth\textwidth + \addtolength\sectitlewidth{-\secnumwidth} + % print name + \parbox{\textwidth}{ + \@secnum + \parbox[t]{\sectitlewidth}{\large\bf #1}} + + % write to table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsubsec.\thesectioncount.\thesubsectioncount.\thesubsubsectioncount\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocsubsubsection{#1}{\thepage}} + \fi + + % space + \par\penalty10000 + \medskip\penalty10000 +} + +%% itemize +\newlength\itemizeskip +% left margin for items +\setlength\itemizeskip{20pt} +\newlength\itemizeseparator +% space between the item symbol and the text +\setlength\itemizeseparator{5pt} +% penalty preceding an itemize +\newcount\itemizepenalty +\itemizepenalty=0 +% counter counting the itemize level +\newcounter{itemizecount} + +% item symbol +\def\itemizept#1{ + \ifnum#1=1 + \textbullet + \else + $\scriptstyle\blacktriangleright$ + \fi +} + + +\newlength\current@itemizeskip +\setlength\current@itemizeskip{0pt} +\def\itemize{% + \par\expandafter\penalty\the\itemizepenalty\medskip\expandafter\penalty\the\itemizepenalty% + \addtocounter{itemizecount}{1}% + \addtolength\current@itemizeskip{\itemizeskip}% + \leftskip\current@itemizeskip% +} +\def\enditemize{% + \addtocounter{itemizecount}{-1}% + \addtolength\current@itemizeskip{-\itemizeskip}% + \par\expandafter\penalty\the\itemizepenalty\leftskip\current@itemizeskip% + \medskip\expandafter\penalty\the\itemizepenalty% +} +\newlength\itempt@total +\def\item{ + \settowidth\itempt@total{\itemizept\theitemizecount} + \addtolength\itempt@total{\itemizeseparator} + \par + \medskip + \hskip-\itempt@total\itemizept\theitemizecount\hskip\itemizeseparator +} + + +%% prevent page breaks after itemize +\newcount\previtemizepenalty +\def\nopagebreakafteritemize{ + \previtemizepenalty=\itemizepenalty + \itemizepenalty=10000 +} +%% back to previous value +\def\restorepagebreakafteritemize{ + \itemizepenalty=\previtemizepenalty +} + +%% enumerate +\newcounter{enumerate@count} +\def\enumerate{ + \setcounter{enumerate@count}0 + \let\olditem\item + \let\olditemizept\itemizept + \def\item{ + % counter + \stepcounter{enumerate@count} + % set header + \def\itemizept{\theenumerate@count.} + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\theenumerate@count} + \olditem + } + \itemize +} +\def\endenumerate{ + \enditemize + \let\item\olditem + \let\itemizept\olditemizept +} + + +%% equation numbering +% counter +\newcounter{seqcount} +% booleans (write section or subsection in equation number) +\newif\ifsectionsineq +\newif\ifsubsectionsineq +\def\seqcount{ + \stepcounter{seqcount} + % the output + \edef\seqformat{\theseqcount} + % add subsection number + \ifsubsectionsineq + \let\tmp\seqformat + \edef\seqformat{\thesubsectioncount.\tmp} + \fi + % add section number + \ifsectionsineq + \let\tmp\seqformat + \edef\seqformat{\sectionprefix\thesectioncount.\tmp} + \fi + % define tag (for \label) + \xdef\tag{\seqformat} + % write number + \marginnote{\hfill(\seqformat)} +} +%% equation environment compatibility +\def\equation{\hrefanchor$$\seqcount} +\def\endequation{$$\@ignoretrue} + + +%% figures +% counter +\newcounter{figcount} +% booleans (write section or subsection in equation number) +\newif\ifsectionsinfig +\newif\ifsubsectionsinfig +% width of figures +\newlength\figwidth +\setlength\figwidth\textwidth +\addtolength\figwidth{-2.5cm} +% caption +\def\defcaption{ + \long\def\caption##1{ + \stepcounter{figcount} + + % hyperref anchor + \hrefanchor + + % the number of the figure + \edef\figformat{\thefigcount} + % add subsection number + \ifsubsectionsinfig + \let\tmp\figformat + \edef\figformat{\thesubsectioncount.\tmp} + \fi + % add section number + \ifsectionsinfig + \let\tmp\figformat + \edef\figformat{\sectionprefix\thesectioncount.\tmp} + \fi + + % define tag (for \label) + \xdef\tag{\figformat} + + % write + \hfil fig \figformat: \parbox[t]{\figwidth}{\leavevmode\small##1} + + % space + \par\bigskip + } +} +%% short caption: centered +\def\captionshort#1{ + \stepcounter{figcount} + + % hyperref anchor + \hrefanchor + + % the number of the figure + \edef\figformat{\thefigcount} + % add section number + \ifsectionsinfig + \let\tmp\figformat + \edef\figformat{\sectionprefix\thesectioncount.\tmp} + \fi + + % define tag (for \label) + \xdef\tag{\figformat} + + % write + \hfil fig \figformat: {\small#1} + + %space + \par\bigskip +} + +%% environment +\def\figure{ + \par + \vfil\penalty100\vfilneg + \bigskip +} +\def\endfigure{ + \par + \vfil\penalty100\vfilneg + \bigskip +} + + +%% start appendices +\def\appendix{ + \vfill + \pagebreak + + % counter + \setcounter{sectioncount}0 + + % prefix + \def\sectionprefix{A} + + % write + {\bf \LARGE Appendices}\par\penalty10000\bigskip\penalty10000 + + % add a mention in the table of contents + \iftoc + \immediate\write\tocoutput{\noexpand\tocappendices}\penalty10000 + \fi + + %% uncomment for new page for each appendix + %\def\seqskip{\vfill\pagebreak} +} + + +%% bibliography +% size of header +\newlength\bibheader +\def\thebibliography#1{ + \hrefanchor + + % add a mention in the table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@references\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocreferences{\thepage}}\penalty10000 + \fi + + % write + {\bf \LARGE References}\par\penalty10000\bigskip\penalty10000 + % width of header + \settowidth\bibheader{[#1]} + \leftskip\bibheader +} +% end environment +\def\endthebibliography{ + \par\leftskip0pt +} + +%% bibitem command +\def\bibitem[#1]#2{% + \hrefanchor% + \outdef{label@cite#2}{#1}% + \hskip-\bibheader% + \makebox[\bibheader]{\cite{#2}\hfill}% +} + +%% cite command (adapted from latex.ltx) +% @tempswa is set to true when there is an optional argument +\newif\@tempswa +\def\cite{% + % check whether there is an optional argument (if there is none, add on empty '[]') + \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}% +} +% command with optional argument +\def\@citex[#1]#2{\leavevmode% + % initialize loop + \let\@citea\@empty% + % format + \@cite{% + % loop over ',' separated list + \@for\@citeb:=#2\do{% + % text to add at each iteration of the loop (separator between citations) + \@citea\def\@citea{,\ }% + % add entry to citelist + \@writecitation{\@citeb}% + \ref{cite\@citeb}% + }% + }% + % add optional argument text (as an argument to '\@cite') + {#1}% +} +\def\@cite#1#2{% + [#1\if@tempswa , #2\fi]% +} +%% add entry to citelist after checking it has not already been added +\def\@writecitation#1{% + \ifcsname if#1cited\endcsname% + \else% + \expandafter\newif\csname if#1cited\endcsname% + \immediate\write\@auxout{\string\citation{#1}}% + \fi% +} + +%% table of contents +% boolean +\newif\iftoc +\def\tableofcontents{ + {\bf \large Table of contents:}\par\penalty10000\bigskip\penalty10000 + + % copy content from file + \IfFileExists{\jobname.toc}{\input{\jobname.toc}}{{\tt error: table of contents missing}} + + % open new toc + \newwrite\tocoutput + \immediate\openout\tocoutput=\jobname.toc + + \toctrue +} +%% close file +\AtEndDocument{ + % close toc + \iftoc + \immediate\closeout\tocoutput + \fi +} + + +%% fill line with dots +\def\leaderfill{\leaders\hbox to 1em {\hss. \hss}\hfill} + +%% same as sectionprefix +\def\tocsectionprefix{} + +%% toc formats +\newcounter{tocsectioncount} +\def\tocsection #1#2{ + \stepcounter{tocsectioncount} + \setcounter{tocsubsectioncount}{0} + \setcounter{tocsubsubsectioncount}{0} + % write + \smallskip\hyperlink{ln.\csname toc@sec.\thetocsectioncount\endcsname}{{\bf \tocsectionprefix\thetocsectioncount}.\hskip5pt {\color{blue}#1}\leaderfill#2}\par +} +\newcounter{tocsubsectioncount} +\def\tocsubsection #1#2{ + \stepcounter{tocsubsectioncount} + \setcounter{tocsubsubsectioncount}{0} + % write + {\hskip10pt\hyperlink{ln.\csname toc@subsec.\thetocsectioncount.\thetocsubsectioncount\endcsname}{{\bf \thetocsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par +} +\newcounter{tocsubsubsectioncount} +\def\tocsubsubsection #1#2{ + \stepcounter{tocsubsubsectioncount} + % write + {\hskip20pt\hyperlink{ln.\csname toc@subsubsec.\thetocsectioncount.\thetocsubsectioncount.\thetocsubsubsectioncount\endcsname}{{\bf \thetocsubsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par +} +\def\tocappendices{ + \medskip + \setcounter{tocsectioncount}0 + {\bf Appendices}\par + \smallskip + \def\tocsectionprefix{A} +} +\def\tocreferences#1{ + \medskip + {\hyperlink{ln.\csname toc@references\endcsname}{{\color{blue}\bf References}\leaderfill#1}}\par + \smallskip +} + + +%% definitions that must be loaded at begin document +\let\ian@olddocument\document +\def\document{ + \ian@olddocument + + \deflabel + \defcaption +} + +%% end +\ian@defaultoptions +\endinput diff --git a/docs/libs/iantheo.sty b/docs/libs/iantheo.sty new file mode 100644 index 0000000..d33a93d --- /dev/null +++ b/docs/libs/iantheo.sty @@ -0,0 +1,162 @@ +%% +%% iantheorem package: +%% Ian's customized theorem command +%% + +%% boolean to signal that this package was loaded +\newif\ifiantheo + +%% TeX format +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +%% package name +\ProvidesPackage{iantheo}[2016/11/10] + +%% options +\newif\ifsectionintheo +\DeclareOption{section_in_theo}{\sectionintheotrue} +\DeclareOption{no_section_in_theo}{\sectionintheofalse} +\newif\ifsubsectionintheo +\DeclareOption{subsection_in_theo}{\subsectionintheotrue} +\DeclareOption{no_subsection_in_theo}{\subsectionintheofalse} + +\def\iantheo@defaultoptions{ + \ExecuteOptions{section_in_theo, no_subsection_in_theo} + \ProcessOptions + + %%% reset at every new section + \ifsectionintheo + \let\iantheo@oldsection\section + \gdef\section{\setcounter{theocount}{0}\iantheo@oldsection} + \fi + + %% reset at every new subsection + \ifsubsectionintheo + \let\iantheo@oldsubsection\subsection + \gdef\subsection{\setcounter{theocount}{0}\iantheo@oldsubsection} + \fi +} + + +%% delimiters +\def\delimtitle#1{ + \par% + \leavevmode% + \raise.3em\hbox to\hsize{% + \lower0.3em\hbox{\vrule height0.3em}% + \hrulefill% + \ \lower.3em\hbox{#1}\ % + \hrulefill% + \lower0.3em\hbox{\vrule height0.3em}% + }% + \par\penalty10000% +} + +%% callable by ref +\def\delimtitleref#1{ + \par% +% + \ifdefined\ianclass% + % hyperref anchor% + \hrefanchor% + % define tag (for \label)% + \xdef\tag{#1}% + \fi% +% + \leavevmode% + \raise.3em\hbox to\hsize{% + \lower0.3em\hbox{\vrule height0.3em}% + \hrulefill% + \ \lower.3em\hbox{\bf #1}\ % + \hrulefill% + \lower0.3em\hbox{\vrule height0.3em}% + }% + \par\penalty10000% +} + +%% no title +\def\delim{ + \par% + \leavevmode\raise.3em\hbox to\hsize{% + \lower0.3em\hbox{\vrule height0.3em}% + \hrulefill% + \lower0.3em\hbox{\vrule height0.3em}% + }% + \par\penalty10000% +} + +%% end delim +\def\enddelim{ + \par\penalty10000% + \leavevmode% + \raise.3em\hbox to\hsize{% + \vrule height0.3em\hrulefill\vrule height0.3em% + }% + \par% +} + + +%% theorem +% counter +\newcounter{theocount} +% booleans (write section or subsection in equation number) +\def\theo#1{ + \stepcounter{theocount} + \ifdefined\ianclass + % hyperref anchor + \hrefanchor + \fi + % the number + \def\formattheo{\thetheocount} + % add subsection number + \ifsubsectionintheo + \let\tmp\formattheo + \edef\formattheo{\thesubsectioncount.\tmp} + \fi + % add section number + \ifsectionintheo + \let\tmp\formattheo + \edef\formattheo{\sectionprefix\thesectioncount.\tmp} + \fi + % define tag (for \label) + \xdef\tag{\formattheo} + % write + \delimtitle{\bf #1 \formattheo} +} +\let\endtheo\enddelim +%% theorem headers with name +\def\theoname#1#2{ + \theo{#1}\hfil({\it #2})\par\penalty10000\medskip% +} + + +%% qed symbol +\def\qedsymbol{$\square$} +\def\qed{\penalty10000\hfill\penalty10000\qedsymbol} + + +%% compatibility with article class +\ifdefined\ianclasstrue + \relax +\else + \def\thesectioncount{\thesection} + \def\thesubsectioncount{\thesubsection} + \def\sectionprefix{} +\fi + + +%% prevent page breaks after displayed equations +\newcount\prevpostdisplaypenalty +\def\nopagebreakaftereq{ + \prevpostdisplaypenalty=\postdisplaypenalty + \postdisplaypenalty=10000 +} +%% back to previous value +\def\restorepagebreakaftereq{ + \postdisplaypenalty=\prevpostdisplaypenalty +} + + +%% end +\iantheo@defaultoptions +\endinput diff --git a/docs/libs/largearray.sty b/docs/libs/largearray.sty new file mode 100644 index 0000000..ad5753b --- /dev/null +++ b/docs/libs/largearray.sty @@ -0,0 +1,19 @@ +%% +%% largearray package: +%% Array spanning the entire line +%% + +%% TeX format +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +%% package name +\ProvidesPackage{largearray}[2016/11/10] + +\RequirePackage{array} + +%% array spanning the entire line +\newlength\largearray@width +\setlength\largearray@width\textwidth +\addtolength\largearray@width{-10pt} +\def\largearray{\begin{array}{@{}>{\displaystyle}l@{}}\hphantom{\hspace{\largearray@width}}\\[-.5cm]} +\def\endlargearray{\end{array}} diff --git a/docs/libs/point.sty b/docs/libs/point.sty new file mode 100644 index 0000000..9f983dc --- /dev/null +++ b/docs/libs/point.sty @@ -0,0 +1,106 @@ +%% +%% Points package: +%% \point commands +%% + +%% TeX format +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +%% package name +\ProvidesPackage{point}[2017/06/13] + +%% options +\newif\ifresetatsection +\DeclareOption{reset_at_section}{\resetatsectiontrue} +\DeclareOption{no_reset_at_section}{\resetatsectionfalse} +\newif\ifresetatsubsection +\DeclareOption{reset_at_subsection}{\resetatsubsectiontrue} +\DeclareOption{no_reset_at_subsection}{\resetatsubsectionfalse} +\newif\ifresetattheo +\DeclareOption{reset_at_theo}{\resetattheotrue} +\DeclareOption{no_reset_at_theo}{\resetattheofalse} + +\def\point@defaultoptions{ + \ExecuteOptions{reset_at_section, reset_at_subsection, no_reset_at_theo} + \ProcessOptions + + %% reset at every new section + \ifresetatsection + \let\point@oldsection\section + \gdef\section{\resetpointcounter\point@oldsection} + \fi + %% reset at every new subsection + \ifresetatsubsection + \let\point@oldsubsection\subsection + \gdef\subsection{\resetpointcounter\point@oldsubsection} + \fi + + %% reset at every new theorem + \ifresetattheo + \ifdefined\iantheotrue + \let\point@oldtheo\theo + \gdef\theo{\resetpointcounter\point@oldtheo} + \fi + \fi +} + + +%% point +% counter +\newcounter{pointcount} +\def\point{ + \stepcounter{pointcount} + \setcounter{subpointcount}{0} + % hyperref anchor (only if the class is 'ian') + \ifdefined\ifianclass + \hrefanchor + % define tag (for \label) + \xdef\tag{\thepointcount} + \fi + % header + \indent{\bf \thepointcount\ - } +} + +%% subpoint +% counter +\newcounter{subpointcount} +\def\subpoint{ + \stepcounter{subpointcount} + \setcounter{subsubpointcount}0 + % hyperref anchor (only if the class is 'ian') + \ifdefined\ifianclass + \hrefanchor + % define tag (for \label) + \xdef\tag{\thepointcount-\thesubpointcount} + \fi + % header + \indent\hskip.5cm{\bf \thepointcount-\thesubpointcount\ - } +} + +%% subsubpoint +% counter +\newcounter{subsubpointcount} +\def\subsubpoint{ + \stepcounter{subsubpointcount} + % hyperref anchor (only if the class is 'ian') + \ifdefined\ifianclass + \hrefanchor + % define tag (for \label) + \xdef\tag{\thepointcount-\thesubpointcount-\thesubsubpointcount} + \fi + \indent\hskip1cm{\bf \thepointcount-\thesubpointcount-\thesubsubpointcount\ - } +} + + +%% reset point counters +\def\resetpointcounter{ + \setcounter{pointcount}{0} + \setcounter{subpointcount}{0} + \setcounter{subsubpointcount}{0} +} + + + +%% end +\point@defaultoptions +\endinput diff --git a/docs/nstrophy_doc.tex b/docs/nstrophy_doc.tex new file mode 100644 index 0000000..54e802e --- /dev/null +++ b/docs/nstrophy_doc.tex @@ -0,0 +1,336 @@ +\documentclass{ian} + +\usepackage{largearray} + +\begin{document} + +\hbox{} +\hfil{\bf\LARGE +{\tt nstrophy} +} +\vfill + +\tableofcontents + +\vfill +\eject + +\setcounter{page}1 +\pagestyle{plain} + +\section{Description of the computation} +\subsection{Irreversible equation} +\indent Consider the incompressible Navier-Stokes equation in 2 dimensions +\begin{equation} + \partial_tU=\nu\Delta U+G-(U\cdot\nabla)U,\quad + \nabla\cdot U=0 + \label{ins} +\end{equation} +in which $G$ is the forcing term. +We take periodic boundary conditions, so, at every given time, $U(t,\cdot)$ is a function on the torus $\mathbb T^2:=\mathbb R^2/(L\mathbb Z)^2$. We represent $U(t,\cdot)$ using its Fourier series +\begin{equation} + \hat U_k(t):=\frac1{L^2}\int_{\mathbb T^2}dx\ e^{i\frac{2\pi}L kx}U(t,x) +\end{equation} +for $k\in\mathbb Z^2$, and rewrite~\-(\ref{ins}) as +\begin{equation} + \partial_t\hat U_k= + -\frac{4\pi^2}{L^2}\nu k^2\hat U_k+\hat G_k + -i\frac{2\pi}L\sum_{\displaystyle\mathop{\scriptstyle p,q\in\mathbb Z^2}_{p+q=k}} + (q\cdot\hat U_p)\hat U_q + ,\quad + k\cdot\hat U_k=0 + \label{ins_k} +\end{equation} +We then reduce the equation to a scalar one, by writing +\begin{equation} + \hat U_k=\frac{i2\pi k^\perp}{L|k|}\hat u_k\equiv\frac{i2\pi}{L|k|}(-k_y\hat u_k,k_x\hat u_k) + \label{udef} +\end{equation} +in terms of which, multiplying both sides of the equation by $\frac L{i2\pi}\frac{k^\perp}{|k|}$, +\begin{equation} + \partial_t\hat u_k= + -\frac{4\pi^2}{L^2}\nu k^2\hat u_k + +\hat g_k + +\frac{4\pi^2}{L^2|k|}\sum_{\displaystyle\mathop{\scriptstyle p,q\in\mathbb Z^2}_{p+q=k}} + \frac{(q\cdot p^\perp)(k^\perp\cdot q^\perp)}{|q||p|}\hat u_p\hat u_q + \label{ins_k} +\end{equation} +with +\begin{equation} + \hat g_k:=\frac{Lk^\perp}{2i\pi|k|}\cdot\hat G_k + . + \label{gdef} +\end{equation} +Furthermore +\begin{equation} + (q\cdot p^\perp)(k^\perp\cdot q^\perp) + = + (q\cdot p^\perp)(q^2+p\cdot q) +\end{equation} +and $q\cdot p^\perp$ is antisymmetric under exchange of $q$ and $p$. Therefore, +\begin{equation} + \partial_t\hat u_k= + -\frac{4\pi^2}{L^2}\nu k^2\hat u_k+\hat g_k + +\frac{4\pi^2}{L^2|k|}T(\hat u,k) + \label{ins_k} +\end{equation} +with +\begin{equation} + T(\hat u,k):= + \sum_{\displaystyle\mathop{\scriptstyle p,q\in\mathbb Z^2}_{p+q=k}} + \frac{(q\cdot p^\perp)|q|}{|p|}\hat u_p\hat u_q + . + \label{T} +\end{equation} +We truncate the Fourier modes and assume that $\hat u_k=0$ if $|k_1|>K_1$ or $|k_2|>K_2$. Let +\begin{equation} + \mathcal K:=\{(k_1,k_2),\ |k_1|\leqslant K_1,\ |k_2|\leqslant K_2\} + . +\end{equation} +\bigskip + +\point{\bf Reality}. +Since $U$ is real, $\hat U_{-k}=\hat U_k^*$, and so +\begin{equation} + \hat u_{-k}=\hat u_k^* + . + \label{realu} +\end{equation} +Similarly, +\begin{equation} + \hat g_{-k}=\hat g_k^* + . + \label{realg} +\end{equation} +Thus, +\begin{equation} + T(\hat u,-k) + = + T(\hat u,k)^* + . + \label{realT} +\end{equation} +\bigskip + +\point{\bf FFT}. We compute T using a fast Fourier transform, defined as +\begin{equation} + \mathcal F(f)(n):=\sum_{m\in\mathcal N}e^{-\frac{2i\pi}{N_1}m_1n_1-\frac{2i\pi}{N_2}m_2n_2}f(m_1,m_2) +\end{equation} +where +\begin{equation} + \mathcal N:=\{(n_1,n_2),\ 0\leqslant n_1< N_1,\ 0\leqslant n_2< N_2\} +\end{equation} +for some fixed $N_1,N_2$. The transform is inverted by +\begin{equation} + \frac1{N_1N_2}\mathcal F^*(\mathcal F(f))(n)=f(n) +\end{equation} +in which $\mathcal F^*$ is defined like $\mathcal F$ but with the opposite phase. +\bigskip + +\indent The condition $p+q=k$ can be rewritten as +\begin{equation} + T(\hat u,k) + = + \sum_{p,q\in\mathcal K} + \frac1{N_1N_2} + \sum_{n\in\mathcal N}e^{-\frac{2i\pi}{N_1}n_1(p_1+q_1-k_1)-\frac{2i\pi}{N_2}n_2(p_2+q_2-k_2)} + (q\cdot p^\perp)\frac{|q|}{|p|}\hat u_q\hat u_p +\end{equation} +provided +\begin{equation} + N_i>3K_i. +\end{equation} +Indeed, $\sum_{n_i=0}^{N_i}e^{-\frac{2i\pi}{N_i}n_im_i}$ vanishes unless $m_i=0\%N_i$ (in which $\%N_i$ means `modulo $N_i$'), and, if $p,q,k\in\mathcal K$, then $|p_i+q_i-k_i|\leqslant3K_i$, so, as long as $N_i>3K_i$, then $(p_i+q_i-k_i)=0\%N_i$ implies $p_i+q_i=k_i$. +Therefore, +\begin{equation} + T(\hat u,k) + = + \textstyle + \frac1{N_1N_2} + \mathcal F^*\left( + \mathcal F\left(\frac{p_x\hat u_p}{|p|}\right)(n) + \mathcal F\left(q_y|q|\hat u_q\right)(n) + - + \mathcal F\left(\frac{p_y\hat u_p}{|p|}\right)(n) + \mathcal F\left(q_x|q|\hat u_q\right)(n) + \right)(k) +\end{equation} +\bigskip + +\point{\bf Energy}. +We define the energy as +\begin{equation} + E(t)=\frac12\int\frac{dx}{L^2}\ U^2(t,x)=\frac12\sum_{k\in\mathbb Z^2}|\hat U_k|^2 + . +\end{equation} +We have +\begin{equation} + \partial_t E=\int\frac{dx}{L^2}\ U\partial tU + = + \nu\int\frac{dx}{L^2}\ U\Delta U + +\int\frac{dx}{L^2}\ UG + -\int\frac{dx}{L^2}\ U(U\cdot\nabla)U + . +\end{equation} +Since we have periodic boundary conditions, +\begin{equation} + \int dx\ U\Delta U=-\int dx\ |\nabla U|^2 + . +\end{equation} +Furthermore, +\begin{equation} + I:=\int dx\ U(U\cdot\nabla)U + =\sum_{i,j=1,2}\int dx\ U_iU_j\partial_jU_i + = + -\sum_{i,j=1,2}\int dx\ (\partial_jU_i)U_jU_i + -\sum_{i,j=1,2}\int dx\ U_i(\partial_jU_j)U_i +\end{equation} +and since $\nabla\cdot U=0$, +\begin{equation} + I + = + -I +\end{equation} +and so $I=0$. +Thus, +\begin{equation} + \partial_t E= + \int\frac{dx}{L^2}\ \left(-\nu|\nabla U|^2+UG\right) + = + \sum_{k\in\mathbb Z^2}\left(-\frac{4\pi^2}{L^2}\nu k^2|\hat U_k|^2+\hat U_{-k}\hat G_k\right) + . +\end{equation} +Furthermore, +\begin{equation} + \sum_{k\in\mathbb Z^2}k^2|\hat U_k|^2\geqslant + \sum_{k\in\mathbb Z^2}|\hat U_k|^2-|\hat U_0|^2 + =2E-|\hat U_0|^2 +\end{equation} +so +\begin{equation} + \partial_t E\leqslant -\frac{8\pi^2}{L^2}\nu E+\frac{4\pi^2}{L^2}\nu\hat U_0^2+\sum_{k\in\mathbb Z^2}\hat U_{-k}\hat G_k + \leqslant + -\frac{8\pi^2}{L^2}\nu E+\frac{4\pi^2}{L^2}\nu\hat U_0^2+ + \|\hat G\|_2\sqrt{2E} + . +\end{equation} +In particular, if $\hat U_0=0$ (which corresponds to keeping the center of mass fixed), +\begin{equation} + \partial_t E\leqslant -\frac{8\pi^2}{L^2}\nu E+\|\hat G\|_2\sqrt{2E} + . +\end{equation} +Now, if $\frac{8\pi^2}{L^2}\nu\sqrt E<\sqrt2\|\hat G\|_2$, then +\begin{equation} + \frac{\partial_t E}{-\frac{8\pi^2}{L^2}\nu E+\|\hat G\|_2\sqrt{2E}}\leqslant1 +\end{equation} +and so +\begin{equation} + \frac{\log(1-\frac{8\pi^2\nu}{L^2\sqrt2\|\hat G\|_2}\sqrt{E(t)})}{-\frac{4\pi^2}{L^2}\nu}\leqslant t+ + \frac{\log(1-\frac{8\pi^2\nu}{L^2\sqrt2\|\hat G\|_2}\sqrt{E(0)})}{-\frac{4\pi^2}{L^2}\nu} +\end{equation} +and +\begin{equation} + E(t) + \leqslant + \left( + \frac{L^2\sqrt2\|\hat G\|_2}{8\pi^2\nu}(1-e^{-\frac{4\pi^2}{L^2}\nu t}) + +e^{-\frac{4\pi^2}{L^2}\nu t}\sqrt{E(0)} + \right)^2 + . +\end{equation} +If $\frac{8\pi^2}{L^2}\nu\sqrt E>\sqrt2\|\hat G\|_2$, +\begin{equation} + \frac{\partial_t E}{-\frac{8\pi^2}{L^2}\nu E+\|\hat G\|_2\sqrt{2E}}\geqslant1 +\end{equation} +and so +\begin{equation} + \frac{\log(\frac{8\pi^2\nu}{L^2\sqrt2\|\hat G\|_2}\sqrt{E(t)}-1)}{-\frac{4\pi^2}{L^2}\nu}\geqslant t+ + \frac{\log(\frac{8\pi^2\nu}{L^2\sqrt2\|\hat G\|_2}\sqrt{E(0)})-1}{-\frac{4\pi^2}{L^2}\nu} +\end{equation} +and +\begin{equation} + E(t) + \leqslant + \left( + \frac{L^2\sqrt2\|\hat G\|_2}{8\pi^2\nu}(1-e^{-\frac{4\pi^2}{L^2}\nu t}) + +e^{-\frac{4\pi^2}{L^2}\nu t}\sqrt{E(0)} + \right)^2 + . +\end{equation} +\bigskip + +\point{\bf Enstrophy}. +The enstrophy is defined as +\begin{equation} + \mathcal En(t)=\int\frac{dx}{L^2}\ |\nabla U|^2 + =\frac{4\pi^2}{L^2}\sum_{k\in\mathbb Z^2}k^2|\hat U_k|^2 + . +\end{equation} +\bigskip + +\point{\bf Numerical instability}. +In order to prevent the algorithm from blowing up, it is necessary to impose the reality of $u(x)$ by hand, otherwise, truncation errors build up, and lead to divergences. +It is sufficient to ensure that the convolution term $T(\hat u,k)$ satisfies $T(\hat u,-k)=T(\hat u,k)^*$. +After imposing this condition, the algorithm no longer blows up, but it is still unstable (for instance, increasing $K_1$ or $K_2$ leads to very different results). + +\subsection{Reversible equation} +\indent The reversible equation is similar to\-~(\ref{ins}) but instead of fixing the viscosity, we fix the enstrophy\-~\cite{Ga22}. +It is defined directly in Fourier space: +\begin{equation} + \partial_t\hat U_k= + -\frac{4\pi^2}{L^2}\alpha(\hat U) k^2\hat U_k+\hat G_k + -i\frac{2\pi}L\sum_{\displaystyle\mathop{\scriptstyle p,q\in\mathbb Z^2}_{p+q=k}} + (q\cdot\hat U_p)\hat U_q + ,\quad + k\cdot\hat U_k=0 +\end{equation} +where $\alpha$ is chosen such that the enstrophy is constant. +In terms of $\hat u$\-~(\ref{udef}), (\ref{gdef}), (\ref{T}): +\begin{equation} + \partial_t\hat u_k= + -\frac{4\pi^2}{L^2}\alpha(\hat u) k^2\hat u_k + +\hat g_k + +\frac{4\pi^2}{L^2|k|}T(\hat u,k) + . + \label{rns_k} +\end{equation} +To compute $\alpha$, we use the constancy of the enstrophy: +\begin{equation} + \sum_{k\in\mathbb Z^2}k^2\hat U_k\cdot\partial_t\hat U_k + =0 +\end{equation} +which, in terms of $\hat u$ is +\begin{equation} + \sum_{k\in\mathbb Z^2}k^2\hat u_k^*\partial_t\hat u_k + =0 +\end{equation} +that is +\begin{equation} + \frac{4\pi^2}{L^2}\alpha(\hat u)\sum_{k\in\mathbb Z^2}k^4|\hat u_k|^2 + = + \sum_{k\in\mathbb Z^2}k^2\hat u_k^*\hat g_k + +\frac{4\pi^2}{L^2}\sum_{k\in\mathbb Z^2}|k|\hat u_k^*T(\hat u,k) +\end{equation} +and so +\begin{equation} + \alpha(\hat u) + =\frac{\frac{L^2}{4\pi^2}\sum_k k^2\hat u_k^*\hat g_k+\sum_k|k|\hat u_k^*T(\hat u,k)}{\sum_kk^4|\hat u_k|^2} + . +\end{equation} +Note that, by\-~(\ref{realu})-(\ref{realT}), +\begin{equation} + \alpha(\hat u)\in\mathbb R + . +\end{equation} + + + +\vfill +\eject + +\begin{thebibliography}{WWW99} +\small +\IfFileExists{bibliography/bibliography.tex}{\input bibliography/bibliography.tex}{} +\end{thebibliography} + +\end{document} diff --git a/docs/nstrophy_doc/Makefile b/docs/nstrophy_doc/Makefile deleted file mode 100644 index c63e53f..0000000 --- a/docs/nstrophy_doc/Makefile +++ /dev/null @@ -1,70 +0,0 @@ -PROJECTNAME=$(basename $(wildcard *.tex)) -LIBS=$(notdir $(wildcard libs/*)) -FIGS=$(notdir $(wildcard figs/*.fig)) - -PDFS=$(addsuffix .pdf, $(PROJECTNAME)) -SYNCTEXS=$(addsuffix .synctex.gz, $(PROJECTNAME)) - -all: $(PROJECTNAME) - -$(PROJECTNAME): $(LIBS) $(FIGS) - pdflatex -file-line-error $@.tex - pdflatex -file-line-error $@.tex - pdflatex -synctex=1 $@.tex - -$(PROJECTNAME).aux: $(LIBS) $(FIGS) - pdflatex -file-line-error -draftmode $(PROJECTNAME).tex - - -$(SYNCTEXS): $(LIBS) $(FIGS) - pdflatex -synctex=1 $(patsubst %.synctex.gz, %.tex, $@) - -install: $(PROJECTNAME) - cp $^.pdf $(INSTALLDIR)/ - -install-synctex: $(SYNCTEXS) - cp $^ $(INSTALLDIR)/ - -install-bibliography: bibliography/bibliography.tex - cp bibliography/bibliography.tex $(INSTALLDIR)/bibliography/ - - -libs: $(LIBS) - -$(LIBS): - ln -fs libs/$@ ./ - -bibliography/bibliography.tex: $(PROJECTNAME).aux - BBlog -c bibliography/conf.BBlog -d $(BIBLIOGRAPHY) -b bibliography/bibliography.tex - -figs: $(FIGS) - -$(FIGS): - make -C figs/$@ - ln -fs figs/$@/*.pdf ./ - - -clean-aux: clean-figs-aux - rm -f $(addsuffix .aux, $(PROJECTNAME)) - rm -f $(addsuffix .log, $(PROJECTNAME)) - rm -f $(addsuffix .out, $(PROJECTNAME)) - rm -f $(addsuffix .toc, $(PROJECTNAME)) - -clean-libs: - rm -f $(LIBS) - -clean-figs: - $(foreach fig,$(addprefix figs/, $(FIGS)), make -C $(fig) clean; ) - rm -f $(notdir $(wildcard figs/*.fig/*.pdf)) - -clean-figs-aux: - $(foreach fig,$(addprefix figs/, $(FIGS)), make -C $(fig) clean-aux; ) - - -clean-tex: - rm -f $(PDFS) $(SYNCTEXS) - -clean-bibliography: - rm -f bibliography/bibliography.tex - -clean: clean-aux clean-tex clean-libs clean-figs diff --git a/docs/nstrophy_doc/bibliography/conf.BBlog b/docs/nstrophy_doc/bibliography/conf.BBlog deleted file mode 100644 index abe5ad4..0000000 --- a/docs/nstrophy_doc/bibliography/conf.BBlog +++ /dev/null @@ -1,6 +0,0 @@ -format: \bibitem[%token%]{%citeref%}%author:auth% - {\it %title%}, %journal%, %year%|doi?,\par\penalty10000%n%doi:{\tt\color{blue}\href{http://dx.doi.org/%doi%}{%doi%}}||arxiv?, arxiv:{\tt\color{blue}\href{http://arxiv.org/abs/%arxiv%}{%arxiv%}}|.\par\medskip%n% %n% -out_file: bibliography.tex -filter:auth: s/([A-Z])[^, ]* /\1. /g; s/ ([^ ,]*),/_\1,_/g; s/ ([^ ,]*)$/_\1/g; s/ //g; s/_/ /g; -filter:journal: s/([a-zA-Z]) ([0-9]+)/\1~\\-\2/g; -aux_cmd: \\citation{ -extra: Gallavotti2022:Ga22:Ga22:\bibitem[%token%]{%citeref%}G.\-~Gallavotti - {\it Navier-Stokes and equivalence conjectures}, preprint, 2022\par\penalty10000%n%arxiv:{\tt\color{blue}\href{https://arxiv.org/abs/2211.02961}{2211.02961}}%n%%n% diff --git a/docs/nstrophy_doc/libs/ian.cls b/docs/nstrophy_doc/libs/ian.cls deleted file mode 100644 index 538a108..0000000 --- a/docs/nstrophy_doc/libs/ian.cls +++ /dev/null @@ -1,659 +0,0 @@ -%% -%% Ian's class file -%% - -%% TeX format -\NeedsTeXFormat{LaTeX2e}[1995/12/01] - -%% class name -\ProvidesClass{ian}[2017/09/29] - -%% boolean to signal that this class is being used -\newif\ifianclass - -%% options -% no section numbering in equations -\DeclareOption{section_in_eq}{\sectionsineqtrue} -\DeclareOption{section_in_fig}{\sectionsinfigtrue} -\DeclareOption{section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} -\DeclareOption{section_in_all}{\sectionsineqtrue\sectionsinfigtrue\PassOptionsToPackage{section_in_theo}{iantheo}} -\DeclareOption{subsection_in_eq}{\subsectionsineqtrue} -\DeclareOption{subsection_in_fig}{\subsectionsinfigtrue} -\DeclareOption{subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} -\DeclareOption{subsection_in_all}{\subsectionsineqtrue\subsectionsinfigtrue\PassOptionsToPackage{subsection_in_theo}{iantheo}} -\DeclareOption{no_section_in_eq}{\sectionsineqfalse} -\DeclareOption{no_section_in_fig}{\sectionsinfigfalse} -\DeclareOption{no_section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} -\DeclareOption{no_section_in_all}{\sectionsineqfalse\sectionsinfigfalse\PassOptionsToPackage{no_section_in_theo}{iantheo}} -\DeclareOption{no_subsection_in_eq}{\subsectionsineqfalse} -\DeclareOption{no_subsection_in_fig}{\subsectionsinfigfalse} -\DeclareOption{no_subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} -\DeclareOption{no_subsection_in_all}{\subsectionsineqfalse\subsectionsinfigfalse\PassOptionsToPackage{no_subsection_in_theo}{iantheo}} -% reset point -\DeclareOption{point_reset_at_section}{\PassOptionsToPackage{reset_at_section}{point}} -\DeclareOption{point_no_reset_at_section}{\PassOptionsToPackage{no_reset_at_section}{point}} -\DeclareOption{point_reset_at_theo}{\PassOptionsToPackage{reset_at_theo}{point}} -\DeclareOption{point_no_reset_at_theo}{\PassOptionsToPackage{no_reset_at_theo}{point}} - -\def\ian@defaultoptions{ - \ExecuteOptions{section_in_all, no_subsection_in_all} - \ProcessOptions - - %% required packages - \RequirePackage{iantheo} - \RequirePackage{point} - \RequirePackage{color} - \RequirePackage{marginnote} - \RequirePackage{amssymb} - \PassOptionsToPackage{hidelinks}{hyperref} - \RequirePackage{hyperref} -} - -%% paper dimensions -\setlength\paperheight{297mm} -\setlength\paperwidth{210mm} - -%% fonts -\input{size11.clo} -\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} -\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} -\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} -\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} -\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} - -%% text dimensions -\hoffset=-50pt -\voffset=-72pt -\textwidth=460pt -\textheight=704pt - - -%% remove default indentation -\parindent=0pt -%% indent command -\def\indent{\hskip20pt} - -%% something is wrong with \thepage, redefine it -\gdef\thepage{\the\c@page} - -%% array lines (to use the array environment) -\setlength\arraycolsep{5\p@} -\setlength\arrayrulewidth{.4\p@} - - -%% correct vertical alignment at the end of a document -\AtEndDocument{ - \vfill - \eject -} - - -%% hyperlinks -% hyperlinkcounter -\newcounter{lncount} -% hyperref anchor -\def\hrefanchor{% -\stepcounter{lncount}% -\hypertarget{ln.\thelncount}{}% -} - -%% define a command and write it to aux file -\def\outdef#1#2{% - % define command% - \expandafter\xdef\csname #1\endcsname{#2}% - % hyperlink number% - \expandafter\xdef\csname #1@hl\endcsname{\thelncount}% - % write command to aux% - \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1\endcsname{\csname #1\endcsname}}% - \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1@hl\endcsname{\thelncount}}% -} - -%% can call commands even when they are not defined -\def\safe#1{% - \ifdefined#1% - #1% - \else% - {\color{red}\bf?}% - \fi% -} - -%% define a label for the latest tag -%% label defines a command containing the string stored in \tag -\def\deflabel{ - \def\label##1{\expandafter\outdef{label@##1}{\safe\tag}} - - \def\ref##1{% - % check whether the label is defined (hyperlink runs into errors if this check is omitted) - \ifcsname label@##1@hl\endcsname% - \hyperlink{ln.\csname label@##1@hl\endcsname}{{\color{blue}\safe\csname label@##1\endcsname}}% - \else% - \ifcsname label@##1\endcsname% - {\color{blue}\csname ##1\endcsname}% - \else% - {\bf ??}% - \fi% - \fi% - } -} - - -%% make a custom link at any given location in the document -\def\makelink#1#2{% - \hrefanchor% - \outdef{label@#1}{#2}% -} - - -%% section command -% counter -\newcounter{sectioncount} -% space before section -\newlength\secskip -\setlength\secskip{40pt} -% a prefix to put before the section number, e.g. A for appendices -\def\sectionprefix{} -% define some lengths -\newlength\secnumwidth -\newlength\sectitlewidth -\def\section#1{ - % reset counters - \stepcounter{sectioncount} - \setcounter{subsectioncount}{0} - \ifsectionsineq - \setcounter{seqcount}0 - \fi - \ifsectionsinfig - \setcounter{figcount}0 - \fi - - % space before section (if not first) - \ifnum\thesectioncount>1 - \vskip\secskip - \penalty-1000 - \fi - - % hyperref anchor - \hrefanchor - % define tag (for \label) - \xdef\tag{\sectionprefix\thesectioncount} - - % get widths - \def\@secnum{{\bf\Large\sectionprefix\thesectioncount.\hskip10pt}} - \settowidth\secnumwidth{\@secnum} - \setlength\sectitlewidth\textwidth - \addtolength\sectitlewidth{-\secnumwidth} - - % print name - \parbox{\textwidth}{ - \@secnum - \parbox[t]{\sectitlewidth}{\Large\bf #1}} - - % write to table of contents - \iftoc - % save lncount in aux variable which is written to toc - \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@sec.\thesectioncount\endcsname{\thelncount}} - \write\tocoutput{\noexpand\tocsection{#1}{\thepage}} - \fi - - %space - \par\penalty10000 - \bigskip\penalty10000 -} - -%% subsection -% counter -\newcounter{subsectioncount} -% space before subsection -\newlength\subsecskip -\setlength\subsecskip{30pt} -\def\subsection#1{ - % counters - \stepcounter{subsectioncount} - \setcounter{subsubsectioncount}{0} - \ifsubsectionsineq - \setcounter{seqcount}0 - \fi - \ifsubsectionsinfig - \setcounter{figcount}0 - \fi - - % space before subsection (if not first) - \ifnum\thesubsectioncount>1 - \vskip\subsecskip - \penalty-500 - \fi - - % hyperref anchor - \hrefanchor - % define tag (for \label) - \xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount} - - % get widths - \def\@secnum{{\bf\large\hskip.5cm\sectionprefix\thesectioncount.\thesubsectioncount.\hskip5pt}} - \settowidth\secnumwidth{\@secnum} - \setlength\sectitlewidth\textwidth - \addtolength\sectitlewidth{-\secnumwidth} - % print name - \parbox{\textwidth}{ - \@secnum - \parbox[t]{\sectitlewidth}{\large\bf #1}} - - % write to table of contents - \iftoc - % save lncount in aux variable which is written to toc - \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsec.\thesectioncount.\thesubsectioncount\endcsname{\thelncount}} - \write\tocoutput{\noexpand\tocsubsection{#1}{\thepage}} - \fi - - % space - \par\penalty10000 - \medskip\penalty10000 -} - -%% subsubsection -% counter -\newcounter{subsubsectioncount} -% space before subsubsection -\newlength\subsubsecskip -\setlength\subsubsecskip{20pt} -\def\subsubsection#1{ - % counters - \stepcounter{subsubsectioncount} - - % space before subsubsection (if not first) - \ifnum\thesubsubsectioncount>1 - \vskip\subsubsecskip - \penalty-500 - \fi - - % hyperref anchor - \hrefanchor - % define tag (for \label) - \xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount} - - % get widths - \def\@secnum{{\bf\hskip1.cm\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount.\hskip5pt}} - \settowidth\secnumwidth{\@secnum} - \setlength\sectitlewidth\textwidth - \addtolength\sectitlewidth{-\secnumwidth} - % print name - \parbox{\textwidth}{ - \@secnum - \parbox[t]{\sectitlewidth}{\large\bf #1}} - - % write to table of contents - \iftoc - % save lncount in aux variable which is written to toc - \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsubsec.\thesectioncount.\thesubsectioncount.\thesubsubsectioncount\endcsname{\thelncount}} - \write\tocoutput{\noexpand\tocsubsubsection{#1}{\thepage}} - \fi - - % space - \par\penalty10000 - \medskip\penalty10000 -} - -%% itemize -\newlength\itemizeskip -% left margin for items -\setlength\itemizeskip{20pt} -\newlength\itemizeseparator -% space between the item symbol and the text -\setlength\itemizeseparator{5pt} -% penalty preceding an itemize -\newcount\itemizepenalty -\itemizepenalty=0 -% counter counting the itemize level -\newcounter{itemizecount} - -% item symbol -\def\itemizept#1{ - \ifnum#1=1 - \textbullet - \else - $\scriptstyle\blacktriangleright$ - \fi -} - - -\newlength\current@itemizeskip -\setlength\current@itemizeskip{0pt} -\def\itemize{% - \par\expandafter\penalty\the\itemizepenalty\medskip\expandafter\penalty\the\itemizepenalty% - \addtocounter{itemizecount}{1}% - \addtolength\current@itemizeskip{\itemizeskip}% - \leftskip\current@itemizeskip% -} -\def\enditemize{% - \addtocounter{itemizecount}{-1}% - \addtolength\current@itemizeskip{-\itemizeskip}% - \par\expandafter\penalty\the\itemizepenalty\leftskip\current@itemizeskip% - \medskip\expandafter\penalty\the\itemizepenalty% -} -\newlength\itempt@total -\def\item{ - \settowidth\itempt@total{\itemizept\theitemizecount} - \addtolength\itempt@total{\itemizeseparator} - \par - \medskip - \hskip-\itempt@total\itemizept\theitemizecount\hskip\itemizeseparator -} - - -%% prevent page breaks after itemize -\newcount\previtemizepenalty -\def\nopagebreakafteritemize{ - \previtemizepenalty=\itemizepenalty - \itemizepenalty=10000 -} -%% back to previous value -\def\restorepagebreakafteritemize{ - \itemizepenalty=\previtemizepenalty -} - -%% enumerate -\newcounter{enumerate@count} -\def\enumerate{ - \setcounter{enumerate@count}0 - \let\olditem\item - \let\olditemizept\itemizept - \def\item{ - % counter - \stepcounter{enumerate@count} - % set header - \def\itemizept{\theenumerate@count.} - % hyperref anchor - \hrefanchor - % define tag (for \label) - \xdef\tag{\theenumerate@count} - \olditem - } - \itemize -} -\def\endenumerate{ - \enditemize - \let\item\olditem - \let\itemizept\olditemizept -} - - -%% equation numbering -% counter -\newcounter{seqcount} -% booleans (write section or subsection in equation number) -\newif\ifsectionsineq -\newif\ifsubsectionsineq -\def\seqcount{ - \stepcounter{seqcount} - % the output - \edef\seqformat{\theseqcount} - % add subsection number - \ifsubsectionsineq - \let\tmp\seqformat - \edef\seqformat{\thesubsectioncount.\tmp} - \fi - % add section number - \ifsectionsineq - \let\tmp\seqformat - \edef\seqformat{\sectionprefix\thesectioncount.\tmp} - \fi - % define tag (for \label) - \xdef\tag{\seqformat} - % write number - \marginnote{\hfill(\seqformat)} -} -%% equation environment compatibility -\def\equation{\hrefanchor$$\seqcount} -\def\endequation{$$\@ignoretrue} - - -%% figures -% counter -\newcounter{figcount} -% booleans (write section or subsection in equation number) -\newif\ifsectionsinfig -\newif\ifsubsectionsinfig -% width of figures -\newlength\figwidth -\setlength\figwidth\textwidth -\addtolength\figwidth{-2.5cm} -% caption -\def\defcaption{ - \long\def\caption##1{ - \stepcounter{figcount} - - % hyperref anchor - \hrefanchor - - % the number of the figure - \edef\figformat{\thefigcount} - % add subsection number - \ifsubsectionsinfig - \let\tmp\figformat - \edef\figformat{\thesubsectioncount.\tmp} - \fi - % add section number - \ifsectionsinfig - \let\tmp\figformat - \edef\figformat{\sectionprefix\thesectioncount.\tmp} - \fi - - % define tag (for \label) - \xdef\tag{\figformat} - - % write - \hfil fig \figformat: \parbox[t]{\figwidth}{\leavevmode\small##1} - - % space - \par\bigskip - } -} -%% short caption: centered -\def\captionshort#1{ - \stepcounter{figcount} - - % hyperref anchor - \hrefanchor - - % the number of the figure - \edef\figformat{\thefigcount} - % add section number - \ifsectionsinfig - \let\tmp\figformat - \edef\figformat{\sectionprefix\thesectioncount.\tmp} - \fi - - % define tag (for \label) - \xdef\tag{\figformat} - - % write - \hfil fig \figformat: {\small#1} - - %space - \par\bigskip -} - -%% environment -\def\figure{ - \par - \vfil\penalty100\vfilneg - \bigskip -} -\def\endfigure{ - \par - \vfil\penalty100\vfilneg - \bigskip -} - - -%% start appendices -\def\appendix{ - \vfill - \pagebreak - - % counter - \setcounter{sectioncount}0 - - % prefix - \def\sectionprefix{A} - - % write - {\bf \LARGE Appendices}\par\penalty10000\bigskip\penalty10000 - - % add a mention in the table of contents - \iftoc - \immediate\write\tocoutput{\noexpand\tocappendices}\penalty10000 - \fi - - %% uncomment for new page for each appendix - %\def\seqskip{\vfill\pagebreak} -} - - -%% bibliography -% size of header -\newlength\bibheader -\def\thebibliography#1{ - \hrefanchor - - % add a mention in the table of contents - \iftoc - % save lncount in aux variable which is written to toc - \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@references\endcsname{\thelncount}} - \write\tocoutput{\noexpand\tocreferences{\thepage}}\penalty10000 - \fi - - % write - {\bf \LARGE References}\par\penalty10000\bigskip\penalty10000 - % width of header - \settowidth\bibheader{[#1]} - \leftskip\bibheader -} -% end environment -\def\endthebibliography{ - \par\leftskip0pt -} - -%% bibitem command -\def\bibitem[#1]#2{% - \hrefanchor% - \outdef{label@cite#2}{#1}% - \hskip-\bibheader% - \makebox[\bibheader]{\cite{#2}\hfill}% -} - -%% cite command (adapted from latex.ltx) -% @tempswa is set to true when there is an optional argument -\newif\@tempswa -\def\cite{% - % check whether there is an optional argument (if there is none, add on empty '[]') - \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}% -} -% command with optional argument -\def\@citex[#1]#2{\leavevmode% - % initialize loop - \let\@citea\@empty% - % format - \@cite{% - % loop over ',' separated list - \@for\@citeb:=#2\do{% - % text to add at each iteration of the loop (separator between citations) - \@citea\def\@citea{,\ }% - % add entry to citelist - \@writecitation{\@citeb}% - \ref{cite\@citeb}% - }% - }% - % add optional argument text (as an argument to '\@cite') - {#1}% -} -\def\@cite#1#2{% - [#1\if@tempswa , #2\fi]% -} -%% add entry to citelist after checking it has not already been added -\def\@writecitation#1{% - \ifcsname if#1cited\endcsname% - \else% - \expandafter\newif\csname if#1cited\endcsname% - \immediate\write\@auxout{\string\citation{#1}}% - \fi% -} - -%% table of contents -% boolean -\newif\iftoc -\def\tableofcontents{ - {\bf \large Table of contents:}\par\penalty10000\bigskip\penalty10000 - - % copy content from file - \IfFileExists{\jobname.toc}{\input{\jobname.toc}}{{\tt error: table of contents missing}} - - % open new toc - \newwrite\tocoutput - \immediate\openout\tocoutput=\jobname.toc - - \toctrue -} -%% close file -\AtEndDocument{ - % close toc - \iftoc - \immediate\closeout\tocoutput - \fi -} - - -%% fill line with dots -\def\leaderfill{\leaders\hbox to 1em {\hss. \hss}\hfill} - -%% same as sectionprefix -\def\tocsectionprefix{} - -%% toc formats -\newcounter{tocsectioncount} -\def\tocsection #1#2{ - \stepcounter{tocsectioncount} - \setcounter{tocsubsectioncount}{0} - \setcounter{tocsubsubsectioncount}{0} - % write - \smallskip\hyperlink{ln.\csname toc@sec.\thetocsectioncount\endcsname}{{\bf \tocsectionprefix\thetocsectioncount}.\hskip5pt {\color{blue}#1}\leaderfill#2}\par -} -\newcounter{tocsubsectioncount} -\def\tocsubsection #1#2{ - \stepcounter{tocsubsectioncount} - \setcounter{tocsubsubsectioncount}{0} - % write - {\hskip10pt\hyperlink{ln.\csname toc@subsec.\thetocsectioncount.\thetocsubsectioncount\endcsname}{{\bf \thetocsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par -} -\newcounter{tocsubsubsectioncount} -\def\tocsubsubsection #1#2{ - \stepcounter{tocsubsubsectioncount} - % write - {\hskip20pt\hyperlink{ln.\csname toc@subsubsec.\thetocsectioncount.\thetocsubsectioncount.\thetocsubsubsectioncount\endcsname}{{\bf \thetocsubsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par -} -\def\tocappendices{ - \medskip - \setcounter{tocsectioncount}0 - {\bf Appendices}\par - \smallskip - \def\tocsectionprefix{A} -} -\def\tocreferences#1{ - \medskip - {\hyperlink{ln.\csname toc@references\endcsname}{{\color{blue}\bf References}\leaderfill#1}}\par - \smallskip -} - - -%% definitions that must be loaded at begin document -\let\ian@olddocument\document -\def\document{ - \ian@olddocument - - \deflabel - \defcaption -} - -%% end -\ian@defaultoptions -\endinput diff --git a/docs/nstrophy_doc/libs/iantheo.sty b/docs/nstrophy_doc/libs/iantheo.sty deleted file mode 100644 index d33a93d..0000000 --- a/docs/nstrophy_doc/libs/iantheo.sty +++ /dev/null @@ -1,162 +0,0 @@ -%% -%% iantheorem package: -%% Ian's customized theorem command -%% - -%% boolean to signal that this package was loaded -\newif\ifiantheo - -%% TeX format -\NeedsTeXFormat{LaTeX2e}[1995/12/01] - -%% package name -\ProvidesPackage{iantheo}[2016/11/10] - -%% options -\newif\ifsectionintheo -\DeclareOption{section_in_theo}{\sectionintheotrue} -\DeclareOption{no_section_in_theo}{\sectionintheofalse} -\newif\ifsubsectionintheo -\DeclareOption{subsection_in_theo}{\subsectionintheotrue} -\DeclareOption{no_subsection_in_theo}{\subsectionintheofalse} - -\def\iantheo@defaultoptions{ - \ExecuteOptions{section_in_theo, no_subsection_in_theo} - \ProcessOptions - - %%% reset at every new section - \ifsectionintheo - \let\iantheo@oldsection\section - \gdef\section{\setcounter{theocount}{0}\iantheo@oldsection} - \fi - - %% reset at every new subsection - \ifsubsectionintheo - \let\iantheo@oldsubsection\subsection - \gdef\subsection{\setcounter{theocount}{0}\iantheo@oldsubsection} - \fi -} - - -%% delimiters -\def\delimtitle#1{ - \par% - \leavevmode% - \raise.3em\hbox to\hsize{% - \lower0.3em\hbox{\vrule height0.3em}% - \hrulefill% - \ \lower.3em\hbox{#1}\ % - \hrulefill% - \lower0.3em\hbox{\vrule height0.3em}% - }% - \par\penalty10000% -} - -%% callable by ref -\def\delimtitleref#1{ - \par% -% - \ifdefined\ianclass% - % hyperref anchor% - \hrefanchor% - % define tag (for \label)% - \xdef\tag{#1}% - \fi% -% - \leavevmode% - \raise.3em\hbox to\hsize{% - \lower0.3em\hbox{\vrule height0.3em}% - \hrulefill% - \ \lower.3em\hbox{\bf #1}\ % - \hrulefill% - \lower0.3em\hbox{\vrule height0.3em}% - }% - \par\penalty10000% -} - -%% no title -\def\delim{ - \par% - \leavevmode\raise.3em\hbox to\hsize{% - \lower0.3em\hbox{\vrule height0.3em}% - \hrulefill% - \lower0.3em\hbox{\vrule height0.3em}% - }% - \par\penalty10000% -} - -%% end delim -\def\enddelim{ - \par\penalty10000% - \leavevmode% - \raise.3em\hbox to\hsize{% - \vrule height0.3em\hrulefill\vrule height0.3em% - }% - \par% -} - - -%% theorem -% counter -\newcounter{theocount} -% booleans (write section or subsection in equation number) -\def\theo#1{ - \stepcounter{theocount} - \ifdefined\ianclass - % hyperref anchor - \hrefanchor - \fi - % the number - \def\formattheo{\thetheocount} - % add subsection number - \ifsubsectionintheo - \let\tmp\formattheo - \edef\formattheo{\thesubsectioncount.\tmp} - \fi - % add section number - \ifsectionintheo - \let\tmp\formattheo - \edef\formattheo{\sectionprefix\thesectioncount.\tmp} - \fi - % define tag (for \label) - \xdef\tag{\formattheo} - % write - \delimtitle{\bf #1 \formattheo} -} -\let\endtheo\enddelim -%% theorem headers with name -\def\theoname#1#2{ - \theo{#1}\hfil({\it #2})\par\penalty10000\medskip% -} - - -%% qed symbol -\def\qedsymbol{$\square$} -\def\qed{\penalty10000\hfill\penalty10000\qedsymbol} - - -%% compatibility with article class -\ifdefined\ianclasstrue - \relax -\else - \def\thesectioncount{\thesection} - \def\thesubsectioncount{\thesubsection} - \def\sectionprefix{} -\fi - - -%% prevent page breaks after displayed equations -\newcount\prevpostdisplaypenalty -\def\nopagebreakaftereq{ - \prevpostdisplaypenalty=\postdisplaypenalty - \postdisplaypenalty=10000 -} -%% back to previous value -\def\restorepagebreakaftereq{ - \postdisplaypenalty=\prevpostdisplaypenalty -} - - -%% end -\iantheo@defaultoptions -\endinput diff --git a/docs/nstrophy_doc/libs/largearray.sty b/docs/nstrophy_doc/libs/largearray.sty deleted file mode 100644 index ad5753b..0000000 --- a/docs/nstrophy_doc/libs/largearray.sty +++ /dev/null @@ -1,19 +0,0 @@ -%% -%% largearray package: -%% Array spanning the entire line -%% - -%% TeX format -\NeedsTeXFormat{LaTeX2e}[1995/12/01] - -%% package name -\ProvidesPackage{largearray}[2016/11/10] - -\RequirePackage{array} - -%% array spanning the entire line -\newlength\largearray@width -\setlength\largearray@width\textwidth -\addtolength\largearray@width{-10pt} -\def\largearray{\begin{array}{@{}>{\displaystyle}l@{}}\hphantom{\hspace{\largearray@width}}\\[-.5cm]} -\def\endlargearray{\end{array}} diff --git a/docs/nstrophy_doc/libs/point.sty b/docs/nstrophy_doc/libs/point.sty deleted file mode 100644 index 9f983dc..0000000 --- a/docs/nstrophy_doc/libs/point.sty +++ /dev/null @@ -1,106 +0,0 @@ -%% -%% Points package: -%% \point commands -%% - -%% TeX format -\NeedsTeXFormat{LaTeX2e}[1995/12/01] - -%% package name -\ProvidesPackage{point}[2017/06/13] - -%% options -\newif\ifresetatsection -\DeclareOption{reset_at_section}{\resetatsectiontrue} -\DeclareOption{no_reset_at_section}{\resetatsectionfalse} -\newif\ifresetatsubsection -\DeclareOption{reset_at_subsection}{\resetatsubsectiontrue} -\DeclareOption{no_reset_at_subsection}{\resetatsubsectionfalse} -\newif\ifresetattheo -\DeclareOption{reset_at_theo}{\resetattheotrue} -\DeclareOption{no_reset_at_theo}{\resetattheofalse} - -\def\point@defaultoptions{ - \ExecuteOptions{reset_at_section, reset_at_subsection, no_reset_at_theo} - \ProcessOptions - - %% reset at every new section - \ifresetatsection - \let\point@oldsection\section - \gdef\section{\resetpointcounter\point@oldsection} - \fi - %% reset at every new subsection - \ifresetatsubsection - \let\point@oldsubsection\subsection - \gdef\subsection{\resetpointcounter\point@oldsubsection} - \fi - - %% reset at every new theorem - \ifresetattheo - \ifdefined\iantheotrue - \let\point@oldtheo\theo - \gdef\theo{\resetpointcounter\point@oldtheo} - \fi - \fi -} - - -%% point -% counter -\newcounter{pointcount} -\def\point{ - \stepcounter{pointcount} - \setcounter{subpointcount}{0} - % hyperref anchor (only if the class is 'ian') - \ifdefined\ifianclass - \hrefanchor - % define tag (for \label) - \xdef\tag{\thepointcount} - \fi - % header - \indent{\bf \thepointcount\ - } -} - -%% subpoint -% counter -\newcounter{subpointcount} -\def\subpoint{ - \stepcounter{subpointcount} - \setcounter{subsubpointcount}0 - % hyperref anchor (only if the class is 'ian') - \ifdefined\ifianclass - \hrefanchor - % define tag (for \label) - \xdef\tag{\thepointcount-\thesubpointcount} - \fi - % header - \indent\hskip.5cm{\bf \thepointcount-\thesubpointcount\ - } -} - -%% subsubpoint -% counter -\newcounter{subsubpointcount} -\def\subsubpoint{ - \stepcounter{subsubpointcount} - % hyperref anchor (only if the class is 'ian') - \ifdefined\ifianclass - \hrefanchor - % define tag (for \label) - \xdef\tag{\thepointcount-\thesubpointcount-\thesubsubpointcount} - \fi - \indent\hskip1cm{\bf \thepointcount-\thesubpointcount-\thesubsubpointcount\ - } -} - - -%% reset point counters -\def\resetpointcounter{ - \setcounter{pointcount}{0} - \setcounter{subpointcount}{0} - \setcounter{subsubpointcount}{0} -} - - - -%% end -\point@defaultoptions -\endinput diff --git a/docs/nstrophy_doc/nstrophy_doc.tex b/docs/nstrophy_doc/nstrophy_doc.tex deleted file mode 100644 index 54e802e..0000000 --- a/docs/nstrophy_doc/nstrophy_doc.tex +++ /dev/null @@ -1,336 +0,0 @@ -\documentclass{ian} - -\usepackage{largearray} - -\begin{document} - -\hbox{} -\hfil{\bf\LARGE -{\tt nstrophy} -} -\vfill - -\tableofcontents - -\vfill -\eject - -\setcounter{page}1 -\pagestyle{plain} - -\section{Description of the computation} -\subsection{Irreversible equation} -\indent Consider the incompressible Navier-Stokes equation in 2 dimensions -\begin{equation} - \partial_tU=\nu\Delta U+G-(U\cdot\nabla)U,\quad - \nabla\cdot U=0 - \label{ins} -\end{equation} -in which $G$ is the forcing term. -We take periodic boundary conditions, so, at every given time, $U(t,\cdot)$ is a function on the torus $\mathbb T^2:=\mathbb R^2/(L\mathbb Z)^2$. We represent $U(t,\cdot)$ using its Fourier series -\begin{equation} - \hat U_k(t):=\frac1{L^2}\int_{\mathbb T^2}dx\ e^{i\frac{2\pi}L kx}U(t,x) -\end{equation} -for $k\in\mathbb Z^2$, and rewrite~\-(\ref{ins}) as -\begin{equation} - \partial_t\hat U_k= - -\frac{4\pi^2}{L^2}\nu k^2\hat U_k+\hat G_k - -i\frac{2\pi}L\sum_{\displaystyle\mathop{\scriptstyle p,q\in\mathbb Z^2}_{p+q=k}} - (q\cdot\hat U_p)\hat U_q - ,\quad - k\cdot\hat U_k=0 - \label{ins_k} -\end{equation} -We then reduce the equation to a scalar one, by writing -\begin{equation} - \hat U_k=\frac{i2\pi k^\perp}{L|k|}\hat u_k\equiv\frac{i2\pi}{L|k|}(-k_y\hat u_k,k_x\hat u_k) - \label{udef} -\end{equation} -in terms of which, multiplying both sides of the equation by $\frac L{i2\pi}\frac{k^\perp}{|k|}$, -\begin{equation} - \partial_t\hat u_k= - -\frac{4\pi^2}{L^2}\nu k^2\hat u_k - +\hat g_k - +\frac{4\pi^2}{L^2|k|}\sum_{\displaystyle\mathop{\scriptstyle p,q\in\mathbb Z^2}_{p+q=k}} - \frac{(q\cdot p^\perp)(k^\perp\cdot q^\perp)}{|q||p|}\hat u_p\hat u_q - \label{ins_k} -\end{equation} -with -\begin{equation} - \hat g_k:=\frac{Lk^\perp}{2i\pi|k|}\cdot\hat G_k - . - \label{gdef} -\end{equation} -Furthermore -\begin{equation} - (q\cdot p^\perp)(k^\perp\cdot q^\perp) - = - (q\cdot p^\perp)(q^2+p\cdot q) -\end{equation} -and $q\cdot p^\perp$ is antisymmetric under exchange of $q$ and $p$. Therefore, -\begin{equation} - \partial_t\hat u_k= - -\frac{4\pi^2}{L^2}\nu k^2\hat u_k+\hat g_k - +\frac{4\pi^2}{L^2|k|}T(\hat u,k) - \label{ins_k} -\end{equation} -with -\begin{equation} - T(\hat u,k):= - \sum_{\displaystyle\mathop{\scriptstyle p,q\in\mathbb Z^2}_{p+q=k}} - \frac{(q\cdot p^\perp)|q|}{|p|}\hat u_p\hat u_q - . - \label{T} -\end{equation} -We truncate the Fourier modes and assume that $\hat u_k=0$ if $|k_1|>K_1$ or $|k_2|>K_2$. Let -\begin{equation} - \mathcal K:=\{(k_1,k_2),\ |k_1|\leqslant K_1,\ |k_2|\leqslant K_2\} - . -\end{equation} -\bigskip - -\point{\bf Reality}. -Since $U$ is real, $\hat U_{-k}=\hat U_k^*$, and so -\begin{equation} - \hat u_{-k}=\hat u_k^* - . - \label{realu} -\end{equation} -Similarly, -\begin{equation} - \hat g_{-k}=\hat g_k^* - . - \label{realg} -\end{equation} -Thus, -\begin{equation} - T(\hat u,-k) - = - T(\hat u,k)^* - . - \label{realT} -\end{equation} -\bigskip - -\point{\bf FFT}. We compute T using a fast Fourier transform, defined as -\begin{equation} - \mathcal F(f)(n):=\sum_{m\in\mathcal N}e^{-\frac{2i\pi}{N_1}m_1n_1-\frac{2i\pi}{N_2}m_2n_2}f(m_1,m_2) -\end{equation} -where -\begin{equation} - \mathcal N:=\{(n_1,n_2),\ 0\leqslant n_1< N_1,\ 0\leqslant n_2< N_2\} -\end{equation} -for some fixed $N_1,N_2$. The transform is inverted by -\begin{equation} - \frac1{N_1N_2}\mathcal F^*(\mathcal F(f))(n)=f(n) -\end{equation} -in which $\mathcal F^*$ is defined like $\mathcal F$ but with the opposite phase. -\bigskip - -\indent The condition $p+q=k$ can be rewritten as -\begin{equation} - T(\hat u,k) - = - \sum_{p,q\in\mathcal K} - \frac1{N_1N_2} - \sum_{n\in\mathcal N}e^{-\frac{2i\pi}{N_1}n_1(p_1+q_1-k_1)-\frac{2i\pi}{N_2}n_2(p_2+q_2-k_2)} - (q\cdot p^\perp)\frac{|q|}{|p|}\hat u_q\hat u_p -\end{equation} -provided -\begin{equation} - N_i>3K_i. -\end{equation} -Indeed, $\sum_{n_i=0}^{N_i}e^{-\frac{2i\pi}{N_i}n_im_i}$ vanishes unless $m_i=0\%N_i$ (in which $\%N_i$ means `modulo $N_i$'), and, if $p,q,k\in\mathcal K$, then $|p_i+q_i-k_i|\leqslant3K_i$, so, as long as $N_i>3K_i$, then $(p_i+q_i-k_i)=0\%N_i$ implies $p_i+q_i=k_i$. -Therefore, -\begin{equation} - T(\hat u,k) - = - \textstyle - \frac1{N_1N_2} - \mathcal F^*\left( - \mathcal F\left(\frac{p_x\hat u_p}{|p|}\right)(n) - \mathcal F\left(q_y|q|\hat u_q\right)(n) - - - \mathcal F\left(\frac{p_y\hat u_p}{|p|}\right)(n) - \mathcal F\left(q_x|q|\hat u_q\right)(n) - \right)(k) -\end{equation} -\bigskip - -\point{\bf Energy}. -We define the energy as -\begin{equation} - E(t)=\frac12\int\frac{dx}{L^2}\ U^2(t,x)=\frac12\sum_{k\in\mathbb Z^2}|\hat U_k|^2 - . -\end{equation} -We have -\begin{equation} - \partial_t E=\int\frac{dx}{L^2}\ U\partial tU - = - \nu\int\frac{dx}{L^2}\ U\Delta U - +\int\frac{dx}{L^2}\ UG - -\int\frac{dx}{L^2}\ U(U\cdot\nabla)U - . -\end{equation} -Since we have periodic boundary conditions, -\begin{equation} - \int dx\ U\Delta U=-\int dx\ |\nabla U|^2 - . -\end{equation} -Furthermore, -\begin{equation} - I:=\int dx\ U(U\cdot\nabla)U - =\sum_{i,j=1,2}\int dx\ U_iU_j\partial_jU_i - = - -\sum_{i,j=1,2}\int dx\ (\partial_jU_i)U_jU_i - -\sum_{i,j=1,2}\int dx\ U_i(\partial_jU_j)U_i -\end{equation} -and since $\nabla\cdot U=0$, -\begin{equation} - I - = - -I -\end{equation} -and so $I=0$. -Thus, -\begin{equation} - \partial_t E= - \int\frac{dx}{L^2}\ \left(-\nu|\nabla U|^2+UG\right) - = - \sum_{k\in\mathbb Z^2}\left(-\frac{4\pi^2}{L^2}\nu k^2|\hat U_k|^2+\hat U_{-k}\hat G_k\right) - . -\end{equation} -Furthermore, -\begin{equation} - \sum_{k\in\mathbb Z^2}k^2|\hat U_k|^2\geqslant - \sum_{k\in\mathbb Z^2}|\hat U_k|^2-|\hat U_0|^2 - =2E-|\hat U_0|^2 -\end{equation} -so -\begin{equation} - \partial_t E\leqslant -\frac{8\pi^2}{L^2}\nu E+\frac{4\pi^2}{L^2}\nu\hat U_0^2+\sum_{k\in\mathbb Z^2}\hat U_{-k}\hat G_k - \leqslant - -\frac{8\pi^2}{L^2}\nu E+\frac{4\pi^2}{L^2}\nu\hat U_0^2+ - \|\hat G\|_2\sqrt{2E} - . -\end{equation} -In particular, if $\hat U_0=0$ (which corresponds to keeping the center of mass fixed), -\begin{equation} - \partial_t E\leqslant -\frac{8\pi^2}{L^2}\nu E+\|\hat G\|_2\sqrt{2E} - . -\end{equation} -Now, if $\frac{8\pi^2}{L^2}\nu\sqrt E<\sqrt2\|\hat G\|_2$, then -\begin{equation} - \frac{\partial_t E}{-\frac{8\pi^2}{L^2}\nu E+\|\hat G\|_2\sqrt{2E}}\leqslant1 -\end{equation} -and so -\begin{equation} - \frac{\log(1-\frac{8\pi^2\nu}{L^2\sqrt2\|\hat G\|_2}\sqrt{E(t)})}{-\frac{4\pi^2}{L^2}\nu}\leqslant t+ - \frac{\log(1-\frac{8\pi^2\nu}{L^2\sqrt2\|\hat G\|_2}\sqrt{E(0)})}{-\frac{4\pi^2}{L^2}\nu} -\end{equation} -and -\begin{equation} - E(t) - \leqslant - \left( - \frac{L^2\sqrt2\|\hat G\|_2}{8\pi^2\nu}(1-e^{-\frac{4\pi^2}{L^2}\nu t}) - +e^{-\frac{4\pi^2}{L^2}\nu t}\sqrt{E(0)} - \right)^2 - . -\end{equation} -If $\frac{8\pi^2}{L^2}\nu\sqrt E>\sqrt2\|\hat G\|_2$, -\begin{equation} - \frac{\partial_t E}{-\frac{8\pi^2}{L^2}\nu E+\|\hat G\|_2\sqrt{2E}}\geqslant1 -\end{equation} -and so -\begin{equation} - \frac{\log(\frac{8\pi^2\nu}{L^2\sqrt2\|\hat G\|_2}\sqrt{E(t)}-1)}{-\frac{4\pi^2}{L^2}\nu}\geqslant t+ - \frac{\log(\frac{8\pi^2\nu}{L^2\sqrt2\|\hat G\|_2}\sqrt{E(0)})-1}{-\frac{4\pi^2}{L^2}\nu} -\end{equation} -and -\begin{equation} - E(t) - \leqslant - \left( - \frac{L^2\sqrt2\|\hat G\|_2}{8\pi^2\nu}(1-e^{-\frac{4\pi^2}{L^2}\nu t}) - +e^{-\frac{4\pi^2}{L^2}\nu t}\sqrt{E(0)} - \right)^2 - . -\end{equation} -\bigskip - -\point{\bf Enstrophy}. -The enstrophy is defined as -\begin{equation} - \mathcal En(t)=\int\frac{dx}{L^2}\ |\nabla U|^2 - =\frac{4\pi^2}{L^2}\sum_{k\in\mathbb Z^2}k^2|\hat U_k|^2 - . -\end{equation} -\bigskip - -\point{\bf Numerical instability}. -In order to prevent the algorithm from blowing up, it is necessary to impose the reality of $u(x)$ by hand, otherwise, truncation errors build up, and lead to divergences. -It is sufficient to ensure that the convolution term $T(\hat u,k)$ satisfies $T(\hat u,-k)=T(\hat u,k)^*$. -After imposing this condition, the algorithm no longer blows up, but it is still unstable (for instance, increasing $K_1$ or $K_2$ leads to very different results). - -\subsection{Reversible equation} -\indent The reversible equation is similar to\-~(\ref{ins}) but instead of fixing the viscosity, we fix the enstrophy\-~\cite{Ga22}. -It is defined directly in Fourier space: -\begin{equation} - \partial_t\hat U_k= - -\frac{4\pi^2}{L^2}\alpha(\hat U) k^2\hat U_k+\hat G_k - -i\frac{2\pi}L\sum_{\displaystyle\mathop{\scriptstyle p,q\in\mathbb Z^2}_{p+q=k}} - (q\cdot\hat U_p)\hat U_q - ,\quad - k\cdot\hat U_k=0 -\end{equation} -where $\alpha$ is chosen such that the enstrophy is constant. -In terms of $\hat u$\-~(\ref{udef}), (\ref{gdef}), (\ref{T}): -\begin{equation} - \partial_t\hat u_k= - -\frac{4\pi^2}{L^2}\alpha(\hat u) k^2\hat u_k - +\hat g_k - +\frac{4\pi^2}{L^2|k|}T(\hat u,k) - . - \label{rns_k} -\end{equation} -To compute $\alpha$, we use the constancy of the enstrophy: -\begin{equation} - \sum_{k\in\mathbb Z^2}k^2\hat U_k\cdot\partial_t\hat U_k - =0 -\end{equation} -which, in terms of $\hat u$ is -\begin{equation} - \sum_{k\in\mathbb Z^2}k^2\hat u_k^*\partial_t\hat u_k - =0 -\end{equation} -that is -\begin{equation} - \frac{4\pi^2}{L^2}\alpha(\hat u)\sum_{k\in\mathbb Z^2}k^4|\hat u_k|^2 - = - \sum_{k\in\mathbb Z^2}k^2\hat u_k^*\hat g_k - +\frac{4\pi^2}{L^2}\sum_{k\in\mathbb Z^2}|k|\hat u_k^*T(\hat u,k) -\end{equation} -and so -\begin{equation} - \alpha(\hat u) - =\frac{\frac{L^2}{4\pi^2}\sum_k k^2\hat u_k^*\hat g_k+\sum_k|k|\hat u_k^*T(\hat u,k)}{\sum_kk^4|\hat u_k|^2} - . -\end{equation} -Note that, by\-~(\ref{realu})-(\ref{realT}), -\begin{equation} - \alpha(\hat u)\in\mathbb R - . -\end{equation} - - - -\vfill -\eject - -\begin{thebibliography}{WWW99} -\small -\IfFileExists{bibliography/bibliography.tex}{\input bibliography/bibliography.tex}{} -\end{thebibliography} - -\end{document} -- cgit v1.2.3-54-g00ecf