Hi all, Please I have been stuck trying to figure out why my code does not read some part of my file. It doesn't read the NODE_COORDINATES. I have attached the .txt file and the code. NOTE: If I run other files with the code, it works, so i'm pretty sure the error is in the .txt file but I just can't find it
TITLE = test_22
ELEMENTS = 22
1 1 2 0.04 2.281e-4
2 2 3 0.04 2.281e-4
3 3 4 0.04 2.281e-4
4 4 5 0.04 2.281e-4
5 5 6 0.04 1.902e-4
6 6 7 0.04 1.902e-4
7 1 7 0.04 2.281e-4
8 2 6 0.04 2.281e-4
9 3 5 0.04 2.281e-4
10 2 7 0.04 2.281e-4
11 3 6 0.04 2.281e-4
12 1 6 0.04 2.281e-4
13 2 5 0.04 2.281e-4
14 1 8 0.04 1.902e-4
15 8 9 0.04 1.902e-4
16 9 10 0.04 2.281e-4
17 10 11 0.04 2.281e-4
18 11 12 0.04 2.281e-4
19 7 12 0.04 2.281e-4
20 8 12 0.04 2.281e-4
21 9 11 0.04 2.281e-4
22 7 8 0.04 2.281e-4
23 9 12 0.04 2.281e-4
24 1 12 0.04 1.902e-4
25 8 11 0.04 1.902e-4
NODE_COORDINATES = 12
1 0.00 0.00
2 -5.00 0.00
3 -10.00 0.00
4 -15.00 0.00
5 -10.00 3.33
6 -5.00 5.33
7 0.00 6.00
8 5.0 0.00
9 10.00 0.00
10 15.00 0.00
11 10.00 3.33
12 5.00 5.33
NODES_WITH_PRESCRIBED_DISPLACEMENTS = 2
4 01 0.000 0.000
10 11 0.000 0.000
YOUNG_MODULUS = 200000000000.0
YIELD_STRESS = 130000.0
DENSITY = 7860
THRESH_HOLD_FREQUENCY = 2.5
NODES_WITH_POINT_LOAD = 5
1 0 -300
2 0 -300
3 0 -300
8 0 -300
9 0 -300
PLOTTING_AMPLIFICATION_FACTOR = 50
NODES_WITH_VARIABLE_COORDINATES = 5
5 01 -15.0 1.0 -5.0 6.0
6 01 -10.0 2.0 0.0 10.0
7 01 -5.0 2.5 5.0 12.0
11 01 5.0 1.0 15.0 6.0
12 01 .2.50 2.0 10.0 10.0
DEFLECTION_LIMIT = 4
1 11 0.0508 0.0508
2 11 0.0508 0.0508
3 11 0.0508 0.0508
9 11 0.0508 0.0508
function [coorddofvar,fixeddata] = truss2D_readdata(filename)%
% Set some basic variables
% ========================
% Number of degrees of freedom per node
ndofn=2;% Number of nodes of the element
nnode=2;%% Read information from data file
% ===============================
%fid = fopen(filename, 'r');title = fscanf(fid, 'TITLE = %s',1);%% Total number of elements in the mesh
nelem = fscanf(fid, '\nELEMENTS = %d', 1);%%Read Table of connectivities
%lnods = fscanf(fid, '\n%d %d %d %f %f', [nnode+3,nelem]);lnods = lnods';sortrows(lnods,1);%...cross-sectional areas
csarea = lnods(:,4);%...second moment of areas
sndmoa = lnods(:,5);%...store only connectivities in lnods
lnods = lnods(:,2:nnode+1);%...create table of element global degrees of freedom
eldofX = lnods*ndofn-1;eldofY = lnods*ndofn;eldofs = [ eldofX(:,1) eldofY(:,1) eldofX(:,2) eldofY(:,2) ]%% Read Nodal coordinates
%npoin = fscanf(fid, '\nNODE_COORDINATES = %d', 1)coord = fscanf(fid, '\n%d %f %f', [3, npoin])coord = coord';sortrows(coord,1);nodnumbers=coord(:,1)coord = coord(:,2:3);%...create table of nodal degrees of freedom
nodofs = [ nodnumbers*ndofn-1 nodnumbers*ndofn ];%%% Read Prescribed displacements
%nnodefix = fscanf(fid,'\nNODES_WITH_PRESCRIBED_DISPLACEMENTS = %d',1);ipresc = fscanf(fid, '\n%d %d %f %f', [2+ndofn, nnodefix]);ipresc = ipresc';fixednodes=ipresc(:,1);%...create tables of fixed dofs and corresponding prescribed values
ifdoffix = zeros(npoin*ndofn,1);icount = 0;for inodefix = 1:nnodefix ipoin=ipresc(inodefix,1); dofX=nodofs(ipoin,1); dofY=nodofs(ipoin,2); if ipresc(inodefix,2)==11 ifdoffix(dofX)=1; ifdoffix(dofY)=1 ; icount = icount+1; valuedoffix(icount) = ipresc(inodefix,3); fixeddoftable(icount) = dofX; icount = icount+1; valuedoffix(icount) = ipresc(inodefix,4); fixeddoftable(icount) = dofY; elseif ipresc(inodefix,2)==1 ifdoffix(dofY)=1; icount = icount+1; valuedoffix(icount) = ipresc(inodefix,4); fixeddoftable(icount) = dofY; elseif ipresc(inodefix,2)==10 ifdoffix(dofX)=1; icount = icount+1; valuedoffix(icount) = ipresc(inodefix,3); fixeddoftable(icount) = dofX; elseif ipresc(inodefix,2)==0 else error('Wrong displacement prescription code in data file') endend%...create table of free dofs by subtracting the set of fixed dofs
% from the set of all dofs
ngdof=npoin*ndofnalldoftable=[1:ngdof]'freedoftable = setxor(alldoftable,fixeddoftable);%% Read Material properties
%matprop.young = fscanf(fid, '\nYOUNG_MODULUS = %f', 1);matprop.yield = fscanf(fid, '\nYIELD _STRESS = %f', 1);%added by Ritamatprop
matprop.density = fscanf(fid, '\nDENSITY = %f', 1);matprop.frequency = fscanf(fid,'\nTHRESH_HOLD_FREQUENCY = %f', 1);
Best Answer