OpenLLM-France/wikimedia huggingface dataset:
# Mecânica dos fluidos/Exercícios estendidos/X1

* Teoria
* Voltar para a lista de exercícios estendidos

## Localização

Google Docs: X1.xls (não é necessário login)

## Enunciado

Calcular a vazão através da tubulação mostrada na planilha X1.xls, sabendo que a perda de carga total é igual a 100 m.

## Solução

O exercício deve ser resolvido através de tentativas, devido à sua complexidade. Três parâmetros devem ser ajustados:
* a vazão total
* a relação entre as vazões nos ramos B e G
* a relação entre as vazões nos ramos C e D
O processo consiste em
* montar a planilha com as fórmulas
** deve-se escolher um método para calcular a perda de carga (Darcy-Weisbach ou Hazen-Williams) e escrever as equações correspondentes
** deve-se exprimir as vazões em cada duto a partir da vazão na entrada (duto A) e dos parâmetros variáveis
** desprezar as perdas menores
* arbitrar um valor qualquer para a vazão total
* ajustar a relação entre as vazões nos ramos C e D até a perda de carga ser a mesma em ambos (dutos C e D)
* ajustar a relação entre as vazões nos ramos B e G até a perda de carga ser a mesma em ambos os braços (dutos B e G-C/D-H)
* ajustar o valor da vazão a entrada (duto A) até a perda de carga total corresponder ao dado do problema.
A planilha traz uma aba para cada método. Os dois mostram resultados semelhantes. A montagem das fórmulas no caso do método de Darcy-Weisbach dá um pouco mais de trabalho, mas a partir daí o método de Hazen-Williams não apresenta maiores vantagens, em termos de simplicidade. É melhor usar o método de Darcy-Weisbach, que se acredita ser mais preciso.
# Mecânica dos fluidos/Equações em coordenadas cilíndricas
## Equações em coordenadas cilíndricas

Frequentemente, a geometria de um problema sugere seja usado um sistema de coordenada outro que não o sistema cartesiano. É importante, portanto, derivar as equações básicas em forma diferencial para outros sistemas. Esse problema não afeta as formas integrais das equações, que são as mesmas para qualquer sistema. Nesta seção, apresentaremos as equações básicas em coordenadas cilíndricas.

### Equação da continuidade

A forma diferencial da equação de continuidade utiliza uma expressão genérica, que permite expressá-la facilmente em qualquer sistema de coordenadas.
${\frac {\partial \rho }{\partial t}}\;+\;(\nabla \cdot (\rho {\vec {v}}))\;=\;0$
Basta empregar a expressão do divergente em coordenadas cilíndricas para encontrar
${\frac {\partial \rho }{\partial t}}\;+\;\left({\frac {1}{r}}\;{\frac {\partial }{\partial r}}\;(r\rho v_{r})\;+\;{\frac {1}{r}}\;{\frac {\partial }{\partial \theta }}\;(\rho v_{\theta })\;+\;{\frac {\partial }{\partial z}}\;(\rho v_{z})\right)\;=\;0$

### Equações de Navier-Stokes

A derivação das equações de Navier-Stokes no sistema de coordenadas cilíndricas é dificultado pelo fato de não existir uma expressão genérica para as mesmas, que seja a mesma em qualquer sistema de coordenadas.
# Mecânica dos fluidos/Estática aplicada a um elemento de volume diferencial
## Estática aplicada a um volume de controle diferencial
### Análise das forças de superfície

