Filter/controller with limiter used by step management
| Type | Intent | Optional | 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 |
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