Dois programas de modelagem diferentes podem ser usados ​​para confirmar os resultados um do outro?

8

Modelos de computador

A modelagem por computador é usada em vários campos da engenharia. Estou considerando especificamente a análise estrutural ou a análise de elementos finitos (FEA). Às vezes, os modelos são usados ​​para acelerar cálculos repetitivos que poderiam ser feitos manualmente. Às vezes, os modelos são usados ​​para realizar cálculos que não são fáceis ou mesmo possíveis de serem feitos manualmente.

Verificando

Existem alguns métodos padrão para verificar os resultados dos modelos de computador.

  • Execute modelos de verificação e confirme se os resultados correspondem a uma resposta calculada anteriormente.
  • Execute modelos simples que podem ser verificados com cálculos manuais.
  • Teste modelos físicos.

O problema com os dois primeiros métodos de verificação acima é que eles apenas verificam situações específicas ou apenas as partes simples do programa.

O método do modelo físico pode ser caro para modelos em tamanho real e os modelos em escala nem sempre fornecem os mesmos resultados que o tamanho original.

Isso deixa uma lacuna em quais resultados podem ser verificados. Para qualquer modelo complicado, não há uma maneira fácil de verificar se os resultados do programa estão corretos. O engenheiro deve confiar que o software produziu resultados corretos a partir do modelo.

Verificação de comparação

O modelo pode ser inserido em dois programas diferentes (criados por empresas diferentes). A suposição é que, se os resultados dos dois modelos forem semelhantes o suficiente, os resultados deverão estar corretos para o modelo usado. Isso não detectaria nenhum erro na criação do modelo original, mas ocorreria na implementação do software.

  • Dois programas separados poderiam ser usados ​​para verificar a "correção" dos resultados do modelo?
  • Usar esse método de comparação de um modelo em dois programas separados forneceria o mesmo nível de garantia nos resultados de qualquer outro método de verificação?
  • Quais poderiam ser as desvantagens de usar este procedimento?
hazzey
fonte
O "Ônibus Espacial" entrou em órbita usando 5 x computadores de vôo. 4 deles executaram o mesmo programa, verificaram os resultados uns dos outros, concordaram entre si quem era sensato e votaram fora de qualquer membro insano. O quinto computador executou um programa completamente diferente, escrito de forma independente por uma equipe diferente. 'Apenas no caso de'. Não sei se isso foi necessário.
Russell McMahon
Ambos os programas de computador podem estar errados da mesma maneira, então eu diria que não. Isso não é uma boa prática. É melhor comparar soluções numéricas com os casos em que uma solução é conhecida, analítica, empiricamente ou por meio de pesquisa publicada.
Paul
@ Paul Sim, é assim que as coisas normalmente são verificadas, mas isso mostra apenas que o programa funciona para esse problema. Você pode supor se outras configurações que usam os mesmos caminhos de código também estão corretas, mas sempre haverá um caso extremo. A suposição incluída no uso de dois programas separados é que os programadores têm erros em diferentes casos extremos.
hazzey

Respostas:

7

Sim, obter uma segunda opinião pode ser útil. Isso é feito rotineiramente na previsão do tempo, onde as soluções exatas são desconhecidas e há um julgamento sobre como aplicar vários fatores.

Haverá menos espaço de manobra em algo como uma análise de tensão de malha de elementos finitos porque as equações iterativas para resolvê-la serão basicamente as mesmas, independentemente de quem escreveu o software. O problema real não é resolver a malha tanto quanto criar uma malha boa o suficiente em primeiro lugar.

Portanto, uma maneira de obter várias opiniões é variar os parâmetros da malha. Espero que você ainda tenha praticamente a mesma resposta. Se você tornar a malha 2x mais fina e obter uma resposta significativamente diferente, é uma pista forte que a malha original não foi detalhada o suficiente. Você também não sabe ao certo se a próxima malha é detalhada o suficiente sem criar uma ainda mais detalhada e obter a mesma resposta.

É claro que hoje em dia a própria geração de malhas é um pouco automatizada e adaptável. Não se trata mais apenas da física de resolver a malha, mas inclui heurísticas sobre quando e como subdividir. Diferentes softwares podem variar nesse sentido; portanto, a execução de dois programas diferentes com os mesmos dados iniciais pode ser útil.

Olin Lathrop
fonte
6

Escrevo isso da perspectiva de um engenheiro que desenvolve software de simulação.

Acho que a prática descrita é ruim e recomendo que você não use dois softwares diferentes para "confirmar" os resultados.

Em geral, dois softwares de modelagem diferentes não podem ser usados ​​para confirmar muito mais que sua similaridade. Dois softwares podem facilmente obter duas respostas semelhantes, mas erradas, especialmente se eles usarem modelos semelhantes. Posso pensar em pelo menos um caso em que esse é definitivamente o caso, e Trevor Archibald menciona outro. Eu ficaria mais impressionado com dois softwares que usam diferentes técnicas de modelagem, obtendo resultados semelhantes.

