void Swan2012AcinarUnit::UpdateFlow(double tStart, double tEnd) { double dt = tEnd - tStart; double compliance_factor = CalculateDerivativeStaticRecoilPressureByStrain(); mQ = (1 - std::exp(-dt*compliance_factor/mRaw))*mQ*mRaw/compliance_factor/dt; double V = GetVolume(); V += dt*mQ; mLambda = std::pow(V/mV0, 1.0/3.0); }
void Swan2012AcinarUnit::SolveAndUpdateState(double tStart, double tEnd) { //Update stretch component double dPe = (mPaw - mPawOld) - (mPpl - mPplOld); double dLambda_dPe = 1.0/CalculateDerivativeStaticRecoilPressureByStrain(); mLambda = mLambda + dLambda_dPe*dPe; //Update flow double c_a = CalculateAcinarTissueCompliance(); //Need to incorporate Ca(CW) too double dt = tEnd - tStart; double nu = (mPaw - mPawOld)/dt; double beta = (mPpl - mPplOld)/dt; mQ = c_a*(nu - beta) + (mQ - c_a*(nu - beta))*std::exp(-dt/(mRaw*c_a)); }
double Swan2012AcinarUnit::CalculateAcinarTissueCompliance() { return CalculateDerivativeVolumeByStrain()/CalculateDerivativeStaticRecoilPressureByStrain(); }