|
@@ -64,6 +64,12 @@ class GeneralFormulas {
|
|
|
static double flowVolTAMAX(
|
|
|
double flowArea, double tamean, double coefficient) =>
|
|
|
_singleton.flowVolTAMAX(flowArea, tamean, coefficient);
|
|
|
+
|
|
|
+ static double pi(double ps, double mdEd, double tamax) =>
|
|
|
+ _singleton.pi(ps, mdEd, tamax);
|
|
|
+
|
|
|
+ static double medianVelocity(double ps, double ed) =>
|
|
|
+ _singleton.medianVelocity(ps, ed);
|
|
|
}
|
|
|
|
|
|
abstract class IGeneralFormulaStrategy {
|
|
@@ -94,6 +100,23 @@ abstract class IGeneralFormulaStrategy {
|
|
|
double maxPG(double v1, double v2);
|
|
|
double area(double d1, double d2);
|
|
|
double flowVolTAMAX(double flowArea, double tamean, double coefficient);
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Pulastility Index
|
|
|
+ /// <para>PI (ED):(PS - ED)/TAMAX</para>
|
|
|
+ /// <para>PI (MD):(PS - MD)/TAMAX</para>
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="ps">Unit cm/s</param>
|
|
|
+ /// <param name="md_ed">Unit cm/s</param>
|
|
|
+ /// <param name="tamax">Unit cm/s</param>
|
|
|
+ /// <returns>Unit none</returns>
|
|
|
+ /// 在TCCD下用Vmean替换tamax计算
|
|
|
+ double pi(double ps, double mdEd, double tamax);
|
|
|
+
|
|
|
+ /// <param name="ps">Unit cm/s</param>
|
|
|
+ /// <param name="ed">Unit cm/s</param>
|
|
|
+ /// <returns>Unit cm/s</returns>
|
|
|
+ double medianVelocity(double ps, double ed);
|
|
|
}
|
|
|
|
|
|
class BaseGeneralFormulas implements IGeneralFormulaStrategy {
|
|
@@ -425,6 +448,19 @@ class BaseGeneralFormulas implements IGeneralFormulaStrategy {
|
|
|
double flowVol = flowArea * tamean.abs() * coefficient;
|
|
|
return flowVol;
|
|
|
}
|
|
|
+
|
|
|
+ @override
|
|
|
+ double pi(double ps, double mdEd, double tamax) {
|
|
|
+ double pi = (ps - mdEd) / tamax;
|
|
|
+ return pi.abs();
|
|
|
+ }
|
|
|
+
|
|
|
+ @override
|
|
|
+ double medianVelocity(double ps, double ed) {
|
|
|
+ ps = ps.abs();
|
|
|
+ ed = ed.abs();
|
|
|
+ return (ps + 2 * ed) / 3;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
class AnimalsGeneralFormulas extends BaseGeneralFormulas {}
|