CLASS  1.1
 Tout Classes Fichiers Fonctions Variables Définitions de type
Référence de la classe EvolutionData

#include "../include/EvolutionData.hxx"

+ Graphe d'héritage de EvolutionData:
+ Graphe de collaboration de EvolutionData:

Fonctions membres publiques

 EvolutionData ()
 < Normal DB Constructor. Plus de détails...
 
 EvolutionData (LogFile *Log)
 Make a new Evolutive Product evolution. Plus de détails...
 
 EvolutionData (LogFile *Log, string DB_file, bool oldread=true, ZAI zai=ZAI(0, 0, 0))
 Make a new Evolutive Product evolution. Plus de détails...
 
 ~EvolutionData ()
 
void SetReactorType (string reactortype)
 
void SetFuelType (string fueltype)
 
void SetPower (double power)
 
void SetHMMass (double HMMass)
 
void SetFlux (TGraph *flux)
 
map< ZAI,TGraph * > GetEvolutionData () const
 
map< ZAI,TGraph * > GetFissionXS () const
 
map< ZAI,TGraph * > GetCaptureXS () const
 
map< ZAI,TGraph * > Getn2nXS () const
 
TGraph * GetKeff () const
 
TGraph * GetFlux () const
 
double GetCycleTime () const
 
double GetPower () const
 
double GetHMMass () const
 
string GetDB_file () const
 
string GetReactorType () const
 
TGraph * GetEvolutionTGraph (const ZAI &zai)
 Return the A,Z product proportion evolution TGraph. Plus de détails...
 
IsotopicVector GetIsotopicVectorAt (double t)
 Return the Product IsotopicVector at t time. Plus de détails...
 
double GetGetXSForAt (double t, ZAI zai, int ReactionId)
 
                            Return the XS for a reactionId on zai at t time

< ReactionId : 1 Fission, < 2 Capture, < 3 (n, 2n) , Plus de détails...

 
bool NucleiInsert (pair< ZAI, TGraph * > zaitoinsert)
 
bool FissionXSInsert (pair< ZAI, TGraph * > zaitoinsert)
 
bool CaptureXSInsert (pair< ZAI, TGraph * > zaitoinsert)
 
bool n2nXSInsert (pair< ZAI, TGraph * > zaitoinsert)
 
EvolutionData GenerateDBFor (IsotopicVector isotopicvector)
 Build A DB from a close one. Plus de détails...
 

Fonctions membres protégées

void OldReadDB (string DBfile)
 
void ReadDB (string DBfile, bool oldread=false)
 
void ReadKeff (string line, double *time, int NTimeStep)
 
void ReadFlux (string line, double *time, int NTimeStep)
 
void ReadInv (string line, double *time, int NTimeStep)
 
void ReadXSFis (string line, double *time, int NTimeStep)
 
void ReadXSCap (string line, double *time, int NTimeStep)
 
void ReadXSn2n (string line, double *time, int NTimeStep)
 
void ReadInfo ()
 
double Interpolate (double t, TGraph &EvolutionGraph)
 Interpolating the value of EvolutionGraph at the t time. Plus de détails...
 
void AddAsStable (ZAI zai)
 
 ClassDef (EvolutionData, 0)
 

Attributs protégés

string fDB_file
 
map< ZAI,TGraph * > fEvolutionData
 
map< ZAI,TGraph * > fFissionXS
 
map< ZAI,TGraph * > fCaptureXS
 
map< ZAI,TGraph * > fn2nXS
 
TGraph * fKeff
 
TGraph * fFlux
 
cSecond fFinalTime
 
bool fIsCrossSection
 
string fReactorType
 
string fFuelType
 
double fPower
 
double fCycleTime
 
double fHMMass
 
LogFilefLog
 

Description détaillée

Docs for EvolutionData

Définition à la ligne 36 du fichier EvolutionData.hxx.

Documentation des constructeurs et destructeur

EvolutionData::EvolutionData ( )

< Normal DB Constructor.

Définition à la ligne 97 du fichier EvolutionData.cxx.

98 {
99 
100  fIsCrossSection = false;
101 
102 }
EvolutionData::EvolutionData ( LogFile Log)

Make a new Evolutive Product evolution.

Définition à la ligne 105 du fichier EvolutionData.cxx.

106 {
107 
108  fLog = Log;
109  fIsCrossSection = false;
110 
111 }
EvolutionData::EvolutionData ( LogFile Log,
string  DB_file,
bool  oldread = true,
ZAI  zai = ZAI(0,0,0) 
)

Make a new Evolutive Product evolution.

Normal Destructor.

Définition à la ligne 114 du fichier EvolutionData.cxx.

115 {
116 
117  fLog = Log;
118  fIsCrossSection = false;
119  fDB_file = DB_file;
120 
121  if(zai != ZAI(0,0,0))
122  AddAsStable(zai);
123  else
124  ReadDB( fDB_file, oldread); // Read Evolution Produc DB file name
125 
126 
127 
128 
129 }
EvolutionData::~EvolutionData ( )

Définition à la ligne 132 du fichier EvolutionData.cxx.

133 {
134 
135 
136 }

Documentation des fonctions membres

void EvolutionData::AddAsStable ( ZAI  zai)
protected

Définition à la ligne 176 du fichier EvolutionData.cxx.

177 {
178 
179  double time[2] = {0, (500*365.25*3600*24)};
180  double quantity[2] = {1., 1.};
181 
182  fEvolutionData.insert(pair<ZAI ,TGraph* >(zai, new TGraph(2, time, quantity) ) );
183 
184 }
bool EvolutionData::CaptureXSInsert ( pair< ZAI, TGraph * >  zaitoinsert)

Définition à la ligne 157 du fichier EvolutionData.cxx.

158 {
159 
160  pair<map<ZAI, TGraph*>::iterator, bool> IResult;
161  IResult = fCaptureXS.insert( zaitoinsert);
162  return IResult.second;
163 
164 }
EvolutionData::ClassDef ( EvolutionData  ,
 
)
protected
bool EvolutionData::FissionXSInsert ( pair< ZAI, TGraph * >  zaitoinsert)

Définition à la ligne 148 du fichier EvolutionData.cxx.

149 {
150 
151  pair<map<ZAI, TGraph*>::iterator, bool> IResult;
152  IResult = fFissionXS.insert( zaitoinsert);
153  return IResult.second;
154 
155 }
EvolutionData EvolutionData::GenerateDBFor ( IsotopicVector  isotopicvector)

Build A DB from a close one.

Définition à la ligne 257 du fichier EvolutionData.cxx.

