Ignore:
Timestamp:
May 23, 2008, 9:17:19 AM (17 years ago)
Author:
Frederik Heber <heber@…>
Children:
6145aa7
Parents:
6c96f4
Message:

Lots of for loops now count in reverse order where it does not matter, some 3 -> NDIM

for(i=0;i<var;i++) is slower than for (i=var;i--;) if the order of the i's is not important (note: i-- is also a value and it stops when on i == 0 automatically)
in builder.cpp there were some remnant 3 actually meant to be NDIM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/datacreator.cpp

    r6c96f4 rf75030  
    4848  output << "#Order\tFrag.No.\t" << Energy.Header << endl;
    4949  for (int BondOrder=0;BondOrder<KeySet.Order;BondOrder++) {
    50     for(int i=0;i<KeySet.FragmentsPerOrder[BondOrder];i++) {
    51       for(int j=0;j<Energy.RowCounter[ KeySet.OrderSet[BondOrder][i] ];j++)
    52         for(int k=0;k<Energy.ColumnCounter;k++)
     50    for(int i=KeySet.FragmentsPerOrder[BondOrder];i--;) {
     51      for(int j=Energy.RowCounter[ KeySet.OrderSet[BondOrder][i] ];j--;)
     52        for(int k=Energy.ColumnCounter;k--;)
    5353          Energy.Matrix[Energy.MatrixCounter][j][k] -= EnergyFragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k];
    5454    }
     
    8989        }
    9090        if (j != -1)
    91           for(int k=0;k<Force.ColumnCounter;k++) {
     91          for(int k=Force.ColumnCounter;k--;) {
    9292            Force.Matrix[Force.MatrixCounter][j][k] += ForceFragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][l][k];
    9393          }
     
    136136void CreateMaxFragmentOrder(class MatrixContainer &Fragments, class KeySetsContainer &KeySet, int BondOrder)
    137137{
    138   for(int j=0;j<Fragments.RowCounter[ Fragments.MatrixCounter ];j++) {
    139     for(int i=0;i<KeySet.FragmentsPerOrder[BondOrder];i++) {
     138  for(int j=Fragments.RowCounter[ Fragments.MatrixCounter ];j--;) {
     139    for(int i=KeySet.FragmentsPerOrder[BondOrder];i--;) {
    140140      if (fabs(Fragments.Matrix[ Fragments.MatrixCounter ][j][1]) < fabs(Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][1])) {
    141         for (int k=0;k<Fragments.ColumnCounter;k++)
     141        for (int k=Fragments.ColumnCounter;k--;)
    142142          Fragments.Matrix[ Fragments.MatrixCounter ][j][k] = Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k];
    143143      }
     
    156156    int i=0;
    157157    do {  // first get a minimum value unequal to 0
    158       for (int k=0;k<Fragments.ColumnCounter;k++)
     158      for (int k=Fragments.ColumnCounter;k--;)
    159159        Fragments.Matrix[ Fragments.MatrixCounter ][j][k] = Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k];
    160160      i++;
     
    162162    for(;i<KeySet.FragmentsPerOrder[BondOrder];i++) { // then find lowest
    163163      if (fabs(Fragments.Matrix[ Fragments.MatrixCounter ][j][1]) > fabs(Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][1])) {
    164         for (int k=0;k<Fragments.ColumnCounter;k++)
     164        for (int k=Fragments.ColumnCounter;k--;)
    165165          Fragments.Matrix[ Fragments.MatrixCounter ][j][k] = Fragments.Matrix[ KeySet.OrderSet[BondOrder][i] ][j][k];
    166166      }
     
    211211void CreateMinimumForce(class MatrixContainer &Force, int MatrixNumber)
    212212{
    213   for (int l=0;l<Force.ColumnCounter;l++)
     213  for (int l=Force.ColumnCounter;l--;)
    214214    Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] = 0.;
    215215  for (int l=5;l<Force.ColumnCounter;l+=3) {
     
    217217    int k=0;
    218218    do {
    219       for (int m=0;m<3;m++) {
     219      for (int m=NDIM;m--;) {
    220220        stored += Force.Matrix[MatrixNumber][ k ][l+m]
    221221              * Force.Matrix[MatrixNumber][ k ][l+m];
     
    226226    for (;k<Force.RowCounter[MatrixNumber];k++) {
    227227      double tmp = 0;
    228       for (int m=0;m<3;m++)
     228      for (int m=NDIM;m--;)
    229229        tmp += Force.Matrix[MatrixNumber][ k ][l+m]
    230230              * Force.Matrix[MatrixNumber][ k ][l+m];
    231231      if ((fabs(tmp) > MYEPSILON) && (tmp < stored)) {  // current force is greater than stored
    232         for (int m=0;m<3;m++)
     232        for (int m=NDIM;m--;)
    233233          Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l+m]  = Force.Matrix[MatrixNumber][ k ][l+m];
    234234        stored = tmp;
     
    246246{
    247247  int divisor = 0;
    248   for (int l=0;l<Force.ColumnCounter;l++)
     248  for (int l=Force.ColumnCounter;l--;)
    249249    Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] = 0.;
    250250  for (int l=5;l<Force.ColumnCounter;l+=3) {
    251251    double tmp = 0;
    252     for (int k=0;k<Force.RowCounter[MatrixNumber];k++) {
     252    for (int k=Force.RowCounter[MatrixNumber];k--;) {
    253253      double norm = 0.;
    254       for (int m=0;m<3;m++)
     254      for (int m=NDIM;m--;)
    255255        norm += Force.Matrix[MatrixNumber][ k ][l+m]
    256256              * Force.Matrix[MatrixNumber][ k ][l+m];
     
    272272  for (int l=5;l<Force.ColumnCounter;l+=3) {
    273273    double stored = 0;
    274     for (int k=0;k<Force.RowCounter[MatrixNumber];k++) {
     274    for (int k=Force.RowCounter[MatrixNumber];k--;) {
    275275      double tmp = 0;
    276       for (int m=0;m<3;m++)
     276      for (int m=NDIM;m--;)
    277277        tmp += Force.Matrix[MatrixNumber][ k ][l+m]
    278278              * Force.Matrix[MatrixNumber][ k ][l+m];
    279279      if (tmp > stored) {  // current force is greater than stored
    280         for (int m=0;m<3;m++)
     280        for (int m=NDIM;m--;)
    281281          Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l+m]  = Force.Matrix[MatrixNumber][ k ][l+m];
    282282        stored = tmp;
     
    293293void CreateVectorSumForce(class MatrixContainer &Force, int MatrixNumber)
    294294{
    295   for (int l=0;l<Force.ColumnCounter;l++)
     295  for (int l=Force.ColumnCounter;l--;)
    296296    Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] = 0.;
    297297  for (int l=5;l<Force.ColumnCounter;l++) {
    298     for (int k=0;k<Force.RowCounter[MatrixNumber];k++)
     298    for (int k=Force.RowCounter[MatrixNumber];k--;)
    299299      Force.Matrix[MatrixNumber][ Force.RowCounter[MatrixNumber] ][l] += Force.Matrix[MatrixNumber][k][l];
    300300  }
     
    423423  line >> item;
    424424  line >> item;
    425   for (int i=7; i< Force.ColumnCounter;i+=3) {
     425  for (int i=7; i< Force.ColumnCounter;i+=NDIM) {
    426426    line >> item;
    427427    item[strlen(item)-1] = '\0';  // kill residual index char (the '0')
     
    452452  line >> item;
    453453  line >> item;
    454   for (int i=7; i< Force.ColumnCounter;i+=3) {
     454  for (int i=7; i< Force.ColumnCounter;i+=NDIM) {
    455455    line >> item;
    456456    item[strlen(item)-1] = '\0';  // kill residual index char (the '0')
     
    482482  line >> item;
    483483  line >> item;
    484   for (int i=7; i< Force.ColumnCounter;i+=3) {
     484  for (int i=7; i< Force.ColumnCounter;i+=NDIM) {
    485485    line >> item;
    486486    item[strlen(item)-1] = '\0';  // kill residual index char (the '0')
     
    512512  line >> item;
    513513  line >> item;
    514   for (int i=7; i< Force.ColumnCounter;i+=3) {
     514  for (int i=7; i< Force.ColumnCounter;i+=NDIM) {
    515515    line >> item;
    516516    item[strlen(item)-1] = '\0';  // kill residual index char (the '0')
Note: See TracChangeset for help on using the changeset viewer.