Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Update demos #9

Merged
merged 12 commits into from
Jun 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
- name: Configure
shell: bash -el {0}
run: |
cmake . -Bbuild -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DBUILD_DEMOS=ON
cmake . -Bbuild -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DBUILD_EXAMPLES=ON -DBUILD_TESTS=ON

- name: Run cppcheck on scopi
shell: bash -el {0}
Expand Down Expand Up @@ -160,6 +160,7 @@ jobs:
-Bbuild \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_EXAMPLES=ON \
-DBUILD_TESTS=ON

- name: Build
Expand Down Expand Up @@ -205,6 +206,7 @@ jobs:
-Bbuild \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_EXAMPLES=ON \
-DBUILD_TESTS=ON

- name: Build
Expand Down
27 changes: 2 additions & 25 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ OPTION(SCOPI_USE_TBB "enable TBB" OFF)
OPTION(SCOPI_USE_OPENMP "enable OpenMP" OFF)
OPTION(SCOPI_USE_MOSEK "enable Mosek" OFF)
OPTION(SCOPI_USE_SCS "enable SCS" OFF)
OPTION(SCOPI_USE_MKL "enable MKL" OFF)
OPTION(BUILD_EXAMPLES "scopi examples" OFF)
OPTION(BUILD_TESTS "scopi test suite" OFF)

Expand All @@ -51,7 +50,7 @@ find_package(fmt REQUIRED)
find_package(CLI11 REQUIRED)

find_package(plog REQUIRED)
# find_package(nanoflann REQUIRED)
find_package(nanoflann REQUIRED)

# section needed to use xtensor-blas
# see https://xtensor-blas.readthedocs.io/en/latest/performance.html
Expand All @@ -77,14 +76,6 @@ if(SCOPI_USE_OPENMP)
find_package(OpenMP REQUIRED)
endif()

if(SCOPI_USE_MKL)
if(SCOPI_USE_TBB)
set(MKL_THREAD_LAYER "TBB")
endif()

find_package(MKL REQUIRED)
endif()

if(SCOPI_USE_MOSEK)
find_package(MOSEK REQUIRED)

Expand All @@ -102,16 +93,6 @@ endif()
set(CMAKE_NO_SYSTEM_FROM_IMPORTED TRUE)

