• Nenhum resultado encontrado

Na mecˆanica dos s´olidos computacional, o sistema de equa¸c˜oes 6.1, para o caso de uma an´alise est´atica, se reduz a

CCC · XXX = DDD (6.2)

sendo CCC a matriz de rigidez global, XXX o vetor de deslocamentos nodais, DDD o vetor de for¸cas nodais do modelo. Se a an´alise ´e fisicamente n˜ao linear, a matriz CCC depende dos deslocamentos XXX. Neste caso, as ra´ızes das equa¸c˜oes 6.2 s˜ao obtidas por meio de um processo processo incremental iterativo segundo o qual o sistema de equa¸c˜oes 6.2 ´e reescrito na forma

K

KKt· δUUU = δλ · PPP + QQQ (6.3)

onde KKKt, ´e a matriz de rigidez tangente, δUUU ´e o vetor de deslocamentos incrementais,

δλ ´e um incremento do fator de carga, PPP ´e o vetor de cargas de referˆencia e QQQ ´e o vetor de cargas residuais do modelo. QQQ ´e obtido pela diferen¸ca entre o vetor de cargas externas e o vetor de for¸cas equivalentes `as tens˜oes internas FFFiii.

Utilizando-se o M´etodo dos Elementos Finitos, a matriz KKKt e o vetor FFFiii s˜ao

em duas opera¸c˜oes fundamentais: kkke t = Z Ve BBBTEEE tBBBdVe , (6.4) e F FFe i = Z Ve BBBTσσσdV e (6.5) sendo FFFe

i o vetor de cargas nodais equivalentes ao estado de tens˜ao corrente de cada

elemento, σσσ as tens˜oes no elemento finito, kkke

t a rigidez tangente, BBB a matriz das

rela¸c˜oes deforma¸c˜ao-deslocamento, EEEt a matriz constitutiva tangente e V o volume

do elemento.

No INSANE, o processo incremental iterativo acima descrito ´e implementado no m´etodo execute() da classe StaticEquilibriumPath, derivada da classe Soluiton (Figura 6.3). solution pkg Solution EquilibriumPath StaticEquilibriumPath + execute() : void <<interface>> Step + execute() : void StandardNewtonRaphson + execute() : void ModifiedNewtonRaphson

Figura 6.3: Classes da solu¸c˜ao com a implementa¸c˜ao do m´etodo de Newton-Rapshon.

Conforme mostra a figura 6.3, por meio do mecanismo de composi¸c˜ao, a classe StaticEquilibriumPath´e auxiliada pela classe Step, cujas classes derivadas Stan- dardNewtonRapshon e ModifiedNewtonRapshon implementam o m´etodo execute(), contendo, respectivamente, as vers˜oes padr˜ao e modificada do m´etodo de Newton- Rapshon.

Na figura 6.4 tem-se a sequˆencia de atividades implementada no m´etodo exe- cute() da classe StandardNewtonRapshon. O processo de solu¸c˜ao segue o algoritmo apresentado na figura C.5 do apˆendice C.

No in´ıcio do algoritmo deve-se montar a matriz de rigidez incremental. Portanto, ´e requisitado `a classe Assembler, pelo m´etodo getIncrementalCuu(), a referida ma- triz (Figura 6.4). O m´etodo getIncrementalCuu(), que por sua vez, evoca o m´etodo getIncrementalC() de cada elemento finito do modelo (Figura 6.5). A classe Element ´e auxiliada pela classe ProblemDriver, respons´avel por montar a rigidez de um ele- mento, de acordo com a natureza do problema (Figura 6.6).

Activity1 - Solution: getIncrementalCuu() 2011/09/12

Activity1 - Solution: getIncrementalCuu()

act Assembler StaticEquilibriumPath : StandardNewtonRaphson execute() : FemAssembler getIncrementalCuu()

inicialização dos vetores

cálculo dos vetores de cargas incrementais e constantes

início do processo iterativo O método "execute()" implementa o

algoritmo genérico do método de solução de Newton-Raphson mostrado no apêndice C.

A partida do método começa com a inicialização dos vetores de cargas de referência e cargas residuais

O processo iterativo inicia-se com a obtenção da matriz de rigidez incremental do modelo na classe Assembler

...

Figura 6.4: In´ıcio do processo de execu¸c˜ao do m´etodo de Newton-Rapshon.

Element FemAssembler getIncrementalCuu() : FemAssembler ProblemDriver : SolidMech : Parametric getIncrementalC(Element e) getIncrementalC()

act Activity1 - FemAssembler: getIncrementalCuu()

: PhysicallyNonLinear o método percorre a

lista de elementos para montar a rigidez global com a contribuição de cada elemento

Os elementos recorrem à classe ProblemDriver para informar à classe Assembler a sua matriz de rigidez

O ProblemDriver é responsável por montar as matrizes necessárias ao sistema de equações a ser solucionados conforme o problema que é

representado, no caso, um problema de Mecânica dos Sólidos fisicamente não

linear. O método monta matriz

de rigidez de um elemento solucinoando a integral

...

