filter Function

private function filter(simple, c1l, c0l, kl)

Filter/controller with limiter used by step management

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: simple

True: Elementary filter, False: PI42 controller

real(kind=dp), intent(in) :: c1l
real(kind=dp), intent(in) :: c0l
real(kind=dp), intent(in) :: kl

Return Value real(kind=dp)


Called by

proc~~filter~~CalledByGraph proc~filter filter proc~sim_step_management simulation_t%sim_step_management proc~sim_step_management->proc~filter proc~main_loop main_loop proc~main_loop->proc~sim_step_management program~reims_p reims_p program~reims_p->proc~main_loop

Source Code

function filter(simple, c1l, c0l, kl) !! Filter/controller with limiter used by step management     
    logical, intent(in) :: simple     !! True: Elementary filter, False: PI42 controller
    real(dp), intent(in) :: c1l, c0l, kl
    real(dp) :: filter
    real(dp), parameter :: kappa = 1., b = 5.
      
    if(simple) then                ! Elementary filter:
        filter = c1l**(1.0_dp/kl) 
    else                           ! PI42 controller:
        filter = c1l**(3.0_dp/b/kl) * c0l**(-1.0_dp/b/kl)
    endif                          ! Limiter:
    filter = 1.0_dp + kappa * atan((filter - 1.0_dp)/kappa);
end function filter