Você está na página 1de 30

O programa Spec2Wave

Manual do usuário∗
Phelype H. Oleinik†

2022-12-01

Prefácio
Este manual descreve o funcionamento e a utilização do programa Spec2Wave para a geração de
dados a partir do espectro de onda. O programa consiste do executável spec2wave, deste manual,
e de um ou mais bancos de dados.
O Spec2Wave é freeware. O programa, assim como este manual, são distribuídos sob os
termos da licença Creative Commons by-nc-nd 4.01 .
O software é fornecido “como está”, sem garantia de qualquer tipo, expressa ou implícita,
incluindo, mas não se limitando às garantias de comercialização, adequação a uma finalidade
específica e não-violação. Em nenhum caso os autores ou detentores de direitos autorais serão
responsáveis por qualquer reclamação, danos ou outra responsabilidade, seja em uma ação de
contrato, ato ilícito ou de qualquer outra forma, decorrente de, ou em conexão com o software
ou seu uso.

Bugs e Funcionalidades
O Spec2Wave é um programa relativamente novo, e está em estágio inicial de desenvolvi-
mento, portanto está vazando2 bugs. Pelo mesmo motivo, pode também estar faltando alguma
funcionalidade que ao escrever o programa não percebi.
Assim, qualquer problema, solicitação de funcionalidade, ou sugestão em geral pode ser
enviado por e-mail e eu atenderei o mais rápido possível.
Além disso, o formato do banco de dados ainda é experimental e pode mudar bastante de
uma versão para outra, então por enquanto também fornecerei os bancos de dados conforme a
necessidade. Basta solicitar a localização e o intervalo de tempo necessários.


Esse manual corresponde à versão 1.2.1 do programa, revisado em 2022-12-01.

E-mail: oleinik ⟨at⟩ duck.com
1
https://creativecommons.org/licenses/by-nc-nd/4.0
2
Não está vazando, Marge. Está transbordando. — Homer Simpson.

1
Sumário
1 Introdução 3
2 A transformação do espectro em parâmetros de ondas 3
2.1 Selecionando um ponto no espaço . . . . . . . . . . . . . . . . . . . . . 3
2.2 Selecionando um intervalo no tempo . . . . . . . . . . . . . . . . . . . . 4
2.3 Transformando o espectro em elevação . . . . . . . . . . . . . . . . . . . 4
2.4 Unindo os segmentos da série temporal . . . . . . . . . . . . . . . . . . . 6
2.4.1 Otimização das uniões entre segmentos . . . . . . . . . . . . . . . . 6
2.4.2 Suavização das uniões entre segmentos . . . . . . . . . . . . . . . . 8
3 Variáveis de saída 9
4 Modo Overview 11
5 show points 11
6 Fontes de dados 12
6.1 elevation file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.2 spectrum file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7 O arquivo de parâmetros 13
7.1 A sintaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
7.2 Codificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
8 Parâmetros do Spec2Wave 15
8.1 Parâmetros disponíveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
9 Interface de linha de comando 24
10 Exemplo de utilização 25
10.1 Localizando um ponto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
10.2 Definindo o período de tempo . . . . . . . . . . . . . . . . . . . . . . . 25
10.3 Citando este documento . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
11 Bancos de dados disponíveis 28
11.1 DB001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
11.2 DB002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Referências 29
Índice 30

2
1 Introdução
O programa Spec2Wave não possui uma interface gráfica por motivos de falta de tempo e
excesso de preguiça de quem vos fala. Além disso, o Fortran não é uma linguagem apropriada
para interfaces gráficas devido à falta de bibliotecas necessárias (que, por sua vez, são devido ao
abandono do desenvolvimento da linguagem por quase 20 anos depois do Fortran 77). Sim, o
programa poderia ter sido feito em uma linguagem mais moderna, mas isso exigiria mais tempo,
o que, na época em que o programa foi feito, não era o recurso meu recurso mais abundante.
Mas, voltando ao programa: a comunicação com o usuário é feita através de um arquivo
de parâmetros que configura o programa de acordo com as necessidades do usuário. A seção 7
mostra como criar e configurar esse arquivo para extrair os dados do banco de dados. A seção 8
lista os parâmetros que podem ser utilizados no arquivo de parâmetros.
No entanto, vários dos parâmetros dos programa não são óbvios pois são relacionados a
uma etapa específica do processo de transformação dos dados, desde a forma espectral até o
salvamento dos arquivos de resultados. Portanto, antes de apresentar os parâmetros, a seção 2
deste manual descreverá (não tão) brevemente o funcionamento do programa para então, na
seção 8, mostrar como o usuário pode modificar o comportamento do programa.
A intenção das primeiras seções (2 a 5) é familiarizar o usuário com o funcionamento do
programa que está utilizando (algo surpreendentemente incomum!), e das seções finais (7 a 9)
é servir como manual de consulta ao operar o programa. Ao final do manual, há também um
exemplo de utilização (10), e um Índice para facilitar a busca por algum parâmetro.

2 A transformação do espectro em parâmetros de ondas


Cada banco de dados consiste de um conjunto de pontos no espaço, e cada ponto, por sua vez,
consiste em um espectro direcional de ondas que varia no tempo. Essa variação é discretizada
no tempo, com um espectro direcional completo a cada passo de tempo. O espectro, por sua vez,
também é dividido em um número finito de frequências e direções. Para mais informações sobre a
discretização espectral, é recomendado ao leitor o manual de usuário do Tomawac (Awk, 2019).

2.1 Selecionando um ponto no espaço


O processo começa ao definir o ponto de onde se deseja extrair os dados (utilizando o parâmetro
mesh node ou point name). Os bancos de dados fornecidos têm um conjunto de pontos predefi-
nidos imutável. Caso seja necessário um ponto diferente sinta-se livre para entrar em contato.
O ponto selecionado tem, dentro de um intervalo de tempo também predefinido, um espectro
direcional a cada passo de tempo do arquivo do banco de dados.
Abstraindo o conceito, podemos imaginar que em cada passo de tempo do banco de dados
há um espectro (a sua direcionalidade é irrelevante no momento), e esse espectro é válido durante
o passo de tempo:

𝑡
passo 𝑖 + 0 passo 𝑖 + 1 passo 𝑖 + 2

𝛥𝑡s

3
A ilustração representa uma sequência de 3 passos de tempo de comprimento 𝛥𝑡s consecu-
tivos, cada qual com seu espectro. O retângulo tracejado delimita o domínio de validade de cada
espectro, que termina imediatamente antes do domínio do espectro seguinte começar.

2.2 Selecionando um intervalo no tempo


Em seguida o programa seleciona, dentro do período disponível de dados, o intervalo de tempo
solicitado pelo usuário (utilizando os parâmetros initial time, duration, e time step). Agora
há duas possibilidades: ou o intervalo solicitado é relativamente curto e está contido dentro
de um passo de tempo do espectro original (retângulo tracejado da ilustração), ou o intervalo
selecionado começa e termina em passos de tempo diferentes.
A primeira possibilidade é, na prática, um caso especial da segunda, portanto não será
demonstrada separadamente. No caso do intervalo selecionado estar completamente contido
dentro de um passo de tempo do banco de dados, o processo se resume à transformação do
espectro daquele passo de tempo em uma série temporal de elevação da superfície com duração
igual a duration e passo de tempo 𝛥𝑡 = time step. O segundo caso é mais problemático devido
à natureza da transformação do espectro (no domínio da frequência) para uma serie temporal de
elevação da superfície (domínio do tempo).
Mas, antes de chegar à parte da transformação o programa precisa encontrar no banco de
dados o período solicitado pelo usuário. Supondo, então, a título de exemplo, que o valor do
initial time aponta para algum instante de tempo entre os passos 𝑖 + 0 e 𝑖 + 1, e que o valor de
duration é grande o suficiente de forma que o final do período solicitado esteja dentro do passo
de tempo 𝑖 + 2 (novamente, apenas como exemplo; o programa aceita virtualmente qualquer
valor de initial time e duration desde que sua combinação resulte em um intervalo válido e
contido dentro do banco de dados).
Todas as ilustrações a seguir mostram o mesmo intervalo de tempo da figura anterior,
incluindo uma representação do processo que o Spec2Wave está realizando nos dados. Na
ilustração a seguir, o retângulo tracejado, que inicia em initial time e tem largura igual a
duration, representa o intervalo de tempo selecionado do banco de dados:

initial time duration


… 𝑡
passo 𝑖 + 0 passo 𝑖 + 1 passo 𝑖 + 2
Determinado o intervalo de tempo a ser utilizado, o programa dividirá a duração da série
temporal solicitada entre os passos de tempo contidos no intervalo. No exemplo, o intervalo
contido em duration seria dividido em 3 segmentos: um contendo o final do passo 𝑖 + 0, outro
contendo o passo 𝑖 + 1 inteiro, e mais um para o início do passo 𝑖 + 2. Cada segmento terá
duração proporcional ao seu comprimento, para que as séries temporais geradas correspondam
ao dado original.

2.3 Transformando o espectro em elevação


Com os valores de initial time, duration, e time step, o Spec2Wave transforma o espectro
de cada segmento, separadamente, em uma série temporal equivalente com comprimento igual
ao comprimento calculado do segmento. A transformação utiliza o espectro de amplitude do
banco de dados, e um espectro de fase aleatório (ver nota abaixo). Esses espectros são passados
à Transformada (Discreta) de Fourier Inversa que transforma-os em uma realização da série
temporal de elevação da superfície, representativa do espectro de amplitude original.

