Página Principal | Lista Alfabética | Lista de Componentes | Lista de Arquivos | Componentes Membros | Arquivos Membros

Referência do Arquivo crs.c

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "crs.h"

Gráfico de dependência de inclusões para crs.c:

Include dependency graph

Vá para o código-fonte deste arquivo.

Componentes

struct  _crsadjmember
 Registro (struct) de uma barra adjacente a um nó:. Mais...

struct  _crsmember
 Registro (struct) de uma barra de um pórtico plano:. Mais...

struct  _crsmodel
 Registro (struct) de um modelo pórtico plano:. Mais...

struct  _crsnode
 Registro (struct) de um nó de um pórtico plano:. Mais...


Process Cross para pórticos planos indeslocáveis

---------------------------------------------------------------

---------------------------------------------------------------

Data:
08-Set-2004
Autor:
Luiz F. Martha
Versão:
1.0
---------------------------------------------------------------

Este é o arquivo da solução de pórticos planos indeslocáveis pelo Processo de Cross.

Este arquivo se refere ao terceiro trabalho da disciplina CIV2801 - Fundamentos de Computacao Grafica Aplicada, período 2004.2, Depto. de Eng. Civil, PUC-Rio.

Este arquivo deve ser complementado em todo os pontos onde houver um comentário do tipo: **** COMPLETE AQUI: xxx ****

Para uma descrição do Processo de Cross, veja notas de aula da disciplina CIV1127 - Analise de Estruturas II, Depto. de Eng. Civil, PUC-Rio.

---------------------------------------------------------------

Revisões e modificações:

  • Relate as modificações aqui, incluindo nome e data.
  • Modificado em 03/out/2004 para terceiro trabalho: Modificada função crsSolveModel para não reinicilizar processo iterativo: eliminado parâmetro de tolerância. Criada função local _crsGetNodeUnbalance. Criadas funções crsResetSolution, crsStepSolution, crsChkNodeEquilibrium, crsProcessNode, crsGetGlobalBox e crsPickNode.


typedef _crsmember CrsMember
 Registro (struct) de uma barra de um pórtico plano:.

typedef _crsadjmember CrsAdjMember
 Registro (struct) de uma barra adjacente a um nó:.

typedef _crsnode CrsNode
 Registro (struct) de um nó de um pórtico plano:.

typedef _crsmodel CrsModel
 Registro (struct) de um modelo pórtico plano:.

void _crsBuildNodeMemberAdj (void)
 Esta função constroi as listas de barras adjacentes a cada um dos nós do modelo de pórtico plano ativo.

double _crsMemberLength (int id)
 Esta função calcula o comprimento de uma barra dada por seu índice no vetor de barras do modelo ativo.

double _crsMemberStiffness (int member_id, int node_id)
 Esta função calcula o valor do coeficiente de rigidez à rotação de uma dada barra (member_id) em relação a um dado nó (node_id).

double _crsMemberTransmission (int member_id, int node_id)
 Esta função calcula o valor do coeficiente de transmissão de momentos de uma dada barra (member_id) em relação a um dado nó (node_id).

void _crsDistribCoef (void)
 Esta função calcula os valores dos coeficientes de distribuição e de transmissão de momentos fletores para todas as barras adjacentes a cada um dos nós do pórtico plano ativo.

void _crsInitMoments (void)
 Esta função calcula os valores iniciais dos momentos fletores nas extremidadades de todas as barras.

double _crsGetNodeUnbalance (int id)
 Esta função calcula o desequilíbrio de momento em um nó do modelo que é dado pelo índice fornecido.

int _crsGetMaxMomNode (void)
 Esta função retorna o índice do nó do modelo ativo que contém o maior desequilíbrio, em valor absoluto, de momento fletor para a situação corrente.

void _crsProcessNode (int n)
 Esta função processa o equilíbrio de um nó do modelo ativo que é indicado pelo índice fornecido.

void * crsInitModel (int max_nodes, int max_members)
 Esta função inicializa um novo modelo de pórtico plano.

void crsActivateModel (void *model)
 Esta função ativa um modelo de pórtico plano.

void crsFreeModel (void *model)
 Esta função libera a memória associada a um modelo de pórtico plano.

int crsAddNode (double x, double y)
 Esta função armazena as coordenadas fornecidas no nó corrente.

void crsFixNodeRot (int id)
 Esta função fixa a rotação de um nó do modelo de pórtico plano ativo.

