38 type(
field_t),
intent(inout) :: u,v, w
39 type(
field_t),
intent(inout) :: uu, vv, ww
41 real(kind=
rp),
dimension(3),
intent(in) :: ab
42 integer,
intent(in) :: nab
48 do concurrent(i = 1:n)
49 u%x(i,1,1,1) = ab(1) * uu%x(i,1,1,1) + &
50 ab(2) * uulag%lf(1)%x(i,1,1,1) + ab(3) * uulag%lf(2)%x(i,1,1,1)
51 v%x(i,1,1,1) = ab(1) * vv%x(i,1,1,1) + &
52 ab(2) * vvlag%lf(1)%x(i,1,1,1) + ab(3) * vvlag%lf(2)%x(i,1,1,1)
53 w%x(i,1,1,1) = ab(1) * ww%x(i,1,1,1) + &
54 ab(2) * wwlag%lf(1)%x(i,1,1,1) + ab(3) * wwlag%lf(2)%x(i,1,1,1)
57 do concurrent(i = 1:n)
58 u%x(i,1,1,1) = ab(1) * uu%x(i,1,1,1) + ab(2) * uulag%lf(1)%x(i,1,1,1)
59 v%x(i,1,1,1) = ab(1) * vv%x(i,1,1,1) + ab(2) * vvlag%lf(1)%x(i,1,1,1)
60 w%x(i,1,1,1) = ab(1) * ww%x(i,1,1,1) + ab(2) * wwlag%lf(1)%x(i,1,1,1)
67 fx_laglag, fy_laglag, fz_laglag, fx, fy, fz, &
69 type(
field_t),
intent(inout) :: fx_lag, fy_lag, fz_lag
70 type(
field_t),
intent(inout) :: fx_laglag, fy_laglag, fz_laglag
71 real(kind=
rp),
intent(in) :: rho, ext_coeffs(4)
72 integer,
intent(in) :: n
73 real(kind=
rp),
intent(inout) :: fx(n), fy(n), fz(n)
75 type(
field_t),
pointer :: temp1, temp2, temp3
76 integer :: temp_indices(3)
82 do concurrent(i = 1:n)
83 temp1%x(i,1,1,1) = ext_coeffs(2) * fx_lag%x(i,1,1,1) + &
84 ext_coeffs(3) * fx_laglag%x(i,1,1,1)
85 temp2%x(i,1,1,1) = ext_coeffs(2) * fy_lag%x(i,1,1,1) + &
86 ext_coeffs(3) * fy_laglag%x(i,1,1,1)
87 temp3%x(i,1,1,1) = ext_coeffs(2) * fz_lag%x(i,1,1,1) + &
88 ext_coeffs(3) * fz_laglag%x(i,1,1,1)
91 do concurrent(i = 1:n)
92 fx_laglag%x(i,1,1,1) = fx_lag%x(i,1,1,1)
93 fy_laglag%x(i,1,1,1) = fy_lag%x(i,1,1,1)
94 fz_laglag%x(i,1,1,1) = fz_lag%x(i,1,1,1)
95 fx_lag%x(i,1,1,1) = fx(i)
96 fy_lag%x(i,1,1,1) = fy(i)
97 fz_lag%x(i,1,1,1) = fz(i)
100 do concurrent(i = 1:n)
101 fx(i) = (ext_coeffs(1) * fx(i) + temp1%x(i,1,1,1)) * rho
102 fy(i) = (ext_coeffs(1) * fy(i) + temp2%x(i,1,1,1)) * rho
103 fz(i) = (ext_coeffs(1) * fz(i) + temp3%x(i,1,1,1)) * rho
112 type(
field_t),
intent(inout) :: fs_lag
113 type(
field_t),
intent(inout) :: fs_laglag
114 real(kind=
rp),
intent(in) :: rho, ext_coeffs(4)
115 integer,
intent(in) :: n
116 real(kind=
rp),
intent(inout) :: fs(n)
118 type(
field_t),
pointer :: temp1
119 integer :: temp_index
123 do concurrent(i = 1:n)
124 temp1%x(i,1,1,1) = ext_coeffs(2) * fs_lag%x(i,1,1,1) + &
125 ext_coeffs(3) * fs_laglag%x(i,1,1,1)
128 do concurrent(i = 1:n)
129 fs_laglag%x(i,1,1,1) = fs_lag%x(i,1,1,1)
130 fs_lag%x(i,1,1,1) = fs(i)
133 do concurrent(i = 1:n)
134 fs(i) = (ext_coeffs(1) * fs(i) + temp1%x(i,1,1,1)) * rho
141 u, v, w, B, rho, dt, bd, nbd, n, Blag, Blaglag)
142 integer,
intent(in) :: n, nbd
143 type(
field_t),
intent(in) :: u, v, w
145 real(kind=
rp),
intent(in) :: blag(n), blaglag(n)
146 real(kind=
rp),
intent(inout) :: bfx(n), bfy(n), bfz(n)
147 real(kind=
rp),
intent(in) :: b(n)
148 real(kind=
rp),
intent(in) :: dt, rho, bd(4)
149 type(
field_t),
pointer :: tb1, tb2, tb3
150 integer :: temp_indices(3)
157 do concurrent(i = 1:n)
158 tb1%x(i,1,1,1) = u%x(i,1,1,1) * b(i) * bd(2)
159 tb2%x(i,1,1,1) = v%x(i,1,1,1) * b(i) * bd(2)
160 tb3%x(i,1,1,1) = w%x(i,1,1,1) * b(i) * bd(2)
164 if (ilag .eq. 2)
then
165 do concurrent(i = 1:n)
166 tb1%x(i,1,1,1) = tb1%x(i,1,1,1) + &
167 (ulag%lf(ilag-1)%x(i,1,1,1) * blag(i) * bd(ilag+1))
168 tb2%x(i,1,1,1) = tb2%x(i,1,1,1) + &
169 (vlag%lf(ilag-1)%x(i,1,1,1) * blag(i) * bd(ilag+1))
170 tb3%x(i,1,1,1) = tb3%x(i,1,1,1) + &
171 (wlag%lf(ilag-1)%x(i,1,1,1) * blag(i) * bd(ilag+1))
173 else if (ilag .eq. 3)
then
174 do concurrent(i = 1:n)
175 tb1%x(i,1,1,1) = tb1%x(i,1,1,1) + &
176 (ulag%lf(ilag-1)%x(i,1,1,1) * blaglag(i) * bd(ilag+1))
177 tb2%x(i,1,1,1) = tb2%x(i,1,1,1) + &
178 (vlag%lf(ilag-1)%x(i,1,1,1) * blaglag(i) * bd(ilag+1))
179 tb3%x(i,1,1,1) = tb3%x(i,1,1,1) + &
180 (wlag%lf(ilag-1)%x(i,1,1,1) * blaglag(i) * bd(ilag+1))
185 do concurrent(i = 1:n)
186 bfx(i) = bfx(i) + tb1%x(i,1,1,1) * (rho / dt)
187 bfy(i) = bfy(i) + tb2%x(i,1,1,1) * (rho / dt)
188 bfz(i) = bfz(i) + tb3%x(i,1,1,1) * (rho / dt)
196 integer,
intent(in) :: n, nbd
199 real(kind=
rp),
intent(inout) :: fs(n)
200 real(kind=
rp),
intent(in) :: b(n)
201 real(kind=
rp),
intent(in) :: dt, rho, bd(4)
203 type(
field_t),
pointer :: temp1
204 integer :: temp_indices
208 do concurrent(i = 1:n)
209 temp1%x(i,1,1,1) = s%x(i,1,1,1) * b(i) * bd(2)
213 do concurrent(i = 1:n)
214 temp1%x(i,1,1,1) = temp1%x(i,1,1,1) + &
215 (s_lag%lf(ilag-1)%x(i,1,1,1) * b(i) * bd(ilag+1))
219 do concurrent(i = 1:n)
220 fs(i) = fs(i) + temp1%x(i,1,1,1) * (rho / dt)
subroutine rhs_maker_bdf_cpu(ulag, vlag, wlag, bfx, bfy, bfz, u, v, w, b, rho, dt, bd, nbd, n, blag, blaglag)