source: PSPA/Interface_Web/trunk/pspaWT/sources/controler/src/beam2Moments.cc @ 348

Last change on this file since 348 was 348, checked in by garnier, 11 years ago

beam2moments. Bug fix sur une boucle infinie, introduite par laurent le 26 février

File size: 5.1 KB
Line 
1#include "beam2Moments.h"
2#include <sstream>
3
4
5beam2Moments::beam2Moments() {
6    initializeMoments();
7}
8
9beam2Moments::~beam2Moments() {;}
10
11beam2Moments::beam2Moments( beam2Moments& tm) {
12    rij_secondOrderMoments_ = tm.rij_secondOrderMoments_;
13}
14
15beam2Moments::beam2Moments( const beam2Moments& tm) {
16    rij_secondOrderMoments_ = tm.rij_secondOrderMoments_;
17}
18
19beam2Moments::beam2Moments(double x, double xp, double y, double yp, double dl, double del) {
20    initializeMoments();
21    ( rij_secondOrderMoments_.at(0) ).at(0) = x;
22    ( rij_secondOrderMoments_.at(1) ).at(1) = xp;
23    ( rij_secondOrderMoments_.at(2) ).at(2) = y;
24    ( rij_secondOrderMoments_.at(3) ).at(3) = yp;
25    ( rij_secondOrderMoments_.at(4) ).at(4) = dl;
26    ( rij_secondOrderMoments_.at(5) ).at(5) = del;
27   
28}
29
30void beam2Moments::initializeMoments() {
31    rij_secondOrderMoments_.clear();
32    rij_secondOrderMoments_.resize(6);
33    unsigned dim=0;
34    unsigned k;
35    for ( k=0; k < 6; k++){
36        rij_secondOrderMoments_.at(k).resize(++dim, 0.0);
37    }
38}
39
40
41// const vector< vector<double> >& transportMoments::getMoments() const
42// {
43//   return rij_transportMoments_;
44// }
45
46vector< vector<double> >& beam2Moments::getMatrix()
47{
48    return rij_secondOrderMoments_;
49}
50
51
52void beam2Moments::impression() const {
53    unsigned j,m;
54    cout << " impression des moments " << endl;
55    for ( j = 0; j < 6; j++)
56    {
57        for (m=0; m <= j; m++)
58        {
59            cout  << ( rij_secondOrderMoments_.at(j) ).at(m) << " ";
60        }
61        cout << endl;
62    }
63}
64
65void beam2Moments::raz() {
66    // initialisation des moments
67    unsigned j,m;
68    for ( j = 0; j < rij_secondOrderMoments_.size(); j++)
69    {
70        for (m=0; m <= j; m++)
71        {
72            ( rij_secondOrderMoments_.at(j) ).at(m) = 0.0; // element r_jm
73        }
74    }
75}
76
77
78
79// suppose qu'on est bien positionné dans le stream (a revoir)
80void beam2Moments::readFromTransportOutput(stringstream& inp) {
81    string  bidString;
82    double bidon;
83   
84    // initialisation des moments
85    raz();
86    bool test = false;
87    string buf;
88    // sauter les eventuels 'VARY'
89    while ( !test ) {
90        getline(inp, buf);
91        stringstream str(buf);
92       
93        if (!(str >> bidon >>  bidString >>  bidon >>  ( rij_secondOrderMoments_.at(0) ).at(0) >> bidString)) {
94            test = true;
95        }
96       
97        cout << " beam2Moments::readFromTransportOutput TEST= " << test << endl;
98    }
99    //    test = inp >> bidon >>  bidString >>  bidon >>  ( rij_secondOrderMoments_.at(0) ).at(0) >> bidString;
100    // }
101    inp >> bidon >> ( rij_secondOrderMoments_.at(1) ).at(1) >>  bidString >> ( rij_secondOrderMoments_.at(1) ).at(0);
102    inp >> bidon >> ( rij_secondOrderMoments_.at(2) ).at(2) >>  bidString >> ( rij_secondOrderMoments_.at(2) ).at(0)  >> ( rij_secondOrderMoments_.at(2) ).at(1);
103    inp >> bidon >> ( rij_secondOrderMoments_.at(3) ).at(3) >>  bidString >> ( rij_secondOrderMoments_.at(3) ).at(0)  >> ( rij_secondOrderMoments_.at(3) ).at(1) >> ( rij_secondOrderMoments_.at(3) ).at(2);
104   
105    inp >> bidon >> ( rij_secondOrderMoments_.at(4) ).at(4) >>  bidString >> ( rij_secondOrderMoments_.at(4) ).at(0)  >> ( rij_secondOrderMoments_.at(4) ).at(1) >> ( rij_secondOrderMoments_.at(4) ).at(2) >> ( rij_secondOrderMoments_.at(4) ).at(3);
106   
107    inp >> bidon >> ( rij_secondOrderMoments_.at(5) ).at(5) >>  bidString >> ( rij_secondOrderMoments_.at(5) ).at(0)  >> ( rij_secondOrderMoments_.at(5) ).at(1) >> ( rij_secondOrderMoments_.at(5) ).at(2) >> ( rij_secondOrderMoments_.at(5) ).at(3) >> ( rij_secondOrderMoments_.at(5) ).at(4);
108   
109}
110
111
112string beam2Moments::writeToTransportInput(double P0) const {
113    ostringstream sortie;
114    sortie << " BEAM, X=" << (rij_secondOrderMoments_.at(0)).at(0) << ", XP="<< (rij_secondOrderMoments_.at(1)).at(1) << ", Y=" << (rij_secondOrderMoments_.at(2)).at(2)<< ", YP=" << (rij_secondOrderMoments_.at(3)).at(3) << ", & " << endl;
115   
116    sortie << " DL=" << (rij_secondOrderMoments_.at(4)).at(4) << ", DEL="<< (rij_secondOrderMoments_.at(5)).at(5) << ", P0=" << P0 << " ; " << endl;
117   
118    sortie << " CORR, C21=" << (rij_secondOrderMoments_.at(1)).at(0) << ", C31="<< (rij_secondOrderMoments_.at(2)).at(0) << ", C32=" << (rij_secondOrderMoments_.at(2)).at(1) << ", & " << endl;
119   
120    sortie << " C41=" << (rij_secondOrderMoments_.at(3)).at(0) << ", C42="<< (rij_secondOrderMoments_.at(3)).at(1) << ", C43=" << (rij_secondOrderMoments_.at(3)).at(2) << ", C51=" << (rij_secondOrderMoments_.at(4)).at(0) << ", & " << endl;
121   
122    sortie << " C52=" << (rij_secondOrderMoments_.at(4)).at(1) << ", C53="<< (rij_secondOrderMoments_.at(4)).at(2) << ", C54=" << (rij_secondOrderMoments_.at(4)).at(3) << ", C61=" << (rij_secondOrderMoments_.at(5)).at(0) << ", & " << endl;
123   
124    sortie << " C62=" << (rij_secondOrderMoments_.at(5)).at(1) << ", C63="<< (rij_secondOrderMoments_.at(5)).at(2) << ", C64=" << (rij_secondOrderMoments_.at(5)).at(3) << ", C65=" << (rij_secondOrderMoments_.at(5)).at(4) << " ; " << endl;
125    return sortie.str();
126}
127
128beam2Moments& beam2Moments::operator= (const beam2Moments& tpm) {
129    rij_secondOrderMoments_ = tpm.rij_secondOrderMoments_;
130    return *this;
131}
Note: See TracBrowser for help on using the repository browser.