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