4
O processo de transformação do espectro nas séries temporais de elevação da superfície é
feito conforme descrito em Oleinik et al. (2021). A transformação do espectro, junto com o
algoritmo de suavização e o processo de transformação da elevação em velocidades orbitais, são a
base de funcionamento do Spec2Wave.
Nota: A transformação do espectro em uma série temporal de elevação da superfície exige a
criação de um espectro de fase aleatório. Esse espectro aleatório é necessário para garantir
que não haja efeito de ressonância entre as componentes discretas do espectro de amplitude.
O Spec2Wave utiliza a função random_number nativa do GNU Fortran, que utiliza
o algoritmo xorshift1024* (Marsaglia, 2003) para a geração de números aleatórios
uniformemente distribuídos. Estes, por sua vez, são mapeados para uma distribuição
normal utilizando a forma polar (Knop, 1969) da transformada de Box e Muller (1958).
O gerador de números aleatórios do GNU Fortran pode ser “semeado” com um vetor
de números inteiros. A semente é utilizada como um ponto de partida para o gerador de
números, e a partir dela a geração dos números é aleatória, porém, determinística. Assim,
para uma mesma semente os números aleatórios gerados serão os mesmos, garantindo
reprodutibilidade dos dados gerados. Mais informações sobre o gerador de números
aleatórios podem ser encontradas no manual do GNU Fortran (https://gcc.gnu.
org/onlinedocs/gcc-5.4.0/gfortran.pdf).

O Spec2Wave utiliza, para a Transformada Discreta de Fourier Inversa (IDFT), a bi-


blioteca de transformadas de Fourier FFTW (Fastest Fourier Transform in the West) na versão
3.3.10 (www.fftw.org – Frigo e Johnson, 2005). Essa é uma biblioteca gratuita, eficiente, multi-
plataforma de transformadas de Fourier. Alguns parâmetros do Spec2Wave influenciam direta-
mente na operação da FFTW. Caso o usuário necessite modificar alguns desses parâmetros, é
recomendado o manual de usuário da FFTW (Frigo e Johnson, 2019).
No caso restrito em que toda a série temporal solicitada está contida dentro de um passo de
tempo do banco de dados, a série temporal de elevação está ponta após essa etapa. Obtida essa
série temporal basta apenas calcular as variáveis de saída em função da elevação (ver seção 3).
No entanto, no caso geral em que a série temporal contém mais de um passo de tempo do
banco de dados (mesmo sendo mais curta que 𝛥𝑡s , desde que comece em um passo de tempo
e termine no passo seguinte), a aplicação consecutiva da IDFT não garante que diferentes
segmentos sejam contínuos entre si. A ilustração abaixo representa a elevação da superfície 𝜂 dos
três segmentos do exemplo; note as descontinuidades entre eles:

A IDFT garante continuidade e a periodicidade da função (aqui, a elevação da superfície)


no domínio da transformada—i.e.: dentro de um passo de tempo. Isso é consequência direta de
uma das premissas básicas da Transformada Discreta de Fourier (DFT): que é que a função é
contínua no intervalo [0, 𝑇] e periódica, com período 𝑇 (ou contínua no intervalo [−𝑇/2, 𝑇/2],
dependendo da forma como a equação é escrita). No caso do Spec2Wave o período 𝑇 é o passo
de tempo 𝛥𝑡s do banco de dados.
Como exemplo, na ilustração acima, observe que os três segmentos de série temporal são
contínuos em seu domínio (condição de continuidade) e, além disso, que o ponto inicial e final de
cada série têm o mesmo valor de elevação e de variação da elevação (condição de periodicidade).

5
Essas condições permitem “arrastar” a função dentro do seu domínio sem perda de continuidade
(imagine uma função senoidal de período 𝑇, e uma janela de largura também 𝑇 que pode se
mover pelo eixo da função: qualquer que seja a posição da janela, a senoide será contínua no
intervalo 𝑇).
Nota: Essa condição de continuidade exige que alguns requisitos sobre a natureza da função
sejam satisfeitos, dentre eles o da função ser Hermitiana (Gentleman e Sande, 1966).
Como todos esses critérios são satisfeitos pela função da elevação da superfície e pelos
espectros originais, a explicação omite esses detalhes.

2.4 Unindo os segmentos da série temporal


Essa descontinuidade, que surge devido à necessidade de aplicar a IDFT uma vez para cada
segmento, não pode ficar no resultado final, pois pode causar problemas de convergência em
modelos numéricos que venham a utilizar esses dados e, principalmente, porque não é o tipo
de coisa que acontece na natureza. Para amenizar a descontinuidade o Spec2Wave utiliza dois
passos de otimização das uniões entre segmentos, descritos a seguir.

2.4.1 Otimização das uniões entre segmentos


A diferença no valor da elevação e/ou no valor da velocidade da superfície entre dois segmentos
é significativa em muitos casos, tornando impossível simplesmente ligá-los sem causar uma
descontinuidade ou mudança abrupta na série temporal.
Já foi exposto que o resultado da IDFT é contínuo dentro do seu domínio, e periódico
com período 𝑇. Isso permite que, por exemplo, que uma série temporal no domínio [0, 𝑇] seja
replicada em [𝑇, 2𝑇], e a função continue contínua e derivável em todo o domínio, inclusive no
ponto 𝑡 = 𝑇. Outra forma de tirar proveito dessa propriedade é que uma série temporal resultado
da IDFT pode ser cortada em um ponto arbitrário do seu domínio e as duas partes resultantes
podem ser unidas em qualquer ordem que a continuidade da função permanecerá (seguindo
a analogia da função senoidal, o efeito é o mesmo de mover a janela de período 𝑇 ao longo da
senoide, e utilizar apenas o período contido dentro da janela).
O Spec2Wave tira proveito dessa propriedade de continuidade e periodicidade para
encontrar o melhor ponto possível para fazer a união dos segmentos. Como as variáveis de
interesse são geralmente a elevação da superfície e a sua velocidade (i.e.: a função e sua derivada),
o Spec2Wave está programado para otimizar a união não só da função, mas também da derivada
(garantindo continuidade 𝐶1 da elevação) e da segunda derivada (garantindo continuidade 𝐶1
da velocidade e continuidade 𝐶2 da elevação).
Para otimizar a união entre os segmentos o Spec2Wave começa fixando o primeiro seg-
mento, sem modificá-lo, e utiliza-o como base. Em seguida, para cada segmento seguinte, o
programa utiliza uma relação de mínimos quadrados ponderada para encontrar um ponto no
segmento 𝑗 + 1 em que as três variáveis—elevação da superfície (𝜂), velocidade (𝜂′ ), e acelera-
ção (𝜂″ )—são o mais próximas possível do valor no final no segmento 𝑗.
Os coeficientes de ponderação entre os termos dos mínimos quadrados são, por padrão,
4, 2, e 1, mas podem ser alterados usando o parâmetro least squares coef. Os coeficientes
dizem ao programa qual o peso de 𝜂, 𝜂′ , e 𝜂″ , respectivamente, na otimização da união das curvas.
Quanto maior o valor do coeficiente em relação aos demais, mais importância o programa dará
para uma variável em relação às outras. O padrão, 4, 2, e 1, diz ao programa para priorizar a união

6
de 𝜂 sobre 𝜂′ , e priorizar 𝜂′ sobre 𝜂″ . Ao alterar o valor de least squares coef, leve em conta
que os coeficientes são elevados ao quadrado na ponderação.
Seguindo com o exemplo, o programa toma o último valor de 𝜂, 𝜂′ , e 𝜂″ (𝜂″ é omitido, mas
o princípio é o mesmo) no primeiro segmento como referência, e busca, ao longo do segundo
segmento, o ponto em que a soma dos quadrados das diferenças ponderadas dessas variáveis é
mínimo (essa soma é chamada de “badness”). Na figura, a linha que corta o segundo segmento
mostra o valor de 𝜂 no final do primeiro segmento, e as tangentes mostram o valor de 𝜂′ :

O programa então “arrasta” o segmento em questão até o ponto em que o badness é mínimo,
colocando assim o segmento na posição ideal. A figura a seguir mostra o deslocamento do
segundo segmento:

Feito isso o Spec2Wave repete o procedimento para os demais segmentos, encontrando o


ponto de badness mínimo do segmento seguinte (terceiro segmento na figura acima), e movendo-
o até esse ponto:

para então obter a melhor série temporal possível (mínimo badness):

O Spec2Wave tenta minimizar o badness abaixo de um limite máximo. Esse limite pode ser
alterado com maximum badness, cujo valor padrão é 0.05. Caso não seja possível o programa emite
um aviso na janela de comando dizendo o valor atingido. O valor de badness tende a aumentar
quando o segmento é muito curto, pois nesse caso o programa não tem muitas opções de pontos
para unir as séries temporais. O segmento pode ficar curto nas extremidades, dependendo do
valor de initial time e duration, ou quando valor de time step é muito grande. Dependendo
da situação o Spec2Wave dá uma dica da causa do problema.
Em alguns casos o valor de badness atingido é muito pouco acima do limite de maximum
badness. Nesses casos, ao invés de aumentar maximum badness, o usuário que se sentir desconfor-
tável com o aviso mostrado pelo programa pode ajustar manualmente a random seed utilizada
pelo programa para eliminar o aviso (use show seed para ver a semente utilizada pelo programa).

7
Vale enfatizar que essa manipulação terá apenas uma pequena influência no valor de badness e só
ajudará quando a diferença entre o valor atingido e o valor limite for pequena.
Perceba que no exemplo a primeira união ficou (visualmente) boa, não aparentando des-
continuidade em 𝜂 nem em 𝜂′ (evidenciado pela variação suave da inclinação da curva de 𝜂).
No entanto, na segunda união, embora a elevação da superfície esteja aparentemente correta,
há uma “dobra” na função, o que caracteriza uma descontinuidade na velocidade da superfície.
O processo a seguir trata de suavizar essa dobra.

2.4.2 Suavização das uniões entre segmentos


Para corrigir possíveis problemas remanescentes na série temporal é necessário um ajuste mais
refinado das uniões entre segmentos.
A informação de interesse para o Spec2Wave é a elevação da superfície e a sua velocidade,
conforme já mencionado. Novamente esse caso se reduz à uma função (𝜂) e sua derivada.
Agora, suponhamos que o domínio foi reduzido ao que é mostrado nos detalhes da figura
anterior. O domínio da função foi reduzido aos pontos adjacentes à união dos segmentos. O que
temos é uma função, cujo valor inicial e final (no domínio reduzido) é conhecido, bem como a
derivada da função nesses mesmos pontos, e o objetivo é substituir o interior desse domínio com
uma função contínua e suave.
As Splines são curvas paramétricas que podem ser definidas usando o valor da função e a sua
derivada nas extremidades, e a spline interpola uma função cúbica entre esses pontos respeitando
essas condições de contorno. A equação que define a spline cúbica é:

𝑌(𝑡) = (2𝑡3 − 3𝑡2 + 1)𝑦1 + (𝑡3 − 2𝑡2 + 𝑡)𝑦1′ + (−2𝑡3 + 3𝑡2 )𝑦2 + (𝑡3 − 𝑡2 )𝑦2′

onde 𝑦 é o valor da função e 𝑦′ é a sua derivada. O subscrito 1 indica o ponto inicial do intervalo
a interpolar e 2 o ponto final. A variável 𝑡 indica o domínio normalizado da interpolação, no
intervalo fechado [0, 1].
Para suavizar as uniões entre segmentos o Spec2Wave descarta 𝑁𝑆 pontos de dados de
cada lado da união e então utiliza o ponto 𝑁𝑆 + 1 para interpolar uma spline em cada um dos 𝑁𝑆
pontos removidos. Devido à condição de inclinação imposta na spline, o valor calculado para o
ponto 𝑁𝑆 coincidirá com o valor original então, na prática, o processo altera o valor da elevação
em 2(𝑁𝑆 − 1) pontos.
Tomando como exemplo uma situação similar à segunda união do exemplo anterior (as
linhas são ilustrativas; os pontos representam os dados):
𝑁𝑆

3
2
10
2 10
3

𝑁𝑆

O valor da elevação é aproximadamente igual no lado esquerdo e direito da união, no entanto


a inclinação das curvas é bastante diferente, o que causa uma descontinuidade significativa na
velocidade da superfície.

8
Os pontos na ilustração acima estão numerados de 1 a 𝑁𝑆 (5 no exemplo, valor padrão do
programa), que é o número de pontos utilizados pelo Spec2Wave para fazer a interpolação das
uniões. O programa permite modificar o valor de 𝑁𝑆 usando o parâmetro spline length. O
valor de 𝑁𝑆 deve ser maior ou igual a 2. Qualquer outro valor é ignorado.
Nota: O valor mínimo de 𝑁𝑆 é 2 pois, caso contrário, a interpolação seria feita, efetivamente,
em zero pontos. Portanto o programa limita 𝑁𝑆 a um mínimo de 2. Limitando 𝑁𝑆
a esse mínimo, o comprimento de um segmento também é limitado, em um mínimo
de 2𝑁𝑆,min = 4. Caso seja detectado um segmento mais curto que isso, o programa
automaticamente junta-o ao segmento adjacente antes mesmo de fazer a transformação
do espectro.
Nota: Além desse mínimo, o programa sugere outro valor mínimo para o comprimento de um
“bom” segmento. Esse mínimo é de 32 pontos de dados e não é configurável. Quando o
programa encontra um segmento menor que esse mínimo próximo a outro segmento longo
o suficiente, o número de pontos desse segmento curto é adicionado ao segmento longo
adjacente e o segmento curto é eliminado. Esse limite de um “bom” segmento é sugerido
para assegurar uma qualidade mínima (mínima, não suficiente) ao conjunto de dados
gerado. A IDFT aplicada a esses segmentos muito curtos tende a retornar valores mais
baixos do que o correto, portanto se o resultado do programa não estiver representando
bem o espectro original, é possível que os segmentos estejam demasiadamente curtos (nesse
caso o Spec2Wave entrará em pânico e mostrará vários avisos na janela de comando).
Agora o leitor é convidado a parar a leitura desse parágrafo e pular para o próximo.
O Spec2Wave (intencionalmente) não permite mudar o número de pontos de um “bom”
segmento. No entanto, caso o usuário sinta a necessidade, o efeito desse parâmetro pode
ser desabilitado usando o parâmetro I know what I am doing. Lembrando que o autor
não se responsabiliza por mau uso do programa.
Voltando ao exemplo, o algoritmo usa o valor de 𝜂 e 𝜂′ dos pontos 𝑁𝑆 + 1 (omitidos da
figura) na equação da spline para fazer a interpolação nos demais pontos nesse intervalo:

o programa então substitui os valores originais pelos valores suavizados com a interpolação,
diminuindo assim possíveis problemas de descontinuidade tanto na elevação da superfície quanto
na velocidade.

3 Variáveis de saída
Após fazer todo o processo de transformação do espectro em uma série temporal de elevação da
superfície (𝜂), o Spec2Wave prepara as variáveis de saída. O Spec2Wave tem um conjunto de

9
variáveis de saída implementadas. Caso alguma outra variável seja necessária contate o autor para
solicitar a implementação.
Há dois tipos de variáveis: temporais e espectrais. As variáveis temporais são todas obtidas
a partir da série temporal de 𝜂 e obedecem todos os parâmetros do programa conforme explicado
na seção 2. As variáveis espectrais (na falta de um nome mais adequado) são variáveis calculadas
a partir do espectro do banco de dados. Há muitas diferenças entre esses dois tipos de variáveis,
portanto o Spec2Wave foi dividido em três modos de operação: normal (padrão), overview, e
show points. O modo normal opera conforme descrito na seção 2, transformando o espectro
em 𝜂, unindo segmentos etc. Os modos overview e show points servem a propósitos bastante
diferentes, portanto serão descritos separadamente, nas seções 4 e 5, respectivamente.
As variáveis disponíveis para o parâmetro variables nesta versão do Spec2Wave são:
Variável Unidade Descrição
t time [s] Tempo desde o início da série temporal. O último valor do tempo
será igual a duration.
h elevation [m] Elevação da superfície obtida transformando o espectro do banco
de dados em uma série temporal (𝜂).
u velocity_u [m/s] Componente horizontal do vetor de velocidade orbital da água.
Essa variável assume valores diferentes dependendo da pro-
fundidade. Para escolher os valores de profundidade use o
parâmetro depth profile.
w velocity_w [m/s] Componente vertical do vetor de velocidade orbital da água, aná-
loga de velocity_u na direção vertical.
Diferente do modo de operação “normal” do Spec2Wave, o modo overview deve ser
explicitamente ativado usando o parâmetro overview com as variáveis que o programa deve
coletar. E as variáveis disponíveis para o parâmetro overview são:
Variável Unidade Descrição
Hs wave_height [m] Altura significativa espectral.
Tm mean_period [s] Período espectral médio.
Dm mean_direction [°]† Direção espectral média.
Tp peak_period [s] Período do pico espectral.
Pw wave_power [kW/m] Potencial energético por metro de crista de onda.

A unidade da direção média pode ser alterada com o parâmetro direction convention.
As componentes de velocidade orbital são calculadas, em cada profundidade 𝑧 a partir da
elevação da superfície usando as equações:
2𝜋𝜂 cosh(𝑘(𝑑 + 𝑧))
𝑢(𝑧) =
𝑇 sinh(𝑘𝑑)
e
d 2𝜋𝜂 sinh(𝑘(𝑑 + 𝑧))
𝑤(𝑧) =
d𝑡 𝑇 sinh(𝑘𝑑)
onde 𝑇 é o período das ondas 𝑘 é o número de onda (𝑘 = 2𝜋/𝐿 com 𝐿 sendo o comprimento da
onda), 𝑑 é a profundidade média da água, e 𝑧 é a profundidade de cálculo dada no parâmetro
depth profile.
As variáveis espectrais são calculadas pela integração do espectro direcional utilizando o
mesmo procedimento que o Tomawac (Awk, 2019).

10
4 Modo Overview
Antes de utilizar o Spec2Wave para extrair dados de um ponto específico no espaço e no tempo,
pode ser de interesse do usuário fazer um reconhecimento prévio do banco de dados que está
utilizando. Essa é a função do modo overview.
Esse modo é ativado usando o parâmetro overview com uma das variáveis espectrais dispo-
níveis (Hs, Tm, Dm, Tp, e Pw—ver seção 3). Quando esse modo é ativado somente os parâmetros
necessários são utilizados, os demais são ignorados. O modo overview é desativado por padrão, e
para desativá-lo basta remover (ou comentar) o parâmetro overview.
No modo overview os únicos parâmetros necessários no arquivo de parâmetros do
Spec2Wave são: overview para ativar este modo, database para dizer ao programa de onde
buscar os dados, e mesh node para especificar o ponto no espaço de onde extrair a informação.
Alguns outros parâmetros também são utilizados mas não são obrigatórios; o escopo de cada
parâmetro é detalhado na seção 8.
No modo overview o Spec2Wave lê todo o arquivo de banco de dados no ponto solicitado
e, para cada passo de tempo do banco de dados, calcula as variáveis espectrais solicitadas. Para
calcular as variáveis espectrais o Spec2Wave utiliza uma adaptação do procedimento de cálculo
dessas variáveis obtido do código do Tomawac. Para maiores informações sobre o cálculo dessas
variáveis o leitor é direcionado ao manual de usuário do Tomawac (Awk, 2019).
Após calculadas as variáveis solicitadas o programa salva-as nos respectivos arquivos de
saída e termina a execução.

5 show points

Além do modo overview o Spec2Wave tem um terceiro modo de operação. Esse modo é ativado
com o parâmetro show points. Nesse modo de execução o Spec2Wave irá apenas ler o arquivo
de banco de dados e apresentar os pontos disponíveis para a extração de dados. Nenhuma outra
informação é extraída neste modo.
No modo show points, o Spec2Wave apresenta as informações disponíveis de cada ponto
no banco de dados. O modo show points pode apresentar as informações na janela de comando,
ou salvá-las em um arquivo kml (Keyhole Markup Language), se o nome do arquivo for dado
como argumento para o parâmetro. Por exemplo, se usado com show points = nodes.kml, o
Spec2Wave criará um arquivo chamado nodes.kml que conterá as informações sobre os pontos.
Esse arquivo pode ser carregado em Atlas virtuais, como o Google Earth, ou o kde Marble, entre
outros, para obter uma representação gráfica dos pontos disponíveis.
Se for usado sem um argumento (i.e.: apenas show points ), o show points mostrará na
janela de comando, para cada ponto selecionado (ou todos os pontos disponíveis no banco de da-
dos, se nenhum for selecionado), um bloco mostrando o número do nó (para ser posteriormente
utilizado no parâmetro mesh node), as coordenadas geográficas desse ponto, e a profundidade da
água naquele ponto, conforme o exemplo:
Node 2
Coordinates: -54° 36' 31.03", -34° 14' 38.82"
Water depth: 9.805011 m.

