<?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=Cahn2dfourier</id>
	<title>Cahn2dfourier - 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=Cahn2dfourier"/>
	<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Cahn2dfourier&amp;action=history"/>
	<updated>2026-04-19T09:42:46Z</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=Cahn2dfourier&amp;diff=8245&amp;oldid=prev</id>
		<title>Leomigotto em 21h53min de 29 de setembro de 2022</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Cahn2dfourier&amp;diff=8245&amp;oldid=prev"/>
		<updated>2022-09-29T21:53:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pt-BR&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Edição anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Edição das 18h53min de 29 de setembro de 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l16&quot;&gt;Linha 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linha 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#CONSTANTES INICIAIS&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#CONSTANTES INICIAIS&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#SEMENTE UTILIZADA NAS FIGURAS DA PÁGINA:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#846513 PARA O PRIMEIRO CONJUNTO&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#8456 PARA O SEGUNDO CONJUNTO&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;seed = 8456&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;seed = 8456&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Leomigotto</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Cahn2dfourier&amp;diff=8219&amp;oldid=prev</id>
		<title>Leomigotto: Criou página com '&lt;source lang=&quot;python&quot;&gt; import numpy as np import matplotlib.pyplot as plt from scipy.fft import rfft2, irfft2, rfftfreq, fftfreq import os import time  #region função Fourie...'</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Cahn2dfourier&amp;diff=8219&amp;oldid=prev"/>
		<updated>2022-09-29T02:28:35Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt; import numpy as np import matplotlib.pyplot as plt from scipy.fft import rfft2, irfft2, rfftfreq, fftfreq import os import time  #region função Fourie...&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;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.fft import rfft2, irfft2, rfftfreq, fftfreq&lt;br /&gt;
import os&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
#region função Fourier&lt;br /&gt;
def cahnfourier2d(aa, kk2, kk4):#calculador da transformada&lt;br /&gt;
    cct = rfft2(aa)&lt;br /&gt;
    cct3 = rfft2(aa**3)&lt;br /&gt;
    cct = cct + difd*dt*(-kk2*(cct3 - cct) - kk4*cct)&lt;br /&gt;
    ccn = irfft2(cct)&lt;br /&gt;
    return ccn&lt;br /&gt;
#endregion&lt;br /&gt;
&lt;br /&gt;
#CONSTANTES INICIAIS&lt;br /&gt;
seed = 8456&lt;br /&gt;
&lt;br /&gt;
gamma = (0.01)**2&lt;br /&gt;
&lt;br /&gt;
difd = 1&lt;br /&gt;
&lt;br /&gt;
intervalo = 50&lt;br /&gt;
&lt;br /&gt;
xmax = 1&lt;br /&gt;
&lt;br /&gt;
tmax = 0.05&lt;br /&gt;
&lt;br /&gt;
dt = 1.8*(10**-7)&lt;br /&gt;
&lt;br /&gt;
dx = 1/128&lt;br /&gt;
&lt;br /&gt;
#NORMALIZAR, 0 PRA NÃO, 1 PARA SIM&lt;br /&gt;
normalizar = 1&lt;br /&gt;
&lt;br /&gt;
mediadesejada = 0.5&lt;br /&gt;
#DAQUI PRA BAIXO MELHOR NÃO MEXER&lt;br /&gt;
&lt;br /&gt;
#region gerar frequências&lt;br /&gt;
np.random.seed(seed)&lt;br /&gt;
&lt;br /&gt;
l = int((xmax/dx))&lt;br /&gt;
&lt;br /&gt;
nx21 = int((l/2) + 1)&lt;br /&gt;
&lt;br /&gt;
k1  = rfftfreq(l, dx/(2*np.pi))&lt;br /&gt;
&lt;br /&gt;
k2 = fftfreq(l, dx/(2*np.pi))&lt;br /&gt;
&lt;br /&gt;
r1, r2 = np.meshgrid(k1, k2)&lt;br /&gt;
&lt;br /&gt;
p = r1**2 + r2**2&lt;br /&gt;
&lt;br /&gt;
q = (p**2)*gamma&lt;br /&gt;
#endregion&lt;br /&gt;
&lt;br /&gt;
#region cálculo de quantos arrays faltam&lt;br /&gt;
t = 0&lt;br /&gt;
&lt;br /&gt;
u = 1&lt;br /&gt;
&lt;br /&gt;
while t &amp;lt; tmax:#ver tamanho do array&lt;br /&gt;
    for i in range(intervalo):&lt;br /&gt;
        t = round(t + dt, int(-np.log10(dt) + 2))&lt;br /&gt;
    u+=1&lt;br /&gt;
#endregion&lt;br /&gt;
&lt;br /&gt;
#region criar array e calcular média do frame inicial&lt;br /&gt;
&lt;br /&gt;
cc = np.zeros((u, l, l))&lt;br /&gt;
&lt;br /&gt;
cc[0] = np.random.rand(l, l)*2 - 1&lt;br /&gt;
&lt;br /&gt;
media = np.sum(cc[0])/(l**2)&lt;br /&gt;
#endregion&lt;br /&gt;
&lt;br /&gt;
#region normalizador&lt;br /&gt;
if normalizar == 1:&lt;br /&gt;
    cc[0] = (((cc[0] - media)/(1 + abs(media))) * (1-abs(mediadesejada))) + mediadesejada&lt;br /&gt;