void crsFreeNodeRot (int id)
 Esta função libera a rotação de um nó do modelo de pórtico plano ativo.

int crsAddMember (int node0, int node1)
 Esta função armazena os índices dos nós fornecidos na barra corrente.

void crsFixMemberEndRot (int id, int end)
 Esta função fixa a rotação (retira rótula) de uma das extremidades de uma barra do modelo de pórtico plano ativo.

void crsFreeMemberEndRot (int id, int end)
 Esta função libera a rotação (introduz rótula) de uma das extremidades de uma barra do modelo de pórtico plano ativo.

void crsMemberElasticity (int id, double E)
 Esta função define o valor do módulo de elasticidade de uma barra do modelo de pórtico plano ativo.

void crsMemberInertia (int id, double I)
 Esta função define o valor do momento de inércia da seção transversal de uma barra do modelo de pórtico plano ativo.

void crsMemberUnifLoad (int id, double q)
 Esta função define o valor da carga uniformente distribuída de uma barra do modelo de pórtico plano ativo.

int crsCompleteModel (void)
 Esta função completa a estrutura de dados do modelo de pórtico plano ativo para ser resolvida pelo Processo de Cross.

int crsResetSolution (double mom_tol)
 Esta função inicializa o Processo de Cross para o modelo de pórtico plano ativo.

int crsSolveModel (void)
 Esta função executa o Processo de Cross para o modelo de pórtico plano ativo.

int crsStepSolution (void)
 Esta função processa o equilíbrio de um nó do modelo ativo que tem o maior desequilíbrio de momentos em módulo.

int crsChkNodeUnbalance (int id)
 Esta função verifica se um nó do modelo ativo que é indicado pelo índice fornecido está em desequilíbrio de momentos.

int crsProcessNode (int id)
 Esta função processa o equilíbrio de um nó do modelo ativo que é indicado pelo índice fornecido.

int crsGetNumNodes (void)
 Esta função retorna o número de nós do modelo de pórtico plano ativo.

void crsGetNodeCoords (int id, double *x, double *y)
 Esta função retorna nos parâmetros as coordenadas de um nó do do modelo de pórtico plano ativo.

int crsGetNumMembers (void)
 Esta função retorna o número de barras do modelo de pórtico plano ativo.

void crsGetMemberNodes (int id, int *node0, int *node1)
 Esta função retorna nos parâmetros os índices dos dois nós de uma barra do modelo de pórtico plano ativo.

void crsGetMemberRotLibs (int id, int *rotlib0, int *rotlib1)
 Esta função retorna nos parâmetros os códigos de liberação de rotação (articulação) de uma barra do modelo de pórtico plano ativo.

void crsGetMemberUnifLoad (int id, double *q)
 Esta função retorna no parâmetro o valor da carga uniformemente distribuída de uma barra do modelo de pórtico plano ativo.

void crsGetMemberMoments (int id, double *m0, double *m1)
 Esta função retorna nos parâmetros os valores dos momentos fletores nas extremidades de uma barra do modelo de pórtico plano ativo.

int crsGetGlobalBox (double *xmin, double *xmax, double *ymin, double *ymax)
 Esta função retorna nos quatro parâmetros os limites das coordenadas x e y do modelo de pórtico plano ativo.

int crsPickNode (double x, double y, double tol)
 Esta função verifica se um ponto (x,y) dado está próximo (a menos de uma tolerância) de um nó do modelo de pórtico plano ativo.

CrsModelcrs = NULL
 Ponteiro para o modelo ativo.


Definições dos tipos

typedef struct _crsadjmember CrsAdjMember
 

Registro (struct) de uma barra adjacente a um nó:.

Referenciado por _crsBuildNodeMemberAdj().

typedef struct _crsmember CrsMember
 

Registro (struct) de uma barra de um pórtico plano:.

Referenciado por crsInitModel().

typedef struct _crsmodel CrsModel
 

Registro (struct) de um modelo pórtico plano:.

Referenciado por crsActivateModel() e crsInitModel().

typedef struct _crsnode CrsNode
 

Registro (struct) de um nó de um pórtico plano:.

Referenciado por crsInitModel().


Funções

void _crsBuildNodeMemberAdj void   )  [static]
 

Esta função constroi as listas de barras adjacentes a cada um dos nós do modelo de pórtico plano ativo.

O algoritmo adotado para construir estas relações de adjacência é o seguinte:

  • Percorre o vetor de barras do modelo
  • Para cada barra adiciona uma referência sua no início das listas de barras adjacentes dos seus dois nós.

