Cloudy
Spectral Synthesis Code for Astrophysics
Loading...
Searching...
No Matches
conv.h
Go to the documentation of this file.
1/* This file is part of Cloudy and is copyright (C)1978-2025 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
12
13#include "module.h"
14
17void ConvIterCheck();
18
21void ConvInitSolution(double);
22
26
30
33void ConvEdenIoniz();
34
36void ConvIoniz();
37
42void ConvFail(
43 /* chMode is one of "pres", "eden", "ioni", "pops", "grai", "temp" */
44 const char chMode[],
45 /* chDetail - string giving details about the convergence failure */
46 const char chDetail[] );
47
55void ConvBase(long loopi);
56
60void eden_sum();
61
63void EdenChange( double EdenNew );
64
66
70struct t_conv : public module {
71
72 const char *chName() const
73 {
74 return "conv";
75 }
76 void zero();
78
79private:
83
84public:
86 {
87 m_lgConvIoniz = true;
88 m_chConvIoniz = "NONE!!!!!";
89 m_BadConvIoniz[0] = 0.0;
90 m_BadConvIoniz[1] = 0.0;
91 }
92 void setConvIonizFail(const char* reason, double oldval, double newval)
93 {
94 m_lgConvIoniz = false;
95 m_chConvIoniz = reason;
96 m_BadConvIoniz[0] = oldval;
97 m_BadConvIoniz[1] = newval;
98 }
99 bool lgConvIoniz() const
100 {
101 return m_lgConvIoniz;
102 }
103 const char *chConvIoniz() const
104 {
105 return m_chConvIoniz.c_str();
106 }
107 double convIonizOldVal() const
108 {
109 return m_BadConvIoniz[0];
110 }
111 double convIonizNewVal() const
112 {
113 return m_BadConvIoniz[1];
114 }
115
116
120
121private:
124
125public:
128
129private:
132 double m_BadConvIoniz[2];
133
134public:
136 long int nPres2Ioniz;
137
142
146
150 long int nTotalIoniz;
151
156
160
163
167
171
174
178
181
184
187
190
192 long int nTeFail;
193
196
198 long int nPreFail;
199
201 long int nNeFail;
202
205
207 long int nIonFail;
208
210 long int nPopFail;
211
213 long int nGrainFail;
214
216 long int nChemFail;
217
219 long int LimFail;
220
222 bool lgMap;
223
225 long int ifailz[12];
226
229 char chSolverEden[20];
230
233 char chSolverTemp[20];
234
238
241
244
247
250
255
260
262
266
268
273
275 double dCmHdT;
276
279
284
289
290private:
291 // Variables monitoring progress of convergence
292 std::vector<long> m_counters;
293 std::vector<long> m_counters_zone;
294 std::vector<long> m_counters_max;
295 std::vector<string> m_labels;
296public:
297 size_t ntypes(void) const
298 {
299 return m_counters.size();
300 }
301 ConvergenceCounter register_(const string name);
302 void incrementCounter( const size_t type )
303 {
304 ++m_counters[type];
305 ++m_counters_zone[type];
306 }
308 {
309 for( size_t i=0; i<m_counters.size(); ++i )
310 {
311 m_counters[i] = 0;
312 m_counters_max[i] = 0;
313 }
314 }
316 {
317 for( size_t i=0; i<m_counters_zone.size(); ++i )
318 {
320 m_counters_zone[i] = 0;
321 }
322 }
323 long getCounter( const long type ) const
324 {
325 return m_counters[type];
326 }
327 long getCounter( const string& name ) const
328 {
329 for( size_t i=0; i<m_counters.size(); ++i )
330 {
331 if (name == m_labels[i])
332 return m_counters[i];
333 }
334 return 0;
335 }
336 long getCounterZone( const long type ) const
337 {
338 return m_counters_zone[type];
339 }
340 long getCounterZone( const string& name ) const
341 {
342 for( size_t i=0; i<m_counters.size(); ++i )
343 {
344 if (name == m_labels[i])
345 return m_counters_zone[i];
346 }
347 return 0;
348 }
349 long getCounterMax( const long type ) const
350 {
351 return m_counters_max[type];
352 }
353 long getCounterMax( const string& name ) const
354 {
355 for( size_t i=0; i<m_counters.size(); ++i )
356 {
357 if (name == m_labels[i])
358 return m_counters_max[i];
359 }
360 return 0;
361 }
362 const char* getCounterName( const long type ) const
363 {
364 return m_labels[type].c_str();
365 }
366};
367
369{
371 size_t m_type;
372public:
373 ConvergenceCounter(t_conv* convp, size_t type)
374 : m_conv(convp)
375 , m_type(type)
376 {}
378 {
379 m_conv->incrementCounter(m_type);
380 return *this;
381 }
382};
383
384extern t_conv conv;
385
386#endif /* CONV_H_ */
const int INPUT_LINE_LENGTH
Definition cddefines.h:311
float realnum
Definition cddefines.h:127
long max(int a, long b)
Definition cddefines.h:821
Definition conv.h:369
ConvergenceCounter & operator++(void)
Definition conv.h:377
ConvergenceCounter(t_conv *convp, size_t type)
Definition conv.h:373
t_conv * m_conv
Definition conv.h:370
size_t m_type
Definition conv.h:371
module()
Definition module.h:29
Definition warnings.h:11
t_conv conv
Definition conv.cpp:5
void ConvIterCheck()
Definition conv_itercheck.cpp:24
void ConvBase(long loopi)
Definition conv_base.cpp:189
void ConvEdenIoniz()
Definition conv_eden_ioniz.cpp:21
void EdenChange(double EdenNew)
Definition eden_change.cpp:11
void ConvIoniz()
Definition conv_ioniz.cpp:11
void ConvInitSolution(double)
Definition conv_init_solution.cpp:235
void eden_sum()
Definition eden_sum.cpp:17
void ConvTempEdenIoniz()
Definition conv_temp_eden_ioniz.cpp:33
void ConvPresTempEdenIoniz()
Definition conv_pres_temp_eden_ioniz.cpp:22
void ConvFail(const char chMode[], const char chDetail[])
Definition conv_fail.cpp:16
Definition conv.h:70
long int LimFail
Definition conv.h:219
void zero()
Definition conv.cpp:7
bool lgConvTemp
Definition conv.h:180
void comment(t_warnings &)
Definition conv.h:77
long int nTotalIoniz
Definition conv.h:150
long getCounter(const string &name) const
Definition conv.h:327
double dCmHdT
Definition conv.h:275
bool lgMap
Definition conv.h:222
std::vector< long > m_counters
Definition conv.h:292
realnum IonizErrorAllowed
Definition conv.h:267
bool lgAllTransitions
Definition conv.h:243
long int ifailz[12]
Definition conv.h:225
bool lgFirstSweepThisZone
Definition conv.h:139
char chSolverTemp[20]
Definition conv.h:233
long int nTotalIoniz_start
Definition conv.h:155
double sigma_dCmHdT
Definition conv.h:278
realnum autocv
Definition conv.h:249
size_t ntypes(void) const
Definition conv.h:297
long getCounterMax(const string &name) const
Definition conv.h:353
realnum PressureErrorAllowed
Definition conv.h:259
bool lgAutoIt
Definition conv.h:240
bool lgOscilOTS
Definition conv.h:177
bool lgIonStageTrimed
Definition conv.h:173
long getCounterZone(const long type) const
Definition conv.h:336
long getCounterMax(const long type) const
Definition conv.h:349
double MaxFractionalDensityStepPerIteration
Definition conv.h:261
bool lgConvPops
Definition conv.h:127
vector< double > hist_pres_density
Definition conv.h:282
long int nPopFail
Definition conv.h:210
realnum BigEdenError
Definition conv.h:204
realnum failmx
Definition conv.h:195
vector< double > hist_pres_error
Definition conv.h:282
void resetCounters()
Definition conv.h:307
bool lgConvEden
Definition conv.h:186
long int nTeFail
Definition conv.h:192
realnum AverPressError
Definition conv.h:170
double convIonizNewVal() const
Definition conv.h:111
std::vector< long > m_counters_zone
Definition conv.h:293
const char * chName() const
Definition conv.h:72
vector< double > hist_pres_current
Definition conv.h:282
long int nPres2Ioniz
Definition conv.h:136
std::vector< long > m_counters_max
Definition conv.h:294
long getCounter(const long type) const
Definition conv.h:323
bool lgLastSweepThisZone
Definition conv.h:141
long int nGrainFail
Definition conv.h:213
long int nNeFail
Definition conv.h:201
bool m_lgConvIoniz
Definition conv.h:123
realnum AverHeatCoolError
Definition conv.h:166
char chSolverEden[20]
Definition conv.h:229
void setConvIonizFail(const char *reason, double oldval, double newval)
Definition conv.h:92
bool lgBadStop
Definition conv.h:237
long int hist_temp_nzone
Definition conv.h:288
long int nChemFail
Definition conv.h:216
long getCounterZone(const string &name) const
Definition conv.h:340
const char * getCounterName(const long type) const
Definition conv.h:362
realnum BigHeatCoolError
Definition conv.h:165
realnum BigPressError
Definition conv.h:169
const char * chConvIoniz() const
Definition conv.h:103
vector< double > hist_temp_heat
Definition conv.h:287
void resetCountersZone()
Definition conv.h:315
realnum AverEdenError
Definition conv.h:162
long int nPreFail
Definition conv.h:198
bool lgConvPres
Definition conv.h:183
long int hist_pres_nzone
Definition conv.h:283
void resetConvIoniz()
Definition conv.h:85
long int limPres2Ioniz
Definition conv.h:145
std::vector< string > m_labels
Definition conv.h:295
string m_chConvIoniz
Definition conv.h:82
long int nIonFail
Definition conv.h:207
double m_BadConvIoniz[2]
Definition conv.h:132
long int nTotalFailures
Definition conv.h:189
realnum GasPhaseAbundErrorAllowed
Definition conv.h:272
char chNotConverged[INPUT_LINE_LENGTH]
Definition conv.h:119
vector< double > hist_temp_cool
Definition conv.h:287
bool lgUpdateCouplings
Definition conv.h:246
double EdenErrorAllowed
Definition conv.h:254
realnum HeatCoolRelErrorAllowed
Definition conv.h:265
vector< double > hist_temp_temp
Definition conv.h:287
ConvergenceCounter register_(const string name)
Definition conv.cpp:86
void incrementCounter(const size_t type)
Definition conv.h:302
double convIonizOldVal() const
Definition conv.h:107
bool lgSearch
Definition conv.h:159
bool lgConvIoniz() const
Definition conv.h:99