Bancos de dados mais recentes possuem metadados associados aos pontos disponíveis. Esses
metadados são informações auxiliares sobre cada ponto (pontos diferentes podem conjuntos

11
de metadados diferentes), além das informações básicas apresentadas acima. Por exemplo, um
ponto com informação de distância da linha de costa e um nome:
Node 28
Coordinates: -53° 23' 7.61", -33° 45' 14.69"
Water depth: 9.882934 m.
Coastline distance: 207.025 m.
Name: Barra do Chuí 1
O nome (metadado Name) pode ser utilizado, ao invés de mesh node, para selecionar o ponto de
onde extrair dados usando o parâmetro point name. Para o ponto do exemplo acima, a instrução
mesh node = 28 é completamente equivalente a point name = Barra do Chuí 1.

6 Fontes de dados
O Spec2Wave funciona primariamente com um banco de dados binário que contém dados
espectrais de diversos pontos no espaço, ao longo de um determinado intervalo de tempo. Esse
banco de dados é o arquivo que o Spec2Wave lê quando o parâmetro database é utilizado.
No entanto, criar um banco de dados nesse formato é um processo relativamente demorado,
pois envolve a realização de uma simulação de ondas na região onde se deseja obter os dados, com
planejamento prévio de quais pontos serão exportados para o banco de dados, e qual o período
de tempo que será simulado.
Para que possa ser utilizado com outras fontes de dados, o Spec2Wave aceita, em substi-
tuição do database, outros dois parâmetros para indicar uma fonte de dados: elevation file e
spectrum file. Esses parâmetros e database são mutuamente exclusivos.

6.1 elevation file

Quando o usuário tiver uma série temporal de elevação da superfície, seja essa obtida de um
modelo computacional, físico, ou de monitoramento in situ, ela poderá ser usada como fonte de
dados para o Spec2Wave.
A série temporal deverá ser um arquivo de texto com tantas linhas quanto for o número de
instantes de tempo registrados da série temporal. Alternativamente, a série temporal pode ser
dada no formato de arquivo do Fluent. O formato do arquivo é detectado automaticamente.
Os registros devem ser igualmente espaçados no tempo, e o intervalo de tempo entre
cada registro deve ser informado, em segundos, no parâmetro input time step. Os valores
instantâneos de elevação da superfície devem estar em metros, medidos a partir do nível médio
da água (positivo para cima). Além disso, a profundidade da coluna d’água deve ser informada
com o parâmetro water depth. A tendêcia linear média da elevação é subtraída dos dados para
que o valor médio da elevação seja zero.
Quando utilizando o elevation file, os parâmetros initial time e duration referem-se
ao comprimento total da série temporal, e podem ser usados para cortar a série temporal conforme
necessário. Além disso, é possível alterar o passo de tempo de saída usando data interval.

6.2 spectrum file

Para casos mais específicos, em que uma série temporal de elevação não basta, o Spec2Wave
funciona também com um spectrum file. Os dados espectrais podem ser obtidos de qualquer
fonte, mas devem ser ajustados para o formato de arquivo que o Spec2Wave espera. Além disso,

12
assim como para o elevation file, a profundidade da coluna d’água deve ser informada para o
programa usando water depth.
O cabeçalho do arquivo contém duas linhas: na primeira constam o número de direções
𝑁𝑑 e o número de frequências 𝑁𝑓 do espectro discretizado, e na segunda, 𝑁𝑓 colunas contendo
cada uma das frequências discretizadas.
Depois do cabeçalho, inicia-se o corpo do arquivo, que contém os dados espectrais, de fato,
separados em blocos, cada um representando um passo de tempo. Cada bloco contém 1 + 𝑁𝑑
linhas; a primeira linha contém o valor do instante de tempo, em segundos, e as demais linhas
contém o espectro 𝒮𝑖,𝑗 [m2/Hz] para cada direção 𝑖 (linhas) e frequência 𝑗 (colunas) discretizada.
O esquema abaixo ilustra a estrutura básica do arquivo, e ao lado apresenta um arquivo exemplo
com espectro discretizado em 4 direções e 5 frequências, em 2 instantes de tempo.
𝑁𝑑 𝑁𝑓 4 5
cabeçalho
𝑓1 𝑓2 … 𝑓𝛮𝑓 0.03333 0.07801 0.18257 0.42728 1.00000
𝑡1 0.00000
𝒮1,1 𝒮1,2 … 𝒮1,𝛮𝑓 1.60e-9 8.65e-9 1.50e-8 1.76e-8 4.83e-7
𝒮2,1 𝒮2,2 … 𝒮2,𝛮𝑓 instante 𝑡1 4.39e-5 1.94e-3 1.51e-2 4.10e-2 8.42e-2
⋮ ⋮ ⋮ 0.12e+0 3.68e-2 2.08e-2 1.92e-2 1.86e-2
𝒮𝛮𝑑 ,1 𝒮𝛮𝑑 ,2 … 𝒮𝛮𝑑 ,𝛮𝑓 1.68e-2 1.23e-2 7.50e-3 3.97e-3 1.96e-3
𝑡2 900.000
𝒮1,1 𝒮1,2 … 𝒮1,𝛮𝑓 3.23e-9 3.67e-9 8.98e-7 1.22e-8 3.49e-7
𝒮2,1 𝒮2,2 … 𝒮2,𝛮𝑓 instante 𝑡2 4.80e-5 2.11e-3 1.61e-2 4.21e-2 8.54e-2
⋮ ⋮ ⋮ 0.13e+0 3.68e-2 2.05e-2 1.87e-2 1.81e-2
𝒮𝛮𝑑 ,1 𝒮𝛮𝑑 ,2 … 𝒮𝛮𝑑 ,𝛮𝑓 1.63e-2 1.19e-2 7.29e-3 3.87e-3 1.90e-3

O espectro 𝒮 deve estar discretizado em frequências estritamente crescentes, sendo 𝑓1


a frequência mais baixa, e 𝑓𝛮𝑓 a mais alta. Além disso, o espectro deve estar discretizado em
𝑁𝑑 direções uniformemente distribuídas no intervalo [0, 360°], adotando a convenção náutica
(0° no norte, positivo no sentido horário), sendo que a direção representa a direção de onde a
onda está vindo.

7 O arquivo de parâmetros
O arquivo de parâmetros é a principal interface entre o usuário e o programa. Esse é um arquivo
de texto simples, sem formatação, que contém os parâmetros a passar para o programa. Esta
seção especifica a sintaxe do arquivos de parâmetros e algumas especificidades sobre a codificação
desse arquivo.
O programa aceita que o arquivo de parâmetros tenha qualquer caractere válido, no entanto
caracteres “especiais” têm o péssimo costume de causar problemas. Se o programa não estiver se
comportando como deveria com o arquivo de parâmetros (ou qualquer outro problema) sinta-se
à vontade para entrar em contato que tentarei resolver o problema o mais rápido possível.

7.1 A sintaxe
O programa lê o arquivo de parâmetros linha por linha, portanto a ordem em que os parâmetros
são colocados é importante. Para a maioria dos parâmetros a ordem não importa, exceto se um
parâmetro for utilizado mais de uma vez. Nesse caso o comportamento é indefinido, e qualquer
coisa pode acontecer. A duplicação de parâmetros deve ser evitada.

13
O interpretador do arquivo de parâmetros ignora linhas vazias, portanto essas podem ser
usadas à vontade. O interpretador também permite “comentar” partes do arquivo de parâmetros
utilizando o caractere ‘!’. Como consequência, o caractere ‘!’ não pode ser utilizado no arquivo
de parâmetros com seu significado normal. O programa trata como comentário qualquer texto
desde o primeiro ‘!’ até o final da linha, portanto:
! Esse é o arquivo do banco de dados:
database: banco_de_dados.dtb ! <<< Obrigatório
é uma instrução válida e idêntica a
database: banco_de_dados.dtb
Na maioria dos casos o interpretador não faz distinção de maiúsculas e minúsculas, à exceção
dos parâmetros que indicam nomes de arquivos e pastas, portanto:
DaTaBaSe: BaNcO_De_DaDoS.DtB
é válido desde que o arquivo “BaNcO_De_DaDoS.DtB” exista.
Espaços antes e depois de parâmetros e do valor passado aos parâmetros são removidos,
mas não no meio de um parâmetro, portanto das instruções abaixo, apenas a primeira é válida (
representa um espaço):
mesh node : 123456 ! Válido
mesh node : 123456 ! Inválido
mesh node : 123 456 ! Inválido
A terceira instrução é inválida pois há dois números (123 e 456) no parâmetro mesh node, que só
aceita um.
O separador decimal utilizado é o ‘.’ portanto 123.456 é um número e 123,456 são dois.
Para separar listas pode-se usar tab, espaço, vírgula, e ponto-e-vírgula (uma sequência de separa-
dores é tratada como um único separador), portanto as duas instruções abaixo são válidas e têm
o mesmo efeito:
random seed: 12, 34; 56 78
random seed: 12;;;34;;56; 78
Alguns parâmetros não levam um valor, como os mostrados acima, mas apenas modificam
o comportamento do programa de alguma forma. Esses parâmetros são colocados sozinhos em
uma linha, por exemplo:
no warnings
Alguns parâmetros têm modificadores. O modificador altera o comportamento normal do
parâmetro. O modificador é um * logo após o ‘:’ que separa o parâmetro do valor (espaços tam-
bém são ignorados antes e depois do *). Portanto as duas instruções abaixo têm comportamentos
diferentes:
output path : * resultados ! Cria a pasta se necessário
output path : resultados ! Exibe um erro se a pasta não existe

