24 #include "sll_memory.h"
25 #include "sll_working_precision.h"
48 sll_real64,
dimension(:),
pointer :: buf1d
60 npts1, npts2)
result(adv)
65 sll_int32,
intent(in) :: npts1
66 sll_int32,
intent(in) :: npts2
70 sll_allocate(adv, ierr)
72 call adv%init(advect_x1, advect_x2, npts1, npts2)
86 sll_int32,
intent(in) :: npts1
87 sll_int32,
intent(in) :: npts2
91 adv%advect_x1 => advect_x1
92 adv%advect_x2 => advect_x2
97 sll_allocate(adv%buf1d(max(npts1, npts2)), ierr)
104 sll_real64,
dimension(:, :),
intent(in) :: a1
105 sll_real64,
dimension(:, :),
intent(in) :: a2
106 sll_real64,
intent(in) :: dt
107 sll_real64,
dimension(:, :),
intent(in) :: input
108 sll_real64,
dimension(:, :),
intent(out) :: output
119 adv%buf1d(1:npts1) = input(1:npts1, i2)
120 call adv%advect_x1%advect_1d( &
123 adv%buf1d(1:npts1), &
128 adv%buf1d(1:npts2) = output(i1, 1:npts2)
129 call adv%advect_x2%advect_1d( &
132 adv%buf1d(1:npts2), &
137 adv%buf1d(1:npts1) = output(1:npts1, i2)
138 call adv%advect_x1%advect_1d( &
141 adv%buf1d(1:npts1), &
Abstract class for advection.
subroutine tensor_product_advect_2d(adv, A1, A2, dt, input, output)
type(sll_t_advector_2d_tensor_product) function, pointer, public sll_f_new_advector_2d_tensor_product(advect_x1, advect_x2, npts1, npts2)
subroutine initialize_advector_2d_tensor_product(adv, advect_x1, advect_x2, npts1, npts2)