36 #include "Owen11Parameters.hpp" 37 #include "MechanicalStimulusCalculator.hpp" 39 template<
unsigned DIM>
41 mTauRef(1.e-6 *
unit::pascals),
42 mTauP(0.05 *
unit::pascals),
43 mkp(
Owen11Parameters::mpSensitivityToIntravascularPressure->GetValue(
"MechanicalStimulusCalculator"))
48 template<
unsigned DIM>
54 template <
unsigned DIM>
61 template<
unsigned DIM>
67 template<
unsigned DIM>
73 template<
unsigned DIM>
79 template<
unsigned DIM>
85 template<
unsigned DIM>
88 std::vector<boost::shared_ptr<VesselSegment<DIM> > > segments = this->
mpNetwork->GetVesselSegments();
90 units::quantity<unit::length> cm(0.01*unit::metres);
91 units::quantity<unit::mass> g(1.e-3*unit::kg);
92 units::quantity<unit::force> dyne(g*cm/(unit::seconds*unit::seconds));
93 units::quantity<unit::pressure> dyne_per_centi_metre_squared(dyne/(cm*cm));
94 for (
unsigned idx = 0; idx < segments.size(); idx++)
97 units::quantity<unit::pressure> node0_pressure = segments[idx]->GetNode(0)->GetFlowProperties()->GetPressure();
98 units::quantity<unit::pressure> node1_pressure = segments[idx]->GetNode(1)->GetFlowProperties()->GetPressure();
101 units::quantity<unit::pressure> conversion_pressure(1.0*unit::mmHg);
102 double average_pressure_in_mmHg = (node0_pressure + node1_pressure)/(2.0*conversion_pressure);
105 if (log10(average_pressure_in_mmHg) < 1.0)
107 mTauP = 1.4 * dyne_per_centi_metre_squared;
111 double inside_exponent = -5000.0*pow(log10(log10(average_pressure_in_mmHg)), 5.4);
112 mTauP = (100.0 - 86.0 * exp(inside_exponent)) * dyne_per_centi_metre_squared;
116 double log_term_1 = log10((segments[idx]->GetFlowProperties()->GetWallShearStress()/dyne_per_centi_metre_squared +
mTauRef/dyne_per_centi_metre_squared));
117 double log_term_2 = log10(
mTauP/dyne_per_centi_metre_squared);
119 units::quantity<unit::rate> mechanical_stimulus = (log_term_1 - 0.5*log_term_2) * unit::per_second;
120 segments[idx]->GetFlowProperties()->SetGrowthStimulus(segments[idx]->GetFlowProperties()->GetGrowthStimulus() + mechanical_stimulus);
MechanicalStimulusCalculator()
units::quantity< unit::pressure > GetTauP()
units::quantity< unit::pressure > GetTauReference()
boost::shared_ptr< VesselNetwork< DIM > > mpNetwork
units::quantity< unit::pressure > mTauRef
static boost::shared_ptr< MechanicalStimulusCalculator< DIM > > Create()
~MechanicalStimulusCalculator()
void SetTauP(units::quantity< unit::pressure > tauP)
units::quantity< unit::pressure > mTauP
void SetTauRef(units::quantity< unit::pressure > tauRef)