Volume fraction methods for level sets.
More...
|
subroutine | mod_lsm_geometry_dirac::lsm_compute_dirac (self, dirac) |
| Compute the dirac mass associated to the level set.
|
|
subroutine | mod_lsm_volume_fraction::levelset_compute_volume_fraction_inline (levelset, vf_boundary_condition) |
| Compute the volume fraction within the object.
|
|
subroutine | mod_lsm_volume_fraction::levelset_compute_volume_fraction_outline (levelset, vf_boundary_condition, volume_fraction) |
| Compute the volume fraction with a selected method.
|
|
subroutine | mod_lsm_volume_fraction_bc::translate_vf_bc_to_ls_bc (phi, vf_boundary_condition, ls_boundary_condition) |
| Translate VF boundary conditions to equivalent LS boundary conditions.
|
|
The volume fraction (VF) can be computed from the LS with several strategies. We furnish 3 methods:
- Heaviside based (the most standard approach);
- Min&Gibou sharp method (ie. cut-cells);
- Towers sharp method (integral formulation).
◆ translate_vf_bc_to_ls_bc()
subroutine mod_lsm_volume_fraction_bc::translate_vf_bc_to_ls_bc |
( |
double precision, dimension(:,:,:), intent(in) | phi, |
|
|
type(t_boundary_condition), intent(in) | vf_boundary_condition, |
|
|
type(t_boundary_condition), intent(inout) | ls_boundary_condition ) |
- Note
- Dirichlet VF BNDC (called
inlet
in Notus) are given a value of 1 or 0. The associated LS BNDC is a bit tricky, as the inside/outside a phase is defined implicitly by the LS sign. To do so, we first extrapolate from the inside the LS towards the boundary and, depending on the sign, make sure that the LS BNDC is of the correct sign. Formulae:
\[
\begin{cases}
max\left(\delta x,\phi_{e}\right) & \text{if \ensuremath{VF=0}}\\
min\left(-\delta x,\phi_{e}\right) & \text{if \ensuremath{VF=1}}\\
0 & \text{otherwise}
\end{cases}
\]
where \( \phi_e \) is the extraplated value of the LS at the boundary.
-
The periodic/symmetric bndc are dealt with fill_ghost_nodes
- Todo
- MCO: deal with Neumann bndc (impose Dirichlet with distance function)
- Note
- The extrapolation of the normal component at the boundary is done at first order. This works ok for now, but we might consider higher order (geometrical) approximation. High order extrapolation doesn's seem to work well with reinitialization, so first order is used.