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