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

Last change on this file since 355 was 355, checked in by lemeur, 11 years ago

correction de correction de bug (beam2Moments::readFromTransportOutput)

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, bidString1, bidString2;
82  double bidon, bidon1, bidon2;
83   
84  // initialisation des moments
85  raz();
86  bool notFound = true;
87  string buf;
88  // sauter les eventuels 'VARY'
89  while ( notFound ) {
90    getline(inp, buf);
91    stringstream str(buf);       
92    if ( str >> bidon1 >>  bidString1 >>  bidon2 >>  ( rij_secondOrderMoments_.at(0) ).at(0) >> bidString2 )  {
93       notFound = false;
94    }
95  }
96  //     test = inp >> bidon >>  bidString >>  bidon >>  ( rij_secondOrderMoments_.at(0) ).at(0) >> bidString;
97  //   cout << " beam2Moments::readFromTransportOutput TEST= " << test << endl;
98  //  }
99  inp >> bidon >> ( rij_secondOrderMoments_.at(1) ).at(1) >>  bidString >> ( rij_secondOrderMoments_.at(1) ).at(0);
100  inp >> bidon >> ( rij_secondOrderMoments_.at(2) ).at(2) >>  bidString >> ( rij_secondOrderMoments_.at(2) ).at(0)  >> ( rij_secondOrderMoments_.at(2) ).at(1);
101  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);
102   
103  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);
104   
105  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);
106   
107}
108
109
110string beam2Moments::writeToTransportInput(double P0) const {
111    ostringstream sortie;
112    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;
113   
114    sortie << " DL=" << (rij_secondOrderMoments_.at(4)).at(4) << ", DEL="<< (rij_secondOrderMoments_.at(5)).at(5) << ", P0=" << P0 << " ; " << endl;
115   
116    sortie << " CORR, C21=" << (rij_secondOrderMoments_.at(1)).at(0) << ", C31="<< (rij_secondOrderMoments_.at(2)).at(0) << ", C32=" << (rij_secondOrderMoments_.at(2)).at(1) << ", & " << endl;
117   
118    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;
119   
120    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;
121   
122    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;
123    return sortie.str();
124}
125
126beam2Moments& beam2Moments::operator= (const beam2Moments& tpm) {
127    rij_secondOrderMoments_ = tpm.rij_secondOrderMoments_;
128    return *this;
129}
Note: See TracBrowser for help on using the repository browser.