105
Sandro Martins Gomes ANÁLISE TRIDIMENSIONAL AUTOMÁTICA DE BLOCOS DE COROAMENTO Projeto de Graduação apresentado ao Curso de Engenharia Civil da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientadores: Ricardo Valeriano Alves Mayra Soares Pereira Lima Perlingeiro Rio de Janeiro Março de 2015

Folha de rosto - monografias.poli.ufrj.brmonografias.poli.ufrj.br/monografias/monopoli10014109.pdf · diversos modelos possíveis, permitindo o dimensionamento no estado limite último

Embed Size (px)

Citation preview

Sandro Martins Gomes

ANÁLISE TRIDIMENSIONAL AUTOMÁTICA DE BLOCOS DE COROAMENTO

Projeto de Graduação apresentado ao Curso de

Engenharia Civil da Escola Politécnica,

Universidade Federal do Rio de Janeiro, como

parte dos requisitos necessários à obtenção do

título de Engenheiro.

Orientadores:

Ricardo Valeriano Alves

Mayra Soares Pereira Lima Perlingeiro

Rio de Janeiro

Março de 2015

Sandro Martins Gomes

ANÁLISE TRIDIMENSIONAL AUTOMÁTICA DE BLOCOS DE COROAMENTO

PROJETO DE GRADUAÇÃO SUBMETIDO AO CORPO DOCENTE DO CURSO

DE ENGENHARIA CIVIL DA ESCOLA POLITÉCNICA DA UNIVERSIDADE

FEDERAL DO RIO DE JANEIRO COMO PARTE DOS REQUISITOS

NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE ENGENHEIRO CIVIL.

Examinada por:

RIO DE JANEIRO, RJ - BRASIL

MARÇO DE 2015

Prof. Ricardo Valeriano Alves, D.Sc.

Prof.ª Mayra Soares Pereira Lima Perlingeiro, D.Sc.

Prof. Fernando Celso Uchôa Cavalcanti, M.Sc.

Prof. Sérgio Hampshire de Carvalho Santos, D.Sc.

i

Gomes, Sandro Martins

Análise tridimensional automática de blocos de

coroamento/ Sandro Martins Gomes. – Rio de Janeiro: UFRJ/

Escola Politécnica, 2015.

VI, 95 p.: il.; 29,7 cm

Orientadores: Ricardo Valeriano Alves, Mayra Soares

Pereira Lima Perlingeiro

Projeto de Graduação – UFRJ/ Escola Politécnica/ Curso

de Engenharia Civil, 2015.

Referências Bibliográficas: p. 73-74.

1. Biela e Tirante. 2. Bloco de coroamento. I. Alves,

Ricardo Valeriano et. al. II. Universidade Federal do Rio de

Janeiro, Escola Politécnica, Curso de Engenharia Civil. III.

Análise tridimensional automática de blocos de coroamento

ii

AGRADECIMENTOS

Agradeço,

Em primeiro lugar, a Deus por ter me dado essa (infelizmente) rara

oportunidade de acesso a ensino de alta qualidade. Oportunidade essa que passou

por muito trabalho e dedicação dos meus pais: Cristina e Saulo.

A eles, por terem me proporcionado uma infância e uma juventude que não

poderia imaginar melhor, permitindo assim, que eu alcançasse mais esse objetivo.

A minha “mãe duas vezes", Luzia, por toda paciência e carinho.

A minha noiva, Rafaela Leal Coutinho, pela compreensão de todas as vezes

que não pude lhe dar a atenção merecida por estar me dedicando ao curso que estou

prestes a concluir.

Aos meus colegas de faculdade, André, Filipe, Guilherme, José Carlos, Paulo,

Pedro, Rafael, Ruan, Lucas, Vinícius, Vitor e todos os outros que me incentivaram e

proporcionaram momentos de descontração que também são muito importantes.

Aos meus amigos tupiniquins de Louvain-la-Neuve que não me deixaram

morrer de saudades do Brasil enquanto estive por lá.

Aos ótimos professores que tive nessa Escola, especialmente, aos meus

orientadores Prof. Ricardo e Prof. Mayra, pela atenção e pelo interesse em me ajudar

neste trabalho.

iii

Resumo do Projeto de Graduação apresentado à Escola Politécnica/UFRJ como parte

dos requisitos necessários para obtenção do grau de Engenheiro Civil.

ANÁLISE TRIDIMENSIONAL AUTOMÁTICA DE BLOCOS DE COROAMENTO

Sandro Martins Gomes

Março/2015

Orientadores: Ricardo Valeriano Alves, Mayra Soares Pereira Lima Perlingeiro

Curso: Engenharia Civil

O presente trabalho trata da automatização da modelagem e análise, pelo método das

bielas e tirantes, de blocos de coroamento rígidos apoiados em estacas verticais. Para

tal, um programa foi desenvolvido contemplando as seguintes etapas: cálculo do

estaqueamento, geração e análise de treliça espacial e adequação das treliças para

respeitarem os critérios do método das bielas e tirantes. Todos os modelos que

respeitam os critérios adotados são fornecidos como resultado, com os esforços em

cada elemento já calculados. A energia de deformação de cada modelo é fornecida

para auxiliar o engenheiro na escolha de qual arranjo de forças internas utilizar. Um

exemplo de validação é resolvido manualmente e seus resultados são comparados

com os obtidos pelo programa. Ao final, um estudo de sensibilidade de um bloco a

imperfeições do estaqueamento, utilizando os resultados obtidos pelo programa, é

apresentado.

Palavras chave: Biela e tirante, Bloco de coroamento, Concreto armado

iv

Abstract of Undergraduate Project presented to POLI/UFRJ as a partial fulfillment of

the requirements for the degree of Engineer.

AUTOMATIC TRIDIMENSIONAL ANALYSIS OF PILE CAPS

Sandro Martins Gomes

March/2015

Advisors: Ricardo Valeriano Alves, Mayra Soares Pereira Lima Perlingeiro

Course: Civil Engineering

This work concerns the automation of the modeling and analysis of vertical pile caps by

the Strut-and-Tie Method. The developed program executes the following steps:

analysis of pile groups, conception and analysis of a tridimensional truss and adequacy

of these trusses to respect the rules of the strut-and-tie method. All the models that

respect the chosen prescriptions are shown as results, with the elements forces

calculated. The deformation energy of each model is provided to help the engineer to

choose the internal forces arrangement to use. A validation example is manually solved

and its results are compared with the ones generated by the program. In the end, a

study of a cap sensitivity to geometrical imperfections, using the program results, is

developed.

Keywords: Strut-and-tie, Pile cap, Reinforced concrete

v

SUMÁRIO

1 INTRODUÇÃO .......................................................................................................... 1

1.1 OBJETIVO DO PROJETO ........................................................................................ 2

1.2 ORGANIZAÇÃO DO TRABALHO ............................................................................... 2

2 CÁLCULO DO ESTAQUEAMENTO ........................................................................ 4

2.1 HIPÓTESES BÁSICAS DOS MÉTODOS SIMPLESMENTE ESTÁTICOS ............................. 4

2.2 PRINCIPAIS ABORDAGENS DE CÁLCULO ................................................................. 5

2.2.1 Método de Culmann ...................................................................................... 5

2.2.2 Método de Nökkentved ................................................................................. 6

2.2.3 Método de Schiel ......................................................................................... 13

3 MODELOS DE BIELAS E TIRANTES .................................................................... 17

3.1 REGIÕES DE DESCONTINUIDADE ......................................................................... 17

3.2 MODELAGEM DO COMPORTAMENTO DE REGIÕES DE DESCONTINUIDADE ................ 18

3.3 ELEMENTOS DO MODELO: MODOS DE RUPTURA E DIMENSIONAMENTO ................... 20

3.3.1 Bielas ........................................................................................................... 20

3.3.2 Tirantes ....................................................................................................... 21

3.3.3 Nós e regiões nodais................................................................................... 22

3.4 OTIMIZAÇÃO DO MODELO .................................................................................... 24

4 IMPLEMENTAÇÃO COMPUTACIONAL ................................................................ 26

4.1 MATRIZ DE CONEXÃO DE NÓS ............................................................................. 26

4.2 FLUXOGRAMA GERAL ......................................................................................... 28

4.3 DADOS DE ENTRADA .......................................................................................... 32

4.4 ANÁLISE DO ESTAQUEAMENTO ............................................................................ 33

4.5 DEFINIÇÃO DOS ELEMENTOS ............................................................................... 36

4.6 ELEMENTOS SOBREPOSTOS ............................................................................... 39

4.7 COMBINAÇÕES DE ELEMENTOS ........................................................................... 39

4.8 EQUILÍBRIO DOS NÓS .......................................................................................... 41

4.9 ANÁLISE ESTRUTURAL DA TRELIÇA ...................................................................... 43

4.9.1 Matriz de rigidez da treliça .......................................................................... 43

4.9.2 Condições de contorno ............................................................................... 45

4.9.3 Deslocamentos ............................................................................................ 46

4.9.4 Solicitações axiais ....................................................................................... 46

4.10 MATRIZ DAS SOLICITAÇÕES ................................................................................ 47

4.11 VETOR DE ENERGIA ............................................................................................ 47

4.12 CRUZAMENTO DE BIELAS .................................................................................... 48

vi

4.13 INCLINAÇÃO ENTRE BIELAS E TIRANTES ............................................................... 49

4.14 TIRANTES DIAGONAIS ......................................................................................... 51

5 EXEMPLOS DE APLICAÇÃO ................................................................................ 53

5.1 EXEMPLO DE VALIDAÇÃO .................................................................................... 53

5.1.1 Dados do bloco estudado ........................................................................... 53

5.1.2 Cálculo de estaqueamento ......................................................................... 53

5.1.3 Modelo de bielas e tirantes ......................................................................... 54

5.1.4 Análise pelo programa desenvolvido .......................................................... 59

5.1.5 Comparação dos resultados ....................................................................... 62

5.2 EXEMPLO DOIS .................................................................................................. 63

5.3 COMENTÁRIO SOBRE A VARIAÇÃO DA ENERGIA DE DEFORMAÇÃO .......................... 67

6 CONCLUSÃO E SUGESTÕES DE CONTINUIDADE ............................................ 71

REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................... 73

APÊNDICE 1 – LISTAGEM DO PROGRAMA ................................................................... 75

1

1 INTRODUÇÃO

Qualquer estrutura tem como função básica transmitir os carregamentos que a

solicitam até seus apoios. No caso de edificações ou obras de arte, esses apoios são

as camadas resistentes do solo sobre o qual a construção se situa. Os elementos

responsáveis pela transmissão dessas solicitações para o terreno são as fundações.

Estas são, usualmente, divididas em dois grandes grupos: fundações superficiais e

fundações profundas.

No caso das fundações superficiais, a estrutura se conecta diretamente ao

elemento de fundação, caracterizando-se, geralmente, por pilares apoiados sobre

blocos, sapatas ou radiers.

Para fundações profundas, o caso mais comum se configura por várias estacas

que transmitem para o terreno as cargas vindas de um pilar. Portanto, é necessário

um elemento que solidarize as estacas e distribua essas solicitações entre elas. Esse

componente é chamado de bloco de coroamento.

Além dessa função primordial, o bloco de coroamento funciona, também, como

elemento de compatibilização entre as imperfeições geométricas das fundações e da

estrutura. O processo de execução de estacas implica em uma tolerância de erros que

seriam inaceitáveis em uma estrutura, seja ela de concreto armado, aço ou madeira.

Por isso, mesmo em um pilar apoiado sobre uma estaca, faz-se um bloco de

coroamento.

Preferencialmente, os blocos de coroamento são idealizados para serem

relativamente rígidos, não tendo dimensões preponderantes. Assim, não podem ser

incluídos no grupo de elementos lineares nem no grupo dos elementos planos.

Existem duas maneiras pelas quais se dimensiona um bloco rígido. Na

primeira, é feita a verificação ao cisalhamento e o dimensionamento da armadura à

flexão em uma seção pré-definida (abordagem seccional). Na segunda, é gerada uma

treliça simulando o arranjo de forças internas da peça fissurada. São verificadas,

então, as tensões nos elementos comprimidos e nos nós e definidas as armaduras

para as barras tracionadas, caracterizando um modelo de bielas e tirantes.

Ainda não há um único método definido como ideal. Porém, a modelagem em

bielas e tirantes, além de ser mais racional, vem se mostrando mais confiável para o

dimensionamento deste tipo de bloco quando se compara seus resultados com os

2

obtidos em ensaios, conforme Adebar e Zhou (1996). Por essa razão, o método de

bielas e tirantes foi escolhido para este trabalho.

Uma primeira motivação para a automatização, aqui proposta, é auxiliar o

engenheiro na modelagem e análise, pelo método das bielas e tirantes, de blocos com

configuração mais complexa. Dependendo do estaqueamento, ou da presença de

mais de um pilar, uma abordagem computacional pode ser de grande auxílio.

Além disso, é comum, após finalizado o estaqueamento, verificar o

deslocamento excessivo em alguma estaca. A rotina automática auxiliaria na rapidez

da verificação.

1.1 Objetivo do projeto

O principal objetivo desse trabalho é elaborar um programa que execute a

modelagem e a análise em bielas e tirantes de um bloco de coroamento. Partindo de

dados básicos, como a posição das estacas e as reações de apoio da estrutura, uma

rotina foi elaborada abrangendo várias áreas de conhecimento. O programa executa o

cálculo do estaqueamento, em seguida a análise de uma estrutura reticulada para

então validar um modelo de bielas e tirantes, com auxílio da geometria analítica. O

resultado final são as forças internas na estrutura de concreto armado plastificada para

diversos modelos possíveis, permitindo o dimensionamento no estado limite último

(ELU).

A linguagem de programação escolhida para implementação computacional foi

o FORTRAN. Porém, este trabalho expõe as etapas de cálculo de maneira geral, que

podem ser aplicadas a qualquer processo de automatização.

1.2 Organização do trabalho

Os capítulos dois e três visam revisar e apresentar os conceitos fundamentais

para o dimensionamento de um bloco de coroamento rígido. Calcula-se o

estaqueamento, distribuindo as cargas do pilar entre as estacas e apresenta-se a

teoria da modelagem das forças internas em uma peça fissurada de concreto armado,

por bielas e tirantes.

O capítulo quatro mostra a aplicação das teorias apresentadas na

automatização da modelagem de blocos. Todas as etapas do programa elaborado são

explicitadas.

Ao final, no capítulo cinco, um bloco de coroamento, tomado como exemplo, é

analisado pela teoria clássica e os seus resultados são comparados com os obtidos

3

pelo programa. Além disso, o estudo de sensibilidade a imperfeições geométricas

desse mesmo bloco é, brevemente, exposto.

No Apêndice 1, encontra-se a listagem do programa na linguagem FORTRAN.

4

2 CÁLCULO DO ESTAQUEAMENTO

A distribuição das cargas entre as estacas de um mesmo bloco é chamada

cálculo de estaqueamento. De maneira geral, as solicitações do pilar sobre o bloco

podem ser forças e momentos nas três direções, quando geram esforços nas estacas

que podem ser de compressão, tração, flexão, cortante e torção.

Existem diversos métodos propostos por diferentes autores para efetuar o

cálculo de um estaqueamento. Poulos (1980) agrupou os métodos em três grupos:

Métodos simplesmente estáticos que ignoram a presença do solo e

consideram o conjunto bloco-estacas como um sistema puramente

estrutural;

Métodos que reduzem o conjunto bloco-estaca a um sistema estrutural, mas

levam em conta alguma influência do solo pela determinação do

comprimento de engastamento das estacas;

Métodos que consideram o solo como um meio elástico contínuo e a

interação entre estacas é inteiramente considerada.

Os dois primeiros têm a restrição de considerar a interação entre estacas

apenas pelo bloco de coroamento. O terceiro método permite essa consideração,

também, pelo solo que envolve as estacas.

Os métodos do primeiro grupo, apesar de terem mais considerações

simplificadoras, ainda são largamente utilizados. Segundo Maria (2007), eles são,

geralmente, conservadores conduzindo a esforços máximos maiores, se comparados

com métodos mais sofisticados. Entretanto, dependendo da geometria do

estaqueamento e do perfil do subsolo, os erros podem ser consideráveis.

Como o objetivo principal do presente estudo é a análise dos blocos de

coroamento, utiliza-se um dos métodos do primeiro grupo para estudo e

desenvolvimento no programa. Ressalta-se que é um método de simples

implementação computacional e de resultados conservadores.

2.1 Hipóteses básicas dos métodos simplesmente estáticos

Os métodos simplesmente estáticos apresentam as seguintes hipóteses

básicas:

5

O bloco de coroamento é infinitamente rígido. Esta simplificação é aceitável

se os deslocamentos das estacas forem muito maiores que as deformações

do bloco. Na prática, a altura do bloco deve ser considerável se comparada

com as dimensões em planta;

As estacas são consideradas como barras birotuladas. Há vários fatores

como tipo de solo, esbeltez da estaca, distância entre estacas e forças

horizontais que podem fazer com que essa consideração não retrate bem o

comportamento estrutural. Entretanto, para os casos correntes, ela é

aceitável e muito conveniente para aplicação da maioria dos métodos de

cálculo. Essa simplificação faz com que as estacas estejam solicitadas

apenas por esforços axiais;

Um comportamento elástico linear é assumido e a força transmitida para

cada estaca é proporcional ao deslocamento do seu topo;

Não se considera a contribuição do bloco agindo como fundação direta.

A primeira hipótese se adequa bem aos blocos para os quais, normalmente, se

utilizam o método de bielas e tirantes. Para blocos flexíveis, apesar de não existir

impedimento à utilização deste último, o dimensionamento por esforços seccionais é

mais comumente aplicado.

A segunda simplificação impede o surgimento de momento no topo das

estacas, evitando a utilização de mais de uma força por estaca para formar um binário

representando o momento.

2.2 Principais abordagens de cálculo

2.2.1 Método de Culmann

A primeira forma de cálculo, desenvolvida ainda no século XIX, soluciona

problemas planos de forma gráfica, evitando fórmulas e sistemas de equações, já que

na época não estavam disponíveis calculadoras. Essa abordagem ficou conhecida

como método de Culmann, mas caiu em desuso.

A Figura 2.1 ilustra a aplicação do método de Culmann para um bloco plano de

quatro estacas. Como se pode observar, o equilíbrio estático é representado de forma

gráfica.

6

Figura 2.1 - Método gráfico de Culman (Adaptado de Poulos (1980)).

2.2.2 Método de Nökkentved

Posteriormente, expressões práticas foram desenvolvidas para a resolução do

sistema estático e foram aplicadas, também, em problemas tridimensionais. Para cada

componente das solicitações, é calculada a distribuição das forças pelas estacas e ao

final, as parcelas são somadas. A solução por tais fórmulas ficou conhecida como

método de Nökkentved.

Por tradição, no cálculo de estaqueamentos, o eixo vertical é adotado como

positivo para baixo. Neste método, o eixo vertical será chamado de z, respeitando a

convenção utilizada por Alves (2014).

7

2.2.2.1 Distribuição das forças verticais

Como o bloco é considerado infinitamente rígido, para uma carga vertical

aplicada no centro elástico (calculado no item 2.2.2.5), o deslocamento vertical do topo

de todas as estacas tem que ser igual. O equilíbrio vertical pode ser expresso pela

equação que segue, com as grandezas ilustradas na Figura 2.2:

V = kzi .z

n

i=1

2.1

Onde:

V: força vertical aplicada ao bloco;

kzi: a rigidez vertical de cada estaca;

z: o deslocamento de corpo rígido do bloco na vertical;

n: número de estacas que compões o bloco.

Figura 2.2 - Deslocamento pela carga vertical (Adaptado de Alves (2014)).

A componente vertical, Fzi, da força axial em cada estaca é dada por:

Fzi = - kzi .z = - kzi.V

∑ kzini=1

(2.2)

No caso de estacas inclinadas, seu impedimento ao movimento vertical será

reduzido. A Figura 2.3 ilustra a decomposição da rigidez axial para se obter a rigidez

vertical de uma estaca inclinada. A expressão (2.3) pode ser usada como regra geral

para cálculo dessa rigidez.

kz = E .A

L .cos2 α (2.3)

sendo:

E: módulo de elasticidade do material;

A: área da seção transversal da estaca;

L: comprimento da estaca;

: menor ângulo que o eixo da estaca faz com a direção vertical.

8

Figura 2.3 - Rigidez vertical de estaca inclinada (Retirada de Alves (2014)).

Finalmente, o esforço axial em cada estaca (Ni), provocado por uma força vertical, é

calculado pela expressão (2.4), com valor positivo para compressão:

Ni = kzi . V

cos i . ∑ kzini=1

(2.4)

2.2.2.2 Distribuição das forças horizontais

Como as estacas são consideradas birotuladas (sem contenção lateral do

solo), forças horizontais só podem ser absorvidas por estacas inclinadas.

