-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathread_input_ntrp_file.m
More file actions
executable file
·135 lines (126 loc) · 4.95 KB
/
read_input_ntrp_file.m
File metadata and controls
executable file
·135 lines (126 loc) · 4.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
function [in]= read_input_ntrp_file
[FileName,PathName] = uigetfile({'*.ntrp'},'Select File');
if FileName == 0
return;
end
if ~strcmpi(FileName(end-4:end), '.ntrp')
errordlg('This file is not a interpolation input. File name must end with: ''*.ntrp''',...
'File Error');
return;
end
FullFileName = strcat(PathName,FileName);
in.save_path = PathName;
fileprefix = FileName(1:end-5);
in.result.fea.FileName = fileprefix;
% [Text] = textread(FullFileName, '%[^\n]');
fid = fopen(FullFileName, 'rt');
ts = textscan(fid, '%[^\r\n]');
Text = ts{1};
in.interp.cb_test_predict = 0;
in.interp.cb_eval_test = 0;
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%deterimine units type
units_index = find_string_index('*units', Text);
units_type = sscanf(Text{units_index},'%*s %s');
if strcmp(units_type, 'SI')
in.result.units = 2;
else
in.result.units = 1;
end
%read geometry values section
two_c_index = find_string_index('*2c', Text);
a_index = find_string_index('*a', Text);
B_index = find_string_index('*B', Text);
W_index = find_string_index('*W', Text);
%
in.interp.two_c = sscanf(Text{two_c_index},'%*s %f');
in.interp.a = sscanf(Text{a_index},'%*s %f');
in.interp.W = sscanf(Text{W_index},'%*s %f');
in.interp.B = sscanf(Text{B_index},'%*s %f');
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%read material properties section
base_index = find_string_index('*material', Text);
end_index = find_string_index('*end_material', Text);
fea_props.base_index = base_index;
se_index = find_string_index('*stress', Text);
fea_props.se_index = se_index;
%read base metal properties
if ~isempty(base_index)
E_index = find_string_index('*E', Text);
fea_props.base_E = sscanf(Text{E_index},'%*s %f');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%added these lines 3/8/12 to assist in interpolation routine
fea_props.FileName = FileName;
fea_props.FullFileName = FullFileName;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fea_props.length_base_table = end_index-se_index-1;
%
if ~isempty(se_index)
for i = 1:fea_props.length_base_table
% fea_props.base_se(i,1) = sscanf(Text{base_index+2+i},'%f , %*f');
% fea_props.base_se(i,2) = sscanf(Text{base_index+2+i},'%*f , %f');
%use textscan to allow reading of tab, space, or comma delimited
%data
fea_props.base_se_cell(i,1) = textscan(Text{se_index+i},'%f %*f', 'delimiter', ',');
fea_props.base_se_cell(i,2) = textscan(Text{se_index+i},'%*f %f', 'delimiter', ',');
%pull out of cell array
fea_props.base_se(i,1) = fea_props.base_se_cell{i,1};
fea_props.base_se(i,2) = fea_props.base_se_cell{i,2};
end
else
Sys_index = find_string_index('*Sys', Text);
n_index = find_string_index('*n', Text);
fea_props.Sys_NotTable = sscanf(Text{Sys_index},'%*s %f');
fea_props.n = sscanf(Text{n_index},'%*s %f');
fea_props.base_se(1,1) = 0;
fea_props.base_se(1,2) = 0;
end
end
in.fea_props = fea_props;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%read pre-test prediction section
pretest_index = find_string_index('*pretest', Text);
if ~isempty(pretest_index)
Jc_index = find_string_index('*Jc', Text);
phi_crit_index = find_string_index('*phi_crit', Text);
in.result.crit_Jc = sscanf(Text{Jc_index},'%*s %f');
in.result.crit_phi = sscanf(Text{phi_crit_index},'%*s %f');
in.interp.cb_test_predict = 1;
end
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%read test evaluation section
test_eval_index = find_string_index('*test_eval', Text);
if ~isempty(test_eval_index)
force_index = find_string_index('*tear_force', Text);
phi_index = find_string_index('*tear_phi', Text);
data_index = find_string_index('*CMOD', Text);
end_data_index = find_string_index('*end_test_data', Text);
data_length = end_data_index-data_index-1;
for i = 1:data_length
%in.testdata.CMOD(i) = sscanf(Text{data_index+i},'%f %*f');
%in.testdata.force(i) = sscanf(Text{data_index+i},'%*f %f');
%use textscan to allow reading of tab, space, or comma delimited
%data
in.testdata.CMOD_cell(i) = textscan(Text{data_index+i},'%f %*f', 'delimiter', ',');
in.testdata.force_cell(i) = textscan(Text{data_index+i},'%*f %f', 'delimiter', ',');
%pull out of cell array
in.testdata.CMOD(i) = in.testdata.CMOD_cell{i};
in.testdata.force(i) = in.testdata.force_cell{i};
end
in.result.tear_load = sscanf(Text{force_index},'%*s %f');
in.result.tear_angle = sscanf(Text{phi_index},'%*s %f');
in.interp.cb_eval_test = 1;
in.testdata.testdata_filename = FileName;
end
%%
%turn off pre test prediciton if both test prediciton and test evaluation
%data are present
if in.interp.cb_test_predict == 1 && in.interp.cb_eval_test == 1
in.interp.cb_test_predict = 0;
end
end