258 {
259 
260 
261  map<ZAI, pair<double, map< ZAI, double > > > ZAIDecay;
262 
263  { // TMP
264  map< ZAI, double > toAdd;
265  toAdd.insert(pair<ZAI, double> ( ZAI(-3,-3,-3) , 1) );
266  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(-3,-3,-3), pair<double, map< ZAI, double > > ( 1e28 ,toAdd )) ) ;
267  }
268  { // PF
269  map< ZAI, double > toAdd;
270  toAdd.insert(pair<ZAI, double> ( ZAI(-2,-2,-2), 1) );
271  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(-2,-2,-2), pair<double, map< ZAI, double > > ( 1e28 ,toAdd )) ) ;
272  }
273  { // 232Th
274  map< ZAI, double > toAdd;
275  toAdd.insert(pair<ZAI, double> ( ZAI(-3,-3,-3) , 1) );
276  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(90,232,0), pair<double, map< ZAI, double > > ( 2.37944304000000000e+18 , toAdd ) ) );
277  }
278  { // 233U
279  map< ZAI, double > toAdd;
280  toAdd.insert(pair<ZAI, double> ( ZAI(-3,-3,-3) , 1) );
281  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(92,233,0), pair<double, map< ZAI, double > > ( 5.02396992000000000e+12, toAdd) ) );
282  }
283  { // 234U
284  map< ZAI, double > toAdd;
285  toAdd.insert(pair<ZAI, double> ( ZAI(-3,-3,-3) , 1) );
286  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(92,234,0), pair<double, map< ZAI, double > > ( 7.74739080000000000e+12, toAdd) ) );
287  }
288  { // 235U
289  map< ZAI, double > toAdd;
290  toAdd.insert(pair<ZAI, double> ( ZAI(-3,-3,-3) , 1) );
291  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(92,235,0), pair<double, map< ZAI, double > > ( 2.22165504000000000e+16, toAdd) ) );
292  }
293  { // 236U
294  map< ZAI, double > toAdd;
295  toAdd.insert(pair<ZAI, double> ( ZAI(90,232,0) , 1) );
296  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(92,236,0), pair<double, map< ZAI, double > > ( 7.39078992000000000e+14, toAdd) ) );
297  }
298  { // 238U
299  map< ZAI, double > toAdd;
300  toAdd.insert(pair<ZAI, double> ( ZAI(-3,-3,-3) , 1) );
301  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(92,238,0), pair<double, map< ZAI, double > > ( 1.40999356800000000e+17, toAdd) ) );
302  }
303  { // 237Np
304  map< ZAI, double > toAdd;
305  toAdd.insert(pair<ZAI, double> ( ZAI(91,233,0) , 1) );
306  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(93,237,0), pair<double, map< ZAI, double > > ( 6.76594944000000000e+13, toAdd) ) );
307  }
308  { // 238Pu
309  map< ZAI, double > toAdd;
310  toAdd.insert(pair<ZAI, double> ( ZAI(92,234,0) , 1) );
311  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(94,238,0), pair<double, map< ZAI, double > > ( 2.76760152000000000e+09, toAdd) ) );
312  }
313  { // 239Pu
314  map< ZAI, double > toAdd;
315  toAdd.insert(pair<ZAI, double> ( ZAI(92,235,0) , 1) );
316  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(94,239,0), pair<double, map< ZAI, double > > ( 7.60853736000000000e+11, toAdd) ) );
317  }
318  { // 240Pu
319  map< ZAI, double > toAdd;
320  toAdd.insert(pair<ZAI, double> ( ZAI(92,236,0) , 1) );
321  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(94,240,0), pair<double, map< ZAI, double > > ( 2.07049413600000000e+11, toAdd) ) );
322  }
323  { // 241Pu
324  map< ZAI, double > toAdd;
325  toAdd.insert(pair<ZAI, double> ( ZAI(95,241,0) , 1) );
326  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(94,241,0), pair<double, map< ZAI, double > > ( 4.52062620000000000e+08, toAdd) ) );
327  }
328  { // 242Pu
329  map< ZAI, double > toAdd;
330  toAdd.insert(pair<ZAI, double> ( ZAI(92,238,0) , 1) );
331  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(94,242,0), pair<double, map< ZAI, double > > ( 1.18341000000000000e+13, toAdd) ) );
332  }
333  { // 241Am
334  map< ZAI, double > toAdd;
335  toAdd.insert(pair<ZAI, double> ( ZAI(93,237,0) , 1) );
336  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(95,241,0), pair<double, map< ZAI, double > > ( 1.36518177600000000e+10, toAdd) ) );
337  }
338  { // 242Am*
339  map< ZAI, double > toAdd;
340  toAdd.insert(pair<ZAI, double> ( ZAI(93,238,0) , 0.00459) );
341  toAdd.insert(pair<ZAI, double> ( ZAI(95,242,0) , 0.99541) );
342 
343  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(95,242,1), pair<double, map< ZAI, double > > ( 4.44962160000000000e+09, toAdd) ) );
344  }
345  { // 243Am
346  map< ZAI, double > toAdd;
347  toAdd.insert(pair<ZAI, double> ( ZAI(94,239,0) , 1) );
348  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(95,243,0), pair<double, map< ZAI, double > > ( 2.32579512000000000e+11, toAdd) ) );
349  }
350  { // 242Cm
351  map< ZAI, double > toAdd;
352  toAdd.insert(pair<ZAI, double> ( ZAI(94,238,0) , 1) );
353  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(96,242,0), pair<double, map< ZAI, double > > ( 1.40659200000000000e+07 , toAdd) ) );
354  }
355  { // 243Cm
356  map< ZAI, double > toAdd;
357  toAdd.insert(pair<ZAI, double> ( ZAI(94,239,0) , 0.9971) );
358  toAdd.insert(pair<ZAI, double> ( ZAI(95,243,0) , 0.0029) );
359  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(96,243,0), pair<double, map< ZAI, double > > ( 9.18326160000000000e+08, toAdd) ) );
360  }
361  { // 244Cm
362  map< ZAI, double > toAdd;
363  toAdd.insert(pair<ZAI, double> ( ZAI(94,240,0) , 1) );
364  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(96,244,0), pair<double, map< ZAI, double > > ( 5.71192560000000000e+08, toAdd) ) );
365  }
366  { // 245Cm
367  map< ZAI, double > toAdd;
368  toAdd.insert(pair<ZAI, double> ( ZAI(94,241,0) , 1) );
369  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(96,245,0), pair<double, map< ZAI, double > > ( 2.65809664800000000e+11, toAdd) ) );
370  }
371  { // 246Cm
372  map< ZAI, double > toAdd;
373  toAdd.insert(pair<ZAI, double> ( ZAI(94,242,0) , 1) );
374  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(96,246,0), pair<double, map< ZAI, double > > ( 1.48510065600000000e+11, toAdd) ) );
375  }
376  { // 247Cm
377  map< ZAI, double > toAdd;
378  toAdd.insert(pair<ZAI, double> ( ZAI(94,243,0) , 1) );
379  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(96,247,0), pair<double, map< ZAI, double > > ( 4.92298560000000000e+14, toAdd) ) );
380  }
381  { // 248Cm
382  map< ZAI, double > toAdd;
383  toAdd.insert(pair<ZAI, double> ( ZAI(-3,-3,-3) , 1) );
384  ZAIDecay.insert( pair< ZAI, pair<double, map< ZAI, double > > >( ZAI(96,248,0), pair<double, map< ZAI, double > > ( 1.09820448000000000e+13, toAdd) ) );
385  }
386 
387  map<ZAI, map<ZAI, double> > FastDecay;
388  { // 231Th
389  map<ZAI, double> toAdd ;
390  toAdd.insert(pair<ZAI, double> ( ZAI(-3,-3,-3) , 1) );
391 
392  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(90,231,0), toAdd ) );
393  }
394  { // 233Th
395  map<ZAI, double> toAdd ;
396  toAdd.insert(pair<ZAI, double> ( ZAI(92,233,0) , 1) );
397 
398  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(90,233,0), toAdd ) );
399  }
400  { // 233Pa
401  map<ZAI, double> toAdd ;
402  toAdd.insert(pair<ZAI, double> ( ZAI(92,233,0) , 1) );
403  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(91,233,0), toAdd ) );
404  }
405  { // 237U
406  map<ZAI, double> toAdd ;
407  toAdd.insert(pair<ZAI, double> ( ZAI(93,237,0) , 1) );
408  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(92,237,0), toAdd ) );
409  }
410  { // 239U
411  map<ZAI, double> toAdd ;
412  toAdd.insert(pair<ZAI, double> ( ZAI(94,239,0) , 1) );
413  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(92,239,0), toAdd ) );
414  }
415  { // 238Np
416  map<ZAI, double> toAdd ;
417  toAdd.insert(pair<ZAI, double> ( ZAI(94,238,0) , 1) );
418  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(93,238,0), toAdd ) );
419  }
420  { // 239Np
421  map<ZAI, double> toAdd ;
422  toAdd.insert(pair<ZAI, double> ( ZAI(94,239,0) , 1) );
423  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(93,239,0), toAdd ) );
424  }
425  { // 240Np
426  map<ZAI, double> toAdd ;
427  toAdd.insert(pair<ZAI, double> ( ZAI(94,240,0) , 1) );
428  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(93,240,0), toAdd ) );
429  }
430  { // 241Np
431  map<ZAI, double> toAdd ;
432  toAdd.insert(pair<ZAI, double> ( ZAI(94,241,0) , 1) );
433  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(93,241,0), toAdd ) );
434  }
435  { // 237Pu
436  map<ZAI, double> toAdd ;
437  toAdd.insert(pair<ZAI, double> ( ZAI(93,237,0) , 1) );
438  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(94,237,0), toAdd ) );
439  }
440  { // 243Pu
441  map<ZAI, double> toAdd ;
442  toAdd.insert(pair<ZAI, double> ( ZAI(95,243,0) , 1) );
443  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(94,243,0), toAdd ) );
444  }
445  { // 240Am
446  map<ZAI, double> toAdd ;
447  toAdd.insert(pair<ZAI, double> ( ZAI(94,240,0) , 1) );
448  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(95,240,0), toAdd ) );
449  }
450  { // 242Am
451  map<ZAI, double> toAdd ;
452  toAdd.insert(pair<ZAI, double> ( ZAI(96,242,0) , 0.827) );
453  toAdd.insert(pair<ZAI, double> ( ZAI(94,242,0) , 0.173) );
454  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(95,242,0), toAdd ) );
455  }
456  { // 244Am
457  map<ZAI, double> toAdd ;
458  toAdd.insert(pair<ZAI, double> ( ZAI(96,244,0) , 1) );
459  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(95,244,0), toAdd ) );
460  }
461  { // 245Am
462  map<ZAI, double> toAdd ;
463  toAdd.insert(pair<ZAI, double> ( ZAI(96,245,0) , 1) );
464  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(95,245,0), toAdd ) );
465  }
466  { // 249Cm
467  map<ZAI, double> toAdd ;
468  toAdd.insert(pair<ZAI, double> ( ZAI(-3,-3,-3) , 1) );
469  FastDecay.insert( pair< ZAI, map<ZAI, double> > ( ZAI(96,249,0), toAdd ) );
470  }
471 
472 
473  map<ZAI, map<ZAI, double> > Capture;
474  { // 241Am
475  map<ZAI, double> toAdd ;
476  toAdd.insert(pair<ZAI, double> ( ZAI(95,242,0) , 0.086) );
477  toAdd.insert(pair<ZAI, double> ( ZAI(95,242,1) , 0.914) );
478  Capture.insert( pair< ZAI, map<ZAI, double> > ( ZAI(95,241,0), toAdd ) );
479  }
480  { // 242Am*
481  map<ZAI, double> toAdd ;
482  toAdd.insert(pair<ZAI, double> ( ZAI(95,243,0) , 1) );
483  Capture.insert( pair< ZAI, map<ZAI, double> > ( ZAI(95,242,1), toAdd ) );
484  }
485  map<ZAI, int> index_inver;
486  map<int, ZAI> index;
487  {
488  int i = 0;
489  map<ZAI, pair<double, map< ZAI, double > > >::iterator it;
490  for(it = ZAIDecay.begin() ; it != ZAIDecay.end(); it++)
491  {
492  index.insert( pair<int, ZAI > ( i, (*it).first ) );
493  index_inver.insert( pair<ZAI, int > ( (*it).first , i ));
494  i++;
495  }
496  }
497 
498  TMatrixT<double> DecayMatrix = TMatrixT<double>(index.size(),index.size());
499  for(int i = 0; i < (int)index.size(); i++)
500  for(int j = 0; j < (int)index.size(); j++)
501  DecayMatrix[i][j] = 0;
502 
503  {
504  int i = 0;
505  map<ZAI, pair<double, map< ZAI, double > > >::iterator it;
506  for(it = ZAIDecay.begin() ; it != ZAIDecay.end(); it++)
507  {
508  map< ZAI, double >::iterator it2;
509  map< ZAI, double > decaylist = (*it).second.second;
510  for(it2 = decaylist.begin(); it2!= decaylist.end(); it2++)
511  {
512 
513  map<ZAI, int >::iterator it3 = index_inver.find( (*it2).first );
514  if( it3 != index_inver.end() )
515  DecayMatrix[(*it3).second][i] = log(2.)/(*it).second.first * (*it2).second;
516  else
517  {
518  map<ZAI, map<ZAI, double> >::iterator it4 = FastDecay.find( (*it2).first );
519 
520  if( it4 == FastDecay.end() )
521  {
522  cout << "Problem in FastDecay for nuclei " << (*it2).first.Z() << " " << (*it2).first.A() << " " << (*it2).first.I() << endl;
523  exit(1);
524  }
525 
526  map< ZAI, double >::iterator it5;
527  map< ZAI, double > decaylist2 = (*it4).second;
528  for(it5 = decaylist2.begin(); it5!= decaylist2.end(); it5++)
529  {
530  it3 = index_inver.find( (*it5).first );
531  if( it3 == index_inver.end() )
532  {
533  cout << "Problem in FastDecay for nuclei " << (*it2).first.Z() << " " << (*it2).first.A() << " " << (*it2).first.I() << endl;
534  exit(1);
535  }
536  DecayMatrix[(*it3).second][i] = log(2.)/(*it).second.first * (*it2).second * (*it5).second;
537  }
538 
539  }
540  }
541  DecayMatrix[i][i] += -log(2.)/(*it).second.first;
542  i++;
543 
544 
545  }
546  }
547 
548 
549  vector< TMatrixT<double> > NMatrix ;// TMatrixT<double>(decayindex.size(),1))
550  double NormFactor = 1;
551  {
552  IsotopicVector WantedHMIV = isotopicvector.GetSpeciesComposition(90)
553  + isotopicvector.GetSpeciesComposition(92)
554  + isotopicvector.GetSpeciesComposition(93)
555  + isotopicvector.GetSpeciesComposition(94)
556  + isotopicvector.GetSpeciesComposition(95)
557  + isotopicvector.GetSpeciesComposition(96);
558 
565 
566  NormFactor = Norme(WantedHMIV)/ Norme(DBHMIV);
567  }
568 
569  { // Filling the t=0 State;
570  map<ZAI, double > isotopicquantity = isotopicvector.GetIsotopicQuantity();
571  TMatrixT<double> N_0Matrix = TMatrixT<double>( index.size(),1) ;
572 
573  map<ZAI, double >::iterator it ;
574  for(int i = 0; i < (int)index.size(); i++)
575  N_0Matrix[i] = 0;
576 
577  for(it = isotopicquantity.begin(); it != isotopicquantity.end(); it++)
578  {
579 
580  map<ZAI, int >::iterator it2;
581 
582  if( (*it).first.Z() < 90 )
583  it2 = index_inver.find( ZAI(-2,-2,-2) );
584  else it2 = index_inver.find( (*it).first );
585 
586  if(it2 == index_inver.end() ) //If not in index should be TMP, can't be fast decay for new Fuel !!!
587  it2 = index_inver.find( ZAI(-3,-3,-3) );
588 
589  N_0Matrix[ (*it2).second ][0] = (*it).second ;
590 
591 
592  }
593  NMatrix.push_back(N_0Matrix);
594  }
595 
596  //-------------------------//
597  //--- Perform Evolution ---//
598  //-------------------------//
599  double timevector[fEvolutionData.begin()->second->GetN()];
600  timevector[0] = 0.;
601 
602  for(int i = 0; i < fEvolutionData.begin()->second->GetN()-1; i++)
603  {
604  TMatrixT<double> BatemanMatrix = TMatrixT<double>(index.size(),index.size());
605  BatemanMatrix = DecayMatrix ;
606  double Flux;
607  {
608  double x,y;
609  fFlux->GetPoint(i, x,y);
610  Flux = y;
611  }
612  map<ZAI ,TGraph* >::iterator it;
613  // ---------------- A(n,.) X+Y
614  for(it = fFissionXS.begin() ; it != fFissionXS.end(); it++)
615  {
616  if( index_inver.find( (*it).first ) != index_inver.end() )
617  {
618  double x,y;
619  (*it).second->GetPoint(i, x,y);
620  BatemanMatrix[ index_inver.find( (*it).first )->second ][index_inver.find( (*it).first )->second] += -y* 1e-24 *Flux;
621  BatemanMatrix[1][ index_inver.find( (*it).first )->second] += 2*y* 1e-24 *Flux;
622  }
623  }
624 
625  // ---------------- A(n,.)A+1
626  for(it = fCaptureXS.begin() ; it != fCaptureXS.end(); it++)
627  {
628 
629  if( index_inver.find( (*it).first ) != index_inver.end() )
630  {
631  double x,y;
632  (*it).second->GetPoint(i, x, y);
633 
634  BatemanMatrix[index_inver.find( (*it).first )->second][ index_inver.find( (*it).first )->second ] += -y* 1e-24 *Flux;
635 
636  map<ZAI, map<ZAI, double> >::iterator it3 = Capture.find( (*it).first );
637 
638 
639  if( it3 == Capture.end() )
640  {
641  map<ZAI, int >::iterator it6 = index_inver.find( ZAI( (*it).first.Z(), (*it).first.A()+1, (*it).first.I()) );
642 
643 
644  if( it6 != index_inver.end() )
645  {
646  BatemanMatrix[(*it6).second][index_inver.find( (*it).first )->second] += y* 1e-24 *Flux ;
647 
648  }
649  else
650  {
651  map<ZAI, map<ZAI, double> >::iterator it4 = FastDecay.find( ZAI( (*it).first.Z(), (*it).first.A()+1, (*it).first.I()) );
652 
653  if( it4 == FastDecay.end() )
654  {
655  cout << "Problem in FastDecay for nuclei " << (*it).first.Z() << " " << (*it).first.A()+1 << " " << (*it).first.I() << endl;
656  exit(1);
657  }
658 
659  map< ZAI, double >::iterator it5;
660  map< ZAI, double > decaylist2 = (*it4).second;
661  for(it5 = decaylist2.begin(); it5!= decaylist2.end(); it5++)
662  {
663 
664  it6 = index_inver.find( (*it5).first );
665  if( it6 == index_inver.end() )
666  {
667  cout << "Problem in FastDecay for nuclei " << (*it).first.Z() << " " << (*it).first.A() << " " << (*it).first.I() << endl;
668  exit(1);
669  }
670 
671  BatemanMatrix[(*it6).second][index_inver.find( (*it).first )->second] += y* 1e-24 *Flux * (*it5).second;
672  }
673  }
674  }
675  else
676  {
677  // if( (*it3).first.Z() == 90 && (*it3).first.A() == 232) cout << y* 1e-24 *Flux << endl;
678  map<ZAI, double>::iterator it4;
679  map<ZAI, double> CaptureList = (*it3).second;
680  for(it4 = CaptureList.begin(); it4 != CaptureList.end() ; it4++)
681  {
682 
683  map<ZAI, int >::iterator it6 = index_inver.find( (*it4).first );
684 
685 
686  if( it6 != index_inver.end() )
687  BatemanMatrix[(*it6).second][index_inver.find( (*it).first )->second] += y* 1e-24 *Flux * (*it4).second ;
688  else
689  {
690  map<ZAI, map<ZAI, double> >::iterator it7 = FastDecay.find( (*it4).first );
691 
692  if( it7 == FastDecay.end() )
693  {
694  cout << "Problem in FastDecay for nuclei " << (*it7).first.Z() << " " << (*it7).first.A() << " " << (*it7).first.I() << endl;
695  exit(1);
696  }
697 
698  map< ZAI, double >::iterator it5;
699  map< ZAI, double > decaylist2 = (*it7).second;
700  for(it5 = decaylist2.begin(); it5!= decaylist2.end(); it5++)
701  {
702 
703  it6 = index_inver.find( (*it5).first );
704  if( it6 == index_inver.end() )
705  {
706  cout << "Problem in FastDecay for nuclei " << (*it7).first.Z() << " " << (*it7).first.A() << " " << (*it7).first.I() << endl;
707  exit(1);
708  }
709  //if( (*it6).first.Z() == 92 && (*it6).first.A() == 233) cout << y* 1e-24 *Flux * (*it5).second << endl;
710  BatemanMatrix[(*it6).second][index_inver.find( (*it).first )->second] += y * 1e-24 * Flux * (*it5).second * (*it4).second;
711  }
712  }
713 
714  }
715  }
716 
717 
718  }
719  }
720  // ---------------- A(n,2n)A-1
721  for(it = fn2nXS.begin() ; it != fn2nXS.end(); it++)
722  {
723  if( index_inver.find( (*it).first ) != index_inver.end() )
724  {
725  double x,y;
726  (*it).second->GetPoint(i, x,y);
727  BatemanMatrix[ index_inver.find( (*it).first )->second ][index_inver.find( (*it).first )->second] += -y* 1e-24 *Flux;
728 
729 
730  map<ZAI, int>::iterator it3 = index_inver.find( ZAI( (*it).first.Z(), (*it).first.A()-1, 0) );
731 
732  if( it3 != index_inver.end() )
733  BatemanMatrix[(*it3).second][index_inver.find( (*it).first )->second] += y* 1e-24 *Flux;
734  else
735  {
736 
737  map<ZAI, map<ZAI, double> >::iterator it4 = FastDecay.find( ZAI( (*it).first.Z(), (*it).first.A()-1, 0) );
738 
739  if( it4 == FastDecay.end() )
740  {
741  it3 = index_inver.find( ZAI( -3, -3, -3 ) );
742  BatemanMatrix[(*it3).second][index_inver.find( (*it).first )->second] += y* 1e-24 *Flux;
743  }
744  else
745  {
746  map< ZAI, double >::iterator it5;
747  map< ZAI, double > decaylist2 = (*it4).second;
748  for(it5 = decaylist2.begin(); it5!= decaylist2.end(); it5++)
749  {
750 
751  it3 = index_inver.find( (*it5).first );
752  if( it3 == index_inver.end() )
753  {
754  cout << "Problem in FastDecay for nuclei " << (*it4).first.Z() << " " << (*it4).first.A() << " " << (*it4).first.I() << endl;
755  exit(1);
756  }
757  BatemanMatrix[(*it3).second][index_inver.find( (*it).first )->second] += y* 1e-24 *Flux * (*it5).second ;
758  }
759  }
760  }
761  }
762  }
763 
764  // ---------------- Evolution
765  TMatrixT<double> NEvolutionMatrix = TMatrixT<double>(index.size(),1);
766 
767  double TStepMax;
768  {
769  double x,y;
770  fFissionXS.begin()->second->GetPoint(i+1, x,y);
771  TStepMax = x - timevector[i];
772  timevector[i+1] = x;
773  }
774 
775  BatemanMatrix *= TStepMax;
776 
777  TMatrixT<double> IdMatrix = TMatrixT<double>(index.size(),index.size());
778  for(int j = 0; j < (int)index.size(); j++)
779  for(int k = 0; k < (int)index.size(); k++)
780  {
781  if(k == j) IdMatrix[j][k] = 1;
782  else IdMatrix[j][k] = 0;
783  }
784 
785 
786  TMatrixT<double> BatemanMatrixDL = TMatrixT<double>(index.size(),index.size()); // Order 0 Term from the DL : Id
787  TMatrixT<double> BatemanMatrixDLTermN = TMatrixT<double>(index.size(),index.size()); // Addind it;
788 
789 
790  {
791  BatemanMatrixDLTermN = IdMatrix;
792  BatemanMatrixDL = BatemanMatrixDLTermN;
793 
794 
795  int j = 1;
796  double NormN = 0;
797 
798  do
799  {
800  NormN = 0;
801 
802  TMatrixT<double> BatemanMatrixDLTermtmp = TMatrixT<double>(index.size(),index.size()); // Adding it;
803  BatemanMatrixDLTermtmp = BatemanMatrixDLTermN;
804  BatemanMatrixDLTermN.Mult(BatemanMatrixDLTermtmp, BatemanMatrix );
805 
806  BatemanMatrixDLTermN *= 1./j;
807  BatemanMatrixDL += BatemanMatrixDLTermN;
808 
809  NormN = 0;
810  for(int m = 0; m < (int)index.size(); m++)
811  for(int n = 0; n < (int)index.size(); n++)
812  NormN += BatemanMatrixDLTermN[m][n]*BatemanMatrixDLTermN[m][n];
813  j++;
814  } while ( NormN != 0 || j==2);
815 
816  }
817 
818 
819  NEvolutionMatrix = BatemanMatrixDL * NMatrix.back() ;
820  NMatrix.push_back(NEvolutionMatrix);
821  }
822 
823 
824  EvolutionData GeneratedDB = EvolutionData(fLog);
825 
826  for(int i = 0; i < (int)index.size(); i++)
827  {
828  double ZAIQuantity[NMatrix.size()];
829  for(int j = 0; j < (int)NMatrix.size(); j++)
830  ZAIQuantity[j] = (NMatrix[j])[i][0];
831 
832  GeneratedDB.NucleiInsert(pair<ZAI, TGraph*> (index.find(i)->second, new TGraph(NMatrix.size(), timevector, ZAIQuantity) ) );
833  }
834  GeneratedDB.SetPower(fPower * NormFactor );
835  GeneratedDB.SetFuelType(fFuelType );
836  GeneratedDB.SetReactorType(fReactorType );
837  GeneratedDB.SetHMMass(fHMMass*NormFactor );
838 
839  return GeneratedDB;
840 
841 }
map<ZAI ,TGraph* > EvolutionData::GetCaptureXS ( ) const
inline

