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

Advection methods for level sets. More...

Namespaces

module  mod_lsm_advect
 Contains a wrapper for the various advection schemes for the Level Set representation.
 
module  mod_lsm_advect_eulerian
 Contains a wrapper for the various advection schemes for the Level Set standard representation.
 
module  mod_lsm_advect_eulerian_euler
 The Level Set advection module.
 
module  mod_lsm_compute_ugradphi
 Computation of the advection term.
 
module  mod_lsm_compute_ugradphi_conservative
 Computation of the advection with a conservative approach.
 

Functions

subroutine mod_lsm_advect::levelset_advect (ls, dt, velocity_nm1, velocity_n, velocity_np1, dt_nm1, dt_n)
 Solve the advection with various advection schemes for the Level Set representation.
 
subroutine mod_lsm_advect_eulerian::levelset_advect_eulerian (ls, dt, velocity_nm1, velocity_n, velocity_np1, dt_nm1, dt_n)
 Solve the advection with various advection schemes for the Level Set standard (Eulerian) representation.
 
subroutine mod_lsm_advect_eulerian_euler::levelset_advect_eulerian_weno5_euler (levelset, velocity_nm1, velocity_n, velocity_np1, local_time, dt_nm1, dt_n, time_step)
 Advect the level set with a WENO5-Euler scheme.
 
subroutine mod_lsm_advect_eulerian_euler::levelset_advect_eulerian_weno5_rk2_tvd (levelset, velocity_nm1, velocity_n, velocity_np1, local_time, dt_nm1, dt_n, time_step)
 Advect the level set with a WENO5-RK2-TVD (with given velocity at next time step) scheme.
 
subroutine mod_lsm_advect_eulerian_euler::levelset_advect_eulerian_weno5_nssp32 (levelset, velocity_nm1, velocity_n, velocity_np1, local_time, dt_nm1, dt_n, time_step)
 Advect the level set with a WENO5-NSSP32 scheme.
 
subroutine mod_lsm_advect_eulerian_euler::levelset_advect_eulerian_weno5_nssp53 (levelset, velocity_nm1, velocity_n, velocity_np1, local_time, dt_nm1, dt_n, time_step)
 Advect the level set with a WENO5-NSSP53 scheme.
 
double precision function mod_lsm_check_cfl::levelset_compute_time_step_cfl_advection (my_levelset, velocity, velocity_np1, cfl_coef)
 Compute the time step according to the CFL restriction.
 
subroutine mod_lsm_compute_ugradphi::compute_ugradphi_weno5 (phi, velocity, time_step, ugradphi, band)
 Compute the \( \vec{u} \cdot \nabla \phi \) term with a WENO5 scheme.
 
subroutine mod_lsm_compute_ugradphi_conservative::compute_ugradphi_weno5_conservative (phi, velocity, time_step, ugradphi, band, flux_type)
 Compute the \( \nabla \cdot ( \vec{u} \phi ) \) conservative term with a WENO5 scheme.
 

Detailed Description

This module provides several methods for solving the advection equation for level sets.

Function Documentation

◆ compute_ugradphi_weno5()

subroutine mod_lsm_compute_ugradphi::compute_ugradphi_weno5 ( double precision, dimension(nx,ny,nz), intent(in) phi,
type(t_face_field), intent(in) velocity,
double precision, intent(in) time_step,
double precision, dimension(nx,ny,nz), intent(inout) ugradphi,
integer, dimension(nx,ny,nz), intent(in) band )
Parameters
[in]phithe level set
[in]velocitythe velocity field on faces
[in,out]ugradphithe resulting field
[in]bandthe band (integers)
[in]time_stepthe time step (unused, but might be used for high-order fluxes)
Note
A high-order (WENO5) scheme is used inside the close band (band(i,j,k)={1,2}). A first order scheme is used outside (band/={1,2}).

◆ levelset_advect()

subroutine mod_lsm_advect::levelset_advect ( class(t_levelset), intent(inout) ls,
double precision, intent(in) dt,
type(t_face_field), intent(in) velocity_nm1,
type(t_face_field), intent(in) velocity_n,
type(t_face_field), intent(in) velocity_np1,
double precision, intent(in) dt_nm1,
double precision, intent(in) dt_n )
Todo
MCO: plug back refined grid (bnd cond not ready for it)
Precondition
The Dirichlet (equivalent) boundary values are stored in is-1 and ie+1 (identicaly for the other dimensions)
Note
The temporal method is stored in the lsparameters type

◆ levelset_advect_eulerian()

subroutine mod_lsm_advect_eulerian::levelset_advect_eulerian ( class(t_levelset), intent(inout) ls,
double precision, intent(in) dt,
type(t_face_field), intent(in) velocity_nm1,
type(t_face_field), intent(in) velocity_n,
type(t_face_field), intent(in) velocity_np1,
double precision, intent(in) dt_nm1,
double precision, intent(in) dt_n )
Precondition
The boundary conditions are stored in the corresponding attribute
Parameters
[in,out]lsthe levelset to advect
[in]dtthe time step to advance to, usualy \(dt = t^{n+1} - t^n\)
[in]velocity_nm1the velocity at time \(t^{n-1}\)
[in]velocity_nthe velocity at time \(t^{n}\)
[in]velocity_np1the velocity at time \(t^{n+1}\)
[in]dt_nm1the time step between \(dt_nm1 = t^{n} - t^{n-1}\)
[in]dt_nthe time step between \(dt_n = t^{n+1} - t^{n}\)