Esse assunto é chamado de verificação e validação de modelos de computador e possui uma literatura bastante vasta. Vou oferecer um esboço do básico. A verificação está comparando um modelo com uma solução "exata" (que pode ser um cálculo manual ou algo mais complexo), ou seja, verificar a matemática do software. As suposições por trás da solução exata podem estar erradas, mas pelo menos você deseja garantir que o software faça a parte matemática corretamente. A validação está comparando um modelo com um experimento. Isso permite que você verifique se o modelo que você está usando é preciso, o que é algo que a verificação não pode fazer por você.

O problema com os dois primeiros métodos de verificação acima é que eles apenas verificam situações específicas ou apenas as partes simples do programa.

Esse é um problema real para desenvolvedores e usuários de software. Existem maneiras estabelecidas de lidar com isso que são muito melhores do que comparar dois softwares diferentes.

O problema é que você nunca pode testar todos os casos possíveis. Seu software pode passar no caso A, mas o caso A não envolve física X, Y ou Z, e isso o deixa totalmente fora do caso B. Portanto, o que você deseja é um grande número de verificações que abranjam pelo menos todas as os recursos básicos que você deseja verificar. Muitos softwares possuem "suítes V&V", que são basicamente exatamente isso.

Em termos de verificação, existem inúmeras opções. Você pode gerar novas soluções exatas para diferentes casos. Às vezes, isso por si só é adequado. No entanto, como você notou, muitas vezes o que você pode fazer manualmente é limitado a casos muito simples. Para os casos mais gerais, você pode usar uma técnica chamada método de soluções manufaturadas (Google it). Isso requer programação e pode ficar confuso, mas permite que você teste basicamente qualquer coisa que possa imaginar. (A parte bagunçada pode ser tratada através de uma biblioteca como MASA , a propósito.)

Além disso, gostaria de salientar que, ao contrário do que Olin Lathrop sugere, com o método de soluções fabricadas, você pode gerar o que são, para fins de teste, soluções exatas. Eles não são "exatos" no sentido estrito, porque não satisfazem exatamente as equações que o software está resolvendo sem modificação. Mas eles satisfazem equações muito próximas e a diferença é explicada para tornar o teste rigoroso. Essa técnica não é muito popular no momento, mas foi usada para testar coisas que antes eram difíceis de testar.

Em termos de validação, você pode procurar mais dados experimentais ou executar suas próprias experiências.

Ben Trettel
fonte
4

Eu acho que essa é uma boa prática em geral.

Usando dois softwares diferentes, você pode evitar dois tipos de erros: 1) erros provenientes de um software impreciso (que não deve ser esquecido), 2) erros resultantes da falta de hábito do usuário com o software (opções ocultas, configurações padrão ...).

Se os softwares forem diferentes o suficiente, as chances de obter o dobro de resultados errados são baixas.

No entanto, os erros provenientes de uma má escolha de modelagem não podem ser evitados dessa maneira. Então, eu diria que a principal desvantagem é confiar demais nos resultados, porque eles foram confirmados por dois softwares.

Eu acho que é melhor dominar um software, executando todos os tipos de casos de teste (comparação com resultados acadêmicos, por exemplo), do que usar vários softwares e ter apenas um conhecimento médio. Além disso, acho melhor conhecer os conceitos básicos da análise FEM, e usar apenas dois softwares "um clique para executar" é uma prática ruim, pois é provável que os usuários reproduzam erros de modelagem.

PS: Estou escrevendo como um usuário de análise eletromagnetismo / térmica FEM (nenhum outro domínio).

TZDZ
fonte
2

Resposta do ponto de vista de um engenheiro de design

A verificação dos resultados de um programa em relação a outro fornecerá certo nível de certeza de que os resultados estão corretos. É improvável que você tenha 100% de certeza, mas é difícil alcançar esse nível de certeza.

Um grande problema que vejo é poder transferir o modelo de um software para outro. Embora a importação / exportação de modelos esteja sendo aprimorada pela maioria das empresas de software (por causa do BIM), eu não esperaria que todos os recursos de um modelo fossem exportáveis. A geometria é relativamente fácil de importar / exportar, pois o arquivo de troca precisa conter apenas coordenadas. Porém, por exemplo, as versões finais dos membros provavelmente serão armazenadas de maneira muito diferente por software diferente; portanto, a menos que / até que um formato universal de troca de arquivos seja acordado, suspeito que seja necessário muito esforço para reconstruir completamente um modelo no segundo programa de software.

Com base na minha própria experiência, é muito mais provável que os erros nos resultados venham da entrada incorreta de dados ou suposições incorretas do que de softwares mal escritos. O tempo e o esforço no uso de software independente para verificar uma resposta, portanto, provavelmente não é um bom uso do seu tempo.

Resposta do ponto de vista de um engenheiro de software

A verificação de software contra outro software não é tomada como justificativa para que seu software esteja correto. É muito melhor encontrar dados / resultados publicados que possam ser usados ​​para verificar se o software fornece respostas corretas. Imagine uma reunião de vendas em que uma empresa de software esteja tentando vender seu software para uma empresa de engenharia:

Engenheiro: Como sabemos que seu software está correto?

Vendedor de software: Bem, comparamos com o software de nossos concorrentes e obtivemos a mesma resposta.

