def analytical_displacement(mObj):

    dragModel = mObj.dragModel
    muf = mObj.dynamic_viscosity
    rhof = mObj.fluid_density
    Uf = mObj.fluid_velocity
    epsf = mObj.epsf
    dp = mObj.diameter
    rhop = mObj.density
    kn = mObj.kn
    y0 = mObj.y0
    g = -mObj.gravity

    if dragModel == 'Drag' or dragModel == 'Stokes':
        fObj = Stokes(muf=muf, epsf=epsf, dp=dp)
    elif dragModel == 'DiFelice':
        fObj = DiFelice(muf=muf,
                        rhof=rhof,
                        epsf=epsf,
                        dp=dp,
                        Uf=Uf / epsf,
                        Vp=0.)
    elif dragModel == 'Ergun':
        fObj = Ergun(muf=muf, rhof=rhof, epsf=epsf, dp=dp, Uf=Uf / epsf, Vp=0.)
    else:
        raise ValueError('Unknown drag force model specified')

    fdi = fObj.calculate_drag_force(Uf=Uf / epsf, Vp=0.)
    volume = (np.pi / 6) * dp**3
    fi = volume * rhop * g - volume * rhof * g + fdi
    disp = fi / kn
    xySol = y0 + disp

    return xySol
def analytical_force(mObj):

    dragModel = mObj.dragModel
    muf = mObj.dynamic_viscosity
    rhof = mObj.fluid_density
    dp = mObj.diameter
    vy0 = mObj.vy0
    epsf = mObj.epsf

    if dragModel == 'Drag' or dragModel == 'Stokes':
        fObj = Stokes(muf=muf, epsf=epsf, dp=dp)
    elif dragModel == 'DiFelice':
        fObj = DiFelice(muf=muf, rhof=rhof, epsf=epsf, dp=dp, Uf=0., Vp=vy0)
    elif dragModel == 'Ergun':
        fObj = Ergun(muf=muf, rhof=rhof, epsf=epsf, dp=dp, Uf=0., Vp=vy0)
    else:
        raise ValueError('Unknown drag force model specified')

    fySol = fObj.calculate_drag_force(Uf=0., Vp=vy0)

    return fySol
Example #3
0
def analytical_displacement(mObj):

    dragModel = mObj.dragModel
    muf = mObj.dynamic_viscosity
    rhof = mObj.fluid_density
    Uf = mObj.Uf
    epsf = mObj.epsf
    dp = mObj.diameter
    rhop = mObj.density
    kn = mObj.kn
    y0 = mObj.y0
    g = -mObj.gravity

    if dragModel == 'Drag' or dragModel == 'Stokes':
        fObj = Stokes(muf=muf, epsf=epsf, dp=dp)
    elif dragModel == 'DiFelice':
        fObj = DiFelice(muf=muf,
                        rhof=rhof,
                        epsf=epsf,
                        dp=dp,
                        Uf=Uf / epsf,
                        Vp=0.)
    elif dragModel == 'Ergun':
        fObj = Ergun(muf=muf, rhof=rhof, epsf=epsf, dp=dp, Uf=Uf / epsf, Vp=0.)
    else:
        raise ('Unknown drag force model specified')

    if y0 < 1.0:
        CORRECTION_FACTOR = 0.5
    else:
        CORRECTION_FACTOR = 1.0

    fdi = fObj.calculate_drag_force(Uf=Uf / epsf, Vp=0.)
    print(fdi)
    volume = (np.pi / 6) * dp**3
    fi = volume * rhop * g - CORRECTION_FACTOR * volume * rhof * g + CORRECTION_FACTOR * fdi
    disp = fi / kn
    xySol = y0 + disp

    return xySol
Example #4
0
def analytical_force(mObj):

    dragModel = mObj.dragModel
    muf = mObj.dynamic_viscosity
    rhof = mObj.fluid_density
    dp = mObj.diameter
    vy0 = mObj.vy0

    # Note cell volume hard-wired (for ease)
    CELL_VOLUME = 0.1**3
    epsf = (CELL_VOLUME - (np.pi / 6) * dp**3) / CELL_VOLUME

    if dragModel == 'Drag' or dragModel == 'Stokes':
        fObj = Stokes(muf=muf, epsf=epsf, dp=dp)
    elif dragModel == 'DiFelice':
        fObj = DiFelice(muf=muf, rhof=rhof, epsf=epsf, dp=dp, Uf=0., Vp=vy0)
    elif dragModel == 'Ergun':
        fObj = Ergun(muf=muf, rhof=rhof, epsf=epsf, dp=dp, Uf=0., Vp=vy0)
    else:
        raise ValueError('Unknown drag force model specified')

    fySol = fObj.calculate_drag_force(Uf=0., Vp=vy0)

    return fySol