Ejemplo n.º 1
0
          Volúmenes=nvx,
          Delta=delta)
#
# Definimos la fuente
#
Su = np.zeros(ivx)
Su[:] = n2 * Tambiente
#
# Definimos el esquema de disccretización
#
dif_scheme = sDiffusion1D(malla, Su, Gamma=k)
dif_scheme.Sp(-n2)
#
# Definimos la ecuación a resolver
#
convective_heat = PDE(rod, T)
#
# Creamos el sistema lineal y lo resolvemos
#
convective_heat.setNumericalScheme(dif_scheme)
convective_heat.solve()
#
# Corregimos el valor en la condicion Neumman
#
#convective_heat.updateNeumman()
#
# Solución analítica
#
x, _, _ = malla.coordinatesMeshFVM()
xa = np.linspace(0, longitud, 100)
Ta = analyticSol(xa, np.sqrt(n2))
Ejemplo n.º 2
0
#v.contourf(2,x,y,T,{'cmap':'inferno'})
#v.scatter(2,xg,yg)
#print(T)
#
# Definimos la fuente
#
Su = np.zeros((ivy, ivx))
#print('Su = ', Su)
#
# Definimos el esquema de disccretización
#
dif_scheme = sDiffusion2D(malla, Su, Gamma=k)
#
# Definimos la ecuación a resolver
#
laplace = PDE(placa, T)
#
# Creamos el sistema lineal y lo resolvemos
#
Su.shape = (ivy * ivx)
laplace.setNumericalScheme(dif_scheme)
sol = laplace.solve()
#print(sol)
#
# Graficación de contornos
#
#v2 = flx.Plotter(1,1,axis_par)
con = v1.contourf(2, x, y, T, {'levels': 20, 'cmap': 'hot'})
v1.contour(2, x, y, T, {'levels': 20, 'colors': 'k', 'linewidths': 0.5})
v1.colorbar(2, con, {'shrink': 0.75})
#
Ejemplo n.º 3
0
          Nodos=nx,
          Volúmenes=nvx,
          Delta=delta,
          dt=dt)
