# # 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
# # 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)
# # 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 #
# 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 #
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
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 #
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)