Skip to content

Commit

Permalink
Clean up formatting related to 'SolverMethod' and 'solverMethod'
Browse files Browse the repository at this point in the history
The use \lstinline!SolverMethod! is meant to be a sloppy way of referring to the type defined in ModelicaServices.
  • Loading branch information
henrikt-ma committed Oct 11, 2020
1 parent 385bed4 commit e9cab21
Showing 1 changed file with 14 additions and 17 deletions.
31 changes: 14 additions & 17 deletions chapters/synchronous.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1146,7 +1146,7 @@ \subsection{Solver Methods}\label{solver-methods}
"discretized continuous-time partition."
\end{lstlisting}

If a tool supports one of the integrators of SolverMethod, it must use
If a tool supports one of the integrators of \lstinline!SolverMethod!, it must use
the solver method name of above.

\begin{nonnormative}
Expand Down Expand Up @@ -1201,22 +1201,22 @@ \subsection{Solver Methods}\label{solver-methods}
\begin{center}
\begin{tabular}{l|l}
\hline
\tablehead{SolverMethod} & \tablehead{Solution method} \\
\tablehead{\lstinline!SolverMethod!} & \tablehead{Solution method} \\
\hline
\hline
\lstinline!ExplicitEuler! &
\lstinline!"ExplicitEuler"! &
$\begin{aligned}
x_{i} &:= x_{i-1}+h\cdot\dot{x}_{i-1}\\
\dot{x}_{i} &:= f(x_i,u_{c,i},u_{d,i},t_i)
\end{aligned}$
\\ \hline
\lstinline!ExplicitMidPoint2! &
\lstinline!"ExplicitMidPoint2"! &
$\begin{aligned}
x_{i} &:= x_{i-1}+h\cdot f(x_{i-1}+\frac{1}{2}\cdot h \cdot\dot{x}_{i-1},\frac{u_{c,i-1}+u_{c,i}}{2},u_{d,i-1},t_{i-1}+\tfrac{1}{2}\cdot h)\\
\dot{x}_{i} &:= f(x_i,u_{c,i},u_{d,i},t_i)
\end{aligned}$
\\ \hline
\lstinline!ExplicitRungeKutta4! &
\lstinline!"ExplicitRungeKutta4"! &
$\begin{aligned}
k_1 &:= h\cdot \dot{x}_{i-1}\\
k_2 &:= h\cdot f(x_{i-1}+\tfrac{1}{2}k_1,\frac{u_{c,i-1}+u_{c,i}}{2},u_{d,i-1},t_{i-1}+\tfrac{1}{2}\cdot h)\\
Expand All @@ -1227,15 +1227,15 @@ \subsection{Solver Methods}\label{solver-methods}
\end{aligned}$
\\ \hline
% Vertical positioning of the \multirow is ugly. Any better ideas?
\multirow[c]{2}{*}[-0.7em]{\lstinline!ImplicitEuler!} & Equation system with unknowns: $x_i$, $\dot{x}_i$\\
\multirow[c]{2}{*}[-0.7em]{\lstinline!"ImplicitEuler"!} & Equation system with unknowns: $x_i$, $\dot{x}_i$\\
&
$\begin{aligned}
x_{i} &= x_{i-1}+h\cdot\dot{x}_i\\
\dot{x}_{i} &= f(x_i,u_{c,i},u_{d,i},t_i)
\end{aligned}$
\\ \hline
% Vertical positioning of the \multirow is ugly. Any better ideas?
\multirow[c]{2}{*}[-0.7em]{\lstinline!ImplicitTrapezoid!} & Equation system with unknowns: $x_i$, $\dot{x}_i$\\
\multirow[c]{2}{*}[-0.7em]{\lstinline!"ImplicitTrapezoid"!} & Equation system with unknowns: $x_i$, $\dot{x}_i$\\
&
$\begin{aligned}
x_{i} &= x_{i-1}+\tfrac{1}{2}h\cdot(\dot{x}_i+\dot{x}_{i-1})\\
Expand All @@ -1257,7 +1257,7 @@ \subsection{Solver Methods}\label{solver-methods}
equation
der(x) = -x + u
\end{lstlisting}
shall be transformed to a clocked discretized continuous-time partition with the ExplicitEuler method. The following model is a manual implementation:
shall be transformed to a clocked discretized continuous-time partition with the \lstinline!"ExplicitEuler"! method. The following model is a manual implementation:
\begin{lstlisting}[language=modelica]
input Real u;
parameter Real x_start = 1;
Expand Down Expand Up @@ -1291,10 +1291,7 @@ \subsection{Solver Methods}\label{solver-methods}

\subsection{Associating a Solver to a Partition}\label{associating-a-solver-to-a-partition}

A \lstinline!solverMethod! can be associated to a clock with the overloaded Clock
constructor Clock(c, solverMethod), see \cref{clock-constructors}. If a clock is
associated with a clocked partition and a \lstinline!solverMethod! is associated
with this clock, then the partition is integrated with it.
A \lstinline!SolverMethod! can be associated to a clock with the overloaded \lstinline!Clock! constructor \lstinline!Clock($c$, solverMethod=$\ldots$)!, see \cref{clock-constructors}. If a clock is associated with a clocked partition and a \lstinline!SolverMethod! is associated with this clock, then the partition is integrated with it.

\begin{example}
\begin{lstlisting}[language=modelica]
Expand All @@ -1313,13 +1310,13 @@ \subsection{Associating a Solver to a Partition}\label{associating-a-solver-to-a

\subsection{Inferencing of solverMethod}\label{inferencing-of-solvermethod}

If a solverMethod is not explicitly associated with a partition, it is
If a \lstinline!solverMethod! is not explicitly associated with a partition, it is
inferred with a similar mechanism as for sub-clock inferencing, see
\cref{sub-clock-inferencing}.

For each sub-clock partition we build a set corresponding to this sub-clock partition.
These sets are then merged as follows: for each set without a specified solverMethod we merge it
with sets connected to it (these may contain a solverMethod); and this is repeated until it is not possible to merge more sets.
These sets are then merged as follows: for each set without a specified \lstinline!solverMethod! we merge it
with sets connected to it (these may contain a \lstinline!solverMethod!); and this is repeated until it is not possible to merge more sets.
The sets connected in this way should be part of the same base-clock partition and connected through a sub-clock conversion operator
(\lstinline!subSample!, \lstinline!superSample!, \lstinline!shiftSample!, \lstinline!backSample!, or \lstinline!noClock!).

Expand All @@ -1328,9 +1325,9 @@ \subsection{Inferencing of solverMethod}\label{inferencing-of-solvermethod}
\item If the set contains continuous time-equations:
\begin{itemize}
\item If this set contains no \lstinline!solverMethod! it is an error.
\item Otherwise we use the specified solverMethod.
\item Otherwise we use the specified \lstinline!solverMethod!.
\end{itemize}
\item If the set does not contain continuous time-equations there is no need for a solverMethod.
\item If the set does not contain continuous time-equations there is no need for a \lstinline!solverMethod!.
\end{itemize}

\begin{example}
Expand Down

0 comments on commit e9cab21

Please sign in to comment.