cloudy  trunk
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
conv.h
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2017 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 
4 #ifndef CONV_H_
5 #define CONV_H_
6 
13 #include "module.h"
14 
17 void ConvIterCheck( void );
18 
21 bool ConvInitSolution();
22 
27 int ConvPresTempEdenIoniz(void);
28 
32 int ConvTempEdenIoniz(void);
33 
37 int ConvEdenIoniz(void);
38 
41 int ConvIoniz(void);
42 
47 void ConvFail(
48  /* chMode is one of "pres", "eden", "ioni", "pops", "grai", "temp" */
49  const char chMode[],
50  /* chDetail - string giving details about the convergence failure */
51  const char chDetail[] );
52 
60 int ConvBase(long loopi);
61 
65 int eden_sum(void);
66 
68 void EdenChange( double EdenNew );
69 
70 class ConvergenceCounter;
71 
75 struct t_conv : public module {
76 
77  const char *chName() const
78  {
79  return "conv";
80  }
81  void zero();
82  void comment(t_warnings&) {}
83 
86 
87 private:
91 
92 public:
94  {
95  m_lgConvIoniz = true;
96  strncpy(m_chConvIoniz, "NONE!!!!!", INPUT_LINE_LENGTH-1);
97  m_BadConvIoniz[0] = 0.0;
98  m_BadConvIoniz[1] = 0.0;
99  }
100  void setConvIonizFail(const char* reason, double oldval, double newval)
101  {
102  m_lgConvIoniz = false;
103  strncpy(m_chConvIoniz, reason, INPUT_LINE_LENGTH-1);
105  m_BadConvIoniz[0] = oldval;
106  m_BadConvIoniz[1] = newval;
107  }
108  bool lgConvIoniz() const
109  {
110  return m_lgConvIoniz;
111  }
112  const char *chConvIoniz() const
113  {
114  return m_chConvIoniz;
115  }
116  double convIonizOldVal() const
117  {
118  return m_BadConvIoniz[0];
119  }
120  double convIonizNewVal() const
121  {
122  return m_BadConvIoniz[1];
123  }
124 
125 
129 
130 private:
133 
134 public:
137 
138 private:
141  double m_BadConvIoniz[2];
142 
143 public:
145  long int nPres2Ioniz;
146 
151 
154  long int limPres2Ioniz;
155 
159  long int nTotalIoniz;
160 
165 
168  bool lgSearch;
169 
171 
174 
178 
182 
185 
189 
192 
195 
198 
200  long int nTotalFailures;
201 
203  long int nTeFail;
204 
207 
209  long int nPreFail;
210 
212  long int nNeFail;
213 
216 
218  long int nIonFail;
219 
221  long int nPopFail;
222 
224  long int nGrainFail;
225 
227  long int nChemFail;
228 
230  long int LimFail;
231 
233  bool lgMap;
234 
236  long int ifailz[12];
237 
240  char chSolverEden[20];
241 
244  char chSolverTemp[20];
245 
248  bool lgBadStop;
249 
251  bool lgAutoIt;
252 
255 
258 
261 
266 
271 
273 
277 
279 
284 
286  double dCmHdT;
287 
289  double sigma_dCmHdT;
290 
294  long int hist_pres_nzone;
295 
299  long int hist_temp_nzone;
300 
301 private:
302  // Variables monitoring progress of convergence
303  std::vector<long> m_counters;
304  std::vector<long> m_counters_zone;
305  std::vector<string> m_labels;
306 public:
307  size_t ntypes(void) const
308  {
309  return m_counters.size();
310  }
311  ConvergenceCounter register_(const string name);
312  void incrementCounter( const size_t type )
313  {
314  ++m_counters[type];
315  ++m_counters_zone[type];
316  }
318  {
319  for( size_t i=0; i<m_counters.size(); ++i )
320  m_counters[i] = 0;
321  }
323  {
324  for( size_t i=0; i<m_counters_zone.size(); ++i )
325  m_counters_zone[i] = 0;
326  }
327  long getCounter( const long type ) const
328  {
329  return m_counters[type];
330  }
331  long getCounter( const string name ) const
332  {
333  for( size_t i=0; i<m_counters.size(); ++i )
334  {
335  if (name == m_labels[i])
336  return m_counters[i];
337  }
338  return 0;
339  }
340  long getCounterZone( const long type ) const
341  {
342  return m_counters_zone[type];
343  }
344  const char* getCounterName( const long type ) const
345  {
346  return m_labels[type].c_str();
347  }
348 };
349 
351 {
353  size_t m_type;
354 public:
355  ConvergenceCounter(t_conv* convp, size_t type)
356  : m_conv(convp)
357  , m_type(type)
358  {}
360  {
362  return *this;
363  }
364 };
365 
366 extern t_conv conv;
367 
368 #endif /* CONV_H_ */
long int nGrainFail
Definition: conv.h:224
long getCounterZone(const long type) const
Definition: conv.h:340
long int nTeFail
Definition: conv.h:203
bool lgConvEden
Definition: conv.h:197
vector< double > hist_pres_density
Definition: conv.h:293
void comment(t_warnings &)
Definition: conv.h:82
ConvergenceCounter & operator++(void)
Definition: conv.h:359
Definition: conv.h:75
double MaxFractionalDensityStepPerIteration
Definition: conv.h:272
bool m_lgConvIoniz
Definition: conv.h:132
double EdenErrorAllowed
Definition: conv.h:265
vector< double > hist_pres_error
Definition: conv.h:293
const char * chName() const
Definition: conv.h:77
int ConvBase(long loopi)
Definition: conv_base.cpp:188
void zero()
Definition: conv.cpp:7
char chConvEden[INPUT_LINE_LENGTH]
Definition: conv.h:85
long getCounter(const string name) const
Definition: conv.h:331
bool lgFirstSweepThisZone
Definition: conv.h:148
ConvergenceCounter register_(const string name)
Definition: conv.cpp:88
char chNotConverged[INPUT_LINE_LENGTH]
Definition: conv.h:128
int eden_sum(void)
Definition: eden_sum.cpp:17
bool lgConvPres
Definition: conv.h:194
void resetCountersZone()
Definition: conv.h:322
realnum BigHeatCoolError
Definition: conv.h:176
t_conv conv
Definition: conv.cpp:5
long int nTotalIoniz_start
Definition: conv.h:164
long int nNeFail
Definition: conv.h:212
long int limPres2Ioniz
Definition: conv.h:154
void resetConvIoniz()
Definition: conv.h:93
realnum GasPhaseAbundErrorAllowed
Definition: conv.h:283
double convIonizNewVal() const
Definition: conv.h:120
bool lgConvPops
Definition: conv.h:136
realnum AverPressError
Definition: conv.h:181
realnum BigPressError
Definition: conv.h:180
realnum AverHeatCoolError
Definition: conv.h:177
bool lgAllTransitions
Definition: conv.h:254
bool lgConvIoniz() const
Definition: conv.h:108
bool lgOscilOTS
Definition: conv.h:188
realnum PressureErrorAllowed
Definition: conv.h:270
int ConvTempEdenIoniz(void)
long int nChemFail
Definition: conv.h:227
realnum autocv
Definition: conv.h:260
bool lgBadStop
Definition: conv.h:248
bool lgIonStageTrimed
Definition: conv.h:184
bool lgLyaMaseCommentDone
Definition: conv.h:170
vector< double > hist_temp_cool
Definition: conv.h:298
bool lgSearch
Definition: conv.h:168
long int hist_temp_nzone
Definition: conv.h:299
const char * chConvIoniz() const
Definition: conv.h:112
const char * getCounterName(const long type) const
Definition: conv.h:344
bool lgMap
Definition: conv.h:233
long int nPres2Ioniz
Definition: conv.h:145
std::vector< long > m_counters_zone
Definition: conv.h:304
long int ifailz[12]
Definition: conv.h:236
char m_chConvIoniz[INPUT_LINE_LENGTH]
Definition: conv.h:90
vector< double > hist_pres_current
Definition: conv.h:293
long getCounter(const long type) const
Definition: conv.h:327
vector< double > hist_temp_temp
Definition: conv.h:298
float realnum
Definition: cddefines.h:124
realnum IonizErrorAllowed
Definition: conv.h:278
const int INPUT_LINE_LENGTH
Definition: cddefines.h:301
double sigma_dCmHdT
Definition: conv.h:289
double dCmHdT
Definition: conv.h:286
double m_BadConvIoniz[2]
Definition: conv.h:141
realnum HeatCoolRelErrorAllowed
Definition: conv.h:276
long int hist_pres_nzone
Definition: conv.h:294
void ConvFail(const char chMode[], const char chDetail[])
Definition: conv_fail.cpp:16
long int nTotalIoniz
Definition: conv.h:159
std::vector< long > m_counters
Definition: conv.h:303
long int nPreFail
Definition: conv.h:209
long int LimFail
Definition: conv.h:230
bool lgConvTemp
Definition: conv.h:191
void resetCounters()
Definition: conv.h:317
void ConvIterCheck(void)
void incrementCounter(const size_t type)
Definition: conv.h:312
bool lgAutoIt
Definition: conv.h:251
realnum failmx
Definition: conv.h:206
realnum AverEdenError
Definition: conv.h:173
bool lgUpdateCouplings
Definition: conv.h:257
int ConvPresTempEdenIoniz(void)
vector< double > hist_temp_heat
Definition: conv.h:298
long int nPopFail
Definition: conv.h:221
int ConvIoniz(void)
Definition: conv_ioniz.cpp:11
size_t m_type
Definition: conv.h:353
std::vector< string > m_labels
Definition: conv.h:305
void setConvIonizFail(const char *reason, double oldval, double newval)
Definition: conv.h:100
size_t ntypes(void) const
Definition: conv.h:307
long int nIonFail
Definition: conv.h:218
t_conv * m_conv
Definition: conv.h:352
bool lgLastSweepThisZone
Definition: conv.h:150
void EdenChange(double EdenNew)
Definition: eden_change.cpp:11
char chSolverEden[20]
Definition: conv.h:240
int ConvEdenIoniz(void)
realnum BigEdenError
Definition: conv.h:215
Definition: module.h:26
char chSolverTemp[20]
Definition: conv.h:244
double convIonizOldVal() const
Definition: conv.h:116
long int nTotalFailures
Definition: conv.h:200
bool ConvInitSolution()
ConvergenceCounter(t_conv *convp, size_t type)
Definition: conv.h:355