A rigidez, em uma direção horizontal (x, por exemplo), de uma estaca é

definida pela expressão (2.5), sendo x, o ângulo de inclinação projetado no plano x-z:

kxi = E.A

L. sen2 xi (2.5)

A Figura 2.4 ilustra a decomposição da rigidez de uma estaca inclinada para

obter sua rigidez a uma força horizontal.

9

Figura 2.4 - Rigidez horizontal de estaca inclinada (Retirada de Alves (2014)).

Por equilíbrio das forças horizontais no bloco:

Hx = kxi .x

n

i=1

(2.6)

Fxi = - kxi .x =- kxi .Hx

∑ kx(2.7)

onde:

Hx: força horizontal aplicada ao bloco na direção x,

kxi: rigidez na direção horizontal de cada estaca (expressão 2.5),

x: deslocamento de corpo rígido do bloco na direção x e

Fxi: componente da reação de cada estaca, também nessa direção.

A força axial de cada estaca, provocada por uma força horizontal, é então:

Ni = ± kxi . Hx

sen(xi). ∑ kxini=1

(2.8)

O sentido da força de cada estaca é facilmente obtido ao se observar o sentido

da força aplicada e a configuração do estaqueamento nos dois planos verticais

adotados (x-z e y-z). Um exemplo pode ser visto na Figura 2.5, na qual dada uma

força horizontal com sentido da esquerda pra direita, as estacas da direita trabalham a

compressão e as estacas da esquerda a tração.

Deve ser lembrado que, devido às simplificações adotadas, o estaqueamento

só pode absorver forças horizontais passando pelo centro de rotação. Este pode ser

definido pelo baricentro do prolongamento dos eixos das estacas (caso existam várias

estacas inclinadas, um eixo representando um grupo é tomado, como ilustrado na

10

Figura 2.5). Por essa simplificação, a força deve ser transferida do topo do bloco para

esse centro causando um momento devido a essa translação da força.

Figura 2.5 - Distribuição das forças horizontais (Adaptado de Alves (2014)).

2.2.2.3 Distribuição das forças para equilíbrio de momentos

Caso o bloco seja solicitado por momentos fletores, causando sua rotação,

verifica-se a contribuição das reações das estacas no equilíbrio, conforme ilustra a

Figura 2.6. O sentido de cada reação pode ser facilmente observado. Ressalta-se que

as estacas alinhadas com o centro de rotação não resistem ao momento aplicado.

O equilíbrio no centro de rotação pode ser expresso pela seguinte equação

(para direção y, por exemplo):

My = Ni .rxi

n

i=1

= ki .y .rxi2

n

i=1

(2.9)

Ni = ± ki . My . rxi

∑ (ki . rxi2)n

i=1 (2.10)

sendo:

My: momento solicitante na direção y.

y: Rotação de corpo rígido do bloco na direção y.

ki: rigidez axial da estaca i.

11

rxi: a distância do eixo da estaca i ao eixo, de mesma direção, que foi tomado como

referência para determinação do centro de rotação. Essa distância é tomada, sempre,

perpendicular aos eixos;

Figura 2.6 - Distribuição das forças de equilíbrio dos momentos (Adaptado de Alves (2014)).

2.2.2.4 Esforços axiais

Ao final, somam-se as forças axiais obtidas pelas expressões (2.4), (2.8) e

(2.10) para cada estaca e cada direção. Como os referenciais podem ser adaptados

para cada caso, os sentidos das forças de reação obtidas devem ser observados para

cada solicitação e cada plano.

Ni = kzi.V

cos i .∑ kzi ±

kxi.Hx

sen(xi).∑ kxi ±

kyi.Hy

sen(yi).∑ kyi ±

ki.Mx.ryi

∑ (ki.ryi2 )

± ki.My.rxi

∑ (ki.rxi2 )

(2.11)

2.2.2.5 Centro de rigidez e eixos principais

Para estaqueamentos não simétricos, é preciso antes da aplicação das

expressões vistas anteriormente, calcular a posição do centro de rigidez do

estaqueamento e as direções dos eixos principais. E em seguida, transladar e rodar o

12

sistema de coordenadas, sempre considerando a mudança nos momentos provocada

por isso.

A Figura 2.7 ilustra a translação do sistema de coordenadas iniciais (x0,y0) para

o centro de rigidez (x,y) e a rotação dos eixos para coincidirem com os eixos principais

(x,y) do estaqueamento.

Figura 2.7 - Translação e rotação do sistema de coordenadas (Alves (2014)).

A localização do centro de rigidez do estaqueamento, é expressa, em função

de um sistema de coordenadas inicial (x0,y0), por:

x0= ∑ (ki.x0i)∑ ki

ey0= ∑ (ki.y0i)

∑ ki(2.12)

onde:

x0i e y0i: coordenadas de cada estaca em relação ao sistema original;

x0 e y0: coordenadas do centro de rigidez em relação ao sistema original.

Procede-se, então, à translação das coordenadas com os respectivos

momentos, utilizando as expressões a seguir:

xi = x0i - x0 e yi = y0i - y0 (2.13)

Mx=Mx0-V.y0 e My=My0

+V.x0(2.14)

sendo:

xi e yi: coordenadas de cada estaca no sistema com origem no centro de rigidez;

Mx0 e My0

: momentos no sistema de coordenadas original;

Mx e My: são os momentos no sistema de coordenadas com origem no centro de

rigidez.

13

Após a translação dos eixos iniciais para o centro de rigidez de estaqueamento,

faz-se a rotação para as direções principais:

xi = xi.cos() + yi.sen() e yi = - xi.sen() + yi.cos() (2.15)

Mx = Mx.cos() + My.sen() e My = - Mx.sen() + My.cos() (2.16)

com :

= 1

2tg-1 2∑ ki. xi. yi

∑ ki. xi2 - ∑ ki. yi

2 (2.17)

sendo:

: ângulo de rotação entre as direções dos eixos originais e as direções dos eixos

principais;

x e y: coordenadas de cada estaca em relação ao sistema de coordenadas final, com

origem no centro de rigidez e eixos nas direções principais;

Mx e My: são os momentos solicitantes em relação aos eixos do sistema de

coordenadas final.

2.2.3 Método de Schiel

Com o desenvolvimento de programas computacionais, a formulação matricial,

desenvolvida para a análise de blocos com estaqueamentos complexos, pôde ser

desenvolvida. O método de Schiel, como é conhecido, propõe que se ignore o solo e

considere a estaca birotulada, simplificando a sua formulação, pois o número de

incógnitas reduz drasticamente.

Para esse método, seguindo as convenções propostas por Velloso e Lopes,

(2010) o sistema de coordenadas terá o eixo x como vertical. O sentido positivo

continua sendo para baixo.

As coordenadas do centro do topo de cada estaca são denominadas de xi, yi e

zi. Os ângulos que as estacas fazem com os eixos do sistema de coordenadas são

chamados de i, i e i e estão ilustrados na Figura 2.8.

14

Figura 2.8 - Sistema de coordenadas usual para aplicação do método de Schiel (Adaptado de Velloso e Lopes (2010)).

Inicialmente, é formada uma matriz com os dados geométricos do

estaqueamento chamada matriz das estacas. As informações de um vetor com origem

no topo de cada estaca e que seguem em direção à ponta da mesma são organizados

conforme a seguinte matriz:

P=

px1 px2 … pxnpy1 py2 … pynpz1 pz2 … pznpa1 pa2 … panpb1 pb2 … pbnpc1 pc2 … pcn

(2.17)

onde:

px = cos (componente segundo x);

py = cos (componente segundo y);

pz = cos (componente segundo z);

pa = y pz – z py (momento em torno do eixo x);

pb = z px – x pz (momento em torno do eixo y);

pc = x py – y px (momento em torno do eixo z);

n: número de estacas.

As resultantes do carregamento, R, são escritas no vetor carregamento,

sempre respeitando as direções definidas dos eixos:

15

R=

Rx

Ry

Rz

Ra

Rb

Rc

(2.18)

onde:

Rx: força solicitante na direção x;

Ry: força solicitante na direção y;

Rz: força solicitante na direção z;

Ra: momento solicitante em torno do eixo x;

Rb: momento solicitante em torno do eixo y;

Rc: momento solicitante em torno do eixo z.

Em seguida, é necessário calcular a matriz de rigidez do estaqueamento para

obter o deslocamento do topo de cada estaca. O primeiro passo para isso é o cálculo

da rigidez axial de cada estaca, dada por:

ki = Ei.Ai

Li(2.19)

Em seguida, define-se uma matriz diagonal com essas rijezas:

D =

k1 0 0 … 00 k2 0 … 0.. .. .. … .... .. .. … ..

0 0 0 … kn

(2.20)

A matriz de rigidez do estaqueamento (K) é obtida pela seguinte

transformação:

K = P.D.PT (2.21)

Finalmente, o vetor com os deslocamentos de corpo rígido do bloco (V) e o

vetor com os esforços normais nas estacas (N) são obtidos pelas expressões (2.22) e

(2.23):

V = K-1.R (2.22)

N = D.PT.V (2.23)

Substituindo (2.22) em (2.23), tem-se:

N = D.PT.K-1.R (2.24)

16

O vetor N fica com a aparência da expressão (2.25), com os esforços de

compressão com sinal positivo e os esforços de tração com sinal negativo:

N=

N1

N2⋮

Nn

(2.25)

Como citado anteriormente, a formulação matricial se torna especialmente

vantajosa para casos de estaqueamento complexos. Por exemplo, se existirem

estacas inclinadas nas duas direções, e solicitações com componentes em todas as

direções, inclusive com momentos de torção do pilar, a resolução pelas fórmulas de

Nökkentved se tornaria muito trabalhosa.

17

3 MODELOS DE BIELAS E TIRANTES

Por muito tempo, o dimensionamento em certas regiões de elementos

estruturais de concreto armado apresentava certa imprecisão. Isso motivou os autores

Schlaich et. al. (1987) a organizar e apresentar um método mais racional de

dimensionamento, com foco nessas regiões estruturais denominadas regiões de

descontinuidades.

O método desenvolvido, dos modelos de bielas e tirantes, é uma generalização

e adaptação da analogia da treliça clássica desenvolvido por Ritter (1889) e Mörsch

(1912). A ideia é simular o arranjo de forças internas em uma peça de concreto

armado já fissurada e plastificada por bielas (elementos comprimidos da treliça) e

tirantes (elementos tracionados da treliça) ligados por nós.

O dimensionamento por modelos de bielas e tirantes é considerado, hoje, como

o método mais adequado quando se trata de regiões de descontinuidade (definidas no

item 3.1), podendo ser aplicado em qualquer parte de um elemento estrutural de

concreto. As prescrições para sua aplicação estão presentes nas principais normas de

concreto armado, incluindo a norma brasileira ABNT NBR6118:2014 e a norma

americana ACI 318-14 .

3.1 Regiões de descontinuidade

Uma região de descontinuidade em uma estrutura de concreto armado é

qualquer parte de um elemento, ou mesmo um elemento estrutural inteiro, onde a

hipótese de Bernoulli de distribuição linear de deformações na seção não se aplica.

Essas zonas são também chamadas de regiões D. As regiões onde a hipótese de

Bernoulli, das seções planas, é válida são denominadas de regiões B.

A divisão da estrutura em dois tipos de regiões pode ser feita com auxílio do

princípio de Saint Venant, no qual um sistema de forças aplicado em uma dada

superfície de um corpo elástico é substituído por outro estaticamente equivalente.

Assim, descontinuidades de tensões no corpo só podem ocorrer em regiões próximas

à força aplicada. Em pontos cuja distância ao ponto de aplicação da força seja de

ordem de grandeza maior que as dimensões da superfície, a influência da distribuição

das forças é desprezível.

Na prática, sugere-se que a partir de uma distância do ponto de

descontinuidade igual à altura do elemento, pode-se aplicar a hipótese de Bernoulli. A

18

Figura 3.1 mostra, em um pórtico, exemplos de regiões de descontinuidade,

representadas por hachuras.

Exemplos clássicos de regiões D são: zonas de introdução de carga

concentrada, regiões de variação brusca de seção, vigas-parede, consolos, nós de

pórtico, aberturas, sapatas e blocos de coroamento.

Figura 3.1 - Exemplos de regiões de descontinuidade (Adaptado de Santos (2014)).

3.2 Modelagem do comportamento de regiões de descontinuidade

Para qualquer estrutura de concreto armado solicitada por um conjunto de

ações, o comportamento antes da ruptura pode ser dividido em três fases (ou

estádios).

No primeiro estádio, ainda não ocorreram fissuras no concreto e este apresenta

um campo de tensões elásticas. Nesse caso, para as regiões B podem ser usadas as

fórmulas de Resistência dos Materiais em função da área e do momento de inércia da

seção homogênea. Para as regiões D, uma análise elástica ou por elementos finitos

pode ser empregada para obtenção das tensões no ponto desejado.

19

Quando a resistência à tração do concreto é ultrapassada pelas tensões

solicitantes, as fissuras interrompem os campos de tensões e o arranjo das forças

internas muda drasticamente. O comportamento da compressão no concreto ainda

pode ser considerado como elástico, mas, as trações são totalmente absorvidas pelo

aço. Essa configuração corresponde ao chamado Estádio II.

Se as solicitações aumentarem ainda mais, o concreto começa a se plastificar

e a distribuição das tensões de compressão é alterada até atingir a capacidade

máxima da zona de concreto comprimida ou o escoamento do aço da armadura. Esse

é o Estádio III e a obtenção das forças internas pode ser feita por um modelo de treliça

contínua para regiões B ou por um modelo de treliça discreta (bielas e tirantes) para

uma região D. Nesses modelos, os campos de compressão são concentrados e

representados por bielas. Já as armaduras, que resistem às forças de tração onde o

concreto já fissurou, são representadas por tirantes.

Qualquer modelo de bielas e tirantes, concebido adequadamente, satisfaz o

teorema do limite inferior da plasticidade, que pode ser descrito segundo Santos

(2014): “Um campo de tensões (forças) que satisfaz às condições de equilíbrio e não

viola o critério de escoamento em nenhum ponto, se constitui em uma estimativa do

limite inferior da capacidade resistente de elementos estruturais constituídos de

materiais elastoplásticos perfeitos”.

A Figura 3.2 ilustra o campo de tensões de um elemento estrutural

representado por um modelo de bielas e tirantes. Apresentam-se as trajetórias de

tensões quando da aplicação da carga em um ponto da estrutura (a). Em seguida,

idealiza-se um modelo complexo de bielas e tirantes (b), para em seguida, definir o

modelo representativo que será analisado (c).

Figura 3.2 – Comportamento típico de bielas e tirantes.

A treliça adotada como modelo deve, primeiramente, equilibrar as forças

externas. Além disso, o sistema estrutural interno deve ser escolhido de tal forma que

(a) (b) (c)

20

represente o mais próximo possível, o campo de tensões elásticas. Isso ajuda a evitar

que os limites de deformações de fissuração sejam atingidos antes da plastificação.

Por isso, muitas vezes, antes de se elaborar um modelo de bielas e tirantes de uma

estrutura, é feita uma análise por elementos finitos para definir o “caminho natural das

cargas”.

Além disso, outras recomendações devem ser seguidas para modelagem em

bielas e tirantes e que são importantes no Capítulo 4,Erro! Fonte de referência não

encontrada. para automatização da escolha dos modelos adequados, que são:

A impossibilidade do cruzamento de bielas fora dos nós. Isso leva a tensões

na região do cruzamento não bem representadas pelo modelo. Ao contrário,

uma biela pode ser cruzada por um tirante e também não há problemas se

isto ocorrer com dois tirantes.

A inclinação entre as bielas e tirantes é limitada para não provocar

problemas de compatibilidade de deslocamentos entre regiões próximas

nem abertura excessiva de fissuras. Os limites variam segundo cada autor

ou norma consultada. A NBR6118:2014 define um ângulo de inclinação das

bielas cuja tangente esteja entre 0,57 e 2,0. Já a ACI 318-14 prescreve que

esse ângulo entre bielas e tirantes não seja inferior a 25°.

Outra importante consideração é o cuidado com o grau de hiperestaticidade

da treliça usada no modelo. Caso esta não seja isostática, a distribuição das

forças entre os elementos dependerá das propriedades físicas (módulo de

elasticidade) e geométricas de cada um (área da seção transversal e

comprimento). Essas características das bielas e tirantes deveriam ser

utilizadas na análise, aumentando muito o seu grau de complexidade. Além

disso, esse tipo de análise requer um processo iterativo para definição das

dimensões exatas dos nós, conforme relatam Chantelot e Mathern (2010).

Por essa razão, é aconselhável (mas não teoricamente necessário) que o

modelo de bielas e tirantes seja isostático.

3.3 Elementos do modelo: modos de ruptura e dimensionamento

3.3.1 Bielas

As bielas representam a concentração do campo de tensões de compressão e,

apesar de serem representadas por um prisma, sua seção transversal raramente é

constante. Geralmente, os campos de tensões de compressão no concreto tendem a

se espraiar ao se distanciar dos nós, como ilustrado na Figura 3.2b. Esse

21

espraiamento causa tensões de tração transversais à direção da biela e pode provocar

uma ruptura antes do esmagamento.

Para considerar esse perda de resistência por fissuração paralela à biela, a

tensão resistente deve ser reduzida se houver tração transversal. A NBR6118:2014

define, em seu item 22.1, a resistência de compressão a ser utilizada na verificação

pelo Método das Bielas e Tirantes:

Regiões não fissuradas, com tensões de compressão transversal ou sem

tensões de tração transversal e em nós com barras comprimidas:

fcd1 = 0,85 . v2 . fcd (3.1)

Regiões fissuradas, com tensões de tração transversal e em regiões nodais

onde confluem dois ou mais tirantes:

fcd2 = 0,60 . v2 . fcd (3.2)

Regiões nodais onde conflui um tirante tracionado:

fcd3 = 0,72 . v2 . fcd (3.3)

onde:

v2 = 1 - fck

250(com fck expresso em MPa);

fcd: tensão resistente de compressão de cálculo do concreto.

3.3.2 Tirantes

Os tirantes representam as armaduras passivas ou ativas. Esses devem ter

sempre a mesma direção e estar, aproximadamente, no centro geométrico das barras

de aço da armadura simulada.

O dimensionamento é feito diretamente por:

As = FSd

fyd(3.4)

onde:

As é a soma das áreas das seções transversais das barras que compõem a armadura;

FSd é o valor de cálculo da força de tração no tirante obtida no modelo;

fyd é a tensão de escoamento de cálculo do aço.

22

3.3.3 Nós e regiões nodais

Os pontos de encontros de bielas e tirantes são chamados de nós, e a região

de concreto que o rodeia é chamada de região nodal. Os nós são modelados como

ligações pontuais (nós de treliça), que representam variações de direção das forças

internas na estrutura que ocorrem por um determinado comprimento e com uma

determinada largura.

Os tipos de nós são comumente referidos pelos elementos que neles se ligam

por C para bielas e T para tirantes. Por exemplo, um nó onde confluem duas bielas e

que é equilibrado por um tirante é classificado como CCT.

O dimensionamento de regiões nodais passa por três etapas sugeridas por

Schlaich (1987):

Etapa 1 - Adaptação da geometria da região nodal:

A geometria da região nodal varia conforme os elementos se interceptam neste

ponto. A equação 3.5 pode ser empregada, de maneira geral, para obtenção das

dimensões em regiões nodais de modelos planos com as dimensões ilustradas na

Figura 3.3:

w2 = w1 cosθ + w3 senθ (3.5)

Figura 3.3 – Exemplo da região nodal de um nó CCC.

23

Muitas vezes, é conveniente dividir uma região nodal em duas, como

exemplificado na Figura 3.4. A dimensão da biela de ligação horizontal pode ser

ajustada para se alcançar a tensão de compressão resistente na mesma.

Figura 3.4 - Exemplo de uma região nodal de um nó CCC dividida.

Quando um tirante intercepta o nó, sua componente na região nodal equivale a

de uma biela entrando na face oposta, como ilustrado na Figura 3.5:

Figura 3.5 – Exemplo da região nodal de um nó CCT.

24

A geometria de regiões nodais em modelos espaciais é mais complexa e pouco

tratada na literatura e nas normas até agora. Como a verificação das tensões no

modelo não é o foco deste trabalho, apenas expõe-se a geometria das regiões nodais

em modelos planos. Uma abordagem por faces poligonais pode ser vista em Chantelot

(2010) e outra por faces elípticas em Alves (2014).

Etapa 2 – Verificação das tensões nas faces da região nodal:

Geralmente, a verificação das tensões na região nodal é crítica. Uma zona de

descontinuidade pode ser considerada segura se as tensões em todos os nós

estiverem abaixo dos limites estabelecidos no item 3.3.1 e os tirantes armados