◆ levelset_advect_eulerian_weno5_euler()

subroutine mod_lsm_advect_eulerian_euler::levelset_advect_eulerian_weno5_euler ( class(t_levelset) levelset,
type(t_face_field), intent(in) velocity_nm1,
type(t_face_field), intent(in) velocity_n,
type(t_face_field), intent(in) velocity_np1,
double precision, intent(in) local_time,
double precision, intent(in) dt_nm1,
double precision, intent(in) dt_n,
double precision, intent(in) time_step )

Advect the level set from time \( t^n \) to \(t = t^l + \delta t \)

Parameters
[in,out]levelsetthe level set
[in]velocity_nm1the velocity at time \(t=t_n - \delta t^{n-1}\)
[in]velocity_nthe velocity at time \(t=t_n\)
[in]velocity_np1the velocity at time \(t=t^{n+1}=t^{n} + \delta t^{n}\)
[in]local_timethe local time \(t^{l}\) relative to \(t^n\)
[in]dt_nm1the time step between \(t^{n}\) and \(t^{n-1}\)
[in]dt_nthe time step between \(t^{n+1}\) and \(t^{n}\)
[in]time_stepthe time step \(\delta t\) over which to integrate the levelset: \(t^{l} + \delta t \)

◆ levelset_advect_eulerian_weno5_nssp32()

subroutine mod_lsm_advect_eulerian_euler::levelset_advect_eulerian_weno5_nssp32 ( class(t_levelset) levelset,
type(t_face_field), intent(in) velocity_nm1,
type(t_face_field), intent(in) velocity_n,
type(t_face_field), intent(in) velocity_np1,
double precision, intent(in) local_time,
double precision, intent(in) dt_nm1,
double precision, intent(in) dt_n,
double precision, intent(in) time_step )

Advect the level set from time \( t^n \) to \(t = t^l + \delta t \)

Parameters
[in,out]levelsetthe level set
[in]velocity_nm1the velocity at time \(t=t_n - \delta t^{n-1}\)
[in]velocity_nthe velocity at time \(t=t_n\)
[in]velocity_np1the velocity at time \(t=t^{n+1}=t^{n} + \delta t^{n}\)
[in]local_timethe local time \(t^{l}\) relative to \(t^n\)
[in]dt_nm1the time step between \(t^{n}\) and \(t^{n-1}\)
[in]dt_nthe time step between \(t^{n+1}\) and \(t^{n}\)
[in]time_stepthe time step \(\delta t\) over which to integrate the levelset: \(t^{l} + \delta t \)
Todo
MCO: the boundary conditions are at time \(t^n\), even during the RK integration!

◆ levelset_advect_eulerian_weno5_nssp53()

subroutine mod_lsm_advect_eulerian_euler::levelset_advect_eulerian_weno5_nssp53 ( class(t_levelset) levelset,
type(t_face_field), intent(in) velocity_nm1,
type(t_face_field), intent(in) velocity_n,
type(t_face_field), intent(in) velocity_np1,
double precision, intent(in) local_time,
double precision, intent(in) dt_nm1,
double precision, intent(in) dt_n,
double precision, intent(in) time_step )

Advect the level set from time \( t^n \) to \(t = t^l + \delta t \)

Parameters
[in,out]levelsetthe level set
[in]velocity_nm1the velocity at time \(t=t_n - \delta t^{n-1}\)
[in]velocity_nthe velocity at time \(t=t_n\)
[in]velocity_np1the velocity at time \(t=t^{n+1}=t^{n} + \delta t^{n}\)
[in]local_timethe local time \(t^{l}\) relative to \(t^n\)
[in]dt_nm1the time step between \(t^{n}\) and \(t^{n-1}\)
[in]dt_nthe time step between \(t^{n+1}\) and \(t^{n}\)
[in]time_stepthe time step \(\delta t\) over which to integrate the levelset: \(t^{l} + \delta t \)

◆ levelset_advect_eulerian_weno5_rk2_tvd()

subroutine mod_lsm_advect_eulerian_euler::levelset_advect_eulerian_weno5_rk2_tvd ( class(t_levelset) levelset,
type(t_face_field), intent(in) velocity_nm1,
type(t_face_field), intent(in) velocity_n,
type(t_face_field), intent(in) velocity_np1,
double precision, intent(in) local_time,
double precision, intent(in) dt_nm1,
double precision, intent(in) dt_n,
double precision, intent(in) time_step )

Advect the level set from time \( t^n \) to \(t = t^l + \delta t \)

Parameters
[in,out]levelsetthe level set
[in]velocity_nm1the velocity at time \(t=t_n - \delta t^{n-1}\)
[in]velocity_nthe velocity at time \(t=t_n\)
[in]velocity_np1the velocity at time \(t=t^{n+1}=t^{n} + \delta t^{n}\)
[in]local_timethe local time \(t^{l}\) relative to \(t^n\)
[in]dt_nm1the time step between \(t^{n}\) and \(t^{n-1}\)
[in]dt_nthe time step between \(t^{n+1}\) and \(t^{n}\)
[in]time_stepthe time step \(\delta t\) over which to integrate the levelset: \(t^{l} + \delta t \)