1616#include < igl/remove_duplicate_vertices.h>
1717#include < igl/boundary_facets.h>
1818#include < igl/remove_unreferenced.h>
19+ #include < stdexcept>
1920
2021#ifdef USE_TBB
2122#include < tbb/task_scheduler_init.h>
@@ -341,6 +342,7 @@ PYBIND11_MODULE(polyfempy, m)
341342 " load_mesh_from_settings" , [](polyfem::State &s, const bool normalize_mesh, const double vismesh_rel_area, const int n_refs, const double boundary_id_threshold) {
342343 init_globals (s);
343344 // py::scoped_ostream_redirect output;
345+ throw std::runtime_error (" Need to convert JSON" );
344346 s.args [" normalize_mesh" ] = normalize_mesh;
345347 s.args [" n_refs" ] = n_refs;
346348 s.args [" boundary_id_threshold" ] = boundary_id_threshold;
@@ -352,6 +354,7 @@ PYBIND11_MODULE(polyfempy, m)
352354 " load_mesh_from_path" , [](polyfem::State &s, const std::string &path, const bool normalize_mesh, const double vismesh_rel_area, const int n_refs, const double boundary_id_threshold) {
353355 init_globals (s);
354356 // py::scoped_ostream_redirect output;
357+ throw std::runtime_error (" Need to convert JSON" );
355358 s.args [" mesh" ] = path;
356359 s.args [" normalize_mesh" ] = normalize_mesh;
357360 s.args [" n_refs" ] = n_refs;
@@ -364,6 +367,7 @@ PYBIND11_MODULE(polyfempy, m)
364367 " load_mesh_from_path_and_tags" , [](polyfem::State &s, const std::string &path, const std::string &bc_tag, const bool normalize_mesh, const double vismesh_rel_area, const int n_refs, const double boundary_id_threshold) {
365368 init_globals (s);
366369 // py::scoped_ostream_redirect output;
370+ throw std::runtime_error (" Need to convert JSON" );
367371 s.args [" mesh" ] = path;
368372 s.args [" bc_tag" ] = bc_tag;
369373 s.args [" normalize_mesh" ] = normalize_mesh;
@@ -384,6 +388,7 @@ PYBIND11_MODULE(polyfempy, m)
384388 s.mesh = std::make_unique<polyfem::mesh::CMesh3D>();
385389 s.mesh ->build_from_matrices (V, F);
386390
391+ throw std::runtime_error (" Need to convert JSON" );
387392 s.args [" normalize_mesh" ] = normalize_mesh;
388393 s.args [" n_refs" ] = n_refs;
389394 s.args [" boundary_id_threshold" ] = boundary_id_threshold;
@@ -403,6 +408,7 @@ PYBIND11_MODULE(polyfempy, m)
403408 s.mesh = std::make_unique<polyfem::mesh::CMesh3D>();
404409 s.mesh ->build_from_matrices (V, F);
405410 s.mesh ->attach_higher_order_nodes (nodes_pos, nodes_indices);
411+ throw std::runtime_error (" Need to convert JSON" );
406412
407413 s.args [" normalize_mesh" ] = normalize_mesh;
408414 s.args [" n_refs" ] = n_refs;
@@ -435,6 +441,7 @@ PYBIND11_MODULE(polyfempy, m)
435441 " set_rhs_from_path" , [](polyfem::State &s, std::string &path) {
436442 init_globals (s);
437443 // py::scoped_ostream_redirect output;
444+ throw std::runtime_error (" Need to convert JSON" );
438445 s.args [" rhs_path" ] = path; },
439446 " Loads the rhs from a file" , py::arg (" path" ))
440447 .def (
@@ -505,10 +512,11 @@ PYBIND11_MODULE(polyfempy, m)
505512 .def (
506513 " export_vtu" , [](polyfem::State &s, std::string &path, bool boundary_only) {
507514 // py::scoped_ostream_redirect output;
508- const bool tmp = s.args [" export" ][" vis_boundary_only" ];
509- s.args [" export" ][" vis_boundary_only" ] = boundary_only;
515+ auto & vis_bnd = s.args [" output" ][" advanced" ][" vis_boundary_only" ];
516+ const bool tmp = vis_bnd;
517+ vis_bnd = boundary_only;
510518 s.save_vtu (path, 0 );
511- s. args [ " export " ][ " vis_boundary_only " ] = tmp; },
519+ vis_bnd = tmp;},
512520 " exports the solution as vtu" , py::arg (" path" ), py::arg (" boundary_only" ) = bool (false ))
513521 // .def("export_wire", [](polyfem::State &s, std::string &path, bool isolines) { py::scoped_ostream_redirect output; s.save_wire(path, isolines); }, "exports wireframe of the mesh", py::arg("path"), py::arg("isolines") = false)
514522
@@ -554,15 +562,15 @@ PYBIND11_MODULE(polyfempy, m)
554562 Eigen::MatrixXi el_id;
555563 Eigen::MatrixXd discr;
556564 Eigen::MatrixXd fun;
557-
558- const bool tmp = s. args [ " export " ][ " vis_boundary_only " ];
559- s. args [ " export " ][ " vis_boundary_only " ] = boundary_only;
565+ auto & vis_bnd = s. args [ " output " ][ " advanced " ][ " vis_boundary_only " ];
566+ const bool tmp = vis_bnd;
567+ vis_bnd = boundary_only;
560568
561569 s.build_vis_mesh (points, tets, el_id, discr);
562570 const bool use_sampler = true ;
563571 s.compute_tensor_value (points.rows (), s.sol , fun, use_sampler, boundary_only);
564572
565- s. args [ " export " ][ " vis_boundary_only " ] = tmp;
573+ vis_bnd = tmp;
566574
567575 return fun; },
568576 " returns the stress tensor on a densly sampled mesh, use 'vismesh_rel_area' to control density" , py::arg (" boundary_only" ) = bool (false ))
@@ -576,14 +584,15 @@ PYBIND11_MODULE(polyfempy, m)
576584 Eigen::MatrixXd discr;
577585 Eigen::MatrixXd fun;
578586
579- const bool tmp = s.args [" export" ][" vis_boundary_only" ];
580- s.args [" export" ][" vis_boundary_only" ] = boundary_only;
587+ auto & vis_bnd = s.args [" output" ][" advanced" ][" vis_boundary_only" ];
588+ const bool tmp = vis_bnd;
589+ vis_bnd = boundary_only;
581590
582591 s.build_vis_mesh (points, tets, el_id, discr);
583592 const bool use_sampler = true ;
584593 s.compute_scalar_value (points.rows (), s.sol , fun, use_sampler, boundary_only);
585594
586- s. args [ " export " ][ " vis_boundary_only " ] = tmp;
595+ vis_bnd = tmp;
587596
588597 return fun; },
589598 " returns the von mises stresses on a densly sampled mesh, use 'vismesh_rel_area' to control density" , py::arg (" boundary_only" ) = bool (false ))
@@ -597,14 +606,15 @@ PYBIND11_MODULE(polyfempy, m)
597606 Eigen::MatrixXd discr;
598607 Eigen::MatrixXd fun, tfun;
599608
600- const bool tmp = s.args [" export" ][" vis_boundary_only" ];
601- s.args [" export" ][" vis_boundary_only" ] = boundary_only;
609+ auto & vis_bnd = s.args [" output" ][" advanced" ][" vis_boundary_only" ];
610+ const bool tmp = vis_bnd;
611+ vis_bnd = boundary_only;
602612
603613 s.build_vis_mesh (points, tets, el_id, discr);
604614 const bool use_sampler = true ;
605615 s.average_grad_based_function (points.rows (), s.sol , fun, tfun, use_sampler, boundary_only);
606616
607- s. args [ " export " ][ " vis_boundary_only " ] = tmp;
617+ vis_bnd = tmp;
608618
609619 return py::make_tuple (fun, tfun); },
610620 " returns the von mises stresses and stress tensor averaged around a vertex on a densly sampled mesh, use 'vismesh_rel_area' to control density" , py::arg (" boundary_only" ) = bool (false ))
@@ -1011,16 +1021,7 @@ PYBIND11_MODULE(polyfempy, m)
10111021
10121022 state.init (in_args);
10131023
1014- if (vertices.size () > 0 && cells.size () > 0 )
1015- {
1016- const bool is2d = vertices.cols () == 2 ;
1017- if (is2d)
1018- state.mesh = std::make_unique<polyfem::mesh::CMesh2D>();
1019- else
1020- state.mesh = std::make_unique<polyfem::mesh::CMesh3D>();
1021- state.mesh ->build_from_matrices (vertices, cells);
1022- }
1023- state.load_mesh ();
1024+ state.load_mesh (vertices, cells);
10241025
10251026 [&]() {
10261027 if (!sidesets_func.is_none ())
0 commit comments