Sub reordenar(DOF As Integer, fil As Integer, K11() As Double, R() As Integer, KG() As Double, Q() As Double, d() As Double) ‘DOF son los grados de libertad de la estructura ´fil es el número de filas de la matriz aumentada, que es igual al número de desplazamientos desconocidos ‘K11 es la matriz aumentada que se crea en este sub proceso ‘R() es el vector con los valores 1 ó 0, con las la información de los nodos con apoyos ‘KG() es la matriz global de la estructura ‘Q() es el vector con las cargas aplicadas en los nudos ‘d() es el vector con los desplazamientos conocidos y desconocidos, según su dirección ‘Todos los parámetros antes definidos deben dimensionarse en el subproceso que los llama Dim K12() As Double, FM() As Double Dim dm() As Double, kq() As Double '******************************************************************************** ' PROCESO QUE EXTRAE DE LA MATRIZ GLOBAL LA MATRIZ K11 DE DESPLAZAMIENTOS DESCONOCIDOS QUE SE RESOLVERÁ COMO ECUACIONES SIMULTÁNEAS '******************************************************************************** ‘Las matrices redimensionadas a continuación se usan solamente en este subproceso ReDim FM(DOF) 'vector de fuerzas modificado ReDim K12(DOF, DOF) 'parte de la matriz K global que se incorpora a K11 ReDim dm(DOF) ReDim kq(DOF) Dim acum As Double fil = 0 For i = 1 To DOF If R(i) = 0 Then 'busca la fila donde el desplazamiento es desconocido usando el código 1 para conocidos y 0 para desconocidos. El vector R() guarda las posiciones 1 o 0 para desplazamientos conocidos y desconocidos fil = fil + 1 'fil es el número de filas que corresponden a la cantidad de DOF's desconocidos FM(fil) = Q(i) 'Vector que asigna a FM las fuerzas aplicadas a los nodos con Du col = 0 'col es el número de columnas que corresponden a la cantidad de DOF's col2 = 0 For j = 1 To DOF If R(j) = 0 Then col = col + 1 K11(fil, col) = KG(i, j) 'formación de la matriz del cuadrante k11 de la K global End If If R(j) = 1 Then col2 = col2 + 1 K12(fil, col2) = KG(i, j) 'formación de la matriz del cuadrante k12 de la K global dm(col2) = d(j) End If Next End If Next For i = 1 To fil acum = 0 For j = 1 To col2 acum = acum + K12(i, j) * dm(j) 'producto [K12]*{Dk} para sumar a las cargas Next kq(i) = FM(i) - acum '{Qk}-[K12]{Dk}+{(Qk)o} Suma al vector temporal kg() las cargas aplicadas Next '******************************************************************************** ' proceso para crear matriz aumentada para enviar a solución por gauss '******************************************************************************** For i = 1 To fil 'fil es el número de filas que corresponden a la cantidad de DOF's desconocidos al igual que col K11(i, col + 1) = kq(i) 'se agrega a K11 una columna con los valores del vector temporal kg() Next End Sub