23 #include "sll_assert.h"
24 #include "sll_memory.h"
25 #include "sll_working_precision.h"
43 sll_int32 :: num_cells
66 sll_int32,
intent(in) :: num_cells
67 sll_real64,
intent(in) :: xmin
68 sll_real64,
intent(in) :: xmax
69 sll_int32,
intent(in) ::
type
70 sll_int32,
intent(in) :: order
73 sll_allocate(adv, ierr)
87 sll_int32,
intent(in) :: num_cells
88 sll_real64,
intent(in) :: xmin
89 sll_real64,
intent(in) :: xmax
90 sll_int32,
intent(in) ::
type
91 sll_int32,
intent(in) :: order
95 adv%num_cells = num_cells
104 sll_real64,
intent(in) :: a
105 sll_real64,
intent(in) :: dt
106 sll_real64,
dimension(:),
intent(in) :: input
107 sll_real64,
dimension(:),
intent(out) :: output
112 sll_int32 :: num_cells
114 num_cells = adv%num_cells
117 shift = a*dt/(xmax - xmin)*real(num_cells, f64)
121 output(1:num_cells), &
122 input(1:num_cells), &
126 if (
size(output) > num_cells)
then
127 output(num_cells + 1) = output(1)
135 sll_real64,
dimension(:),
intent(in) :: a
136 sll_real64,
intent(in) :: dt
137 sll_real64,
dimension(:),
intent(in) :: input
138 sll_real64,
dimension(:),
intent(out) :: output
140 print *,
'#periodic_advect_1d_fake'
141 print *,
'#not implemented'
144 print *, maxval(input)
146 print *, adv%num_cells
153 sll_assert(storage_size(adv) > 0)
Abstract class for advection.
type(sll_t_advector_1d_periodic) function, pointer, public sll_f_new_periodic_1d_advector(num_cells, xmin, xmax, type, order)
subroutine periodic_advect_1d_fake(adv, A, dt, input, output)
subroutine periodic_advect_1d_constant(adv, A, dt, input, output)
subroutine initialize_periodic_1d_advector(adv, num_cells, xmin, xmax, type, order)
subroutine delete_periodic_1d_advector(adv)
subroutine, public sll_s_periodic_interp_init(this, N, interpolator, order)
subroutine, public sll_s_periodic_interp(this, u_out, u, alpha)