7.2 Codificação
Codificação de arquivos de texto sempre é um problema. O Spec2Wave tenta o possível para
entender o arquivo de parâmetros dado, mas ainda assim ele falha em várias situações.
O melhor a se fazer é salvar o arquivo de parâmetros sem codificação (ou codificação ascii
ou ascii estendido (incorretamente denominada ansi, quando se referindo ao subconjunto
Windows-1252) ou com uma codificação simples, como utf-8. O Spec2Wave consegue
entender outras codificações, mas a leitura do arquivo é mais propensa a erros.

14
O Spec2Wave geralmente consegue adivinhar a codificação do arquivo sem maiores
problemas. No entanto, quanto à codificação de arquivos o melhor que se pode fazer é adivinhar,
e isso nem sempre funciona. Se o Spec2Wave não conseguir adivinhar a codificação correta do
seu arquivo você pode dizer a codificação utilizando a opção de linha de comando --encoding
(ver seção 9). Se nada disso funcionar a melhor opção é salvar o arquivo com outra codificação.

8 Parâmetros do Spec2Wave
Essa seção lista os parâmetros disponíveis para configurar o Spec2Wave. Cada bloco apresenta
um parâmetro, a sua sintaxe, alguns atributos, e uma descrição da sua funcionalidade.
Na lista abaixo, na sintaxe dos parâmetros, os que estão marcados com * têm modificador,
conforme descrito na seção 7.1. Ainda na sintaxe, texto exibido entre ⟨…⟩ representa o tipo de
informação que deve ser inserida, por exemplo um ⟨número real⟩ deve ser substituído por um
número real (!).
Argumentos que são uma ⟨lista{…}⟩ devem ser substituídos por uma lista válida (conforme
definidas na seção 7.1) de ⟨…⟩.
Argumentos entre ( … ) são listas de valores predefinidos. Nesse contexto o separador ‘|’
indica que os itens da lista são mutuamente exclusivos—i.e.: apenas um pode ser utilizado—, e
o separador ‘;’ significa que o argumento pode ser uma lista com um ou mais dos valores entre
( … ) (por exemplo, em ( a | b | c ), apenas a, b, ou c podem ser utilizados, enquanto em ( a ; b ; c )
qualquer combinação de a, b, e c é válida).
Argumentos entre [ … ] são opcionais. Por exemplo, o parâmetro show points tem um
argumento opcional [ ⟨nome de arquivo⟩ ]: se o argumento for omitido, o Spec2Wave exibe
os pontos na janela de comando, mas se o ⟨nome de arquivo⟩ for dado, um arquivo kml é salvo,
contendo informações sobre os pontos.

• Um ⟨número real⟩ válido é qualquer número no intervalo [−1.8 × 10308 , −1.8 × 10308 ]
(aproximadamente), desde que seja um valor válido para o parâmetro em questão. O
número pode ser dado em notação decimal ou exponencial. Se não houver, a parte decimal
pode ser omitida e o número pode ser escrito como um inteiro.

• Um ⟨número inteiro⟩ válido é qualquer número inteiro no intervalo [−231 , 231 − 1]


(também, desde que seja válido para o parâmetro em questão).

• Um ⟨nome de arquivo⟩ válido é um nome que aponta para um arquivo que existe na
pasta atual ou o caminho completo para um arquivo existente. O ⟨nome de arquivo⟩ não
pode conter o caractere ‘!’, o caractere de fim de linha, ou qualquer outro caractere não
permitido pelo sistema operacional.

• Um ⟨identificador ⟩ válido é uma sequência de caracteres que apontam para uma unidade
válida do programa ou do banco de dados, dependendo do contexto.

• Um ⟨diretório⟩ válido é um nome de pasta (sua existência depende do parâmetro em


questão) ou um caminho válido para uma pasta no sistema. O ⟨diretório⟩ não pode
conter o caractere ‘!’, o caractere de fim de linha, ou qualquer outro caractere não permitido
pelo sistema operacional.

15
8.1 Parâmetros disponíveis

base directory base directory : ⟨diretório⟩


Define o diretório base de trabalho do Spec2Wave. Se definido, todas as operações de
leitura e escrita de arquivos do Spec2Wave serão relativas a esse diretório. Essa opção é
útil quando usada pela linha de comando, com --basedir, quando se precisa processar o
Spec2Wave em lotes, sem precisar modificar o arquivo de parâmetros.

data interval data interval : ⟨número real⟩ obrigatório


Define o passo de tempo, em segundos, da série temporal pro- modo overview: ignorado
duzida pelo programa. O valor de data interval deve ser um unidade: [s]
número real estritamente positivo. A razão entre duration e data
interval é o número de passos de tempo no resultado do programa. Na dúvida, comece com
um valor de data interval relativamente alto e reduza conforme a necessidade. Quanto menor
data interval, maior o volume de dados gerados, e melhor a qualidade (resolução temporal)
desses dados.
Consulte o parâmetro time step para controlar o passo de tempo que o Spec2Wave usa
para fazer os cálculos internamente, e como isso influencia a forma final dos dados.

database database : ⟨nome de arquivo⟩ obrigatório†


Aponta para o Spec2Wave o arquivo do modo overview: obrigatório
banco de dados, de onde o programa buscará ver também: elevation file, spectrum file
os dados espectrais. Se o arquivo estiver no
mesmo diretório que o executável do Spec2Wave, basta fornecer o nome do arquivo do banco
de dados. Se estiver em outro diretório, deve-se informar também o caminho para o arquivo
(tanto o caminho relativo quanto absoluto é válido).
†: O parâmetro database pode ser substituído por elevation file ou spectrum file, de acordo
com o tipo de fonte de dados. Esses parâmetros são mutuamente exclusivos (ver seção 6).

depth profile depth profile : *⟨lista{número real}⟩ modo overview: ignorado


Lista de profundidades nas quais o Spec2Wave calculará as va- padrão: 0.0
riáveis que variam com a profundidade (ver seção 3). Valores unidade: [m]
admissíveis são de −𝑑 (fundo) a 0 (superfície), sendo 𝑑 a profun-
didade local (execute o programa em modo overview para ver a profundidade).
*: Fração da profundidade local 𝑑 entre 0 (superfície) e 1 (fundo). Os valores de depth profile
serão calculados de acordo com a profundidade local obtida do banco de dados.

16
direction convention direction convention : *( nautical | trigonometrical ) apenas modo overview
Convenção utilizada para resultados de direção. padrão: nautical
nautical trigonometrical
0° 90°

270° 90° 180° 0°

180° 270°
*: O resultado é calculado em radianos, ao invés do padrão, em graus.

duration duration : ⟨número real⟩ obrigatório


Define a duração, em segundos, da série temporal produzida modo overview: ignorado
pelo programa. O valor de duration deve ser um número real unidade: [s]
estritamente positivo.

elevation file elevation file : ⟨nome de arquivo⟩ obrigatório†


Aponta para o Spec2Wave a localização do ar- ver também: database, spectrum file
quivo que contém a série temporal de elevação da
superfície a ser utilizada para a geração dos dados. O arquivo deve estar formatado de acordo
com a especificação apresentada na seção 6.1.
†: O parâmetro elevation file pode ser substituído por database ou spectrum file, de acordo
com o tipo de fonte de dados. Esses parâmetros são mutuamente exclusivos (ver seção 6).

force depth force depth : ⟨número real⟩ �

Configura a profundidade (𝑑, ver seção 3) da água no ponto modo overview: ignorado
selecionado para análise. Por padrão, o Spec2Wave utiliza a unidade: [m]
profundidade obtida do banco de dados para os cálculos. Se este
parâmetro for utilizado, o valor obtido do banco de dados é sobrescrito.
Deve-se tomar cuidado ao utilizar este parâmetro, pois as variáveis do estado de mar são
simuladas levando em conta o valor de profundidade do banco de dados, e alterações muito signi-
ficativas no valor da profundidade podem levar à geração de informações incoerentes. Idealmente,
este parâmetro só deve ser utilizado para fazer pequenos ajustes na profundidade.

I know what I am doing I know what I am doing �

Desabilita a aglomeração automática de segmentos considerado modo overview: ignorado


muito curtos. Esse comportamento não tem efeito significativo padrão: falso
no comportamento da série temporal final se esta for suficiente-
mente longa. Ver nota sobre parâmetro I know what I am doing na seção 2.4.2.

initial time initial time : ⟨número real⟩ obrigatório


Define o tempo inicial, em segundos, da série temporal produ- modo overview: ignorado
zida pelo programa. O valor de duration deve ser um número unidade: [s]
real estritamente positivo. O initial time é medido relativo ao
tempo inicial do banco de dados e deve estar contido no mesmo intervalo.

17
input time step input time step : ⟨número real⟩ modo overview: ignorado
Define o intervalo de tempo, em segundos, dos dados de unidade: [s]
entrada de elevação da superfície lidos usando elevation ver também: elevation file
file. Quando os dados são lidos usando elevation file, o
parâmetro input time step é obrigatório; caso contrário, é ignorado.

interpolation method interpolation method : ( linear | pchip ) padrão: pchip


Define o método de interpolação utilizado pelo Spec2Wave. Este parâmetro
tem efeito quando o Spec2Wave faz a reamostragem de um conjunto de dados por interpolação,
a saber, quando:

1. o valor de data interval é diferente de time step;

2. se usa elevation file com time step diferente de input time step;

Os métodos de interpolação disponíveis são:


linear: o valor de uma função 𝑓(𝑥) (com 𝑥1 < 𝑥 < 𝑥2 ) é calculado a partir de 𝑓(𝑥1 ) e 𝑓(𝑥2 )
𝑥−𝑥
calculando o fator de ponderação 𝑢 = 𝑥2 −𝑥11 , e então 𝑓(𝑥) = (1 − 𝑢)𝑓(𝑥1 ) + 𝑢𝑓(𝑥2 ), ou
seja, uma média ponderada de 𝑓(𝑥1 ) e 𝑓(𝑥2 ).
pchip: (Piecewise Cubic Hermite Interpolating Polynomial) para cada intervalo [𝑥1 , 𝑥2 ], um
polinômio de terceiro grau é ajustado entre os pontos 𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 , e o valor de 𝑓(𝑥) é
calculado utilizando esse polinômio.
O método ‘pchip’ muitas vezes é melhor que o método ‘linear’, pois o polinômio de terceiro
grau garante que a função resultante seja suave (ou seja, que sua derivada seja contínua), no
entanto se a resolução da função original (time step no primeiro e input time step no segundo
caso listado acima) for muito grosseira, esse método pode gerar valores incorretos. Nesses casos,
é preferível melhorar a resolução dos dados, mas, caso não seja possível, pode-se mudar o método
de interpolação para ‘linear’.

least squares coef least squares coef : ⟨lista{número real}⟩ modo overview: ignorado
Coeficientes utilizados na soma de mínimos quadrados das va- padrão: 4, 2, 1
riáveis 𝜂, 𝜂′ , e 𝜂″ , respectivamente, na etapa de otimização das
uniões. O valor passado para esse parâmetro deve ser uma lista de três números inteiros estrita-
mente positivos. O valor do coeficiente representa o peso relativo de cada variável no cálculo da
soma de mínimos quadrados e pode influenciar qual variável é otimizada na etapa de união dos
segmentos (ver seção 2.4.1).

maximum badness maximum badness : ⟨número real⟩ modo overview: ignorado


Define o valor máximo de badness tolerável. Caso badness exceda padrão: 0.05
esse limite, um aviso é mostrado na janela de comando. Contudo, unidade: [m2 ]
o comportamento do programa não muda; o aviso mostrado
é apenas informativo, para o usuário ter ciência da qualidade do resultado. Ver nota sobre o
parâmetro maximum badness na seção 2.4.1.

18
mesh node mesh node : *⟨número inteiro⟩ obrigatório†
Define o ponto no espaço de onde os dados serão extraídos do modo overview: obrigatório†
banco de dados. O ⟨número inteiro⟩ se refere ao número do ver também: point name
nó da malha utilizada para a simulação que originou o banco
de dados. Como não são salvos os dados de todos os pontos dessa malha, a numeração não é
consecutiva. O programa avisará se o ponto selecionado não possui dados disponíveis. Nesse
caso deve ser escolhido outro ponto ou outro banco de dados que contém o ponto solicitado.
†: A critério do usuário, point name pode ser utilizado para indicar o ponto de extração dos
dados em substituição de mesh node.
*: No modo show points é possível utilizar uma ⟨lista{número inteiro}⟩ para determinar
quais pontos serão listados. Neste modo, o parâmetro mesh node é opcional, e se não for
informado, o valor padrão é todos os pontos do banco de dados.

no errors no errors �

Não use esse parâmetro. Desabilita a impressão de erros na janela de comando. padrão: falso
Por razões óbvias o programa ainda abortará a execução ao encontrar um erro.
Esse parâmetro apenas faz com que a causa do erro não seja mostrada na janela de comando,
apenas dificultando a solução do problema.

no info no info padrão: falso


Desabilita a impressão de mensagens de status na janela de comando. Assim
como com o parâmetro no errors, o comportamento do programa não muda quando esse
parâmetro é utilizado. As mensagens de status geralmente podem ser ignoradas sem problemas,
pois só informam a etapa atual de execução do programa. No entanto essas mensagens podem
servir como contexto para possíveis erros e avisos.

no warnings no warnings �

Desabilita a impressão de avisos na janela de comando. Assim como com padrão: falso
o parâmetro no errors, o comportamento do programa não muda quando
esse parâmetro é utilizado, os avisos são apenas omitidos. A utilização desse parâmetro não é
recomendada, por os avisos são emitidos por um bom motivo.

19
output format output format : ( plain | fluent ) padrão: plain
Define o formato dos arquivos de saída do Spec2Wave. Os formatos dispo-
níveis nesta versão do programa são:
plain: sem formatação adicional: cada variável é salva em um arquivo, e as variáveis calculadas ao
longo da profundidade também são salvas em um arquivo por profundidade de cálculo.
O arquivo contém uma coluna e tantas linhas quanto o número de passos de tempo do
resultado.
fluent: formato de entrada de dados no ANSYS Fluent: cada arquivo contém um cabeçalho
com o nome da variável e o número de passos de tempo do arquivo, em seguida há o
vetor de tempo em uma coluna e tantas linhas quanto o número de passos de tempo e,
finalmente, outro vetor com os dados da variável em questão, também em uma coluna,
com o mesmo número de linhas do vetor de tempo. Cada variável é salva em um arquivo,
e as variáveis calculadas ao longo da profundidade também são salvas em um arquivo por
profundidade de cálculo.
Caso seja necessário outro formato de arquivo, entre em contanto e forneça a especificação
do formato.

output path output path : *⟨diretório⟩ padrão: ./


Define a pasta de saída dos resultados do Spec2Wave. Tanto o caminho relativo
quanto absoluto da pasta é válido. Por padrão o programa salva os resultado na pasta atual (./).
O programa exibe uma mensagem de erro caso a pasta solicitada não exista.
*: Caso a pasta não exista, ela é criada pelo programa.

overview overview : ( t ; hs ; tm ; dm ; tp ; pw ) modo overview: obrigatório


Ativa o modo overview e seleciona as variáveis de saída do
Spec2Wave neste modo de operação. O valor passado para overview deve ser a lista dos nomes
de variáveis disponíveis, detalhadas na seção 3. Qualquer uma das formas do nome (sigla ou
nome completo) é aceitável.

point name point name : ⟨identificador ⟩ obrigatório†


Define o ponto no espaço de onde os dados serão extraídos do modo overview: obrigatório†
banco de dados, da mesma forma que mesh node, exceto que ver também: mesh node
o ⟨identificador ⟩ é o nome simbólico do ponto ao invés do
número do nó da malha. Apenas um entre point name e mesh node é obrigatório, e usar ambos é
redundante.

20
precision precision : ⟨número inteiro⟩ padrão: ≈ 16
Define o número de dígitos decimais nos arquivos de resultado. O valor de
precision é por padrão ≈ 16 pois é o limite de precisão de um número real de 64 bits (double
precision). Dígitos decimais além desse limite não representam o dado, mas a sua representação
binária mais próxima, portanto um valor maior não é permitido.
O valor 16 é aproximado pois é o número de posições decimais representável para números
de ordem de grandeza 100 . A representação de números de ordens de grandeza superiores reduz
o número de posições decimais úteis quando utilizando notação decimal.
Quando a precisão não é especificada o Spec2Wave tenta comprimir o formato do número
para economizar espaço. Quando precision é dado esse comportamento é desativado e o
número de posições decimais é fixo.
Esse parâmetro só tem efeito no arquivo de resultados. Internamente todos os números
reais são representados com double precision.

random seed random seed : ⟨lista{número inteiro}⟩ modo overview: ignorado


Configura a semente do gerado de números aleatórios utilizado padrão: aleatório
para a criação do espectro de fase utilizado na transformação do
espectro em uma série temporal de elevação da superfície. O valor passado para random seed
deve ser uma lista de números inteiros contidos no intervalo [−231 , 231 − 1]. O tamanho da
lista depende do sistema, mas pode ser verificado usando show seed. A lista passada para random
seed, no entanto, pode ter qualquer tamanho. Se a lista passada for maior que o necessário ela é
truncada, caso contrário é preenchida com zeros.
A utilização do parâmetro random seed garante que, em uma mesma máquina, com o
mesmo arquivo de parâmetros em uma mesma versão do programa (são várias condições), o
resultado gerado seja o mesmo entre duas execuções distintas do programa (use show seed para
ver a semente utilizada). Ver nota sobre o GNU Fortran na seção 2.3.
Pequenas mudanças no valor de random seed podem ajudar a eliminar avisos sobre o
maximum badness sendo excedido sem alterar o limite máximo, potencialmente melhorando a
qualidade do resultado. Ver parágrafo sobre random seed e maximum badness na seção 2.3.
A implementação do gerador de números aleatórios muda de um sistema para outro. Usando
o GCC 5.4.0 no Ubuntu Xenial o vetor de números aleatórios é o mesmo entre duas execuções
distintas do programa (mesmo sem utilizar o random seed). Executando a mesma versão do
Spec2Wave em um Windows 7 com MinGW 8.1.0 o vetor de números aleatórios foi diferente
a cada execução do programa exceto quando o random seed foi explicitamente dado. Não sei
qual o fator que causou a diferença no comportamento, mas uma coisa é certa: não é possível
garantir que o resultado do programa seja o mesmo em duas máquinas diferentes.

21
show points show points : [ ⟨nome de arquivo⟩ ] padrão: falso
Faz com que o programa mostre na janela de comando os pontos disponíveis
no banco de dados que podem ser utilizados posteriormente no parâmetro mesh node ou point
name para a extração de dados. Utilizando esse parâmetro faz com que o programa mostre a lista
de pontos (conforme exemplo na seção 5) e termine a execução.
O único parâmetro obrigatório nesse modo de execução é database, mas se mesh node ou
point name forem dados, o show points mostra apenas os pontos selecionados, caso contrário
todos os pontos disponíveis no banco de dados são mostrados. Os demais parâmetros são
ignorados.
Se o ⟨nome de arquivo⟩ for dado, ao invés de mostrar as informações sobre os pontos na
janela de comando, o Spec2Wave salva-os no arquivo ⟨nome de arquivo⟩ no formato kml
(Keyhole Markup Language). Este arquivo pode ser aberto para visualização em Atlas virtuais,
como o Google Earth ou kde Marble.

show seed show seed : ⟨número real⟩ modo overview: ignorado


Faz com que o programa imprima na janela de comando o vetor padrão: falso
de semente do gerado de números aleatórios utilizado durante
a execução do programa. Esse valor pode, posteriormente, ser utilizado em random seed para
produzir o mesmo resultado (dado que as exigências mencionadas no item random seed sejam
satisfeitas).

spectrum file spectrum file : ⟨nome de arquivo⟩ obrigatório†


Aponta para o Spec2Wave a localização do ar- ver também: database, elevation file
quivo que contém o espectro discretizado a ser
utilizado para a geração dos dados. O arquivo deve estar formatado de acordo com a especificação
apresentada na seção 6.2.
†: O parâmetro spectrum file pode ser substituído por database ou elevation file, de acordo
com o tipo de fonte de dados. Esses parâmetros são mutuamente exclusivos (ver seção 6).

spectrum tail factor spectrum tail factor : ⟨número real⟩ apenas modo overview
Define o grau da função para levar em conta as altas frequências (não padrão: 5.0
discretizadas) do espectro no cálculo das variáveis espectrais. As
altas frequências são levadas em conta se o spectrum tail factor for maior que 1. O spectrum
tail factor e o valor padrão 5.0 são os mesmos definidos no Tomawac. Para mais informações
consulte o manual (Awk, 2019).

22
spline length spline length : ⟨número inteiro⟩ modo overview: ignorado
Define o número máximo de pontos utilizados em cada lado da padrão: 5
união dos segmentos para a suavização utilizando a interpolação
com spline cúbica (ver seção 2.4.2). O valor de spline length deve ser um numero inteiro maior
ou igual a 2. O mínimo de 2 é um limite do método, conforme discutido na seção 2.4.2.
Um número maior de pontos resulta em uma suavização maior da união porém, também,
pode resultar em perda de informação caso o produto spline length × data interval se apro-
xime de um período de onda.
Não é recomendado aumentar muito o spline length para compensar um badness alto.
Ao invés disso se sugere modificar o comprimento dos segmentos (usualmente maior é melhor)
ou modificar a random seed.

time step time step : ⟨número real⟩ modo overview: ignorado


Define o passo de tempo, em segundos, que será utilizado pelo padrão: data interval
programa durante a transformação do espectro e suavização das unidade: [s]
uniões de segmentos. O valor de time step não é usado na gera-
ção dos arquivos de saída; apenas internamente pelo Spec2Wave para fazer os cálculos. Valores
menores de time step tendem a reduzir problemas nas uniões de segmentos.
Geralmente o valor de time step utilizado será igual ao de data interval, exceto quando,
por exemplo, é necessário produzir a mesma série temporal com discretizações temporais dife-
rentes: nesse caso coloque o valor de time step como o valor mínimo de data interval que
pretende utilizar, e execute o Spec2Wave com os diferentes valores de data interval que forem
necessários. Isso é particularmente útil quando se está fazendo testes de passo de tempo em
modelos numéricos.

variables variables : ( t ; h ; u ; w ) padrão: h,u,w


Seleciona as variáveis de saída do Spec2Wave. O valor passado para
variables deve ser a lista dos nomes de variáveis disponíveis para o modo de operação nor-
mal, detalhadas na seção 3. Qualquer uma das formas do nome (sigla ou nome completo) é
aceitável.

water depth water depth : ⟨número real⟩ obrigatório†


Define a profundidade da coluna d’água quando os dados de entrada do unidade: [m]
Spec2Wave forem de um elevation file ou spectrum file.
†: As fontes de dados elevation file e spectrum file não contém informação de profundidade,
portanto nesses casos é obrigatório informar a profundidade (ver seção 6).

water specific mass water specific mass : ⟨número real⟩ apenas modo overview
Massa específica da água utilizada no cálculo do potencial energético padrão: 1025.0
do estado de mar (variável Pw), conforme definido no manual do unidade: [kg/m3 ]
Tomawac (Awk, 2019).

23
9 Interface de linha de comando
Algumas configurações podem (e outras devem) ser passadas para o programa antes da sua
inicialização utilizando a interface da janela de comando. Para utilizar o Spec2Wave pela janela
de comando utilize o nome do executável seguido pela lista de opções. Adicionalmente, se um
nome de arquivo é dado ao final da lista de opções, este é assumido ser o arquivo de parâmetros
para o programa. A sintaxe para executar o Spec2Wave pela janela de comando é:
spec2wave.exe [⟨opções⟩] [⟨arquivo de parâmetros⟩]
onde os argumentos entre […] são opcionais. Se o ⟨arquivo de parâmetros⟩ não for dado na
linha de comando, o programa executa em modo interativo, e pede um em seguida.

-b --basedir = ⟨diretório⟩
--basedir
Define o diretório base de trabalho do Spec2Wave. Se definido, todas as operações de
leitura e escrita de arquivos do Spec2Wave serão relativas a esse diretório. Essa opção é
útil quando se precisa processar o Spec2Wave em lotes, sem precisar modificar o arquivo
de parâmetros.

-e --encoding = ⟨codificação⟩
--encoding
Define a codificação utilizada para ler o arquivo de parâmetros do Spec2Wave. Essa
configuração só pode ser feita antes do programa abrir o arquivo para leitura, dessa forma
não há uma opção para a codificação na seção 8, pois já é muito tarde.
Na versão atual do Spec2Wave as codificações implementadas são ascii (sem codificação),
utf-8, utf-16 (tanto little endian quanto big endian). Outras codificações devem ser solicitadas,
se necessário (ver seção 7.2 sobre a codificação do arquivo de entrada).

-f --file = ⟨nome de arquivo⟩


--file
Indica o arquivo de parâmetros a ser utilizado pelo Spec2Wave. Essa configuração é
equivalente a utilizar um nome de arquivo ao final da lista de opções ou a fornecer o nome
do arquivo quando o programa pede por um, no modo interativo.

-h --help
--help
Exibe um sumário das opções da linha de comando e termina a execução.

-E --no-errors
--no-errors
Tem o mesmo efeito do parâmetro no errors. As mesmas observações se aplicam.

-I --no-info
--no-info
Tem o mesmo efeito do parâmetro no info, porém, por ser processado antes da inicialização
do programa, o seu efeito é imediato, e nenhuma informação é exibida (diferente de no info,
que permite que o cabeçalho do programa seja exibido). De restante o comportamento é o
mesmo e as mesmas observações se aplicam.

-W --no-warnings
--no-warnings
Tem o mesmo efeito do parâmetro no warnings. As mesmas observações se aplicam.

24
10 Exemplo de utilização
O Spec2Wave é configurável de forma que cada aplicação vai exigir uma parametrização dife-
rente do programa. No entanto, todos os casos vão seguir um passo-a-passo similar. Suponhamos
que Karl está estudando um local da costa que tem dados no banco de dados DB002.

10.1 Localizando um ponto


Primeiramente. Karl precisa saber exatamente em quais pontos esses dados estão disponíveis, para
escolher o que melhor se adapta ao seu estudo. Para isso, Karl começará utilizando o Spec2Wave
no modo show points:
database : /home/karl/spec2wave/DB002
show points : points.kml
Karl então abre o arquivo points.kml, por exemplo, no Google Earth e vê os pontos disponíveis
no banco de dados DB002, conforme a figura da esquerda abaixo:

Karl escolhe um ponto adequado ao seu estudo, por exemplo, o ponto “Navio Altair 3”. Ao
selecionar o respectivo marcador, os metadados daquele ponto são exibidos, conforme mostra a
figura da direita acima. Os metadados “Mesh node” e “Name” são identificadores unicos deste
ponto nesse banco de dados, e um ou outro pode ser usado nos parâmetro mesh node ou point
name, respectivamente, para identificar este ponto.
Karl comenta a linha show points : points.kml , e indica o ponto escolhido usando
point name : Navio Altair 3 .

10.2 Definindo o período de tempo


Escolhido um ponto, Karl agora deve definir o período em que quer extrair os dados. Os bancos
de dados geralmente têm em torno de um ano de dados, e o processo de extração do Spec2Wave
pode criar dados com passo de tempo de frações de segundo, tornando a extração do período
completo (possível mas) inviável, na maioria dos casos.
Para definir o período de tempo, Karl precisará escolher um intervalo que tenha as ca-
racterísticas necessárias para seu estudo. Como o interesse do estudo é nos cenários de maior
potencial energético, Karl utilizará o modo overview com a variável Pw (a seção 3 lista as variáveis
disponíveis), para examinar quando ocorrem esses eventos:

25
database : /home/karl/spec2wave/DB002
! show points : points.kml
point name : Navio Altair 3
overview : Time, Pw
Após executar o arquivo de parâmetros acima, o Spec2Wave criará dois arquivos na pasta
onde foi executado: Time_T_17664.txt, e Wave_Power_Pw_17664.txt. O nome dos arquivos é
composto pelo nome da variável, e pelo “Mesh node” daquele ponto. Karl usa sua ferramenta de
criação de gráficos preferida3 para criar o gráfico de Pw pelo tempo:
Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez
25

20
Pw (kW/m)

15

10

0
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30×106
Time (s)

de onde observa que o evento com maior Pw ocorreu no instante de tempo de 16 218 900 s,
equivalente a um instante no dia 6 de Julho4 . Assim, Karl utilizará initial time : 16218900 no
seu arquivo de parâmetros, que definirá o instante inicial do banco de dados a ser utilizado para a
obtenção dos dados.
Ainda é necessário, para restringir o intervalo de extração de dados, definir a duração total, e
o intervalo entre os dados. Karl pretende, por enquanto, apenas fazer testes de independência de
malha e de passo de tempo, portanto julgou que uma duração de 900 s (15 min) será suficiente,
portanto escreveu duration : 900 .
Karl fará testes de passo de tempo de 0.1 s, 0.2 s, e 0.3 s, portanto utilizará time step : 0.1
em todos os casos, e mudará o valor de data interval de acordo. No caso de ser necessário
reproduzir a mesma “forma” da elevação da superfície com diferentes passos de tempo, o valor de
time step deve ser sempre o menor que se pretende utilizar.
Partindo do mesmo princípio, como Karl pretende extrair a mesma série temporal de
elevação da superfície, mas com resoluções temporais diferentes é necessário fazer com que o
espectro de fase utilzado seja sempre o mesmo. Para tal, é necessário afixar uma semente para o
gerador de números aleatórios (ver nota sobre o GNU Fortran na seção 2.3). Karl está com
preguiça e utiliza random seed : 1 2 3 4 5 6 no seu arquivo de parâmetros, mas o mais correto,
para garantir um resultado realmente aleatório, seria executar o programa uma vez com show
seed, e então utilizar a semente gerada nas rodadas subsequentes.
Karl então define as profundidades ao longo da coluna d’água onde as velocidades orbitais
das ondas serão calculadas. O canal de ondas utilizado teve sua fronteira de velocidades prescritas
dividida em 10 partes iguais, até a profundidade de 9.2 m. Como as velocidades são referentes
ao centro de cada seção, as profundidades utilizadas são:
3
Não é o Excel :)
4
Se estiver lendo este documento no Acrobat Reader, clique no gráfico para ver as coordenadas dos pontos.

