- Modelica é uma linguagem orientada a objetos para modelar sistemas ciberfísicos complexos com mais eficiência
- É possível combinar componentes reutilizáveis por meio de conexões acausais e construir modelos baseados em equações matemáticas
- Foi projetada para facilitar a modelagem baseada em primeiros princípios (first principles), com foco em representar diretamente a estrutura e o comportamento de sistemas físicos
- O site oficial reúne em um só lugar informações sobre a linguagem Modelica, bibliotecas, ferramentas e a Modelica Association
- Também é possível consultar materiais sobre a Association, membros organizacionais, a loja de merchandising e canais de contato por e-mail e newsletter
Abordagem de modelagem da linguagem Modelica
- Modelica é uma linguagem orientada a objetos para modelagem de sistemas ciberfísicos
- Componentes reutilizáveis podem ser combinados por meio de conexões acausais
- Os componentes são representados como modelos regidos por equações matemáticas
- Essa estrutura se aproxima de um projeto pensado para facilitar a modelagem baseada em primeiros princípios
Materiais disponíveis no site oficial
-
Linguagem, bibliotecas e ferramentas
- Modelica Language: informações sobre a linguagem Modelica
- Modelica Libraries: informações sobre bibliotecas Modelica
- Modelica Tools: informações sobre ferramentas Modelica
- Modelica Association: informações sobre a Modelica Association
-
Association e canais de contato
- A Modelica Association possui membros organizacionais, e é possível ver mais de 21 membros adicionais no site
- É possível acessar a loja de merchandising em Modelica merchandising shop
- Os canais de contato são o e-mail board@modelica.org e a Modelica Association Newsletter
1 comentários
Comentários do Hacker News
Como a descrição do site diz, Modelica é uma linguagem declarativa de alto nível para descrever comportamento matemático, geralmente aplicada a sistemas de engenharia
Ela é bastante usada no setor de HVAC e, no meu caso, como engenheiro de controle, posso pedir a um engenheiro de sistemas FMUs de vários componentes para trabalhos de otimização
Uma FMU (Functional Mockup Unit) é um binário autônomo que representa um sistema dinâmico que outras aplicações podem executar
Minha formação é em aprendizagem por reforço, controle preditivo baseado em modelo e Python, e é conveniente poder incorporar modelos baseados em física, escritos em uma linguagem específica de domínio, em fluxos de trabalho Python
Modelica tem uma perspectiva diferente da programação imperativa comum, como Python/MATLAB
Você define equações, variáveis e restrições sem se preocupar com a ordem, e o compilador decide como executar a simulação, incluindo quais variáveis resolver primeiro
OpenModelica evoluiu bastante como uma implementação open source do padrão da linguagem, mas na indústria aplicações proprietárias como Dymola ainda levam vantagem
https://fmi-standard.org/
https://fmpy.readthedocs.io/en/latest/
https://openmodelica.org/
A organização comercial por trás da linguagem Julia recebeu financiamento da DARPA para criar essas ferramentas e está reunindo pesquisadores de análise numérica, computação escalável e especialistas de domínio em modelagem de sistemas de engenharia, como elétricos e mecânicos
Acho que o futuro da simulação vai nessa direção
https://juliahub.com/products/juliasim
https://news.ycombinator.com/item?id=26425659
https://docs.sciml.ai/DiffEqDocs/stable/
É uma linguagem não causal bastante de nicho, amplamente usada no automobilismo (F1, NASCAR) para simulações em tempo real em simuladores de piloto
A especificação da linguagem é open source, mas há vários compiladores comerciais, e Dymola é o mais famoso
Programo bastante nessa linguagem, e a não causalidade é extremamente poderosa
Ela torna os modelos muito combináveis: você monta sistemas mecânicos como blocos de Lego e as equações saem automaticamente
Também é fácil inverter modelos
A analogia mais próxima no mundo da programação é Haskell
Mas, no fim, o solucionador não aguentou as equações geradas, e aquilo pareceu uma caixa-preta impossível de depurar, então desistimos
Não ficou claro se fizemos algo errado ou se as alternativas open source ainda não dão conta
Sinto que ambientes de modelagem não causal também se parecem muito com sistemas de computação simbólica
Porque, na prática, são sistemas de álgebra computacional aplicada
Olhando só a descrição da landing page, como alguém que não é da área, eu gostaria de ver um exemplo ou um link para exemplos logo na primeira tela
Cliquei por uns 30 segundos e não encontrei nada que me atraísse
Por exemplo, a lei dos gases ideais PV = nRT tem 5 identificadores
Na maioria das linguagens de programação, é preciso ter apenas uma variável no lado esquerdo da atribuição, então você escreve algo como T=PV/nR, e precisa criar conjuntos semelhantes de equações separados para calcular outras variáveis
Em Modelica, você pode escrever a mesma equação na notação matemática natural, e ela calcula as incógnitas com base nos valores conhecidos
https://mbe.modelica.university/behavior/equations/electrical/
Além disso, não sei muito
Parece um framework simplificado para escrever simulações de sistemas físicos e elétricos
https://mbe.modelica.university/
Cliquei por uns 5 segundos e cheguei até isto
Encontrei em menos de 5 segundos
Não faço ideia do que é isso
Não há nenhum exemplo na landing page, e não há nenhum exemplo em nenhum dos principais links da landing page
Em vez disso, há uma loja de merchandise onde dá para comprar canecas e hoodies, e um monte de logos de grandes empresas chamados “organizational members”
Se você criou alguma coisa, precisa mostrar o que criou
A menos que eu já saiba que preciso disso, acho que não vou gastar mais de 30 segundos tentando descobrir o que é
Por que será que dificultaram tanto?
Precisei clicar várias vezes para chegar até aqui
https://mbe.modelica.university/behavior/equations/first_order/
Dá para comparar com o consórcio USB
https://www.usb.org
Ou com a PCI-SIG:
https://pcisig.com
Talvez a linguagem visual tenha sido moderna demais
Será que você o confundiu com um projeto de startup, e não com um padrão industrial de mais de 25 anos?
É interessante pensar que parecer moderno demais pode afetar negativamente a percepção e as expectativas
Como teria sido a reação se o design do site fosse de por volta de 2018?
http://web.archive.org/web/20180214180117/https://www.modelica.org/
É para pessoas que simulam sistemas multidisciplinares complexos e precisam de uma forma de descrever, empacotar e trocar o comportamento desses sistemas
É literalmente a primeira frase
No meu emprego atual, uso Modelica com OpenModelica para descrever sistemas eletromagnéticos, e tanto a linguagem quanto a interface gráfica do OpenModelica são excelentes
Às vezes penso nela como uma espécie de SPICE para sistemas multifísicos
A biblioteca Modelica é bastante madura e completa, e os solvers numéricos incluídos no OpenModelica são robustos e têm bom desempenho
Levou um tempo para aprender, mas agora está compensando
Além disso, o fato de Modelica ser um padrão implementado por vários fornecedores e também ter aplicações open source é ótimo para evitar aprisionamento a fornecedor
Vejo como uma tecnologia segura para engenheiros e empresas investirem
O fato de a exportação de FMU segundo o padrão FMI ser um recurso de primeira classe também tem muito valor, especialmente para integradores de sistemas
Você pode entregar um modelo de sistema razoavelmente ofuscado a uma parte não confiável, e ainda assim ela consegue obter plenamente os benefícios do modelo de sistema
Nesse ponto, o OpenModelica está à frente de concorrentes como o ModelingToolkit.jl open source e a biblioteca relacionada FMIExport.jl
https://openmodelica.org/doc/OpenModelicaUsersGuide/v1.11.0/fmi.html
https://docs.sciml.ai/ModelingToolkit/stable/
https://github.com/ThummeTo/FMIExport.jl
Comparado às APIs velhas e rígidas de softwares de engenharia, era um padrão bem decente
Eu me formei na universidade há 4 anos e só agora entrei na toca do coelho da modelagem por grafos de ligação; estou estudando por conta própria com as notas de aula do MIT de Henry M. Paynter e, no trabalho, modelando sistemas veiculares com Simscape
Entendo que Modelica e Simscape usam grafos de ligação como mecanismo de base, mas não sei se isso está certo
Seria ótimo se algum especialista da área pudesse me dar um direcionamento
No momento, acredito que entender a teoria de grafos de ligação vai me permitir compreender intuitivamente quase todos os sistemas com que trabalho
Também acho interessante como essa área é surpreendentemente de nicho
A maioria dos meus colegas ao redor nunca deu muita atenção a isso, mas, quando descobri, pareceu a bala de prata para todos os meus problemas
https://dirac.ruc.dk/~heine/paynter/analysis_and_design_of_engineering_systems_henry_m_paynter.pdf
Na verdade, há uma certa oposição entre a comunidade Modelica e a comunidade de grafos de ligação
Minha posição sobre essa história está em [1] e [2]
Também não concordo com a ideia de que grafos de ligação permitem compreender intuitivamente quase todos os sistemas
O que se pode obter é uma apreciação da elegância da formalização por grafos de ligação
Mas, em 30 anos de experiência em modelagem industrial, as analogias extraídas daí são muito superficiais
Quando você passa de elementos passivos e lineares, todas as analogias se quebram
Por exemplo, surgem questões como por que sistemas térmicos não têm momento, o que acontece quando há fluidos compressíveis, ou qual seria o equivalente de uma embreagem em sistemas elétricos
Grafos de ligação também não são realmente não causais; são apenas outra formalização causal mais próxima da física
Fãs de grafos de ligação certamente vão discordar, mas estou compartilhando uma visão pessoal e subjetiva
https://www.linkedin.com/feed/update/urn:li:ugcPost:7272516319944589312?commentUrn=urn%3Ali%3Acomment%3A%28ugcPost%3A7272516319944589312%2C7272661328605900801%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287272661328605900801%2Curn%3Ali%3AugcPost%3A7272516319944589312%29
https://mbe.modelica.university/components/connectors/simple_domains/
Posts relacionados:
All about Modelica: An equation-based language for modeling physical systems - https://news.ycombinator.com/item?id=23690788 - junho de 2020, 44 comentários
Modelica - https://news.ycombinator.com/item?id=16013179 - dezembro de 2017, 12 comentários
+1 para ModelingToolkit.jl
Ele incorporou lições aprendidas com Modelica e é prazeroso de usar
Pelo que entendi, isto é uma linguagem para descrever “sistemas” de uma forma bastante geral, e sistemas podem ser modelados por equações diferenciais ou equações discretas (if/then/else)
Se for geral o suficiente, é excelente
Mas a parte mais interessante é a metodologia geral para realmente executar simulações desses sistemas ao longo do tempo
Especialmente se não for integração ou amostragem por Monte Carlo de força bruta, e sim algo que permita descrever equações diferenciais arbitrariamente complexas
OpenModelica, uma implementação open source baseada na linguagem Modelica, também não pode ficar de fora
Ainda não usei, mas pretendo explorar alguns recursos neste feriado
https://openmodelica.org/
Se você estiver pensando em dar uma olhada no OpenModelica, talvez também goste do ModelingToolkit.jl
https://docs.sciml.ai/ModelingToolkit/dev/
Há também um projeto de Hilding Elmqvist, que trabalhou na Dassault no Dymola, a principal implementação comercial de Modelica
O projeto dele é o Modia.jl
https://github.com/ModiaSim/Modia.jl
Pessoalmente, sinto que a comunidade Julia está convergindo para o MTK, mas, nos estágios iniciais da simulação de sistemas dinâmicos em Julia, o Modia estava à frente, e vejo que o MTK se inspirou bastante tanto no Modia quanto no Modelica
O Modia é um pouco mais agradável de usar, integrou com alguns anos de antecedência coisas como um visualizador 3D e um pacote multibody completo, e a Julia Computing só agora está correndo atrás
O MTK tem melhor suporte a solucionadores de backend e tem grande potencial para superar o Modia
Especialmente porque o ritmo de lançamentos do Modia parece ter desacelerado
https://github.com/JuliaComputing/Multibody.jl
Minha avaliação breve das versões pagas, com base no uso no trabalho, é: fique longe, fuja
Não faz muito mais do que SPICE gratuito, o licenciamento é complicado e tem muitos bugs
É como o LabVIEW do mundo da simulação
Não usei a versão gratuita
Junto com colegas, venho desenvolvendo NESTML, uma linguagem de modelagem de sistemas dinâmicos para sistemas dinâmicos híbridos
Aqui, sistemas dinâmicos híbridos são sistemas que incluem tanto dinâmica em tempo contínuo, expressa por equações diferenciais ordinárias, quanto o envio e recebimento de eventos discretos que ocorrem instantaneamente no tempo
Tentamos minimizar a sintaxe, para que os modelos possam ser escritos de forma bem concisa
Por exemplo:
model lorenz_attractor:
state:
x real = 1
y real = 1
z real = 1
equations:
x' = sigma * (y - x) / s
y' = (x * (rho - z) - y) / s
z' = (x * y - beta * z) / s
update:
integrate_odes()
parameters:
sigma real = 10
beta real = 8/3
rho real = 28
Para eventos, há sintaxes como "onReceive(in_port_name)" e "emit_spike()"
A nomenclatura é bastante influenciada pelo domínio de aplicação da neurociência
Ainda está em andamento, mas já existem aplicações interessantes, como redes neurais de spikes que reproduzem sequências depois de aprendê-las
https://nestml.readthedocs.io/en/latest/tutorials/sequence_learning/sequence_learning.html
Sinceramente, fiquei surpreso ao descobrir que algo assim ainda não existia quando começamos a desenvolver o NESTML
Modelica é parecido, mas não parece ter suporte a eventos discretos
Sei que isso é uma divulgação descarada, mas comentários e feedback são muito bem-vindos
Todo o desenvolvimento acontece publicamente no GitHub e é licenciado sob GPL
Se alguém conhece linguagens específicas de domínio semelhantes, eu gostaria de ler os comentários