set(SCOPI_SRC
# src/contact/contact_brute_force.cpp
# src/contact/contact_kdtree.cpp
# src/problems/DryWithoutFriction.cpp
# src/problems/DryWithFriction.cpp
# src/problems/DryWithFrictionBase.cpp
# src/problems/DryWithFrictionFixedPoint.cpp
# src/solvers/ConstraintMosek.cpp
# src/solvers/OptimUzawaBase.cpp
# src/solvers/OptimProjectedGradient.cpp
# src/solvers/projection.cpp
src/vap/vap_fixed.cpp
src/vap/vap_fpd.cpp
src/vap/vap_projection.cpp
Expand All @@ -133,7 +114,7 @@ target_link_libraries(scopi PUBLIC xtensor
CLI11::CLI11

plog::plog
# nanoflann::nanoflann
nanoflann::nanoflann
${BLAS_LIBRARIES} ${LAPACK_LIBRARIES})

# set_target_properties(scopi PROPERTIES
Expand All @@ -143,10 +124,6 @@ target_link_libraries(scopi PUBLIC xtensor
# VERSION ${${PROJECT_NAME}_VERSION}
# SOVERSION ${VERSION_MAJOR}
# OUTPUT_NAME "libscopi")
if(SCOPI_USE_MKL)
target_link_libraries(scopi PUBLIC MKL::MKL)
target_compile_definitions(scopi PUBLIC SCOPI_USE_MKL)
endif()

if(SCOPI_USE_TBB)
target_link_libraries(scopi PUBLIC TBB::tbb)
Expand Down
25 changes: 5 additions & 20 deletions demos/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,27 +1,12 @@
set(SCOPI_EXAMPLES
# two_ellipsoids.cpp
# two_ellipsoids_asymmetrical_2d.cpp
# two_ellipsoids_asymmetrical_3d.cpp
# two_ellipsoids_spheres_2d.cpp
# two_ellipsoids_spheres_3d.cpp
# test_quentin.cpp
two_ellipsoids.cpp
two_spheres.cpp
# two_spheres_periodic.cpp
# sphere_plan.cpp
# viscosity.cpp
# two_spheres_viscosity.cpp
# two_worms.cpp
# three_worms_periodic.cpp
# convergence_scheme.cpp
# box_spheres_3d.cpp
# pile_of_sand_spheres.cpp
# pile_of_sand_superellipsoids.cpp
sphere_plane.cpp
two_worms.cpp
box_spheres_3d.cpp
pile_of_sand_spheres.cpp
segment.cpp
# worms_simulation.cpp
)

include(generator)
generate_executable(${SCOPI_EXAMPLES})

# add_subdirectory(critical)
# add_subdirectory(proceeding)
52 changes: 22 additions & 30 deletions demos/box_spheres_3d.cpp
Original file line number Diff line number Diff line change
@@ -1,29 +1,22 @@
#include <cstddef>
#include <scopi/objects/types/plan.hpp>
#include <random>
#include <scopi/objects/types/plane.hpp>
#include <scopi/objects/types/sphere.hpp>
#include <scopi/property.hpp>
#include <scopi/solver.hpp>
#include <scopi/vap/vap_fpd.hpp>
#include <vector>
#include <xtensor/xmath.hpp>

#include <scopi/contact/contact_brute_force.hpp>
#include <scopi/solvers/OptimMosek.hpp>
#include <scopi/solvers/OptimProjectedGradient.hpp>
#include <scopi/solvers/gradient/apgd_ar.hpp>
#include <scopi/vap/vap_fpd.hpp>

int main()
{
#ifdef SCOPI_USE_MKL
plog::init(plog::info, "box_spheres_3d_very_large_apgd_ar.log");

constexpr std::size_t dim = 3;
double PI = xt::numeric_constants<double>::PI;
scopi::initialize("Spheres into a box simulation");

std::size_t total_it = 100;
std::size_t total_it = 1000;
double width_box = 10.;
std::size_t n = 50; // n^3 spheres
double g = 1.;
// std::size_t n = 50; // n^3 spheres
std::size_t n = 10; // n^3 spheres
double g = 1.;

double r0 = width_box / n / 2.;
double dt = 0.2 * 0.9 * r0 / (2. * g); ////// dt = 0.2*r/(sqrt(2*width_box*g))
Expand All @@ -38,31 +31,31 @@ int main()
const xt::xtensor_fixed<double, xt::xshape<dim>> axes_y({0., 1., 0.});
const xt::xtensor_fixed<double, xt::xshape<dim>> axes_z({0., 0., 1.});

scopi::plan<dim> p_left(
scopi::plane<dim> p_left(
{
{0., 0., 0.}
},
{scopi::quaternion(0., axes_z)});
particles.push_back(p_left, scopi::property<dim>().deactivate());
scopi::plan<dim> p_right(
scopi::plane<dim> p_right(
{
{width_box + 2 * r0, 0., 0.}
},
{scopi::quaternion(0., axes_z)});
particles.push_back(p_right, scopi::property<dim>().deactivate());
scopi::plan<dim> p_horizontal(
scopi::plane<dim> p_horizontal(
{
{0., 0., 0.}
},
{scopi::quaternion(PI / 2., axes_z)});
particles.push_back(p_horizontal, scopi::property<dim>().deactivate());
scopi::plan<dim> p_front(
scopi::plane<dim> p_front(
{
{0., 0., 0.}
},
{scopi::quaternion(PI / 2., axes_y)});
particles.push_back(p_front, scopi::property<dim>().deactivate());
scopi::plan<dim> p_back(
scopi::plane<dim> p_back(
{
{0., 0., width_box + 2 * r0}
},
Expand Down Expand Up @@ -95,16 +88,15 @@ int main()
}
}

scopi::ScopiSolver<dim, scopi::OptimProjectedGradient<scopi::DryWithoutFriction, scopi::apgd_ar>, scopi::contact_kdtree, scopi::vap_fpd>
solver(particles, dt);
auto params = solver.get_params();
params.solver_params.output_frequency = 99;
params.optim_params.tol_l = 1e-3;
params.optim_params.rho = rho;
params.contact_params.dmax = 0.9 * r0;
params.contact_params.kd_tree_radius = params.contact_params.dmax + 2. * 0.9 * r0;
scopi::ScopiSolver<dim, scopi::NoFriction, scopi::OptimGradient<scopi::apgd>, scopi::contact_kdtree, scopi::vap_fpd> solver(particles);
auto params = solver.get_params();
// params.solver_params.output_frequency = 99;
params.optim_params.tolerance = 1e-3;
params.optim_params.alpha = rho;
params.contact_method_params.dmax = 0.9 * r0;
params.contact_method_params.kd_tree_radius = params.contact_method_params.dmax + 2. * 0.9 * r0;

solver.run(dt, total_it);

solver.run(total_it);
#endif
return 0;
}
84 changes: 0 additions & 84 deletions demos/convergence_scheme.cpp

This file was deleted.

4 changes: 2 additions & 2 deletions demos/critical/2d_case.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ int main()
//
// }

scopi::ScopiSolver<dim> solver(particles, dt);
solver.run(total_it);
scopi::ScopiSolver<dim> solver(particles);
solver.run(dt, total_it);

return 0;
}
Expand Down
4 changes: 2 additions & 2 deletions demos/critical/2d_case_no_overlap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,6 @@ int main()
}
}

scopi::ScopiSolver<dim> solver(particles, dt);
solver.run(total_it);
scopi::ScopiSolver<dim> solver(particles);
solver.run(dt, total_it);
}
4 changes: 2 additions & 2 deletions demos/critical/2d_case_no_velocity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,6 @@ int main()
}
}

scopi::ScopiSolver<dim> solver(particles, dt);
solver.run(total_it);
scopi::ScopiSolver<dim> solver(particles);
solver.run(dt, total_it);
}
4 changes: 2 additions & 2 deletions demos/critical/2d_case_spheres.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,6 @@ int main()
}
}

scopi::ScopiSolver<dim> solver(particles, dt);
solver.run(total_it);
scopi::ScopiSolver<dim> solver(particles);
solver.run(dt, total_it);
}
4 changes: 2 additions & 2 deletions demos/critical/3d_case.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@ int main()
particles.push_back(s1, prop1);
particles.push_back(s2, prop2);

scopi::ScopiSolver<dim> solver(particles, dt);
solver.run(total_it);
scopi::ScopiSolver<dim> solver(particles);
solver.run(dt, total_it);

return 0;
}
4 changes: 2 additions & 2 deletions demos/critical/worms.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ int main()
}));
}

scopi::ScopiSolver<dim, scopi::OptimMosek<>> solver(particles, dt);
solver.run(total_it);
scopi::ScopiSolver<dim, scopi::OptimMosek<>> solver(particles);
solver.run(dt, total_it);

return 0;
}
Loading
Loading