Skip to content

Commit 83d2c6e

Browse files
committed
6
1 parent 25384f9 commit 83d2c6e

2 files changed

Lines changed: 5 additions & 4 deletions

File tree

simulators/6_inv_free/src/NeoHookeanEnergy.cu

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,12 @@ NeoHookeanEnergy<T, dim>::NeoHookeanEnergy(const std::vector<T> &x, const std::v
4141
{
4242
pimpl_->device_x.copy_from(x);
4343
pimpl_->device_e.copy_from(e);
44+
pimpl_->device_vol.resize(e.size() / 3);
45+
pimpl_->device_IB.resize(e.size() / 3);
4446
pimpl_->Mu = mu;
4547
pimpl_->Lambda = lam;
4648
pimpl_->device_grad.resize(x.size());
47-
pimpl_->device_hess.resize_triplets(e.size() * dim * dim * dim * dim);
49+
pimpl_->device_hess.resize_triplets(e.size() * 12);
4850
pimpl_->device_hess.reshape(x.size(), x.size());
4951
init_vol_IB();
5052
}
@@ -59,7 +61,7 @@ void NeoHookeanEnergy<T, dim>::init_vol_IB()
5961
{
6062
for (int k = 0; k < 2; ++k)
6163
{
62-
TB(k, j) = device_x(device_e(i * 3 + j) * 2 + k) - device_x(device_e(i * 3) * 2 + k);
64+
TB(k, j) = device_x(device_e(i * 3 + j+1) * 2 + k) - device_x(device_e(i * 3) * 2 + k);
6365
}
6466
}
6567
device_vol(i) = TB.determinant() / 2;
@@ -94,7 +96,6 @@ T NeoHookeanEnergy<T, dim>::val()
9496
NeoHookeanEnergyVal(E, Mu, Lambda,X,device_IB(i),device_vol(i));
9597
device_val(i) = E; })
9698
.wait();
97-
9899
return devicesum(device_val);
99100
}
100101

simulators/6_inv_free/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ int main()
55
float nu = 0.4, E = 1e5;
66
float Mu = E / (2 * (1 + nu)), Lam = E * nu / ((1 + nu) * (1 - 2 * nu));
77
float rho = 1000,
8-
k = 4e4, initial_stretch = 1, n_seg = 8, h = 0.01, side_len = 1, tol = 0.01, mu = 0.11;
8+
k = 2e4, initial_stretch = 1, n_seg = 4, h = 0.01, side_len = 1, tol = 0.01, mu = 0.11;
99
// printf("Running mass-spring simulator with parameters: rho = %f, k = %f, initial_stretch = %f, n_seg = %d, h = %f, side_len = %f, tol = %f\n", rho, k, initial_stretch, n_seg, h, side_len, tol);
1010
InvFreeSimulator<float, 2> simulator(rho, side_len, initial_stretch, k, h, tol, mu, Mu, Lam, n_seg);
1111
simulator.run();

0 commit comments

Comments
 (0)