#
# Definimos la fuente
#
Su = np.zeros(ivx)
#
# Definimos el esquema de disccretización
#
dif_scheme = tDiffusion1D(malla, Su, dt=dt, Gamma=k)
#
# Definimos la ecuación a resolver
#
laplace = PDE(rod, T)
#
# Preparamos el sistema lineal y creamos la matriz
#
laplace.setNumericalScheme(dif_scheme)
#
# Solución analítica
#
x, _, _ = malla.coordinatesMeshFVM()
Ta = 800 * x + 100
#
# Preparamos la visualización
#
axis_par = [{'title': 'Numérica', 'xlabel': 'x [cm]', 'ylabel': 'T [$^o$C]'}]
v = flx.Plotter(2, 1, axis_par)
line, = v.plot(1, x * 100, T, {
Ejemplo n.º 4
0
          Volúmenes=nvx,
          Delta=delta)
print(T)
#
# Definimos la fuente
#
Su = np.zeros(ivx)
Su[:] = q
#
# Definimos el esquema de disccretización
#
dif_scheme = tDiffusion1D(malla, Su, dt=dt, Gamma=k)
#
# Definimos la ecuación a resolver
#
poisson = PDE(rod, T)
#
# Preparamos el sistema lineal y creamos la matriz
#
poisson.setNumericalScheme(dif_scheme)
#
# Solución analítica
#
x, _, _ = malla.coordinatesMeshFVM()
xa = np.linspace(0, longitud, 100)
Ta = analyticSol(xa)
#
# Preparamos la visualización con VisCoFlow
#
axis_par = [{
    'title': 'Numerica vs Exacta',
Ejemplo n.º 5
0
#
# Definimos la fuente 
#
Su = np.zeros(ivx)
#
# Definimos el esquema de disccretización
#
acoculco = tDiffusion1D(malla, Su, dt = dt)
acoculco.calcConductivity()
#acoculco.Gamma = 1.0e-7
#v.plot(1,acoculco.Gamma*5000,z, {'marker':'.','color':'b', 'ls':'-', 'lw':1})
print(acoculco.Gamma)
#
# Definimos la ecuación a resolver
#
heat_transfer = PDE(reservoir, T)
#v.plot(1,T,z, {'marker':'.','color':'k', 'ls':'--', 'lw':1})

#
# Preparamos el sistema lineal y creamos la matriz
#
heat_transfer.setNumericalScheme(acoculco)
#
# Resolvemos y graficamos para varios pasos de tiempo
#
print(Tmax)
from matplotlib.animation import FuncAnimation

anim = FuncAnimation(v.fig,    # La figura donde se hace la animación
                     solver,        # la función que resuelve y cambia los datos
                     fargs = (v.axes(1), dt, ),
v.colorbar(1,con_i, {'shrink':0.25, 'orientation':'horizontal', 'ticks':[0, 0.25, 0.5]})
v.quiver(1,xd,yd,uvel_v,vvel_v, {'scale':20})
#
# Definimos la fuente 
#
Su = np.zeros((ivy, ivx))
#print('Su = ', Su)
#
# Definimos el esquema de disccretización
#
advdif_scheme = tAdvDiff2D(malla, Su, dt = dt, Gamma = k)
advdif_scheme.setVelocity(uvel,vvel)
#
# Definimos la ecuación a resolver
#
transport = PDE(placa, T)
#print(T)
#
# Creamos el sistema lineal y lo resolvemos
#
Su.shape = ivy * ivx
transport.setNumericalScheme(advdif_scheme)
#
# Resolvemos y graficamos para varios pasos de tiempo
#
from matplotlib.animation import FuncAnimation

anim = FuncAnimation(v.fig,    # La figura donde se hace la animación
                     solver,        # la función que resuelve y cambia los datos
                     fargs=(v.axes(1), dt, ),   # argumentos para la función solver()                     
                     interval=500,  # Intervalo entre cuadros en milisegundos
Ejemplo n.º 7
0
#
# Definimos la fuente
#
Su = np.zeros(ivx)
#
# Definimos el esquema de disccretización
#
ad_scheme = tAdvDiff1D(malla, Su, dt=dt, Gamma=Gamma, rho=rho)
vel = np.zeros(nvx + 2)
vel.fill(u)
print(vel)
ad_scheme.setVelocity(vel)
#
# Definimos la ecuación a resolver
#
adv_diff = PDE(linea, phi)
#
# Creamos el sistema lineal y lo resolvemos
#
adv_diff.setNumericalScheme(ad_scheme)
#
# Preparamos la visualización con VisCoFlow
#
title_graf = '$\dfrac{\partial \phi}{\partial t} +  \dfrac{\partial (u \phi)}{\partial x}= \kappa \dfrac{\partial^2 \phi}{\partial x^2}$'
axis_par = [{
    'title': title_graf,
    'xlabel': '$x$ [m]',
    'ylabel': '$\phi$',
    'ylim': (-0.1, 1.1)
}]
v = flx.Plotter(1, 1, axis_par)
Ejemplo n.º 8
0
          Nodos=nx,
          Volúmenes=nvx,
          Delta=delta,
          dt=dt)
#
# Definimos la fuente
#
S = np.zeros(ivx)  # Por ahora no hay fuente.
#
# Definimos el esquema de disccretización
#
dif_scheme = tDiffusion1D(malla, S, Gamma=k, dt=dt)
#
# Definimos la ecuación a resolver
#
laplace = PDE(barra, T)
#
# Preparamos el sistema lineal y creamos la matriz
#
laplace.setNumericalScheme(dif_scheme)
#
# Preparamos la visualización con VisCoFlow
#
axis_par = [{
    'title': 'Solución Numérica',
    'xlabel': 'x [cm]',
    'ylabel': 'T [$^o$C]'
}]
v = flx.Plotter(2, 1, axis_par)
#
# Solución analítica
Ejemplo n.º 9
0
#
# Definimos la fuente 
#
Su = np.zeros(ivx)
#
# Definimos el esquema de disccretización
#
ad_scheme = tAdvDiff1D(malla, Su, dt = dt, Gamma = Gamma, rho = rho)
vel = np.zeros(nvx+2)
vel.fill(u)
print(vel)
ad_scheme.setVelocity(vel)
#
# Definimos la ecuación a resolver
#
adv_diff = PDE(linea, phi)
#
# Creamos el sistema lineal y lo resolvemos
#
adv_diff.setNumericalScheme(ad_scheme)
#
# Solución analítica
#
x, _, _ = malla.coordinatesMeshFVM()
xa = np.linspace(0,L,100)
exac = analyticSol(xa, u, Tmax, Gamma)
#
# Preparamos la visualización con VisCoFlow
#
title_graf = '$\dfrac{\partial \phi}{\partial t} +  \dfrac{\partial (u \phi)}{\partial x}= \kappa \dfrac{\partial^2 \phi}{\partial x^2}$'
title_inicial = title_graf + ': Step = {:>3d} Time = {:>6.5f}'.format(0,0)
Ejemplo n.º 10
0
#
Su = np.zeros(ivx)
#
# Definimos el esquema de disccretización
#
acoculco = tDiffusion1D(malla, Su, dt=dt)
acoculco.calcConductivity()
#acoculco.Gamma = 1.0e-7
#v.plot(1,acoculco.Gamma*5000,z, {'marker':'.','color':'b', 'ls':'-', 'lw':1})
print(len(acoculco.Gamma))

# Definimos la ecuación a resolver
#
T = np.copy(T_ini_int)
print(len(T_ini_int))
heat_transfer = PDE(reservoir, T)
#v.plot(1,T,z, {'marker':'.','color':'k', 'ls':'--', 'lw':1})

#
# Preparamos el sistema lineal y creamos la matriz
#
heat_transfer.setNumericalScheme(acoculco)
#
# Resolvemos para varios pasos de tiempo
#
print(Tmax)
#input('press enter')
for k in range(0, Tmax):
    heat_transfer.solve()
    if (k % 10) == 0:
        v.plot(1, T, z, {'marker': '', 'ls': '-', 'lw': 0.5})
Ejemplo n.º 11
0
con_i = v.contourf(3, xd, yd, vel_norm, {'levels': 50, 'cmap': 'Blues'})
v.quiver(3, xd, yd, uvel_v, vvel_v, {'scale': 20})
#
# Definimos la fuente
#
Su = np.zeros((ivy, ivx))
#print('Su = ', Su)
#
# Definimos el esquema de disccretización
#
advdif_scheme = tAdvDiff2D(malla, Su, dt=dt, Gamma=k)
advdif_scheme.setVelocity(uvel, vvel)
#
# Definimos la ecuación a resolver
#
transport = PDE(placa, T)
#print(T)
#
# Creamos el sistema lineal y lo resolvemos
#
Su.shape = ivy * ivx
transport.setNumericalScheme(advdif_scheme)
for k in range(0, Tmax):
    print('k = ', k, end=' ')
    sol = transport.solve(sym=False)
#
# Graficación
#
con_f = v.contourf(4, xv, yv, T, {'levels': 20, 'cmap': 'inferno'})
v.show()