version 0.6.0
Loading...
Searching...
No Matches

Reinitialization methods. More...

Namespaces

module  mod_lsm_reinitialization_hj_first_order
 Reinitialization method using the classic HJ algorithm.
 
module  mod_lsm_reinitialization_cp
 Reinitialization method using the CP algorithm.
 
module  mod_lsm_reinitialization_hcr2
 Reinitialization method using the HCR2 algorithm.
 
module  mod_lsm_reinitialization_hj
 Reinitialization method using the classic HJ algorithm.
 
module  mod_lsm_reinitialization_tools
 Reinitialization common tools for algorithms.
 
module  type_levelset_reinit_cp_parameters
 Level set CP parameters as a structureAlso define default values.
 
module  type_levelset_reinit_parameters
 Level set reinitialization parameters as a structureAlso define default values.
 

Classes

type  type_levelset_reinit_cp_parameters::t_levelset_reinit_cp_parameters
 The LS RCP parameters. More...
 
type  type_levelset_reinit_parameters::t_levelset_reinit_parameters
 The LS reinitialization parameters. More...
 

Functions

subroutine mod_lsm_reinitialization_cp::compute_levelset_reinitialization_cp (my_levelset)
 Compute the reinitialization using the closest points method.
 
subroutine mod_lsm_reinitialization_hj::integrate_filtered_hj_equation (phi_0, phi_n, band, filter, dtau, my_levelset)
 Integrate with Euler time scheme the HJ equation.
 
subroutine mod_lsm_reinitialization_hj::integrate_filtered_hj_equation_rk2 (phi_0, phi_n, band, filter, dtau, my_levelset)
 Integrate with RK2 time scheme the HJ equation.
 
subroutine mod_lsm_reinitialization_hj::integrate_filtered_hj_equation_rk2_tvd (phi_0, phi_n, band, filter, dtau, my_levelset)
 Integrate with TVD RK2 time scheme the HJ equation.
 

Detailed Description

This module provides several methods for resolving the reinitialization problem for level sets.

Two principal methods have been developed:

Among the first, a supplementary method has been added in order to enhance the precision, consisting in the constrained reinitialization scheme (HCR2).

These methods are accessible through the LS parameters and the UI.

Function Documentation

◆ compute_levelset_reinitialization_cp()

subroutine mod_lsm_reinitialization_cp::compute_levelset_reinitialization_cp ( class(t_levelset_cp), intent(inout) my_levelset)

The level set is reinitialization thanks to the Closest Points method. The reinitialization is by default 4th order (using 4th order derivatives and 4th order interpolation). Outlines:

  • Initialize partitionning of the domain
  • Detection of numerical and inherent kink
  • Smoothing numerical kink
  • Compute closest point to the interface
  • Use the computed closest point to the interface to reinitialize the level set & & when, for a point on the interface isn't perturbed by a nearby kink

◆ integrate_filtered_hj_equation()

subroutine mod_lsm_reinitialization_hj::integrate_filtered_hj_equation ( double precision, dimension(:,:,:), intent(in) phi_0,
double precision, dimension(:,:,:), intent(in) phi_n,
integer, dimension(:,:,:), intent(in) band,
double precision, dimension(:,:,:), intent(in) filter,
double precision, intent(in) dtau,
class(t_levelset), intent(inout) my_levelset )
Note
Before we were using WENO5 when the band==1 and WENO3 in the band==2 (nothing elsewhere) but this seems to be very unstable. Now we are only using WENO5 in the whole band.

◆ integrate_filtered_hj_equation_rk2()

subroutine mod_lsm_reinitialization_hj::integrate_filtered_hj_equation_rk2 ( double precision, dimension(:,:,:), intent(in) phi_0,
double precision, dimension(:,:,:), intent(in) phi_n,
integer, dimension(:,:,:), intent(in) band,
double precision, dimension(:,:,:), intent(in) filter,
double precision, intent(in) dtau,
class(t_levelset), intent(inout) my_levelset )
Note
Before we were using WENO5 when the band==1 and WENO3 in the band==2 (nothing elsewhere) but this seems to be very unstable. Now we are only using WENO5 in the whole band.

◆ integrate_filtered_hj_equation_rk2_tvd()

subroutine mod_lsm_reinitialization_hj::integrate_filtered_hj_equation_rk2_tvd ( double precision, dimension(:,:,:), intent(in) phi_0,
double precision, dimension(:,:,:), intent(in) phi_n,
integer, dimension(:,:,:), intent(in) band,
double precision, dimension(:,:,:), intent(in) filter,
double precision, intent(in) dtau,
class(t_levelset), intent(inout) my_levelset )
Note
Before we were using WENO5 when the band==1 and WENO3 in the band==2 (nothing elsewhere) but this seems to be very unstable. Now we are only using WENO5 in the whole band.