26
depth profile : 0.46, 1.38, 2.3, 3.22, 4.14, 5.06, 5.98, 6.9, 7.82, 8.74
Uma fórmula prática para o cálculo dessas profundidades no caso específico de seções de
tamanho igual, com velocidades prescritas em seu centro é

𝑑
𝑑𝑖 = (0.5 + 𝑖), com 𝑖 = 0, … , 𝑛 − 1
𝑛
onde 𝑑 é a profundidade total, e 𝑛 é o número de divisões.
Finalmente, Karl adiciona o output format : fluent no seu arquivo, para ter os dados no for-
mato que o Fluent lê, e adiciona também output path : * dados_indep para que o Spec2Wave
salve os arquivos de saída em uma pasta própria. Com isso, Karl concluiu a parametrização do
Spec2Wave para o seu estudo, com um arquivo contendo:
database : /home/karl/spec2wave/DB002
! show points : points.kml
point name : Navio Altair 3
! overview : Time, Pw
initial time : 16218900
duration : 900
time step : 0.1
data interval : 0.3 ! também com 0.1, 0.2
random seed : 1 2 3 4 5 6
depth profile : 0.46, 1.38, 2.3, 3.22, 4.14, 5.06, 5.98, 6.9, 7.82, 8.74
output format : fluent
output path : * dados_indep
Executando então o Spec2Wave nesse arquivo, fará com que a pasta dados_indep seja criada, e
dentro dela serão salvos 21 arquivos: 10 arquivos para a componente 𝑢 da velocidade, um para
cada valor de profundidade em depth profile, outros 10 arquivos para a componente 𝑣, e mais
um arquivo com a elevação da superfície.
O nome dos arquivos terá a forma ⟨variável⟩_⟨ponto⟩_⟨profundidade⟩.txt. Por exemplo,
o arquivo Velocity_U_17664_0.46.txt é a variável de velocidade 𝑢, no ponto de número 17 664,
na profundidade de 0.46 m (medida a partir da superfície média). Essa composição do nome do
arquivo garante que cada arquivo tenha um nome único e identificável.
Com isso, finalmente, Karl conseguiu obter a primeira parte dos dados que precisava para
seu estudo. O próximo passo será mudar os valores de data interval para realizar o teste de
independência do passo de tempo, e depois escolher um evento mais adequado para simular
os dispositivos de conversão. Mas a partir daí, Karl desistiu de relatar seu passo-a-passo nesse
manual.

