%read residual stress from Moldflow
close all
clear all
clc
format bank
%selected input datasets (intergration point)
ext_=[1 6 10 11 15 20];
for ii_= 1:length(ext_)
fe_res_stress_input_file_name = ['plate_stress_.ele.' num2str(ext_(ii_), '%3.3d')];
%open file
res_file_in = fopen(fe_res_stress_input_file_name);
%read header
text_line_in=fgetl(res_file_in);
text_line_in=fgetl(res_file_in);
text_line_in=fgetl(res_file_in);
%
id_element = 1;
%
while true
%input
text_line_in=fgetl(res_file_in);
%EOF
if ~ischar(text_line_in)
break
end %if
element_stress(id_element,1,ii_)=str2num(text_line_in(1:8)); %ID
element_stress(id_element,2,ii_)=str2num(text_line_in(9:22)); %Sxx
element_stress(id_element,3,ii_)=str2num(text_line_in(22:35)); %Syy
element_stress(id_element,4,ii_)=str2num(text_line_in(36:48)); %Szz
element_stress(id_element,5,ii_)=str2num(text_line_in(49:61)); %Sxy
element_stress(id_element,6,ii_)=str2num(text_line_in(62:74)); %Syz
element_stress(id_element,7,ii_)=str2num(text_line_in(75:86)); %Szx
id_element = id_element + 1;
end
fclose(res_file_in);
end
%
thk_point = [-0.969 -0.901 -0.8215 -0.732 -0.634 -0.5285 -0.417 -0.3015 -0.183 -0.0615 ...
0.0615 0.183 0.3015 0.417 0.5285 0.634 0.7320 0.8215 0.901 0.969];
%corespondence table
load corespondence_table.dat
c_t_=corespondence_table;
%
fe_res_stress_output_file_name = 'plate_tria_residual_stress_.key';
res_file_out = fopen(fe_res_stress_output_file_name,'w');
%
fprintf(res_file_out,'*INITIAL_STRESS_SHELL'); fprintf(res_file_out,'\r'); fprintf(res_file_out,'\n');
%
for ii_=1:length(c_t_)
clear output_stress_
for jj_=1:length(ext_)
output_stress_(ii_,1)=c_t_(ii_,2);
c_elem_=c_t_(ii_,2);
kk_=find(element_stress(:,1,jj_)==c_elem_);
Sxx=element_stress(kk_,2,jj_); Syy=element_stress(kk_,3,jj_); Szz=element_stress(kk_,4,jj_);
Sxy=element_stress(kk_,5,jj_); Syz=element_stress(kk_,7,jj_); Szx=element_stress(kk_,6,jj_);
output_stress_(ii_,2) = Sxx; output_stress_(ii_,3) = Syy; output_stress_(ii_,4) = Szz;
output_stress_(ii_,5) = Sxy; output_stress_(ii_,6) = Syz; output_stress_(ii_,7) = Szx;
%export results
if jj_==1
fprintf(res_file_out,'%10.0f',output_stress_(ii_,1));
fprintf(res_file_out,'%10.0f', 1);
fprintf(res_file_out,'%10.0f',length(ext_));
fprintf(res_file_out,'%10.0f',0);
fprintf(res_file_out,'\r'); fprintf(res_file_out,'\n');
end
Ssf_=1e6; %MPa
fprintf(res_file_out,'%10.5f',thk_point(ext_(jj_)));
fprintf(res_file_out,'%10.5f',output_stress_(ii_,2)/Ssf_);
fprintf(res_file_out,'%10.5f',output_stress_(ii_,3)/Ssf_);
fprintf(res_file_out,'%10.5f',output_stress_(ii_,4)/Ssf_);
fprintf(res_file_out,'%10.5f',output_stress_(ii_,5)/Ssf_);
fprintf(res_file_out,'%10.5f',output_stress_(ii_,6)/Ssf_);
fprintf(res_file_out,'%10.5f',output_stress_(ii_,7)/Ssf_);
fprintf(res_file_out,'\r'); fprintf(res_file_out,'\n');
end
for jj_=1:length(ext_)
output_stress_(ii_,1)=c_t_(ii_,3);
c_elem_=c_t_(ii_,3);
kk_=find(element_stress(:,1,jj_)==c_elem_);
Sxx=element_stress(kk_,2,jj_); Syy=element_stress(kk_,3,jj_); Szz=element_stress(kk_,4,jj_);
Sxy=element_stress(kk_,5,jj_); Syz=element_stress(kk_,7,jj_); Szx=element_stress(kk_,6,jj_);
output_stress_(ii_,2) = Sxx; output_stress_(ii_,3) = Syy; output_stress_(ii_,4) = Szz;
output_stress_(ii_,5) = Sxy; output_stress_(ii_,6) = Syz; output_stress_(ii_,7) = Szx;
%export results
if jj_==1
fprintf(res_file_out,'%10.0f',output_stress_(ii_,1));
fprintf(res_file_out,'%10.0f',1);
fprintf(res_file_out,'%10.0f',length(ext_));
fprintf(res_file_out,'%10.0f',0);
fprintf(res_file_out,'\r'); fprintf(res_file_out,'\n');
end
Ssf_=1e6; %MPa
fprintf(res_file_out,'%10.5f',thk_point(ext_(jj_)));
fprintf(res_file_out,'%10.5f',output_stress_(ii_,2)/Ssf_);
fprintf(res_file_out,'%10.5f',output_stress_(ii_,3)/Ssf_);
fprintf(res_file_out,'%10.5f',output_stress_(ii_,4)/Ssf_);
fprintf(res_file_out,'%10.5f',output_stress_(ii_,5)/Ssf_);
fprintf(res_file_out,'%10.5f',output_stress_(ii_,6)/Ssf_);
fprintf(res_file_out,'%10.5f',output_stress_(ii_,7)/Ssf_);
fprintf(res_file_out,'\r'); fprintf(res_file_out,'\n');
end
end
fclose(res_file_out);