Skip to content

Commit 63f4b72

Browse files
authored
Merge pull request #58 from acrlakshman/issue_56
updates to analytical fields and advection code
2 parents 7fdbb82 + 0b0a8dc commit 63f4b72

File tree

5 files changed

+117
-59
lines changed

5 files changed

+117
-59
lines changed

applications/advection/main.cc

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@
3232
#include <iostream>
3333
#include <string>
3434

35+
#include "gals/analytical-fields/levelset.h"
3536
#include "gals/analytical-fields/velocity.h"
37+
#include "gals/cpu/gradient.h"
38+
#include "gals/cpu/levelset.h"
39+
#include "gals/cpu/temporal.h"
3640
#include "gals/input-parser.h"
3741
#include "gals/utilities/file-utils.h"
3842
#include "gals/utilities/grid.h"
@@ -101,28 +105,55 @@ int main(int argc, char **argv)
101105

102106
// Construct velocity.
103107
const auto &velocity_inputs = *(input_fields.m_velocity);
104-
GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>> velocity_field(grid);
105-
GALS::ANALYTICAL_FIELDS::Velocity<T_GRID, T> velocity(grid, velocity_inputs);
106-
velocity.compute(positions, velocity_field);
107-
108+
GALS::CPU::LevelsetVelocity<T_GRID, T> levelset_velocity(grid);
109+
const auto &velocity_field = levelset_velocity.velocity();
110+
GALS::ANALYTICAL_FIELDS::Velocity<T_GRID, T> analytical_velocity(grid, velocity_inputs);
111+
112+
// Build levelset.
113+
const auto &levelset_inputs = *(input_fields.m_levelset);
114+
GALS::CPU::Levelset<T_GRID, T> levelset(grid);
115+
auto &phi = levelset.phi();
116+
auto &psi = levelset.psi();
117+
auto &phi_prev = levelset.phiPrev();
118+
auto &psi_prev = levelset.psiPrev();
119+
auto &phi_mixed_derivatives_prev = levelset.phiMixedDerivativesPrev();
120+
GALS::ANALYTICAL_FIELDS::Levelset<T_GRID, T> analytical_levelset(grid, levelset_inputs);
121+
122+
analytical_levelset.compute(positions, levelset);
123+
124+
// Build time data.
108125
const auto &time_inputs = *(input_fields.m_time);
109126

110127
T t_start = time_inputs.start;
111128
T t_end = time_inputs.end;
112129
T dt = time_inputs.dt;
113130
bool is_dt_fixed = std::strcmp(time_inputs.constant_dt.c_str(), "NO");
114-
T sim_time = 0;
131+
T sim_time = static_cast<T>(0);
115132

116133
if (!is_dt_fixed) {
117-
dt = grid.dX().min() / 2.;
134+
dt = grid.dX().min() * static_cast<T>(0.5);
118135
}
119136

120137
// Time loop
121138
bool run_sim = true;
122139
while (run_sim) {
123140
sim_time += dt;
124141

125-
//
142+
// Compute velocity and its gradient at current time.
143+
analytical_velocity.compute(positions, sim_time, levelset_velocity);
144+
145+
// Compute gradient of levelset field.
146+
GALS::CPU::Gradient<T, T_GRID, GALS::CPU::ThirdOrder<T, T_GRID>>::compute(phi, psi);
147+
phi_prev = phi;
148+
psi_prev = psi;
149+
150+
// Compute levelset mixed derivatives for `_prev` fields.
151+
// TODO (lakshman)
152+
// levelset.computeMixedDerivatives(psi_prev, phi_mixed_derivatives_prev);
153+
154+
// Advect levelset.
155+
GALS::CPU::Temporal<T, T_GRID, GALS::TEMPORAL_SCHEMES::SEMI_LAGRANGIAN::Euler<T, T_GRID>>::compute(
156+
dt, levelset_velocity, levelset);
126157

127158
if (GALS::is_equal(sim_time, t_end) || sim_time > t_end) run_sim = false;
128159
}

include/gals/analytical-fields/velocity.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include <string>
3636
#include <vector>
3737

