22 #include "sll_assert.h"
23 #include "sll_working_precision.h"
40 compute_characteristics
69 sll_real64,
dimension(:, :),
intent(in) :: a1
70 sll_real64,
dimension(:, :),
intent(in) :: a2
71 sll_real64,
intent(in) :: dt
72 sll_real64,
dimension(:),
intent(in) :: input1
73 sll_real64,
dimension(:),
intent(in) :: input2
74 sll_real64,
dimension(:, :),
intent(out) :: output1
75 sll_real64,
dimension(:, :),
intent(out) :: output2
85 sll_real64,
intent(in) :: eta
86 sll_real64,
intent(in) :: eta_min
87 sll_real64,
intent(in) :: eta_max
98 sll_real64,
intent(in) :: eta
99 sll_real64,
intent(in) :: eta_min
100 sll_real64,
intent(in) :: eta_max
101 sll_real64 :: eta_out
103 eta_out = (eta - eta_min)/(eta_max - eta_min)
104 eta_out = eta_out - real(floor(eta_out), kind=
f64)
105 if (eta_out == 1._f64)
then
108 if (.not. ((eta_out >= 0) .and. (eta_out < 1)))
then
109 print *,
'#eta=', eta
110 print *,
'#eta_min=', eta_min
111 print *,
'#eta_max=', eta_max
112 print *,
'#(eta-eta_min)/(eta_max-eta_min)=', (eta - eta_min)/(eta_max - eta_min)
113 print *,
'#floor(-1e-19)', floor(-1e-19)
114 print *,
'#eta_out=', eta_out
116 sll_assert((eta_out >= 0) .and. (eta_out < 1))
117 eta_out = eta_min + eta_out*(eta_max - eta_min)
118 sll_assert((eta_out >= eta_min) .and. (eta_out < eta_max))
127 sll_real64,
intent(in) :: eta
128 sll_real64,
intent(in) :: eta_min
129 sll_real64,
intent(in) :: eta_max
130 sll_real64 :: eta_out
132 eta_out = (eta - eta_min)/(eta_max - eta_min)
133 if (eta_out > 1)
then
136 if (eta_out < 0)
then
139 sll_assert((eta_out >= 0) .and. (eta_out <= 1))
140 eta_out = eta_min + eta_out*(eta_max - eta_min)
141 sll_assert((eta_out >= eta_min) .and. (eta_out <= eta_max))
Abstract class to compute the characteristic in two dimensions.
real(kind=f64) function, public sll_f_process_outside_point_periodic(eta, eta_min, eta_max)
real(kind=f64) function, public sll_f_process_outside_point_set_to_limit(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)