예제 #1
0
    def create_particles(self):
        x = np.array([0.0])
        y = np.array([0.003])
        x = np.array([0.0])
        r = 0.0025
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * self.r * self.r * self.r * self.rho
        m = np.ones_like(x) * _m
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * 10
        E = np.ones_like(x) * 3.8 * 1e11
        nu = np.ones_like(x) * 0.23

        # velocity assigning
        Vmag = 3.9
        # thet = 40
        theta = thet * np.pi / 180.
        u = Vmag * np.sin(theta) * np.ones_like(x)
        v = -Vmag * np.cos(theta) * np.ones_like(x)

        sand = get_particle_array_dem(x=x,
                                      y=y,
                                      u=u,
                                      v=v,
                                      m=m,
                                      E=E,
                                      nu=nu,
                                      m_inverse=m_inverse,
                                      R=R,
                                      h=h,
                                      I_inverse=I_inverse,
                                      name="sand")

        x, y = np.asarray([0]), np.asarray([0])
        nx, ny = np.asarray([0]), np.asarray([1])
        R = np.ones_like(x) * r
        h = np.ones_like(x) * 10
        wall = get_particle_array_dem(x=x,
                                      y=y,
                                      E=E,
                                      nu=nu,
                                      nx=nx,
                                      ny=ny,
                                      h=h,
                                      name="wall")

        # additional properties for equations
        # self.m_eff = (_m + mw[0]) / (_m * mw[0])
        return [sand, wall]
예제 #2
0
    def create_particles(self):
        rp = 0.05 * 1e-2
        y_w = 3.6 * rp
        y_1 = 0.25 * y_w
        y_2 = 0.75 * y_w
        y_sand = np.asarray([y_1, y_2])
        x_sand = np.ones_like(y_sand) * 0
        R = np.ones_like(x_sand) * rp
        _m1 = 4. / 3. * np.pi * rp**3 * 20000
        _m2 = 4. / 3. * np.pi * rp**3 * 10000
        m = np.asarray([_m1, _m2])
        m_inverse = np.asarray([1. / _m1, 1. / _m2])
        _I1 = 2. / 5. * _m1 * rp**2
        _I2 = 2. / 5. * _m2 * rp**2
        I_inverse = np.asarray([1. / _I1, 1. / _I2])
        h = np.ones_like(x_sand) * rp

        sand = get_particle_array_dem(x=x_sand, y=y_sand, m=m,
                                      m_inverse=m_inverse, R=R, h=h,
                                      I_inverse=I_inverse, name="sand")

        x_l_w = np.asarray([0])
        y_l_w = np.asarray([-rp])
        mw = np.ones_like(x_l_w) * _m1
        m_inverse = np.ones_like(x_l_w) * 1. / _m1
        R = np.ones_like(x_l_w) * rp
        h = np.ones_like(x_l_w) * rp
        I_inverse = np.ones_like(x_l_w) * 1. / _I1
        lower_wall = get_particle_array_dem(x=x_l_w, y=y_l_w, m=mw,
                                            m_inverse=m_inverse, R=R, h=h,
                                            I_inverse=I_inverse, name="l_wall")

        x_u_w = np.asarray([0])
        y_u_w = np.asarray([y_w + rp])
        mw = np.ones_like(x_u_w) * _m1
        m_inverse = np.ones_like(x_u_w) * 1. / _m1
        R = np.ones_like(x_u_w) * rp
        h = np.ones_like(x_u_w) * rp
        I_inverse = np.ones_like(x_u_w) * 1. / _I1
        upper_wall = get_particle_array_dem(x=x_u_w, y=y_u_w, m=mw,
                                            m_inverse=m_inverse, R=R, h=h,
                                            I_inverse=I_inverse, name="u_wall")
        # additional properties for equations
        # self.m_eff = (_m + mw[0]) / (_m * mw[0])
        return [sand, lower_wall, upper_wall]
