Changeset 7f3b9d for src/datacreator.cpp


Ignore:
Timestamp:
May 23, 2008, 9:17:19 AM (17 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
040f93
Parents:
6097ea
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
  • src/datacreator.cpp

    r6097ea r7f3b9d  
    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.