Définition à la ligne 61 du fichier EvolutionData.hxx.

double EvolutionData::GetCycleTime ( ) const
inline

Définition à la ligne 66 du fichier EvolutionData.hxx.

66 { return fCycleTime; }
string EvolutionData::GetDB_file ( ) const
inline

Définition à la ligne 69 du fichier EvolutionData.hxx.

69 { return fDB_file; }
map<ZAI ,TGraph* > EvolutionData::GetEvolutionData ( ) const
inline

Définition à la ligne 59 du fichier EvolutionData.hxx.

TGraph * EvolutionData::GetEvolutionTGraph ( const ZAI zai)

Return the A,Z product proportion evolution TGraph.

Définition à la ligne 196 du fichier EvolutionData.cxx.

197 {
198 
199  map<ZAI ,TGraph *>::iterator it = GetEvolutionData().find(zai) ;
200 
201  if ( it != GetEvolutionData().end() )
202  return it->second;
203  else
204  return new TGraph();
205 
206 
207 }
map<ZAI ,TGraph* > EvolutionData::GetFissionXS ( ) const
inline

Définition à la ligne 60 du fichier EvolutionData.hxx.

TGraph* EvolutionData::GetFlux ( ) const
inline

Définition à la ligne 64 du fichier EvolutionData.hxx.