adequadamente.

Etapa 3 – Garantir a ancoragem dos tirantes nos nós:

As ancoragens devem ser adotadas como as prescritas pela norma utilizada e

podem ser realizadas por aderência, gancho ou dispositivos mecânicos. A ACI 318-14,

no seu anexo A, sugere que ancoragem da armadura comece a partir de uma seção

crítica definida pela região nodal estendida, como ilustrada na Figura 3.5.

3.4 Otimização do modelo

Não existe um único modelo correto de bielas e tirantes, bem como há vários

arranjos do sistema de forças internas de um elemento estrutural. A posição dos

tirantes deve ser definida para facilitar a construção.

Um modelo pode ser considerado mais eficiente quando as cargas usarem um

caminho que provocar menores forças internas e deformações. Considerando a

energia mínima de deformação, conclui-se que a escolha do modelo “ótimo” pode ser

resumida pela seguinte expressão:

mínimo Filii (3.6)

onde:

Fi é a força na biela ou tirante i;

li é o comprimento do elemento i;

i é a deformação axial do elemento i.

Como o aço é muito mais deformável que o concreto (Es/Ec ≈ 7), a contribuição

das bielas é, geralmente, omitida. Além disso, considerando que todos os tirantes

alcançam a sua resistência de cálculo (mesma tensão), a deformação axial também é

a mesma para todos, o que conduz a expressão 3.7:

25

mínimo Ftilti (3.7)

onde:

Fti é a força no tirante i;

lti é o comprimento do tirante i.

A Figura 3.6 ilustra duas maneiras distintas de modelar, por bielas e tirantes, as

forças internas em uma viga parede. Fica claro que o modelo (a) gera menos energia

de deformação que o modelo (b).

Figura 3.6 - (a) Modelo "adequado"; (b) Modelo não “adequado”. (Adaptado de Wight (2012))

(a) (b)

26

4 IMPLEMENTAÇÃO COMPUTACIONAL

A definição de um modelo estrutural em bielas e tirantes é um processo que

requer sensibilidade e experiência do engenheiro. Dada uma região de

descontinuidade com certo conjunto de cargas externas, é necessário determinar um

arranjo de elementos de treliça posicionados de forma a representar as principais

trajetórias de forças internas. Esse arranjo deve ser inspirado no campo de tensões,

obtido, por exemplo, em uma análise elástica. Além disso, os elementos tracionados

devem estar concebidos de forma a permitir uma disposição viável das armaduras.

Essa compatibilização de condições faz com que o processo não seja de fácil

automatização, ainda mais quando se trata de uma estrutura com dimensões

consideráveis nas três direções. No caso de blocos de coroamento, é possível assumir

que todos os nós do modelo estão situados em dois planos: no fundo e no topo do

bloco.

Para blocos suficientemente rígidos, nos quais a biela de compressão possa

chegar à estaca mais distante sem ter que ser suspensa, os nós do modelo são

prontamente definidos. No plano do fundo do bloco, tem-se para cada estaca, sempre,

um nó. No plano de topo do bloco, são considerados tantos nós quantos necessários

para decompor os esforços seccionais da base do pilar em forças verticais.

4.1 Matriz de conexão de nós

A automatização da definição dos nós do modelo de treliça é baseada na, aqui

denominada, matriz de conexão de nós. Nesta matriz, são previstas todas as possíveis

ligações, representadas pelas bielas e tirantes, geralmente adotadas para blocos de

coroamento. Essa matriz de conexões de nós é a base para concepção da

metodologia de automatização proposta e se encontra ilustrada na Figura 4.1.

Essas conexões são divididas em três grupos: ligações entre nós da base,

ligações entre nós do topo e ligação entre planos. A princípio, não há restrições para

os elementos dos dois primeiros grupos e o número de conexões possíveis para cada

um é a combinação simples do número de nós no plano de dois em dois. Para ilustrar,

a combinação entre ligações dos nós do topo do bloco é discretizada em seguida, e os

valores finais podem ser observados na matriz:

n° de conexões = NCC + NCT + NET !

NCC + NCT + NET - 2 ! . 2! (4.1a)

27

n° de conexões = NCC + NCT + NET . NCC + NCT + NET - 1

2(4.1b)

n° de conexões = NCC.(NCC-1)

2 + NCC.NCT + NCC.NET +

NCT.(NCT-1)

2

+ NCT.NET + NET.(NET-1)

2 (4.1c)

onde:

NCC: nós de introdução de cargas de compressão;

NCT: nó de introdução de carga de tração;

NET: projeção dos nós de estacas tracionadas. A força de cada estaca tracionada

deve ser suspensa até o topo do bloco, necessitando assim, de um nó correspondente

neste plano.

Uma discretização análoga pode ser feita para os nós da base do bloco.

n° de conexões = NEC.(NEC-1)

2 + NEC.NET + NEC.NCT +

NET.(NET-1)

2

+ NET.NCT + NCT.(NCT-1)

2 (4.2)

onde:

NEC: nós de estacas comprimidas;

NET: nós de estacas tracionadas;

NCT: projeção dos nós de carga de tração. Cada carga de tração aplicada deve ser

levada até o fundo do bloco, necessitando assim, de um nó correspondente neste

plano.

As conexões entre planos requerem um pouco mais de atenção e serão

ilustradas a partir dos nós do plano superior do bloco. Os nós de carga de compressão

podem se conectar a qualquer nó da base, resultando nas seguintes possibilidades:

n° de conexões = NCC . (NEC + NET + NCT) (4.3a)

n° de conexões = NCC . NEC + NCC . NET + NCC . NCT (4.3a)

Teoricamente, não existem impedimentos em se definir um modelo de bielas e

tirantes de um bloco de coroamento com tirantes não verticais entre planos. Porém,

isso dificultaria muito a colocação da armadura. Por esse motivo, sempre que existe

uma carga externa de tração no bloco, tende-se a transferir esta carga para a face

28

oposta por tirantes verticais, que corresponderiam a estribos ou a continuação das

armaduras longitudinais dos pilares ou estacas.

Por esse motivo, cada nó de carga de tração é ligado obrigatoriamente por um

elemento a um nó projetado no fundo. Além disso, as cargas de tração podem ser

conectadas a estacas comprimidas, já que dependendo do arranjo de forças do

modelo, esse elemento de ligação pode vir a ser uma biela. Portanto, o numero de

conexões possíveis para um carga de tração é o seguinte:

n° de conexões = NCT + NCT . NEC (4.4)

Para estacas tracionadas, a mesma transferência de carga, por um tirante

obrigatório, é executada. Os nós projetados no topo, além das estacas tracionadas

correspondentes, podem se ligar, também, às estacas comprimidas e aos nós de

cargas de tração projetados no fundo do bloco. O número de ligações para esses nós

fica da seguinte maneira:

n° de conexões = NET + NET . NEC + NET . NCT (4.5)

Todas as conexões por elementos descritas até aqui, nas expressões (4.1) a

(4.5), estão ilustradas na matriz de conexões da Figura 4.1. As combinações entre

elas servem de base para a automatização proposta.

Além disso, o modelo gerado deve ser verificado para atender a algumas

restrições dos modelos de bielas e tirantes e ao equilíbrio da treliça deve ser

garantido.

4.2 Fluxograma geral

A automatização visou permitir que vários modelos de treliças fossem formados

a partir dos tirantes obrigatórios, variando os elementos opcionais. Verificações

geométricas são feitas para todos os modelos gerados, sendo analisados somente

aqueles que atenderem a tais condições. Os modelos são ainda verificados para

certas condições que dependem do elemento ser biela ou tirante. Os modelos que

passarem por todas as verificações podem ser considerados como arranjos

consistentes de bielas e tirantes e os resultados são apresentados.

O fluxograma geral do programa se encontra nas Figuras 4.2 e 4.3, sendo as

etapas explicadas nos itens que seguem.

29

Figura 4.1 - Matriz de conexão de nós

1...

NC

C1

...N

CT

1...

NET

1...

NEC

1...

NET

1...

NC

T

32

22

1

NC

C*N

CT

NC

C*N

ETN

CC

*NEC

NC

C*N

ETN

CC

*NC

T...

NC

C

2só

con

ecta

r se

esta

ca tr

acio

nada

11

NC

T*N

ETN

CT*

NEC

coin

cidir

com

car

ga d

eN

CT

...

traçã

o no

topo

NC

T

21

21

NET

*NEC

NET

NET

*NC

T... NET

31

NEC

*NET

NEC

*NC

T... NEC

1 - T

IRAN

TES

OBR

IGAT

ÓR

IOS

1

EXC

LUIR

ELE

MEN

TOS

SOBR

EPO

STO

SN

ET*N

CT

...

2 - B

IELA

S O

PCIO

NAI

SLI

MIT

AR Â

NG

ULO

EN

TRE

BIEL

AS E

TIR

ANTE

SN

ET

IMPO

SSIB

ILIT

AR B

IELA

S SE

CR

UZA

ND

O F

OR

A D

OS

S1

3 - L

IGAÇ

ÕES

OPC

ION

AIS

NO

S PL

ANO

S... NC

T

IMPO

SSIB

ILIT

AR N

ÓS

CO

M T

OD

OS

OS

ELEM

ENTO

S C

OPL

ANAR

ES

S PR

OJE

TAD

OS

NO

TO

PO

NÓS NO TOPO DO BLOCO

CARGAS DE COMPRESSÃO

CARGAS DE TRAÇÃO

NÓS PROJETADOS

NO TOPO

NÓS NO FUNDO DO BLOCO

ESTACAS COMPRIMIDAS

ESTACAS TRACIONADAS

NÓS PROJETADOS

NO FUNDO

NC

T(N

CT-

1)/2

S N

O T

OPO

DO

BLO

CO

S N

O F

UN

DO

DO

BLO

CO

CAR

GAS

DE

CO

MPR

ESSÃ

OC

ARG

AS D

E TR

AÇÃO

S PR

OJE

TAD

OS

NO

FU

ND

OES

TAC

AS T

RAC

ION

ADAS

ESTA

CAS

CO

MPR

IMID

AS

NC

C(N

CC

-1)/2

NC

T(N

CT-

1)/2

NET

(NET

-1)/2

NEC

(NEC

-1)/2

NET

(NET

-1)/2

30

Figura 4.2 - Fluxograma geral do programa - parte 1

31

Figura 4.3 - Fluxograma geral do programa - parte 2

32

4.3 Dados de entrada

Os dados de entrada devem respeitar um sistema de coordenadas pré-

estabelecido. No programa elaborado, o plano X-Y com Z igual a zero foi adotado no

topo do bloco. O sentido do eixo Z é de baixo para cima.

As informações fornecidas ao programa são as seguintes:

Altura útil do bloco (hBLOCO). Como descrito no capítulo 3, para uma definição

precisa da altura útil, seria necessário um cálculo iterativo com a verificação

das tensões nos nós e alteração da altura útil até se obter a condição ótima.

Como medida aproximada, pode-se tomar 0,9 d, sendo d a distância entre

uma face horizontal do bloco e o eixo da armadura da face oposta. Essa

redução na altura é feita para considerar a configuração dos nós e das

bielas da face comprimida.

Quantidade de estacas.

Coordenadas de cada estaca no plano horizontal seguidas de um valor

relativo de rigidez axial. A coordenada vertical (Z positivo para cima) é

automaticamente adotada no fundo do bloco (Z = - hBLOCO). Para estacas

iguais, o valor da rigidez relativa informada para cada uma deve ser o

mesmo (mas nunca informar zero). Para estacas diferentes, pode-se adotar

a rigidez de um tipo como referência e as outras como frações desta.

Quantidade de pontos de introdução de carga

Coordenadas, no plano horizontal, dos pontos de introdução de carga e as

forças verticais de cada um. A coordenada vertical é automaticamente

adotada como zero, correspondente ao topo do bloco. Conforme descrito no

inicio deste item, para aplicar uma força de compressão no bloco, o sinal

deve ser negativo.

Por último, são fornecidos os ângulos limites entre bielas e tirantes (min

e max) conforme descrito no item 3.2 para a definição do modelo.

Com os dados fornecidos são montadas três matrizes básicas que serão

utilizadas no decorrer do programa:

33

C =

xest,1 yest,1 - hBLOCO

xest,1 yest,1 - hBLOCO

⋮xest,n yest,n - hBLOCO

xcar,1 ycar,1 0

xcar,1 ycar,2 0

⋮xcar,m ycar,m 0

(4.6)

onde :

C: matriz de coordenadas dos nós;

xest,i e yest,i: coordenadas do centro da cabeça da estaca “i”;

xcar,i e ycar,i: coordenadas do ponto de introdução de carga “i”.

n: número de estacas;

m: número de pontos de introdução de carga.

matriz de forças externas=

Nest1

Nest2⋮

Nestn

Ncar1

Ncar1⋮

Ncarm

(4.7)

onde:

Nesti: espaço reservado para armazenar a reação da estaca “i” que será,

posteriormente, calculada.

Ncari: força vertical aplicada no ponto de introdução de carga “i”.

matriz de rijezas das estacas =

kest1

kest2⋮

kest,n

(4.8)

sendo, kesti a rigidez relativa da estaca “i”.

4.4 Análise do estaqueamento

Como já foi dito no itém 3.2, é necessário conhecer as forças externas para

dimensionar uma região de descontinuidade por bielas e tirantes. Portanto, para um

bloco de coroamento, é necessário o cálculo prévio da distribuição das forças nas

estacas.

34

Como o objetivo principal do programa elaborado é o estudo da possibilidade

de automatização da modelagem e análise do bloco, são consideradas apenas forças

de reação verticais nas estacas. Admitida essa simplificação, o método de

Nökkenteved é de fácil implementação computacional.

Baseando-se nas expressões gerais, apresentadas no item 2.2.2, o método foi

implementado para determinar as reações causadas exclusivamente por forças

verticais e momento horizontais:

Como um modelo de bielas e tirantes aceita apenas forças como cargas

externas, possíveis momentos no pilar são decompostos em conjunto de

cargas verticais na entrada de dados, conforme item 4.3. Para a análise do

estaqueamento, faz-se o processo inverso e todas as cargas serão

transferidas para a origem do sistema de coordenadas com seus respectivos

momentos.

V = matriz de forças externas (i)

n+m

i=n+1

(4.9)

Mx = matriz de forças externas (i)

n+m

i=n+1

x C(i,2) (4.10)

My = matriz de forças externas (i)

n+m

i=n+1

x C(i,1)(4.11)

onde:

V: força vertical solicitante;

Mx: momento solicitante na direção x;

My: momento solicitante na direção y.

A soma das rijezas relativas de todas as estacas é determinada em função

do valor de referência:

ktotal= matriz de rijezas das estacas (i)

n

i=1

(4.12)

Como o estaqueamento não é necessariamente simétrico, deve-se calcular

as coordenadas do centro de rigidez do mesmo.

x0 = ∑ matriz de rijezas (i) x C (i,1)n

i=1

ktotal (4.13a)

35

y0 = ∑ matriz de rijezas (i) x C (i,2)n

i=1

ktotal(4.13b)

O centro do sistema de coordenadas é transladado, sendo as coordenadas

recalculadas para ter como referência o centro de rigidez.

C' i,1 = C i,1 - x0eC' i,2 = C i,2 - y0(4.14)

sendo C’ a matriz com as coordenadas de cada nó em relação ao centro de

rigidez.

Os momentos também devem ser recalculados para considerar a atuação

da carga vertical nesse ponto.

M'x = Mx - Vy0eM'y = My - Vx0(4.15)

sendo, M’x e M’y as componentes horizontais do momento considerando a

translação da carga vertical.

São determinados os momentos de quadráticos do estaqueamento,

referidos aos eixos com direções originais, porém, com origem no centro de

rigidez:

Ixx= matriz das rijezas i x C' (i,2)2 (4.16)

Iyy= matriz das rijezas i x C' (i,1)2 (4.17)

Ixy= matriz das rijezas i x C' (i,1) x C' (i,2) (4.18)

Determina-se, então, a direção dos eixos principais.

α = 1

2 tg-1 2 Ixy

Ixx+Iyy(4.19)

sendo, o ângulo entre as direções dos eixos originalmente adotadas e as

direções principais.

As coordenadas e momentos são, assim, rotacionados para se referenciar

aos eixos das direções principais.

C’’(i,1) = C’(i,1) cos() + C’(i,2) sen() (4.20a)

C’’(i,2) = - C’(i,1) sen() + C’(i,2) cos() (4.20b)

M’’x = M’x cos() + M’y sen() (4.21a)

36

M’’y = - M’x sen() + M’y cos() (4.21b)

onde:

C”: matriz de coordenadas dos nós com origem no centro de rigidez e

direções dos eixos coincidindo com as direções principais;

M’’x e M’’y: as componentes horizontais do momento já levando em conta a

translação da carga vertical e a rotação das direções dos eixos cartesianos.

Os momentos de 2ª ordem do estaqueamento, Ixx, Iyy e Ixy são recalculados

com base nas coordenadas com o centro de rigidez e os eixos principais

corrigidos. As expressões são as expressões (4.16), (4.17) e (4.18) com a

substituição da matriz C’ pela matriz C’’.

As reações de apoio são obtidas separadamente para cada solicitação e

somadas ao final. Como descrito mais adiante neste capítulo, as reações de

apoio obtidas são aplicadas como cargas externas no modelo de treliça

espacial definido pelas bielas e tirantes.

NV(i) = matriz de rijezas i

ktotal V (4.22)

NMx (i)= matriz de rijezas i

ktotal x

M''x C'' (i,2)

I'xx(4.23)

NMy (i)= matriz de rijezas i

ktotal x

M''y C'' (i,1)

I'yy(4.24)

matriz de forças externas (i) = NV (i) + NMx (i) + NMy i (4.25)

A força calculada para cada estaca é, então, adicionada à matriz de forças

externas.

4.5 Definição dos elementos

Para a definição dos elementos que podem ser utilizados pelo modelo de bielas

e tirantes, é gerada uma matriz de nós, com duas colunas na qual cada linha tem o nó

inicial e o nó final do elemento. A princípio, o número de elementos possíveis

corresponde à combinação simples do número de nós (número de estacas mais

número de nós de introdução carga) de dois em dois, mas isso pode mudar se

existirem cargas externas de tração.

Conforme já apresentado no item 4.1, elementos de transferência obrigatórios

são gerados sempre que existir uma carga externa de tração.

37

Para realizar esta transferência no programa, é necessária a criação de um

novo nó para cada nó de introdução de carga de tração ou estaca tracionada.

A Figura 4.4.a ilustra um modelo que não seria adequado do ponto de vista

construtivo. O arranjo de tirantes ilustrado na Figura 4.4.b é mais indicado.

Figura 4.4 - Modelos de bielas e tirantes para cargas externas de tração.

A partir deste ponto, existem dois caminhos pelos quais se pode continuar a

automatização. No primeiro, todos os elementos que se ligariam ao nó primário são

transferidos para o novo nó e cria-se um elemento vertical obrigatório lingando os dois

nós. Esse tirante obrigatório seria o único elemento do nó primário e os outros nós não

poderiam se ligar a este. Essa abordagem não aumenta o número de combinações

possíveis, mas apenas adiciona esse elemento obrigatório a todas as combinações.

Uma segunda opção é inclusão desse novo nó como se fosse outro nó

qualquer, deixando que os outros nós se liguem tanto a ele como ao primário. Isso

aumenta o número de combinações, e gera muitas combinações com tirantes em

diagonais, que posteriormente seriam excluídas.

A Figura 4.5.a exemplifica a primeira abordagem para transferência de carga.

Nesta, o nó inicialmente definido não se conecta aos outros nós e o tirante vertical

apenas transfere a carga de tração externa. Já na Figura 4.5.b, o nó primário, pode se

conectar a outros nós e o tirante vertical participa do arranjo das forças internas,

podendo suspender uma carga maior do que a aplicada externamente.

(a) (b)

38

Figura 4.5 - Comparação entre as abordagens possíveis para transferência de carga.

Por ser mais geral, a segunda abordagem foi escolhida e implementada no

programa da seguinte maneira:

O programa percorre toda a matriz de forças externas e caso algum nó

referente a estacas tenha forças verticais para baixo, é criado um nó com as

mesmas coordenadas x e y no plano do topo do bloco. Esses dois pontos

são adicionados à matriz de nós e um primeiro elemento (tirante obrigatório)

é formado.

O mesmo procedimento é seguido para os nós referentes a introduções de

carga. A matriz de nós então já conta com os todos os elementos que

seriam os tirantes obrigatórios.

A partir daí, os outros elementos são adicionados na matriz de nós

efetuando-se todas as combinações entre nós possíveis. A cada elemento é

verificado se este já não foi previamente definido como tirante obrigatório.

A matriz de nós fica da seguinte maneira:

matriz de nós =

(tirantes obrigatórios)nó1 nó2

nó1 nó3⋮

