NEURON
multisplit.cpp File Reference
#include <../../nrnconf.h>
#include <InterViews/resource.h>
#include "cabcode.h"
#include "nrn_ansi.h"
#include "nrndae_c.h"
#include "nrniv_mf.h"
#include <nrnoc2iv.h>
#include <nrnmpi.h>
#include <multisplit.h>
#include <cerrno>
#include <cstdio>
#include <cstdlib>
#include <memory>
#include <unordered_map>
#include <vector>
#include <multisplitcontrol.h>

Go to the source code of this file.

Classes

struct  Area2Buf
 
struct  Area2RT
 
class  ReducedTree
 
class  MultiSplit
 
struct  MultiSplitTransferInfo
 

Macros

#define D(i)   vec_d[i]
 
#define RHS(i)   vec_rhs[i]
 
#define S1A(i)   sid1A[i]
 
#define S1B(i)   sid1B[i]
 
#define EXCHANGE_ON   1
 
#define EXCHANGE_ON   1
 

Typedefs

using Int2IntTable = std::unordered_map< int, int >
 
using MultiSplitTable = std::unordered_map< Node *, MultiSplit * >
 
using MultiSplitList = std::vector< MultiSplit * >
 

Functions

void nrnmpi_multisplit (Section *, double x, int sid, int backbone_style)
 
void * nrn_multisplit_triang (NrnThread *)
 
void * nrn_multisplit_reduce_solve (NrnThread *)
 
void * nrn_multisplit_bksub (NrnThread *)
 
static void multisplit_v_setup ()
 
static void multisplit_solve ()
 
static void nrnmpi_int_allgather (int *, int *, int)
 
static void nrnmpi_int_allgatherv (int *, int *, int *, int *)
 
static void nrnmpi_postrecv_doubles (double *, int, int, int, void **)
 
static void nrnmpi_send_doubles (double *, int, int, int)
 
static void nrnmpi_wait (void **)
 
static void nrnmpi_barrier ()
 
static double nrnmpi_wtime ()
 
void nrnmpi_multisplit_clear ()
 
void nrn_multisplit_ptr_update ()
 
void nrn_multisplit_nocap_v ()
 
void nrn_multisplit_nocap_v_part1 (NrnThread *nt)
 
void nrn_multisplit_nocap_v_part2 (NrnThread *nt)
 
void nrn_multisplit_nocap_v_part3 (NrnThread *nt)
 
void nrn_multisplit_adjust_rhs (NrnThread *nt)
 
double * nrn_classicalNodeA (Node *nd)
 
double * nrn_classicalNodeB (Node *nd)
 

Variables

int nrn_multisplit_active_
 
void(* nrn_multisplit_setup_ )()
 
double t
 
void(* nrn_multisplit_solve_ )()
 
double nrnmpi_rtcomp_time_
 
static double nrnmpi_splitcell_wait_
 
static int nrnmpi_use
 
static MultiSplitControlmsc_
 

Macro Definition Documentation

◆ D

#define D (   i)    vec_d[i]

Definition at line 56 of file multisplit.cpp.

◆ EXCHANGE_ON [1/2]

#define EXCHANGE_ON   1

◆ EXCHANGE_ON [2/2]

#define EXCHANGE_ON   1

◆ RHS

#define RHS (   i)    vec_rhs[i]

Definition at line 57 of file multisplit.cpp.

◆ S1A

#define S1A (   i)    sid1A[i]

Definition at line 58 of file multisplit.cpp.

◆ S1B

#define S1B (   i)    sid1B[i]

Definition at line 59 of file multisplit.cpp.

Typedef Documentation

◆ Int2IntTable

using Int2IntTable = std::unordered_map<int, int>

Definition at line 198 of file multisplit.cpp.

◆ MultiSplitList

using MultiSplitList = std::vector<MultiSplit*>

Definition at line 295 of file multisplit.cpp.

◆ MultiSplitTable

using MultiSplitTable = std::unordered_map<Node*, MultiSplit*>

Definition at line 294 of file multisplit.cpp.

Function Documentation

◆ multisplit_solve()

void multisplit_solve ( )
static

Definition at line 1906 of file multisplit.cpp.

◆ multisplit_v_setup()

void multisplit_v_setup ( )
static

Definition at line 3084 of file multisplit.cpp.

◆ nrn_classicalNodeA()