64 { return fFlux; }
double EvolutionData::GetGetXSForAt ( double  t,
ZAI  zai,
int  ReactionId 
)

                            Return the XS for a reactionId on zai at t time

< ReactionId : 1 Fission, < 2 Capture, < 3 (n, 2n) ,

Définition à la ligne 225 du fichier EvolutionData.cxx.

226 {
227 
228  map<ZAI ,TGraph* > XSEvol;
229  switch(ReactionId)
230  {
231  case 1: XSEvol = GetFissionXS();
232  break;
233  case 2: XSEvol = GetCaptureXS();
234  break;
235  case 3: XSEvol = Getn2nXS();
236  break;
237  default:cout << "!!Error!! !!!EvolutionData!!! \n Wrong ReactionId !!" << endl;
238  fLog->fLog << "!!Error!! !!!EvolutionData!!! \n Wrong ReactionId !!" << endl;
239  exit(1);
240  }
241 
242  map<ZAI ,TGraph* >::iterator it = XSEvol.find(zai);
243 
244 
245  if (it == XSEvol.end())
246  return 0.;
247  else
248  return Interpolate(t, *((*it).second) );
249 
250 }
double EvolutionData::GetHMMass ( ) const
inline

Définition à la ligne 68 du fichier EvolutionData.hxx.

