Ignore:
Timestamp:
Oct 30, 2008, 12:55:19 AM (17 years ago)
Author:
Frederik Heber <heber@…>
Children:
25f5089
Parents:
5fd79e
Message:

Implemented analysis of magnetic susceptibilites.

This is very similar to Sigma(PAS), however not with ForceMatrix class but with EnergyMatrix. This is still not finished and yet not working. However, it does not impact on other functions of joiner or analyzer.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/joiner.cpp

    r5fd79e r348b6a  
    3434  ForceMatrix ShieldingFragments;
    3535  ForceMatrix ShieldingPASFragments;
     36  EnergyMatrix Chi;
     37  EnergyMatrix ChiPAS;
     38  EnergyMatrix ChiFragments;
     39  EnergyMatrix ChiPASFragments;
    3640  KeySetsContainer KeySet; 
    3741  stringstream prefix;
     
    8084    if (!Shielding.ParseFragmentMatrix(argv[1], dir, ShieldingSuffix, 1, 0)) return 1;
    8185    if (!ShieldingPAS.ParseFragmentMatrix(argv[1], dir, ShieldingPASSuffix, 1, 0)) return 1;
     86    if (!Chi.ParseFragmentMatrix(argv[1], dir, ChiSuffix, 1, 0)) return 1;
     87    if (!ChiPAS.ParseFragmentMatrix(argv[1], dir, ChiPASSuffix, 1, 0)) return 1;
    8288  }
    8389
     
    98104    if(!Shielding.ParseIndices(argv[1])) return 1;
    99105    if(!ShieldingPAS.ParseIndices(argv[1])) return 1;
     106    if(!Chi.ParseIndices(argv[1])) return 1;
     107    if(!ChiPAS.ParseIndices(argv[1])) return 1;
    100108  }
    101109
    102110  // ---------- Parse the KeySets into an array ---------------
    103111  if (!KeySet.ParseKeySets(argv[1], Force.RowCounter, Force.MatrixCounter)) return 1;
    104 
    105112  if (!KeySet.ParseManyBodyTerms()) return 1;
     113
    106114  if (!EnergyFragments.AllocateMatrix(Energy.Header, Energy.MatrixCounter, Energy.RowCounter, Energy.ColumnCounter)) return 1;
    107115  if (!NoHCorrection) 
     
    113121    if (!ShieldingFragments.AllocateMatrix(Shielding.Header, Shielding.MatrixCounter, Shielding.RowCounter, Shielding.ColumnCounter)) return 1;
    114122    if (!ShieldingPASFragments.AllocateMatrix(ShieldingPAS.Header, ShieldingPAS.MatrixCounter, ShieldingPAS.RowCounter, ShieldingPAS.ColumnCounter)) return 1;
     123    if (!ChiFragments.AllocateMatrix(Chi.Header, Chi.MatrixCounter, Chi.RowCounter, Chi.ColumnCounter)) return 1;
     124    if (!ChiPASFragments.AllocateMatrix(ChiPAS.Header, ChiPAS.MatrixCounter, ChiPAS.RowCounter, ChiPAS.ColumnCounter)) return 1;
    115125  }
    116126 
     
    123133    if(!Shielding.SetLastMatrix(0., 2)) return 1;
    124134    if(!ShieldingPAS.SetLastMatrix(0., 2)) return 1;
     135    if(!Chi.SetLastMatrix(0., 2)) return 1;
     136    if(!ChiPAS.SetLastMatrix(0., 2)) return 1;
    125137  }
    126138
     
    149161    }
    150162    if (periode != NULL) { // also look for PAS values
    151       cout << "Summing shieldings of order " << BondOrder+1 << " ..." << endl;
     163      cout << "Summing shieldings and susceptibilities of order " << BondOrder+1 << " ..." << endl;
    152164      if (!ShieldingFragments.SumSubManyBodyTerms(Shielding, KeySet, BondOrder)) return 1;
    153165      if (!Shielding.SumSubForces(ShieldingFragments, KeySet, BondOrder, 1.)) return 1;
    154166      if (!ShieldingPASFragments.SumSubManyBodyTerms(ShieldingPAS, KeySet, BondOrder)) return 1;
    155167      if (!ShieldingPAS.SumSubForces(ShieldingPASFragments, KeySet, BondOrder, 1.)) return 1;
     168      if (!ChiFragments.SumSubManyBodyTerms(Chi, KeySet, BondOrder)) return 1;
     169      if (!Chi.SumSubForces(ChiFragments, KeySet, BondOrder, 1.)) return 1;
     170      if (!ChiPASFragments.SumSubManyBodyTerms(ChiPAS, KeySet, BondOrder)) return 1;
     171      if (!ChiPAS.SumSubForces(ChiPASFragments, KeySet, BondOrder, 1.)) return 1;
    156172    }
    157173
     
    171187      if (!Shielding.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ShieldingSuffix)) return 1;
    172188      if (!ShieldingPAS.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ShieldingPASSuffix)) return 1;
     189      if (!Chi.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ChiSuffix)) return 1;
     190      if (!ChiPAS.WriteLastMatrix(argv[1], (prefix.str()).c_str(), ChiPASSuffix)) return 1;
    173191    }
    174192  }
     
    198216    prefix << dir << ShieldingPASFragmentSuffix;
    199217    if (!ShieldingPASFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1;
     218    prefix.str(" ");
     219    prefix << dir << ChiFragmentSuffix;
     220    if (!ChiFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1;
     221    prefix.str(" ");
     222    prefix << dir << ChiPASFragmentSuffix;
     223    if (!ChiPASFragments.WriteTotalFragments(argv[1], (prefix.str()).c_str())) return 1;
    200224  }
    201225
     
    209233    if (!Shielding.WriteLastMatrix(argv[1], dir, ShieldingFragmentSuffix)) return 1;
    210234    if (!ShieldingPAS.WriteLastMatrix(argv[1], dir, ShieldingPASFragmentSuffix)) return 1;
     235    if (!Chi.WriteLastMatrix(argv[1], dir, ChiFragmentSuffix)) return 1;
     236    if (!ChiPAS.WriteLastMatrix(argv[1], dir, ChiPASFragmentSuffix)) return 1;
    211237  }
    212238
Note: See TracChangeset for help on using the changeset viewer.