function input2d(textname)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% determines the region to be applied
% C          :boundary positions
% xx yy      :grid positions
% h          :grid width
% n          :degree
% name       :project name
% bound      :boundary data
% bound.cont :'0' rectangle, '1' ellipse, '2' unarbitrary region
% bound.con  :'0' Dirichlet, '1' Neumann
% Created by G.Apaydin in June 2006
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
global bound xx yy h n name C TH k2 NC
C=[];C1=[];cwd=pwd;cd('input');f1=textread(textname,'%s');cd(cwd);k=uint8(0);
for i=1:length(f1)
    if strcmp(f1{i},'rect')
        k=k+1;bound{k}.cont=0;  %'0' for rectangle
        bound{k}.th=0:696;%696 120
        bound{k}.rx=str2double(f1{i+1});bound{k}.ry=str2double(f1{i+2});
        bound{k}.sx=str2double(f1{i+3});bound{k}.sy=str2double(f1{i+4});
        a=175;b=175;%697 icin (175,175)+1 look line 54; 121 icin (42,20)+1
        c1=linspace(bound{k}.rx,bound{k}.rx+bound{k}.sx,a);c2=rot90(c1)';
        c3=linspace(bound{k}.ry,bound{k}.ry+bound{k}.sy,b);c4=rot90(c3)';
        C=[C;c1 c1(end)*ones(1,b-2) c2 c2(end)*ones(1,b-2) c1(1);c3(1)*ones(1,a) c3(2:end-1) c4(1)*ones(1,a) c4(2:end-1) (c3(1)+c3(2))/2];i=i+4;
     elseif strcmp(f1{i},'ellipse')
        k=k+1;bound{k}.cont=1;
        bound{k}.th=linspace(0,2*pi,697);%121 or 697
        bound{k}.rx=str2double(f1{i+1});bound{k}.ry=str2double(f1{i+2});
        bound{k}.sx=str2double(f1{i+3});bound{k}.sy=str2double(f1{i+4});
        if k==1,%bound{k}.fun=inline(['1-((X-(',f1{i+3},'))/',f1{i+1},').^2-((Y-(',f1{i+4},'))/',f1{i+2},').^2'],'X','Y');
            bound{k}.fun=@(X,Y) [1-((X-bound{k}.sx)/bound{k}.rx).^2-((Y-bound{k}.sy)/bound{k}.ry).^2];
        else %bound{k}.fun=inline(['-1+((X-(',f1{i+3},'))/',f1{i+1},').^2+((Y-(',f1{i+4},'))/',f1{i+2},').^2'],'X','Y');
            bound{k}.fun=@(X,Y) [-1+((X-bound{k}.sx)/bound{k}.rx).^2+((Y-bound{k}.sy)/bound{k}.ry).^2];
        end
        
        C=[C;bound{k}.rx*cos(bound{k}.th)+bound{k}.sx;bound{k}.ry*sin(bound{k}.th)+bound{k}.sy];i=i+4;
    elseif strcmp(f1{i},'unarbit')
        k=k+1;bound{k}.cont=2;
        xar=[];yar=[];
        while ~(strcmp(f1{i+1},'rect')||strcmp(f1{i+1},'ellipse')||i==length(f1)-2),
            xar=[xar str2double(f1{i+1})];yar=[yar str2double(f1{i+2})];
            i=min(i+2,length(f1)-2);
            if i==length(f1)-2,
                xar=[xar str2double(f1{i+1})];yar=[yar str2double(f1{i+2})];
            end
        end
        d=cumsum([0 sqrt((xar(2:end)-xar(1:end-1)).^2+(yar(2:end)-yar(1:end-1)).^2)]);
        bound{k}.sx=linspace(0,d(end),697);%121 697
        bound{k}.cx=pchip(d,xar,bound{k}.sx);bound{k}.cy=pchip(d,yar,bound{k}.sx);
        C=[C;bound{k}.cx;bound{k}.cy];
     end
end
display(['The optimal grid width can be around ',num2str(min(max(C(1,:))-min(C(1,:)),max(C(2,:))-min(C(2,:)))/10)]);

name='ex';%name=input('Select Output name:','s');
TH=0;%TH=input('Select wave angle in rad:');
k2=handles.k2;%k2=input('Select k^2:');
axes(handles.axes1);hold on
fill(C(1,:),C(2,:),[0.8 0.8 0.8],'LineWidth',2);hold on
bound{1}.con=1;%0 DRICHLET,1 NEUMANN
NC=k;
if NC>1
    for i=2:NC
        fill(C(2*i-1,:),C(2*i,:),[1 1 1],'LineWidth',3);
        bound{i}.con=1;%0 DRICHLET,1 NEUMANN
    end
end
xmin=floor(min(C(1,:)))-n*h;ymin=floor(min(C(2,:)))-n*h;
xmax=ceil(max(C(1,:)))+n*h;ymax=ceil(max(C(2,:)))+n*h;
while(min(C(1,:))-xmin>1.2*n*h),xmin=xmin+h;end,while(min(C(2,:))-ymin>1.2*n*h),ymin=ymin+h;end,
while(xmax-max(C(1,:))>1.2*n*h),xmax=xmax-h;end,while(ymax-max(C(2,:))>1.2*n*h),ymax=ymax-h;end,
axis([xmin-h xmax+h ymin-h ymax+h]);
xx=xmin:h:xmax;yy=ymin:h:ymax;
title('The simulation region','FontSize',10);
grid off;