68 { return fHMMass; }
IsotopicVector EvolutionData::GetIsotopicVectorAt ( double  t)

Return the Product IsotopicVector at t time.

Définition à la ligne 210 du fichier EvolutionData.cxx.

211 {
212 
213  IsotopicVector IsotopicVectorTmp;
214  map<ZAI ,TGraph* >::iterator it;
215  for( it = fEvolutionData.begin(); it != fEvolutionData.end(); it++ )
216  {
217  IsotopicVectorTmp.Add( (*it).first, Interpolate(t, *((*it).second)) );
218  }
219 
220 
221  return IsotopicVectorTmp;
222 }
TGraph* EvolutionData::GetKeff ( ) const
inline

Définition à la ligne 63 du fichier EvolutionData.hxx.

63 { return fKeff; }
map<ZAI ,TGraph* > EvolutionData::Getn2nXS ( ) const
inline

Définition à la ligne 62 du fichier EvolutionData.hxx.

double EvolutionData::GetPower ( ) const
inline

Définition à la ligne 67 du fichier EvolutionData.hxx.

string EvolutionData::GetReactorType ( ) const
inline

Définition à la ligne 70 du fichier EvolutionData.hxx.

70 { return fReactorType; }
Double_t EvolutionData::Interpolate ( double  t,
TGraph &  EvolutionGraph 
)
protected

Interpolating the value of EvolutionGraph at the t time.

Définition à la ligne 187 du fichier EvolutionData.cxx.

188 {
189 
190  TString fOption;
191  return (double)EvolutionGraph.Eval(t,0x0,fOption);
192 
193 }
bool EvolutionData::n2nXSInsert ( pair< ZAI, TGraph * >  zaitoinsert)

Définition à la ligne 166 du fichier EvolutionData.cxx.

167 {
168 
169  pair<map<ZAI, TGraph*>::iterator, bool> IResult;
170  IResult = fn2nXS.insert( zaitoinsert);
171  return IResult.second;
172 
173 }
bool EvolutionData::NucleiInsert ( pair< ZAI, TGraph * >  zaitoinsert)

Définition à la ligne 139 du fichier EvolutionData.cxx.

140 {
141 
142  pair<map<ZAI, TGraph*>::iterator, bool> IResult;
143  IResult = fEvolutionData.insert( zaitoinsert);
144  return IResult.second;
145 
146 }
void EvolutionData::OldReadDB ( string  DBfile)
protected

Définition à la ligne 1195 du fichier EvolutionData.cxx.

