diff --git a/NonLinearSolver/internalPoints/ipstate.h b/NonLinearSolver/internalPoints/ipstate.h index b0a56f25eb0c6df862d9967156e958461d1a2161..6e771cf120c9f4a747ff6e0b8fe7404d428d1861 100644 --- a/NonLinearSolver/internalPoints/ipstate.h +++ b/NonLinearSolver/internalPoints/ipstate.h @@ -33,12 +33,12 @@ class IPStateBase{ return *this; } virtual ~IPStateBase(); - + enum whichState{initial, previous, current, temp, activeDissipation}; virtual IPVariable* getState(const whichState wst=IPStateBase::current) const=0; virtual void restart()=0; - virtual void getAllIPVariable(std::vector<IPVariable*>& allIP) const = 0; - + virtual void getAllIPVariable(std::vector<IPVariable*>& allIP) = 0; + virtual void setLocation(const IPVariable::LOCATION loc){ std::vector<IPVariable*> allIP; getAllIPVariable(allIP); @@ -46,7 +46,7 @@ class IPStateBase{ allIP[i]->setLocation(loc); } } - + virtual void setSolver(nonLinearMechSolver* s){ _solver = s; std::vector<IPVariable*> allIP; @@ -70,7 +70,10 @@ class IP1State : public IPStateBase{ virtual IP1State & operator = (const IPStateBase &source); IPVariable* getState(const whichState wst=IPStateBase::current) const; virtual void restart(); - virtual void getAllIPVariable(std::vector<IPVariable*>& allIP) const {allIP.push_back(_current); }; + virtual void getAllIPVariable(std::vector<IPVariable*>& allIP) { + allIP.clear(); + allIP.push_back(_current); + }; }; class IP3State : public IPStateBase{ @@ -90,7 +93,8 @@ class IP3State : public IPStateBase{ virtual IP3State & operator = (const IPStateBase &source); IPVariable* getState(const whichState wst=IPStateBase::current) const; virtual void restart(); - virtual void getAllIPVariable(std::vector<IPVariable*>& allIP) const { + virtual void getAllIPVariable(std::vector<IPVariable*>& allIP) { + allIP.clear(); allIP.push_back(_initial); allIP.push_back(_step1); allIP.push_back(_step2); @@ -115,7 +119,7 @@ class AllIPState{ ipstateElementContainer* getIPstate(const long int num); ipstateElementContainer* operator[](const long int num); const std::vector<partDomain*>& getDomainVector() const {return _domainVector;}; - + void nextStep(); void copy(const IPStateBase::whichState ws1, const IPStateBase::whichState ws2){ for(ipstateContainer::iterator it=_mapall.begin(); it!=_mapall.end();++it){ @@ -131,7 +135,7 @@ class AllIPState{ ipstateContainer* getAIPSContainer() {return &_mapall;}; const ipstateContainer* getAIPSContainer() const {return &_mapall;}; - + ipstateContainer::const_iterator begin() const {return _mapall.begin();}; ipstateContainer::const_iterator end() const {return _mapall.end();}; };