Esempio n. 1
0
def fluid_domain_residual(Ddot_F,D_F,c_F,mu_FD,lmbda_FD,dx_Flist,F_FD):
    #Fluid Domain (Mesh) stress tensor
    Sigma_FD = _Sigma_M(D_F, mu_FD, lmbda_FD)
    forms = []
    
    for dx_F in dx_Flist:
        #Fluid Domain equation
        R_FD = inner(c_F, Ddot_F)*dx_F + inner(sym(grad(c_F)), Sigma_FD)*dx_F
        #Right hand side mesh (Body Force)
        if F_FD is not None and F_FD != []:
            info("Using fluid domain body force")
            R_FD += -inner(c_F,F_FD)*dx_F
        forms.append(R_FD)
    return sum(forms)
Esempio n. 2
0
def fluid_domain_residual(Ddot_F, D_F, c_F, mu_FD, lmbda_FD, dx_Flist, F_FD):
    #Fluid Domain (Mesh) stress tensor
    Sigma_FD = _Sigma_M(D_F, mu_FD, lmbda_FD)
    forms = []

    for dx_F in dx_Flist:
        #Fluid Domain equation
        R_FD = inner(c_F, Ddot_F) * dx_F + inner(sym(grad(c_F)),
                                                 Sigma_FD) * dx_F
        #Right hand side mesh (Body Force)
        if F_FD is not None and F_FD != []:
            info("Using fluid domain body force")
            R_FD += -inner(c_F, F_FD) * dx_F
        forms.append(R_FD)
    return sum(forms)
Esempio n. 3
0
def J_Bufferable(dU_F,dotdD_S,dD_S, dotdU_S,dU_S,dU_Smid,dD_Fdot,dD_F,dD_Fmid,dL_U,dL_D,v_F,dotv_S,
                 dotc_S,dotc_F,c_F,m_D,m_U,rho_S,mu_FD,lmbda_FD,dx_Flist,dFSIlist,dxSlist):
    """Linear forms that only need to be assembled once"""
    #Fluid Domain diagonal block
    forms = []
    Sigma_FD = _Sigma_M(dD_Fmid, mu_FD, lmbda_FD)
    for dx_F in dx_Flist:
        J_FD = inner(dotc_F, dD_Fdot)*dx_F + inner(sym(grad(c_F)), Sigma_FD)*dx_F
        forms.append(J_FD)
    #Lagrange Multiplier conditions
    for dFSI in dFSIlist:
        J_FSI = inner(m_D, dD_F - dD_S)('+')*dFSI 
        J_FSI += inner(c_F, dL_D)('+')*dFSI #Lagrange Multiplier
        J_FSI += inner(m_U, dU_F - dU_S)('+')*dFSI
        J_FSI += inner(v_F, dL_U)('+')*dFSI #Lagrange Multiplier
        forms.append(J_FSI)
    #Structure Dt terms
    for dxS in dxSlist:
        J_S = inner(dotc_S, rho_S*dotdU_S)*dxS + inner(dotv_S, dotdD_S - dU_Smid)*dxS
        forms.append(J_S)
    return sum(forms)
Esempio n. 4
0
def J_Bufferable(dU_F, dotdD_S, dD_S, dotdU_S, dU_S, dU_Smid, dD_Fdot, dD_F,
                 dD_Fmid, dL_U, dL_D, v_F, dotv_S, dotc_S, dotc_F, c_F, m_D,
                 m_U, rho_S, mu_FD, lmbda_FD, dx_Flist, dFSIlist, dxSlist):
    """Linear forms that only need to be assembled once"""
    #Fluid Domain diagonal block
    forms = []
    Sigma_FD = _Sigma_M(dD_Fmid, mu_FD, lmbda_FD)
    for dx_F in dx_Flist:
        J_FD = inner(dotc_F, dD_Fdot) * dx_F + inner(sym(grad(c_F)),
                                                     Sigma_FD) * dx_F
        forms.append(J_FD)
    #Lagrange Multiplier conditions
    for dFSI in dFSIlist:
        J_FSI = inner(m_D, dD_F - dD_S)('+') * dFSI
        J_FSI += inner(c_F, dL_D)('+') * dFSI  #Lagrange Multiplier
        J_FSI += inner(m_U, dU_F - dU_S)('+') * dFSI
        J_FSI += inner(v_F, dL_U)('+') * dFSI  #Lagrange Multiplier
        forms.append(J_FSI)
    #Structure Dt terms
    for dxS in dxSlist:
        J_S = inner(dotc_S, rho_S * dotdU_S) * dxS + inner(
            dotv_S, dotdD_S - dU_Smid) * dxS
        forms.append(J_S)
    return sum(forms)