Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas

viernes, 3 de mayo de 2013

REPARTO PROPORCIONAL DE ESPACIOS COMUNES


cls
data 10 'numero de viviendas
data 60.93,50.33,73.69,92.38,98.15,58.04,73.69,64.35,67.63,58.04     'sup. utiles de cada viv
data 89.87                                 'sup. construida de los espacios comunes.

domingo, 30 de septiembre de 2012

Coordenadas de los nudos de una estructura espacial.


Coordenadas de los nudos de una estructura espacial.


Estructura espacial 

Planta de estructura espacial

Un programa que calcule una cercha espacial como son las típicas estructuras trianguladas de dos capas presentan un primer problema que consiste en dar coordenadas a todos los nudos, que pueden ser cientos, y listar las barras, que pueden llegar también a varios cientos.

Para automatizar este proceso en estructuras similares a la que se indica en el dibujo primero tendremos que deducir las ecuaciones que describen sus secuencias, que en este caso es bastante regular. Suponiendo un modulo regular, como es habitual, para cada dirección, lo cual hace que el algoritmo sea más general, se han formado tablas de varios casos simples, como este de 3 tramos en cada dirección, con dimensiones a y b para cada tramo de cada dirección:


La dirección horizontal es x, con `ta=3` tramos de dimensión a cada uno. La dirección vertical es y, con `tb=3` tramos de dimensión b cada uno. La dirección z es perpendicular a este plano, a distancia c de altura en los nudos 5,6,7,12,13,14, 19,20 y 21.


Coordenadas de los nudos


x
y
z

x
y
z

x
y
z

x
y
z
1
0
0
0
2
a
0
0
3
2a
0
0
4
3a
0
0
5
a/2
b/2
c
6
3a/2
b/2
c
7
5a/2
b/2
c




8
0
b
0
9
a
b
0
10
2a
b
0
11
3a
b
0
12
a/2
3b/2
c
13
3a/2
3b/2
c
14
5a/2
3b/2
c




15
0
2b
0
16
a
2b
0
17
2a
2b
0
18
3a
2b
0
19
a/2
5b/2
c
20
3a/2
5b/2
c
21
5a/2
5b/2
c




22
0
3b
0
23
a
3b
0
24
2a
3b
0
25
3a
3b
0


Numero de nudos: ndn = `(ta+1)·(tb+1)+ta·tb = ta·tb+ta+tb+1+ta·tb = 2·ta·tb+ta+tb+1`

Barras  (En columnas de series de barras de la misma dirección)

Horizontales

diagonales Inclnadas a izquierda
diagonales inclinadas a derecha


verticales
diagonales en el plano
1.2


1.5


1.8
1.9
2.3

2.5
2.6


2.9
2.10
3.4

3.6
3.7


3.10
3.11


4.7



4.11

5.6

5.8
5.9


5.12
5.13
6.7

6.9
6.10


6.13
6.14


7.10
7.11


7.14

8.9


8.12


8.15
8.16
9.10

9.12
9.13


9.16
9.17
10.11

10.13
10.14


10.17
10.18


11.14



11.18

12.13

12.15
12.16


12.19
12.20
13.14

13.16
13.17


13.20
13.21


14.17
14.18


14.21

15.16


15.19


15.22
15.23
16.17

16.19
16.20


16.23
16.24
17.18

17.20
17.21


17.24
17.25


18.21



18.25

19.20

19.22
19.23




20.21

20.23
20.24






21.24
21.25




22.23







23.24







24.25








a= ancho de la barra horizontal
b = ancho de la barra vertical
c= altura o canto de la estructura

ta = numero de tramos en dirección horizontal
tb = idem en dirección vertical

Tamaño de los tramos de las series verticales que se repiten: 2·ta+1 = 2·3+1= 7

Tamaño de la primera serie (horizontales):
(tb -1)·(2·ta +1)+3·ta+2-1 = 2·ta·tb+tb-2·ta-1+3·ta+2 -1 = 2·ta·tb+ta+tb+1-1 = ndn-1

Numero de barras:

Nba = ta·(tb+1) + tb·(ta+1) + 4·ta·tb + (ta-1)·tb+1-1) + (tb-1)·(ta+1-1)  + 1=
ta·(tb+1+tb-1) + tb·(ta+1+ta-1) + 4·ta·tb + 2*ta·tb -ta - tb +1=
2ta·tb +2·ta·tb + 4·ta·tb  +2·ta·tb -ta - tb +1 = 10·ta·tb -ta - tb + 1


Vemos que las secuencias que se repiten, en cada serie son distintas aunque parecidas. Empezaremos por las coordenadas de los nudos, suponiendo la estructura plana:


for n=1 to tb                                                 'numero de secuencias idénticas en dirección b (vertical)
  for m=1 to 2*ta+1                                       'numero de nudos en cada serie horizontal contando los dos planos de la cercha
    w=m+(2*ta+1)*(n-1)                                 'numeración correlativo de los nudos en los dos planos simultáneamente para reducir el tamaño de la
                                                                                      'matriz de calculo (diferencia máxima entre los números de los extremos de cada barra.)
    if m'si se trata de nudos de la capa inferior
        x(w)=a*(m-1) : y(w)=b*(n-1) : z(w)=0
    else                                                          'si se trata de nudos de la capa superior
      x(w)=a*(2*(m-(ta+1))-1)/2 : y(w)=b*(2*n-1)/2 : z(w)=c
    end if
  next
next

for m=1 to ta+1                                            'este bucle reproduce el caso de nudos en la capa inferior para la ultima fila.
  w=m+(2*ta+1)*(tb)
  x(w)=a*(m-1) : y(w)=b*(tb) : z(w)=0
next


La coordenada x es la correspondiente a la dirección de a, y corresponde a la dirección de b,  z es el canto c. Como se ve la última secuencia de nudos se ha sacado del bucle principal para mayor claridad, aunque podría incluirse con algunas modificaciones en dicho bucle.