iMSTK
Interactive Medical Simulation Toolkit
imstkBackwardEuler.cpp
1 /*
2 ** This file is part of the Interactive Medical Simulation Toolkit (iMSTK)
3 ** iMSTK is distributed under the Apache License, Version 2.0.
4 ** See accompanying NOTICE for details.
5 */
6 
7 #include "imstkBackwardEuler.h"
8 
9 namespace imstk
10 {
11 void
12 BackwardEuler::updateStateGivenDv(std::shared_ptr<FeDeformBodyState> prevState,
13  std::shared_ptr<FeDeformBodyState> currentState,
14  Vectord& dV)
15 {
16  currentState->getQDot() = prevState->getQDot() + dV;
17  currentState->getQ() = prevState->getQ() + m_dT * currentState->getQDot();
18 }
19 
20 void
21 BackwardEuler::updateStateGivenDu(std::shared_ptr<FeDeformBodyState> prevState,
22  std::shared_ptr<FeDeformBodyState> currentState,
23  Vectord& dU)
24 {
25  currentState->getQ() = prevState->getQ() + dU;
26  currentState->getQDot() = (currentState->getQ() - prevState->getQ()) / m_dT;
27 }
28 
29 void
30 BackwardEuler::updateStateGivenV(std::shared_ptr<FeDeformBodyState> prevState,
31  std::shared_ptr<FeDeformBodyState> currentState,
32  Vectord& v)
33 {
34  currentState->getQDot() = v;
35  currentState->getQ() = prevState->getQ() + m_dT * currentState->getQDot();
36 }
37 
38 void
39 BackwardEuler::updateStateGivenU(std::shared_ptr<FeDeformBodyState> prevState,
40  std::shared_ptr<FeDeformBodyState> currentState,
41  Vectord& u)
42 {
43  currentState->getQ() = u;
44  currentState->getQDot() = (currentState->getQ() - prevState->getQ()) / m_dT;
45 }
46 } // namespace imstk
void updateStateGivenU(std::shared_ptr< FeDeformBodyState > prevState, std::shared_ptr< FeDeformBodyState > currentState, Vectord &u) override
Update state given updated displacement.
void updateStateGivenDu(std::shared_ptr< FeDeformBodyState > prevState, std::shared_ptr< FeDeformBodyState > currentState, Vectord &dU) override
Update state given change in displacement.
void updateStateGivenDv(std::shared_ptr< FeDeformBodyState > prevState, std::shared_ptr< FeDeformBodyState > currentState, Vectord &dV) override
Update state given change in velocity.
Compound Geometry.
void updateStateGivenV(std::shared_ptr< FeDeformBodyState > prevState, std::shared_ptr< FeDeformBodyState > currentState, Vectord &v) override
Update state given updated velocity.