Definição na linha 150 do arquivo crs.c.

Referências crs, CrsAdjMember e _crsmodel::n_member.

Referenciado por crsCompleteModel().

void _crsDistribCoef void   )  [static]
 

Esta função calcula os valores dos coeficientes de distribuição e de transmissão de momentos fletores para todas as barras adjacentes a cada um dos nós do pórtico plano ativo.

Definição na linha 266 do arquivo crs.c.

Referenciado por crsCompleteModel().

int _crsGetMaxMomNode void   )  [static]
 

Esta função retorna o índice do nó do modelo ativo que contém o maior desequilíbrio, em valor absoluto, de momento fletor para a situação corrente.

Somente os nós que têm a rotação livre são considerados. O desequilíbrio é calculado pela soma dos valores dos momentos fletores de todas as barras adjacentes a um nó, nas extremidades correspondentes a este nó. Os índices válidos para nós variam de "0" a "n_node-1". Se todos os nós livres do modelo tiverem o valor em módulo do desequilíbrio de momentos fletor menor do que o valor "mom_tol" da tolerância corrente, a função retorna o valor -1, indicando que todos os nós livres estão equilibrados.

Retorna:
Índice do nó livre que contém o maior desequilíbrio em valor absoluto, ou -1 se todos os nós livres estiverem equilibrados de acordo com o valor da tolerância corrente.

Definição na linha 324 do arquivo crs.c.

Referenciado por crsSolveModel() e crsStepSolution().

double _crsGetNodeUnbalance int  id  ) 
 

Esta função calcula o desequilíbrio de momento em um nó do modelo que é dado pelo índice fornecido.

O desequilíbrio de moments é calculado pela soma dos momentos fletores em todas as seções adjacentes das barras adjacentes. Considera-se que o nó dado tem a rotação liberada.

Parâmetros:
id - índice do nó a ser equilibrado (in)
Retorna:
Valor do desequilíbrio de momentos no nó dado.

Definição na linha 295 do arquivo crs.c.

Referenciado por crsChkNodeUnbalance().

void _crsInitMoments void   )  [static]
 

Esta função calcula os valores iniciais dos momentos fletores nas extremidadades de todas as barras.

Estes valores correspondem às reações momentos de engastamento para cada barra isolada.

Definição na linha 277 do arquivo crs.c.

Referenciado por crsResetSolution().

double _crsMemberLength int  id  )  [static]
 

Esta função calcula o comprimento de uma barra dada por seu índice no vetor de barras do modelo ativo.

Parâmetros:
id - índice da barra (in)
Retorna:
comprimento da barra.

Definição na linha 187 do arquivo crs.c.

double _crsMemberStiffness int  member_id,
int  node_id
[static]
 

Esta função calcula o valor do coeficiente de rigidez à rotação de uma dada barra (member_id) em relação a um dado nó (node_id).

É considirado que a barra dada é realmente incidente no nó dado.

O coeficiente de rigidez a rotação pode ter três valores, dependendo das condições de articulação (liberação de rotações) da barra:

  • Se a barra tiver a rotação livre na extremidade correspondente ao nó fornecido, o coeficiente de rigidez é nulo.
  • Se este não for o caso, se a barra tiver a rotação livre na outra extremidade, o coeficiente de rigidez é igual a 3EI/len.
  • Se este não for o caso, se a barra tiver a rotação não liberada na outra extremidade, o coeficiente de rigidez é igual a 4EI/len.

Parâmetros:
member_id - índice da barra (in)
node_id - índice do nó adjacente (in)
Retorna:
coeficiente de rigidez à rotação da barra em relação ao nó.

Definição na linha 219 do arquivo crs.c.

double _crsMemberTransmission int  member_id,
int  node_id
[static]
 

Esta função calcula o valor do coeficiente de transmissão de momentos de uma dada barra (member_id) em relação a um dado nó (node_id).

É considirado que a barra dada é realmente incidente no nó dado.

O coeficiente de transmissão de momentos pode ter dois valores, dependendo das condições de articulação (liberação de rotações) da barra:

  • Se a barra tiver a rotação livre na extremidade correspondente ao nó fornecido ou se a barra tiver a rotação livre na outra extremidade, o coeficiente de transmissão de momentos é nulo.
  • Se este não for o caso, se a barra tiver a rotação não liberada na outra extremidade, o coeficiente de transmissão de momentos é igual a 0.5.

