Esempio n. 1
0
#
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))
#
# Visualización usando VisCoFlow
#
axis_par = [{
Esempio n. 2
0
#
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})
#
# Graficación de Temperatura vs posición
#
axis_par2 = [{
    'xlabel': '$x$ [m]',
    'ylabel': '$T [^o C]$',
Esempio n. 3
0
# 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',
    'xlabel': 'x [cm]',
    'ylabel': 'T [$^o$C]'
}]
v = flx.Plotter(2, 1, axis_par)
#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
                     frames=Tmax+1, # Número de iteraciones (Cuadros)
                     repeat=False)  # Permite poner la animación en un ciclo 
#
# Graficación
#
v.show()
Esempio n. 5
0
#
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, ),
                     interval=500,  # Intervalo entre cuadros en milisegundos
                     frames=Tmax+1, # Número de iteraciones (Cuadros)
                     repeat=False)  # Permite poner la animación en un ciclo 

#heat_transfer.printMat(nice=True)
Esempio n. 6
0
#
# 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)
#
# Solución analítica
#
x, _, _ = malla.coordinatesMeshFVM()
Esempio n. 7
0
Su = np.zeros(ivx)
#
# Definimos el esquema de disccretización
#
dif_scheme = sAdvDiff1D(malla, Su, Gamma, rho)
vel = np.zeros(nvx+2)
vel.fill(u)
dif_scheme.setVelocity(vel)
#
# Definimos la ecuación a resolver
#
adv_diff = PDE(linea, phi)
#
# Creamos el sistema lineal y lo resolvemos
#
adv_diff.setNumericalScheme(dif_scheme)
adv_diff.solve(sym=False)
print(phi)
#
# Solución analítica
#
x, _, _ = malla.coordinatesMeshFVM()
xa = np.linspace(0,L,50)
phi_a = analyticSol(xa)
#
# Visualización usando VisCoFlow
#
title_graf = '$\dfrac{\partial (u \phi)}{\partial x}= \kappa \dfrac{\partial^2 \phi}{\partial x^2}$'
axis_par = [{'title':title_graf, 'xlabel':'x [m]', 'ylabel':'$\phi$'},
            {'title':'Malla', 'xlabel':'x [m]', 'ylabel':'$\phi$'},]   
v = flx.Plotter(2,1,axis_par)