nó1 nón-1

nó1 nón⋮

nón-2 nón

nón-1 nón

(4.26)

A ordem da linha dessa matriz representa o número do elemento de treliça. Ou

seja, a primeira linha define os nós do elemento 1, a segunda linha define os nós do

elementos 2 e assim por diante.

A expressão (4.27) indica o número possível de elementos, que também será o

número de linhas da matriz de nós da expressão (4.26).

(a) (b)

39

n° de elementos =C2n° de nós =

n° de nós !

2! n° de nós-2 !(4.27)

sendo, o número de nós igual à soma do número de estacas, número de pontos de

introdução de carga e nós que foram eventualmente criados para transferência de

carga.

4.6 Elementos sobrepostos

No caso de existirem três ou mais nós colineares, a matriz de nós contaria com

situações como a ilustrada na Figura 4.6:

Figura 4.6 - Elementos sobrepostos.

Para solucionar esse problema, uma rotina de verificação é executada para o

plano da base e para o plano do topo do bloco. Nesta, o programa percorre cada nó,

fazendo a combinação com todos os pares de outros nós possíveis no mesmo plano e

armazenando as coordenadas em uma matriz 3 x 3 conforme expressão (4.28).

A=

x1 y1 1

x2 y2 1

x3 y3 1 (4.28)

sendo, xi e yi, as coordenadas no plano horizontal de cada um dos três pontos

escolhidos.

Em seguida, é calculado o determinante da matriz A. Sendo este determinante

próximo de zero, é garantido que os três nós estão alinhados e o maior elemento

ligando dois dos três nós é excluído. Ao final, a matriz de nós é reordenada para evitar

uma linha vazia.

4.7 Combinações de elementos

Pelos motivos expostos no item 3.2, os modelos de bielas e tirantes aceitos

pelo programa serão apenas os representados por treliças isostáticas. Para tal, serão

definidas as combinações que contém o número de elementos necessários para que

uma treliça espacial seja internamente isostática.

n° de incógnitas = reações de apoio + esforços normais (4.29)

40

n° de equações = 3 x n° de nós (4.30)

Em uma estrutura estaticamente determinada o número de equações deve ser

igual ao número de incógnitas. Igualando as expressões (4.29) e (4.30) obtém-se a

seguinte relação:

esforços normais = 3 x n° de nós – reações de apoio (4.31)

Tratando-se de uma estrutura espacial, é necessário impedir deslocamentos

nas três direções e rotações também em três direções, resultando em seis reações de

apoio. Disto resulta a seguinte equação para determinação do número de elementos

de uma treliça espacial isostática:

n° de elementos = 3 x n° de nós – 6 (4.32)

Uma treliça espacial com quatro nós não coplanares tem como número de

elementos possíveis exatamente o necessário para ser isostática formando um

tetraedro. Se a treliça possuir mais nós, têm-se mais elementos possíveis do que

elementos necessários para formar uma estrutura estaticamente determinada. O

número de modelos que podemos formar é uma combinação simples, como descrito a

seguir:

Sendo “a” o número de elementos possíveis da expressão (4.27) e “b” o

número de elementos de uma treliça espacial isostática dados na expressão (4.32), o

número de combinações é:

n° de combinações =Cba =

a !

b! a-b !(4.33)

Para posterior verificação e análise de cada modelo, é necessário formar uma

matriz com todas as combinações possíveis. A matriz utilizada no programa tem como

quantidade de colunas o número de elementos de uma treliça isostática e uma linha

para cada combinação.

Como exemplo, considera-se um bloco com um nó de introdução de carga,

quatro estacas e nenhuma força externa de tração. Com esses cinco nós, tem-se,

segundo a equação (4.27), dez elementos possíveis. Para formar um modelo

isostático são necessários nove elementos, conforme a expressão (4.32). Poderíamos

gerar, então, dez combinações para arranjo dos elementos da treliça (expressão 4.33).

A matriz de combinações para este exemplo seria então:

41

matriz de combinações=

1 2 3 4 5 6 7 8 91 2 3 4 5 6 7 8 101 2 3 4 5 6 7 9 101 2 3 4 5 6 8 9 101 2 3 4 5 7 8 9 101 2 3 4 6 7 8 9 101 2 3 5 6 7 8 9 101 2 4 5 6 7 8 9 101 3 4 5 6 7 8 9 102 3 4 5 6 7 8 9 10

(4.34)

4.8 Equilíbrio dos nós

Como descrito por Sussekind (1991), a quantidade de elementos para formar

um modelo de treliça espacial internamente isostática é uma condição necessária mas

não suficiente. Com a quantidade de elementos correta, pode-se ter muitas barras

ligadas a um nó enquanto outro fica sem elementos suficientes garantir o equilíbrio.

Se três forças de direções não coplanares se cruzam em um ponto no espaço,

é garantido, que para quaisquer sistemas de eixos cartesianos adotados, têm-se

componentes em todas as direções. Por essa razão, podemos garantir o equilíbrio e a

análise de uma treliça espacial pelas equações da estática se ela atender a duas

condições:

1ª: possuir 3 n - 6 elementos, onde n é o numero de nós, conforme descrito no

item 4.5.

2ª: todos os seus nós devem ligar, pelo menos, três elementos com direções

não coplanares.

No programa elaborado, para cada combinação de elementos, todos os nós

são verificados para atender à segunda condição.

Antes da verificação para garantir o equilíbrio interno de cada combinação é

formada uma matriz com os vetores diretores de todos os elementos possíveis:

matriz de vetores diretores=

xi1-xf1 yi1-yf1 zi1-zf1xi2-xf2 yi2-yf2 zi2-zf2xi3-xf3 yi3-yf3 zi3-zf3

⋮xin-xfn yin-yfn zin-zfn

(4.35)

onde:

n: o número de elementos possíveis;

xi, yi, zi: coordenadas do nó inicial de cada elemento;

xf, yf, zf: coordenadas do nó final de cada elemento.

42

A verificação é então realizada da seguinte maneira, para cada combinação de

elementos:

Primeiramente, verifica-se se nó aparece no mínimo três vezes na matriz de

nós, considerando apenas os elementos daquela combinação. Caso não

apareça, significa que menos de três elementos se ligam ao nó e o modelo

já é descartado.

Atendido o critério anterior, para cada nó, o primeiro elemento a se conectar

a ele tem seu vetor diretor tomado como referência.

Os outros elementos conectados ao nó são percorridos e definem-se os

planos que contem o vetor diretor de cada um e o vetor de referência.

Por simplificação, os planos são definidos apenas pelos seus vetores

normais, sem risco de ocorrerem planos paralelos e não coincidentes já que

estamos analisando ponto a ponto.

Os vetores normais são calculados pelo produto vetorial dos dois vetores

contidos no plano. A Figura 4.7 ilustra um nó com três elementos, além dos

dois planos formados e dos respectivos vetores normais.

Finalmente, vetores normais daquele ponto são comparados. Se todos

forem iguais, significa que todos os elementos ligados ao nó estão no

mesmo plano e o modelo é então descartado.

43

Figura 4.7 - Verificação da coplanaridade dos elementos ligados a um nó.

4.9 Análise estrutural da treliça

Garantindo-se que o modelo de treliça é isostático, as solicitações axiais

podem ser determinadas pelo sucessivo equilíbrio de forças nos nós. Porém, por

facilidade de automatização, cada treliça que respeite a verificação do item 4.8 é

analisada pelo método dos deslocamentos. A implementação para o caso específico é

descrita a seguir.

4.9.1 Matriz de rigidez da treliça

Inicialmente, determina-se da matriz de rigidez da estrutura. Para tal, forma-se

a matriz de rigidez de cada barra no referencial global e as contribuições ao

impedimento de cada deslocamento são adicionadas à matriz da estrutura.

Para cada elemento, os seguintes cálculos são executados:

Obtenção da matriz de rotação do sistema de coordenadas local para o

sistema de coordenadas global, definida por:

44

TR =

Cx Cy Cz

-CxCy

Cx2+Cz

2

Cx2+Cz

2 -CyCz

Cx2+Cz

2

-Cz

Cx2+Cz

2

0Cx

Cx2+Cz

2

(4.36)

sendo Cx, Cy, Cz, os cossenos diretores do vetor com mesma direção do

elemento. Calculados da seguinte forma, a partir dos dados da matriz de

vetores diretores definida no item 4.8:

Cx = matriz de vetores diretores (i,1)

Li (4.37a)

Cy = matriz de vetores diretores (i,2)

Li (4.37b)

Cz = matriz de vetores diretores (i,3)

Li (4.37c)

onde:

Li = mat. vet. dir. (i,1)2 + mat. vet. dir. (i,2)2 +mat. vet. dir. (i,3)2(4.38)

Para rotação dos deslocamentos no nó inicial e no nó final, montamos a

matriz 6 x 6 chamada de matriz de rotação da barra:

R= TR 00 TR

(4.39)

A matriz de rigidez, no referencial local (kL), de um elemento de treliça

espacial tem a seguinte forma:

kL =

E A

L0 0

0 0 00 0 0

-E A

L0 0

0 0 00 0 0

-E A

L0 0

0 0 00 0 0

E A

L0 0

0 0 00 0 0

(4.40)

Onde:

E: módulo de elasticidade do material

A: área da seção transversal da barra

L: comprimento da barra

45

Como a treliça analisada é isostática, podem-se adotar os valores do

módulo de elasticidade e da área da seção transversal iguais para todas as

barras.

Para obter a matriz de rigidez da barra no referencial global (kG), faz-se a

seguinte transformação:

kG= RT kL R(4.41)

Em seguida, para poder adicionar a contribuição de cada barra na matriz de

rigidez da estrutura é necessário conhecer a numeração global de cada

deslocamento. Como em uma treliça espacial cada nó tem três

deslocamentos possíveis, a numeração global dos deslocamentos dos nós

de cada barra é determinada diretamente como:

ngd=

3 n° do nó i-1 +13 n° do nó i-1 +23 n° do nó i-1 +33 n° do nó f-1 +13 n° do nó f-1 +23 n° do nó f-1 +3

(4.42)

onde:

i e f: nó inicial e nó final do elemento, respectivamente;

ngd: vetor de transformação do deslocamento local para o global.

As 36 rijezas de cada barra são adicionadas a matriz de rigidez da estrutura

(K) da seguinte maneira:

K(ngd(i),ngd(j)) = K(ngd(i),ngd(j)) + kG(i,j) (4.43)

com i e j variando de um a seis.

4.9.2 Condições de contorno

Obtida a matriz de rigidez da estrutura, é necessário se definir as condições de

contorno, que são as forças nodais e os impedimentos aos deslocamentos (apoios).

Neste trabalho, se optou pelo cálculo das reações de apoio pelos métodos

típicos de cálculo dos estaqueamentos já apresentados no item 4.4. Por isso, ao invés

de impor impedimentos aos deslocamentos, as reações de apoio previamente

calculadas serão aplicadas como forças externas.

Para evitar a singularidade da matriz de rigidez e os consequentes

deslocamentos de corpo rígido da estrutura, são aplicadas molas flexíveis para todas

46

as direções de cada nó. Para tal, em todos os valores da diagonal principal da matriz

de rigidez é aplicada uma mola com 0,1% da menor rigidez dentre todos os elementos

da treliça:

K(i,i) = K(i,i) 10-4

Lmáx(4.44)

Com i variando de um até o número total de deslocamentos e Lmáx sendo o

comprimento do maior elemento.

4.9.3 Deslocamentos

Como já sabemos as reações de apoio da estrutura, as nossas únicas

incógnitas são os deslocamentos. Estes são determinados resolvendo-se a equação

de equilíbrio, típica do método da rigidez.

K U = F (4.45)

onde:

K é a matriz de rigidez global,

U o vetor de deslocamentos nodais;

F o vetor de forcas nodais.

O vetor global de forças nodais terá como número de linhas, o número total de

deslocamentos da estrutura e será formado pelas cargas aplicadas no bloco e pelas

reações nas estacas. Para cada nó, a expressão (4.46) é executada:

F(ngd(i)) = matriz de forças externas (i) (4.46)

O sistema de equações lineares (4.45), é resolvido por eliminação de Gauss-

Jordan com pivoteamento total baseado em Press (1992).

4.9.4 Solicitações axiais

Após a obtenção do vetor global de deslocamentos nodais da estrutura, o

esforço axial em cada elemento é calculado da seguinte maneira:

Forma-se um vetor de 6 linhas com os deslocamentos dos nós de cada

elemento no sistema de referência global (uG):

uG(i) = U(ngd(i)) (4.47)

Esse vetor é transformado para o sistema de referência local de cada

elemento com a mesma matriz de rotação da barra R da equação (4.39).

Obtém-se, então, o vetor de deslocamentos da barra (uL)

47

uL = R uG (4.48)

O vetor das forças de extremidade do elemento (fL) é calculado a partir de

da matriz de rigidez da barra (expressão 4.40) e do vetor de deslocamentos

da barra (expressão (4.48)).

fL = kL uL (4.49)

No vetor de forças de extremidades obtido, os valores presentes na 1ª e 4ª

linha são os esforços axiais no nó inicial e final, respectivamente. Estes são

iguais em módulo e tem sinais opostos. Para seguir a convenção de tração

positiva e compressão negativa, basta considerar o esforço obtido na 4ª

linha.

4.10 Matriz das solicitações

Para saída dos resultados, é interessante ter uma matriz com os esforços de

todos os elementos de cada combinação. A matriz tem como quantidade de linhas o

número de combinações e tantas colunas quanto elementos de uma treliça isostática.

Para cada modelo analisado, é adicionada uma linha à matriz geral dos esforços com

o esforço de cada elemento:

matriz geral dos esforços(i, j)=fLi,j(4)(4.50)

sendo fLij, o vetor de forças de extremidade o elemento j no modelo i.

4.11 Vetor de energia

Como visto no item 3.4, uma das maneiras de se escolher o melhor entre

vários modelos de bielas e tirantes é o critério de energia de deformação. Para

aplicação de tal critério, o programa percorre cada linha da matriz geral dos esforços

(expressão (4.50)) e soma todos os valores positivos (correspondentes a tirantes). O

valor é armazenado em um vetor de energia com o número de linhas igual ao número

de combinações.

vetor de energia (i) = matriz geral dos esforços (i,j) (se > 0)

k

j = 1

(4.51)

onde i é número do modelo, j é o número elemento, e k o número de elementos da

treliça isostática. Apenas os valores positivos entram no somatório.

Essa matriz também é utilizada para descarte dos modelos que não atendem

as diversas verificações efetuadas pelo programa. Quando uma destas não é

48

atendida, o valor da energia é alterado para um valor relativamente alto (107).

Posteriormente, somente modelos cuja energia de deformação seja menor que 107

serão impressos.

Esse método de descarte faz com que não sejam considerados valores para

solicitações e medidas de comprimento com muitos dígitos. Por exemplo, deve-se

utilizar 250 kN ao invés de 250000 N, para evitar a não impressão de um modelo

adequado.

4.12 Cruzamento de bielas

Como explicado no item 3.2, em um modelo de bielas e tirantes, as bielas só

podem se cruzar nos nós. Uma rotina foi implementada para fazer verificar essa

condição em cada modelo. Para cada par de elementos, procede-se da seguinte

maneira:

É verificado se os elementos possuem um nó em comum. Caso isto ocorra,

a verificação não precisa ser feita já que duas retas só se encontram uma

vez no espaço. Passa-se para o próximo par.

Verifica-se, a partir da matriz geral de esforços, se ambos os elementos

estão comprimidos.

Caso os elementos não se encontrem em um nó e sejam bielas, o programa

confere se pertencem ao mesmo plano. Isso é feito analisando o valor

produto misto de três vetores: os vetores diretores de cada elemento e um

vetor que cruze as duas retas. Caso a expressão a seguir se verifique, os

vetores são coplanares.

u . v x w = 0 (4.52)

onde, v e w são os vetores diretores dos dois elementos e u é o vetor que

passa pelo primeiro nó de cada elemento.

Caso contrário, é impossível o cruzamento dos elementos.

Sendo os elementos coplanares, eles devem ser paralelos ou se cruzarem

em algum lugar no espaço. A localização do ponto de interseção pode ser

determinada da seguinte forma:

São consideradas as equações paramétricas das duas retas:

r1= x= xi1+Cx1t1y= yi1+Cy1t1z= zi1+Cz1t1

r2= x= xi2+Cx2t2y= yi2+Cy2t2z= zi2+Cz2t2

(4.53)

onde:

49

xi, yi ,zi: as coordenadas dos nós iniciais de cada elemento;

Cx, Cy e Cz: cossenos diretores de cada vetor, conforme equação (4.37).

A Figura 4.8 ilustra as grandezas das equações paramétricas.

No ponto de interseção, as três coordenadas das retas devem coincidir. Se

igualarmos as equações de duas coordenadas (por exemplo, x e y) das

duas retas, teremos um sistema com duas equações e duas incógnitas (t1 e

t2).

Determina-se, assim, o valor de t1, por exemplo, e compara-se com o

comprimento do elemento 1. Se este for menor, as retas se cruzam no

trecho dentro da treliça e o modelo deve ser descartado.

Figura 4.8 - Cruzamento de elementos.

4.13 Inclinação entre bielas e tirantes

Como já citado no item 3.2, para que tenhamos um comportamento estrutural

adequado, a inclinação entre bielas e tirantes deve respeitar alguns limites. Os

ângulos mínimo e máximo permitido entre uma biela e um tirante são informados pelo

usuário no arquivo de entrada.

Após a análise da treliça isostática e da verificação do cruzamento de bielas

fora dos nós, é feito um controle dos ângulos entre bielas e tirantes da seguinte forma:

Percorrem-se todos os pares de elementos possíveis. Cada elemento é

comparado com todos os outros elementos de maior numeração.

50

Verifica-se se os elementos tem um nó em comum a partir dos nós inicial e

final de cada um na matriz de nós.

Averígua-se se os sinais de esforços normais são opostos, já que só há

limites para ângulos entre bielas e tirantes e não para ângulos entre duas

bielas ou dois tirantes. Lembrando que os esforços axiais já foram

registrados na matriz geral de esforços.

Calcula-se o ângulo entre os elementos com os dados da matriz de vetores

diretores. Para tal, basta dividir o produto escalar dos vetores pelo produto

do módulo de cada um. Como na expressão (4.54):

cosα = u . v

|u|. |v|(4.54)

com as grandezas ilustradas na Figura 4.9.

Para determinar o menor ângulo, basta adicionar o modulo no numerador,

obtendo, assim, um ângulo sempre entre 0 e 90 °.

cosα = |u . v||u| . |v|

(4.55)

Figura 4.9 - Ângulo entre dois vetores.

Compara-se o cosseno do ângulo obtido com os cossenos dos ângulos

limites informados pelo usuário. Se para algum par de elementos, esses

limites não estejam sendo respeitados, o modelo é descartado.

Nos modelos gerados pelo programa existem alguns elementos que não

necessitam passar por essa verificação, por se tratarem de uma simplificação da

realidade. É o caso de uma carga de momento aplicada por um binário, com uma força

comprimindo o bloco e outra tracionando. O elemento que liga o nó de compressão

com o nó criado para transferir a carga de tração para o fundo do bloco,

provavelmente ficará muito próximo da vertical e não respeitará os limites.

51

Porém, como há estribos na armadura de arranque do pilar, o elemento pode

ser discretizado como mostrado na Figura 4.10. No modelo da esquerda, os ângulo

e estariam fora dos limites, mas discretizando a biela que os forma, chegamos ao

modelo da direita, onde todos os ângulos obedecem aos limites:

Figura 4.10 - Discretização do elemento de arranque do pilar.

Por esta razão, o programa não faz a verificação de inclinação para elementos

ligando nós de introdução de cargas.

4.14 Tirantes diagonais

Como descrito anteriormente, a existência de armaduras não verticais entre os

planos de um bloco de coroamento é indesejável do ponto de vista construtivo. Por

isso, são utilizadas armaduras de suspensão quando necessárias. Dessa maneira,

tem-se tirantes apenas no fundo, no topo do bloco ou verticais nas direções dos

pilares ou estacas.

Essa consideração foi incorporada à automatização e uma rotina para

eliminação dos modelos que usam tirantes diagonais entre planos foi elaborada.

Para cada modelo, o programa calcula os cossenos diretores em z (expressão

(4.32.c)) de todos os elementos. Caso algum dos cossenos diretores seja diferente de

0 ou 1 e o esforço nesse elemento seja positivo (se tratando de um tirante), o modelo

é descartado.

A Figura 4.11 ilustra um modelo que seria excluído pelo programa por conter

tirantes não verticais ligando planos.

52

Figura 4.11 – Exemplo de modelo que seria descartado pelo programa.

53

5 EXEMPLOS DE APLICAÇÃO

Para validar a modelagem e análise realizada pela automatização elaborada,

