101 #include "vrecitem.h"
130 char* (*nrnpy_nrncore_arg_p_)(
double tstop);
150 static void part2(
const char*);
187 size_t rankbytes = 0;
188 static int bbcore_dparam_size_size = -1;
218 return {rankbytes,
std::move(sorted_token)};
221 static void part2(
const char* path) {
254 px[
i] = double(cgs[
i].group_id);
272 #if defined(HAVE_DLFCN_H)
277 int result = (*nrnpy_nrncore_enable_value_p_)();
286 int result = (*nrnpy_nrncore_file_mode_value_p_)();
301 bool corenrn_skip_write_model_to_disk =
static_cast<std::string
>(arg).
find(
302 "--skip-write-model-to-disk") != std::string::npos;
307 if (!corenrn_skip_write_model_to_disk) {
314 return get_coreneuron_handle();
315 }
catch (std::runtime_error
const& e) {
321 check_coreneuron_compatibility(
handle);
327 using launcher_t = int (*)(int, int, int, int,
const char*,
const char*, int);
328 auto*
const coreneuron_launcher =
reinterpret_cast<launcher_t
>(
330 if (!coreneuron_launcher) {
343 if (!corenrn_skip_write_model_to_disk) {
367 if (!corenrn_skip_write_model_to_disk) {
385 std::string find_datpath_in_arguments(
const std::string& coreneuron_arguments) {
387 std::stringstream ss(coreneuron_arguments);
390 getline(ss, arg,
' ');
391 while (arg !=
"--datpath") {
392 getline(ss, arg,
' ');
395 getline(ss, arg,
' ');
404 char* args = (*nrnpy_nrncore_arg_p_)(tstop);
406 auto args_as_str =
static_cast<std::string
>(args);
410 auto corenrn_skip_write_model_to_disk =
411 args_as_str.find(
"--skip-write-model-to-disk") != std::string::npos;
412 if (file_mode && !corenrn_skip_write_model_to_disk) {
413 std::string CORENRN_DATA_DIR =
"corenrn_data";
414 if (args_as_str.find(
"--datpath") != std::string::npos) {
415 CORENRN_DATA_DIR = find_datpath_in_arguments(args);
429 if (!corenrn_skip_write_model_to_disk) {
static void nrnmpi_barrier()
static void clean_deferred_netcons()
static void clean_deferred_type2artml()
static void mk_tml_with_art(neuron::model_sorted_token const &cache_token, CellGroup *)
static void setup_nrn_has_net_event()
static size_t get_mla_rankbytes(CellGroup *)
static void datumtransform(CellGroup *)
static void mk_cellgroups(neuron::model_sorted_token const &cache_token, CellGroup *)
DLFCN_EXPORT int dlclose(void *handle)
DLFCN_NOINLINE DLFCN_EXPORT void * dlsym(void *handle, const char *name)
int hoc_is_object_arg(int narg)
void vector_resize(IvocVect *v, int n)
int hoc_is_double_arg(int narg)
IvocVect * vector_arg(int i)
void move(Item *q1, Item *q2, Item *q3)
void append(Item *ql, Item *q)
double * vector_vec(IvocVect *v)
void nrn_spike_exchange(NrnThread *nt)
void hoc_execerror(const char *s1, const char *s2)
void nrn_spike_exchange_init()
handle_interface< non_owning_identifier< storage > > handle
Non-owning handle to a Mechanism instance.
neuron::model_sorted_token nrn_ensure_model_data_are_sorted()
Ensure neuron::container::* data are sorted.
void map_coreneuron_callbacks(void *handle)
Populate function pointers by mapping function pointers for callback.
void write_memb_mech_types(const char *fname)
void create_dir_path(const std::string &path)
create directory with given path
std::string get_filename(const std::string &path, std::string file_name)
void write_globals(const char *fname)
void nrn_write_mapping_info(const char *path, int gid, NrnMappingInfo &minfo)
dump mapping information to gid_3.dat file
void write_nrnthread_task(const char *path, CellGroup *cgs, bool append)
Write all dataset ids to files.dat.
void write_nrnthread(const char *path, NrnThread &nt, CellGroup &cg)
std::string get_write_path()
static void part2(const char *)
int nrncore_run(const char *)
short * nrn_is_artificial_
std::string corenrn_mpi_library
size_t nrnbbcore_gap_write(const char *path, int *group_ids)
size_t write_corenrn_model(const std::string &path)
dump neuron model to given directory path
void(* nrnthread_v_transfer_)(NrnThread *)
int nrncore_is_file_mode()
int nrncore_psolve(double tstop, int file_mode)
int(* nrnpy_nrncore_file_mode_value_p_)()
value of neuron.coreneuron.file_mode as 0, 1 (-1 if error)
char *(* nrnpy_nrncore_arg_p_)(double tstop)
Gets the python string returned by neuron.coreneuron.nrncore_arg(tstop) return a strdup() copy of the...
int * nrn_prop_dparam_size_
NetCvode * net_cvode_instance
int(* nrnpy_nrncore_enable_value_p_)()
value of neuron.coreneuron.enable as 0, 1 (-1 if error)
size_t nrncore_netpar_bytes()
NrnMappingInfo mapinfo
mapping information
std::vector< Memb_func > memb_func
int find(const int, const int, const int, const int, const int)
std::unique_ptr< int[]> dparam_semantics
Compartment mapping information for NrnThread.
size_t size()
number of cells
void clear()
after writing NrnThread to file we remove all previous mapping information, free memory.
Represent main neuron object computed by single thread.
neuron::model_sorted_token sorted_token