precorrect_walls Subroutine

public subroutine precorrect_walls(self, u, v, w)

Incompact3d's pre_correc: on each Dirichlet face, add the previous projection's tangential correction to the value set by the case. The projection that follows then leaves the face at its prescribed value plus dt(grad p_old - grad p_new), instead of -dtgrad p_new. The kept correction is dt_last*grad p_old, so it is rescaled by dt_now/dt_last first, as Incompact3d does with gdt(itr). The timestep is time_intg_t%stage_dt, the time the substep has advanced from the divergence-free start of the step, which is what the projection scales its correction by. For AB this ratio is always 1; for RK it changes between stages (1/2, 3/4, 1 for RK3). Before the first projection (or after a restart, as in Incompact3d) there is no correction to add.

Type Bound

solver_t

Arguments

Type IntentOptional Attributes Name
class(solver_t) :: self
class(field_t), intent(inout) :: u
class(field_t), intent(inout) :: v
class(field_t), intent(inout) :: w

Calls

proc~~precorrect_walls~~CallsGraph proc~precorrect_walls m_solver::solver_t%precorrect_walls proc~abort_run m_logger::abort_run proc~precorrect_walls->proc~abort_run proc~field_add_face_from_field_base m_base_backend::base_backend_t%field_add_face_from_field_base proc~precorrect_walls->proc~field_add_face_from_field_base proc~field_scale_base m_base_backend::base_backend_t%field_scale_base proc~precorrect_walls->proc~field_scale_base interface~str m_logger::str proc~abort_run->interface~str mpi_abort mpi_abort proc~abort_run->mpi_abort mpi_barrier mpi_barrier proc~abort_run->mpi_barrier mpi_comm_rank mpi_comm_rank proc~abort_run->mpi_comm_rank mpi_comm_size mpi_comm_size proc~abort_run->mpi_comm_size mpi_finalized mpi_finalized proc~abort_run->mpi_finalized mpi_initialized mpi_initialized proc~abort_run->mpi_initialized proc~field_add_face_from_field_base->proc~abort_run proc~field_scale_base->proc~abort_run

Called by

proc~~precorrect_walls~~CalledByGraph proc~precorrect_walls m_solver::solver_t%precorrect_walls proc~run m_base_case::base_case_t%run proc~run->proc~precorrect_walls program~xcompact xcompact program~xcompact->proc~run