multisplitcontrol.h
Go to the documentation of this file.00001 #ifndef multisplitcontrol_h
00002 #define multisplitcontrol_h
00003
00004 class MultiSplitThread {
00005 public:
00006 MultiSplitThread();
00007 virtual ~MultiSplitThread();
00008
00009 void del_sidA();
00010 void triang(NrnThread*);
00011 void bksub(NrnThread*);
00012 void triang_subtree2backbone(NrnThread*);
00013 void triang_backbone(NrnThread*);
00014 void bksub_backbone(NrnThread*);
00015 void bksub_short_backbone_part1(NrnThread*);
00016 void bksub_subtrees(NrnThread*);
00017 void v_setup(NrnThread*);
00018
00019 double *sid1A, *sid1B;
00020 int* sid0i;
00021
00022 int nbackrt_;
00023 int* backsid_;
00024 int* backAindex_;
00025 int* backBindex_;
00026 int backbone_begin, backbone_long_begin, backbone_interior_begin;
00027 int backbone_sid1_begin, backbone_long_sid1_begin, backbone_end;
00028 int i1, i2, i3;
00029 };
00030
00031 class MultiSplitControl {
00032 public:
00033 MultiSplitControl();
00034 virtual ~MultiSplitControl();
00035
00036 void multisplit_clear();
00037 void multisplit_nocap_v();
00038 void multisplit_nocap_v_part1(NrnThread*);
00039 void multisplit_nocap_v_part2(NrnThread*);
00040 void multisplit_nocap_v_part3(NrnThread*);
00041 void multisplit_adjust_rhs(NrnThread*);
00042 void prstruct();
00043 void reduce_solve();
00044
00045 void multisplit(double, int, int);
00046 void solve();
00047 void reduced_mark(int, int, int, int*, int*, int*);
00048 void matrix_exchange();
00049 void matrix_exchange_nocap();
00050 void v_setup();
00051 void exchange_setup();
00052 void rt_map_update();
00053 void del_msti();
00054 void pmat(boolean full = false);
00055 void pmatf(boolean full = false);
00056 void pmat1(const char*);
00057 void pexch();
00058
00059 int narea2buf_, narea2rt_;
00060 Area2Buf* area2buf_;
00061 Area2RT* area2rt_;
00062
00063 int nthost_;
00064 int ihost_reduced_long_, ihost_short_long_;
00065 MultiSplitTransferInfo* msti_;
00066 int tbsize;
00067 int ndbsize;
00068 double* trecvbuf_;
00069 double* tsendbuf_;
00070 int* nodeindex_buffer_;
00071 int* nodeindex_buffer_th_;
00072 int* nodeindex_rthost_;
00073 int narea_;
00074 int iarea_short_long_;
00075 int* buf_area_indices_;
00076 int* area_node_indices_;
00077
00078 int nrtree_;
00079 ReducedTree** rtree_;
00080
00081 MultiSplitTable* classical_root_to_multisplit_;
00082 MultiSplitList* multisplit_list_;
00083
00084 int nth_;
00085 MultiSplitThread* mth_;
00086 };
00087
00088 #endif