Parametros del Modelo

(*Parametros*)

hinicial=.2;
g=9.8;
radiomayor=.07;
radioboca=.01;
radioorificio=.002;

(*Perfiles*)

PerfilBotella1[h_]:=radioboca+(radiomayor-radioboca)(UnitStep[1-(h/radiomayor)]((((h/radiomayor)))^(1/2))+ UnitStep[(h/radiomayor)-1])
PerfilBotella2[h_]:=radioboca+(radiomayor-radioboca)(UnitStep[1-(h/radiomayor)]((h/radiomayor))+ UnitStep[(h/radiomayor)-1])
PerfilBotella3[h_]:=radiomayor;

botella1=ParametricPlot[{{PerfilBotella1[x],x},{-PerfilBotella1[x],x}},{x,0,.40}];
botella2=ParametricPlot[{{PerfilBotella2[x],x},{-PerfilBotella2[x],x}},{x,0,.40}];
botella3=ParametricPlot[{{PerfilBotella3[x],x},{-PerfilBotella3[x],x}},{x,0,.40}];
{botella1,botella2,botella3}

Calculos

(*Area y volumen en funcion de la altura*)

Volumen[h_,perfil_]:=π NIntegrate[((perfil[x])^2),{x,0,h}];
Area[h_,perfil_]:=π ((perfil[h])^2)

(*Resuelve la ecuación diferencial de la altura en funcion del tiempo para un dado perfil*)
eqBernoulli[perfil_]:=(hh[t]/.NDSolve[{(∂_t)hh[t] ==If[hh[t]>0,-(Sqrt[ ((2g hh[t])/( ((((((Area[hh[t],perfil])/((radioorificio^2)π))))^2)-1)))]),0],hh[0]==hinicial},{hh[t]},{t,0,1000}][[1]]);
(*resuelve la ecuacion diferencial para los tres perfiles*)

Resultados

alturavstiempo1=eqBernoulli[PerfilBotella1];
alturavstiempo2=eqBernoulli[PerfilBotella2];
alturavstiempo3=eqBernoulli[PerfilBotella3];


(*Grafico con la altura en funcion del tiempo de descarga para los tres perfiles*)
Plot[{alturavstiempo1,alturavstiempo2,alturavstiempo3},
{t,0,300},PlotRange->All]

alturavstiempo1

label1:=Graphics[{Text["t="<>ToString[t]<>"s",{.15,2/3hinicial}],Text["h="<>ToString[alturavstiempo1]<>"m",{.15,1/3hinicial}]}];
label2:=Graphics[{Text["t="<>ToString[t]<>"s",{.15,2/3hinicial}],Text["h="<>ToString[alturavstiempo2]<>"m",{.15,1/3hinicial}]}];
label3:=Graphics[{Text["t="<>ToString[t]<>"s",{.15,2/3hinicial}],Text["h="<>ToString[alturavstiempo3]<>"m",{.15,1/3hinicial}]}];

{ListAnimate[Table[Show[label1,botella1,Graphics[Line[{{-PerfilBotella1[alturavstiempo1],alturavstiempo1},{PerfilBotella1[alturavstiempo1],alturavstiempo1}}]]],{t,0,300}]],
ListAnimate[Table[Show[label2,botella2,Graphics[Line[{{-PerfilBotella2[alturavstiempo2],alturavstiempo2},{PerfilBotella2[alturavstiempo2],alturavstiempo2}}]]],{t,0,300}]],
ListAnimate[Table[Show[label3,botella3,Graphics[Text["t="<>ToString[t],{.05,2/3hinicial}]],Graphics[Line[{{-PerfilBotella3[alturavstiempo3],alturavstiempo3},{PerfilBotella3[alturavstiempo3],alturavstiempo3}}]]],{t,0,300}]]}//MatrixForm