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);
}
예제 #2
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));
}
예제 #3
0
double Swan2012AcinarUnit::CalculateAcinarTissueCompliance()
{
    return CalculateDerivativeVolumeByStrain()/CalculateDerivativeStaticRecoilPressureByStrain();
}