10.3 Citando este documento


Nos capítulos iniciais de sua tese, quando falava da fundamentação teórica, Karl citou o artigo
que descreve a metodologia de transformação do espectro:
Oleinik, P. H., G. P. Tavares, B. N. Machado e L. A. Isoldi (2021). “Transformation
of Water Wave Spectra into Time Series of Surface Elevation”. Em: Earth 2.4,
pp. 997–1005. doi: 10.3390/earth2040059. url: https://www.mdpi.com/
2673-4834/2/4/59.

e no capítulo de metodologia, quando se referia ao Spec2Wave, citou este manual:

27
Oleinik, P. H. (2022). O programa Spec2Wave. Manual do usuário. Versão 1.2.1.
30 p. url: https://gist.github.com/PhelypeOleinik/6dc87900dbde73ad3
3575b9d333e1f35/raw/spec2wave.pdf.

11 Bancos de dados disponíveis


Esta seção lista os bancos de dados já disponibilizados com a versão atual do Spec2Wave, e
apresenta algumas informações básicas sobre cada um. Os bancos de dados são disponibilizados
com nomes sequenciais, e dessa forma tratados nesta seção, atualmente sem a possibilidade de
identificação imediata caso o arquivo seja renomeado.
As figuras desta seção contém anotações no pdf para cada ponto do banco de dados,
contendo o número e as coordenadas de cada ponto. As anotações podem ser visualizadas
movendo o cursor sobre os pontos, ou clicando neles, a depender do visualizador de pdf.