예제 #3
0
    def create_particles(self):
        # al oxide particles
        x = np.array(
            [-0.003])
        y = np.zeros_like(x)
        r = 0.0025
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 4000
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 3.8 * 1e11
        nu = np.ones_like(x) * 0.23
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * 100

        # velocity assigning
        u = np.ones_like(x) * 3.9
        v = np.ones_like(x) * 0

        al = get_particle_array_dem(x=x, y=y, u=u, v=v, m=m, E=E, nu=nu,
                                    m_inverse=m_inverse, R=R, h=h,
                                    I_inverse=I_inverse, name="al")

        x = np.array([0])
        y = np.array([0.04])
        E = np.ones_like(x) * 3.8 * 1e11
        nu = np.ones_like(x) * 0.23
        h = np.ones_like(x) * 100
        nx = np.asarray([-1])

        al_wall = get_particle_array_dem(x=x, y=y, E=E, nu=nu, nx=nx,
                                         name="al_wall")
        # cast iron particles
        x = np.array([-0.003])
        y = np.ones_like(x) * 0.1
        r = 0.0025
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 7000
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 1 * 1e11
        nu = np.ones_like(x) * 0.25
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * 100

        # velocity assigning
        u = np.ones_like(x) * 3.9
        v = np.ones_like(x) * 0

        mg = get_particle_array_dem(x=x, y=y, u=u, v=v, m=m, E=E, nu=nu,
                                    m_inverse=m_inverse, R=R, h=h,
                                    I_inverse=I_inverse, name="mg")

        x = np.array([0])
        y = np.array([1.04])
        E = np.ones_like(x) * 4 * 1e10
        nu = np.ones_like(x) * 0.35
        h = np.ones_like(x) * 100
        nx = np.asarray([-1])

        mg_wall = get_particle_array_dem(x=x, y=y, E=E, nu=nu, nx=nx,
                                         name="mg_wall")
        # additional properties for equations
        # self.m_eff = (_m + mw[0]) / (_m * mw[0])
        return [al, al_wall, mg, mg_wall]
예제 #4
0
    def create_particles(self):
        # al alloy particles
        x = np.array([-0.10002])
        y = np.array([0])
        r = 0.1
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 2700
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 7 * 1e10
        nu = np.ones_like(x) * 0.33
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * 100

        # velocity assigning
        u = np.asarray([0.2])
        v = np.ones_like(x) * 0
        omega = 1.5 * u[0] / r
        wz = np.ones_like(x) * omega

        al = get_particle_array_dem(x=x,
                                    y=y,
                                    u=u,
                                    v=v,
                                    wz=wz,
                                    m=m,
                                    E=E,
                                    nu=nu,
                                    m_inverse=m_inverse,
                                    R=R,
                                    h=h,
                                    I_inverse=I_inverse,
                                    name="al")
        # print before collision properties
        print(r * omega / 0.2)

        x = np.array([0])
        y = np.array([0.1])
        E = np.ones_like(x) * 7 * 1e10
        nu = np.ones_like(x) * 0.33
        h = np.ones_like(x) * 100
        nx = np.asarray([-1])

        al_wall = get_particle_array_dem(x=x,
                                         y=y,
                                         E=E,
                                         nu=nu,
                                         nx=nx,
                                         name="al_wall")
        # nylon particles
        x = np.array([-0.10002])
        y = np.array([1])
        r = 0.1
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 1000
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 2.5 * 1e9
        nu = np.ones_like(x) * 0.4
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * 100

        # velocity assigning
        u = np.asarray([0.2])
        v = np.ones_like(x) * 0
        wz = np.ones_like(x) * omega

        nylon = get_particle_array_dem(x=x,
                                       y=y,
                                       u=u,
                                       v=v,
                                       wz=wz,
                                       m=m,
                                       E=E,
                                       nu=nu,
                                       m_inverse=m_inverse,
                                       R=R,
                                       h=h,
                                       I_inverse=I_inverse,
                                       name="nylon")

        x = np.array([0])
        y = np.array([1.1])
        E = np.ones_like(x) * 2.5 * 1e9
        nu = np.ones_like(x) * 0.4
        h = np.ones_like(x) * 100
        nx = np.asarray([-1])

        nylon_wall = get_particle_array_dem(x=x,
                                            y=y,
                                            E=E,
                                            nu=nu,
                                            nx=nx,
                                            name="nylon_wall")
        # additional properties for equations
        # self.m_eff = (_m + mw[0]) / (_m * mw[0])
        return [al, al_wall, nylon, nylon_wall]
