Documentacióndifusion_1d(u0, alpha, dx, dt, pasos, bc_tipo, bc_izq, bc_der)

difusion_1d(u0,α,dx,dt,pasos,bctipo,bcizq,bcder)\texttt{difusion\_1d}(u_{0}, \alpha, dx, dt, pasos, bc_{tipo}, bc_{izq}, bc_{der})

Nombre

difusion_1d - Simula difusion termica 1D mediante diferencias finitas explicitas.

Sinopsis

tray = fisicas.difusion_1d(u0, alpha, dx, dt, pasos, bc_tipo, bc_izq, bc_der)

Descripcion

Simula la evolucion temporal completa del perfil u(x,t) para la ecuacion de difusion unidimensional.

Ecuacion continua:

ut=α2ux2\frac{\partial u}{\partial t}=\alpha\frac{\partial^2 u}{\partial x^2}

Esquema explicito:

uin+1=uin+λ(ui1n2uin+ui+1n)u_i^{n+1}=u_i^n+\lambda(u_{i-1}^n-2u_i^n+u_{i+1}^n)

λ=αdtdx2\lambda=\frac{\alpha*dt}{dx^2}

Condicion aproximada de estabilidad:

λ0.5\lambda \le 0.5

Comportamiento

  • Parte del perfil inicial u0 y construye una malla temporal de pasos+1 estados.
  • Aplica condiciones de borde fijas o aisladas segun bc_tipo.
  • Advierte cuando el parametro lambda supera el umbral tipico de estabilidad.
  • Retorna una TABLA con el vector de tiempos t y la matriz U de evolucion completa.

Parámetros

ParámetroTipoDescripción
u0VECTORCondicion inicial u(x, t=0), dada como VECTOR.
alphaNUMERICOCoeficiente de difusion o difusividad termica.
dxNUMERICOEspaciamiento entre puntos de la malla.
dtNUMERICOPaso temporal.
pasosNUMERICOCantidad de pasos de tiempo a simular.
bc_tipoSTRINGTipo de condicion de borde.

Valores soportados:

  • "fija": condicion Dirichlet; fija los extremos con bc_izq y bc_der.
  • "aislada": condicion Neumann 0 aproximada; copia el vecino en los bordes.
  • Otro valor: se trata como "aislada". | | bc_izq | NUMERICO | Valor de borde izquierdo, usado solo si bc_tipo = "fija". | | bc_der | NUMERICO | Valor de borde derecho, usado solo si bc_tipo = "fija". |

Valor de retorno

TABLA - TABLA con la evolucion temporal completa.

Campos principales:

  • t: VECTOR de tiempos simulados.
  • U: MATRIZ con la simulacion completa.

Cada fila U[n] representa el perfil completo en el instante t[n].

Ejemplo

ejemplo.blox
Solo lectura
INCLUIR "fisicas.api"
INCLUIR "graficos.api"

FUNCION PRINCIPAL
INICIO
    NUMERICO N, i
    NUMERICO alpha, dx, dt, pasos
    TABLA R


    // Mallado
    N  = 101
    dx = 1.0/(N-1)

    // Parámetros físicos y numéricos
    alpha = 0.01
    dt    = 0.2 * dx*dx / alpha     // asegura lambda = 0.2 (estable)
    pasos = 300

    // Perfil inicial: todo 0, pico en el centro

    VECTOR u0[]     // Dimenion N
    STRING expr

    // Carga vector u0 (condicion de contorno)
    expr = "10*e^(-1/1*x)*sin(1/3*x)"
    u0 = fisicas.carga_formula(expr, N)


    // Bordes fijos a 0
    R = fisicas.difusion_1d(u0, alpha, dx, dt, pasos, "fija", 0, 0)

    VECTOR t[]
    MATRIZ U[][]

    t = R.t
    U = R.U

    // Tomamos el último perfil para graficar u(x) al final
    VECTOR u_final[N] 

    PARA i = 0 HASTA N-1 HACER
        u_final[i] = U[pasos][i]
    FIN_PARA

    // x para graficar
    VECTOR x[N]
    PARA i = 0 HASTA N-1 HACER
        x[i] = i*dx
    FIN_PARA

    graficos.xy(x, u_final, "Difusion 1D (perfil final)", "PROG98 - FISICAS - difusion.png")
FINAL


    VECTOR u0[N]
    PARA i = 0 HASTA N-1 HACER
        u0[i] = 0
    FIN_PARA
    u0[ENTERO(N/2)] = 100```
Restringido: este ejemplo no puede ejecutarse en el Playground web porque la API requerida no está disponible en el sandbox.