Log In | Get Help   
Home My Page Projects Code Snippets Project Openings Mareframe
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files
[mareframe] Annotation of /trunk/gadget/popinfomemberfunctions.cc
[mareframe] / trunk / gadget / popinfomemberfunctions.cc Repository:
ViewVC logotype

Annotation of /trunk/gadget/popinfomemberfunctions.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (view) (download)

1 : agomez 1 #include "popinfovector.h"
2 :     #include "popinfoindexvector.h"
3 :     #include "conversionindex.h"
4 :     #include "mathfunc.h"
5 :     #include "popinfo.h"
6 :     #include "errorhandler.h"
7 :     #include "gadget.h"
8 :     #include "global.h"
9 :    
10 :     void PopInfoVector::Sum(const PopInfoVector* const Number, const ConversionIndex& CI) {
11 :     int i;
12 :     for (i = 0; i < size; i++)
13 :     v[i].setToZero();
14 :     for (i = CI.minLength(); i < CI.maxLength(); i++)
15 :     v[CI.getPos(i)] += (*Number)[i];
16 :     }
17 :    
18 :     void PopInfoIndexVector::Add(const PopInfoIndexVector& Addition,
19 :     const ConversionIndex& CI, double ratio) {
20 :    
21 :     if (isZero(ratio))
22 :     return;
23 :    
24 :     PopInfo pop;
25 :     int l, minl, maxl;
26 :    
27 :     if (CI.isSameDl()) {
28 :     int offset = CI.getOffset();
29 :     minl = max(this->minCol(), Addition.minCol() + offset);
30 :     maxl = min(this->maxCol(), Addition.maxCol() + offset);
31 :     for (l = minl; l < maxl; l++) {
32 :     pop = Addition[l - offset];
33 :     pop *= ratio;
34 :     v[l] += pop;
35 :     }
36 :    
37 :     } else {
38 :     if (CI.isFiner()) {
39 :     minl = max(this->minCol(), CI.minPos(Addition.minCol()));
40 :     maxl = min(this->maxCol(), CI.maxPos(Addition.maxCol() - 1) + 1);
41 :     for (l = minl; l < maxl; l++) {
42 :     pop = Addition[CI.getPos(l)];
43 :     pop *= ratio;
44 :     v[l] += pop;
45 :     v[l].N /= CI.getNumPos(l); //JMB CI.getNumPos() should never be zero
46 :     }
47 :    
48 :     } else {
49 :     minl = max(CI.minPos(this->minCol()), Addition.minCol());
50 :     maxl = min(CI.maxPos(this->maxCol() - 1) + 1, Addition.maxCol());
51 :     for (l = minl; l < maxl; l++) {
52 :     pop = Addition[l];
53 :     pop *= ratio;
54 :     v[CI.getPos(l)] += pop;
55 :     }
56 :     }
57 :     }
58 :     }
59 :    
60 :     void PopInfoIndexVector::Add(const PopInfoIndexVector& Addition,
61 :     const ConversionIndex& CI, const DoubleVector& Ratio, double ratio) {
62 :    
63 :     if (isZero(ratio))
64 :     return;
65 :    
66 :     PopInfo pop;
67 :     int l, minl, maxl;
68 :    
69 :     if (CI.isSameDl()) {
70 :     int offset = CI.getOffset();
71 :     minl = max(this->minCol(), Addition.minCol() + offset);
72 :     maxl = min(this->maxCol(), Addition.maxCol() + offset);
73 :     if (maxl > Ratio.Size() + offset)
74 :     maxl = Ratio.Size() + offset;
75 :    
76 :     for (l = minl; l < maxl; l++) {
77 :     pop = Addition[l - offset];
78 :     pop *= (ratio * Ratio[l - offset]);
79 :     v[l] += pop;
80 :     }
81 :    
82 :     } else {
83 :     if (CI.isFiner()) {
84 :     minl = max(this->minCol(), CI.minPos(Addition.minCol()));
85 :     maxl = min(this->maxCol(), CI.maxPos(Addition.maxCol() - 1) + 1);
86 :    
87 :     for (l = minl; l < maxl; l++) {
88 :     pop = Addition[CI.getPos(l)];
89 :     pop *= (ratio * Ratio[CI.getPos(l)]);
90 :     v[l] += pop;
91 :     v[l].N /= CI.getNumPos(l); //JMB CI.getNumPos() should never be zero
92 :     }
93 :    
94 :     } else {
95 :     minl = max(CI.minPos(this->minCol()), Addition.minCol());
96 :     maxl = min(CI.maxPos(this->maxCol() - 1) + 1, Addition.maxCol());
97 :     if (maxl > Ratio.Size())
98 :     maxl = Ratio.Size();
99 :    
100 :     for (l = minl; l < maxl; l++) {
101 :     pop = Addition[l];
102 :     pop *= (ratio * Ratio[l]);
103 :     v[CI.getPos(l)] += pop;
104 :     }
105 :     }
106 :     }
107 :     }

root@forge.cesga.es
ViewVC Help
Powered by ViewVC 1.0.0  

Powered By FusionForge