I'm not certain if i met with the quintessence of your question, nevertheless here's how i would do that.
\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\def\myuppercolor{yellow}
\begin{tikzpicture}[mycyl/.style={cylinder, shape border rotate=90, draw, minimum width=1cm, aspect=0.25, %
anchor=south, text width=1cm, text height=.1cm}, %
]
\node [mycyl , fill=blue, minimum height=1.6cm] (bl) at (0,0) {};
\node [mycyl , minimum height=.3cm, fill = \myuppercolor] (yell) at (0,1) { };
%---------------------------------------------------------
% dashed "mixing lines"
% note they are calculated manually (according to the aspect key of the cylinder shape)
\foreach \y in {.6, .7, .8}{
\draw[dashed, \myuppercolor] (.619,\y+.3) arc[x radius=.619cm, y radius=.154cm, start angle=0, end angle=-180];}
%---------------------------------------------------------
%, descriptions
\node[above of=yell]{$A_0$};
\node[right of=yell, xshift=.2cm]{$h$};
\draw[<->, ] ([xshift = 1cm]yell.top) -- ([xshift = 1cm]yell.bottom);
\draw[->,dashed ] ([xshift = 1cm]yell.bottom) -- ([xshift = 1cm]bl.center);
\end{tikzpicture}
\end{document}
Please note: i calculated the keys for the arc
command manually. It's quite easy since aspect
gives you the fraction of y and x height of the ellipsis.
For me that`s the most economic way.

\pgfdeclareshape
and a few keys to fill the cylinder to the desired height.