Example #1
0
 public BurstController(IStratum stratum)
 {
     _stratum = stratum;
 }
Example #2
0
 public IStratum Clone()
 {
     IStratum s = new IStratum();
     s.StratumObj = StratumObj;
     s.Name = Name;
     s.Top = Top;
     s.Thickness = Thickness;
     s.Gama = Gama;
     s.K0 = K0;
     s.c = c;
     s.fai = fai;
     return s;
 }
Example #3
0
        // Ground pressure of a stratum over a given point at z.
        // Water table: w
        //
        public static double GroundPressure(IStratum s, double w, double z,
            ref string str)
        {
            if (s.Top <= z)
                return 0;

            // thickness above the given point z
            double t = s.Thickness;
            if (s.Top - t < z)
                t = s.Top - z;

            // hi: thickness above the ground water table
            // hj: thickness below the ground water table
            double Hi, Hj, p;
            double Gama = s.Gama;
            if (Gama == 0)
                Gama = 18.0;

            if (s.Top - t > w)
            {
                Hi = t;
                Hj = 0;
                p = Hi * Gama;
                str += string.Format("{0}:γHi={1:0.0}*{2:0.00}={3:0.00} kPa\n",
                    s.Name, Gama, Hi, p);
            }
            else if (s.Top < w)
            {
                Hi = 0;
                Hj = t;
                p = Hj * (Gama - 10.0);
                str += string.Format("{0}:γ'Hj=({1:0.0}-γw)*{2:0.00}={3:0.00} kPa\n",
                    s.Name, Gama, Hj, p);
            }
            else
            {
                Hi = s.Top - w;
                Hj = t - Hi;
                p = Hi * Gama + Hj * (Gama - 10.0);
                str += string.Format("{0}:γHi+γ'Hj={1:0.0}*{2:0.00}+({3:0.0}-γw)*{4:0.00}" +
                    "={5:0.00} kPa\n",
                    s.Name, Gama, Hi, Gama, Hj, p);
            }

            return p;
        }
Example #4
0
        // Soil pressure at a given point at z using Terzaghi's formula
        // Tunnel top elevation: z
        // Water table: w
        // Radius of tunnel: R
        // Surcharge: P0
        //
        public static double TerzaghiPressure(IStratum s, double w, double z,
            double R, double P0, ref string str)
        {
            double H = s.Top - z;
            double Hw = w - z;
            double B1 = R / Math.Tan(Math.PI / 8.0 + s.fai * Math.PI / 180.0 / 4.0);
            str += string.Format("B1=R/tan(π/8+φ/4)={0:0.00}/tan(22.5°+{1:0.00}°/4)={2:0.00} m\n",
                R, s.fai, B1);

            double K0TanFai = s.K0 * Math.Tan(s.fai * Math.PI / 180.0);
            str += string.Format("K0*Tan(φ)={0:0.00}*Tan({1:0.00}°)={2:0.00}\n",
                s.K0, s.fai, K0TanFai);
            double K0TanFaiHB1 = K0TanFai * H / B1;
            str += string.Format("K0*Tan(φ)*H/B1={0:0.00}*{1:0.00}/{2:0.00}={3:0.00}\n",
                K0TanFai, H, B1, K0TanFaiHB1);
            double h0 = (B1 - s.c / s.Gama) * (1 - Math.Exp(-1.0 * K0TanFaiHB1)) / K0TanFai
                + P0 * Math.Exp(-1.0 * K0TanFaiHB1) / s.Gama;
            str += string.Format("h0=(B1-c/γ)*(1-exp(-K0*Tan(φ)*H/B1))/K0*Tan(φ)+P0*exp(-K0*Tan(φ)*H/B1)/γ" +
                "=({0:0.00}-{1:0.00}/{2:0.00})*(1-exp(-{3:0.00}))/{4:0.00}+{5:0.00}*exp(-{6:0.00})/{7:0.00}" +
                "={8:0.00} m\n",
                B1, s.c, s.Gama, K0TanFaiHB1, K0TanFai, P0, K0TanFaiHB1, s.Gama, h0);

            double p = 0;
            if (Hw <= 0)
            {
                p = s.Gama * h0;
                str += string.Format("Hw={0:0.00}<=0, Pe1=γ*h0={1:0.00}*{2:0.00}={3:0.00} kPa\n",
                    Hw, s.Gama, h0, p);
            }
            else if (h0 <= Hw)
            {
                p = (s.Gama - 10.0) * h0;
                str += string.Format("h0={0:0.00} <= Hw={1:0.00}, Pe1=γ'*h0={2:0.00-γw}*{3:0.00}={4:0.00} kPa\n",
                    h0, Hw, s.Gama, h0, p);
            }
            else
            {
                p = s.Gama * (h0 - Hw) + (s.Gama - 10.0) * Hw;
                str += string.Format("h0={0:0.00}>Hw={1:0.00}, ", h0, Hw);
                str += string.Format("Pe1=γ*(h0-Hw)+γ'*Hw=" +
                    "{0:0.00}*({1:0.00}-{2:0.00})+({3:0.00}-γw)*{4:0.00}={5:0.00} kPa\n",
                    s.Gama, h0, Hw, s.Gama, Hw, p);
            }

            return p;
        }
Example #5
0
        // Compute strata average property: Gama, cu
        //
        public static IStratum AverageProperty(List<IStratum> strata)
        {
            if (strata == null || strata.Count == 0)
                return null;

            IStratum r = new IStratum();
            r.Top = strata[0].Top;
            r.Name = "Average";

            double d1 = 0, d2 = 0, d3 = 0, d4 = 0;
            double t1 = 0, t2 = 0, t3 = 0, t4 = 0;
            double thickness = 0;
            foreach (IStratum s in strata)
            {
                thickness += s.Thickness;

                if (s.Gama != 0)
                {
                    t1 += s.Thickness;
                    d1 += s.Gama * s.Thickness;
                }
                if (s.c != 0)
                {
                    t2 += s.Thickness;
                    d2 += s.c * s.Thickness;
                }
                if (s.fai != 0)
                {
                    t3 += s.Thickness;
                    d3 += s.fai * s.Thickness;
                }
                if (s.K0 != 0)
                {
                    t4 += s.Thickness;
                    d4 += s.K0 * s.Thickness;
                }
            }
            d1 /= t1;
            d2 /= t2;
            d3 /= t3;
            d4 /= t4;

            r.Gama = d1;
            r.c = d2;
            r.fai = d3;
            r.K0 = d4;

            r.Thickness = thickness;

            return r;
        }