Parâmetros:
member_id - índice da barra (in)
node_id - índice do nó adjacente (in)
Retorna:
coeficiente de transmissão da barra em relação ao nó.

Definição na linha 251 do arquivo crs.c.

void _crsProcessNode int  n  )  [static]
 

Esta função processa o equilíbrio de um nó do modelo ativo que é indicado pelo índice fornecido.

Os índices válidos para especificar um nó variam de "0" a "n_node-1".

O equilíbrio de um nó é feito da seguinte maneira:

  • Calcula-se o momento desequilibrante no nó
  • Calcula-se as parcelas equilibrantes de momentos fletores nas seções adjacentes ao nó nas barras adjacentes.
  • Calcula-se as parcelas transmitidas de momentos fletores nas seções opostas ao nó nas barras adjacentes.
  • Diminue-se os valores das parcelas equilibrantes e transmitidas dos valores dos momentos fletores nas extremidades correspondentes de todas barras adjacentes ao nó.

Parâmetros:
n - índice do nó a ser equilibrado (in)

Definição na linha 352 do arquivo crs.c.

Referenciado por crsProcessNode(), crsSolveModel() e crsStepSolution().

void crsActivateModel void *  model  ) 
 

Esta função ativa um modelo de pórtico plano.

O modelo é fornecido por um ponteiro genérico.

Parâmetros:
model - ponteiro para modelo a ser ativado (in)

Definição na linha 414 do arquivo crs.c.

Referências crs e CrsModel.

Referenciado por prjOpenModel().

int crsAddMember int  node0,
int  node1
 

Esta função armazena os índices dos nós fornecidos na barra corrente.

O índice da barra corrente corresponde ao número de barras antes da chamada desta função. Ela também incrementa o número total de barras. As rotações nas extremidades da barra corrente são fixadas, isto é, a barra corrente é inicializada sem rótulas. A função verifica se o número de barras do modelo é igual ao máximo número de barras com que o vetor de barras está dimensionado. Se este for o caso, a função dobra o tamanho de dimensionamento e realoca o vetor de barras com base no novo tamanho.

Parâmetros:
node0 - índice do nó inicial da barra corrente (in)
node1 - índice do nó final da barra corrente (in)
Retorna:
Índice da barra corrente.

Definição na linha 537 do arquivo crs.c.

Referências crs, CRS_NO_MODEL_DEFINED, _crsmodel::member, _crsmodel::n_member, _crsmember::node0, _crsmember::node1, ROT_FIX, _crsmember::rotlib0 e _crsmember::rotlib1.

Referenciado por ReadBeamElems().

int crsAddNode double  x,
double  y
 

Esta função armazena as coordenadas fornecidas no nó corrente.

O índice do nó corrente corresponde ao número de nós antes da chamada desta função. Ela também incrementa o número total de nós. A rotação do nó corrente é liberada. A função verifica se o número de nós do modelo é igual ao máximo número de nós com que o vetor de nós está dimensionado. Se este for o caso, a função dobra o tamanho de dimensionamento e realoca o vetor de nós com base no novo tamanho.

Parâmetros:
x - coordenada x do nó corrente (in)
y - coordenada y do nó corrente (in)
Retorna:
Índice do nó corrente.

Definição na linha 454 do arquivo crs.c.

Referências crs, CRS_NO_MODEL_DEFINED, _crsmodel::n_node, _crsmodel::node, ROT_FREE, _crsnode::rotlib, _crsnode::x e _crsnode::y.

Referenciado por nfrCrsNodes().

int crsChkNodeUnbalance int  id  ) 
 

Esta função verifica se um nó do modelo ativo que é indicado pelo índice fornecido está em desequilíbrio de momentos.

Um nó está em equilíbrio quando a soma dos momentos fletores em todas as seções adjacentes das barras adjacentes é menor, em módulo, do que o valor da tolerância "mom_tol" do modelo. Os índices válidos para especificar um nó variam de "0" a "n_node-1".

Parâmetros:
id - índice do nó a ser equilibrado (in)
Retorna:
CRS_SUCCESS (1) quando existe um modelo ativo e o processo iterativo não terminou, CRS_NO_STEP_TO_GO (0) quando existe um modelo ativo e o nó fornecido já está equilibrado, CRS_NO_MODEL_DEFINED (-2) quando não tem nenhum modelo ativo ou CRS_FIXED_NODE (-3) se o nó já está em equilíbrio.

