CAPÍTULO 6 IMPLEMENTAÇÃO COMPUTACIONAL
6.3 CLASSES E MÉTODOS DO PROCESSADOR
O organograma da Figura 6.4 mostra todas as classes envolvidas no sistema completo, mas este trabalho se prenderá unicamente às classes pertinentes ao módulo de processamento. Uma vez concluída a fase de pré-processamento, o arquivo de dados é gerado e, de acordo com o tipo de análise definida pelo usuário, os métodos correspondentes ao tipo definido são invocados pelo objeto da classe BEMOOP.
Fig. 6.4 – Diagrama de classes do Processador.
As quatro classes que compõem o programa de análise com seus respectivos métodos e atributos, são explicadas abaixo e nas respectivas tabelas.
• classe BEM_ELASTIC – esta classe é responsável pela análise elástica. Seus métodos e atributos (ver diagrama desta classe, abaixo) possibilitam o cálculo dos deslocamentos, trações, tensões e deformações, tanto no contorno quanto no interior, por meio do Método dos Elementos de Contorno, como vistos no diagrama abaixo. Esta classe se relaciona com as classes BEM_SYS e GeometricModel.
Tab. 6.1 – Diagrama da classe BEM_ELASTIC.
Diagrama de Classe
*pBEM_SYS – ponteiro para classe BEM_SYS. Este ponteiro permite a
resolução do sistema Ax=Y, cujo retorno é um vetor contendo deslocamentos e trações no contorno.
*vet_U, *vet_P, *vet_D, *vet_T – são vetores dinâmicos para
deslocamentos, trações, deformações e tensões, respectivamente. Esses vetores são criados dinamicamente, de acordo com os tamanhos definidos pelo usuário.
*vet_G, *vet_H – arrays dinâmicos das matrizes G e H.
void Matrizes_GH() – este método organiza as matrizes G e H e monta o
vetor de 2o membro para preparar o sistema.
void DeslTrac_Cont() – este método organiza a solução no contorno para
os deslocamentos e trações de superfícies, de acordo com as condições de contorno. E ainda, obtém as tensões no contorno.
void DeslTen_Int() – este método calcula os deslocamentos e tensões nos
pontos internos.
void Deform() – este método calcula as deformações em todos os pontos,
isto é, contorno e interior.
*pGeometricModel – ponteiro para classe GeometricModel. Este ponteiro
permite a leitura das informações da geometria e da malha armazenadas nesta classe.
• classe BEM_PLASTIC – esta classe é responsável pela análise plástica. Seus métodos e atributos possibilitam o cálculo dos incrementos de deformação e de tensão plásticos, o cálculo das pseudo trações de superfícies, bem como a escolha do critério de escoamento de acordo com a opção do usuário e o processo incremental como um todo. Esta classe se relaciona com todas as classes envolvidas no programa de análise. Ver seu diagrama de classe na Tabela 6.2.
• classe BEM_DRM – esta classe é responsável pela análise dos termos não- homogêneos, isto é, pela transformação da integral de domínio em integral de contorno. Os método e atributos desta classe possibilitam a montagem da matriz das funções de aproximação utilizadas, dos vetores contendo as
soluções particulares ( ), do cálculo da divergência do tensor
plástico e da pseudo força de corpo. Esta classe permite a introdução das várias RBFs, bem como dos vários graus dos termos acrescidos das funções
TPS. Ver seu diagrama de classe na Tabela 6.3.
ˆ e
Tab. 6.2 – Diagrama da classe BEM_PLASTIC.
Diagrama de Classe
num_passo – variável do tipo inteiro que guarda o número de passos de
carga.
m_escoa, m_percarga – variáveis do tipo real que guardam a tensão de
escoamento e o percentual de carga adotado, respectivamente.
*incr_def, *incr_ten – variáveis do tipo real que guardam os incrementos
de deformação e tensão plásticos.
*pBEM_ELASTIC – ponteiro para a classe BEM_ELASTIC. *pBEM_DRM – ponteiro para a classe BEM_DRM. *pBEM_SYS – ponteiro para a classe BEM_SYS.
void Incremental() – este método realiza o processo incremental.
double Criterio_Escoa(*char) – este método calcula a tensão equivalente
em cada nó, de acordo com o critério escolhido pelo usuário, e a retorna num vetor do tipo real.
void DefTen_Pastic(int) – este método calcula os incrementos de
deformação e tensão plásticos a cada passo de carga. O argumento do tipo inteiro é o passo de carga corrente.
void Atualiza_Sol() – este método atualiza a solução elastoplástica a cada
novo incremento de carga.
void Pseudo_Trac() – este método calcula as pseudo trações de
superfícies.
*pGeometricModel – ponteiro para classe GeometricModel. Este ponteiro permite a leitura das variáveis plásticas inseridas pelo usuário na fase de pré-processamento.
Tab. 6.3 – Diagrama da classe BEM_DRM.
Diagrama de Classe
*pBEM_SYS – ponteiro para classe BEM_SYS. Este ponteiro permite a
leitura das informações geométricas, como número de nós e coordenadas.
*pBEM_PLASTIC – ponteiro para classe BEM_PLASTIC. Este ponteiro
permite acessar o membro incr_ten dessa classe
*vet_Up, *vetPp – vetores dinâmicos para guardar as soluções particulares
de deslocamentos e trações, respectivamente.
*vet_b, *vet_drm – vetores dinâmicos para guardar a pseudo força de
corpo e o resultado da reciprocidade, respectivamente. Este último é o resultado da seguinte operação: vet_drm=(HUˆ−GP F bˆ) −1
*vet_f – array para matriz F de MRD.
void Matriz_Fdrm(int) – este método organiza a matriz da função de
aproximação usada, as chamadas ATPS. O argumento inteiro indica a ordem da matriz F.
void Pseudo_Fcorpo() – este método calcula o divergente do tensor
plástico e, em seguida, obtém a pseudo força de corpo vet_b.
void Compute_Up() – este método calcula a solução particular para
deslocamentos.
void Compute_Pp() – este método calcula a solução particular para
tensões.
• classe BEM_SYS – esta classe é responsável pela montagem e cálculo dos sistemas de equações algébricas envolvidos nas análises. Nesta classe, temos métodos operadores de multiplicação de arrays, de triangularização de matrizes e resolução de sistemas por Eliminação Gaussiana.
Tab. 6.4 – Diagrama da classse BEM_SYS.
Diagrama de Classe
Mat_Triang(double *) – este método organiza a matriz A do sistema
por pivotação, trocando as linhas se necessário.
Solver(int, double *, double *) – este método resolve o sistema de
equações do MEC por pivotação.
operator * (double&, double&) – este método realiza a
multiplicação entre duas matrizes.
*pGeometricModel – ponteiro para classe GeometricModel. Este
ponteiro permite a leitura das informações de geometria.