Considerando o volume δV como um cubo em um sistema de coordenadas cartesianas, situado originalmente no ponto P(x$_0$,y$_0$,z$_0$), podemos escrever que a força atuando no sentido do eixo X é a soma das forças nesse sentido atuando em cada uma das faces
$\delta F_{x}\;=\;\delta F_{xX+}\;+\;\delta F_{xX-}\;+\;\delta F_{xY+}\;+\;\delta F_{xY-}\;+\;\delta F_{xZ+}\;+\;\delta F_{xZ-}$
onde F$_{xX+}$ indica a força atuando no sentido do eixo X na face que repousa sobre o plano X+, e assim por diante.
Mas, de acordo com a definição de tensões,
$\delta F_{xX+}\;=\;\sigma _{xx}(x_{0}\;+\;\delta x)\cdot \delta A_{X}$
$\delta F_{xX-}\;=\;-\sigma _{xx}(x_{0})\cdot \delta A_{X}$
$\delta F_{xY+}\;=\;\tau _{yx}(y_{0}\;+\;\delta y)\cdot \delta A_{Y}$
$\delta F_{xY-}\;=\;-\tau _{yx}(y_{0})\cdot \delta A_{Y}$
e assim por diante, de acordo com a convenção de que uma tensão positiva está direcionada para fora do elemento de volume. Dessa forma
$\delta F_{x}\;=\;\left[\sigma _{xx}(x_{0}\;+\;\delta x)\;-\;\sigma _{xx}(x_{0})\right]\cdot \delta A_{X}\;+\;\left[\tau _{yx}(y_{0}\;+\;\delta y)\;-\;\tau _{yx}(y_{0})\right]\cdot \delta A_{Y}\;+\;\left[\tau _{zx}(z_{0}\;+\;\delta z)\;-\;\tau _{zx}(z_{0})\right]\cdot \delta A_{Z}$
$\delta F_{x}\;=\;\delta \sigma _{xx}\cdot \delta A_{X}\;+\;\delta \tau _{yx}\cdot \delta A_{Y}\;+\;\delta \tau _{zx}\cdot \delta A_{Z}$
$\delta F_{x}\;=\;{\frac {\partial \sigma _{xx}}{\partial x}}\cdot \delta x\cdot \delta A_{X}\;+\;{\frac {\partial \tau _{yx}}{\partial y}}\cdot \delta y\cdot \delta A_{Y}\;+\;{\frac {\partial \tau _{zx}}{\partial z}}\cdot \delta z\cdot \delta A_{Z}$
$\delta F_{x}\;=\;\left({\frac {\partial \sigma _{xx}}{\partial x}}\;+\;{\frac {\partial \tau _{yx}}{\partial y}}\;+\;{\frac {\partial \tau _{zx}}{\partial z}}\right)\cdot \delta V$
Podemos escrever equações similares para δF$_y$ e δF$_z$.
$\delta F_{y}\;=\;\left({\frac {\partial \tau _{xy}}{\partial x}}\;+\;{\frac {\partial \sigma _{yy}}{\partial y}}\;+\;{\frac {\partial \tau _{zy}}{\partial z}}\right)\cdot \delta V$
$\delta F_{z}\;=\;\left({\frac {\partial \tau _{xz}}{\partial x}}\;+\;{\frac {\partial \tau _{yz}}{\partial y}}\;+\;{\frac {\partial \sigma _{zz}}{\partial z}}\right)\cdot \delta V$

### Análise das forças do corpo

As forças do corpo podem ter diversas origens, e em cada caso uma expressão específica precisa ser derivada. A força do corpo mais importante é, obviamente, o peso do fluido. Essa força geralmente aparece apenas na direção do eixo Z e pode ser expressa por
$\delta F_{z}\;=\;-\;\rho g\;\delta V$
o sinal negativo devendo-se ao fato de apontar para o sentido negativo do eixo Z.
# Logística/Sistemas de distribuição/Tamanho da frota

Introdução
Num contexto de variabilidade na quantidade de procura dos clientes num determinado ciclo de tempo, os distribuidores que operam frotas de veículos precisam de decidir não só qual o número e a capacidade dos veículos a ter em frota própria, bem como qual o número e a capacidade dos veículos a contratar numa base <<ad hoc>>. Normalmente, com a procura dos clientes a variar de dia para dia, o ciclo de encomendas é de uma semana. No entanto, em alguns sistemas de distribuição onde as entregas são feitas semanalmente, o ciclo pode 'arrastar-se' até vários meses, ou mesmo um ano.
Neste artigo, de acordo com os pressupostos iniciais inerentes aos veículos disponíveis para fazer parte da frota, são consideradas duas facetas do problema geral de encontrar o tamanho ideal da frota.
Todos os veículos pressupõem-se ter a mesma capacidade predeterminada na análise no primeiro problema. Para encontrar o tamanho ideal da frota, neste contexto, é então efectuada a minimização dos custos totais, fixos e variáveis, dos veículos próprios e dos contratados. De modo a determinar a capacidade do veículo pode-se recorrer, por exemplo, à derivação do custo mínimo total de entrega para diferentes valores de capacidade do veículo, escolhendo aquele que produzir a capacidade de <<minimorum>> mínima. Existem, no entanto, aquando da escolha da capacidade do veículo, outras considerações a ter em conta, tais como dificuldades no acesso aos clientes devido a portões ou estradas estreitas, a natureza do produto em distribuição, entre outros. Deste modo, pode-se frequentemente isolar, como uma questão separada, a decisão relativa à capacidade dos veículos da frota.
Pressupostos e objectivos
A solução ideal para o número de veículos, e suas rotas, necessários para abastecer os clientes deve variar de período para período, caso o número de clientes e respectiva procura variar também de período para período (ver exemplo da Figura X). Mesmo para determinado período, tal como é exemplificado na Tabela X e na Figura Y, a solução ideal para o número de veículos necessários não significa ser a solução para minimizar a quilometragem total. Neste último exemplo verifica-se que a distância em linha recta total das rotas óptimas é menor para 3 veículos (distância total de 263, tal como exemplificado na Figura Yb), apesar de 2 veículos (distância total de 337, tal como exemplificado na Figura Ya) serem suficientes para satisfazer a procura. A adição de um 4º veículo por sua vez já não irá reduzir a distância, mas na verdade aumentar a mesma.
Referência EILON, Samuel; WATSON-GANDY, C. D. T.; CHRISTOFIDES, Nicos - Distribution Management: Mathematical Modelling and Pratical Analysis. Londres: Griffin, 1971. ISBN 978-0-85264-191-0
# Logística/Sistemas de informação

Etapas de desenvolvimento - 9 fases :
| Início: | Básico: | Criação: | Desenvolvimento: | Maturação: | Revisão: | Desenvolvido: | Finalização: | Abrangente: |
* Introdução
* Custo logístico
** O custo logístico e a economia
** Impacto do desenvolvimento de novas tecnologias no custo logístico
** O número de armazéns do sistema logístico
** Factores que afectam o custo logístico
*** Competitividade
*** Produto
*** Localizão
** Análise do custo logístico total
** Outros custos relacionados com a logística
** Modelos de optimização do custo logístico
* Processamento de encomendas
** Preparação da encomenda
** Transmissão da encomenda
** Atendimento da encomenda
** Aviamento da encomenda
** Relatório da situação da encomenda
** Exemplo de processamento de uma encomenda
* Rastreabilidade (RMBeatriz)
** Rastreabilidade e tecnologias da informação
** Unidades de expedição
** Processo de rastreabilidade GS1
** Sistema de rastreabilidade no sector alimentar
*** Características fundamentais
*** Rastreabilidade e qualidade alimentar
*** Autenticidade
*** Melhorar a cadeia de abastecimento
* Indicadores de desempenho
** Valor Económico Acrescentado (EVA)
** Indicadores AECOC
** Taxa de rotação dos stocks
** Indicadores de utilização de recursos: pessoas
*** Mão de obra na movimentação de materiais
*** Mão de obra directa na movimentação de materiais
*** Perda de mão de obra directa em movimentações
** Indicadores de utilização de recursos: equipamentos
*** Utilização de equipamento
*** Percentagem de ocupação
*** Disponibilidade
*** Flexibilidade da linha de produção
*** Flexibilidade do posto de trabalho
** Indicadores de controlo de gestão: movimento
** Indicadores de controlo de gestão: movimento/Movimento por operação
** Distância média por movimento
# Logística/Sistemas de informação/Custo logístico/Factores que afectam o custo logístico

Etapas de desenvolvimento - 9 fases :
| Início: | Básico: | Criação: | Desenvolvimento: | Maturação: | Revisão: | Desenvolvido: | Finalização: | Abrangente: |
Os autores Coyle et al. (2003, p. 63-69) consideram que os custos logísticos são afectados por factores relacionados com a competitividade, o produto e as localizações, para melhor explicar o papel estratégico da logística numa empresa.
* Competitividade
* Produto
* Localização
# Logística/Sistemas de informação/Custo logístico/Factores que afectam o custo logístico/Localização

