22 #include "sll_assert.h"
23 #include "sll_working_precision.h"
40 compute_characteristics
60 sll_real64,
dimension(:),
intent(in) :: a
61 sll_real64,
intent(in) :: dt
62 sll_real64,
dimension(:),
intent(in) :: input
63 sll_real64,
dimension(:),
intent(out) :: output
73 sll_real64,
intent(in) :: eta
74 sll_real64,
intent(in) :: eta_min
75 sll_real64,
intent(in) :: eta_max
86 sll_real64,
intent(in) :: eta
87 sll_real64,
intent(in) :: eta_min
88 sll_real64,
intent(in) :: eta_max
91 eta_out = (eta - eta_min)/(eta_max - eta_min)
92 eta_out = eta_out - real(floor(eta_out), kind=
f64)
93 if (eta_out == 1._f64)
then
96 if (.not. ((eta_out >= 0) .and. (eta_out < 1)))
then
98 print *,
'#eta_min=', eta_min
99 print *,
'#eta_max=', eta_max
100 print *,
'#(eta-eta_min)/(eta_max-eta_min)=', (eta - eta_min)/(eta_max - eta_min)
101 print *,
'#floor(-1e-19)', floor(-1e-19)
102 print *,
'#eta_out=', eta_out
104 sll_assert((eta_out >= 0) .and. (eta_out < 1))
105 eta_out = eta_min + eta_out*(eta_max - eta_min)
106 sll_assert((eta_out >= eta_min) .and. (eta_out < eta_max))
115 sll_real64,
intent(in) :: eta
116 sll_real64,
intent(in) :: eta_min
117 sll_real64,
intent(in) :: eta_max
118 sll_real64 :: eta_out
120 eta_out = (eta - eta_min)/(eta_max - eta_min)
121 if (eta_out > 1)
then
124 if (eta_out < 0)
then
127 sll_assert((eta_out >= 0) .and. (eta_out <= 1))
128 eta_out = eta_min + eta_out*(eta_max - eta_min)
129 sll_assert((eta_out >= eta_min) .and. (eta_out <= eta_max))
Abstract class for characteristic derived type.
function, public sll_f_process_outside_point_set_to_limit(eta, eta_min, eta_max)
function, public sll_f_process_outside_point_periodic(eta, eta_min, eta_max)
Module to select the kind parameter.
integer, parameter, public f64
f64 is the kind type for 64-bit reals (double precision)