Changeset 2050 for branches/newmole

Show
Ignore:
Timestamp:
05/12/08 16:59:54 (8 months ago)
Author:
rjrw
Message:

Further tests on:

the consistency of the Householder matrix with the Jacobian in
mole_solve

underlying accuracy of projection in and out of the Householder basis
in TestHouseholder?

Location:
branches/newmole/source
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/newmole/source/mole_solve.cpp

    r2044 r2050  
    485485                                } 
    486486                        } 
     487 
    487488                        valarray<double> b2(mole.num_calc); 
    488489                        for(i=0;i<mole.num_calc;i++) 
     
    493494                        { 
    494495                                valarray<double> v(mole.num_calc-nelem), 
    495                                         c(mole.num_calc-nelem), 
     496                                        b3(mole.num_calc-nelem), 
    496497                                        p(mole.num_calc-nelem); 
    497498                                for(i=0;i<mole.num_calc-nelem;i++) 
    498499                                { 
    499500                                        v[i] = u[i+nelem][nelem]; 
    500                                         c[i] = b2[i+nelem]; 
    501                                 } 
    502                                 p = project(c,v,betah[nelem]); 
     501                                        b3[i] = b2[i+nelem]; 
     502                                } 
     503                                p = project(b3,v,betah[nelem]); 
    503504                                for (i=0;i<mole.num_calc-nelem;i++) 
    504505                                { 
     
    513514                        { 
    514515                                fprintf(ioQQQ,"Remain %ld proj %g\n",nelem,b2[nelem]); 
     516                        } 
     517 
     518                        for(long j=0;j<mole.num_calc;++j) 
     519                        { 
     520                                for(i=0;i<mole.num_calc;++i) 
     521                                { 
     522                                        b2[i] = c[j][i]; 
     523                                } 
     524                                for (nelem=ipHYDROGEN;nelem<LIMELM;nelem++) 
     525                                { 
     526                                        valarray<double> v(mole.num_calc-nelem), 
     527                                                b3(mole.num_calc-nelem), 
     528                                                p(mole.num_calc-nelem); 
     529                                        for(i=0;i<mole.num_calc-nelem;i++) 
     530                                        { 
     531                                                v[i] = u[i+nelem][nelem]; 
     532                                                b3[i] = b2[i+nelem]; 
     533                                        } 
     534                                        p = project(b3,v,betah[nelem]); 
     535                                        for (i=0;i<mole.num_calc-nelem;i++) 
     536                                        { 
     537                                                b2[i+nelem] = p[i]; 
     538                                        } 
     539                                } 
     540                                fprintf(ioQQQ,"Eqn... %ld\n",j); 
     541                                for (nelem=ipHYDROGEN;nelem<LIMELM;nelem++) 
     542                                { 
     543                                        fprintf(ioQQQ,"Eqqq %ld proj %g\n",nelem,b2[nelem]); 
     544                                } 
     545                                for (;nelem<mole.num_calc;nelem++) 
     546                                { 
     547                                        fprintf(ioQQQ,"Remn %ld proj %g\n",nelem,b2[nelem]); 
     548                                } 
    515549                        } 
    516550                } 
  • branches/newmole/source/TestHouseholder.cpp

    r2041 r2050  
    4343        TEST_FIXTURE(HouseholderFixture,TestHouseholderOther) 
    4444        { 
    45                 valarray<double> v(x.size()),r(x.size()); 
     45                valarray<double> v(x.size()),r(x.size()),b(x.size()); 
    4646                double beta; 
    4747 
     
    5050                CHECK_CLOSE((y*y).sum(),(r*r).sum(),1e-6); 
    5151                CHECK_CLOSE((y*x).sum()/sqrt((x*x).sum()),r[0],1e-6); 
     52                b = project(r,v,beta); 
     53                CHECK_CLOSE((b*y).sum(),(y*y).sum(),1e-6); 
    5254        } 
    5355        TEST_FIXTURE(HouseholderFixture,TestHouseholderProj2)