예제 #5
0
    def create_particles(self):
        x, y = geometry()
        r = 0.5 * 1e-2
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 2.7 * 1e3
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 69 * 1e9
        nu = np.ones_like(x) * 0.3
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * r

        cylinders = get_particle_array_dem(x=x,
                                           y=y,
                                           m=m,
                                           E=E,
                                           nu=nu,
                                           m_inverse=m_inverse,
                                           R=R,
                                           h=h,
                                           I_inverse=I_inverse,
                                           name="cylinders")

        # tank
        x = np.array([0, 13 * 1e-2, 26 * 1e-2])
        y = np.array([13 * 1e-2, 0, 13 * 1e-2])
        nx = np.array([1, 0, -1])
        ny = np.array([0, 1, 0])
        E = np.ones_like(x) * 30 * 1e8
        nu = np.ones_like(x) * 0.3
        h = np.ones_like(x) * 13 * 1e-2

        tank = get_particle_array_dem(x=x,
                                      y=y,
                                      E=E,
                                      nu=nu,
                                      h=h,
                                      nx=nx,
                                      ny=ny,
                                      name="tank")

        x = np.array([6 * 1e-2])
        y = np.array([3 * 1e-2])
        nx = np.array([-1])
        ny = np.array([0])
        E = np.ones_like(x) * 30 * 1e8
        nu = np.ones_like(x) * 0.3
        h = np.ones_like(x) * 1.5 * 1e-2

        t_wall = get_particle_array_dem(x=x,
                                        y=y,
                                        E=E,
                                        nu=nu,
                                        h=h,
                                        nx=nx,
                                        ny=ny,
                                        name="t_wall")

        # additional properties for equations
        # self.m_eff = (_m + mw[0]) / (_m * mw[0])
        return [cylinders, tank, t_wall]
예제 #6
0
    def create_particles(self):
        # al alloy particles
        x = np.array([-0.10002])
        y = np.array([0])
        r = 0.1
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 2699
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 7 * 1e10
        nu = np.ones_like(x) * 0.3
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * 100

        # velocity assigning
        u = np.asarray([0.2])
        v = np.ones_like(x) * 0

        al = get_particle_array_dem(x=x,
                                    y=y,
                                    u=u,
                                    v=v,
                                    m=m,
                                    E=E,
                                    nu=nu,
                                    m_inverse=m_inverse,
                                    R=R,
                                    h=h,
                                    I_inverse=I_inverse,
                                    name="al")

        x = np.array([0])
        y = np.array([0.1])
        E = np.ones_like(x) * 7 * 1e10
        nu = np.ones_like(x) * 0.3
        h = np.ones_like(x) * 100
        nx = np.asarray([-1])

        al_wall = get_particle_array_dem(x=x,
                                         y=y,
                                         E=E,
                                         nu=nu,
                                         nx=nx,
                                         name="al_wall")
        # mg alloy particles
        x = np.array([-0.10002])
        y = np.array([1])
        r = 0.1
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 1800
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 4 * 1e10
        nu = np.ones_like(x) * 0.35
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * 100

        # velocity assigning
        u = np.asarray([0.2])
        v = np.ones_like(x) * 0

        mg = get_particle_array_dem(x=x,
                                    y=y,
                                    u=u,
                                    v=v,
                                    m=m,
                                    E=E,
                                    nu=nu,
                                    m_inverse=m_inverse,
                                    R=R,
                                    h=h,
                                    I_inverse=I_inverse,
                                    name="mg")

        x = np.array([0])
        y = np.array([1.1])
        E = np.ones_like(x) * 4 * 1e10
        nu = np.ones_like(x) * 0.35
        h = np.ones_like(x) * 100
        nx = np.asarray([-1])

        mg_wall = get_particle_array_dem(x=x,
                                         y=y,
                                         E=E,
                                         nu=nu,
                                         nx=nx,
                                         name="mg_wall")
        # additional properties for equations
        # self.m_eff = (_m + mw[0]) / (_m * mw[0])
        return [al, al_wall, mg, mg_wall]