Engenheiro: Então você está dizendo que seu concorrente é suficientemente melhor do que você e que o software dele é a medida contra a qual você mede seu software? Parece que deveríamos comprar o software dele!

AndyT
fonte
11
Espero que o engenheiro de software não anuncie que o software é comparado a outro programa, mesmo que seja o caso no laboratório. Eu também acho que um engenheiro de software gostaria que houvesse casos extremos que não foram completamente cobertos com testes de unidade.
hazzey
2

Concordo com as outras respostas aqui, que isso em geral pode ser uma boa idéia e ajudará a garantir a precisão dos resultados da simulação. Em termos de quão bom é em relação aos outros métodos de verificação, eu diria que os resultados e testes físicos anteriormente conhecidos são melhores opções, se possível, mas os cálculos manuais podem exigir uma simplificação excessiva se o modelo for suficientemente complexo.

O que realmente quero destacar é algo que não foi abordado no ponto final: possíveis fraquezas dessa prática. O uso de dois pacotes FEA diferentes pode detectar a peculiaridade de um pacote que causa um erro, desde que você possa identificar qual análise está correta e qual está desativada. No entanto, existem algumas limitações gerais à FEA em geral, independentemente do método ou implementação. Cantos agudos e outros concentradores de estresse que causam singularidades no modelo não mudam muito de pacote para pacote, sempre serão pontos fracos. É aqui que é necessário conhecimento e intuição de engenharia.

Fiz simulações em peças que eu sei que suportam facilmente certas tensões, e o modelo mostra que a tensão interna é 10x a resistência ao escoamento; isso está obviamente incorreto, porque está em um padrão de spline involuto e o software FEA não gosta disso.

Por fim, deve ser óbvio que a troca de software não elimina o erro do usuário. Se você cometer um erro no modelo ou nos parâmetros, esse erro vai estragar você, não importa o que você usa para analisá-lo.

Trevor Archibald
fonte
Não tenho idéia do que é um "padrão de spline involuto", portanto esse comentário pode não ser relevante, mas se você estiver recebendo tensão interna com um rendimento de 10x, talvez seja necessário modelar com um material não linear? Isso removeria concentrações extremas de estresse local.
AndyT
Neste ponto, não me lembro se usei uma resposta material elástica linear ou algo mais básico, mas não queria que a simulação fosse executada para sempre, e esse é um uso precoce da FEA para nós. Foi essencialmente um redesenho de uma peça existente para a qual conhecemos o modo de falha, e a maneira como tivemos que configurar o modelo impôs algumas restrições rígidas ao spline (um spline involuto é a forma da maioria dos dentes de engrenagem). Se eu estivesse fazendo uma análise mais abrangente, poderia tentar corrigi-la, mas isso era mais uma prova de conceito, em comparação com a parte existente.
Trevor Archibald
1

As condições de contorno e a técnica de modelagem influenciarão bastante os resultados. O que eu sugiro é executar uma versão simplificada / idealizada (como planar ou axissimétrica) e uma versão totalmente sólida e comparar as duas.

O problema com dois softwares diferentes da FEA é que, sob o capô, os solucionadores serão basicamente os mesmos. As diferenças observadas seriam de diferentes critérios de convergência, talvez, ou de diferentes suposições sobre como as condições de contorno são aplicadas. Você não está verificando o modelo, mas a capacidade de cada solucionador de saber que chegou a uma solução.

Eu acho que os resultados da FEA devem ser validados pelo primeiro senso comum e cálculos manuais, depois por modelos semelhantes, mas diferentes (sólidos em vez de vigas, por exemplo) e, finalmente, por testes físicos para ver se as peças falham onde e como a FEA prevê. O momento em que uma peça falha é mais difícil porque é influenciada por processos de fabricação, variações de material e tensões ressudiais.

ja72
fonte
Nem todas as disciplinas de engenharia têm o luxo de poder fazer um teste de destruição física. Na engenharia civil e estrutural, a grande maioria dos projetos está construindo itens únicos e únicos - construir um completo separado apenas para testar sua destruição seria proibitivamente caro!
AndyT
Ponto tomado. Ainda é uma boa idéia validar os resultados da FEA com testes, mesmo que seja com amostras ou peças de escala.
ja72
Percebo o seu ponto de vista ... mas nos meus seis anos de projeto de ponte nunca ouvi falar de um teste físico sendo realizado em uma maquete de uma ponte.
AndyT
Então, quais pontes devo evitar? Brincando. Portanto, deve haver margens de segurança suficientes para explicar o material que não é modelo na FEA. Não existe um modelo 100% preciso da FEA.
ja72
De fato, temos fatores de segurança em todos os lugares! O (agora praticamente extinto) Padrão Britânico BS5400 incluía um fator 1.1, denominado gammaf3, que era "um fator que leva em conta a avaliação imprecisa dos efeitos do carregamento, a distribuição imprevista de tensões na estrutura e as variações na precisão dimensional alcançadas na construção". . " ou seja, seja qual for a sua análise da FE lhe indica o estresse, multiplique-o por 1,1, caso seja um valor não conservador.
AndyT