Os factores relacionados com a localização de pontos fixos no sistema logístico, em relação ao mercado e a localização dos fornecedores, são extremamente importantes (Coyle et al., 2003, p. 68-69).
As localizações influenciam os custos logísticos, nomeadamente os custos de armazenagem e de transporte, sendo que estes tendem a aumentar com o aumento da distância entre os pontos do sistema logístico.

## Exemplo

No exemplo apresentado na Figura 1, a empresa B tem 1,50€ de vantagem no custo de produção (CP), em relação à empresa A. A empresa B produz a 7,00€ por unidade e a empresa A a 8,50€ por unidade. A empresa B, contudo, tem um custo de 1,35€ com o transporte de matéria-prima (0,60€ + 0,75€) e um custo de 3,50€ com o transporte do produto para o mercado M, tendo um custo total unitário de transporte de 4,85€. A empresa A tem um custo de 0,90€ com o transporte de matéria-prima e um custo de 1,15€ com o transporte do produto para o mercado, tendo um custo total unitário de transporte de 2,05€. A vantagem de 2,80€ no custo de transporte da empresa A compensa a desvantagem de 1,50€ no custo de produção. A empresa B poderá desejar procurar estratégias alternativas para o seu sistema logístico, de forma a competir mais eficazmente em M. Por exemplo, a empresa B pode ter o custo unitário de 3,50€ em resultado do transporte como carga fraccionada (transporte de baixo volume do produto para o mercado). A empresa pode considerar a hipótese de utilizar um armazém em M e efectuar o transporte por via férrea de vagões inteiros, a custo de transporte mais baixo.
# Logística/Sistemas de informação/Custo logístico/Impacto do desenvolvimento de novas tecnologias no custo logístico

O desenvolvimento de novas tecnologias influencia o sector da logística. No início dos anos 90, o desenvolvimento de microprocessadores revolucionou a logística. Os processadores de dados de baixo custo foram particularmente significativos para as operações logísticas. Mais tarde, através da combinação de software avançado com hardware a baixo custo, o gestor logístico passou a ter um auxiliar de grande poder para efectuar as transacções, controlar o desempenho e apoio às decisões. Os recursos informáticos possibilitaram um nível de desempenho logístico nunca antes alcançado. Permitiram a gestão da logística como um processo integrado, desde o momento da procura, por parte do cliente, até à distribuição do produto acabado.
O desenvolvimento de microprocessadores foi acompanhado por um desenvolvimento de tecnologias de informação, tal como o EDI e o fax. Esta melhoria na troca de informação originou novas estratégias para atingir um melhor desempenho logístico (JIT, QR e CR, entre outros) e permitiu uma redução do custo logístico (Bowersox et al., 1996, p. 15-16).
# Logística/Sistemas de informação/Custo logístico/Modelos de optimização do custo logístico

Existem vários modelos que podem auxiliar o gestor logístico quanto à escolha da configuração da rede logística. Estes modelos são muito abrangentes, podendo ser aplicados a vários problemas: localização de fábricas, centros de distribuição, fluxos de informação e materiais dentro do sistema logístico, entre outros. Estas técnicas procuram facilitar a comparação entre o funcionamento e o valor da relação custo/serviço, da rede logística actual, com redes logísticas alternativas. Dentro destes modelos, encontram-se os modelos de optimização. Os modelos de optimização baseiam-se em procedimentos matemáticos exactos, que garantem uma solução óptima para a formulação matemática do problema. Isto é, pode ser provado, matematicamente, que a solução obtida com o modelo é a solução óptima. Os modelos de optimização têm em conta as restrições do sistema e seleccionam a melhor solução, dentro das alternativas possíveis, recorrendo a técnicas como a programação matemática. Muitos modelos de optimização estão incorporados em programas para computador que podem ser adquiridos pelas empresas. Como exemplo destes modelos, pode indicar-se o modelo da quantidade económica de encomenda (EOQ). Este modelo fornece uma resposta específica para o equilíbrio entre o custo de encomendar e o custo do nível médio das existências, permitindo identificar a frequência de encomendas e o tamanho de lote a encomendar que correspondem ao menor custo total das existências (Bowersox et al., 1996, p. 254 e Coyle et al., 2003, p. 516-517). As vantagens e desvantagens do uso de técnicas de optimização são tratadas nas abordagens deste tema. Ver, por exemplo, Coyle et al. (2003, p. 517 e 519):
Quanto a desvantagens, pode referir-se que na maioria das situações, a aplicação destes modelos requer recursos informáticos. Além disso, o uso da técnica de programação linear é limitado, já que implica que a formulação do problema seja determinística e possível de ser aproximada linearmente. A técnica de programação linear por si só não permite a consideração de custos fixos e custos variáveis de funcionamento logístico de uma instalação.
# Haskell/Programas completos

