• Nenhum resultado encontrado

6.3 Implementação multifísica

6.3.2 Classes implementadas

ses elementos são chamados de elementos computacionais multifísicas, que combinam um ou mais elementos do tipo TPZInterpolationSpace ou TPZInterfaceElement. Cada elemento multifísica tem uma referência para o elemento geométrico e uma lista de ponteiros para elementos computacionais. A ordenação dos elementos computacionais é muito importante, pois isso determina a ordem em que as funções de forma são pas- sadas para o objeto material.

As classes implementadas no NeoPZ para contemplar a simulação multifísica são TPZMultiphysicsElement e sua classe derivada TPZMultiphysicsCompEl, TPZMul- tiphysicsInterfaceElement e TPZBuildMultiphysicsMesh. Um esquema da estrutura de classes que definem o elemento computacional multifísica é mostrado na Figura 6.7. A classe TPZMultiphysicsElement é uma classe derivada da classe TPZCompEl, que juntamente com a sua classe derivada TPZMultiphysicsCompEl contém os métodos e funções responsáveis pela construção de um elemento computacional multifísica, tanto de interior quanto de interface. Note que o elemento multifísica de interface é criado apenas quando o método de Galerkin descontínuo é aplicado em uma das EDPs do problema multifísica. A classe TPZMultiphysicsInterfaceElement é responsável pelos cálculos sobre o elemento multifísica de interface entre dois elementos descontínuos. A classe TPZBuildMultiphysicsMesh é uma classe auxiliar na construção do elemento computacional multifísica.

TPZCompEl

TPZInterfaceElement TPZInterpolationSpace TPZMultiphysicsElement TPZMultiphysicsInterfaceElement

TPZMultiphysicsCompEl

Classe TPZMultiphysicsCompEl

A classe TPZMultiphysicsCompEl é a classe principal na simulação multifísica, sendo responsável pela criação dos elementos computacionais multifísicas. Os principais mé- todos da classe são:

• AddElement(TPZCompEl *cel, int meshindex): adiciona um elemento computa- cional ao elemento multifísica.

• SetConnectIndexes(TPZVec<int> &indexes): insere os índices dos connects (ob- jetos da classe TPZConnect) ao elemento multifísica. No NeoPZ, a classe TPZ- Connect é responsável pela representação do conjunto de funções de base associ- ado ao elemento computacional.

• InitMaterialData(TPZVec<TPZMaterialData > &dataVec): inicializa o vetor de dados da classe TPZMaterial e seus atributos associados a cada fenômeno físico da formulação variacional.

• AffineTransform(TPZManVector<TPZTransform> &trVec): calcula o mapea- mento de um ponto paramétrico no elemento multifísica para um ponto para- métrico nos seus respectivos elementos pai referenciados.

• CalcStiff(TPZElementMatrix &ek, TPZElementMatrix &ef): calcula a matriz de rigidez e o vetor de carga (matriz e vetor do sistema algébrico) localmente, ou seja, em um elemento multifísica.

• Solution(TPZVec<REAL> &qsi, int var, TPZVec<REAL> &sol): calcula a so- lução aproximada, sol, para uma variável de estado em um ponto paramétrico qsi do elemento multifísica, em que qsi é expresso em termos das coordenadas do elemento de referência (elemento mestre).

Classe TPZMultiphysicsInterfaceElement

Essa classe é responsável pelos cálculos sobre os elementos multifísicas de interface. Alguns dos principais métodos dessa classe são:

• ComputeSideTransform(TPZManVector<TPZCompElSide> &Neighbor, TPZ- ManVector<TPZTransform> &transf): calcula a transformação paramétrica que leva um ponto paramétrico do elemento multifísica de interface para um ponto

paramétrico do elemento multifísica vizinho. Note que não existem funções de aproximação associadas ao elemento de interface. Portanto, em todos os cálculos feitos sobre um elemento de interface, é necessário aplicar essas transformações paramétricas.

• CalcStiff(TPZElementMatrix &ek, TPZElementMatrix &ef): calcula a contribui- ção na matriz de rigidez e o vetor de carga (matriz e vetor do sistema algébrico) em um elemento multifísica de interface.

• Solution(TPZVec<REAL> &qsi, int var, TPZVec<REAL> &sol): calcula a so- lução aproximada, sol, para uma variável de estado em um ponto paramétrico qsi do elemento multifísica de interface, em que qsi é expresso em termos das coordenadas do elemento de referência (elemento mestre).

Classe TPZBuildMultiphysicsMesh

A classe TPZBuildMultiphysicsMesh possui os métodos auxiliares na construção da malha computacional multifísica. Os principais métodos são:

• AddElements(TPZVec<TPZCompMesh *> cmeshVec, TPZCompMesh *MFMesh): faz um loop sobre um conjunto de malhas computacionais e adiciona os elementos computacionais, de cada um das malhas, na malha multifísica.

• AddConnects(TPZVec<TPZCompMesh *> cmeshVec, TPZCompMesh *MFMesh): faz um loop sobre um conjunto de malhas computacionais e adiciona o conjunto de connects ( objetos da classe TPZConnect), de cada um das malhas, na malha multifísica.

• TransferFromMeshes(TPZVec<TPZCompMesh *> &cmeshVec, TPZCompMesh *MFMesh): transfere informações (solução, matriz de rigidez e vetor de carga, etc) de um conjunto de malhas computacionais para a malha multifísica.

• TransferFromMultiPhysics(TPZVec<TPZCompMesh *> &cmeshVec, TPZComp- Mesh *MFMesh): transfere informações (solução, matriz de rigidez e vetor de carga, etc) da malha multifísica para um conjunto de malhas computacionais.

Outros métodos

Como descrito anteriormente, para manter uma relação sólida com as classes TPZMa- terial e TPZDiscontinuousGalerkin, foi necessário criar métodos Contribute(), Contri- buteBC(), ContributeInterface() e ContributeBCInterface() que recebam um vetor de objetos TPZMaterialData. Além disso, foi necessário adicionar outros métodos dentro do ambiente NeoPZ de modo a contemplar a simulação multifísica. Abaixo, seguem alguns dos métodos implementados:

• Contribute(TPZVec<TPZMaterialData> &datavec, REAL weight, TPZFMatrix &ek, TPZFMatrix &ef): calcula a contribuição da matriz de rigidez e do vetor de carga localmente em um ponto de integração no elemento multifísica.

• ContributeBC(TPZVec<TPZMaterialData> &datavec, REAL weight, TPZFMa- trix &ek, TPZFMatrix &ef, TPZBndCond &bc): calcula a contribuição da ma- triz de rigidez e do vetor de carga localmente em um ponto de integração para os elementos multifísica de contorno.

• Solution(TPZVec<TPZMaterialData> &datavec, int var, TPZVec<REAL> &So- lout): retorna uma solução aproximada relacionada a uma variável de estado do problema multifísica.

• SetAllCreateFunctionsMultiphysicElem(): método para definir funções de aproxi- mação relacionadas ao elemento multifísica.

Documentos relacionados