function insert(name,newmodel)
global zeng zeng2
varnum=name.varnum;
name=name.name;
%dummymodel(i).name ,.para,.nodes
temp=find(name=='{');
if isempty(temp)
eval(['global ' name])
else
eval(['global ' name(1:(temp-1))])
end
if isempty(zeng2.var)
zexstim('err',['Error in INSERT.' ]);
return
end
newmodel=feval(newmodel,'Initial');
if isfield(newmodel,'vini')
eval([name '.vini=newmodel.vini;'])
newmodel=rmfield(newmodel,'vini');
end
if isfield(newmodel,'temperature')
zeng.temperature=newmodel.temperature;
newmodel=rmfield(newmodel,'temperature');
end
%Remove fields and find Ilk--------------------------------------------
temp=newmodel;
for i=1:length(temp.I)
temp.I{i}=rmfield(temp.I{i},'gate');
if isempty(newmodel.I{i}.gate)
zeng2.var{varnum}.Ilk=i; %Used in gui_var to identify which I is Ileak
eval([name '.rm=1/newmodel.I{i}.G;'])
end
end
eval([name '.model=temp;'])
%/Remove fields and find Ilk--------------------------------------------
%create setting.var for viewplot%------------------------------------------------------------------------------
paraname_length=4+length(newmodel.I)+length(newmodel.gate); %[four extra are Vm, Ve, Itotal, and Ic]
paraname=cell(paraname_length,1);
paraname{1}='vm';
paraname{2}='ve';
paraname{3}='I';
j=3;
for i=(1:length(newmodel.I))
j=j+1;
paraname{j}=['I' newmodel.I{i}.name];
end
j=j+1;
paraname{j}=['Ic'];
for i=(1:length(newmodel.gate))
j=j+1;
paraname{j}=[newmodel.gate{i}];
end
zeng2.var{varnum}.paraname=paraname;
%------------------------------------------------------------------------------
%/Remove fields--------------------------------------------
temp=newmodel;
for i=1:length(temp.I)
temp.I{i}=rmfield(temp.I{i},'G');
temp.I{i}=rmfield(temp.I{i},'E');
end
newmodel=temp;
%/Remove fields--------------------------------------------
model_length=length(zeng2.dummymodel);
if model_length==0;
zeng2.dummymodel=cell(1);
zeng2.dummymodel{1} =newmodel;
zeng2.dummymodel{1}.gatenumber=length(zeng2.dummymodel{1}.gate);
zeng2.dummymodel{1}.Inumber =length(zeng2.dummymodel{1}.I);
zeng2.dummymodel{1}.var=varnum;
zeng2.dummymodel{1}.nodes=[];
else
%check if the model exists or not
for i=1:model_length
temp=find(zeng2.dummymodel{i}.var==varnum);
if ~isempty(temp)
zeng2.dummymodel{i}.var(temp)=[];
break
end
end
for i=1:model_length
if strcmp(zeng2.dummymodel{i}.name, newmodel.name)
zeng2.dummymodel{i}.var =[zeng2.dummymodel{i}.var varnum];
return
end
end
zeng2.dummymodel{model_length+1} =newmodel;
zeng2.dummymodel{model_length+1}.gatenumber=length(zeng2.dummymodel{1}.gate);
zeng2.dummymodel{model_length+1}.Inumber =length(zeng2.dummymodel{1}.I);
zeng2.dummymodel{model_length+1}.var =varnum;
zeng2.dummymodel{model_length+1}.nodes =[];
end