예제 #7
0
    def create_particles(self):
        # glass particles
        x = np.array([-0.0102, 0.010])
        y = np.array([0, 0])
        r = 0.01
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 2800
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 4.8 * 1e10
        nu = np.ones_like(x) * 0.2
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * r

        # velocity assigning
        u = np.asarray([10, -10])
        v = np.ones_like(x) * 0

        glass = get_particle_array_dem(x=x,
                                       y=y,
                                       u=u,
                                       v=v,
                                       m=m,
                                       E=E,
                                       nu=nu,
                                       m_inverse=m_inverse,
                                       R=R,
                                       h=h,
                                       I_inverse=I_inverse,
                                       name="glass")

        # limestone particles
        x = np.array([-0.0102, 0.010])
        y = np.array([0.05, 0.05])
        r = 0.01
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 2500
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 2. * 1e10
        nu = np.ones_like(x) * 0.25
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * r

        # velocity assigning
        u = np.asarray([10, -10])
        v = np.ones_like(x) * 0

        lime = get_particle_array_dem(x=x,
                                      y=y,
                                      u=u,
                                      v=v,
                                      m=m,
                                      E=E,
                                      nu=nu,
                                      m_inverse=m_inverse,
                                      R=R,
                                      h=h,
                                      I_inverse=I_inverse,
                                      name="lime")
        # additional properties for equations
        # self.m_eff = (_m + mw[0]) / (_m * mw[0])
        return [glass, lime]
예제 #8
0
    def create_particles(self):
        # al particles
        x_pos = 0.102
        x = np.array([-x_pos, 0.10])
        y = np.array([0, 0])
        r = 0.1
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 2700
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 7 * 1e10
        nu = np.ones_like(x) * 0.33
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * r

        # velocity assigning
        u = np.asarray([0.2, -0.2])
        v = np.ones_like(x) * 0
        wz = np.asarray([omega, -omega])

        al = get_particle_array_dem(x=x,
                                    y=y,
                                    u=u,
                                    v=v,
                                    wz=wz,
                                    m=m,
                                    E=E,
                                    nu=nu,
                                    m_inverse=m_inverse,
                                    R=R,
                                    h=h,
                                    I_inverse=I_inverse,
                                    name="al")

        # copper particles
        x = np.array([-x_pos, 0.10])
        y = np.array([0.5, 0.5])
        r = 0.1
        R = np.ones_like(x) * r
        _m = 4. / 3. * np.pi * r * r * r * 8900
        m = np.ones_like(x) * _m
        E = np.ones_like(x) * 1.2 * 1e11
        nu = np.ones_like(x) * 0.35
        m_inverse = np.ones_like(x) * 1. / _m
        _I = 2. / 5. * _m * r**2
        I_inverse = np.ones_like(x) * 1. / _I
        h = np.ones_like(x) * r

        # velocity assigning
        u = np.asarray([0.2, -.2])
        v = np.ones_like(x) * 0
        wz = np.asarray([omega, -omega])

        copper = get_particle_array_dem(x=x,
                                        y=y,
                                        u=u,
                                        v=v,
                                        wz=wz,
                                        m=m,
                                        E=E,
                                        nu=nu,
                                        m_inverse=m_inverse,
                                        R=R,
                                        h=h,
                                        I_inverse=I_inverse,
                                        name="copper")
        # additional properties for equations
        # self.m_eff = (_m + mw[0]) / (_m * mw[0])
        return [al, copper]