Definição na linha 812 do arquivo crs.c.

Referências _crsGetNodeUnbalance(), crs, CRS_FIXED_NODE, CRS_NO_MODEL_DEFINED, CRS_NO_STEP_TO_GO, CRS_SUCCESS, _crsmodel::mom_tol, _crsmodel::node, ROT_FREE e _crsnode::rotlib.

Referenciado por crsProcessNode().

int crsCompleteModel void   ) 
 

Esta função completa a estrutura de dados do modelo de pórtico plano ativo para ser resolvida pelo Processo de Cross.

Ela constroi as listas de barras adjacentes que estão associadas a cada nó. Ela calcula os coeficientes de distribuição de momentos e os coeficientes de transmissão de momentos para todas as barras adjacentes a cada um dos nó do pórtico.

Retorna:
CRS_SUCCESS (1) quando existe um modelo ativo CRS_NO_MODEL_DEFINED (-2) quando não tem nenhum modelo ativo.

Definição na linha 695 do arquivo crs.c.

Referências _crsBuildNodeMemberAdj(), _crsDistribCoef(), crs, CRS_NO_MODEL_DEFINED e CRS_SUCCESS.

Referenciado por prjOpenModel().

void crsFixMemberEndRot int  id,
int  end
 

Esta função fixa a rotação (retira rótula) de uma das extremidades de uma barra do modelo de pórtico plano ativo.

Nada vai acontencer se nenhum modelo estiver ativo ou se o índice da barra dado não for válido.

Parâmetros:
id - índice da barra no vetor de barras do modelo (in)
end - indica a extremidade da barra (0 = inicial, 1 = final) (in)

Definição na linha 575 do arquivo crs.c.

Referências crs, _crsmodel::member, _crsmodel::n_member, ROT_FIX, _crsmember::rotlib0 e _crsmember::rotlib1.

void crsFixNodeRot int  id  ) 
 

Esta função fixa a rotação de um nó do modelo de pórtico plano ativo.

Nada vai acontencer se nenhum modelo estiver ativo ou se o índice do nó dado não for válido.

Parâmetros:
id - índice do nó no vetor de nós do modelo (in)

Definição na linha 489 do arquivo crs.c.

Referências crs, _crsmodel::n_node, _crsmodel::node, ROT_FIX e _crsnode::rotlib.

Referenciado por ReadNodalSupports().

void crsFreeMemberEndRot int  id,
int  end
 

Esta função libera a rotação (introduz rótula) de uma das extremidades de uma barra do modelo de pórtico plano ativo.

Nada vai acontencer se nenhum modelo estiver ativo ou se o índice da barra dado não for válido.

Parâmetros:
id - índice da barra no vetor de barras do modelo (in)
end - indica a extremidade da barra (0 = inicial, 1 = final) (in)

Definição na linha 599 do arquivo crs.c.

Referências crs, _crsmodel::member, _crsmodel::n_member, ROT_FREE, _crsmember::rotlib0 e _crsmember::rotlib1.

Referenciado por ReadBeamElems().

void crsFreeModel void *  model  ) 
 

Esta função libera a memória associada a um modelo de pórtico plano.

Ela libera memória utilizada para os vetores de barras e nós do modelo de pórtico plano fornecido (dado por ponteiro). As listas de barras adjacentes de todos os nós do modelo também são liberadas.

Parâmetros:
model - ponteiro para modelo a ser liberado (in)

Definição na linha 432 do arquivo crs.c.

Referenciado por crsInitModel(), prjNew(), prjOpenModel() e prjQuit().

void crsFreeNodeRot int  id  ) 
 

Esta função libera a rotação de um nó do modelo de pórtico plano ativo.

Nada vai acontencer se nenhum modelo estiver ativo ou se o índice do nó dado não for válido.

Parâmetros:
id - índice do nó no vetor de nós do modelo (in)

Definição na linha 508 do arquivo crs.c.

Referências crs, _crsmodel::n_node, _crsmodel::node, ROT_FREE e _crsnode::rotlib.

int crsGetGlobalBox double *  xmin,
double *  xmax,
double *  ymin,
double *  ymax
 

Esta função retorna nos quatro parâmetros os limites das coordenadas x e y do modelo de pórtico plano ativo.

Parâmetros:
xmin - limite inferior da coordenada x (out)
xmax - limite superior da coordenada x (out)
ymin - limite inferior da coordenada y (out)
ymax - limite superior da coordenada y (out)
Retorna:
CRS_SUCCESS (1) quando existe um modelo ativo que não está vazio ou CRS_NO_MODEL_DEFINED (-2) quando não tem nenhum modelo ativo.

