version 0.6.0
variables_navier Module Reference

Define variables (time step, schemes, solvers, etc.) associated to the Navier-Stokes equations.

Variables

integer navier_contact_line_model = navier_contact_line_model_none
 The contact line model.
 
logical navier_has_slip_velocity = .false.
 
logical velocity_is_enforced = .false.
 
logical is_pressure_increment_matrix_not_invertible = .false.
 Boolean to check if pressure increment matrix is invertible.
 
integer pressure_increment_invertible_matrix_method = penalization
 If matrix is not invertible, 2 methods can be used to solve the linear system.
 
integer pressure_increment_penalized_cell = back_bottom_left_corner
 If matrix is not invertible, next integer sets the corner that will be penalized to 0.
 
Logical list to activate terms of the equation
logical is_compressible = .false.
 Compressible flow.
 
logical compressible_has_predict_density = .true.
 
logical compressible_has_speed_of_sound_formulation = .false.
 
logical is_boussinesq_approximation = .false.
 Boussinesq approximation.
 
logical momentum_has_source_term = .false.
 Has momentum source term?
 
logical pressure_has_source_term = .false.
 Has pressure source term.
 
logical continuity_has_source_term = .false.
 Has continuity source term.
 
logical momentum_has_linear_term = .false.
 Has momentum linear term?
 
logical navier_has_nonlinear_momentum_term = .true.
 Has non linear momentum term?
 
logical navier_has_stress_term = .true.
 Has stress (diffusion) term?
 
logical navier_has_div_u_advection_term = .true.
 Substract \( u \cdot div(u) \) for pure advection (incompressible flows)
 
logical navier_has_brinkman_term = .false.
 Has Brinkman term?
 
logical navier_has_carman_kozeny_term = .false.
 Has Carman-Kozeny term?
 
logical navier_has_gravity_term = .false.
 Has gravity term?
 
logical navier_has_surface_tension_term = .false.
 Has surface tension term?
 
logical navier_has_grad_div_term = .false.
 Has \( \nabla(\nabla \cdot \mathbf{u}) \) term?
 
logical navier_has_temporal_term = .true.
 Has temporal term?
 
logical navier_has_immersed_boundaries = .false.
 Flag to enable immersed boundaries for the Navier-Stokes equation.
 
logical navier_has_pressure_term = .true.
 Flag to disable pressure term.
 
logical navier_has_viscous_term = .true.
 Flag to disable viscous term.
 
Immersed boundaries
integer, dimension(:), allocatable navier_isd_target
 List of enabled immersed boundaries for the Νavier-Stokes equation.
 
integer n_ibc_velocity = 0
 Number of immersed boundaries enabled for the Navier-Stokes equation.
 
logical navier_ib_has_one_sided_inner_discretization
 One sided discretization close to immersed boundaries.
 
integer, dimension(:), allocatable navier_ib_inner_discretization_order
 
Additional physical information
double precision, dimension(3) gravity_vector = 0d0
 Gravity vector.
 
logical navier_enable_driving_pressure = .false.
 Driving pressure (for single phase flows)
 
integer navier_gravity_temporal_method = time_method_explicit
 Gravity temporal method,. More...
 
double precision surface_tension_coeff = 0d0
 Surface tension.
 
integer navier_surface_tension_temporal_method = time_method_implicit
 Surface tension temporal method,. More...
 
logical navier_surface_tension_is_sharp = .false.
 
Variables associated to the time discretization
double precision navier_time_step = 0d0
 Current Time step Current Time step.
 
double precision navier_time_step_n = 0d0
 Previous time step.
 
integer navier_time_order_discretization = time_order_1
 Time order discretization.
 
integer navier_nonlinear_explicit_time_order_discretization = time_order_1
 Time order discretization for explicit schemes.
 
logical navier_use_explicit_terms_accumulator = .false.
 A switch for when to use explicit accumulator.
 
