Example #1
0
#
# Datos del problema
#
longitud = 0.02  # meters
TA = 100  # °C
TB = 200  # °C
k = 0.5  # W/m.K
q = 1e+06  # 1e+06 W/m^3 = 1000 kW/m^3 Fuente uniforme
N = 6  # Número de nodos
dt = 0.00001  # Paso de tiempo
Tmax = 40  # Número de pasos en el tiempo
#
# Definición del dominio y condiciones de frontera
#
rod = Line(longitud)
rod.boundaryConditions(dirichlet={'LEFT': TA, 'RIGHT': TB})
#
# Creamos la malla y obtenemos datos importantes
#
malla = rod.constructMesh(N)
ivx, _, _ = malla.bounds(bi=1, ei=N - 1)
nx = malla.nx  # Número de nodos
nvx = malla.vx  # Número de volúmenes
delta = malla.dx  # Tamaño de los volúmenes
#
# Se construye el arreglo donde se guardará la solución
#
T = np.ones(nvx + 2)  # El arreglo contiene unos
T *= TA  # Inicializamos T = TA
T[0] = TA  # Condición de frontera izquierda
T[-1] = TB  # Condición de frontera derecha
Example #2
0
#
# Datos del problema
#
longitud = 1.0  # metros
Tambiente = 20  # °C
TA = 100  # °C
n2 = 25  # /m^2
fluxB = 0  # Flujo igual a cero
N = 6  # Número de nodos
k = 1
q = 0
#
# Definición del dominio y condiciones de frontera
#
rod = Line(longitud)
rod.boundaryConditions(dirichlet={'LEFT': TA}, neumman={'RIGHT': fluxB})
#
# Creamos la malla y obtenemos datos importantes
#
malla = rod.constructMesh(N)
ivx, _, _ = malla.bounds(bi=1, ei=N - 1)
nx = malla.nx  # Número de nodos
nvx = malla.vx  # Número de volúmenes
delta = malla.dx  # Tamaño de los volúmenes
#
# Se construye el arreglo donde se guardará la solución
#
T = np.zeros(nvx + 2)  # El arreglo contiene ceros
T[0] = TA  # Condición de frontera izquierda
#
# Imprimimos los datos del problema (nicely)
Example #3
0
#
# Datos del problema
#
longitud = 4000.0 # meters
N  = 101 # 101 Número de nodos
TA = 15 # °C 
TB = 750 # °C 
dt = 3600*24*365 # Paso de tiempo:  1 año [s]
Nspeedup = 1000
dt *= Nspeedup
Tmax = int(250000 / Nspeedup) # Number of time steps.
#
# Definición del dominio y condiciones de frontera
#
reservoir = Line(longitud)
reservoir.boundaryConditions(dirichlet = {'RIGHT':TB, 'LEFT':TA})
#
# Creamos la malla y obtenemos datos importantes
#
malla     = reservoir.constructMesh(N)
ivx, _, _ = malla.bounds(bi = 1, ei = N-1)
nx        = malla.nx    # Número de nodos
nvx       = malla.vx    # Número de volúmenes
dx        = malla.dx    # Tamaño de los volúmenes
#
# Depth coordinates
#
z, _, _ = malla.constructMeshFVM()
#
# Se construye el arreglo donde se guardará la solución
#
Example #4
0
#
L = 2.5  # m
rho = 1.0  # kg/m^3
u = 1.0  # m/s
Gamma = 0.001  # kg / m.s
phi0 = 1  #
phiL = 0  #
N = 200  # Número de nodos
dt = 0.002  # Paso de tiempo
Tmax = 1.0
Nmax = int(Tmax / dt)
#
# Definición del dominio y condiciones de frontera
#
linea = Line(L)
linea.boundaryConditions(dirichlet={'LEFT': phi0, 'RIGHT': phiL})
#
# Creamos la malla y obtenemos datos importantes
#
malla = linea.constructMesh(N)
ivx, _, _ = malla.bounds(bi=1, ei=N - 1)
nx = malla.nx  # Número de nodos
nvx = malla.vx  # Número de volúmenes
delta = malla.dx  # Tamaño de los volúmenes
#
# Se construye el arreglo donde se guardará la solución
#
phi = np.zeros(nvx + 2)  # El arreglo contiene ceros
phi[0] = phi0  # Condición de frontera izquierda
phi[-1] = phiL  # Condición de frontera derecha
#
Example #5
0
 malla = rod.constructMesh(N)
 vx = malla.vx + 2
 ivx, _, _ = malla.bounds(bi=1, ei=N - 1)
 #    print(malla.hx)
 #
 # Create a scalar field for store the solution
 #
 T = np.zeros(vx)
 T[0] = 0
 T[-1] = 1
 #
 # Define the boundary conditions
 # Esta función activa la corrección de los valores aW*, aP*, aE*, sp*,
 # según sea el caso.
 #
 rod.boundaryConditions(dirichlet={'RIGHT': T[-1], 'LEFT': T[0]})
 #
 # The source (use only one of the two options)
 #
 su = np.ones(ivx)
 #    su = np.zeros(ivx)
 #
 # Create a scheme test for testing
 #
 scheme = Test(malla, su)
 #
 # Create a Partial Differential Equation
 #
 pde = PDE(rod, T)
 #
 # Define the elements of the PDE and solve it
Example #6
0
import vis.flowix as flx
#
# Datos del problema
#
longitud = 0.5  # metros
TA = 100  # °C
TB = 500  # °C
k = 1000  # W/m.K
N = 6  # Número de nodos
dt = 0.00001  # Paso de tiempo
Tmax = 20  # Número de pasos en el tiempo
#
# Definición del dominio y condiciones de frontera
#
barra = Line(longitud)
barra.boundaryConditions(dirichlet={'RIGHT': TB, 'LEFT': TA})
#
# Creamos la malla y obtenemos datos importantes
#
malla = barra.constructMesh(N)  # Se construye el objeto para la malla
ivx, _, _ = malla.bounds(bi=1, ei=N - 1)  # Grados de libertad
nx = malla.nx  # Número de nodos
nvx = malla.vx  # Número de volúmenes
delta = malla.dx  # Tamaño de los volúmenes
#
# Se construye el arreglo donde se guardará la solución
#
T = np.zeros(nvx + 2)  # Condición inicial T = 0
T[0] = TA  # Condición de frontera izquierda
T[-1] = TB  # Condición de frontera derecha
#
Example #7
0
        
if __name__ == '__main__':
        
    from geo.line import Line
#
# Create a domain with its mesh
#    
    N = 101
    rod = Line(4000)
    malla = rod.constructMesh(N)
    ivx, _, _ = malla.bounds(bi = 1, ei = N-1)    
#    malla.coordinatesMeshFVM()
#
# Scalar field for the solution
#
    T = np.zeros(malla.vx+2)
    T[0] = 15
    T[-1] = 750
#
# Definitions of boundary conditions
#
    rod.boundaryConditions({'RIGHT':'D', 'LEFT':'D'})
#
# Create an scheme
#
    dt = 3600*24*365
    Su = np.zeros(ivx)
    laplace = tDiffusion1D(malla, Su, dt = dt)    
    laplace.calcConductivity()
    print('GAMMA : \n', laplace.Gamma)