11.1 DB001

Esse banco de dados contém informações referentes ao ano de 2014, em pontos distribuídos ao
longo da costa do Rio Grande do Sul, conforme ilustrado abaixo. Os dados iniciam às 00:00
do dia 1º de Janeiro de 2014, e terminam às 23:45 do dia 31 de Dezembro do mesmo ano, com
dados a cada 15 min. O banco de dados foi gerado pelo Tomawac conforme Oleinik et al.
(2019), utilizando como condições de contorno os dados de ondas do WaveWatch iii5 e dados
meteorológicos do projeto Reanalysis 16 da NOAA.

30.5° S

31° S

31.5° S
51° W 50.5° W 50° W
30° S
32° S
31° S
32.5° S
32° S
52.5° W 52° W 51.5° W
33° S 33° S

34° S
33.5° S
35° S

53° W 52.5° W 54° W 52° W 50° W 48° W


5
https://polar.ncep.noaa.gov/waves/wavewatch/
6
www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanalysis.html

28
11.2 DB002

Esse banco de dados contém informações referentes ao ano de 2018, em pontos distribuídos ao
longo da costa do Rio Grande do Sul, conforme ilustrado abaixo. Os dados iniciam às 00:00
do dia 1º de Janeiro de 2018, e terminam às 23:45 do dia 31 de Dezembro do mesmo ano, com
dados a cada 15 min. O banco de dados foi gerado pelo Tomawac conforme Oleinik et al.
(2019), utilizando como condições de contorno os dados de ondas do WaveWatch iii e dados
meteorológicos do projeto Reanalysis 1 da NOAA.

28° S

29° S

30° S

31° S

32° S

33° S

34° S

35° S

36° S
54° W 52° W 50° W 48° W 46° W

Referências
Box, G. E. P. e M. E. Muller (1958). “A Note on the Generation of Random Normal Deviates”.
Em: The Annals of Mathematical Statistics 29.2, pp. 610–611. doi: 10 . 1214 / aoms /
1177706645. url: http://projecteuclid.org/euclid.aoms/1177706645.
Gentleman, W. M. e G. Sande (1966). “Fast Fourier Transforms”. Em: Proceedings of the fall
joint computer conference on XX - AFIPS ’66. New York: ACM Press, p. 563. doi:
10 . 1145 / 1464291 . 1464352. url: http : / / portal . acm . org / citation . cfm ? doid =
1464291.1464352.
Knop, R. E. (1969). “Remark on algorithm 334 [G5]: normal random deviates”. Em: Com-
munications of the ACM 12.5, p. 281. doi: 10 . 1145 / 362946 . 362996. url: http :
//portal.acm.org/citation.cfm?doid=362946.362996.
Marsaglia, G. (2003). “Xorshift RNGs”. Em: Journal of Statistical Software 8.14. doi: 10.18637/
jss.v008.i14. url: http://www.jstatsoft.org/v08/i14/.

29
Frigo, M. e S. G. Johnson (2005). “The Design and Implementation of FFTW3”. Em: Proceedings
of the IEEE 93.2. Special issue on “Program Generation, Optimization, and Platform
Adaptation”, pp. 216–231.
Awk, T. (2019). Tomawac User Manual version 8.0.0. The TELEMAC-Mascaret Consortium.
90 p. url: www.opentelemac.org.
Frigo, M. e S. G. Johnson (2019). FFTW User Manual version 3.3.8. Massachusetts Institute of
Technology. 110 p. url: www.fftw.org/fftw3.pdf.
Oleinik, P. H., E. d. P. Kirinus, F. Cristiano, W. C. Marques e J. Costi (2019). “Energetic
Potential Assessment of Wind-Driven Waves on the South-Southeastern Brazilian Shelf ”.
Em: Journal of Marine Science and Engineering 7.2. doi: 10.3390/jmse7020025. url:
https://www.mdpi.com/2077-1312/7/2/25.
Oleinik, P. H., G. P. Tavares, B. N. Machado e L. A. Isoldi (2021). “Transformation of Water
Wave Spectra into Time Series of Surface Elevation”. Em: Earth 2.4, pp. 997–1005. doi:
10.3390/earth2040059. url: https://www.mdpi.com/2673-4834/2/4/59.

Índice
Números sublinhados apontam para onde o item correspondente é definido, e números em
itálico para onde o item é mencionado.

D no warnings . . . . . . . . . . . . . . . . . . 16, 19
data interval . . . . . . . . . . 3, 4, 7, 14, 14, 18
database . . . . . . . . . . . . . . . . . 11, 14, 17 O
depth profile . . . . . . . . . . . . . . 10, 14, 14 output format . . . . . . . . . . . . . . . . . . . 17
direction convention . . . . . . . . . . . 10, 14 output path . . . . . . . . . . . . . . . . . . . . 17
duration . . . . . . . . 3, 4, 7, 10, 14, 14, 14, 15
P
F precision . . . . . . . . . . . . . . . . . . . . 17, 17
force depth . . . . . . . . . . . . . . . . . . . . 15
R
I random seed . . . . . . . . . . . 7, 16, 16, 18, 18
I know what I am doing . . . . . . . . 9, 15, 15
initial time . . . . . . . . . . . . 3, 4, 7, 15, 15 S
show points ........ . . . . . . . 2, 9, 11, 17
L
show seed . . . . . . . . . . . . . . . . . . 7, 16, 18
least squares coef . . . . . . . . . . . . . 6, 16
spectrum tail factor . . . . . . . . . . . 18, 18
M spline length . . . . . . . . . . . . . . . 8, 18, 18
maximum badness . . . . . . . . . . . 7, 15, 15, 16
mesh node . . . . . . . . . . . . . 3, 11, 12, 15, 17 V
variables . . . . . . . . . . . . . . . . . 11, 18, 18
N
no errors . . . . . . . . . . . . . . . 15, 16, 16, 19 W
no info . . . . . . . . . . . . . . . . . . . . . 16, 19 water specific mass . . . . . . . . . . . . . . 18

30

Você também pode gostar