Definição na linha 1039 do arquivo crs.c.

Referências crs, CRS_NO_MODEL_DEFINED, CRS_SUCCESS, _crsmodel::n_node, _crsmodel::node, _crsnode::x e _crsnode::y.

Referenciado por prjFit() e prjOpenModel().

void crsGetMemberMoments int  id,
double *  m0,
double *  m1
 

Esta função retorna nos parâmetros os valores dos momentos fletores nas extremidades de uma barra do modelo de pórtico plano ativo.

Os momentos fletores são positivos quando atuam no sentido anti- horário em qualquer das duas extremidades da barra. E são negativos se atuarem no sentido horário. Nada vai acontencer se nenhum modelo estiver ativo ou se o índice da barra dado não for válido.

Parâmetros:
id - índice da barra no vetor de barras do modelo (in)
m0 - momento fletor no início da barra (out)
m1 - momento fletor no final da barra (out)

Definição na linha 1013 do arquivo crs.c.

Referências crs, _crsmember::m0, _crsmember::m1, _crsmodel::member e _crsmodel::n_member.

Referenciado por _dspMember() e prjSaveResults().

void crsGetMemberNodes int  id,
int *  node0,
int *  node1
 

Esta função retorna nos parâmetros os índices dos dois nós de uma barra do modelo de pórtico plano ativo.

Nada vai acontencer se nenhum modelo estiver ativo ou se o índice da barra dado não for válido.

Parâmetros:
id - índice da barra no vetor de barras do modelo (in)
node0 - índice do nó inicial da barra (out)
node1 - índice do nó final da barra (out)

Definição na linha 938 do arquivo crs.c.

Referências crs, _crsmodel::member, _crsmodel::n_member, _crsmember::node0 e _crsmember::node1.

Referenciado por _dspMember() e prjSaveResults().

void crsGetMemberRotLibs int  id,
int *  rotlib0,
int *  rotlib1
 

Esta função retorna nos parâmetros os códigos de liberação de rotação (articulação) de uma barra do modelo de pórtico plano ativo.

Os valores possíveis para os códigos são: ROT_FREE (0) ou ROT_FIX (1). Nada vai acontencer se nenhum modelo estiver ativo ou se o índice da barra dado não for válido.

Parâmetros:
id - índice da barra no vetor de barras do modelo (in)
rotlib0 - código de liberação de rotação no início da barra (out)
rotlib1 - código de liberação de rotação no final da barra (out)

Definição na linha 962 do arquivo crs.c.

Referências crs, _crsmodel::member, _crsmodel::n_member, _crsmember::rotlib0 e _crsmember::rotlib1.

Referenciado por _dspMember().

void crsGetMemberUnifLoad int  id,
double *  q
 

Esta função retorna no parâmetro o valor da carga uniformemente distribuída de uma barra do modelo de pórtico plano ativo.

A convenção de sinais adotada é tal que um valor positivo de carga corresponde à direção de baixo para cima com relação ao eixo local y (transversal) da barra. A carga é considerada abrangendo todo o comprimento da barra. Nada vai acontencer se nenhum modelo estiver ativo ou se o índice da barra dado não for válido.

Parâmetros:
id - índice da barra no vetor de barras do modelo (in)
q - valor da carga uniformente distribuída (out)

Definição na linha 988 do arquivo crs.c.

Referências crs, _crsmodel::member, _crsmodel::n_member e _crsmember::q.

Referenciado por _dspMember().

void crsGetNodeCoords int  id,
double *  x,
double *  y
 

Esta função retorna nos parâmetros as coordenadas de um nó do do modelo de pórtico plano ativo.

Nada vai acontencer se nenhum modelo estiver ativo ou se o índice do nó dado não for válido.

Parâmetros:
id - índice do nó no vetor de nós do modelo (in)
x - coordenada x do nó corrente (out)
y - coordenada y do nó corrente (out)

Definição na linha 898 do arquivo crs.c.

Referências crs, _crsmodel::n_node, _crsmodel::node, _crsnode::x e _crsnode::y.

Referenciado por _dspMember() e prjSaveResults().

int crsGetNumMembers void   ) 
 

Esta função retorna o número de barras do modelo de pórtico plano ativo.

Se não existir um modelo ativo, o número de barras retornado é nulo.