else:&lt;br /&gt;
    mediadesejada = 10&lt;br /&gt;
#endregion&lt;br /&gt;
&lt;br /&gt;
#region previsão de tempo&lt;br /&gt;
tempoini = time.time()&lt;br /&gt;
temp = np.copy(cc[0])&lt;br /&gt;
for i in range(intervalo):&lt;br /&gt;
    temp = cahnfourier2d(temp, p, q)&lt;br /&gt;
tempofinal = time.time()&lt;br /&gt;
tempoestimado = tempofinal + (tempofinal - tempoini)*(u-1)&lt;br /&gt;
#endregion&lt;br /&gt;
&lt;br /&gt;
#region parte que funciona salvando coisa no pc, sem plotar ao vivo&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Será um total de {u} arrays. O primeiro já está feito. Hora estimada de término: {time.ctime(tempoestimado)}. Começando...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#region calculos&lt;br /&gt;
temp = np.copy(cc[0])&lt;br /&gt;
&lt;br /&gt;
v = 1&lt;br /&gt;
&lt;br /&gt;
t = 0&lt;br /&gt;
&lt;br /&gt;
while t &amp;lt; tmax:#parte boa do programa&lt;br /&gt;
    for i in range(intervalo):&lt;br /&gt;
        temp = cahnfourier2d(temp, p, q)&lt;br /&gt;
        t = round(t + dt, int(-np.log10(dt) + 2))&lt;br /&gt;
    cc[v] = temp&lt;br /&gt;
    print(f&amp;quot;Array numero {v+1} de {u} feito!&amp;quot;)&lt;br /&gt;
    v+=1&lt;br /&gt;
&lt;br /&gt;
tempofinaleira = time.time()&lt;br /&gt;
diftempo = tempofinaleira - tempoestimado&lt;br /&gt;
print(f&amp;quot;Acabou!&amp;quot;)&lt;br /&gt;
#endregion&lt;br /&gt;
&lt;br /&gt;
#region salvar valores&lt;br /&gt;
np.random.seed()&lt;br /&gt;
&lt;br /&gt;
codigo = int(np.random.rand(1)*10**4)&lt;br /&gt;
&lt;br /&gt;
while os.path.isdir(f&amp;quot;{codigo}&amp;quot;) == True:&lt;br /&gt;
    print(&amp;quot;Deu igual!&amp;quot;)&lt;br /&gt;
    codigo+=1&lt;br /&gt;
&lt;br /&gt;
os.makedirs(f&amp;quot;.\\{codigo}&amp;quot;, exist_ok = True)&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Pasta única criada! Nome {codigo}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
informacoescopiaveis = f&amp;quot;&amp;quot;&amp;quot;#valores do codigo {codigo}, normalização {normalizar} em média {mediadesejada}. Este arquivo é para caso de perder o arquivo de valores&lt;br /&gt;
#ou ser necessário consultar os valores.&lt;br /&gt;
normalizar = {normalizar}&lt;br /&gt;
&lt;br /&gt;
mediadesejada = {mediadesejada}&lt;br /&gt;
&lt;br /&gt;
codigo = {codigo}&lt;br /&gt;
&lt;br /&gt;
seed = {seed}&lt;br /&gt;
&lt;br /&gt;
gamma = {gamma}&lt;br /&gt;
&lt;br /&gt;
difd = {difd}&lt;br /&gt;
&lt;br /&gt;
intervalo = {intervalo}&lt;br /&gt;
&lt;br /&gt;
xmax = {xmax}&lt;br /&gt;
&lt;br /&gt;
t = {t}&lt;br /&gt;
&lt;br /&gt;
dt = {dt}&lt;br /&gt;
&lt;br /&gt;
dx = {dx}&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
valores = np.zeros(10)&lt;br /&gt;
&lt;br /&gt;
valores[0], valores[1],    valores[2], valores[3], valores[4], valores[5], valores[6], valores[7], valores[8], valores[9] = (&lt;br /&gt;
normalizar, mediadesejada, seed,       gamma,      difd,       intervalo,  xmax,       t,          dt,         dx)&lt;br /&gt;
&lt;br /&gt;
np.save(f&amp;quot;.\\{codigo}\\val{codigo}.npy&amp;quot;, valores)&lt;br /&gt;
&lt;br /&gt;
np.save(f&amp;quot;.\\{codigo}\\{codigo}.npy&amp;quot;, cc)&lt;br /&gt;
&lt;br /&gt;
arquivo = open(f&amp;quot;.\\{codigo}\\{codigo}.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
arquivo.write(f&amp;quot;{informacoescopiaveis}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
arquivo.close()&lt;br /&gt;
#endregion&lt;br /&gt;
&lt;br /&gt;
#endregion&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leomigotto</name></author>
	</entry>
</feed>