multisplit.h
Go to the documentation of this file.00001 #ifndef multisplit_h
00002 #define multisplit_h
00003
00004 #include <nrnmpiuse.h>
00005
00006 #if 0
00007
00008 in the classical order, knowing a node means you know the classical parent with
00009 v_parent[node->v_node_index]. Also the effect of the parent on the node equation
00010 is given by NODEB(node) and the effect of the node on the parent equation is
00011 NODEA(node).
00012
00013 One major circumstance of the multisplit order is that a parent child may
00014 be reversed. For a single sid0, this happens on the path between the classical
00015 root and sid0. If a parent-child has been reversed and given a node we know
00016 the classical parent (presently a child) then at the node
00017 ClassicalB = ClassicalParentPresentA
00018 ClassicalA = ClassicalParentPresentB
00019
00020 The other aspect of multisplit, both sid0 and sid1 exist, is more complex
00021 because of the two parent nature of the center node on the path between sid0
00022 and sid1. Our convention is that v_parent[centernode->v_node_index] is toward
00023 sid0. And the other parent is
00024 v_parent[c2sid1_parent_index[centernode->v_node_index - backbone_center_begin]]
00025 So we need to know what Classical A and B are for the center node and its
00026 two parents. A center node may be reversed or not with respect to its classical
00027 parent. One of the present parents may or may not be its classical parent.
00028
00029 #endif
00030
00031 #if defined(__cplusplus)
00032 extern "C" {
00033 #endif
00034
00035 #if 1 || PARANEURON
00036 extern double* nrn_classicalNodeA(Node* n);
00037 extern double* nrn_classicalNodeB(Node* n);
00038 #define ClassicalNODEA(n) (*nrn_classicalNodeA(n))
00039 #define ClassicalNODEB(n) (*nrn_classicalNodeB(n))
00040 #else
00041 #define ClassicalNODEA(n) NODEA(n)
00042 #define ClassicalNODEB(n) NODEB(n)
00043 #endif
00044
00045 #if defined(__cplusplus)
00046 }
00047 #endif
00048
00049 #endif