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 = [{
    'title': 'Numerica vs Exacta',
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]$',
    'ylim': (0, 1),
Esempio n. 3
0
    'ylim': (-0.1, 1.1)
}]
v = flx.Plotter(1, 1, axis_par)
#
# Solución analítica
#
x, _, _ = malla.coordinatesMeshFVM()
xa = np.linspace(0, L, 100)
exac = analyticSol(xa, u, Tmax, Gamma)
#
# Resolvemos para varios pasos de tiempo
#
v.plot(1, x, phi, {'color': 'gray', 'ls': '--', 'lw': 1.0})
for k in range(0, Nmax):
    print('k = ', k)
    adv_diff.solve(sym=False)
    if (k % 100 == 0):
        v.plot(1, x, phi, {'color': 'gray', 'ls': '--', 'lw': 1.5})
#
# Visualización usando VisCoFlow
#
v.plot(1, x, phi, {
    'color': 'C0',
    'ls': '-',
    'lw': 1.5,
    'label': 'Numérica',
    'zorder': 5
})
v.plot(1, xa, exac, {'color': 'red', 'ls': '-', 'lw': 2.0, 'label': 'Exacta'})
v.grid()
v.legend()
Esempio n. 4
0
#xg, yg = np.meshgrid(x, y)
#
# Se construye el arreglo donde se guardará la solución
#
T = np.zeros((nvy + 2, nvx + 2))  # El arreglo contiene ceros
T[-1, :] = TT  # Condición de frontera pared superior
T[:, 0] = TL  # Condición de frontera en la pared izquierda
#
# Definimos la fuente
#
Su = np.zeros(ivy * ivx)
#
# 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
#
laplace.setNumericalScheme(dif_scheme)
laplace.solve()
#
# Graficación
#
con = v.contourf(2, x, y, T, {'cmap': 'inferno', 'levels': 20})
v.colorbar(2, con)
v.show()
Esempio n. 5
0
#
S = np.zeros(ivx)
S[:] = q
#
# Definimos el esquema de disccretización
#
dif_scheme = sDiffusion1D(malla, S, Gamma=k)
#
# Definimos la ecuación a resolver
#
poisson = PDE(rod, T)
#
# Creamos el sistema lineal y lo resolvemos
#
poisson.setNumericalScheme(dif_scheme)
poisson.solve()
#
# Solución analítica
#
xa = np.linspace(0, longitud, 100)
Ta = analyticSol(xa)
#
# Visualización
#
x, _, _ = malla.coordinatesMeshFVM()
axis_par = [{
    'title': 'Numerica vs Exacta',
    'xlabel': 'x [cm]',
    'ylabel': 'T [$^o$C]'
}]
v = flx.Plotter(2, 1, axis_par)
Esempio n. 6
0
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})

heat_transfer.printMat(nice=True)

##
## Visualización usando VisCoFlow
##
v.plot(1, T, z, {
    'marker': '',
    'color': 'k',
    'ls': '-',
    'lw': 2,
    'label': 'Sol. Final'
})
Esempio n. 7
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()