um exemplo simples de bloco de coroamento de quatro estacas é resolvido e os

resultados são comparados com os obtidos pelo programa. Um segundo exemplo

ilustra a transferência de carga de tração par face oposta. Ao final, é apresentado,

brevemente, um estudo da sensibilidade dos modelos de bielas para e tirantes pra

blocos a imperfeições geométricas.

5.1 Exemplo de validação

5.1.1 Dados do bloco estudado

O bloco, ilustrado na Figura 5.1, tem altura total de 80 cm e transfere as cargas

de um pilar retangular de 40 x 80 cm a quatro estacas circulares de 50 cm de

diâmetro. Os eixos das estacas distam 150 cm entre si.

Figura 5.1 - Elevação e vista superior do bloco exemplo.

5.1.2 Cálculo de estaqueamento

A distribuição das forças nas estacas é calculada pelas expressões do item

2.2.2, segundo o método de Nökkentved. O estaqueamento é duplamente simétrico e

as direções dos eixos principais coincidem com os eixos pré-definidos.

54

Para consideração do peso próprio do bloco, faz-se um acréscimo à carga

vertical aplicada pelo pilar. Considerando o peso específico de concreto armado de 25

kN/m³, tem-se:

V = 3015 + 2,5 x 2,5 x 0,8 x 25 = 3140 kN

As etapas do cálculo de estaqueamento estão resumidas na Tabela 5.1. As

cargas nas estacas estão representadas por Fi:

Tabela 5.1 - Resumo do cálculo do estaqueamento.

5.1.3 Modelo de bielas e tirantes

Para aplicação das cargas no modelo de bielas e tirantes, o momento causado

pelo engastamento do pilar no bloco é transformado em um binário e acrescentado à

força vertical:

V1 = -3140

2+

500

0,4 = -320 kN

V2 = -3140

2 -

500

0,4 = -2820 kN

Por simplificação, as cargas V1 e V2 são aplicadas no centro de cada metade

da seção da base do pilar, conforme ilustra a Figura 5.2. Em uma análise mais precisa,

a configuração das tensões nessa seção para o estado limite último deveria ser

utilizada para obter as posições das cargas.

estaca xi (m) xi² (m²) V/n (kN) -My.xi/Sxi² (kN) Fi (kN)

E1 -0,75 0,563 -785 166,7 618,3E2 0,75 0,563 -785 -166,7 951,7E3 -0,75 0,563 -785 166,7 618,3E4 0,75 0,563 -785 -166,7 951,7

soma - 2,25 -3140 0 3140

55

Figura 5.2 - Cargas aplicadas no modelo de bielas e tirantes

A altura útil do bloco será estimada subtraindo-se da altura total 7,5 cm

correspondentes à distância entre o eixo da armadura inferior e o fundo do bloco, e

mais 7,5 cm para configuração dos nós na face superior do bloco, resultando em 65

cm. Esses valores estimados devem que ser alterados, caso as verificações de

tensões nos nós não sejam atendidas.

Com as cargas no topo do bloco, as reações de apoio das estacas e a altura

útil já estabelecidas, as condições de contorno do modelo estão definidas e as forças

internas podem ser obtidas. A Figura 5.3 ilustra um modelo de bielas e tirantes que

pode ser intuitivamente utilizado. Neste modelo tem-se um binário de forças,

representando as solicitações do topo e as reações do estaqueamento, as linhas

tracejadas representam as bielas comprimias (B) e as linhas cheias os tirantes

tracionados (T).

A partir desse modelo, calculam-se os esforços nos tirantes para o

dimensionamento das armaduras principais que serão dispostas na base do bloco.

Devem ser verificadas as tensões nas regiões nodais sobre as estacas e sob o pilar.

56

Figura 5.3 - Forças externas a serem aplicadas no modelo.

5.1.3.1 Verificação do ângulo entre bielas e tirantes

Ângulo entre a biela B1 e o tirante T1 (mesmo válido para biela B3 e tirante T2):

θ1 = arccos 0,55

0,75² + 0,55² + 0,65² = 61°

Ângulo entre a biela B1 e o tirante T3 (mesmo válido para biela B3 e tirante T3):

θ2 = arccos 0,75

0,75² + 0,55² + 0,65² = 49°

Ângulo entre a biela B2 e o tirante T1:

θ3 = arccos 0,95

0,75² + 0,95² + 0,65² = 46°

Ângulo entre a biela B2 e o tirante T3:

θ4= arccos0,75

0,75²+0,55²+0,65²=59°

Os ângulos estão adequados entre os limites recomendados pela

NBR6118:2014 ou pela ACI 318-11. Como já mencionado no item 3.2, a norma

brasileira limita os ângulos entre bielas e tirantes entre 30 e 63°.

57

5.1.3.2 Cálculo das forças nas bielas e tirantes:

Os esforços axiais nos diversos elementos da treliça são obtidos por

sucessivos equilíbrios dos nós. Iniciando-se pela análise do nó sobre a estaca E4, são

obtidos os seguintes valores para forças na biela B3 e nos tirantes T2 e T3 A Figura 5.4

ilustra as forças que se equilibram neste nó.

Figura 5.4 - Equilíbrio do nó sobre a estaca E4.

B3 = 951,7

senθ2 =

951,7

sen 34,95° = 1661,3 kN

T2 = 951,7 senθ1

tgθ2 =

951,7 sen 53,75°

tg 34,95° = 1098,1 kN

T3 = 951,7 cosθ2

tgθ1 =

951,7 cos 53,75°

tg 34,95° = 805,2 kN

A seguir, calculam-se as forças nas bielas B1 e B4 pelo equilíbrio do nó sobre a

carga de 320 kN. A Figura 5.5 mostra as forças concorrentes deste nó:

Figura 5.5 - Equilíbrio do nó sob a carga de 320 kN.

58

B1 = 320

2 cosθ1 =

320

2 cos 55,05° = 279,3 kN

B4 = - 2 × 279,3 sen θ1cosθ2= - 2 × 279,3 sen 55,05°cos126,25° =270,6 kN

Por ultimo, determinam-se as forças no tirante T1 e na biela B2, pelo equilíbrio

do nó sobre a estaca E3. A Figura 5.6 ilustra as cargas que se equilibram neste nó.

Figura 5.6 - Equilíbrio do nó sobre a estaca E3.

B2 = 618,3 - B1senθ3

senθ1 =

618,3 - 279,3sen34,95°

sen28,24° = 968,6 kN

T1 = B1 cos θ3 sen θ4 + B2cos θ1 sen θ2 =

= 279,3 cos 34,95°sen53,75° + 968,6cos28,24°sen38,29° = 713,4 kN

A Tabela 5.2 apresenta o resumo dos esforços encontrados para todos os

elementos, onde os valores positivos são para esforços de tração:

Tabela 5.2 - Resumo dos esforços nos elementos da treliça.

elemento N (kN)

B1 - 279,3

B2 - 968,6

B3 - 1661,3

B4 - 270,6

T1 713,4

T2 1098,1

T3 805,2

59

5.1.4 Análise pelo programa desenvolvido

Para o mesmo bloco de coroamento, utiliza-se o programa desenvolvido para

elaboração automática do modelo de bielas e tirantes e cálculo das forças nos seus

elementos. A metodologia de cálculo foi apresentada no Capítulo 4. A seguir, serão

apresentados os resultados obtidos para o modelo obtido com menor energia de

deformação e para o modelo com configuração similar ao utilizado no item anterior

para comparação dos resultados.

A seguir, lista-se o arquivo de entrada de dados com as informações do bloco

da Figura . A primeira linha corresponde à altura útil do bloco. Na segunda linha,

informa-se o número de estacas. Em seguida, adiciona-se uma linha para cada

estaca, informando as coordenadas no plano do fundo do bloco e um valor relativo de

rigidez vertical (todas as estacas foram adotadas com a mesma rigidez).

Após os dados do estaqueamento, informa-se o número de nós de introdução

de cargas desejado e a partir daí, uma linha para cada nó contendo as coordenadas

no plano do topo do bloco e as forças verticais aplicadas (com sinal positivo para

cima).

Por último, são estabelecidos os limites inferior e superior desejados para os

ângulos de inclinação entre bielas e tirantes.

;DADOS DE ENTRADA:

;ALTURA ÚTIL DO BLOCO.

0.65

;NÚMERO DE ESTACAS.

4

;COORDENADAS DE CADA ESTACA SEGUIDA DO VALOR RELATIVO DE RIGIDEZ.

-0.75 0.75 1.0

0.75 0.75 1.0

-0.75 -0.75 1.0

0.75 -0.75 1.0

;NÚMERO DE PONTOS DE INTRODUÇÃO DE CARGA.

2

;COORDENADAS DE CADA PONTO DE INTRODUÇÃO DE CARGA SEGUIDA DA FORÇA.

-0.2 0.0 -320.0

0.2 0.0 -2820.0

;LIMITE MÍNIMO E MÁXIMO, RESPECTIVAMENTE, PARA ÂNGULOS ENTRE BIELAS E

;TIRANTES.

30.0 60.0

60

O arquivo de saída com os dados utilizados e com os resultados obtidos no

programa também é apresentado, como se segue:

RESULTADOS ÓBTIDOS DA ELABORAÇÃO E ANÁLISE DE MODELO DE BIELA E TIRANTE

PARA UM BLOCO DE COROAMENTO.

------------------------------------------------------------------------------

DADOS DE ENTRADA:

ALTURA DO BLOCO:

H = 0.65

COORDENADAS DAS ESTACAS NO FUNDO DO BLOCO:

NÓ(ESTACA) X Y

1 -0.75 0.75

2 0.75 0.75

3 -0.75 -0.75

4 0.75 -0.75

COORDENADAS E FORÇAS DOS NÓS CARREGADOS NA FACE SUPERIOR DO BLOCO:

NÓ X Y F

5 -0.20 0.00 -320.00

6 0.20 0.00 -2820.00

------------------------------------------------------------------------------

REAÇÕES DE APOIO:

NÓ(ESTACA) F

1 618.33

2 951.67

3 618.33

4 951.67

------------------------------------------------------------------------------

NÓS DE TRANSFERÊNCIA DE CARGA PARA A FACE OPOSTA:

NÃO HÁ FORÇAS EXTERNAS DE TRAÇÃO NO BLOCO.

------------------------------------------------------------------------------

NÚMERO DE TRELIÇAS ISOSTÁTICAS A SEREM ANÁLISADAS

8

------------------------------------------------------------------------------

ESFORÇOS NOS ELEMENTOS DOS MODELOS IMPRESSOS POR ORDEM DE ENERGIA DE

DEFORMAÇÃO:

ORDEM DO MODELO:

1

ENERGIA DE DEFORMAÇÃO:

5019.3

ELEMENTO ESFORÇO AXIAL

1 317.5

2 333.1

3 70.4

61

4 -601.0

6 909.7

7 785.4

9 -2138.5

10 524.1

11 -284.8

12 -1417.0

14 -1283.2

15 -554.0

...

ORDEM DO MODELO:

3

ENERGIA DE DEFORMAÇÃO:

5131.9

ELEMENTO ESFORÇO AXIAL

1 805.0

2 713.2

3 0.2

4 -279.7

5 -969.9

7 1097.8

9 -1660.8

10 805.0

11 -278.7

12 -969.3

14 -1661.8

15 -271.2

...

Pela quantidade de nós, seria possível gerar quinze elementos (C26), porém

uma treliça internamente isostática de seis nós teria apenas doze (3 x 6 - 6)

elementos. Isso nós dá 455 (C1215) combinações de elementos respeitando o critério do

item 4.7.

Após as verificações para que um treliça represente um bom modelo de bielas

e tirantes, o número de combinações reduz para oito. As condições que devem ser

satisfeitas são as definidas no Capítulo 4. A Figura 5.7 ilustra a saída gráfica do

programa para o modelo com menor energia de deformação obtido.

62

Figura 5.7 - Modelo com menor energia de deformação para o exemplo de validação.

Esse modelo apresentou uma energia de deformação de 5019 kNm para as

solicitações impostas. Porém, geralmente, para um bloco de quatro estacas é

desejável concentrar as armaduras nas quatro arestas paralelas as faces.

O modelo da Figura 5.8 seria o ideal do ponto de vista prático e se assemelha

ao utilizado no item 5.1.3. Esta configuração tem uma energia de deformação de 5132

kNm e corresponde ao 3º melhor modelo, dentre os oito possíveis. Como o

estaqueamento é simétrico, o elemento ligando as estacas E1 e E4 não é solicitado, e

pode, também, estar ligando as estacas E2 e E3, gerando um modelo semelhante.

Figura 5.8 - Modelo com arranjo adequado de armaduras para o exemplo de validação.

5.1.5 Comparação dos resultados

As reações de apoio obtidas pelo programa, mostradas no arquivo de saída,

estão de acordo com as calculadas no item 5.1.2.

63

Os esforços axiais nos elementos da treliça, ilustrados na Figura 5.8 são

confirmados pelos obtidos manualmente no item 5.1.3.2 e apresentados na Tabela

5.3. Observa-se que os valores são praticamente os mesmos. As pequenas diferenças

são devidas ao uso das molas que evitam a hipoestaticidade externa, como já

explicado no item 4.9.2.

Tabela 5.3 - Comparação dos resultados obtidos manual e automaticamente.

Elemento Nmanual (kN) Nauto (kN)

B1 - 279,3 - 278,7/-279,7

B2 - 968,6 - 969,3/-969,9

B3 - 1661,3 - 1660,8/-1661,8

B4 - 270,6 - 271,2

T1 713,4 713,2

T2 1098,1 1097,8

T3 805,2 805,0

5.2 Exemplo dois

Para ilustrar a transferência de cargas de tração para face oposta do bloco, são

mostrados os resultados obtidos para um outro carregamento aplicado no mesmo

bloco do exemplo anterior. O momento solicitante do bloco anterior é aumentado para

1000 kNm. Com isso, as forças a serem aplicadas, já considerando os binários

representando o momento, são:

V1 = -3140

2+

1000

0,4 = 930 kN

V2 = -3140

2 -

1000

0,4 = -4070 kN

São apresentados, a seguir os arquivos de entrada de dados e saída dos

resultados.

;DADOS DE ENTRADA:

;ALTURA ÚTIL DO BLOCO.

0.65

;NÚMERO DE ESTACAS.

4

;COORDENADA DE CADA ESTACA SEGUIDA DO VALOR RELATIVO DE RIGIDEZ.

-0.75 0.75 1.0

0.75 0.75 1.0

64

-0.75 -0.75 1.0

0.75 -0.75 1.0

;NÚMERO DE PONTOS DE INTRODUÇÃO DE CARGA.

2

;COORDENADA DE CADA PONTO DE INTRODUÇÃO DE CARGA SEGUIDA DA FORÇA.

-0.2 0.0 930

0.2 0.0 -4070

;LIMITE MÍNIMO E MÁXIMO, RESPECTIVAMENTE, PARA ÂNGULOS ENTRE BIELAS E

;TIRANTES.

30.0 60.0

Arquivo de saída dos resultados:

RESULTADOS ÓBTIDOS DA ELABORAÇÃO E ANÁLISE DE MODELO DE BIELA E TIRANTE

PARA UM BLOCO DE COROAMENTO.

-----------------------------------------------------------------------------

DADOS DE ENTRADA:

ALTURA DO BLOCO:

H = 0.65

COORDENADAS DAS ESTACAS NO FUNDO DO BLOCO:

NÓ(ESTACA) X Y

1 -0.75 0.75

2 0.75 0.75

3 0.75 -0.75

4 -0.75 -0.75

COORDENADAS E FORÇAS DOS NÓS CARREGADOS NA FACE SUPERIOR DO BLOCO:

NÓ X Y F

5 -0.20 0.00 930.00

6 0.20 0.00 -4070.00

-----------------------------------------------------------------------------

REAÇÕES DE APOIO:

NÓ(ESTACA) F

1 451.67

2 1118.33

3 1118.33

4 451.67

-----------------------------------------------------------------------------

NÓS DE TRANSFERÊNCIA DE CARGA PARA A FACE OPOSTA:

NÓ X Y

7 -0.20 0.00

-----------------------------------------------------------------------------

65

NÚMERO DE TRELIÇAS ISOSTÁTICOS A SEREM ANÁLISADAS

553

-----------------------------------------------------------------------------

ESFORÇOS NOS ELEMENTOS DOS MODELOS IMPRESSOS POR ORDEM DE ENERGIA DE

DEFORMAÇÃO:

ORDEM DO MODELO:

1

ENERGIA DE DEFORMAÇÃO:

5418.1

ELEMENTO ESFORÇO AXIAL

1 1105.4

4 256.2

5 -151.9

6 -216.4

7 -83.2

8 877.5

11 -2260.9

12 1204.0

13 633.0

15 -1525.2

17 -104.4

18 -1233.9

19 636.9

20 -128.8

21 -1335.4

...

ORDEM DO MODELO:

141

ENERGIA DE DEFORMAÇÃO:

6770.2

ELEMENTO ESFORÇO AXIAL

1 950.0

2 946.2

4 919.3

5 -17.0

6 -933.6

7 -493.7

8 1290.5

11 -1951.1

13 945.9

15 -1952.2

17 -16.8

18 -934.0

19 -494.2

20 -16.2

21 -1114.3

...

66

A transferência de carga para face oposta cria um nó adicional e obriga a

existência de um tirante vertical. Com isso, o número de elementos possíveis passou a

ser de 21 (C27), com um permanente, o número de elementos da treliça isostática 15 (3

x 7 -6). O número de combinações aumenta consideravelmente para 15504 (C1520).

Como pode ser visto no arquivo de saída, dentre essas 15504 treliças possíveis,

apenas 553 satisfazem a todas as verificações.

Como no exemplo anterior, o modelo com menor energia de deformação não

tem arranjo de armaduras adequado. A Figura 5.9 ilustra a treliça deste modelo mais

econômico, com os esforços em cada elemento.

Figura 5.9 - Modelo com menor energia de deformação para o exemplo alternativo.

Um modelo com arranjo de armaduras adequado foi encontrado com a 141ª

menor energia de deformação e está ilustrado na Figura 5.10.

Figura 5.10 - Modelo com arranjo adequado de armaduras para o exemplo alternativo.

67

5.3 Comentário sobre a variação da energia de deformação

Uma das mais interessantes aplicações do programa desenvolvido é a análise

de sensibilidade do bloco a erros ocorridos durante a execução do estaqueamento. A

energia de deformação é uma grandeza diretamente ligada à quantidade de aço que

será necessária para armar a estrutura. Por essa razão, ao estudar como essa energia

varia com a imposição de imperfeições geométricas, também estuda-se o impacto

dessas imperfeições na armadura.

Para ilustrar essa ideia, um exemplo simples de estudo de sensibilidade de

blocos de coroamento é aqui exposto. Para tal, o bloco da Figura 5.1 é novamente

estudado, impondo-se quatro deslocamentos, definidos aleatoriamente, em uma das

estacas. A Figura 5.11 ilustra esses deslocamentos que foram impostos à estaca 1

(em metros), levando às configurações que são aqui chamadas de estaqueamentos

imperfeitos.

Os impactos dessas variações na energia de deformação de cada modelo

possível serão mostrados a seguir.

Figura 5.11 - Simulação de imperfeições geométricas para estudo de sensibilidade.

Ressalta-se que para o exemplo de validação, foram gerados oito modelos de

treliças isostáticas que atenderam a todas as verificações. A partir de agora, essas

treliças são designadas por letras, de “A” a “H”, em ordem crescente, considerando a

energia de deformação com o estaqueamento perfeito (sem deslocamentos nas

estacas). A Figura 5.12 mostra os oito modelos possíveis para o bloco em estudo e

que são utilizados para a análise da sensibilidade a imperfeições.

68

Figura 5.12 - Arranjos de elementos possíveis para modelos do bloco do exemplo de validação.

(A) (B)

(C) (D)

(E) (F)

(G) (H)

69

Além da análise realizada no item 5.1.4, o programa foi executado para as

quatro configurações imperfeitas, mostradas na Figura 5.11. Para cada uma dessas

condições a energia de deformação foi registrada.

O histograma da Figura 5.13 mostra a energia de deformação obtida para cada

arranjo de elementos e cada situação de imperfeição geométrica.

Figura 5.13 - Histograma mostrando a variação de energia de deformação para cada situação.

De maneira geral, as configurações imperfeitas 1 e 4, nas quais as estacas se

aproximam mais da borda, geraram energias de deformação superiores à original. As

configurações 2 e 3, nas quais a distância da estaca até o centro diminuiu, fornecendo

energias similares ou menores que o da configuração original.

Se o número de configurações imperfeitas for aumentado e um limite radial de

deslocamento for adotado, pode-se chegar a um dimensionamento resistente aquela

grandeza de imperfeições.

A partir desse histograma é possível, gerar um gráfico que mostra, claramente,

