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)
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)
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)
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)