* Programas completos
* Intermediário
* Módulos
* Programas completos
* Indentação
* Mais tipos
* Estruturas de controle
* Classes e tipos
* A classe Functor
Programas completos(standalone programs) são programas que não precisam de nem um módulo ou biblioteca externa. Ou seja, eles já contém todo o código necessário para serem executados.
Então, vamos construir alguns programas completos.

## O módulo Main

O requisito básico para termos programas completos é ter o módulo Main e ele deve conter uma função chamada main do tipo IO.
Agora, vamos compilar este código e executá-lo independente:
Voilà, agora temos um programa completo construído em Haskell.

## Outros Módulos

Muitos programas são divididos em diferentes arquivos. A seguir, um pequeno exemplo de um programa que usa dois módulos.
Nós podemos compilar este pequeno programa da mesma forma que foi feito antes. A flag --make diz ao GHC para detectar automaticamente dependências nos arquivos que estão sendo compilados. Ou seja, como cumprimento.hs importa o módulo Nome o GHC irá buscar no diretório atual pelo arquivo que contém o módulo Nome e compilá-lo também. Caso Nome também dependa de outros módulos o GHC fará o mesmo processo novamente.
Você pode ter notado que o arquivo com o módulo Main, cumprimento.hs, tem seu nome diferente do nome do módulo, isso vai contra o que foi falado no capítulo Módulos. Isso não é um problema porque ter o nome do arquivo igual ao nome do módulo é útil para fazer o GHC buscar os arquivos automaticamente. Porém, no caso do módulo Main isso não é necessário, pois já especificamos qual o nome deste módulo quando pedimos ao GHC para compilá-lo.
Se você quer buscar por arquivos haskell em outros diretórios ( incluindo uma estrutura de diretórios e arquivos aninhados) você pode usar a flag -i com os diretórios que você quer adicionar (separados por dois pontos), isto irá indicar os diretórios onde o GHC buscará por código fonte.
Como um simples exemplo, o seguinte programa possui três arquivos, todos no diretório src/, essa é a estrutura de diretórios deste programa fictício:
O módulo Main importa suas dependências pesquisando por arquivos com nome semelhante ao nome do módulo. Por exemplo, import GUI.Interface fará uma pesquisa por GUI/Interface (com a extensão apropriada).
Para compilar esse programa no diretório HaskellProgram, faça o seguinte:
Perceba que não se deve pôr espaço entre a flag -i e o nome do diretório. Da mesma forma, não se coloca espaço para separar múltiplos diretórios, e sim :(dois pontos). Por exemplo, caso precisassemos adicionar outro local onde o GHC buscará código fonte, faríamos dessa forma:
De forma geral, essa é a sintaxe: -i⟨dir⟩[:⟨dir⟩]*

## Ver também

* Standalone Programs
* GHC Documentation
* Mary Elizabeth. What is a standalone program
# Haskell/Usando o GHCi

* Usando o GHCi
* Básico
* Recursividade
* Listas II (listas infinitas, map)
* Listas III (folds, compreensão)
* Declaração de tipos
* Lambdas e operadores
* Casamento de padrões
* Estruturas de controle: case
* Funções de alta ordem
* Usando o GHCi
GHCi auxilia de várias formas na produção de um trabalho mais eficiente. Nessa sessão, apresentamos uma breve discussão sobre boas práticas usando GHCi.

### Autocompletar usando Tab

