diff --git a/arbor/arbexcept.cpp b/arbor/arbexcept.cpp index 8ea9e1dd141b3abf8b0658fd100708942a2735e4..10da063aa7c527d65edf9df107d845deeb2d2b6b 100644 --- a/arbor/arbexcept.cpp +++ b/arbor/arbexcept.cpp @@ -26,11 +26,16 @@ bad_probe_id::bad_probe_id(cell_member_type probe_id): probe_id(probe_id) {} +gj_unsupported_domain_decomposition::gj_unsupported_domain_decomposition(cell_gid_type gid_0, cell_gid_type gid_1): + arbor_exception(pprintf("No support for gap junctions across domain decomposition groups for gid {} and {}", gid_0, gid_1)), + gid_0(gid_0), + gid_1(gid_1) +{} gj_kind_mismatch::gj_kind_mismatch(cell_gid_type gid_0, cell_gid_type gid_1): - arbor_exception(pprintf("Cells on gid {} and {} connected via gap junction have different cell kinds", gid_0, gid_1)), - gid_0(gid_0), - gid_1(gid_1) + arbor_exception(pprintf("Cells on gid {} and {} connected via gap junction have different cell kinds", gid_0, gid_1)), + gid_0(gid_0), + gid_1(gid_1) {} bad_event_time::bad_event_time(time_type event_time, time_type sim_time): diff --git a/arbor/include/arbor/arbexcept.hpp b/arbor/include/arbor/arbexcept.hpp index cdeaa96d5400b755956b5b9b17c07e274ed00b8f..c30904e0f0b8d42e09713cbc003c7aab70189262 100644 --- a/arbor/include/arbor/arbexcept.hpp +++ b/arbor/include/arbor/arbexcept.hpp @@ -50,6 +50,13 @@ struct gj_kind_mismatch: arbor_exception { cell_gid_type gid_0, gid_1; }; +// Domain decomposition errors: + +struct gj_unsupported_domain_decomposition: arbor_exception { + gj_unsupported_domain_decomposition(cell_gid_type gid_0, cell_gid_type gid_1); + cell_gid_type gid_0, gid_1; +}; + // Simulation errors: struct bad_event_time: arbor_exception { diff --git a/arbor/mc_cell_group.cpp b/arbor/mc_cell_group.cpp index a2cc9f69f1e8a554f39165a6566d14aa2b2d4918..ad6673fff881cc80e263e70bce6f0a12051ee24b 100644 --- a/arbor/mc_cell_group.cpp +++ b/arbor/mc_cell_group.cpp @@ -90,8 +90,7 @@ void mc_cell_group::generate_deps_gids(const recipe& rec, std::vector<cell_gid_t throw bad_cell_description(cell_kind::cable1d_neuron, g); if (!gid_to_loc.count(peer)) { - // actually an error in the domain decomposition... - throw bad_cell_description(cell_kind::cable1d_neuron, g); + throw gj_unsupported_domain_decomposition(g, peer); } if (!visited.count(peer)) {