Observa-se, na figura 6.6, a indica¸c˜ao do processo para integra¸c˜ao num´erica da rigidez dado na equa¸c˜ao 6.4. Neste processo, a matriz constitutiva ´e obtida em cada entidade do tipo degenera¸c˜ao do elemento finito. A degenera¸c˜ao cont´em informa- ¸c˜oes das propriedades geom´etricas do ponto de integra¸c˜ao, do material, do modelo de an´alise e do modelo constitutivo. A degenera¸c˜ao tamb´em cont´em dois mapas, um com as vari´aveis constitutivas correntes, tais como as deforma¸c˜oes, tens˜oes e as vari´aveis de dano, e outro com as vari´aveis constitutivas hist´oricas. Estes mapas guardam dados fundamentais para a an´alise fisicamente n˜ao linear. Assim, para ava- lia¸c˜ao do tensor constitutivo tangente de cada degenera¸c˜ao, esse mapas s˜ao passados como parˆametros do m´etodo mountCt(), da classe “ConstitutiveModel” conforme mostra a figura 6.7.

Activity1 - ProblemDriver: getIncrementalCuu()

act

Element ProblemDriver

getIncrementalC(Element e) getIncrementalC()

Integração Numérica

Retorna a rigidez do elemento Retorna a rigidez do elemento

: PhysicallyNonLinear Retorna a rigidez ao Assembler Element recorre ao ProblemDriver para o cálculo da rigidez pertinente ao problema

Figura 6.6: Integra¸c˜ao da rigidez tangente de um elemento.

Activity1 - Degeneration: getIncrementalCuu()

act ConstitutiveModel Degeneration ProblemDriver getIncrementalC(Element e) Integração Numérica : PhysicallyNonLinear mountCt() mountCt(AnalysisModel,Material,cv,pv) A degeneração acessa o modelo

constitutivo para obter a matriz

constitutiva tangente. O modelo constitutivo necessita de informações do modelo de análise, do material e das variáveis constitutivas

Figura 6.7: Obten¸c˜ao da matriz constitutiva tangente para a integra¸c˜ao da rigidez in- cremental.

Nas figuras 6.4, 6.5, 6.6 e 6.7 tem-se a sequˆencia de atividades da solu¸c˜ao na obten¸c˜ao da matriz de rigidez incremental.

Seguindo no algoritmo da solu¸c˜ao (Figura C.5 do apˆendice C), com a matriz de ri- gidez incremental, pode-se calcular os deslocamentos devidos `as cargas incrementais e `as cargas residuais (Figura 6.8).

Em seguida, (Figura 6.8), com os deslocamentos obtidos, ´e calculado o fator de carga e as vari´aveis do processo de solu¸c˜ao (fator de carga total, cargas incrementais, cargas residuais, e deslocamento nodais) s˜ao atualizadas. Com as vari´aveis atuali- zadas, pode-se verificar a convergˆencia do processo iterativo a partir da condi¸c˜ao de equil´ıbrio entre as for¸cas internas e externas.

Activity2 -Solution: getF() act ProblemDriver Element Assembler Solution execute() getIncrementalCuu() inicialização dos vetores

cálculo dos vetores de cargas incrementais e constantes

getIncrementalC() getIncrementalC(Element e)

Retorna a rigidez do elemento Retorna a rigidez do elemento

Retorna a rigidez do elemento início do processo iterativo

Cálculo dos deslocamentos devido às cargas incrementais e às cargas residuais

Cálculo do fator de carga

Atualização das variáveis da solução

Cálculo das forças inernas: método getFp() de Assembler

getFp() getF() getF(Element e)

O Assembler monta o vetor das forças devido aos esforços internos percorre os elementos do modelo obtendo assim a contribuição de cada

um. O elemento delega ao ProblemDriver a função

da montagem do vetor de forças internas.

Figura 6.8: Atividades de obten¸c˜ao do vetor de for¸cas internas.

A figura 6.8 tamb´em mostra as atividades realizadas para o c´alculo das for¸cas equivalentes `as tens˜oes internas. O procedimento ´e semelhante ao acima descrito,

para a obten¸c˜ao da matriz de rigidez tangente. Para integra¸c˜ao num´erica da equa¸c˜ao 6.1, o estado de tens˜ao corrente ´e obtido em cada degenera¸c˜ao. Para tanto, os mapas, com as vari´aveis hist´oricas, s˜ao passadas como parˆametros do m´etodo mountDua- lInternalVariableVector() da classe “ConstitutiveModel”, conforme mostra a figura 6.9.

Activity2-Degeneration: getF() act

ConstitutiveModel Degeneration

mountDualInternalVariableVector(IVector v) mountDualInternalVariableVector(IVector v, AnalysisModel am, Material mat, cv, pv)

As degenerações, com por intermédio de sua representação, fornecem ao modelo constitutivo informações do modelo de análise, material e variáveis constitutivas para o cálculo de vetor de tensões

O modelo constitutivo recebe os dados necessários ao cálculo das tensões em cada ponto de integração: um vetor (v) com as deformações do ponto de integração, o modelo de análise (am), os dados do material (mat), as variáveis constitutivas (cv) e as variáveis históricas (pv).

Figura 6.9: C´alculo das tens˜oes: rela¸c˜ao entre degenera¸c˜ao e modelo constitutivo.

Documentos relacionados