Boundary condition variables
type(t_boundary_condition_facenavier_boundary_condition
 Boundary condition.
 
type(t_boundary_conditionpressure_increment_boundary_condition
 
type(t_boundary_conditionpressure_boundary_condition
 
type(t_boundary_conditiondensity_boundary_condition
 
Initializer
class(t_vector_initializer), pointer velocity_initializer => null()
 Initial condition initializer.
 
class(t_scalar_initializer), pointer pressure_initializer => null()
 Pressure initializer.
 
class(t_scalar_initializer), pointer pressure_source_term_initializer => null()
 Pressure source term initializer.
 
class(t_scalar_initializer), pointer continuity_source_term_initializer => null()
 Continuity source term initializer.
 
class(t_face_bc_initializer), pointer velocity_bc_initializer => null()
 Boundary conditions initializer.
 
class(t_navier_ibc_initializer_item), dimension(:), allocatable velocity_ibc_initializer
 Immersed boundary conditions.
 
class(t_vector_initializer), pointer momentum_source_term_initializer => null()
 Source term initializer.
 
class(t_vector_initializer), pointer momentum_linear_term_initializer => null()
 Linear term initializer.
 
Hydrostatic pressure initialization
logical navier_has_hydrostatic_pressure_initialization = .false.
 Flag to enable the initialization of hydrostatic pressure.
 
double precision navier_hydrostatic_solver_tolerance = 1d-15
 Tolerance of the hydrostatic pressure solver.
 
integer navier_hydrostatic_solver_max_iter = 100
 Maximum number of iterations of the hydrostatic pressure solver.
 
Conservative inertia method
logical is_navier_momentum_preserving_method = .false.
 Enable conservative method.
 
integer navier_momentum_preserving_method_prediction = navier_momentum_preserving_method_prediction_on_cells
 
Velocity pressure coupling method
logical navier_is_disable_velocity_pressure_method = .false.
 Disable velocity pressure method?
 
integer navier_velocity_pressure_method = incremental_pressure_correction
 Velocity pressure method choice.
 
logical is_pressure_increment_poisson_dodd_approximation = .false.
 Pressure increment poisson approximation method choice (Dodd and/or Frantzis)
 
logical is_pressure_increment_poisson_frantzis_approximation = .false.
 
logical is_pressure_increment_poisson_equation_bc_time_dependent = .false.
 Boundary condition types for the pressure increment Poisson equation are constant (values can change)
 
integer poisson_approximation_iteration_start = 5
 Number of time iterations to skip.
 
logical navier_do_project_initial_velocity = .false.
 Initial velocity projection.
 
integer pressure_scheme = cell_centered_o2_diffusion_scheme
 Implicit associated scheme.
 
integer pressure_advection_scheme = pressure_advection_scheme_uncentered_o2
 Pressure advection scheme (compressible flow only)
 
logical subtract_mean_pressure_to_pressure = .false.
 Substract integrale of pressure to pressure field.
 
integer navier_diffusion_term_discretization_type = implicit_discretization
 Diffusion term discretization type (implicit or explicit)
 
integer navier_diffusion_term_scheme = cell_centered_o2_diffusion_scheme
 Diffusion term scheme.
 
integer navier_diffusion_explicit_time_order_discretization = time_order_1
 Time order discretization for explicit schemes.
 
Variables associated to the discretization of the advection term
integer navier_nonlinear_term_discretization_type = implicit_discretization
 Nonlinear term discretization type (implicit or explicit)
 
integer navier_nonlinear_term_scheme = navier_nonlinear_centered_o2_scheme
 Nonlinear term scheme.
 
integer navier_nonlinear_term_splitting_scheme = navier_lie_trotter_splitting
 Nonlinear term: Splitting Method for Lax-Wendroff TVD Superbee.
 
double precision, dimension(3) navier_splitting_time_coeff = 1d0
 Operator splitting method time step modifier.
 
logical navier_nonlinear_term_dir_split = .false.
 Advection term: directional splitting option.
 
logical is_navier_fully_explicit = .false.
 Fully explicit.
 
type(t_fv_flux), parameter default_navier_nonlinear_explicit_flux = default_flux_godunov
 Fluxes type The default explicit nonlinear term flux.
 
type(t_fv_fluxnavier_nonlinear_explicit_flux = default_navier_nonlinear_explicit_flux
 Fluxes type The effective explicit nonlinear term flux.
 
Miscellaneous variables
logical navier_has_ghost_boundary_cells = .false.
 Ghost boundary cell choice.
 
logical pressure_has_ghost_boundary_cells = .false.
 
type(t_face_stencilnavier_stencil
 Stencils.
 
type(t_cell_stencilpressure_stencil
 
integer navier_enforced_stencil = -1
 Enforced stencil.
 
integer pressure_increment_enforced_stencil = -1
 
logical pressure_has_imposed_value = .false.
 Has imposed value (pressure)?
 
logical pressure_has_imposed_value_reference_value = .false.
 
double precision, dimension(3) pressure_imposed_point = [0d0, 0d0, COORD_Z_2D]
 Imposed value.
 
double precision pressure_imposed_value = huge(0d0)
 
Linear system solver variables
type(t_face_ls_mapnavier_ls_map
 Mapping variables.
 
type(t_ls_mappressure_ls_map
 
class(t_base_solver), allocatable momentum_solver
 Linear system solver.
 
class(t_base_solver), allocatable pressure_solver
 
class(t_base_solver), allocatable ibc_velocity_extrapolation_solver
 Solver for the extrapolation step of the Navier-Stokes resolution.
 
Global divergence
double precision l2_divergence
 Divergence after correction.
 
double precision linf_divergence
 
double precision prediction_l2_divergence
 Predicted divergence (before correction)
 
double precision prediction_linf_divergence
 
Refined velocity method
integer ui_refined_grid_velocity_method
 Refined grid method for the velocity interpolation/reconstruction.
 

Variable Documentation

◆ navier_gravity_temporal_method

integer variables_navier::navier_gravity_temporal_method = time_method_explicit
See also
enum_time_method_discretization

◆ navier_surface_tension_temporal_method

integer variables_navier::navier_surface_tension_temporal_method = time_method_implicit
See also
enum_time_method_discretization