1196 {
1197 
1198  {
1199  ifstream DecayDB(DBfile.c_str()); // Open the File
1200  if(!DecayDB)
1201  {
1202  cout << "!!Warning!! !!!EvolutionData!!! \n Can't open \"" << DBfile << "\"\n" << endl;
1203  fLog->fLog << "!!Warning!! !!!EvolutionData!!! \n Can't open \"" << DBfile << "\"\n" << endl;
1204  }
1205  vector<double> vTime;
1206  vector<double> vTimeErr;
1207 
1208  string line;
1209  int start = 0;
1210 
1211  getline(DecayDB, line);
1212  if( StringLine::NextWord(line, start, ' ') != "time")
1213  {
1214  cout << "!!Bad Trouble!! !!!EvolutionData!!! Bad Database file : " << DBfile << endl;
1215  fLog->fLog << "!!Bad Trouble!! !!!EvolutionData!!! Bad Database file : " << DBfile << endl;
1216  exit (1);
1217  }
1218 
1219  while(start < (int)line.size())
1220  vTime.push_back(atof(StringLine::NextWord(line, start, ' ').c_str()));
1221 
1222  fFinalTime = vTime.back();
1223  double Time[vTime.size()];
1224  for(int i=0; i < (int)vTime.size();i++)
1225  Time[i] = vTime[i];
1226  vector<double> vFlux;
1227  start = 0;
1228  getline(DecayDB, line);
1229  string tmp = StringLine::NextWord(line, start, ' ');
1230  if ( tmp == "keff" || tmp == "Keff" )
1231  {
1232  vector<double> vKeff;
1233  while(start < (int)line.size())
1234  vKeff.push_back(atof(StringLine::NextWord(line, start, ' ').c_str()));
1235 
1236  double Keff[vKeff.size()];
1237  for(int i=0; i < (int)vKeff.size();i++)
1238  Keff[i] = vKeff[i];
1239 
1240  fKeff = new TGraph(vTime.size(), Time, Keff);
1241 
1242  start = 0;
1243  getline(DecayDB, line);
1244  if (StringLine::NextWord(line, start, ' ') == "flux")
1245  {
1246 
1247 
1248  while(start < (int)line.size())
1249  vFlux.push_back(atof(StringLine::NextWord(line, start, ' ').c_str()));
1250 
1251  double Flux[vFlux.size()];
1252  for(int i=0; i < (int)vFlux.size();i++)
1253  Flux[i] = vFlux[i];
1254 
1255  fFlux = new TGraph(vTime.size(), Time, Flux);
1256 
1257  }
1258  }
1259 
1260 
1261  do
1262  {
1263 
1264 
1265  start = 0;
1266  int Z = atoi(StringLine::NextWord(line, start, ' ').c_str());
1267  int A = atoi(StringLine::NextWord(line, start, ' ').c_str());
1268  int I = atoi(StringLine::NextWord(line, start, ' ').c_str());
1269 
1270  if(A!=0 && Z!=0)
1271  {
1272  double DPQuantity[vTime.size()];
1273  for(int k = 0; k < (int)vTime.size(); k++ )
1274  DPQuantity[k] = 0;
1275 
1276 
1277  ZAI zaitmp(Z, A, I);
1278  int i=0;
1279  while(start < (int)line.size())
1280  {
1281  double DPQuantityTmp = atof(StringLine::NextWord(line, start, ' ').c_str());
1282  DPQuantity[i] = (double)DPQuantityTmp;
1283  i++;
1284 
1285  }
1286  fEvolutionData.insert(pair<ZAI ,TGraph* >(zaitmp, new TGraph((int)vTime.size()-1, Time, DPQuantity) ) );
1287  }
1288 
1289  getline(DecayDB, line);
1290  if(line == "" || line == "CrossSection" ) break;
1291  }while (!DecayDB.eof() );
1292 
1293  if(line == "CrossSection")
1294  {
1295  fIsCrossSection = true;
1296  getline(DecayDB, line);
1297 
1298  if (line == "Fission")
1299  {
1300  getline(DecayDB, line);
1301 
1302  do
1303  {
1304  double DPQuantity[vTime.size()];
1305  for(int k = 0; k < (int)vTime.size(); k++ )
1306  DPQuantity[k] = 0;
1307 
1308  start = 0;
1309  int Z = atoi(StringLine::NextWord(line, start, ' ').c_str());
1310  int A = atoi(StringLine::NextWord(line, start, ' ').c_str());
1311  int I = atoi(StringLine::NextWord(line, start, ' ').c_str());
1312  if(A!=0 && Z!=0)
1313  {
1314 
1315 
1316  ZAI zaitmp(Z, A, I);
1317  int i=0;
1318  while(start < (int)line.size())
1319  {
1320  long double DPQuantityTmp = atof(StringLine::NextWord(line, start, ' ').c_str());
1321  DPQuantity[i] = (double)DPQuantityTmp;
1322  i++;
1323 
1324  }
1325  fFissionXS.insert(pair<ZAI ,TGraph* >(zaitmp, new TGraph(vTime.size()-1, Time, DPQuantity) ) );
1326  }
1327  getline(DecayDB, line);
1328  if(line == "" || line == "Capture" ) break;
1329  }while ( !DecayDB.eof() );
1330  }
1331 
1332  if (line == "Capture")
1333  {
1334  getline(DecayDB, line); // Nuclei is given with "A Z"
1335 
1336  do
1337  {
1338  double DPQuantity[vTime.size()];
1339  for(int k = 0; k < (int)vTime.size(); k++ )
1340  DPQuantity[k] = 0;
1341 
1342 
1343  start = 0;
1344  int Z = atoi(StringLine::NextWord(line, start, ' ').c_str());
1345  int A = atoi(StringLine::NextWord(line, start, ' ').c_str());
1346  int I = atoi(StringLine::NextWord(line, start, ' ').c_str());
1347 
1348  if(A!=0 && Z!=0)
1349  {
1350 
1351 
1352  ZAI zaitmp(Z, A, I);
1353  int i=0;
1354  while(start < (int)line.size())
1355  {
1356  long double DPQuantityTmp = atof(StringLine::NextWord(line, start, ' ').c_str());
1357  DPQuantity[i] = (double)DPQuantityTmp;
1358  i++;
1359 
1360  }
1361  fCaptureXS.insert(pair<ZAI ,TGraph* >(zaitmp, new TGraph(vTime.size()-1, Time, DPQuantity) ) );
1362  }
1363  getline(DecayDB, line); // Nuclei is given with "A Z"
1364  if(line == "" || line == "n2n" ) break;
1365  }while ( !DecayDB.eof() );
1366 
1367  }
1368 
1369  if (line == "n2n")
1370  {
1371 
1372  getline(DecayDB, line); // Nuclei is given with "A Z"
1373 
1374  do
1375  {
1376  double DPQuantity[vTime.size()];
1377  for(int k = 0; k < (int)vTime.size(); k++ )
1378  DPQuantity[k] = 0;
1379 
1380  start = 0;
1381  int Z = atoi(StringLine::NextWord(line, start, ' ').c_str());
1382  int A = atoi(StringLine::NextWord(line, start, ' ').c_str());
1383  int I = atoi(StringLine::NextWord(line, start, ' ').c_str());
1384 
1385  if(A!=0 && Z!=0)
1386  {
1387 
1388 
1389  ZAI zaitmp(Z, A, I);
1390  int i=0;
1391  while(start < (int)line.size())
1392  {
1393  long double DPQuantityTmp = atof(StringLine::NextWord(line, start, ' ').c_str());
1394  DPQuantity[i] = (double)DPQuantityTmp;
1395  i++;
1396 
1397  }
1398  fn2nXS.insert(pair<ZAI ,TGraph* >(zaitmp, new TGraph(vTime.size()-1, Time, DPQuantity) ) );
1399  }
1400  getline(DecayDB, line); // Nuclei is given with "A Z"
1401  if(line == "" ) break;
1402 
1403  }while ( !DecayDB.eof() );
1404  }
1405 
1406  }
1407  DecayDB.close();
1408  start = 0;
1409 
1410  string InfoDBFile = DBfile.erase(DBfile.size()-3,DBfile.size());
1411  InfoDBFile += "info";
1412  ifstream InfoDB(InfoDBFile.c_str()); // Open the File
1413  if(!InfoDB)
1414  {
1415  fLog->fLog << "!!Warning!! !!!EvolutionData!!! \n Can't open \"" << InfoDBFile << "\"\n" << endl;
1416  return;
1417  }
1418 
1419  start = 0;
1420  getline(InfoDB, line);
1421  if (StringLine::NextWord(line, start, ' ') == "Reactor")
1422  fReactorType = StringLine::NextWord(line, start, ' ');
1423  start = 0;
1424  getline(InfoDB, line);
1425  if (StringLine::NextWord(line, start, ' ') == "Fueltype")
1426  fFuelType = StringLine::NextWord(line, start, ' ');
1427  start = 0;
1428  getline(InfoDB, line);
1429  if (StringLine::NextWord(line, start, ' ') == "CycleTime")
1430  fCycleTime = atof(StringLine::NextWord(line, start, ' ').c_str());;
1431  getline(InfoDB, line); // Assembly HM Mass
1432  start = 0;
1433  getline(InfoDB, line);
1434  if (StringLine::NextWord(line, start, ' ') == "ConstantPower")
1435  fPower = atof(StringLine::NextWord(line, start, ' ').c_str());
1436  getline(InfoDB, line); // cutoff
1437  getline(InfoDB, line); // NUmber of Nuclei
1438  start = 0;
1439  getline(InfoDB, line);
1440  if (StringLine::NextWord(line, start, ' ') == "NormalizationFactor")
1441  {
1442  double NormFactor = atof(StringLine::NextWord(line, start, ' ').c_str());
1443  fPower = fPower * NormFactor;
1444  double Flux[vFlux.size()];
1445  for(int i=0; i < (int)vFlux.size();i++)
1446  Flux[i] = vFlux[i];
1447 
1448  fFlux = new TGraph(vTime.size()-1, Time, Flux);
1449  }
1450  start = 0;
1451  getline(InfoDB, line);
1452  if (StringLine::NextWord(line, start, ' ') == "FinalHeavyMetalMass")
1453  fHMMass = atof(StringLine::NextWord(line, start, ' ').c_str());
1454 
1455  }
1456 
1457 }
void EvolutionData::ReadDB ( string  DBfile,
bool  oldread = false 
)
protected