a sensibilidade a deslocamentos de cada modelo. Esse gráfico se encontra na Figura

5.14. As setas, em cinza, mostram a energia de deformação máxima e mínima obtida

para cada modelo, enquanto o traço horizontal mostra a energia para o

estaqueamento perfeito.

70

Figura 5.14 - Gráfico mostrando a sensibilidade de cada modelo a imperfeições geométricas.

Apesar do pequeno número de configurações imperfeitas aqui estudadas, já se

pode diferenciar arranjos de forças internas mais sensíveis para um mesmo bloco de

coroamento. O modelo “H”, além de requerer uma energia de deformação muito maior

que os outros modelos para a situação ideal, também tem uma sensibilidade a

deslocamentos excessiva.

Os resultados da análise elaborada concordam com os resultados de ensaios

expostos por Blévot e Frémy (1967), que indicam que a armação em cruz para blocos

de quatro estacas apresenta capacidade de carga inferior se comparada com a

armação pelas arestas ou uma combinação de ambas.

71

6 CONCLUSÃO E SUGESTÕES DE CONTINUIDADE

A rotina de cálculo proposta cumpre o objetivo de automatizar a modelagem e

análise de um bloco de coroamento pelo método das bielas e tirantes. A partir dos

dados informando a geometria do bloco e das estacas, bem como a força atuante no

pilar, o programa executa o cálculo do estaqueamento, verifica a necessidade da

transferência de cargas aplicadas de tração, forma todos os modelos de bielas e

tirantes possíveis e analisa as treliças de cada um.

Ao final do programa, é necessária a interferência do usuário visto que a

modelagem em bielas e tirantes tem natureza manual. Deve-se escolher o modelo

mais adequado dentre as possibilidades que respeitam os requisitos definidos.

Portanto, o programa fornece ao engenheiro vários modelos possíveis para que o mais

indicado para construção seja escolhido.

Conforme o número de estacas e pontos de introdução de carga aumenta, tem-

se um número expressivo de treliças a serem analisadas. Por isso, devem-se impor

restrições ao programa para reduzir ao máximo o número de opções de modelos para

escolha feita pelo usuário. Na rotina elaborada, foram feitas restrições conceituais

como a obrigatoriedade da treliça ser isostática, o não cruzamento de bielas e a

limitação do ângulo entre bielas e tirantes. Além disso, uma restrição prática foi

imposta, não permitindo a existência de tirantes não verticais, ligando a base e o topo

do bloco.

Outras restrições podem ser adicionadas ao programa. Como por exemplo, o

usuário poderia informar, de antemão, nós que ele deseja ligar por tirantes no fundo do

bloco, criando assim, tirantes obrigatórios que reduzem o número de resultados

expostos ao final. Como um dos interesses primários deste trabalho é o estudo dos

resultados que podem ser obtidos, restrições opcionais foram evitadas e a única

adotada foi a descrita no parágrafo anterior.

Além do excesso de resultados gerados pelo programa, o aumento do número

de nós da treliça causa outro problema. A quantidade de combinações cresce de tal

forma que a partir de nove nós, o número de combinações ultrapassa a maior

dimensão que uma matriz pode ser formada em FORTRAN. No caso do compilador de

32 bits utilizado, esse número é 232-1-1 = 2147483647. Uma das sugestões de

continuidade do trabalho, que seria de grande importância para aplicação prática do

72

programa elaborado, é a resolução desse problema numérico e a otimização da

modelagem. 

O critério de energia de deformação para otimização da modelagem foi

implementado. A rotina calcula a energia de cada modelo e exibe os resultados do

modelo mais econômico em ordem crescente. Isso é de grande auxílio para o estudo

de blocos complexos, onde a distribuição de estacas não é usual. Define-se, do

melhor modelo com a menor energia de deformação a ser utilizado.

Propõem-se, ainda, duas outras sugestões de continuidade do trabalho. Uma

primeira é a inclusão do dimensionamento das armaduras e verificação das tensões

nos nós, fazendo uma iteração para ajuste da geometria da treliça. Uma segunda

sugestão é o estudo mais aprofundado de sensibilidade à imperfeições geométricas,

como citado no item 5.2, mostrando o impacto de erros do estaqueamento nas forças

internas do bloco. A utilização da automatização desenvolvida, imprescindível para tal

estudo.

73

REFERÊNCIAS BIBLIOGRÁFICAS

AMERICAN CONCRETE INSTITUTE, ACI 318-14, Building code requirements for

structural concrete. 1 ed. Farmington Hills.

ADEBAR, P., ZHOU, L., 1996, “Design of deep pile caps by strut-and-tie models”. ACI

Structural Journal, v. 32, n. 4 (julho-agosto).

ALVES. R. L., 2014, Fundações profundas. Notas de aula do curso de Estruturas de

Fundações, Escola Politécnica, Universidade Federal do Rio de Janeiro.

ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS, ABNT NBR 6118:2014,

Projeto de estruturas de concreto armado – procedimento. 3 ed. Rio de Janeiro.

BOSC, J. L., 2008, Dimensionnement de constructions selon l’Eurocode 2 à l’aide des

modèles bielles et tirants. 1 ed. Paris, Presses de l’École Nationale des Ponts et

Chaussées.

BLÉVOT, J. L., FRÉMY, R., 1967, “Semelles sur pieux”. Institute Technique du

Bâtiment et des Travaux Publics, v. 20, n. 230, pp. 223-295.

CHANTELOT, G., MATHERN, A., 2010, Strut-and-tie modeling of reinforced concrete

pile caps. M.Sc. thesis, Chalmers University of Technology, Göterborg, Sweden.

KLEIN, G. J., 2002, “Pile Cap”. In: Examples for the design of structural concrete with

strut-and-tie model, SP208, American Concrete Institute, pp. 213-224.

MARIA, I. C. S., 2007, Comparação de modelos para avaliação de esforços em

estacas. Projeto de graduação, Escola Politécnica, Universidade Federal do Rio de

Janeiro, Rio de Janeiro, Brasil.

MÖRSCH, E., 1912, Der eisenbetonbau, seine theorie und anwendung (Concreto

armado, teoria e aplicação). Stuttgart, Verlag Konrad Wittwer.

POULOS, H. G., DAVIS E. H., 1980, Pile foundations analysis and design. 1 ed. New

York, John Wiley and Sons Inc.

PRESS, W. H., et al., 1992, Numerical recipes in Fortran 77 – The art of scientific

computing. 2 ed. Cambridge, Cambridge University Press.

74

RITTER, W., 1899, “Die Bauweise Hennebique“ (O sistema Hennebique).

Schweizerische Bauzeitung, v. XXXIII, n. 7 (janeiro).

SANTOS, S. H. C., 2014, Detalhamento de estruturas de concreto armado. Notas de

aula do curso, Escola Politécnica, Universidade Federal do Rio de Janeiro.

SCHLAICH, J., SCHÄFER, K., JENNEWEIN, M., 1987, “Toward a consistent design of

structural concrete”. PCI Journal, v. 32, n. 3 (maio-junho), pp. 74-150.

SORIANO, H. L., 2005, Análise de estruturas – formulação matricial e implementação

computacional. 1 ed. Rio de Janeiro, Editora Ciência Moderna Ltda.

SÜSSEKIND, J. C., 1991, Curso de análise estrutural – v. 1, Estruturas isostáticas. 11

ed. São Paulo, Editora Globo S.A.

VELLOSO, D. A, LOPES, F. R., 2010, Fundações: critérios de projeto, investigação do

subsolo, fundações superficiais, fundações profundas. 1 ed. São Paulo, Oficina de

Textos.

WIGHT, J. K., MACGREGOR, J. G., 2012, Reinforced concrete: mechanics and

design. 6 ed. New Jersey, Person Education.

75

APÊNDICE 1 – LISTAGEM DO PROGRAMA

PROGRAM BT3D          IMPLICIT NONE      !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   BT3D                                                                           ! !   Programa para automatização da modelagem de bielas e tirantes em um bloco de   !  !   coroamento.                                                                    ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!          CHARACTER(60) :: arquivo     INTEGER(KIND = 8) :: ncomb     INTEGER :: nest, nnoscarga, nnosprim, ntotaldesl, nnostotal, nmodelok     INTEGER :: ocomb, nelemposs, nelemtotal, nelemiso, ntirobrig, nelemtopo     INTEGER :: mnos(190,2)     INTEGER, ALLOCATABLE :: mcomb(:,:), omodelotimo(:)     REAL :: hbloco, tetamin, tetamax, reacoes(10)     REAL :: C(20,3), mforext(20,3), mkest(20)     REAL, ALLOCATABLE :: U(:), menerg(:), mgeralesf(:,:)      !   Leitura no nome do arquivo de entrada de dados.     WRITE(*,*) 'Digite o nome do arquivo:'          READ(*,*) arquivo      !   Leitura do arquivo de entrada de dados. !   Dados sobre o bloco, estaqueamento e carregamentos.     CALL entrada (arquivo,hbloco,nest,C,mkest,nnoscarga,tetamin,tetamax,mforext,   &     nnosprim)      !   Rotina para cálculo do estaqueamento (reações de apoio) pelo método de Scheil.     CALL calculo_estaqueamento (nest,nnoscarga,C,mkest,mforext,reacoes)  !   Rotina para formação do modelo de treliça espacial e criação dos tirantes de  !   transferência das forças de tração para a face oposta do bloco.     CALL modelo (hbloco,nest,nnoscarga,C,mforext,nnosprim,nelemposs,mnos,          &     ntotaldesl,ntirobrig,nelemtotal,nnostotal,nelemiso)      !   Rotina para verificação da existência de elementos sobrepostos     CALL verifica1 (nest,nnoscarga,C,nnosprim,ntotaldesl,mnos,nelemposs,nelemiso,  &     nelemtotal,ncomb,nelemtopo)          ALLOCATE (U(ntotaldesl))     ALLOCATE (mcomb(ncomb,nelemiso+ntirobrig))     ALLOCATE (menerg(ncomb))     ALLOCATE (mgeralesf(ncomb,nelemiso+ntirobrig))      !   Geração da matriz como todas as combinações de elementos possível para foramr !   um modelo com o número de elementos de uma treliça internamente isostática.         CALL combina (nelemposs,ntirobrig,ncomb,nelemiso,mcomb)      !   Análise das treliças.         mgeralesf = 0     nmodelok = 0     menerg = 0      !   Verificações quanto a geometria da treliça.     DO ocomb = 1,ncomb         CALL verifica2 (C,nnosprim,nelemiso,nelemtotal,ntirobrig,mnos,             & 

76

        ncomb,mcomb,ocomb,menerg)           IF (menerg(ocomb) < 9E4) THEN             nmodelok = nmodelok + 1              !           Análise da treliça espacial isostática.             CALL deslocamento_trelesp (C,mforext,nnostotal,ntotaldesl,mnos,        &             nelemiso,ntirobrig,ncomb,mcomb,ocomb,U)             CALL esforcos_trelesp (C,mnos,ntotaldesl,nelemiso,ntirobrig,ncomb,     &             mcomb,U,ocomb,mgeralesf,menerg)              !           Verificações quanto aos esforços nos elementos.             CALL verifica3 (hbloco,C,nelemiso,nelemtotal,ntirobrig,mnos,ncomb,     &             mcomb,ocomb,menerg,mgeralesf,nmodelok,tetamin,tetamax,nelemtopo)         END IF     END DO          ALLOCATE (omodelotimo(nmodelok))      !   Impressão dos dados de entrada, de informações da análise e dos resultados em um !   arquivo de texto.     CALL relatorio (hbloco,nest,nnoscarga,C,reacoes,mforext,menerg,nelemiso,       &     ntirobrig,ncomb,mcomb,mgeralesf,nmodelok,omodelotimo)  !   Impressão gráfica do modelo na tela.     CALL graficos (C,nnostotal,ncomb,nelemiso,ntirobrig,mnos,mcomb,mgeralesf,      &     menerg,omodelotimo,nmodelok)  END PROGRAM 

 

SUBROUTINE entrada (arquivo,hbloco,nest,C,mkest,nnoscarga,tetamin,    & tetamax,mforext,nnosprim)      IMPLICIT NONE      !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   Subrotina para leitura dos dados de entrada do bloco, do estaquemento e do     ! !   carregamento.                                                                  ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!          CHARACTER(60) :: arquivo, linha     INTEGER :: i, j, nest, nnoscarga, tirdiagonais, nnosprim     REAL :: hbloco, C(20,3), mforext(20,3), mkest(20), tetamin, tetamax              OPEN (1,file=arquivo)     OPEN (2,file='dadosentrada.txt')      !   Preparação do arquivo de entrada.        DO WHILE (.not. EOF(1))         READ(1,'(A60)') linha         IF(linha(:1) /= ";") WRITE(2,'(A60)') linha     END DO          REWIND(2)      !   Leitura da altura do bloco e do número de estacas.     READ(2,*) hbloco         READ(2,*) nest      !   Leitura das coordenadas e da rigidez de cada estaca.     DO i=1,nest         READ(2,*) C(i,1), C(i,2), mkest(i)         C(i,3) = ‐hbloco     END DO      

77

!   Leitura do número de nós carregados e da coordenada de cada nó.     mforext=0          READ(2,*) nnoscarga       DO i=1,nnoscarga         READ(2,*) C(nest+i,1), C(nest+i,2), mforext(NEST+i,3)         C(nest+i,3) = 0     END DO          nnosprim = nest + nnoscarga  !   Leitura dos limites infrior e superior dos ângulos de inclinação entre bielas !   e tirantes.     READ(2,*) tetamin, tetamax          REWIND(1)     REWIND (2)          CLOSE(1)     CLOSE(2)      END SUBROUTINE 

 

SUBROUTINE calculo_estaqueamento(nest,nnoscarga,C,mkest,mforext,reacoes)      IMPLICIT NONE      !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   Subrotina para cálculo da distribuição das cargas entre as estacas.            ! !   Referências:                                                                   ! !       Ricardo Valeriano ‐ Notas de aula ‐ Fundações profundas.                   ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!      INTEGER :: i,nest,nnoscarga     REAL :: C(20,3), mkest(20), mforext(20,3),reacoes(10)     REAL :: centro(2), Caux(20,2), Cprin(20,2)     REAL :: v, mx, my, ixx, iyy, ixy, ktot, mxprin, myprin, alfa      !   Transformação das forças verticas dos diversos nós de carga em um carregamento !   de força vertical e momentos horizontais no ponto (0,0).     v = 0     mx = 0     my = 0     DO i = 1,nnoscarga         v = v + mforext(nest+i,3)         mx = mx + mforext(nest+i,3)*C(nest+i,2)         my = my ‐ mforext(nest+i,3)*C(nest+i,1)     END DO      !   Definição da soma das rijezas de todas as estacas.     ktot = 0     DO i = 1,nest         ktot = ktot + mkest(i)     END DO      !   Definição do centro de rigidez do estaqueamento     centro = 0     DO i = 1,nest         centro(1) = centro(1) + mkest(i)*C(i,1)/(ktot)         centro(2) = centro(2) + mkest(i)*C(i,2)/(ktot)     END DO      !   Cálculo das coordenadas em relação ao eixo principal. 

78

    DO i = 1,nest         Caux(i,1) = C(i,1) ‐ centro(1)         Caux(i,2) = C(i,2) ‐ centro(2)         mx = mx ‐ v*centro(2)         my = my + v*centro(1)     END DO      !   Cálculo das inercias do estaqueamento em relação ao centro original.     ixy = 0     ixx = 0     iyy = 0     DO i = 1,nest         ixy = ixy + mkest(i)/ktot*Caux(i,1)*Caux(i,2)         ixx = ixx + mkest(i)/ktot*Caux(i,2)**2         iyy = iyy + mkest(i)/ktot*Caux(i,1)**2     END DO      !   Cálculo do ângulo de rotação dos eixos para se tornarem eixos principais.     alfa = 0.5*ATAN(2*ixy/(ixx + iyy))      !   Transformação das coordenadas e das componentes do momento para as direções !   principais.     DO i = 1,nest         Cprin(i,1) = Caux(i,1)*COS(alfa) + Caux(i,2)*SIN(alfa)         Cprin(i,2) = ‐Caux(i,1)*SIN(alfa) + Caux(i,2)*COS(alfa)         mxprin = mx*COS(alfa) + my*SIN(alfa)         myprin = ‐mx*SIN(alfa) + my*COS(alfa)     END DO      !   Transformação das inercias do estaqueamento.     ixx = 0     iyy = 0     DO i = 1,nest         ixx = ixx + mkest(i)/ktot*Cprin(i,2)**2         iyy = iyy + mkest(i)/ktot*Cprin(i,1)**2     END DO      !   Cálculo das forças nas estacas.     DO i=1,nest         mforext(i,3) = v + mxprin*Cprin(i,2)/ixx ‐ myprin*Cprin(i,1)/iyy         mforext(i,3) = ‐ mkest(i)/ktot*mforext(i,3)         reacoes(i) = mforext(i,3)     END DO          END SUBROUTINE calculo_estaqueamento 

 

SUBROUTINE modelo (hbloco,nest,nnoscarga,C,mforext,nnosprim,nelemposs,mnos,        & ntotaldesl,ntirobrig,nelemtotal,nnostotal,nelemiso)          IMPLICIT NONE  !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   Subrotina para transferência de cargas aplicadas de tração para a face oposta  ! !   do bloco.                                                                      ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!          INTEGER :: i, j, k     INTEGER :: nest, nnosprim, nnoscarga, nnostotal, ntotaldesl, nnosnovos     INTEGER :: ntirobrig, nelemposs, nelemtotal, nelemiso     INTEGER :: mnos(190,2)     REAL :: mforext(20,3), C(20,3), hbloco      !   Iniciar número de nós novos.     nnosnovos = 0 

79

     !   Iniciar número de tirantes obrigatórios.     ntirobrig = 0      !   Caso de estacas tracionadas.     DO i = 1,nest         IF (mforext(i,3) < 0) THEN             nnosnovos = nnosnovos + 1             C(nnosprim+nnosnovos,1) = C(i,1)             C(nnosprim+nnosnovos,2) = C(i,2)             C(nnosprim+nnosnovos,3) = 0             ntirobrig = ntirobrig +1             mnos (ntirobrig,1) = i             mnos (ntirobrig,2) = nnosprim + nnosnovos         END IF     END DO      !   Caso de carga aplicada de tração     DO i = 1,nnoscarga         IF (mforext(nest+i,3) > 0) THEN             nnosnovos = nnosnovos +1             C(nnosprim+nnosnovos,1) = C(i+nest,1)             C(nnosprim+nnosnovos,2) = C(i+nest,2)             C(nnosprim+nnosnovos,3) = ‐hbloco             ntirobrig = ntirobrig +1             mnos (ntirobrig,1) = i + nest             mnos (ntirobrig,2) = nnosprim + nnosnovos         END IF     END DO                          !   Número de nós total.     nnostotal = nnosprim + nnosnovos     ntotaldesl = 3*nnostotal      !   Geração dos elementos possíveis.     nelemtotal = ntirobrig     DO i = 1,(nnosprim + nnosnovos‐1)         DO j = i+1,(nnosprim+nnosnovos)             nelemtotal = nelemtotal + 1             mnos(nelemtotal,1) = i             mnos(nelemtotal,2) = j             DO k = 1,ntirobrig                 IF((i == mnos(k,1)) .and. (j == mnos(k,2))) nelemtotal = nelemtotal‐1                 IF((i == mnos(k,2)) .and. (j == mnos(k,1))) nelemtotal = nelemtotal‐1             END DO         END DO     END DO         nelemposs = nelemtotal‐ntirobrig      !   Número de elementos no modelo isostático, além dos tirantes obrigatórios.     nelemiso = 3*nnostotal ‐ 6 ‐ ntirobrig      END SUBROUTINE 

 

SUBROUTINE verifica1(nest,nnoscarga,C,nnosprim,ntotaldesl,mnos,nelemposs,nelemiso, & nelemtotal,ncomb,nelemtopo)          IMPLICIT NONE  !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   Subrotina para verificação da existência de elementos sobreposto e eventual    ! !   exclusão de um desses elementos.                                               ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!      

