Interfacing function
eng


HYSTHERESIS

File content


function [x,y,typ]=HYSTHERESIS(job,arg1,arg2)
  x=[];y=[];typ=[]
  select job
   case 'plot' then
    standard_draw(arg1)
   case 'getinputs' then
    [x,y,typ]=standard_inputs(arg1)
   case 'getoutputs' then
    [x,y,typ]=standard_outputs(arg1)
   case 'getorigin' then
    [x,y]=standard_origin(arg1)
   case 'set' then
    x=arg1;
    graphics=arg1.graphics;exprs=graphics.exprs
    model=arg1.model;
    while %t do
      [ok,high_lim,low_lim,out_high,out_low,nzz,exprs]=getvalue('Set parameters',..
		['Switch on at';'Switch off at';'Output when on';
		 'Output when off';'Use zero crossing: yes (1), no (0)'],..
		    list('vec',1,'vec',1,'vec',1,'vec',1,'vec',1),exprs)
      if ~ok then break,end
      if low_lim>high_lim then
	message('switch on value must be larger than switch off value')
      else
	graphics.exprs=exprs;
	model.rpar=[high_lim,low_lim,out_high,out_low]'
	if nzz>0 then nzz=2,end
	model.nzcross=nzz
	x.graphics=graphics;x.model=model
	break
      end
    end
   case 'define' then
    in=1
    ipar=[0] // rule
    nzz=2
    rpar=[1;0;1;0]
    
    model=scicos_model()
    model.sim=list('hystheresis',4)
    model.in=in
    model.out=1
    model.rpar=rpar
    model.nzcross=nzz
    model.nmode=1
    model.blocktype='c'
    model.dep_ut=[%t %f]
    
    exprs=[string(rpar);string(sign(nzz))]
    
    
gr_i=['xrect(orig(1)+0.329*sz(1),orig(2)+0.843*sz(2),0.282*sz(1),0.686*sz(2))';
'xrect(orig(1)+0.613*sz(1),orig(2)+0.843*sz(2),0.256*sz(1),0.003*sz(2))';
'xrect(orig(1)+0.082*sz(1),orig(2)+0.16*sz(2),0.245*sz(1),0.003*sz(2))']

    x=standard_define([2 2],model,exprs,gr_i)
  end
endfunction