Définition à la ligne 856 du fichier EvolutionData.cxx.

857 {
858 
859  if(oldread)
860  {
861  OldReadDB(DBfile);
862  return;
863  }
864 
865  ifstream DecayDB(DBfile.c_str()); // Open the File
866  if(!DecayDB) //check if file is correctly open
867  {
868  cout << "!!Warning!! !!!EvolutionData!!! \n Can't open \"" << DBfile << "\"\n" << endl;
869  fLog->fLog << "!!Warning!! !!!EvolutionData!!! \n Can't open \"" << DBfile << "\"\n" << endl;
870  }
871  vector<double> vTime;
872 
873  string line;
874  int start = 0;
875 
876  getline(DecayDB, line);
877  if( tlc(StringLine::NextWord(line, start, ' ')) != "time")
878  {
879  cout << "!!Bad Trouble!! !!!EvolutionData!!! Bad Database file : " << DBfile << endl;
880  cout << "!!Bad Trouble!! !!!EvolutionData!!! The first Line MUST be the time line !!!" << endl;
881  fLog->fLog << "!!Bad Trouble!! !!!EvolutionData!!! Bad Database file : " << DBfile << endl;
882  fLog->fLog << "!!Bad Trouble!! !!!EvolutionData!!! The first Line MUST be the time line !!!" << endl;
883  exit (1);
884  }
885 
886  while(start < (int)line.size())
887  vTime.push_back(atof(StringLine::NextWord(line, start, ' ').c_str()));
888 
889  fFinalTime = vTime.back();
890  double Time[vTime.size()];
891  for(int i=0; i < (int)vTime.size();i++)
892  Time[i] = vTime[i];
893  const int NTimeStep = sizeof(Time)/sizeof(double);
894 
895 
896  enum { Keff=1, Flux, Inv, XSFis, XSCap, XSn2n };
897 
898  map<string, int> keyword_map;
899  keyword_map["keff"] = Keff;
900  keyword_map["flux"] = Flux;
901  keyword_map["xsfis"] = XSFis;
902  keyword_map["xscap"] = XSCap;
903  keyword_map["xsn2n"] = XSn2n;
904  keyword_map["inv"] = Inv;
905 
906  getline(DecayDB, line);
907 
908  do
909  {
910  start = 0;
911  switch (keyword_map[tlc(StringLine::NextWord(line, start, ' '))])
912  {
913  case Keff:
914  ReadKeff(line, Time, NTimeStep);
915  break;
916 
917  case Flux:
918  ReadFlux(line, Time, NTimeStep);
919  break;
920 
921  case Inv:
922  ReadInv(line, Time, NTimeStep);
923  break;
924 
925  case XSFis:
926  ReadXSFis(line, Time, NTimeStep);
927  break;
928 
929  case XSCap:
930  ReadXSCap(line, Time, NTimeStep);
931  break;
932 
933  case XSn2n:
934  ReadXSn2n(line, Time, NTimeStep);
935  break;
936 
937 
938  default:
939  break;
940  }
941 
942  getline(DecayDB, line);
943 
944 
945  }while ( !DecayDB.eof() );
946 
947 
948 
949 }
void EvolutionData::ReadFlux ( string  line,
double *  time,
int  NTimeStep 
)
protected

Définition à la ligne 980 du fichier EvolutionData.cxx.

981 {
982 
983 
984  int start = 0;
985 
986  if( tlc(StringLine::NextWord(line, start, ' ')) != "flux" ) // Check the keyword
987  {
988  cout << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"flux\" not found !" << endl;
989  fLog->fLog << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"flux\" not found !" << endl;
990  exit(1);
991  }
992 
993  double Flux[NTimeStep];
994 
995  int i = 0;
996  while(start < (int)line.size() && i < NTimeStep ) // Read the Data
997  {
998  Flux[i] = atof(StringLine::NextWord(line, start, ' ').c_str()) ;
999  i++;
1000  }
1001 
1002 
1003  fFlux = new TGraph(NTimeStep, time, Flux); // Add the TGraph
1004 
1005  ReadInfo(); // Read the .info associeted
1006 
1007 
1008 }
void EvolutionData::ReadInfo ( )
protected

Définition à la ligne 1148 du fichier EvolutionData.cxx.

1149 {
1150  string InfoDBFile = fDB_file.erase(fDB_file.size()-3,fDB_file.size());
1151  InfoDBFile += "Info";
1152  ifstream InfoDB(InfoDBFile.c_str()); // Open the File
1153  if(!InfoDB)
1154  {
1155  cout << "!!ERROR!! !!!EvolutionData!!! \n Can't open \"" << InfoDBFile << "\"\n" << endl;
1156  fLog->fLog << "!!ERROR!! !!!EvolutionData!!! \n Can't open \"" << InfoDBFile << "\"\n" << endl;
1157  exit(1);
1158  }
1159 
1160  int start = 0;
1161  string line;
1162  getline(InfoDB, line);
1163  if ( tlc(StringLine::NextWord(line, start, ' ')) == "reactor")
1164  fReactorType = StringLine::NextWord(line, start, ' ');
1165  start = 0;
1166  getline(InfoDB, line);
1167  if (tlc(StringLine::NextWord(line, start, ' ')) == "fueltype")
1168  fFuelType = StringLine::NextWord(line, start, ' ');
1169  start = 0;
1170  getline(InfoDB, line);
1171  if ( tlc(StringLine::NextWord(line, start, ' ')) == "cycletime")
1172  fCycleTime = atof(StringLine::NextWord(line, start, ' ').c_str());;
1173  getline(InfoDB, line); // Assembly HM Mass
1174  start = 0;
1175  getline(InfoDB, line);
1176  if ( tlc(StringLine::NextWord(line, start, ' ')) == "constantpower")
1177  fPower = atof(StringLine::NextWord(line, start, ' ').c_str());
1178 
1179 
1180  getline(InfoDB, line); // cutoff
1181  getline(InfoDB, line); // NUmber of Nuclei
1182  start = 0;
1183  getline(InfoDB, line);
1184  if ( tlc(StringLine::NextWord(line, start, ' ')) == "normalizationfactor")
1185  {
1186  double NormFactor = atof(StringLine::NextWord(line, start, ' ').c_str());
1187  fPower = fPower * NormFactor;
1188  }
1189  start = 0;
1190  getline(InfoDB, line);
1191  if ( tlc(StringLine::NextWord(line, start, ' ')) == "finalheavymetalmass")
1192  fHMMass = atof(StringLine::NextWord(line, start, ' ').c_str());
1193 }
void EvolutionData::ReadInv ( string  line,
double *  time,
int  NTimeStep 
)
protected

Définition à la ligne 1011 du fichier EvolutionData.cxx.

1012 {
1013 
1014 
1015  int start = 0;
1016  if( tlc(StringLine::NextWord(line, start, ' ')) != "inv" ) // Check the keyword
1017  {
1018  cout << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"inv\" not found !" << endl;
1019  fLog->fLog << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"inv\" not found !" << endl;
1020  exit(1);
1021  }
1022  // Read the Z A I
1023  int Z = atoi(StringLine::NextWord(line, start, ' ').c_str());
1024  int A = atoi(StringLine::NextWord(line, start, ' ').c_str());
1025  int I = atoi(StringLine::NextWord(line, start, ' ').c_str());
1026 
1027  if(A!=0 && Z!=0)
1028  {
1029  double Inv[NTimeStep];
1030 
1031  int i = 0;
1032  while(start < (int)line.size() && i < NTimeStep ) // Read the Data
1033  {
1034  Inv[i] = atof(StringLine::NextWord(line, start, ' ').c_str()) ;
1035  i++;
1036  }
1037  // Add the TGraph
1038  fEvolutionData.insert(pair<ZAI ,TGraph* >(ZAI(Z,A,I), new TGraph(NTimeStep, time, Inv) ) );
1039  }
1040 
1041 
1042 }
void EvolutionData::ReadKeff ( string  line,
double *  time,
int  NTimeStep 
)
protected