80

    INTEGER :: i, j, no1, no2, no3, nest, nnoscarga, nnosprim     INTEGER :: nelemposs, ntotaldesl, nelemiso, nelemtotal, nelemtopo     INTEGER :: mnos(190,2)     REAL :: C(20,3), comp1, comp2, comp3, det, delta(3,3)     INTEGER(KIND = 8) :: ncomb, combinacoes      !   Verificação das superposições no plano do fundo do bloco a cada três nós.     DO no1 = 1,nest         DO no2 = no1+1,nest             DO no3 = no2+1,nest                  !               Cálculo do determinante da matriz 3x3 definidas pelas coordenadas. !               dos três nós.                 det = C(no1,1)*C(no2,2)+C(no1,2)*C(no3,1)+C(no2,1)*C(no3,2)                 det = det ‐ C(no1,1)*C(no3,2)‐C(no1,2)*C(no2,1)‐C(no2,2)*C(no3,1)                  !               Verificação da colinearidade dos três nós no plano (determinante  !               igual a zero).                 IF (ABS(det) < 1E‐5) THEN                      !                   Exclusão do maior elemento.                          delta(1,1) = C(no2,1)‐C(no1,1)                     delta(1,2) = C(no2,2)‐C(no1,2)                     delta(1,3) = C(no2,3)‐C(no1,3)                     delta(2,1) = C(no3,1)‐C(no1,1)                     delta(2,2) = C(no3,2)‐C(no1,2)                     delta(2,3) = C(no3,3)‐C(no1,3)                     delta(3,1) = C(no3,1)‐C(no2,1)                     delta(3,2) = C(no3,2)‐C(no2,2)                     delta(3,3) = C(no3,3)‐C(no2,3)                     comp1 = SQRT(delta(1,1)**2 + delta(1,2)**2 + delta(1,3)**2)                         comp2 = SQRT(delta(2,1)**2 + delta(2,2)**2 + delta(2,3)**2)                     comp3 = SQRT(delta(3,1)**2 + delta(3,2)**2 + delta(3,3)**2)                     IF ((comp1 > comp2) .and. (comp1 > comp3)) THEN                         DO i=1,nelemposs                             IF (((mnos(i,1) == no1) .and. (mnos(i,2) == no2)) .or. &                             ((mnos(i,1) == no2) .and. (mnos(i,2) == no1)))         &                             mnos(i,1) = ‐1                         END DO                     ELSE IF ((comp2 > comp1) .and. (comp2 > comp3)) THEN                         DO i=1,nelemposs                             IF (((mnos(i,1) == no1) .and. (mnos(i,2) == no3)) .or. &                             ((mnos(i,1) == no3) .and. (mnos(i,2) == no1)))         &                             mnos(i,1)=‐1                         END DO                     ELSE                          DO i=1,nelemposs                             IF (((mnos(i,1) == no2) .and. (mnos(i,2) == no3)) .or. &                             ((mnos(i,1) == no3) .and. (mnos(i,2) == no2)))         &                             mnos(i,1)=‐1                         END DO                     END IF                 END IF             END DO         END DO     END DO       !   Reordenação da matriz de nós.     DO i = 1,nelemposs‐1         IF (mnos(i,1) == ‐1) THEN             DO j = i,nelemposs‐1                 mnos(j,1) = mnos(j+1,1)                 mnos(j,2) = mnos(j+1,2)             END DO             mnos(j,1) = 0             mnos(j,2) = 0 

81

            nelemposs = nelemposs ‐ 1             nelemiso = nelemiso ‐ 1             nelemtotal = nelemtotal ‐ 1         END IF     END DO      !   Número de modelos isostáticos.     ncomb = combinacoes(nelemposs,nelemiso)      !   Número de elementos ligando nós de carga     IF (nnoscarga > 2) THEN         nelemtopo = combinacoes(nnoscarga,2)     ELSE IF (nnoscarga == 1) THEN         nelemtopo = 0     ELSE         nelemtopo = 1     END IF  END SUBROUTINE          FUNCTION combinacoes(a,b)  !   Função que retorna o número de combinaçãoes de 'a' elementos combinados de !   'b' em 'b'.          INTEGER(KIND = 8) :: i, a, b, combinacoes, ft1, ft2 !    ft1=1 !    DO i=(b+1),a !        ft1 = ft1*i !    END DO      !    ft2=1     combinacoes = 1     DO i=1,(a‐b)         combinacoes = combinacoes*(b+i)/i !        ft2 = ft2*i     END DO      !    combinacoes = ft1/ft2      END FUNCTION 

 

SUBROUTINE combina (nelemposs,ntirobrig,ncomb,nelemiso,mcomb)      IMPLICIT NONE      !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   Subrotina para geração de matriz com todas as combinações possíveis formando   ! !   modelos isostáticos e mantendo os tirantes obrigatórios.                       ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!          INTEGER :: i, j, k, x, w, aux(0:100)     INTEGER :: nelemposs, nelemiso, ntirobrig, comb, mcomb(ncomb,nelemiso+ntirobrig)     INTEGER(KIND = 8) :: ncomb          x = nelemposs     k = nelemiso         DO i = 1, k         aux(i‐1) = i     END DO          OPEN (5,file="COMB.txt")      

82

!   Primeira combinação     j = 0     DO i = 1,ntirobrig         WRITE(5,5) i         j = j + 1     END DO     DO i = 0,(k‐1)         WRITE(5,5) aux(i) + ntirobrig 5       FORMAT (i3,$)         j = j + 1         IF (j == 30) THEN             j = 0             WRITE(5,*)         END IF     END DO     WRITE (5,*)      !   Gerador das demais combinações     DO w = 1,(ncomb‐1)         i = k ‐ 1         DO WHILE (aux(i) == (x‐k+i+1))             i = i ‐ 1             IF (i < 0) CALL EXIT()         END DO         aux(i) = aux(i) + 1         DO j = (i+1),(k‐1)             aux(j) = aux(i) + j ‐ i         END DO      !       Impressão da combinação         j = 0         DO i = 1,ntirobrig             WRITE(5,5) i             j = j + 1         END DO         DO i = 0,(k‐1)             WRITE(5,5) aux(i) + ntirobrig             j = j + 1             IF (j == 30) THEN                 j = 0                 WRITE (5,*)             END IF         END DO         WRITE (5,*)     END DO          REWIND (5)          !Leitura dos dados para formação da matriz.     DO i = 1,ncomb         DO j = 1,nelemiso+ntirobrig‐1             READ(5,'(i3)',advance='no') mcomb(i,j)         END DO         READ(5,'(i3)') mcomb(i,nelemiso+ntirobrig)     END DO          CLOSE (5)     END SUBROUTINE 

 

SUBROUTINE  verifica2 (C,nnosprim,nelemiso,nelemtotal,ntirobrig,mnos,ncomb,mcomb,  & ocomb,menerg)          IMPLICIT NONE 

83

     !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   Subrotina para verificação do equilíbrio de todos os nós e da inclinação das   ! !   bielas.                                                                        ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!          INTEGER :: i, j, k, x, w, teste, elem      INTEGER :: nnosprim, nelemiso, nelemtotal, ntirobrig, ocomb     INTEGER :: mnos(190,2), mcomb(ncomb,nelemiso+ntirobrig)     REAL :: C(20,3), deltax, deltay, deltaz, sendirz, comp     REAL :: menerg(ncomb), mvet(nelemtotal,3), vetref(3), mvetnormal(nelemtotal,3)     INTEGER(KIND = 8) :: ncomb      !   Formação da matriz de vetores dos elementos.     mvet = 0     DO elem = (ntirobrig+1),nelemtotal         mvet(elem,1) = C(mnos(elem,2),1) ‐ C(mnos(elem,1),1)         mvet(elem,2) = C(mnos(elem,2),2) ‐ C(mnos(elem,1),2)         mvet(elem,3) = C(mnos(elem,2),3) ‐ C(mnos(elem,1),3)     END DO      !   Verificação do número mínimo de elementos ligados a cada nó (3).     DO i = 1,nnosprim         k = 0         DO j = (ntirobrig+1),(nelemiso+ntirobrig)             elem = mcomb(ocomb,j)             IF ((mnos(elem,1) == i).or.(mnos(elem,2) == i)) k = k + 1         END DO         IF (k < 3) menerg(ocomb) = 1E7     END DO       !   Verificação da existencia de elementos não coplanares ligados ao nó. !   Obtenção do vetor de referência no nó.     DO i = 1,nnosprim         mvetnormal = 0         x = 0         DO j = (ntirobrig+1),(nelemiso+ntirobrig)             elem = mcomb(ocomb,j)             IF ((mnos(elem,1) == i).or.(mnos(elem,2) == i)) THEN                 vetref(1) = mvet(elem,1)                 vetref(2) = mvet(elem,2)                 vetref(3) = mvet(elem,3)                 GO TO 10             END IF         END DO          !       Obtenção dos vetores normais dos planos de cada um dos outros vetores do nó !       com o vetor de referência.     10      DO  k = (j+1),(nelemiso+ntirobrig)             elem = mcomb(ocomb,k)             IF ((mnos(elem,1) == i).or.(mnos(elem,2) == i)) then                 mvetnormal(elem,1) = vetref(2)*mvet(elem,3) ‐ vetref(3)*mvet(elem,2)                 mvetnormal(elem,2) = vetref(3)*mvet(elem,1) ‐ vetref(1)*mvet(elem,3)                 mvetnormal(elem,3) = vetref(1)*mvet(elem,2) ‐ vetref(2)*mvet(elem,1)                 comp = SQRT(mvetnormal(elem,1)**2 + mvetnormal(elem,2)**2          &                 +mvetnormal(elem,3)**2)                 mvetnormal(elem,1) = mvetnormal(elem,1)/comp                 mvetnormal(elem,2) = mvetnormal(elem,2)/comp                 mvetnormal(elem,3) = mvetnormal(elem,3)/comp                 x = x + 1             END IF         END DO          !       Reordenação da matriz de vetores normais         DO k = 1,(nelemtotal‐1)             DO j = 1,nelemtotal 

84

                IF ((ABS(mvetnormal(k,1)) < 1E‐5).and.(ABS(mvetnormal(k,2)) < 1E‐5)&                 .and.(ABS(mvetnormal(k,3)) < 1E‐5)) THEN                     DO w = k,(nelemtotal‐1)                         mvetnormal(w,1) = mvetnormal(w+1,1)                         mvetnormal(w,2) = mvetnormal(w+1,2)                         mvetnormal(w,3) = mvetnormal(w+1,3)                         END DO                         mvetnormal(w,1) = 0                          mvetnormal(w,2) = 0                         mvetnormal(w,3) = 0                 END IF             END DO         END DO          !   Comparação dos vetores normais           teste = 1                 DO k = 1,(x‐1)             IF ((ABS(mvetnormal(k,1)‐mvetnormal(k+1,1)) < 1E‐5).and.               &             (ABS(mvetnormal(k,2)‐mvetnormal(k+1,2)) < 1E‐5).and.                   &             (ABS(mvetnormal(k,3)‐mvetnormal(k+1,3)) < 1E‐5)) THEN                 teste = teste*1             ELSE IF ((ABS(mvetnormal(k,1)+mvetnormal(k+1,1)) < 1E‐5).and.          &             (ABS(mvetnormal(k,2)+mvetnormal(k+1,2)) < 1E‐5).and.                   &             (ABS(mvetnormal(k,3)+mvetnormal(k+1,3)) < 1E‐5)) THEN                 teste = teste*1             ELSE                  teste = teste*0             END IF         END DO              IF (teste == 1) menerg(ocomb) = 1E7     END DO      END SUBROUTINE 

 

SUBROUTINE deslocamento_trelesp (C,mforext,nnostotal,ntotaldesl,mnos,nelemiso,     &     ntirobrig,ncomb,mcomb,ocomb,U)             IMPLICIT NONE  !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!  !   Subrotina de análise de uma treliça espacial.                                  ! !   Referências:                                                                   ! !       Soriano ‐ Análise de Estruturas ‐ Formulaçao matricial ...                 ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!          INTEGER :: i, j, w, ocomb, elem     INTEGER :: nnostotal, ntotaldesl, nelemiso, ntirobrig     INTEGER :: mnos(190,2), desl(6), mcomb(ncomb,nelemiso+ntirobrig)      REAL :: C(20,3), mforext(20,3), comp, compmax, R(6,6)     REAL :: Kelemglobal(6,6), Kelemlocal(6,6)     REAL :: K(ntotaldesl,ntotaldesl), F(ntotaldesl), U(ntotaldesl)     INTEGER(KIND = 8) :: ncomb      !   Formação da matriz de rigidez da treliça espacial.     K = 0     compmax = 0     DO w = 1,nelemiso+ntirobrig         elem = mcomb(ocomb,w)         CALL elemento_trelesp (C,mnos,elem,desl,R,Kelemglobal,Kelemlocal,comp)          DO i = 1,6             DO j = 1,6                 K(desl(i),desl(j)) = K(desl(i),desl(j)) + Kelemglobal(i,j)             END DO 

85

        END DO         IF (comp > compmax) THEN             compmax = comp         END IF     END DO      !   Aplicação  de molas com baixa rigidez     DO i = 1,ntotaldesl         K(i,i) = K(i,i) + 0.0001/compmax     END DO                  !   Formação do vetor de forças.     F = 0         DO i = 1,nnostotal         DO j = 1,3             w = 3*(i‐1)+j             F(w) = F(w) + mforext(i,j)         END DO     END DO      !   Inversão da matriz de rigidez     CALL gaussjordan(K,ntotaldesl,ntotaldesl)      !   Matriz de deslocamentos dos nós.     U = MATMUL(K,F)  END SUBROUTINE 

 

SUBROUTINE elemento_trelesp (C,mnos,elem,desl,R,Kelemglobal,Kelemlocal,comp)          IMPLICIT NONE !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   Rotina para determinação da matriz de rigidez, no sistema de referência        ! !   global, do elemento de treliça espacial.                                       ! !   Referências:                                                                   ! !       Soriano ‐ Análise de Estruturas ‐ Formulaçao matricial ...                 ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!          INTEGER :: i, j, elem     INTEGER :: mnos(190,2), desl(6)     REAL :: deltax, deltay, deltaz, comp, cosdirx, cosdiry, cosdirz, cosdirxz     REAL :: C(20,3), R(6,6), Rtransp(6,6), Kelemlocal(6,6), Kelemglobal(6,6)      !   Númeração global dos deslocamentos dos nós do elemento.     desl(1) = 3*(mnos(elem,1)‐1)+1     desl(2) = 3*(mnos(elem,1)‐1)+2     desl(3) = 3*(mnos(elem,1)‐1)+3     desl(4) = 3*(mnos(elem,2)‐1)+1     desl(5) = 3*(mnos(elem,2)‐1)+2     desl(6) = 3*(mnos(elem,2)‐1)+3      !   Projeções, comprimento e cossenos diretores.     deltax = C(mnos(elem,2),1)‐C(mnos(elem,1),1)     deltay = C(mnos(elem,2),2)‐C(mnos(elem,1),2)     deltaz = C(mnos(elem,2),3)‐C(mnos(elem,1),3)     comp = SQRT(deltax**2+deltay**2+deltaz**2)     cosdirx = deltax/comp     cosdiry = deltay/comp     cosdirz = deltaz/comp     cosdirxz = SQRT(cosdirx**2+cosdirz**2)      !   Matriz de rotação do elemento.     R = 0     IF (cosdirxz > 0) THEN 

86

        R(1,1) = cosdirx         R(1,2) = cosdiry         R(1,3) = cosdirz         R(2,1) = ‐cosdirx*cosdiry/cosdirxz         R(2,2) = cosdirxz         R(2,3) = ‐cosdiry*cosdirz/cosdirxz         R(3,1) = ‐cosdirz/cosdirxz         R(3,3) = cosdirx/cosdirxz     ELSE         R(1,2) = cosdiry         R(2,1) = ‐cosdiry         R(3,3) = 1     END IF          DO i = 1,3         DO j = 1,3             R(i+3,j+3) = R(i,j)         END DO     END DO      !   Transposição da matriz de rigidez.         DO i=1,6         DO j=1,6             Rtransp(i,j) = R(j,i)         END DO     END DO      !   Matriz de rigidez do elemento no sistema de referência local.     Kelemlocal = 0     Kelemlocal(1,1) = 1/comp     Kelemlocal(1,4) = ‐1/comp     Kelemlocal(4,1) = ‐1/comp     Kelemlocal(4,4) = 1/comp      !   Matriz de rigidez do elemento no sistema de referência global.     Kelemglobal = MATMUL(Rtransp,Kelemlocal)     Kelemglobal = MATMUL(Kelemglobal,R)      END SUBROUTINE 

 

SUBROUTINE gaussjordan(a,n,np)  !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   Subrotina para inversão de uma matriz.                                         ! !   A matriz "a" será substituída pela sua inversa no processo.                    ! !   Referências:                                                                   ! !       PRESS et. al. ‐ Numerical recipes in fortran 77.                           ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!     INTEGER :: n, np, nmax     REAL :: a(np,np)     PARAMETER (nmax=50)     INTEGER :: i, icol, irow, j, k, l, ll, indxc(nmax), indxr(nmax), ipiv(nmax)     REAL :: big, dum, pivinv      DO j = 1,n     ipiv(j) = 0     END DO     DO i = 1,n         big = 0.         DO j = 1,n             IF(ipiv(j) .ne. 1) THEN                 DO k = 1,n                     IF(ipiv(k) .eq. 0) THEN                         IF(abs(a(j,k)) .ge. big) THEN 

87

                            big = abs(a(j,k))                             irow = j                             icol = k                         END IF                     ELSE IF(ipiv(k) .gt. 1) THEN                         PAUSE 'matriz singular encontrada'                     END IF                 END DO             END IF         END DO         ipiv(icol) = ipiv(icol) + 1         IF  (irow.ne.icol) THEN             DO l = 1,n                 dum = a(irow,l)                 a(irow,l) = a(icol,l)                 a(icol,l) = dum             END DO         END IF         indxr(i) = irow         indxc(i) = icol         IF(a(icol,icol) .eq. 0.) PAUSE 'matriz singular encontrada'         pivinv = 1./a(icol,icol)         a(icol,icol) = 1.         DO l = 1,n             a(icol,l) = a(icol,l)*pivinv         END DO         DO ll = 1,n             IF(ll .ne. icol) THEN                 dum = a(ll,icol)                 a(ll,icol) = 0.                 DO l = 1,n                     a(ll,l) = a(ll,l) ‐ a(icol,l)*dum                 END DO             END IF         END DO     END DO      DO l = n,1,‐1         IF (indxr(l) .ne. indxc(l)) THEN             DO k = 1,n                 dum = a(k,indxr(l))                 a(k,indxr(l)) = a(k,indxc(l))                 a(k,indxc(l)) = dum             END DO         END IF     END DO          RETURN END SUBROUTINE 

 

SUBROUTINE esforcos_trelesp (C,mnos,ntotaldesl,nelemiso,ntirobrig,ncomb,mcomb,U,  & ocomb,mgeralesf,menerg)          IMPLICIT NONE      !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   Rotina para cálculo dos esforços normais nos elementos de uma treliça espacial,!  !   a partir da matriz de deslocamentos já calculada. Registro das "energias de    ! !   deslocamento" de cada modelo.                                                  ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!          INTEGER :: i, j, x, nelemiso, ntirobrig, ntotaldesl, ocomb, elem     INTEGER :: mnos(190,2), desl(6), mcomb(ncomb,nelemiso+ntirobrig)     INTEGER(KIND = 8) :: ncomb 

88

    REAL :: C(20,3), comp, R(6,6)      REAL :: Kelemglobal(6,6), U(ntotaldesl), Uelemglobal(6), Kelemlocal(6,6)     REAL :: menerg(ncomb), mgeralesf(ncomb,nelemiso+ntirobrig), esf(6)          menerg(ocomb) = 0      !   Cálculo dos esforços axias em cada elemento.         DO x = 1,(nelemiso+ntirobrig)         elem = mcomb(ocomb,x)         CALL elemento_trelesp (C,mnos,elem,desl,R,Kelemglobal,Kelemlocal,comp)         DO i = 1,6             Uelemglobal(i) = U(desl(i))         END DO         esf = MATMUL(R,Uelemglobal)         esf = MATMUL(Kelemlocal,esf)      !   Cálculo da energia de cada modelo.                 IF (esf(4) > 0) menerg (ocomb) = menerg(ocomb)+esf(4)*comp         mgeralesf(ocomb,x) = esf(4)         END DO      END SUBROUTINE 

 

