Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sortField_AbsHigh.cpp
Go to the documentation of this file.
1 
15 #include "sortField_AbsHigh.h"
16 
17 #ifdef USE_FACTORY
18 namespace {
19  SortField *create_object()
20  {
21  return new SortField_AbsHigh();
22  }
23 
24 
25  bool init = SortField::Factory::Register("High", create_object);
26 }
27 #endif
28 
29 
30 void SortField_AbsHigh::sort(int Nk, std::valarray<double>& D, std::valarray<Field>& vk)
31 {
32  Field wtmp(vk[0]);
33 
34  for (int init = 0; init < Nk - 1; ++init) {
35  int kmax = init;
36  double dmax = fabs(D[init]);
37 
38  for (int k = init + 1; k < Nk; ++k) {
39  if (fabs(D[k]) > dmax) {
40  kmax = k;
41  dmax = fabs(D[k]);
42  }
43  }
44 
45  if (kmax != init) {
46  dmax = D[kmax];
47  D[kmax] = D[init];
48  D[init] = dmax;
49  wtmp = vk[init];
50  vk[init] = vk[kmax];
51  vk[kmax] = wtmp;
52  }
53  }
54 }
55 
56 
57 /* ====================================================== */
58 void SortField_AbsHigh::sort(int Nk, std::valarray<double>& D)
59 {
60  for (int init = 0; init < Nk - 1; ++init) {
61  int kmax = init;
62  double dmax = fabs(D[init]);
63 
64  for (int k = init + 1; k < Nk; ++k) {
65  if (fabs(D[k]) > dmax) {
66  kmax = k;
67  dmax = fabs(D[k]);
68  }
69  }
70 
71  if (kmax != init) {
72  dmax = D[kmax];
73  D[kmax] = D[init];
74  D[init] = dmax;
75  }
76  }
77 }
void sort(int, std::valarray< double > &)
Container of Field-type object.
Definition: field.h:37
Sorting (value,field) in descending order of abs(value).
Base class for sorting pair instances (value,field).
Definition: sortField.h:34