Skip to content

Commit 0b0a8dc

Browse files
committed
minor corrections and updates to advection code.
* refer #56. Signed-off-by: Lakshman Anumolu <[email protected]>
1 parent 6492784 commit 0b0a8dc

File tree

5 files changed

+89
-55
lines changed

5 files changed

+89
-55
lines changed

applications/advection/main.cc

Lines changed: 35 additions & 5 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"
@@ -103,27 +107,53 @@ int main(int argc, char **argv)
103107
const auto &velocity_inputs = *(input_fields.m_velocity);
104108
GALS::CPU::LevelsetVelocity<T_GRID, T> levelset_velocity(grid);
105109
const auto &velocity_field = levelset_velocity.velocity();
106-
GALS::ANALYTICAL_FIELDS::Velocity<T_GRID, T> velocity(grid, velocity_inputs);
107-
velocity.compute(positions, levelset_velocity);
110+
GALS::ANALYTICAL_FIELDS::Velocity<T_GRID, T> analytical_velocity(grid, velocity_inputs);
108111

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.
109125
const auto &time_inputs = *(input_fields.m_time);
110126

111127
T t_start = time_inputs.start;
112128
T t_end = time_inputs.end;
113129
T dt = time_inputs.dt;
114130
bool is_dt_fixed = std::strcmp(time_inputs.constant_dt.c_str(), "NO");
115-
T sim_time = 0;
131+
T sim_time = static_cast<T>(0);
116132

117133
if (!is_dt_fixed) {
118-
dt = grid.dX().min() / 2.;
134+
dt = grid.dX().min() * static_cast<T>(0.5);
119135
}
120136

121137
// Time loop
122138
bool run_sim = true;
123139
while (run_sim) {
124140
sim_time += dt;
125141

126-
//
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);
127157

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

include/gals/analytical-fields/velocity.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,10 @@ class Velocity
8585
/*! Compute velocity field.
8686
*
8787
* \param positions array of positions where velocity needs to be computed.
88+
* \param time time, for some velocity fields.
8889
* \param levelset_velocity velocity field which will be updated by this function.
8990
*/
90-
void compute(const GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>>& positions,
91+
void compute(const GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>>& positions, const T time,
9192
GALS::CPU::LevelsetVelocity<T_GRID, T>& levelset_velocity);
9293

9394
private:

src/cpu/analytical-fields/velocity.cc

Lines changed: 6 additions & 3 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,7 +48,7 @@ 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,
51+
const GALS::CPU::Array<T_GRID, GALS::CPU::Vec3<T>>& positions, const T time,
4952
GALS::CPU::LevelsetVelocity<T_GRID, T>& levelset_velocity)
5053
{
5154
const GALS::CPU::Vec3<int> num_cells = positions.numCells();
@@ -74,13 +77,13 @@ void GALS::ANALYTICAL_FIELDS::Velocity<T_GRID, T>::compute(
7477
}
7578

7679
// Compute velocity gradient using analytical expressions.
77-
if (!std::strcmp(m_inputs.gradient_scheme, "ANALYTICAL")) {
80+
if (!strcmp(m_inputs.gradient_scheme.c_str(), "ANALYTICAL")) {
7881
auto& velocity_gradient = levelset_velocity.velocityGradient();
7982

8083
for (int i = 0; i < num_cells[0]; ++i)
8184
for (int j = 0; j < num_cells[1]; ++j)
8285
for (int k = 0; k < num_cells[2]; ++k) {
83-
for (int cmpt = 0; cmpt < T_GRID::dim; ++cmp) {
86+
for (int cmpt = 0; cmpt < T_GRID::dim; ++cmpt) {
8487
for (int derv = 0; derv < T_GRID::dim; ++derv) {
8588
if (cmpt == 0 && derv == 0) velocity_gradient[cmpt][derv] = static_cast<T>(0);
8689
if (cmpt == 0 && derv == 1) velocity_gradient[cmpt][derv] = -coeff;

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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ TEST(GALS, ANALYTICAL_FIELDS_VELOCITY_2D)
107107
const auto& velocity_field = levelset_velocity.velocity();
108108

109109
GALS::ANALYTICAL_FIELDS::Velocity<T_GRID, T> velocity(grid, velocity_inputs);
110-
velocity.compute(positions, levelset_velocity);
110+
velocity.compute(positions, 0, levelset_velocity);
111111

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

0 commit comments

Comments
 (0)