
Problema al escribir en Matriz (Postprocesado Datos FEM)
Publicado por Pablo (6 intervenciones) el 23/02/2014 17:46:33
Buenas tardes,
estoy desarrollando un script para calcular los tensiones principales y sus vectores directores a partir de los tensores de tensiones calculados en NXNASTRAN de un modelo FEM.
Mi script tiene el siguiente algoritmo:
function [] = programa()
clear all;clc
A=csvread('tensor_1.csv');
[r,c]=size(A);
for i=1:1:r
nelemento = A(i,1);
T = crea_matriz_T(A,i)
[V,D]=calc_eigen(T)
S = genera_S(V,D,i,nelemento)
end
escribir_archivo(S);
end
Como podeis ver lo primero que hago es leer los tensores de un archivo y generar una matriz A con todos los datos.
Como los datos los tengo por filas, la siguiente instruccion crea una matriz T a partir de cada fila.
Cuando tengo la matriz T , calculo los valores y vectores propios.
Por ultimo , escribo en la matriz S los datos (tensiones principales y sus vectores) para cada elemento.
Lo ultimo sera escribir la matriz S en un fichero.
Hasta aqui todo correcto , el problema es que cuando hace la primera iteracion la funcion genera_S, escribe los resultados correctamente , pero en la segunda iteracion, al escribir los resultados en la segunda linea ; la primera , que la habia escrito correctamente, me la deja con ceros.
En resumen, si realizo 10 iteraciones solo me escribe resultados en la ultima fila, las anteriores me las deja con 0.
He corrido el programa pidiendoles las salidas en cada paso y he comprobado que en la primera pasada escribe la primera fila de S correctamente el problema estas a partir de la segunda.
Os adjunto el codigo de la funcion genera_S:
function [S] = genera_S (V,D,i,nelemento)
S(i,1)=nelemento;
S(i,2)=D(1,1);
S(i,3)=D(2,2);
S(i,4)=D(3,3);
S(i,5)=V(1,1);
S(i,6)=V(2,1);
S(i,7)=V(3,1);
S(i,8)=V(1,2);
S(i,9)=V(2,2);
S(i,10)=V(3,2);
S(i,11)=V(1,3);
S(i,12)=V(2,3);
S(i,13)=V(3,3);
end
Gracias de antemano, por vuestra ayuda y sugerencias.
Un saludo
estoy desarrollando un script para calcular los tensiones principales y sus vectores directores a partir de los tensores de tensiones calculados en NXNASTRAN de un modelo FEM.
Mi script tiene el siguiente algoritmo:
function [] = programa()
clear all;clc
A=csvread('tensor_1.csv');
[r,c]=size(A);
for i=1:1:r
nelemento = A(i,1);
T = crea_matriz_T(A,i)
[V,D]=calc_eigen(T)
S = genera_S(V,D,i,nelemento)
end
escribir_archivo(S);
end
Como podeis ver lo primero que hago es leer los tensores de un archivo y generar una matriz A con todos los datos.
Como los datos los tengo por filas, la siguiente instruccion crea una matriz T a partir de cada fila.
Cuando tengo la matriz T , calculo los valores y vectores propios.
Por ultimo , escribo en la matriz S los datos (tensiones principales y sus vectores) para cada elemento.
Lo ultimo sera escribir la matriz S en un fichero.
Hasta aqui todo correcto , el problema es que cuando hace la primera iteracion la funcion genera_S, escribe los resultados correctamente , pero en la segunda iteracion, al escribir los resultados en la segunda linea ; la primera , que la habia escrito correctamente, me la deja con ceros.
En resumen, si realizo 10 iteraciones solo me escribe resultados en la ultima fila, las anteriores me las deja con 0.
He corrido el programa pidiendoles las salidas en cada paso y he comprobado que en la primera pasada escribe la primera fila de S correctamente el problema estas a partir de la segunda.
Os adjunto el codigo de la funcion genera_S:
function [S] = genera_S (V,D,i,nelemento)
S(i,1)=nelemento;
S(i,2)=D(1,1);
S(i,3)=D(2,2);
S(i,4)=D(3,3);
S(i,5)=V(1,1);
S(i,6)=V(2,1);
S(i,7)=V(3,1);
S(i,8)=V(1,2);
S(i,9)=V(2,2);
S(i,10)=V(3,2);
S(i,11)=V(1,3);
S(i,12)=V(2,3);
S(i,13)=V(3,3);
end
Gracias de antemano, por vuestra ayuda y sugerencias.
Un saludo
Valora esta pregunta


0