NEURON
multisplit.cpp File Reference
#include <../../nrnconf.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <InterViews/resource.h>
#include <OS/list.h>
#include <nrnoc2iv.h>
#include <nrnmpi.h>
#include <multisplit.h>
#include <unordered_map>
#include <memory>
#include <multisplitcontrol.h>

Go to the source code of this file.

Classes

struct  Area2Buf
 
struct  Area2RT
 
class  ReducedTree
 
class  MultiSplit
 
struct  MultiSplitTransferInfo
 

Macros

#define A(i)   VEC_A(i)
 
#define B(i)   VEC_B(i)
 
#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 * >
 

Functions

void nrnmpi_multisplit (Section *, double x, int sid, int backbone_style)
 
void setup_topology ()
 
void nrn_cachevec (int)
 
void nrn_matrix_node_free ()
 
voidnrn_multisplit_triang (NrnThread *)
 
voidnrn_multisplit_reduce_solve (NrnThread *)
 
voidnrn_multisplit_bksub (NrnThread *)
 
void nrn_multisplit_ptr_update ()
 
void nrnmpi_multisplit_clear ()
 
void nrn_multisplit_nocap_v ()
 
void nrn_multisplit_nocap_v_part1 (NrnThread *)
 
void nrn_multisplit_nocap_v_part2 (NrnThread *)
 
void nrn_multisplit_nocap_v_part3 (NrnThread *)
 
void nrn_multisplit_adjust_rhs (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 ()
 
 declarePtrList (MultiSplitList, MultiSplit) implementPtrList(MultiSplitList
 
double * nrn_classicalNodeA (Node *nd)
 
double * nrn_classicalNodeB (Node *nd)
 

Variables

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

Macro Definition Documentation

◆ A

#define A (   i)    VEC_A(i)

Definition at line 61 of file multisplit.cpp.

◆ B

#define B (   i)    VEC_B(i)

Definition at line 62 of file multisplit.cpp.

◆ D

#define D (   i)    VEC_D(i)

Definition at line 63 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 64 of file multisplit.cpp.

◆ S1A

#define S1A (   i)    sid1A[i]

Definition at line 65 of file multisplit.cpp.

◆ S1B

#define S1B (   i)    sid1B[i]

Definition at line 66 of file multisplit.cpp.

Typedef Documentation

◆ Int2IntTable

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

Definition at line 205 of file multisplit.cpp.

◆ MultiSplitTable

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

Definition at line 300 of file multisplit.cpp.

Function Documentation

◆ declarePtrList()

declarePtrList ( MultiSplitList  ,
MultiSplit   
)

◆ multisplit_solve()

void multisplit_solve ( )
static

Definition at line 1838 of file multisplit.cpp.

◆ multisplit_v_setup()

void multisplit_v_setup ( )
static

Definition at line 2950 of file multisplit.cpp.

◆ nrn_cachevec()

void nrn_cachevec ( int  )

Definition at line 2108 of file treeset.cpp.

◆ nrn_classicalNodeA()

double* nrn_classicalNodeA ( Node nd)

Definition at line 3403 of file multisplit.cpp.

◆ nrn_classicalNodeB()

double* nrn_classicalNodeB ( Node nd)

Definition at line 3419 of file multisplit.cpp.

◆ nrn_matrix_node_free()

void nrn_matrix_node_free ( )

Definition at line 1901 of file treeset.cpp.

◆ nrn_multisplit_adjust_rhs()

void nrn_multisplit_adjust_rhs ( NrnThread nt)

Definition at line 1978 of file multisplit.cpp.

◆ nrn_multisplit_bksub()

void* nrn_multisplit_bksub ( NrnThread nt)

Definition at line 1852 of file multisplit.cpp.

◆ nrn_multisplit_nocap_v()

void nrn_multisplit_nocap_v ( )

Definition at line 1908 of file multisplit.cpp.

◆ nrn_multisplit_nocap_v_part1()

void nrn_multisplit_nocap_v_part1 ( NrnThread nt)

Definition at line 1913 of file multisplit.cpp.

◆ nrn_multisplit_nocap_v_part2()

void nrn_multisplit_nocap_v_part2 ( NrnThread nt)

Definition at line 1916 of file multisplit.cpp.

◆ nrn_multisplit_nocap_v_part3()

void nrn_multisplit_nocap_v_part3 ( NrnThread nt)

Definition at line 1919 of file multisplit.cpp.

◆ nrn_multisplit_ptr_update()

void nrn_multisplit_ptr_update ( void  )

Definition at line 1594 of file multisplit.cpp.

◆ nrn_multisplit_reduce_solve()

void* nrn_multisplit_reduce_solve ( NrnThread nt)

Definition at line 1846 of file multisplit.cpp.

◆ nrn_multisplit_triang()

void* nrn_multisplit_triang ( NrnThread nt)

Definition at line 1842 of file multisplit.cpp.

◆ nrnmpi_barrier()

static void nrnmpi_barrier ( )
static

Definition at line 54 of file multisplit.cpp.

◆ nrnmpi_int_allgather()

static void nrnmpi_int_allgather ( int ,
int ,
int   
)
static

Definition at line 49 of file multisplit.cpp.

◆ nrnmpi_int_allgatherv()

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

Definition at line 50 of file multisplit.cpp.

◆ nrnmpi_multisplit()

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

Definition at line 307 of file multisplit.cpp.

◆ nrnmpi_multisplit_clear()

void nrnmpi_multisplit_clear ( )

Definition at line 500 of file multisplit.cpp.

◆ nrnmpi_postrecv_doubles()

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

Definition at line 51 of file multisplit.cpp.

◆ nrnmpi_send_doubles()

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

Definition at line 52 of file multisplit.cpp.

◆ nrnmpi_wait()

static void nrnmpi_wait ( void **  )
static

Definition at line 53 of file multisplit.cpp.

◆ nrnmpi_wtime()

static double nrnmpi_wtime ( )
static

Definition at line 55 of file multisplit.cpp.

◆ setup_topology()

void setup_topology ( )

Definition at line 1736 of file cabcode.cpp.

Variable Documentation

◆ diam_changed

int diam_changed

Definition at line 23 of file cabcode.cpp.

◆ msc_

Definition at line 305 of file multisplit.cpp.

◆ nrn_multisplit_active_

int nrn_multisplit_active_

Definition at line 15 of file multisplit.cpp.

◆ nrn_multisplit_setup_

void(* nrn_multisplit_setup_) ()

Definition at line 46 of file treeset.cpp.

◆ nrn_multisplit_solve_

void(* nrn_multisplit_solve_) ()

Definition at line 71 of file solve.cpp.

◆ nrnmpi_rtcomp_time_

double nrnmpi_rtcomp_time_

Definition at line 33 of file ocbbs.cpp.

◆ nrnmpi_splitcell_wait_

double nrnmpi_splitcell_wait_
static

Definition at line 43 of file multisplit.cpp.

◆ nrnmpi_use

int nrnmpi_use
static

Definition at line 48 of file multisplit.cpp.

◆ t

double t

Definition at line 123 of file init.cpp.

◆ tree_changed

int tree_changed

Definition at line 19 of file cabcode.cpp.