21 extern void testHinesMatrix();
22 extern void testHSolvePassive();
23 extern void testHSolveUtils();
24 extern void runRallpackBenchmarks();
38 const vector< TreeNodeStruct >& tree,
40 vector< vector< double > >& matrix )
42 unsigned int size = tree.size();
47 vector< double > CmByDt;
49 for (
unsigned int i = 0; i < tree.size(); i++ ) {
50 CmByDt.push_back( tree[ i ].Cm / ( dt / 2.0 ) );
51 Ga.push_back( 2.0 / tree[ i ].Ra );
58 vector< vector< unsigned int > > coupled;
59 for (
unsigned int i = 0; i < tree.size(); i++ )
60 if ( tree[ i ].children.size() >= 1 ) {
61 coupled.push_back( tree[ i ].children );
62 coupled.back().push_back( i );
66 matrix.resize( size );
67 for (
unsigned int i = 0; i < size; ++i )
68 matrix[ i ].
resize( size );
71 for (
unsigned int i = 0; i < size; i++ )
72 matrix[ i ][ i ] = CmByDt[ i ] + 1.0 / tree[ i ].Rm;
75 vector< vector< unsigned int > >::iterator
group;
76 vector< unsigned int >::iterator ic;
77 for ( group = coupled.begin(); group != coupled.end(); ++
group ) {
80 for ( ic = group->begin(); ic != group->end(); ++ic )
83 for ( ic = group->begin(); ic != group->end(); ++ic ) {
86 matrix[ *ic ][ *ic ] += gi * ( 1.0 - gi / gsum );
92 vector< unsigned int >::iterator jc;
93 for ( group = coupled.begin(); group != coupled.end(); ++
group ) {
96 for ( ic = group->begin(); ic != group->end(); ++ic )
99 for ( ic = group->begin(); ic != group->end() - 1; ++ic ) {
100 for ( jc = ic + 1; jc != group->end(); ++jc ) {
101 gij = Ga[ *ic ] * Ga[ *jc ] / gsum;
103 matrix[ *ic ][ *jc ] = -gij;
104 matrix[ *jc ][ *ic ] = -gij;
void makeFullMatrix(const vector< TreeNodeStruct > &tree, double dt, vector< vector< double > > &matrix)
static SrcFinfo0 * group()
vector< vector< T > > resize(vector< vector< T > >table, unsigned int n, T init)