Skip to content
Snippets Groups Projects
Commit b430b2a1 authored by Pietro Incardona's avatar Pietro Incardona
Browse files

Fixing Lid Stokes example in multiprocess

parent e3d1256d
No related branches found
No related tags found
No related merge requests found
......@@ -113,10 +113,20 @@ class DCPSE_scheme: public MatrixAssembler
v_cl.execute();
// resize b if needed
if (opt == options_solver::STANDARD) {
if (opt == options_solver::STANDARD)
{
b.resize(Sys_eqs::nvar * tot, Sys_eqs::nvar * sz);
} else{
b.resize(Sys_eqs::nvar * tot + 1, Sys_eqs::nvar * sz + 1);
}
else
{
if (v_cl.rank() == v_cl.size()-1)
{
b.resize(Sys_eqs::nvar * tot + 1, Sys_eqs::nvar * sz + 1);
}
else
{
b.resize(Sys_eqs::nvar * tot + 1, Sys_eqs::nvar * sz);
}
}
// Calculate the starting point
......@@ -534,17 +544,22 @@ public:
for (int i = 0 ; i < tot * Sys_eqs::nvar ; i++)
{
triplet t1;
triplet t2;
t1.row() = tot * Sys_eqs::nvar;
t1.col() = i;
t1.value() = 1;
t2.row() = i;
trpl.add(t1);
}
for (int i = 0 ; i < p_map.size_local() * Sys_eqs::nvar ; i++)
{
triplet t2;
t2.row() = i + s_pnt*Sys_eqs::nvar;
t2.col() = tot * Sys_eqs::nvar;
t2.value() = 1;
trpl.add(t1);
trpl.add(t2);
}
......@@ -563,6 +578,17 @@ public:
A.resize(tot * Sys_eqs::nvar + 1, tot * Sys_eqs::nvar + 1,
p_map.size_local() * Sys_eqs::nvar,
p_map.size_local() * Sys_eqs::nvar);
for (int i = 0 ; i < p_map.size_local() * Sys_eqs::nvar ; i++)
{
triplet t2;
t2.row() = i + s_pnt*Sys_eqs::nvar;
t2.col() = tot * Sys_eqs::nvar;
t2.value() = 1;
trpl.add(t2);
}
}
......
......@@ -580,8 +580,11 @@ BOOST_AUTO_TEST_SUITE(dcpse_op_suite_tests2)
Solver.impose(V_star[0], l_p, 0,vx);
Solver.impose(V_star[1], l_p, 0,vy);
Solver.solve(V_star[0],V_star[1]);
//std::cout << "Stokes Solved" << std::endl;
Particles.ghost_get<2>();
RHS=-Div(V_star);
DCPSE_scheme<equations2d1,decltype(Particles)> SolverH( Particles,options_solver::LAGRANGE_MULTIPLIER);
auto Helmholtz = Lap(H);
auto D_y=Dy(H);
......@@ -592,8 +595,14 @@ BOOST_AUTO_TEST_SUITE(dcpse_op_suite_tests2)
SolverH.impose(Dy(H), dw_p,0);
SolverH.impose(Dx(H), l_p,0);
SolverH.solve(H);
Particles.write("Debug_out");
return;
//std::cout << "Helmholtz Solved" << std::endl;
Particles.ghost_get<4,5>();
V=V_star+Grad(H);
for(int j=0;j<up_p.size();j++)
{ auto p=up_p.get<0>(j);
Particles.getProp<1>(p)[0] = 1;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment