<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>http://fiscomp.if.ufrgs.br/index.php?action=history&amp;feed=atom&amp;title=C%C3%B3digo_2_-_M%C3%A9todo_FTCS_expl%C3%ADcito</id>
	<title>Código 2 - Método FTCS explícito - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="http://fiscomp.if.ufrgs.br/index.php?action=history&amp;feed=atom&amp;title=C%C3%B3digo_2_-_M%C3%A9todo_FTCS_expl%C3%ADcito"/>
	<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=C%C3%B3digo_2_-_M%C3%A9todo_FTCS_expl%C3%ADcito&amp;action=history"/>
	<updated>2026-04-05T04:39:23Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=C%C3%B3digo_2_-_M%C3%A9todo_FTCS_expl%C3%ADcito&amp;diff=5968&amp;oldid=prev</id>
		<title>Schmokel: Criou página com '&lt;source lang=&quot;python&quot;&gt;  Lx = 500.0        #define o número de pontos na direção x px = 1001            #define o espaçamento entre os pontos mais próximos dx = Lx / (px -...'</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=C%C3%B3digo_2_-_M%C3%A9todo_FTCS_expl%C3%ADcito&amp;diff=5968&amp;oldid=prev"/>
		<updated>2021-10-19T14:44:17Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;  Lx = 500.0        #define o número de pontos na direção x px = 1001            #define o espaçamento entre os pontos mais próximos dx = Lx / (px -...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lx = 500.0      &lt;br /&gt;
&lt;br /&gt;
#define o número de pontos na direção x&lt;br /&gt;
px = 1001          &lt;br /&gt;
&lt;br /&gt;
#define o espaçamento entre os pontos mais próximos&lt;br /&gt;
dx = Lx / (px - 1)  &lt;br /&gt;
&lt;br /&gt;
# Localiza o número de pontos ao longo das direções x e y&lt;br /&gt;
x = np.linspace(0.0, Lx, num=px)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#profundidade do oceano h = 50 m&lt;br /&gt;
h = 2 * np.ones_like(x)&lt;br /&gt;
&lt;br /&gt;
# Condição inicial da onda gerado pelo sismo &lt;br /&gt;
eta0 = 3. * np.exp(-((x-80)**2/70))&lt;br /&gt;
eta0_analitico = 2 + 3. * np.exp(-((x-80)**2/70))&lt;br /&gt;
&lt;br /&gt;
# velocidade constante&lt;br /&gt;
u = 4.3&lt;br /&gt;
&lt;br /&gt;
# constante da gravidade&lt;br /&gt;
g = 9.81  &lt;br /&gt;
&lt;br /&gt;
# define o tempo máximo e o intervalo infinitesimal de tempo &lt;br /&gt;
Tmax = 30.&lt;br /&gt;
dt = 0.01&lt;br /&gt;
nt = (int)(Tmax/dt)&lt;br /&gt;
&lt;br /&gt;
eta = shallow_water(eta0,eta0_analitico,h,g,nt,dx,dt,px,x,u)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def shallow_water(eta0,eta0_analitico,h,g,nt,dx,dt,px,x,u):&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    # Copia a amplitude inicial da onda no espaço  &lt;br /&gt;
    eta = eta0.copy()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    nx = eta.shape&lt;br /&gt;
    fundo = 0 * np.ones_like(x)&lt;br /&gt;
    conta = 0&lt;br /&gt;
    &lt;br /&gt;
    # Loop over timesteps&lt;br /&gt;
    for k in range(1,nt):&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
        eta = atualiza_eta(eta, dx, dt, nx,px,h,u)&lt;br /&gt;
        eta0_analitico = 2 + 3. * np.exp(-((x-80 -u*(k*dt))**2/70))  &lt;br /&gt;
        &lt;br /&gt;
        conta = conta + 1&lt;br /&gt;
        &lt;br /&gt;
        if(conta == 100):&lt;br /&gt;
            &lt;br /&gt;
            plt.clf()&lt;br /&gt;
            &lt;br /&gt;
            # titulos&lt;br /&gt;
            plt.suptitle('Propagação da onda- FTCS', fontsize=14)&lt;br /&gt;
            plt.title(f'Tempo: {round(dt*k, 3)} s', fontsize=10)&lt;br /&gt;
            plt.ylim(-1, 12)&lt;br /&gt;
            plt.xlim(0, 250)&lt;br /&gt;
            plt.plot(x,eta0_analitico,label='$\eta$ analítico')&lt;br /&gt;
            plt.plot(x, eta+h, label='$\eta$ numérico')&lt;br /&gt;
            plt.plot(x,fundo,label='$h(x)$')&lt;br /&gt;
            plt.xlabel('x [m]')&lt;br /&gt;
            plt.legend()&lt;br /&gt;
            plt.ylabel('$\eta$ [m]')&lt;br /&gt;
           &lt;br /&gt;
            plt.show()&lt;br /&gt;
            plt.close()&lt;br /&gt;
            &lt;br /&gt;
            conta=0&lt;br /&gt;
                &lt;br /&gt;
    return eta, M&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
def atualiza_eta(eta, dx, dt, nx, px, h, u):&lt;br /&gt;
    &lt;br /&gt;
    for j in range(1,px-2):&lt;br /&gt;
        &lt;br /&gt;
        D = eta + h&lt;br /&gt;
        &lt;br /&gt;
        dDdx = u*(D[j+1] - D[j-1]) / (2. * dx)&lt;br /&gt;
        eta[j] = eta[j] - dt * (dDdx)&lt;br /&gt;
    &lt;br /&gt;
    return eta   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Schmokel</name></author>
	</entry>
</feed>