Définition à la ligne 951 du fichier EvolutionData.cxx.

952 {
953 
954 
955  int start = 0;
956  if( tlc(StringLine::NextWord(line, start, ' ')) != "keff" ) // Check the keyword
957  {
958  cout << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"keff\" not found !" << endl;
959  fLog->fLog << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"keff\" not found !" << endl;
960  exit(1);
961  }
962 
963 
964  double Keff[NTimeStep];
965 
966  int i = 0;
967  while(start < (int)line.size() && i < NTimeStep ) // Read the Data
968  {
969  Keff[i] = atof(StringLine::NextWord(line, start, ' ').c_str()) ;
970  i++;
971  }
972 
973  fFlux = new TGraph(NTimeStep, time, Keff); // Add the TGraph
974 
975 
976 
977 
978 }
void EvolutionData::ReadXSCap ( string  line,
double *  time,
int  NTimeStep 
)
protected

Définition à la ligne 1079 du fichier EvolutionData.cxx.

1080 {
1081 
1082 
1083  int start = 0;
1084  if( tlc(StringLine::NextWord(line, start, ' ')) != "xscap" ) // Check the keyword
1085  {
1086  cout << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"xscap\" not found !" << endl;
1087  fLog->fLog << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"xscap\" not found !" << endl;
1088  exit(1);
1089  }
1090  // Read the Z A I
1091  int Z = atoi(StringLine::NextWord(line, start, ' ').c_str());
1092  int A = atoi(StringLine::NextWord(line, start, ' ').c_str());
1093  int I = atoi(StringLine::NextWord(line, start, ' ').c_str());
1094 
1095  if(A!=0 && Z!=0)
1096  {
1097  double XSCap[NTimeStep];
1098 
1099  int i = 0;
1100  while(start < (int)line.size() && i < NTimeStep ) // Read the Data
1101  {
1102  XSCap[i] = atof(StringLine::NextWord(line, start, ' ').c_str()) ;
1103  i++;
1104  }
1105 
1106  // Add the TGraph
1107  fCaptureXS.insert(pair<ZAI ,TGraph* >(ZAI(Z,A,I), new TGraph(NTimeStep, time, XSCap) ) );
1108  }
1109 
1110 
1111 }
void EvolutionData::ReadXSFis ( string  line,
double *  time,
int  NTimeStep 
)
protected

Définition à la ligne 1045 du fichier EvolutionData.cxx.

1046 {
1047 
1048 
1049  int start = 0;
1050  if( tlc(StringLine::NextWord(line, start, ' ')) != "xsfis" ) // Check the keyword
1051  {
1052  cout << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"xsfis\" not found !" << endl;
1053  fLog->fLog << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"xsfis\" not found !" << endl;
1054  exit(1);
1055  }
1056  // Read the Z A I
1057  int Z = atoi(StringLine::NextWord(line, start, ' ').c_str());
1058  int A = atoi(StringLine::NextWord(line, start, ' ').c_str());
1059  int I = atoi(StringLine::NextWord(line, start, ' ').c_str());
1060 
1061  if(A!=0 && Z!=0)
1062  {
1063  double XSFis[NTimeStep];
1064 
1065  int i = 0;
1066  while(start < (int)line.size() && i < NTimeStep ) // Read the Data
1067  {
1068  XSFis[i] = atof(StringLine::NextWord(line, start, ' ').c_str()) ;
1069  i++;
1070  }
1071 
1072  // Add the TGraph
1073  fFissionXS.insert(pair<ZAI ,TGraph* >(ZAI(Z,A,I), new TGraph(NTimeStep, time, XSFis) ) );
1074  }
1075 
1076 
1077 }
void EvolutionData::ReadXSn2n ( string  line,
double *  time,
int  NTimeStep 
)
protected

Définition à la ligne 1113 du fichier EvolutionData.cxx.

1114 {
1115 
1116 
1117  int start = 0;
1118  if( tlc(StringLine::NextWord(line, start, ' ')) != "xsn2n" ) // Check the keyword
1119  {
1120  cout << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"xsn2n\" not found !" << endl;
1121  fLog->fLog << "!!ERROR!! !!!EvolutionData!!! \n Bad keyword : \"xsn2n\" not found !" << endl;
1122  exit(1);
1123  }
1124  // Read the Z A I
1125  int Z = atoi(StringLine::NextWord(line, start, ' ').c_str());
1126  int A = atoi(StringLine::NextWord(line, start, ' ').c_str());
1127  int I = atoi(StringLine::NextWord(line, start, ' ').c_str());
1128 
1129  if(A!=0 && Z!=0)
1130  {
1131  double XSn2n[NTimeStep];
1132 
1133  int i = 0;
1134  while(start < (int)line.size() && i < NTimeStep ) // Read the Data
1135  {
1136  XSn2n[i] = atof(StringLine::NextWord(line, start, ' ').c_str()) ;
1137  i++;
1138  }
1139  // Add the TGraph
1140  fn2nXS.insert(pair<ZAI ,TGraph* >(ZAI(Z,A,I), new TGraph(NTimeStep, time, XSn2n) ) );
1141  }
1142 
1143 
1144 }
void EvolutionData::SetFlux ( TGraph *  flux)
inline

Définition à la ligne 56 du fichier EvolutionData.hxx.

56 { fFlux = flux; }
void EvolutionData::SetFuelType ( string  fueltype)
inline

Définition à la ligne 53 du fichier EvolutionData.hxx.

53 { fFuelType = fueltype; }
void EvolutionData::SetHMMass ( double  HMMass)
inline

Définition à la ligne 55 du fichier EvolutionData.hxx.

55 { fHMMass = HMMass; }
void EvolutionData::SetPower ( double  power)
inline

Définition à la ligne 54 du fichier EvolutionData.hxx.

54 { fPower = power; }
void EvolutionData::SetReactorType ( string  reactortype)
inline

Définition à la ligne 52 du fichier EvolutionData.hxx.

52 { fReactorType = reactortype; }

Documentation des données membres

map<ZAI ,TGraph* > EvolutionData::fCaptureXS
protected

Définition à la ligne 98 du fichier EvolutionData.hxx.

double EvolutionData::fCycleTime
protected

Définition à la ligne 111 du fichier EvolutionData.hxx.

string EvolutionData::fDB_file
protected

Définition à la ligne 95 du fichier EvolutionData.hxx.

map<ZAI ,TGraph* > EvolutionData::fEvolutionData
protected

Définition à la ligne 96 du fichier EvolutionData.hxx.

cSecond EvolutionData::fFinalTime
protected

Définition à la ligne 103 du fichier EvolutionData.hxx.

map<ZAI ,TGraph* > EvolutionData::fFissionXS
protected

Définition à la ligne 97 du fichier EvolutionData.hxx.

TGraph* EvolutionData::fFlux
protected

Définition à la ligne 101 du fichier EvolutionData.hxx.

string EvolutionData::fFuelType
protected

Définition à la ligne 109 du fichier EvolutionData.hxx.

double EvolutionData::fHMMass
protected

Définition à la ligne 112 du fichier EvolutionData.hxx.

bool EvolutionData::fIsCrossSection
protected

Définition à la ligne 104 du fichier EvolutionData.hxx.

TGraph* EvolutionData::fKeff
protected

Définition à la ligne 100 du fichier EvolutionData.hxx.

LogFile* EvolutionData::fLog
protected

Définition à la ligne 129 du fichier EvolutionData.hxx.

map<ZAI ,TGraph* > EvolutionData::fn2nXS
protected

Définition à la ligne 99 du fichier EvolutionData.hxx.

double EvolutionData::fPower
protected

Définition à la ligne 110 du fichier EvolutionData.hxx.

string EvolutionData::fReactorType
protected

Définition à la ligne 108 du fichier EvolutionData.hxx.


La documentation de cette classe a été générée à partir des fichiers suivants :