38+
#include "gals/cpu/levelset-velocity.h"
3839
#include "gals/input-fields/velocity.h"
3940
#include "gals/utilities/array.h"
4041
#include "gals/utilities/grid.h"
@@ -84,10 +85,11 @@ class Velocity
8485
/*! Compute velocity field.
8586
*
8687
* \param positions array of positions where velocity needs to be computed.
87-
* \param velocity velocity field which will be updated by this function.
88+
* \param time time, for some velocity fields.
89+
* \param levelset_velocity velocity field which will be updated by this function.
8890
*/
89-
void compute(const GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>>& positions,
90-
GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>>& velocity);
91+
void compute(const GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>>& positions, const T time,
92+
GALS::CPU::LevelsetVelocity<T_GRID, T>& levelset_velocity);
9193

9294
private:
9395
const T_GRID& m_grid;

src/cpu/analytical-fields/velocity.cc

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
///////////////////////////////////////////////////////////////////////////////
3131

3232
#include "gals/analytical-fields/velocity.h"
33+
34+
#include <string>
35+
3336
#include "gals/utilities/utilities.h"
3437

3538
template <typename T_GRID, typename T>
@@ -45,14 +48,16 @@ GALS::ANALYTICAL_FIELDS::Velocity<T_GRID, T>::~Velocity()
4548

