\begin{Verbatim}[commandchars=\\\{\}]
\PY{k}{class} \PY{n+nc}{FishyFlow}\PY{p}{(}\PY{n}{Hyperelasticity}\PY{p}{)}\PY{p}{:}

    \PY{k}{def} \PY{n+nf}{mesh}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{)}\PY{p}{:}
        \PY{n}{mesh} \PY{o}{=} \PY{n}{Mesh}\PY{p}{(}\PY{l+s}{"}\PY{l+s}{dolphin.xml.gz}\PY{l+s}{"}\PY{p}{)}
        \PY{k}{return} \PY{n}{mesh}

    \PY{k}{def} \PY{n+nf}{end\PYZus{}time}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{)}\PY{p}{:}
        \PY{k}{return} \PY{l+m+mf}{10.0}

    \PY{k}{def} \PY{n+nf}{time\PYZus{}step}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{)}\PY{p}{:}
        \PY{k}{return} \PY{l+m+mf}{0.1}

    \PY{k}{def} \PY{n+nf}{neumann\PYZus{}conditions}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{)}\PY{p}{:}
        \PY{n}{flow\PYZus{}push} \PY{o}{=} \PY{n}{Expression}\PY{p}{(}\PY{p}{(}\PY{l+s}{"}\PY{l+s}{force}\PY{l+s}{"}\PY{p}{,} \PY{l+s}{"}\PY{l+s}{0.0}\PY{l+s}{"}\PY{p}{)}\PY{p}{)}
        \PY{n}{flow\PYZus{}push}\PY{o}{.}\PY{n}{force} \PY{o}{=} \PY{l+m+mf}{0.05}
        \PY{k}{return} \PY{p}{[}\PY{n}{flow\PYZus{}push}\PY{p}{]}

    \PY{k}{def} \PY{n+nf}{neumann\PYZus{}boundaries}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{)}\PY{p}{:}
        \PY{n}{everywhere} \PY{o}{=} \PY{l+s}{"}\PY{l+s}{on\PYZus{}boundary}\PY{l+s}{"}
        \PY{k}{return} \PY{p}{[}\PY{n}{everywhere}\PY{p}{]}

    \PY{k}{def} \PY{n+nf}{material\PYZus{}model}\PY{p}{(}\PY{n+nb+bp}{self}\PY{p}{)}\PY{p}{:}

        \PY{n}{material} \PY{o}{=} \PY{n}{MooneyRivlin}\PY{p}{(}\PY{p}{[}\PY{l+m+mf}{6.169}\PY{p}{,} \PY{l+m+mf}{10.15}\PY{p}{]}\PY{p}{)}
        \PY{k}{return} \PY{n}{material}

\PY{c}{# Setup and solve the problem}
\PY{n}{fishy} \PY{o}{=} \PY{n}{FishyFlow}\PY{p}{(}\PY{p}{)}
\PY{n}{u} \PY{o}{=} \PY{n}{fishy}\PY{o}{.}\PY{n}{solve}\PY{p}{(}\PY{p}{)}
\end{Verbatim}
