Implemented fluid flux boundary condition on surface

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • ateshian
    Developer
    • Dec 2007
    • 1824

    Implemented fluid flux boundary condition on surface

    I have implemented a fluid flux boundary condition for biphasic problems, to be prescribed on a surface in a manner similar to the 'pressure' boundary condition. The format is

    <fluidflux type="linear/nonlinear">
    <quad4 id="..." lc="..." scale="..."> ... , ... , ... , ... </quad4>
    </fluidflux>

    type="nonlinear" (default) means that the flux matches the prescribed value even if the surface on which it is applied changes in area (equivalent to a 'follower pressure'). This means that the net volumetric flow rate across the surface changes with changes in area. This type of boundary condition is useful if the fluid flux is known in the current configuration.

    type="linear" means that the prescribed flux produces a volumetric flow rate based on the undeformed surface in the reference configuration. This implies that the flux in the current configuration does not match the prescribed value. This type of boundary condition is useful if the net volumetric flow rate across the surface is known. Example: Let Q be the known volumetric flow rate, let A0 be the surface area in the reference configuration (a constant). The user prescribes Q/A0 as the flux boundary condition. (The fluid flux saved in the output file is Q/A, where A=area in current configuration.)

    This implementation was done by creating two new classes:
    class FEFluidFlux : public FEBoundaryCondition
    class FEFluxSurface : public FESurface
    These classes appear in FEFluxSurface.h and FEFluxSurface.cpp.

    Gerard
  • smithjh
    Member
    • May 2010
    • 44

    #2
    Gerard,

    I am very interested in this new formulation, as it seems more natural to me to apply a fluid flux over a surface versus at the nodes. However, I do have a question.

    Biphasic problems require specification of a displacement or traction and a fluid pressure or fluid flux. If the problem is pressure-controlled, one can apply a fluid pressure and a traction equal to that fluid pressure. However, if the problem is flow-controlled, the flux is known but both the displacement and the traction are unknowns.

    Without knowing the displacement or traction a priori, how does one use this boundary condition in practice?

    Thanks,
    Josh

    Comment

    • ateshian
      Developer
      • Dec 2007
      • 1824

      #3
      Hi Josh,

      That's a good question

      I'll give you the theoretical answer, but this type of boundary condition has not yet been implemented within FEBio:

      If a boundary surface of a biphasic material does not have constrained displacements, and if flow control is desired, it is important to recognize that the (normal component of the) fluid velocity in the external bath, vfn, is actually equal to vsn + wn, where wn = normal component of fluid flux relative to solid and vsn = normal component of solid velocity.

      Currently, FEBio only allows you to specify wn and vsn independently (the former by using <fluidflux> and the latter by prescribing the desired solid displacement on the boundary). If the solid is fixed, then vsn=0 and it follows that vfn=wn (i.e., you get the desired fluid flux at that boundary).

      When vsn is not prescribed (i.e., if you want the surface to move as needed under the prescribed flow conditions), the effective normal traction should be set to zero. The effective normal traction is the traction resulting from the elastic stress Te in the solid matrix. (The total stress is T=-p*I+Te, where T=Cauchy stress tensor, p=fluid pressure and I=identity tensor; the total traction is tn=T.n, where n=unit outward normal; the effective traction is te=Te.n) Currently, it is possible to prescribe the effective normal traction in FEBio using <poro_normal_traction traction="effective"> (I may change the name of this tag in the future). Alternatively, the total normal traction can be prescribed using <poro_normal_traction traction="total">.

      A few months ago I played around with implementing a boundary condition for vsn+wn, but I was not able to get good convergence. I know that I must implement this at some point, because it would complete the set of possible boundary conditions that can arise on a biphasic surface. Let me know how soon you need it.

      Once the complete set has been implemented, I will update the documentation to describe all these options.

      Best,

      Gerard

      Comment

      • smithjh
        Member
        • May 2010
        • 44

        #4
        Gerard,

        Thanks for your explanation.

        Right now, I think I have a work around, which is to create a fixed artificial surface at which the fluid flux is applied. This artificial surface is then connected to the real boundary through a layer of elements that are very soft and very permeable, allowing the real surface to deform as necessary to satisfy the differential equations.

        However, I can imagine scenarios where this work around may not be possible. But, I am not at the point of needing a better solution.

        Thanks,
        Josh

        Comment

        Working...
        X
        😀
        😂
        🥰
        😘
        🤢
        😎
        😞
        😡
        👍
        👎