#include "nsl_include.h" /*****************************************************************/ /** MaxSelector.nslm **/ /*****************************************************************/ // Modifications : // // 1) nslModel MaxSelectorModel () -> nslModel MAxSelectorModel class MaxSelector : public NslModule { public: MaxSelector(char*, NslModule*, int ); public: ~MaxSelector(); private: NslFloat1 s; private: NslFloat1 up; private: NslFloat1 uf; private: NslFloat0 vp; private: NslFloat0 vf; private: NslFloat0 tu; private: NslFloat0 tv; private: NslFloat0 wuu; private: NslFloat0 wvu; private: NslFloat0 wuv; private: NslFloat0 hu; private: NslFloat0 hv; private: NslFloat0 k; public: virtual void initRun(){ up= 0; uf= 0; vp= 0; vf= 0; } public: virtual void simRun(){ // nslDiff(up,tu, -up + wuu@uf - wvu@vf - hu + s); nslDiff(up,tu, - up+ wuu*uf - wvu*vf - hu+ s); uf= NSLstep(up,k); // nslDiff(vp,tv, -vp + NSLsum(wuv@uf) - hv); nslDiff(vp,tv, - vp+ (wuv*uf).sum() - hv); vf= NSLramp(vp); } }; MaxSelector::MaxSelector(char *_nslName,NslModule *_nslParent, int n) : NslModule(_nslName, _nslParent), s("s",this,n), up("up",this,n), uf("uf",this,n), vp("vp",this,n), vf("vf",this,n), tu("tu",this,n), tv("tv",this,n), wuu("wuu",this,n), wvu("wvu",this,n), wuv("wuv",this,n), hu("hu",this,n), hv("hv",this,n), k("k",this,n) { } MaxSelector::~MaxSelector() { } // extends NslModule () class MaxSelectorModel : public NslModel { public: MaxSelectorModel(); public: ~MaxSelectorModel(); public: MaxSelector maxSelector; }; MaxSelectorModel::MaxSelectorModel() : NslModel("MaxSelectorModel"), maxSelector("maxSelector",this,10) { } MaxSelectorModel::~MaxSelectorModel() { } AslSchemaModel _MaxSelectorModel("MaxSelectorModel");