double* nrn_classicalNodeA ( Node nd)

Definition at line 3573 of file multisplit.cpp.

◆ nrn_classicalNodeB()

double* nrn_classicalNodeB ( Node nd)

Definition at line 3589 of file multisplit.cpp.

◆ nrn_multisplit_adjust_rhs()

void nrn_multisplit_adjust_rhs ( NrnThread nt)

Definition at line 2056 of file multisplit.cpp.

◆ nrn_multisplit_bksub()

void* nrn_multisplit_bksub ( NrnThread nt)

Definition at line 1920 of file multisplit.cpp.

◆ nrn_multisplit_nocap_v()

void nrn_multisplit_nocap_v ( )

Definition at line 1976 of file multisplit.cpp.

◆ nrn_multisplit_nocap_v_part1()

void nrn_multisplit_nocap_v_part1 ( NrnThread nt)

Definition at line 1981 of file multisplit.cpp.

◆ nrn_multisplit_nocap_v_part2()

void nrn_multisplit_nocap_v_part2 ( NrnThread nt)

Definition at line 1984 of file multisplit.cpp.

◆ nrn_multisplit_nocap_v_part3()

void nrn_multisplit_nocap_v_part3 ( NrnThread nt)

Definition at line 1987 of file multisplit.cpp.

◆ nrn_multisplit_ptr_update()

void nrn_multisplit_ptr_update ( void  )

Definition at line 1624 of file multisplit.cpp.

◆ nrn_multisplit_reduce_solve()

void* nrn_multisplit_reduce_solve ( NrnThread nt)

Definition at line 1914 of file multisplit.cpp.

◆ nrn_multisplit_triang()

void* nrn_multisplit_triang ( NrnThread nt)

Definition at line 1910 of file multisplit.cpp.

◆ nrnmpi_barrier()

static void nrnmpi_barrier ( )
static

Definition at line 47 of file multisplit.cpp.

◆ nrnmpi_int_allgather()

static void nrnmpi_int_allgather ( int *  ,
int *  ,
int   
)
static

Definition at line 42 of file multisplit.cpp.

◆ nrnmpi_int_allgatherv()

static void nrnmpi_int_allgatherv ( int *  ,
int *  ,
int *  ,
int *   
)
static

Definition at line 43 of file multisplit.cpp.

◆ nrnmpi_multisplit()

void nrnmpi_multisplit ( Section sec,
double  x,
int  sid,
int  backbone_style 
)

Definition at line 300 of file multisplit.cpp.

◆ nrnmpi_multisplit_clear()

void nrnmpi_multisplit_clear ( )

Definition at line 499 of file multisplit.cpp.

◆ nrnmpi_postrecv_doubles()

static void nrnmpi_postrecv_doubles ( double *  ,
int  ,
int  ,
int  ,
void **   
)
static

Definition at line 44 of file multisplit.cpp.

◆ nrnmpi_send_doubles()

static void nrnmpi_send_doubles ( double *  ,
int  ,
int  ,
int   
)
static

Definition at line 45 of file multisplit.cpp.

◆ nrnmpi_wait()

static void nrnmpi_wait ( void **  )
static

Definition at line 46 of file multisplit.cpp.

◆ nrnmpi_wtime()

static double nrnmpi_wtime ( )
static

Definition at line 48 of file multisplit.cpp.

Variable Documentation

◆ msc_

MultiSplitControl* msc_
static

Definition at line 298 of file multisplit.cpp.

◆ nrn_multisplit_active_

int nrn_multisplit_active_

Definition at line 20 of file multisplit.cpp.

◆ nrn_multisplit_setup_

void(* nrn_multisplit_setup_) () ( )
extern

Definition at line 50 of file treeset.cpp.

◆ nrn_multisplit_solve_

void(* nrn_multisplit_solve_) () ( )
extern

Definition at line 76 of file solve.cpp.

◆ nrnmpi_rtcomp_time_

double nrnmpi_rtcomp_time_
extern

Definition at line 31 of file ocbbs.cpp.

◆ nrnmpi_splitcell_wait_

double nrnmpi_splitcell_wait_
static

Definition at line 36 of file multisplit.cpp.

◆ nrnmpi_use

int nrnmpi_use
static

Definition at line 41 of file multisplit.cpp.

◆ t

double t
extern

Definition at line 57 of file cvodeobj.cpp.