Retorna:
número total de barras do modelo ativo.

Definição na linha 919 do arquivo crs.c.

Referências crs e _crsmodel::n_member.

Referenciado por dspModel(), prjChkEmptyModel(), prjClipboard(), prjPanDown(), prjPanLeft(), prjPanRight(), prjPanUp(), prjPrint(), prjProcessGoThru(), prjProcessInit(), prjProcessNode(), prjProcessStep(), prjSaveResults(), prjZoomIn() e prjZoomOut().

int crsGetNumNodes void   ) 
 

Esta função retorna o número de nós do modelo de pórtico plano ativo.

Se não existir um modelo ativo, o número de nós retornado é nulo.

Retorna:
numero total de nós do modelo ativo.

Definição na linha 879 do arquivo crs.c.

Referências crs e _crsmodel::n_node.

void* crsInitModel int  max_nodes,
int  max_members
 

Esta função inicializa um novo modelo de pórtico plano.

O tamanho inicial dos vetores de nós e barras do modelo são dimensionados com base nos parâmetros fornecidos (max_nodes e max_members). O número total de nós e barras são inicializados como zero.

Parâmetros:
max_nodes - numero máximo de nós para dimensionamento (in)
max_members - numero máximo de barras para dimensionamento (in)
Retorna:
ponteiro para o novo modelo criado.

Definição na linha 377 do arquivo crs.c.

Referências crsFreeModel(), CrsMember, CrsModel, CrsNode, _crsmodel::max_members, _crsmodel::max_nodes, _crsmodel::member, _crsmodel::n_member, _crsmodel::n_node e _crsmodel::node.

Referenciado por nfrCrsModel().

void crsMemberElasticity int  id,
double  E
 

Esta função define o valor do módulo de elasticidade de uma barra do modelo de pórtico plano ativo.

Nada vai acontencer se nenhum modelo estiver ativo ou se o índice da barra dado não for válido.

Parâmetros:
id - índice da barra no vetor de barras do modelo (in)
E - valor do módulo de elasticidade (in)

Definição na linha 623 do arquivo crs.c.

Referências crs, _crsmember::E, _crsmodel::member e _crsmodel::n_member.

Referenciado por ReadBeamElems().

void crsMemberInertia int  id,
double  I
 

Esta função define o valor do momento de inércia da seção transversal de uma barra do modelo de pórtico plano ativo.

Nada vai acontencer se nenhum modelo estiver ativo ou se o índice da barra dado não for válido.

Parâmetros:
id - índice da barra no vetor de barras do modelo (in)
I - valor do momento de inércia (in)

Definição na linha 644 do arquivo crs.c.

Referências crs, _crsmember::I, _crsmodel::member e _crsmodel::n_member.

Referenciado por ReadBeamElems().

void crsMemberUnifLoad int  id,
double  q
 

Esta função define o valor da carga uniformente distribuída de uma barra do modelo de pórtico plano ativo.

É fornecida a taxa de carregamento transversal uniformemente distribuido da barra, sendo que a convenção de sinais adotada é tal que um valor positivo de carga corresponde à direção de baixo para cima com relação ao eixo local y (transversal) da barra. A carga é considerada abrangendo todo o comprimento da barra. Nada vai acontencer se nenhum modelo estiver ativo ou se o índice da barra dado não for válido.

Parâmetros:
id - índice da barra no vetor de barras do modelo (in)
q - valor da carga uniformente distribuída (in)

Definição na linha 671 do arquivo crs.c.

Referências crs, _crsmodel::member, _crsmodel::n_member e _crsmember::q.

Referenciado por ReadUnifLoad().

int crsPickNode double  x,
double  y,
double  tol
 

Esta função verifica se um ponto (x,y) dado está próximo (a menos de uma tolerância) de um nó do modelo de pórtico plano ativo.

Se o ponto está próximo, o índice do primeiro nó encontrado é retornado.

Parâmetros:
x - coordenada x do ponto dado (in)
y - coordenada y do ponto dado (in)
tol - tolerância para verificar proximidade (in)
Retorna:
O índice do nó encontrando, CRS_FAILURE (-1) quando nenhum nó é encontrado próximo ao ponto ou CRS_NO_MODEL_DEFINED (-2) quando não tem nenhum modelo ativo.

Definição na linha 1082 do arquivo crs.c.

Referências crs, CRS_FAILURE, CRS_NO_MODEL_DEFINED, _crsmodel::n_node, _crsmodel::node, _crsnode::x e _crsnode::y.

