%Selection of corresponding local model nodes based on global model nodes
format long g
A=textread('localnode.txt');
B=textread('globalnode.txt');
[m1,n1] = size(A);
[m2,n2] = size(B);
C=zeros(m1,2);
for i=1:m1
    P = 2;
    for j=1:m2
        if abs(A(i,2)-B(j,2))<=2 && abs(A(i,3)-B(j,3))<=2 && abs(A(i,4)-B(j,4))<=2
            Q=sqrt((A(i,2)-B(j,2))^2+(A(i,3)-B(j,3))^2+abs(A(i,4)-B(j,4))^2);
            if Q<=P
                C(i,1)=A(i,1);
                C(i,2)=B(j,1);
                P = Q;
            else
            end
        else
        end
    end
end
%Extraction of global model nodes
sg1=sprintf('/post26');
sg2=sprintf('lines,999999');
sg3=sprintf('/uis,msgpop,3');
sg4=sprintf('*DIM,disx,,301,2');
sg5=sprintf('*DIM,disy,,301,2');
sg6=sprintf('*DIM,disz,,301,2');
fileID = fopen('globaldofs.txt','at');
fprintf(fileID,'%s\n%s\n%s\n%s\n%s\n%s\n',sg1,sg2,sg3,sg4,sg5,sg6);
fclose(fileID);
for i=1:m1
    if C(i,2)~=0
    s1=sprintf('nsol,2,%d,u,x',C(i,2));
    s2=sprintf('nsol,3,%d,u,y',C(i,2));
    s3=sprintf('nsol,4,%d,u,z',C(i,2));
    s4=sprintf('vget,disx(1,2),2');
    s5=sprintf('vget,disy(1,2),3');
    s6=sprintf('vget,disz(1,2),4');
    s7=sprintf('*do,i,1,301,1');
    s8=sprintf('disx(i,1)=i');
    s9=sprintf('disy(i,1)=i');
    s10=sprintf('disz(i,1)=i');
    s11=sprintf('*enddo');
    s12=sprintf('*mwrite,disx,!%d!ux,txt,,',C(i,2));
    s13=sprintf('(F9.4)');
    s14=sprintf('*mwrite,disy,!%d!uy,txt,,',C(i,2));
    s15=sprintf('(F9.4)');
    s16=sprintf('*mwrite,disz,!%d!uz,txt,,',C(i,2));
    s17=sprintf('(F9.4)');
    fileID = fopen('globaldofs.txt','at');
    fprintf(fileID,'%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n',s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17);
    fclose(fileID);
    else
    end
end
%Import to corresponding local model nodes
sl1=sprintf('allsel,all');
sl2=sprintf('/prep7');
sl3=sprintf('*dim,xdaf,table,264,1,1,,,');
sl4=sprintf('*dim,ydaf,table,264,1,1,,,');
sl5=sprintf('*dim,zdaf,table,264,1,1,,,');
sl6=sprintf('*tread,zdaf,!z_acceleration!,!txt!, ,,');
sl7=sprintf('*tread,ydaf,!y_acceleration!,!txt!, ,,');
sl8=sprintf('*tread,xdaf,!x_acceleration!,!txt!, ,,');
fileID = fopen('globaltolocal.txt','at');
fprintf(fileID,'%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n',sl1,sl2,sl3,sl4,sl5,sl6,sl7,sl8);
fclose(fileID);
for i=1:m1
    if C(i,1)~=0
    sz1=sprintf('*dim,x%d,table,264,1,1,,,',C(i,1));
    sz2=sprintf('*dim,y%d,table,264,1,1,,,',C(i,1));
    sz3=sprintf('*dim,z%d,table,264,1,1,,,',C(i,1));
    sz4=sprintf('*tread,x%d,!%dux!,!txt!, ,,',C(i,1),C(i,2));
    sz5=sprintf('*tread,y%d,!%duy!,!txt!, ,,',C(i,1),C(i,2));
    sz6=sprintf('*tread,z%d,!%duz!,!txt!, ,,',C(i,1),C(i,2));
    fileID = fopen('globaltolocal.txt','at');
    fprintf(fileID,'%s\n%s\n%s\n%s\n%s\n%s\n',sz1,sz2,sz3,sz4,sz5,sz6);
    fclose(fileID);
    else
    end
end
%Boundary conditions
for j=1:m1
    if C(j,1)~=0
    sb1=sprintf('d,%d,ux,x%d(i)',C(j,1),C(j,1));
    sb2=sprintf('d,%d,uy,y%d(i)',C(j,1),C(j,1));
    sb3=sprintf('d,%d,uz,z%d(i)',C(j,1),C(j,1));
    fileID = fopen('boundaryconditions.txt','at');
    fprintf(fileID,'%s\n%s\n%s\n',sb1,sb2,sb3);
    fclose(fileID);
    else
    end
end