SUBROUTINE  verifica3 (hbloco,C,nelemiso,nelemtotal,ntirobrig,mnos,ncomb,mcomb,    &  ocomb,menerg,mgeralesf,nmodelok,tetamin,tetamax,nelemtopo)      IMPLICIT NONE      !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !Rotina para verificação do cruzamento de bielas e da existência de diagonais      ! !com tração                                                                        ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!      INTEGER :: i, j, elem, elem1, elem2, ocomb, nmodelok, tirdiagonais INTEGER :: nelemiso, nelemtotal, ntirobrig, nelemtopo INTEGER :: mnos(190,2), mcomb(ncomb,nelemiso+ntirobrig) REAL :: t, z, w, cosdirz, cosalfa, tetamin, tetamax, esfmedio REAL :: mvet(nelemtotal,3), aux(3), mcomp(nelemtotal) REAL :: hbloco, C(20,3), mgeralesf(ncomb,nelemiso+ntirobrig), menerg(ncomb) INTEGER(KIND = 8) :: ncomb  !Formação da matriz de vetores dos elementos. mvet = 0 DO elem = ntirobrig+1,nelemtotal     mvet(elem,1) = C(mnos(elem,2),1)‐C(mnos(elem,1),1)     mvet(elem,2) = C(mnos(elem,2),2)‐C(mnos(elem,1),2)     mvet(elem,3) = C(mnos(elem,2),3)‐C(mnos(elem,1),3)     mcomp(elem) = SQRT(mvet(elem,1)**2 + mvet(elem,2)**2 + mvet(elem,3)**2) END DO  !Cálculo da média dos esforços nos elementos. esfmedio = 0 DO i = 1,(nelemiso+ntirobrig)     esfmedio = esfmedio + mgeralesf(ocomb,i) END DO esfmedio = esfmedio/(nelemiso+ntirobrig)      !Verificação do cruzamento das bielas t = 0 DO i = (ntirobrig+1),(nelemiso+ntirobrig‐1)     elem1 = mcomb(ocomb,i)     IF (mgeralesf(ocomb,i) < ‐10E‐5) THEN         DO j = (i+1),(nelemiso+ntirobrig)             elem2 = mcomb(ocomb,j) 

89

            IF (mgeralesf(ocomb,j) < ‐10E‐5) THEN                 IF ((mnos(elem1,1) == mnos(elem2,1)) .or. (mnos(elem1,2) ==        &                 mnos(elem2,1)) .or. (mnos(elem1,2) == mnos(elem2,2))) GO TO 20                 aux(1) = C(mnos(elem2,1),1) ‐ C(mnos(elem1,1),1)                 aux(2) = C(mnos(elem2,1),2) ‐ C(mnos(elem1,1),2)                 aux(3) = C(mnos(elem2,1),3) ‐ C(mnos(elem1,1),3)                 w = aux(1)*mvet(elem1,2)*mvet(elem2,3)                 w = w + aux(2)*mvet(elem1,3)*mvet(elem2,1)                 w = w + aux(3)*mvet(elem1,1)*mvet(elem2,2)                 w = w ‐ aux(1)*mvet(elem1,3)*mvet(elem2,2)                 w = w ‐ aux(2)*mvet(elem1,1)*mvet(elem2,3)                 w = w ‐ aux(3)*mvet(elem1,2)*mvet(elem2,1)                 IF (ABS(w) < 10E‐5) THEN                     t = (C(mnos(elem1,1),2)‐C(mnos(elem2,1),2))*mvet(elem2,1)                     t = t ‐ (C(mnos(elem1,1),1)‐C(mnos(elem2,1),1))*mvet(elem2,2)                     t = t/(mvet(elem1,1)*mvet(elem2,2)‐mvet(elem2,1)*mvet(elem1,2))                     IF (ABS(t) < mcomp(elem1)) THEN                         menerg(ocomb) = 1E7                     END IF                 END IF             END IF 20      END DO     END IF END DO      !Verificação de tirantes diagonais DO i = ntirobrig+1,nelemiso+ntirobrig     elem = mcomb(ocomb,i)     cosdirz = ABS(mvet(elem,3))/mcomp(elem)     IF((cosdirz > 10E‐5) .and. (cosdirz < 0.99)) THEN         IF (mgeralesf(ocomb,i) > 0) menerg(ocomb) = 1E7     END IF END DO      !Verificação da inclinação das bielas DO i = (ntirobrig+1),(nelemiso+ntirobrig‐1)     elem1 = mcomb(ocomb,i)     IF ((elem1 <= (nelemtotal‐nelemtopo)) .and.                                    &     (mgeralesf(ocomb,i) > esfmedio/100)) THEN         DO j = (i+1),(nelemiso+ntirobrig)             elem2 = mcomb(ocomb,j)             IF ((elem2 <= (nelemtotal‐nelemtopo)) .and.                            &             (mgeralesf(ocomb,j) > esfmedio/100)) THEN                  !               Verificação se os dois elementos tem um nó em comum.                 IF ((mnos(elem1,1) == mnos(elem2,1)) .or.                          &                 (mnos(elem1,2) == mnos(elem2,1)) .or.                              &                (mnos(elem1,2) == mnos(elem2,2))) THEN                  !                   Verificação se os esforços tem sinais opostos.                     IF ((mgeralesf(ocomb,i)*mgeralesf(ocomb,j)) < ‐1E‐5) THEN                          !                       Cálculo do ângulo entre vetores.                         cosalfa = mvet(elem1,1)*mvet(elem2,1)                         cosalfa = cosalfa + mvet(elem1,2)*mvet(elem2,2)                         cosalfa = cosalfa + mvet(elem1,3)*mvet(elem2,3)                         cosalfa = ABS(cosalfa)/(mcomp(elem1)*mcomp(elem2))                                         IF ((cosalfa > COS(3.1416*tetamin/180)) .or.               &                         (cosalfa < COS(3.1416*tetamax/180))) menerg(ocomb) = 1E7                     END IF                 END IF             END IF         END DO     END IF END DO  

90

!Diminuição do número de combinações aceitáveis.     IF (menerg(ocomb) > 9E4) nmodelok = nmodelok ‐ 1      END SUBROUTINE 

 

SUBROUTINE relatorio (hbloco,nest,nnoscarga,C,reacoes,mforext,menerg,nelemiso,     & ntirobrig,ncomb,mcomb,mgeralesf,nmodelok,omodelotimo)          IMPLICIT NONE      !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!     !   Subrotina para a impressão dos dados do bloco e resutados da análise no arquivo! !    de texto RELATORIO.txt.                                                       ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!          INTEGER :: i, j, nest, nnoscarga, nelemiso, ntirobrig     INTEGER :: nmodelok, omodelotimo(nmodelok), mcomb(ncomb,nelemiso+ntirobrig)     REAL :: hbloco, C(20,3), reacoes(10), mforext(20,3), aux(1)     REAL :: menerg(ncomb), menergaux(ncomb), mgeralesf(ncomb,nelemiso+ntirobrig)     INTEGER(KIND = 8) :: ncomb      !   Verificação se existe modelo que atenda a todas as verifiações.         IF (MINVAL(menerg) > (9E4)) THEN         PAUSE 'Impóssivel de modelar com os limites de inclinação fornecidos.'     END IF      !   Localização do modelo que gasta menos energia.     menergaux = menerg     DO i = 1,nmodelok         aux = MINLOC(menergaux)         omodelotimo(i) = aux(1)         menergaux(omodelotimo(i)) = 10E5     END DO      !   Impressão dos dados de entrada     OPEN (6,file='RELATORIO.txt')          WRITE (6,15) 15  FORMAT('RESULTADOS ÓBTIDOS DA ELABORAÇÃO E ANÁLISE DE MODELO DE BIELA E &     TIRANTE'/'PARA UM BLOCO DE COROAMENTO.',///,'DADOS DE ENTRADA:',//,'ALTURA DO BLOCO:',/)     WRITE (6,16) '  H = ', hbloco 16  FORMAT(a6,f4.2)          WRITE (6,17) 17  FORMAT (//,'COORDENADAS DAS ESTACAS NO FUNDO DO BLOCO:',//,2x,'NÓ(ESTACA)',9x, &     'X',15x,'Y',/)     DO i =1 ,nest         WRITE (6,18) i, C(i,1), C(i,2)     END DO 18  FORMAT (i8,f16.2,f16.2)          WRITE (6,19) 19  FORMAT (//,'COORDENADAS E FORÇAS DOS NÓS CARREGADOS NA FACE SUPERIOR DO BLOCO:',&     //,6x,'NÓ',13x,'X',15x,'Y',15x,'F',/)     DO i=1,nnoscarga         WRITE (6,20) i+nest, C(i+nest,1), C(i+nest,2), mforext(i+nest,3)     END DO 20  FORMAT (i8,f16.2,f16.2,f16.2)       !   Impressão das reações de apoio.         WRITE (6,25) 25  FORMAT (//,'REAÇÕES DE APOIO:',//,2x,'NÓ(ESTACA)',9x,'F',/)     do i=1,nest 

91

        WRITE (6,26) i, reacoes(i)     END DO 26  FORMAT (i8,f16.2)      !   Impressão das coordenadas dos nó de transferência de carga para face oposta !   do bloco.     WRITE (6,30) 30  FORMAT (//,'NÓS DE TRANSFERÊNCIA DE CARGA PARA A FACE OPOSTA:'/)     IF (ntirobrig == 0) THEN         WRITE (6,*) 'NÃO HÁ FORÇAS EXTERNAS DE TRAÇÃO NO BLOCO.'     ELSE         WRITE (6,31) 31      FORMAT (/,6x,'NÓ',13x,'X',15x,'Y')         DO i=1,ntirobrig             WRITE (6,32) i+nest+nnoscarga, C(i+nest+nnoscarga,1),                  &             C(i+nest+nnoscarga,2)         END DO 32      FORMAT (i8,f16.2,f16.2)     END IF      !   Impressão do número de combinações de elementos (modelos isóstáticos) a serem !   análisados.         WRITE (6,35) 35  FORMAT (//,'NÚMERO DE TRELIÇAS ISOSTÁTICOS A SEREM ANÁLISADAS')     WRITE (6,*) nmodelok          !Impressão dos esforços axias em cada elemento.     WRITE (6,40) 40  FORMAT (//,'ESFORÇOS NOS ELEMENTOS DO MODELO COM MENOS ENERGIA DE DEFORMAÇÃO:' &     //,2x,'ELEMENTO',5x,'ESFORÇO AXIAL')     DO i = 1,nelemiso+ntirobrig         WRITE (6,45,advance='no') mcomb(omodelotimo(1),i)         WRITE (6,50) mgeralesf(omodelotimo(1),i)     END DO 45  FORMAT (i7)     50  FORMAT (f15.1)          REWIND (6)     CLOSE (6)      !   Impressão de arquivos como todos os elementos de cada combinação e a energia   & !   de cada um.     OPEN (7,file='ENERGIA.txt')     OPEN (8,file='ELEMENTOS.txt')            DO i = 1,ncomb         IF (menerg(i) > 0) THEN         WRITE (7,*) menerg(i)         DO j = 1,(ntirobrig+nelemiso‐1)             WRITE (8,55,advance='no') mcomb(i,j)         END DO             WRITE (8,55) mcomb(i,ntirobrig+nelemiso) 55          FORMAT (i5)         END IF     END DO          REWIND (7)     CLOSE (7)  END SUBROUTINE 

 

SUBROUTINE graficos (C,nnostotal,ncomb,nelemiso,ntirobrig,mnos,mcomb,mgeralesf,   & menerg,omodelotim,nmodelok)      

92

    USE IFQWIN     USE IFLPORT      implicit none      !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐! !   Rotina para impressão dos modelos mais prováveis na tela do computador.        ! !‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐!          TYPE (XYCOORD) xy     TYPE (QWINFO) winfo     TYPE (WINDOWCONFIG) wc     RECORD /VIDEOCONFIG/ video     LOGICAL :: result     CHARACTER(1) :: tecla     CHARACTER(8) :: a8     INTEGER :: i, j, teste, modelo, status, style, width      INTEGER :: maxx, maxy, xe, ye, exx, exy, exz, eyx, eyy, eyz     INTEGER :: nnostotal, mnos(190,2), nelemiso, ntirobrig     INTEGER :: nmodelok, omodelotim(nmodelok), mcomb(ncomb,nelemiso+ntirobrig)     INTEGER(KIND = 8) :: ncomb     DOUBLE PRECISION xmax, ymax, zmax, xmin, ymin, zmin, esc, xc, yc, a, b, pi, dz     INTEGER,ALLOCATABLE :: xt(:), yt(:)     DOUBLE PRECISION, ALLOCATABLE :: x0(:), y0(:), z0(:)     REAL :: r, xm(20), ym(20), zm(20)     REAL :: C(20,3), menerg(ncomb), mgeralesf(ncomb,nelemiso+ntirobrig)          ALLOCATE (x0(nnostotal), y0(nnostotal), z0(nnostotal))     ALLOCATE (xt(nnostotal), yt(nnostotal))          pi = 3.1415926      !   Ajuste do modo gráfico.     status = SETVIDEOMODE ($MAXRESMODE)     call GETVIDEOCONFIG(video)     maxx = video.NUMXPIXELS     maxy = video.NUMYPIXELS      !   Expandindo e alterando o nome da janela.         !winfo.TYPE = QWIN$MAX     !status = SETWSIZEQQ(QWIN$FRAMEWINDOW,winfo)     !status = SETWSIZEQQ(0,winfo)      wc%TITLE = "MODELO"C     result = SETWINDOWCONFIG(wc)     IF (.not.result) result = SETWINDOWCONFIG(wc)      !   Montagem do menu de opções.         DO i=1,7         result = DELETEMENUQQ(1,0)     END DO     result = INSERTMENUQQ(1,0,$MENUENABLED,'Arquivo'C,NUL)     result = INSERTMENUQQ(1,1,$MENUENABLED,'Abrir'C,NUL)     result = INSERTMENUQQ(1,2,$MENUENABLED,'Salvar'C,WINSAVE)     result = INSERTMENUQQ(1,3,$MENUENABLED,'Sair'C,WINEXIT)     result = INSERTMENUQQ(2,0,$MENUENABLED,'Editar'C,NUL)     result = INSERTMENUQQ(2,1,$MENUENABLED,'Copiar'C,WINCOPY)     result = INSERTMENUQQ(2,2,$MENUENABLED,'Colar'C,WINPASTE)     result = INSERTMENUQQ(3,0,$MENUENABLED,'Tela Cheia'C,WINFULLSCREEN)      !   Definição do fundo de tela         status = SETBKCOLORRGB(#FFFFFF)     status = SETTEXTCOLORRGB(#000000)     status = SETCOLORRGB(#000000)     CALL CLEARSCREEN($GCLEARSCREEN)          

93

    !Nova origem no centro da figura     DO i = 1,nnostotal         xm(i) = C(i,1)         ym(i) = C(i,2)         zm(i) = C(i,3)     END DO          xmax = MAXVAL(xm)     ymax = MAXVAL(ym)     zmax = MAXVAL(zm)     xmin = MINVAL(xm)     ymin = MINVAL(ym)     zmin = MINVAL(zm)     xm = xm ‐ (xmax+xmin)/2     ym = ym ‐ (ymax+ymin)/2     zm = zm ‐ (zmax+zmin)/2     xc=0     yc=0      !   Inicializar escala, foco, ângulos da visada e acesso as fontes     esc = 0.5*min(maxx/(xmax‐xmin),maxy/(ymax‐ymin))     dz = 5000*(zmax‐zmin)     a = ‐3*pi/8     b = 0  !   Plotagem     tecla = "5"     teste = 1     modelo = 1     DO WHILE (.true.)         CALL CLEARSCREEN($GCLEARSCREEN)         status = INITIALIZEFONTS()         status = SETFONT('t''Arial''h16w8')         CALL MOVETO (150,10,xy)         CALL OUTGTEXT('GIRO(W S A D)  DESL.Y(9 3)  DESL.X(0 ,)  ZOOM(+ ‐)   &         FOCO(7 1)  (C)ENTRAR  VISTAS(X Y Z)')         CALL MOVETO (150,30,xy)         CALL OUTGTEXT('(E)SFORÇOS NOS ELEMENTOS   (N)ÚMERO DOS ELEMENTOS')                  !Projeção         x0 = xm*COS(b) + zm*SIN(b)         y0 = ym*COS(a) + SIN(a)*(xm*SIN(b) ‐ zm*COS(b))         z0 = ‐ym*SIN(a) + COS(a)*(xm*SIN(b) ‐ zm*COS(b))                  !Perspectiva         zmax = MAXVAL(z0); zmin = MINVAL(z0)         x0 = x0*(dz + zmax ‐ z0)/(dz + zmax ‐ zmin)         y0 = y0*(dz + zmax ‐ z0)/(dz + zmax ‐ zmin)              !Translação         x0 = x0 ‐ xc         y0 = y0 ‐ yc              !Coordenadas na tela         xt = INT(maxx/2+x0*esc); yt = INT(maxy/2‐y0*esc)              !Plotar nós         DO i = 1,nnostotal             IF (xt(i) > 0.and.xt(i) < maxx.and.yt(i) < maxy.and.yt(i) > 0) THEN                 status = ELLIPSE($GBORDER, xt(i)‐2,yt(i)‐2,xt(i)+2,yt(i)+2)             END IF         END DO          IF (teste == 0) THEN             !Esforços axiais nos elementos.             DO i = 1,(nelemiso+ntirobrig) 

94

                j = mcomb(omodelotim(modelo),i)                 r = mgeralesf(omodelotim(modelo),i)                             xe = INT((xt(mnos(j,1))+xt(mnos(j,2)))/2)                 ye = INT((yt(mnos(j,1))+yt(mnos(j,2)))/2)                         CALL MOVETO (xe,ye,xy)                 CALL real_to_character(r,a8)                 CALL OUTGTEXT(a8)             END DO         ELSE IF (teste == 1) THEN             !Numerar elementos.             DO i = 1,nelemiso+ntirobrig                 j = mcomb(omodelotim(modelo),i)                             xe = INT((xt(mnos(j,1))+xt(mnos(j,2)))/2)                 ye = INT((yt(mnos(j,1))+yt(mnos(j,2)))/2)                         CALL MOVETO (xe,ye,xy)                 CALL integer_to_character(j,a8)                 CALL OUTGTEXT(a8)             END DO         END IF              !Plotar elementos         DO i = 1,(nelemiso+ntirobrig)             j = mcomb(omodelotim(modelo),i)             CALL MOVETO (xt(mnos(j,1)),yt(mnos(j,1)),xy)             IF (mgeralesf(omodelotim(modelo),i) > 0) THEN                 status = SETCOLORRGB(#FF0000)                 style = Z'FFFF'                 width = 2             ELSE                 status = SETCOLORRGB(#0000FF)                 style = Z'EEEE'                 width = 1             END IF             CALL SETLINESTYLE(style)             CALL SETLINEWIDTHQQ(width)             status = lineto(xt(mnos(j,2)),yt(mnos(j,2)))         END DO                  status = SETTEXTCOLORRGB(#000000)         status = SETCOLORRGB(#000000)         style =Z'FFFF'         CALL SETLINESTYLE(style)              !Numerar nós         DO i=1,nnostotal             CALL MOVETO (xt(i)+3,yt(i),xy)             CALL integer_to_character(i,a8)             CALL OUTGTEXT(a8)         END DO              !Eixos         exx = INT(60 ‐ 45*COS(b)); eyx = INT(50 + 45*SIN(a)*SIN(b))         exy = 60                 ; eyy = INT(50 + 45*COS(a))         exz = INT(60 + 45*SIN(b)); eyz = INT(50 + 45*SIN(a)*COS(b))         CALL MOVETO (50,60,xy); status = LINETO(exx,eyx)         CALL OUTGTEXT('X')         CALL MOVETO (50,60,xy) ; status = LINETO(exy,eyy)         CALL OUTGTEXT('Y')         CALL MOVETO (50,60,xy) ; status = LINETO(exz,eyz)         CALL OUTGTEXT('Z')                  !Dados do modelo         CALL MOVETO(60,maxy‐80,xy)         CALL OUTGTEXT('ORDEM DO MODELO: ')         CALL integer_to_character (modelo,a8)         CALL OUTGTEXT(a8) 

95

        CALL MOVETO(60,maxy‐60,xy)         CALL OUTGTEXT('ENERGIA DE DESLOCAMENTO DO MODELO: ')         CALL real_to_character(menerg(omodelotim(modelo)),a8)         CALL OUTGTEXT(a8)          ! Tecla de opção         tecla = GETCHARQQ()         SELECT CASE (tecla)             CASE ('c','C'); dz = 2*(zmax‐zmin); a = 3*pi/8; b = 0; xc = 0; yc = 0             CASE ('+'); esc = esc*1.12; esc = esc*1.12             CASE ('‐'); esc = esc/1.125; esc = esc/1.125           CASE ('9'); yc=yc ‐ maxy/40/esc           CASE ('3'); yc=yc + maxy/40/esc           CASE (','); xc = xc ‐ maxx/40/esc           CASE ('0'); xc = xc + maxx/40/esc           CASE ('Y','y'); a = PI/2; b = pi/2           CASE ('X','x'); a = 0;    b = pi/2           CASE ('Z','z'); a = 0;    b=0           CASE ('W','w'); a = a ‐ pi/60           CASE ('S','s'); a = a + pi/60           CASE ('A','a'); b = b ‐ pi/60           CASE ('D','d'); b = b + pi/60           !CASE ('7'); dz = dz/1.2             !CASE ('1'); dz = dz*1.2             CASE ('E','e'); teste = 0             CASE ('N','n'); teste = 1             CASE ('p','P'); modelo = modelo+1             CASE ('o','O'); modelo = modelo‐1         END SELECT             IF (modelo == nmodelok+1) modelo = 1    END DO  END SUBROUTINE