4649
template <typename T_GRID, typename T>
4750
void GALS::ANALYTICAL_FIELDS::Velocity<T_GRID, T>::compute(
48-
const GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>>& positions,
49-
GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>>& velocity)
51+
const GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>>& positions, const T time,
52+
GALS::CPU::LevelsetVelocity<T_GRID, T>& levelset_velocity)
5053
{
5154
const GALS::CPU::Vec3<int> num_cells = positions.numCells();
5255
const auto& velocity_name = m_inputs.name;
5356

5457
switch (velocity_name_map[velocity_name]) {
5558
case VelocityFieldNames::CIRCULAR: {
59+
auto& velocity = levelset_velocity.velocity();
60+
5661
if (T_GRID::dim == 1)
5762
GALS_FUNCTION_NOT_IMPLEMENTED(
5863
"GALS::ANALYTICAL_FIELDS::Velocity::compute: CIRCULAR velocity field for 1D grid.");
@@ -71,6 +76,24 @@ void GALS::ANALYTICAL_FIELDS::Velocity<T_GRID, T>::compute(
7176
velocity(i, j, k) = velocity_node;
7277
}
7378

79+
// Compute velocity gradient using analytical expressions.
80+
if (!strcmp(m_inputs.gradient_scheme.c_str(), "ANALYTICAL")) {
81+
auto& velocity_gradient = levelset_velocity.velocityGradient();
82+
83+
for (int i = 0; i < num_cells[0]; ++i)
84+
for (int j = 0; j < num_cells[1]; ++j)
85+
for (int k = 0; k < num_cells[2]; ++k) {
86+
for (int cmpt = 0; cmpt < T_GRID::dim; ++cmpt) {
87+
for (int derv = 0; derv < T_GRID::dim; ++derv) {
88+
if (cmpt == 0 && derv == 0) velocity_gradient[cmpt][derv] = static_cast<T>(0);
89+
if (cmpt == 0 && derv == 1) velocity_gradient[cmpt][derv] = -coeff;
90+
if (cmpt == 1 && derv == 0) velocity_gradient[cmpt][derv] = coeff;
91+
if (cmpt == 1 && derv == 1) velocity_gradient[cmpt][derv] = static_cast<T>(0);
92+
}
93+
}
94+
}
95+
}
96+
7497
break;
7598
}
7699

src/cpu/interpolation/hermite-3d.cc

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -107,88 +107,88 @@ GALS::CPU::InterpolatedFields<GALS::CPU::Vec3<T>> GALS::INTERPOLATION::Hermite<T
107107
levelset.phiPrev()(base_i_jp1_k), levelset.psiPrev()(base_i_jp1_k)[axis_z], levelset.phiPrev()(base_i_jp1_kp1),
108108
levelset.psiPrev()(base_i_jp1_kp1)[axis_z], dx[axis_z], use_gradient_limiting);
109109
const ControlPoints<T>& control_points_y_z = GALS::INTERPOLATION::get_control_points(
110-
levelset.psiPrev()(base_i_j_k)[axis_z], levelset.phiMixedDerivatives()(base_i_j_k)[1],
111-
levelset.psiPrev()(base_i_jp1_k)[axis_z], levelset.phiMixedDerivatives()(base_i_jp1_k)[1], dx[axis_y],
110+
levelset.psiPrev()(base_i_j_k)[axis_z], levelset.phiMixedDerivativesPrev()(base_i_j_k)[1],
111+
levelset.psiPrev()(base_i_jp1_k)[axis_z], levelset.phiMixedDerivativesPrev()(base_i_jp1_k)[1], dx[axis_y],
112112
use_gradient_limiting);
113113
const ControlPoints<T>& control_points_zy_z = GALS::INTERPOLATION::get_control_points(
114-
levelset.psiPrev()(base_i_j_kp1)[axis_z], levelset.phiMixedDerivatives()(base_i_j_kp1)[1],
115-
levelset.psiPrev()(base_i_jp1_kp1)[axis_z], levelset.phiMixedDerivatives()(base_i_jp1_kp1)[1], dx[axis_y],
114+
levelset.psiPrev()(base_i_j_kp1)[axis_z], levelset.phiMixedDerivativesPrev()(base_i_j_kp1)[1],
115+
levelset.psiPrev()(base_i_jp1_kp1)[axis_z], levelset.phiMixedDerivativesPrev()(base_i_jp1_kp1)[1], dx[axis_y],
116116
use_gradient_limiting);
117117
const ControlPoints<T>& control_points_z_x = GALS::INTERPOLATION::get_control_points(
118-
levelset.psiPrev()(base_i_j_k)[axis_x], levelset.phiMixedDerivatives()(base_i_j_k)[2],
119-
levelset.psiPrev()(base_i_j_kp1)[axis_x], levelset.phiMixedDerivatives()(base_i_j_kp1)[2], dx[axis_z],
118+
levelset.psiPrev()(base_i_j_k)[axis_x], levelset.phiMixedDerivativesPrev()(base_i_j_k)[2],
119+
levelset.psiPrev()(base_i_j_kp1)[axis_x], levelset.phiMixedDerivativesPrev()(base_i_j_kp1)[2], dx[axis_z],
120120
use_gradient_limiting);
121121
const ControlPoints<T>& control_points_x_y = GALS::INTERPOLATION::get_control_points(
122-
levelset.psiPrev()(base_i_j_k)[axis_y], levelset.phiMixedDerivatives()(base_i_j_k)[0],
123-
levelset.psiPrev()(base_ip1_j_k)[axis_y], levelset.phiMixedDerivatives()(base_ip1_j_k)[0], dx[axis_x],
122+
levelset.psiPrev()(base_i_j_k)[axis_y], levelset.phiMixedDerivativesPrev()(base_i_j_k)[0],
123+
levelset.psiPrev()(base_ip1_j_k)[axis_y], levelset.phiMixedDerivativesPrev()(base_ip1_j_k)[0], dx[axis_x],
124124
use_gradient_limiting);
125125
const ControlPoints<T>& control_points_z_xy = GALS::INTERPOLATION::get_control_points(
126-
levelset.phiMixedDerivatives()(base_i_j_k)[0], levelset.phiMixedDerivatives()(base_i_j_k)[3],
127-
levelset.phiMixedDerivatives()(base_i_j_kp1)[0], levelset.phiMixedDerivatives()(base_i_j_kp1)[3], dx[axis_z],
128-
use_gradient_limiting);
126+
levelset.phiMixedDerivativesPrev()(base_i_j_k)[0], levelset.phiMixedDerivativesPrev()(base_i_j_k)[3],
127+
levelset.phiMixedDerivativesPrev()(base_i_j_kp1)[0], levelset.phiMixedDerivativesPrev()(base_i_j_kp1)[3],
128+
dx[axis_z], use_gradient_limiting);
129129
const ControlPoints<T>& control_points_z_y = GALS::INTERPOLATION::get_control_points(
130-
levelset.psiPrev()(base_i_j_k)[axis_y], levelset.phiMixedDerivatives()(base_i_j_k)[1],
131-
levelset.psiPrev()(base_i_j_kp1)[axis_y], levelset.phiMixedDerivatives()(base_i_j_kp1)[1], dx[axis_z],
130+
levelset.psiPrev()(base_i_j_k)[axis_y], levelset.phiMixedDerivativesPrev()(base_i_j_k)[1],
131+
levelset.psiPrev()(base_i_j_kp1)[axis_y], levelset.phiMixedDerivativesPrev()(base_i_j_kp1)[1], dx[axis_z],
132132
use_gradient_limiting);
133133
const ControlPoints<T>& control_points_x_z = GALS::INTERPOLATION::get_control_points(
134-
levelset.psiPrev()(base_i_j_k)[axis_z], levelset.phiMixedDerivatives()(base_i_j_k)[2],
135-
levelset.psiPrev()(base_ip1_j_k)[axis_z], levelset.phiMixedDerivatives()(base_ip1_j_k)[2], dx[axis_x],
134+
levelset.psiPrev()(base_i_j_k)[axis_z], levelset.phiMixedDerivativesPrev()(base_i_j_k)[2],
135+
levelset.psiPrev()(base_ip1_j_k)[axis_z], levelset.phiMixedDerivativesPrev()(base_ip1_j_k)[2], dx[axis_x],
136136
use_gradient_limiting);
137137
const ControlPoints<T>& control_points_zx_z = GALS::INTERPOLATION::get_control_points(
138-
levelset.psiPrev()(base_i_j_kp1)[axis_z], levelset.phiMixedDerivatives()(base_i_j_kp1)[2],
139-
levelset.psiPrev()(base_ip1_j_kp1)[axis_z], levelset.phiMixedDerivatives()(base_ip1_j_kp1)[2], dx[axis_x],
138+
levelset.psiPrev()(base_i_j_kp1)[axis_z], levelset.phiMixedDerivativesPrev()(base_i_j_kp1)[2],
139+
levelset.psiPrev()(base_ip1_j_kp1)[axis_z], levelset.phiMixedDerivativesPrev()(base_ip1_j_kp1)[2], dx[axis_x],
140140
use_gradient_limiting);
141141
const ControlPoints<T>& control_points_zx_y = GALS::INTERPOLATION::get_control_points(
142-
levelset.psiPrev()(base_i_j_kp1)[axis_y], levelset.phiMixedDerivatives()(base_i_j_kp1)[0],
143-
levelset.psiPrev()(base_ip1_j_kp1)[axis_y], levelset.phiMixedDerivatives()(base_ip1_j_kp1)[0], dx[axis_x],
142+
levelset.psiPrev()(base_i_j_kp1)[axis_y], levelset.phiMixedDerivativesPrev()(base_i_j_kp1)[0],
143+
levelset.psiPrev()(base_ip1_j_kp1)[axis_y], levelset.phiMixedDerivativesPrev()(base_ip1_j_kp1)[0], dx[axis_x],
144144
use_gradient_limiting);
145145
const ControlPoints<T>& control_points_yx_y = GALS::INTERPOLATION::get_control_points(
146-
levelset.psiPrev()(base_i_jp1_k)[axis_y], levelset.phiMixedDerivatives()(base_i_jp1_k)[0],
147-
levelset.psiPrev()(base_ip1_jp1_k)[axis_y], levelset.phiMixedDerivatives()(base_ip1_jp1_k)[0], dx[axis_x],
146+
levelset.psiPrev()(base_i_jp1_k)[axis_y], levelset.phiMixedDerivativesPrev()(base_i_jp1_k)[0],
147+
levelset.psiPrev()(base_ip1_jp1_k)[axis_y], levelset.phiMixedDerivativesPrev()(base_ip1_jp1_k)[0], dx[axis_x],
148148
use_gradient_limiting);
149149
const ControlPoints<T>& control_points_yz_xy = GALS::INTERPOLATION::get_control_points(
150-
levelset.phiMixedDerivatives()(base_i_jp1_k)[0], levelset.phiMixedDerivatives()(base_i_jp1_k)[3],
151-
levelset.phiMixedDerivatives()(base_i_jp1_kp1)[0], levelset.phiMixedDerivatives()(base_i_jp1_kp1)[3], dx[axis_z],
152-
use_gradient_limiting);
150+
levelset.phiMixedDerivativesPrev()(base_i_jp1_k)[0], levelset.phiMixedDerivativesPrev()(base_i_jp1_k)[3],
151+
levelset.phiMixedDerivativesPrev()(base_i_jp1_kp1)[0], levelset.phiMixedDerivativesPrev()(base_i_jp1_kp1)[3],
152+
dx[axis_z], use_gradient_limiting);
153153
const ControlPoints<T>& control_points_yz_y = GALS::INTERPOLATION::get_control_points(
154-
levelset.psiPrev()(base_i_jp1_k)[axis_y], levelset.phiMixedDerivatives()(base_i_jp1_k)[1],
155-
levelset.psiPrev()(base_i_jp1_kp1)[axis_y], levelset.phiMixedDerivatives()(base_i_jp1_kp1)[1], dx[axis_z],
154+
levelset.psiPrev()(base_i_jp1_k)[axis_y], levelset.phiMixedDerivativesPrev()(base_i_jp1_k)[1],
155+
levelset.psiPrev()(base_i_jp1_kp1)[axis_y], levelset.phiMixedDerivativesPrev()(base_i_jp1_kp1)[1], dx[axis_z],
156156
use_gradient_limiting);
157157
const ControlPoints<T>& control_points_yx_z = GALS::INTERPOLATION::get_control_points(
158-
levelset.psiPrev()(base_i_jp1_k)[axis_z], levelset.phiMixedDerivatives()(base_i_jp1_k)[2],
159-
levelset.psiPrev()(base_ip1_jp1_k)[axis_z], levelset.phiMixedDerivatives()(base_ip1_jp1_k)[2], dx[axis_x],
158+
levelset.psiPrev()(base_i_jp1_k)[axis_z], levelset.phiMixedDerivativesPrev()(base_i_jp1_k)[2],
159+
levelset.psiPrev()(base_ip1_jp1_k)[axis_z], levelset.phiMixedDerivativesPrev()(base_ip1_jp1_k)[2], dx[axis_x],
160160
use_gradient_limiting);
161161
const ControlPoints<T>& control_points_yzx_y = GALS::INTERPOLATION::get_control_points(
162-
levelset.psiPrev()(base_i_jp1_kp1)[axis_y], levelset.phiMixedDerivatives()(base_i_jp1_kp1)[0],
163-
levelset.psiPrev()(base_ip1_jp1_kp1)[axis_y], levelset.phiMixedDerivatives()(base_ip1_jp1_kp1)[0], dx[axis_x],
162+
levelset.psiPrev()(base_i_jp1_kp1)[axis_y], levelset.phiMixedDerivativesPrev()(base_i_jp1_kp1)[0],
163+
levelset.psiPrev()(base_ip1_jp1_kp1)[axis_y], levelset.phiMixedDerivativesPrev()(base_ip1_jp1_kp1)[0], dx[axis_x],
164164
use_gradient_limiting);
165165
const ControlPoints<T>& control_points_yzx_z = GALS::INTERPOLATION::get_control_points(
166-
levelset.psiPrev()(base_i_jp1_kp1)[axis_z], levelset.phiMixedDerivatives()(base_i_jp1_kp1)[2],
167-
levelset.psiPrev()(base_ip1_jp1_kp1)[axis_z], levelset.phiMixedDerivatives()(base_ip1_jp1_kp1)[2], dx[axis_x],
166+
levelset.psiPrev()(base_i_jp1_kp1)[axis_z], levelset.phiMixedDerivativesPrev()(base_i_jp1_kp1)[2],
167+
levelset.psiPrev()(base_ip1_jp1_kp1)[axis_z], levelset.phiMixedDerivativesPrev()(base_ip1_jp1_kp1)[2], dx[axis_x],
168168
use_gradient_limiting);
169169
const ControlPoints<T>& control_points_xz_xy = GALS::INTERPOLATION::get_control_points(
170-
levelset.phiMixedDerivatives()(base_ip1_j_k)[0], levelset.phiMixedDerivatives()(base_ip1_j_k)[3],
171-
levelset.phiMixedDerivatives()(base_ip1_j_kp1)[0], levelset.phiMixedDerivatives()(base_ip1_j_kp1)[3], dx[axis_z],
172-
use_gradient_limiting);
170+
levelset.phiMixedDerivativesPrev()(base_ip1_j_k)[0], levelset.phiMixedDerivativesPrev()(base_ip1_j_k)[3],
171+
levelset.phiMixedDerivativesPrev()(base_ip1_j_kp1)[0], levelset.phiMixedDerivativesPrev()(base_ip1_j_kp1)[3],
172+
dx[axis_z], use_gradient_limiting);
173173
const ControlPoints<T>& control_points_xz_y = GALS::INTERPOLATION::get_control_points(
174-
levelset.psiPrev()(base_ip1_j_k)[axis_y], levelset.phiMixedDerivatives()(base_ip1_j_k)[1],
175-
levelset.psiPrev()(base_ip1_j_kp1)[axis_y], levelset.phiMixedDerivatives()(base_ip1_j_kp1)[1], dx[axis_z],
174+
levelset.psiPrev()(base_ip1_j_k)[axis_y], levelset.phiMixedDerivativesPrev()(base_ip1_j_k)[1],
175+
levelset.psiPrev()(base_ip1_j_kp1)[axis_y], levelset.phiMixedDerivativesPrev()(base_ip1_j_kp1)[1], dx[axis_z],
176176
use_gradient_limiting);
177177
const ControlPoints<T>& control_points_xyz_xy = GALS::INTERPOLATION::get_control_points(
178-
levelset.phiMixedDerivatives()(base_ip1_jp1_k)[0], levelset.phiMixedDerivatives()(base_ip1_jp1_k)[3],
179-
levelset.phiMixedDerivatives()(base_ip1_jp1_kp1)[0], levelset.phiMixedDerivatives()(base_ip1_jp1_kp1)[3],
178+
levelset.phiMixedDerivativesPrev()(base_ip1_jp1_k)[0], levelset.phiMixedDerivativesPrev()(base_ip1_jp1_k)[3],
179+
levelset.phiMixedDerivativesPrev()(base_ip1_jp1_kp1)[0], levelset.phiMixedDerivativesPrev()(base_ip1_jp1_kp1)[3],
180180
dx[axis_z], use_gradient_limiting);
181181
const ControlPoints<T>& control_points_xyz_y = GALS::INTERPOLATION::get_control_points(
182-
levelset.psiPrev()(base_ip1_jp1_k)[axis_y], levelset.phiMixedDerivatives()(base_ip1_jp1_k)[1],
183-
levelset.psiPrev()(base_ip1_jp1_kp1)[axis_y], levelset.phiMixedDerivatives()(base_ip1_jp1_kp1)[1], dx[axis_z],
182+
levelset.psiPrev()(base_ip1_jp1_k)[axis_y], levelset.phiMixedDerivativesPrev()(base_ip1_jp1_k)[1],
183+
levelset.psiPrev()(base_ip1_jp1_kp1)[axis_y], levelset.phiMixedDerivativesPrev()(base_ip1_jp1_kp1)[1], dx[axis_z],
184184
use_gradient_limiting);
185185
const ControlPoints<T>& control_points_xy_z = GALS::INTERPOLATION::get_control_points(
186-
levelset.psiPrev()(base_ip1_j_k)[axis_z], levelset.phiMixedDerivatives()(base_ip1_j_k)[1],
187-
levelset.psiPrev()(base_ip1_jp1_k)[axis_z], levelset.phiMixedDerivatives()(base_ip1_jp1_k)[1], dx[axis_y],
186+
levelset.psiPrev()(base_ip1_j_k)[axis_z], levelset.phiMixedDerivativesPrev()(base_ip1_j_k)[1],
187+
levelset.psiPrev()(base_ip1_jp1_k)[axis_z], levelset.phiMixedDerivativesPrev()(base_ip1_jp1_k)[1], dx[axis_y],
188188
use_gradient_limiting);
189189
const ControlPoints<T>& control_points_zxy_z = GALS::INTERPOLATION::get_control_points(
190-
levelset.psiPrev()(base_ip1_j_kp1)[axis_z], levelset.phiMixedDerivatives()(base_ip1_j_kp1)[1],
191-
levelset.psiPrev()(base_ip1_jp1_kp1)[axis_z], levelset.phiMixedDerivatives()(base_ip1_jp1_kp1)[1], dx[axis_y],
190+
levelset.psiPrev()(base_ip1_j_kp1)[axis_z], levelset.phiMixedDerivativesPrev()(base_ip1_j_kp1)[1],
191+
levelset.psiPrev()(base_ip1_jp1_kp1)[axis_z], levelset.phiMixedDerivativesPrev()(base_ip1_jp1_kp1)[1], dx[axis_y],
192192
use_gradient_limiting);
193193

194194
const T& c_21_x = control_points_x.c_21;

tests/analytical-fields-velocity.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,11 @@ TEST(GALS, ANALYTICAL_FIELDS_VELOCITY_2D)
103103
positions(i, j, k) = grid(i, j, k);
104104
}
105105

106-
GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>> velocity_field(grid);
106+
GALS::CPU::LevelsetVelocity<T_GRID, T> levelset_velocity(grid);
107+
const auto& velocity_field = levelset_velocity.velocity();
108+
107109
GALS::ANALYTICAL_FIELDS::Velocity<T_GRID, T> velocity(grid, velocity_inputs);
108-
velocity.compute(positions, velocity_field);
110+
velocity.compute(positions, 0, levelset_velocity);
109111

110112
// TODO (lakshman): Compare these values with results from matlab.
111113
// for (int i = 0; i < num_cells[0]; ++i)

0 commit comments

Comments
 (0)