Referenciado por prjProcessNode().

int crsProcessNode int  id  ) 
 

Esta função processa o equilíbrio de um nó do modelo ativo que é indicado pelo índice fornecido.

Os índices válidos para especificar um nó variam de "0" a "n_node-1".

Parâmetros:
id - índice do nó a ser equilibrado (in)
Retorna:
CRS_SUCCESS (1) quando existe um modelo ativo e o processo iterativo não terminou, CRS_NO_STEP_TO_GO (0) quando existe um modelo ativo e o nó fornecido já está equilibrado, CRS_NO_MODEL_DEFINED (-2) quando não tem nenhum modelo ativo ou CRS_FIXED_NODE (-3) se o nó já está em equilíbrio.

Definição na linha 854 do arquivo crs.c.

Referências _crsProcessNode(), crs, CRS_NO_MODEL_DEFINED, CRS_SUCCESS e crsChkNodeUnbalance().

Referenciado por prjProcessNode().

int crsResetSolution double  mom_tol  ) 
 

Esta função inicializa o Processo de Cross para o modelo de pórtico plano ativo.

Os momentos fletores iniciais (de engastamento perfeito) são calculados para cada barra em função do seu carregamento distribuído e da presença ou não de articulações em suas extremidades.

Parâmetros:
mom_tol - valor de tolerância de momentos para solução iterativa (in)
Retorna:
CRS_SUCCESS (1) quando existe um modelo ativo ou CRS_NO_MODEL_DEFINED (-2) quando não tem nenhum modelo ativo.

Definição na linha 720 do arquivo crs.c.

Referências _crsInitMoments(), crs, CRS_NO_MODEL_DEFINED, CRS_SUCCESS e _crsmodel::mom_tol.

Referenciado por prjOpenModel() e prjProcessInit().

int crsSolveModel void   ) 
 

Esta função executa o Processo de Cross para o modelo de pórtico plano ativo.

Os momentos fletores não são reinicializados, isto é, a solução executada continua do estado corrente do processo iterativo, que pode estar no início ou não.

Retorna:
CRS_SUCCESS (1) quando existe um modelo ativo, CRS_NO_STEP_TO_GO (0) quando existe um modelo ativo e o todos os nós já estão equilibrados ou CRS_NO_MODEL_DEFINED (-2) quando não tem nenhum modelo ativo.

Definição na linha 745 do arquivo crs.c.

Referências _crsGetMaxMomNode(), _crsProcessNode(), crs, CRS_NO_MODEL_DEFINED, CRS_NO_STEP_TO_GO e CRS_SUCCESS.

Referenciado por prjProcessGoThru().

int crsStepSolution void   ) 
 

Esta função processa o equilíbrio de um nó do modelo ativo que tem o maior desequilíbrio de momentos em módulo.

Retorna:
CRS_SUCCESS (1) quando existe um modelo ativo e o processo iterativo não terminou, CRS_NO_STEP_TO_GO (0) quando existe um modelo ativo e o todos os nós já estão equilibrados ou CRS_NO_MODEL_DEFINED (-2) quando não tem nenhum modelo ativo.

Definição na linha 777 do arquivo crs.c.

Referências _crsGetMaxMomNode(), _crsProcessNode(), crs, CRS_NO_MODEL_DEFINED, CRS_NO_STEP_TO_GO e CRS_SUCCESS.

Referenciado por prjProcessStep().


Variáveis

CrsModel* crs = NULL [static]
 

Ponteiro para o modelo ativo.

Definição na linha 133 do arquivo crs.c.

Referenciado por _crsBuildNodeMemberAdj(), crsActivateModel(), crsAddMember(), crsAddNode(), crsChkNodeUnbalance(), crsCompleteModel(), crsFixMemberEndRot(), crsFixNodeRot(), crsFreeMemberEndRot(), crsFreeNodeRot(), crsGetGlobalBox(), crsGetMemberMoments(), crsGetMemberNodes(), crsGetMemberRotLibs(), crsGetMemberUnifLoad(), crsGetNodeCoords(), crsGetNumMembers(), crsGetNumNodes(), crsMemberElasticity(), crsMemberInertia(), crsMemberUnifLoad(), crsPickNode(), crsProcessNode(), crsResetSolution(), crsSolveModel() e crsStepSolution().


Gerado em Tue Oct 5 04:55:02 2004 para Trab3 por doxygen 1.3.4