Como em outros programas de terminal, você pode iniciar digitando algum texto no GHCi e clicando na tecla tab para ver todas as possibilidades que iniciam com texto que você digitou anteriormente. Quando há somente uma possibilidade, a tecla tab irá autocompletar o texto. Por exemplo, fol<Tab> irá acrescentar a letra "d" (desde que não exista outros itens que iniciem com "fol"). Pressionando a tecla Tab novamente, será listado as quatro funções inclusas no Prelude: foldl, foldl1, foldr e foldr1. Mais opções poderão ser listadas, além dessas, caso você tenha importado mais módulos.
A tecla Tab também funciona quando você está carregando arquivos no GHCi. Por exemplo, depois de digitar :l fi<Tab>, o GHCi irá mostrar todos os arquivos que iniciam com "fi" presentes no seu diretório atual (aquele que você estava quando iniciou o GHCi).
A mesma coisa também se aplica a importação de módulos, depois de digitar :m +Da<Tab> ou import Da<Tab>, você será apresentado a todos os módulos que iniciam com "Da" presentes nos pacotes instalados.

### ": comandos"

Na linha de comando do GHCi, comandos para o interpretador iniciam com o caractere ":".
* :help ou :h -- imprime uma lista com todos os possíveis comandos.
* :load ou :l -- carrega um arquivo no GHCi (você deve digitar o nome do arquivo após o comando :l).
* :reload ou :r -- lê novamente um arquivo que já foi carregado anteriormente (útil quando o arquivo foi alterado).
* :type ou :t -- imprime o tipo da expressão passada como parâmetro
* :module ou :m -- carrega um módulo. você também pode retirar do GHCi um módulo adicionando o símbolo - antes do nome do módulo.
Novamente, você pode visualizar todos os comandos possíveis digitando, :Tab.

### Cronometragem de funções no GHCi

GHCi tem uma maneira básica de medir quanto tempo uma função gasta para ser executada.
* digite :set +s na linha de comando do GHCi. Agora, execute a função e o tempo gasto por ela será mostrado após seu output.

### Multi-line Input

Se você quer definir uma função com múltiplas linhas, os caso queira digitar um bloco do no GHCi, há uma maneira simples:
* inicie uma nova linha com :{
* digite seu código, pressione enter quando precisar de uma nova linha.
* digite :} para definir o final das suas múltiplas linhas.
Por exemplo:
O mesmo resultado pode ser obtido usando :set +m, isso permitirá o uso de múltiplas linhas. Nesse caso, uma linha em branco definirá o fim do bloco.
Além disso, comandos podem ser separados em uma única linhas usando ponto e vírgula, veja:
# J2ME/Lições/M3G/Colisões

Colisões podem parecer simples em 2D, mas são um pouco mais complicadas no mundo em 3D, vamos ver aqui como fazer colisões da câmera para as meshes do cenário.

### Checando colisões

Vamos ver como checar colisões, primeiramente devemos criar um objeto do tipo RayIntersection, é ele que vai armazenar todos os dados da colisão.
Agora vamos criar 2 arrays de float, um irá pegar a posição X, Y, Z da câmera, o outro irá pegar a oriêntação da câmera. Essas variáveis devem ser obrigatoriamente iniciadas.
Agora vamos criar uma variável booleana para checar se houve uma colisão, vamos coloca-la inicialmente como false.
Agora dentro do loop principal, vamos usar os métodos getTranslation e getOrientation para armazenar nas variáveis translacaoCamera e rotacaoCamera, os atributos da nossa câmera.
Agora vamos testar a colisão através do método pick, que terá como enrada os seguintes valores:
* escopo - sempre será -1
* posição X - a posição X da câmera que foi pega no getTranslation
* posição Y - a posição Y da câmera que foi pega no getTranslation
* posição Z - a posição Z da câmera que foi pega no getTranslation
* orientação X - a orientação X da câmera que foi pega no getOrientation
* orientação Y - a orientação Y da câmera que foi pega no getOrientation
* orientação Z - a orientação Z da câmera que foi pega no getOrientation
* RayIntersection - o objeto RayIntersection que criamos anteriormente
Esse método pick irá retornar a condição true ou false para a nossa variável booleana colisao;
Agora, vamos criar um if para caso a colisão seja verdadeira mostrar uma mensagem no console.