cloudy  trunk
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
atmdat_3body.cpp
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 /*atmdat_3body derive three-body recombination coefficients */
4 /*da interpolate on three body recombination by Steve Cota */
5 #include "cddefines.h"
6 #include "ionbal.h"
7 #include "phycon.h"
8 #include "trace.h"
9 #include "save.h"
10 #include "atmdat.h"
11 #include "dense.h"
12 
13 static const int MAXZ = 28;
14 
15 STATIC void blkdata1(void);
16 STATIC double da(double z, double temp, double eden);
17 
18 static double a2[63],
19  b2[63],
20  x2[63];
21 
22 static double a0[83],
23  x0[83];
24 static realnum b0[83],
25  b1[83];
26 
27 static double a1[83],
28  x1[83];
29 
30 static double tz[83],
31  zlog7[28],
32  zlog2[28];
33 
34 #define RC_INI(rs) (rs[_r].rc>1 ? DEC_RC_(rs) : (rs[_r].rc==1 ? INC_NDX_(rs) : rs[_r].ini ))
35 #define DEC_RC_(rs) (rs[_r].rc--,rs[_r].ini)
36 #define INC_NDX_(rs) (_r++,rs[_r-1].ini)
37 
38 /* this "mapping function" occurs below */
39 STATIC double xmap(double x[],
40  double y[],
41  double x0);
42 
43 /* inverse routine, also below */
44 STATIC double xinvrs(double y,
45  double a,
46  double b,
47  double u,
48  double v,
49  long int *ifail);
50 
51 /* =================================================================== */
52 void atmdat_3body(void)
53 {
54  long int i,
55  iup;
56 
57  DEBUG_ENTRY( "atmdat_3body()" );
58 
59 
60  if( ionbal.lgNoCota )
61  {
62  for( i=0; i < LIMELM; i++ )
63  {
64  ionbal.CotaRate[i] = 0.;
65  }
66  atmdat.nsbig = 0;
67  return;
68  }
69 
70  if( atmdat.nsbig == 0 )
71  {
72  /* steve cota only defined things up to 28 */
73  iup = MIN2(28,LIMELM);
74  }
75  else
76  {
77  iup = MIN3( LIMELM , atmdat.nsbig , 28 );
78  }
79 
80  for( i=0; i < iup; i++ )
81  {
82  ionbal.CotaRate[i] = (realnum)da((double)(i+1), MAX2(100.,phycon.te), dense.eden);
83  }
84 
85  atmdat.nsbig = 0;
86 
88  {
89  fprintf( ioQQQ, " 3BOD rate:" );
90  for( i=1; i <= 14; i++ )
91  {
92  fprintf( ioQQQ, "%8.1e", ionbal.CotaRate[i-1] );
93  }
94  fprintf( ioQQQ, "\n" );
95  }
96 
97  if( save.lgioRecom )
98  {
99  /* option to save coefficients */
100  fprintf( save.ioRecom, " 3-body rec coef vs charge \n" );
101  for( i=0; i < iup; i++ )
102  {
103  fprintf( save.ioRecom, "%3ld%10.2e\n", i+1, ionbal.CotaRate[i] );
104  }
105  fprintf( save.ioRecom, "\n");
106  }
107  return;
108 }
109 
110 /* =================================================================== */
111 STATIC double da(double z, double temp, double eden)
112 {
113  /*lint -e736 loss of precision in assignment in translated data */
114  long int jfail,
115  nt,
116  nt1,
117  nz;
118 
119  static bool lgCalled=false;
120  double a,
121  alogn,
122  alognc,
123  alogt,
124  b,
125  c,
126  d,
127  da_v,
128  expp,
129  u,
130  v,
131  x,
132  xnc,
133  y,
134  zlog;
135  double yya[3],
136  xx[3],
137  yyb[3],
138  yyx[3],
139  yyy[3];
140 
141  /* alogte is base 10 log of temperature and elec density*/
142  double alogte , alogne;
143 
144  DEBUG_ENTRY( "da()" );
145 
146  /* WRITTEN BY S. A. COTA, 2/87
147  * */
148 
149  /* MAXZ IS THE MAXIMUM EFFECTIVE NUCLEAR CHARGE ( = IONIC CHARGE + 1 )
150  * WHICH THE DIMENSION STATEMENTS ACCOMODATE.
151  *
152  * IT IS USED ONLY FOR THE ARRAY ZLOG7 ( = 7 * LOG ( Z ) )
153  * AND THE ARRAY ZLOG2 ( = 2 * LOG ( Z ) ) . THESE ARRAYS
154  * CONTAIN EASILY CALCULATED VALUES, WHICH HAVE BEEN STORED
155  * TO SAVE TIME IN EXECUTION.
156  *
157  * IF MAXZ IS EXCEEDED, THIS PROGRAM SIMPLY CALCULATES THE
158  * LOGS INSTEAD OF LOOKING THEM UP.
159  *
160  * */
161 
162  if( !lgCalled )
163  {
164  lgCalled = true;
165  blkdata1();
166  }
167 
168  /*begin sanity check */
169  ASSERT( zlog7[1] > 0. );
170 
171  nz = (long)(z + .1);
172  // The original routine has major discontinuities
173  // The use of eden_limited (here and at the end of the routine) is an attempt
174  // to smooth these problems and still get roughly the same behavior.
175  double eden_limited = MIN2( eden, 1e5 );
176  alogne = log10(eden_limited);
177  alogte = log10(temp);
178  if( nz > MAXZ )
179  {
180  zlog = log10(z);
181  alogt = alogte - 2.*zlog;
182  alogn = alogne - 7.*zlog;
183  }
184  else
185  {
186  alogt = alogte - zlog2[nz-1];
187  alogn = alogne - zlog7[nz-1];
188  }
189 
190  /* CHECK IF PARAMETERS ARE WITHIN BOUNDS. IF NOT, INCREMENT
191  * APPROPRIATE ERROR COUNTER AND SET TO BOUNDARY IF
192  * NECESSARY:
193  *
194  * DEFINITION OF ERROR COUNTERS:
195  *
196  * ILT : LOW T
197  * ILTLN : LOW T , LOW N
198  * ILTHN : LOW T , HIGH N
199  * IHTHN : HIGH T , HIGH N
200  * */
201  if( alogt < 0. )
202  {
203  ionbal.ilt += 1;
204  alogt = 0.;
205  }
206 
207  if( alogt <= 2.1760913 )
208  {
209  if( alogn < (3.5*alogt - 8.) )
210  {
211  ionbal.iltln += 1;
212  }
213  else if( alogn > (3.5*alogt - 2.) )
214  {
215  ionbal.ilthn += 1;
216  alogn = 3.5*alogt - 2.;
217  }
218 
219  }
220  else if( alogt <= 2.4771213 )
221  {
222  if( alogn > 9. )
223  {
224  ASSERT( 0 );
225  ionbal.ilthn += 1;
226  alogn = 9.;
227  }
228 
229  }
230  else if( alogt <= 5.1139434 )
231  {
232  if( alogn > 13. )
233  {
234  ASSERT( 0 );
235  ionbal.ihthn += 1;
236  alogn = 13.;
237  }
238 
239  }
240 
241  // limit used temperature to 10^5 K and
242  // extrapolate with T^-2 at end of routine (to avoid discontinuous behavior).
243  double alogt_limited = MIN2( alogt, 5.0 );
244  double alogt_save = alogt;
245  alogt = alogt_limited;
246 
247  /* LOCATE POSITION IN ARRAYS */
248  if( alogt <= 2. )
249  {
250  nt = (long)(9.9657843*alogt + 1.);
251  }
252  else
253  {
254  nt = (long)(19.931568*alogt - 19.);
255  }
256  nt = MIN2(83,nt);
257  nt = MAX2(1,nt);
258 
259  /* CENTER UP SINCE ARRAY VALUES ARE ROUNDED */
260  if( fabs(alogt-tz[nt-1]) >= fabs(alogt-tz[MIN2(83,nt+1)-1]) )
261  {
262  nt = MIN2(83,nt+1);
263  }
264  else if( fabs(alogt-tz[nt-1]) > fabs(alogt-tz[MAX2(1,nt-1)-1]) )
265  {
266  nt = MAX2(1,nt-1);
267  }
268 
269  /* CHECK IF INTERPOLATION IS NEEDED AND PROCEED IF NOT.*/
270  if( fabs(alogt-tz[nt-1]) < 0.00001 )
271  {
272  if( z != 1.0 )
273  {
274  c = a1[nt-1];
275  d = b1[nt-1];
276  u = x1[nt-1];
277  v = 8.90;
278  }
279  else
280  {
281  nt = MAX2(21,nt);
282  nt = MIN2(83,nt);
283  c = a2[nt-(21)];
284  d = b2[nt-(21)];
285  u = x2[nt-(21)];
286  v = 9.40;
287  }
288 
289  xnc = xinvrs(alogn,c,d,u,v,&jfail);
290  if( xnc <= 0. || jfail != 0 )
291  {
292  ionbal.ifail = 1;
293  da_v = 0.;
294  return( da_v );
295  }
296  alognc = log10(xnc);
297 
298  a = a0[nt-1];
299  b = b0[nt-1];
300  x = -2.45;
301  y = x0[nt-1];
302 
303  /* IF INTERPOLATION WAS REQUIRED,
304  * CHECK THAT NT IS NOT ON THE EDGE OF A DISCONTINUITY,
305  * EITHER AT END OF ARRAYS OR WITHIN THEM,
306  * WHERE VALUES CHANGE ABRUPTLY.
307  * */
308  }
309  else
310  {
311  if( (nt <= 21) && (z == 1.0) )
312  {
313  nt = 22;
314  }
315  else if( nt <= 1 )
316  {
317  nt = 2;
318  }
319  else if( nt >= 83 )
320  {
321  nt = 82;
322  }
323  else if( nt == 24 )
324  {
325  if( alogt <= 2.1760913 )
326  {
327  nt = 23;
328  }
329  else
330  {
331  nt = 25;
332  }
333  }
334  else if( nt == 30 )
335  {
336  if( alogt <= 2.4771213 )
337  {
338  nt = 29;
339  }
340  else
341  {
342  nt = 31;
343  }
344  }
345 
346  long nt0 = nt - 1;
347  nt1 = nt + 1;
348  xx[0] = tz[nt0-1];
349  xx[1] = tz[nt-1];
350  xx[2] = tz[nt1-1];
351 
352  if( z != 1.0 )
353  {
354  if( nt0 == 24 )
355  {
356  yya[0] = 17.2880135;
357  yyb[0] = 6.93410742e03;
358  yyx[0] = -3.75;
359  }
360  else if( nt0 == 30 )
361  {
362  yya[0] = 17.4317989;
363  yyb[0] = 1.36653821e03;
364  yyx[0] = -3.40;
365  }
366  else
367  {
368  yya[0] = a1[nt0-1];
369  yyb[0] = b1[nt0-1];
370  yyx[0] = x1[nt0-1];
371  }
372 
373  yya[1] = a1[nt-1];
374  yya[2] = a1[nt1-1];
375  c = xmap(xx,yya,alogt);
376  yyb[1] = b1[nt-1];
377  yyb[2] = b1[nt1-1];
378  d = xmap(xx,yyb,alogt);
379  yyx[1] = x1[nt-1];
380  yyx[2] = x1[nt1-1];
381  u = xmap(xx,yyx,alogt);
382  v = 8.90;
383 
384  }
385  else
386  {
387  if( nt0 == 24 )
388  {
389  yya[0] = 20.1895161;
390  yyb[0] = 2.25774918e01;
391  yyx[0] = -1.66;
392  }
393  else if( nt0 == 30 )
394  {
395  yya[0] = 19.8647804;
396  yyb[0] = 6.70408707e02;
397  yyx[0] = -2.12;
398  }
399  else
400  {
401  yya[0] = a2[nt0-(21)];
402  yyb[0] = b2[nt0-(21)];
403  yyx[0] = x2[nt0-(21)];
404  }
405 
406  yya[1] = a2[nt-(21)];
407  yya[2] = a2[nt1-(21)];
408  c = xmap(xx,yya,alogt);
409  yyb[1] = b2[nt-(21)];
410  yyb[2] = b2[nt1-(21)];
411  d = xmap(xx,yyb,alogt);
412  yyx[1] = x2[nt-(21)];
413  yyx[2] = x2[nt1-(21)];
414  u = xmap(xx,yyx,alogt);
415  v = 9.40;
416  }
417 
418  xnc = xinvrs(alogn,c,d,u,v,&jfail);
419  if( xnc <= 0. || jfail != 0 )
420  {
421  ionbal.ifail = 1;
422  da_v = 0.;
423  return( da_v );
424  }
425  alognc = log10(xnc);
426 
427  if( nt0 == 24 )
428  {
429  yya[0] = -8.04963875;
430  yyb[0] = 1.07205127e03;
431  yyy[0] = 2.05;
432  }
433  else if( nt0 == 30 )
434  {
435  yya[0] = -8.54721069;
436  yyb[0] = 4.70450195e02;
437  yyy[0] = 2.05;
438  }
439  else
440  {
441  yya[0] = a0[nt0-1];
442  yyb[0] = b0[nt0-1];
443  yyy[0] = x0[nt0-1];
444  }
445 
446  yya[1] = a0[nt-1];
447  yya[2] = a0[nt1-1];
448  a = xmap(xx,yya,alogt);
449  yyb[1] = b0[nt-1];
450  yyb[2] = b0[nt1-1];
451  b = xmap(xx,yyb,alogt);
452  x = -2.45;
453  yyy[1] = x0[nt-1];
454  yyy[2] = x0[nt1-1];
455  y = xmap(xx,yyy,alogt);
456  }
457 
458  expp = a - y*alognc + b*pow(xnc,x);
459  if( expp < 37 )
460  {
461  da_v = z*exp10(expp);
462  }
463  else
464  {
465  da_v = 0.;
466  }
467 
468  da_v *= powpq( eden/eden_limited, 1, 4 );
469  da_v *= exp10( 2.*(alogt_limited-alogt_save) );
470 
471  return( da_v );
472 }
473 
474 /****************************************************************************** */
475 STATIC void blkdata1(void)
476 {
477  /*block data with Steve Cota's 3-body recombination coefficients */
478 
479  /* data for function da.
480  *
481  * S. A. COTA, 2/1987
482  * */
483 
484  long int _i,
485  _r;
486  realnum *const ba0 = (realnum*)b0;
487  realnum *const ba1 = (realnum*)b1;
488  realnum *const bb0 = (realnum*)((char*)(b0 + 79));
489  realnum *const bb1 = (realnum*)((char*)(b1 + 79));
490 
491  /* to fix all the conversion errors, change realnum ini to double ini,
492  * but chech that results still ok */
493  { static struct{ long rc; double ini; } _rs0[] = {
494  {1, 0.00000e00},
495  {1, 2.10721e00},
496  {1, 3.33985e00},
497  {1, 4.21442e00},
498  {1, 4.89279e00},
499  {1, 5.44706e00},
500  {1, 5.91569e00},
501  {1, 6.32163e00},
502  {1, 6.67970e00},
503  {1, 7.00000e00},
504  {1, 7.28975e00},
505  {1, 7.55427e00},
506  {1, 7.79760e00},
507  {1, 8.02290e00},
508  {1, 8.23264e00},
509  {1, 8.42884e00},
510  {1, 8.61314e00},
511  {1, 8.78691e00},
512  {1, 8.95128e00},
513  {1, 9.10721e00},
514  {1, 9.25554e00},
515  {1, 9.39696e00},
516  {1, 9.53209e00},
517  {1, 9.66148e00},
518  {1, 9.78558e00},
519  {1, 9.90481e00},
520  {1, 10.01954e00},
521  {1, 10.13010e00},
522  {0L, 0}
523  };
524  for(_i=_r=0L; _i < 28; _i++)
525  zlog7[_i] = RC_INI(_rs0); }
526  { static struct{ long rc; double ini; } _rs1[] = {
527  {1, 0.00000e00},
528  {1, 6.02060e-01},
529  {1, 9.54243e-01},
530  {1, 1.20412e00},
531  {1, 1.39794e00},
532  {1, 1.55630e00},
533  {1, 1.69020e00},
534  {1, 1.80618e00},
535  {1, 1.90849e00},
536  {1, 2.00000e00},
537  {1, 2.08279e00},
538  {1, 2.15836e00},
539  {1, 2.22789e00},
540  {1, 2.29226e00},
541  {1, 2.35218e00},
542  {1, 2.40824e00},
543  {1, 2.46090e00},
544  {1, 2.51055e00},
545  {1, 2.55751e00},
546  {1, 2.60206e00},
547  {1, 2.64444e00},
548  {1, 2.68485e00},
549  {1, 2.72346e00},
550  {1, 2.76042e00},
551  {1, 2.79588e00},
552  {1, 2.82995e00},
553  {1, 2.86272e00},
554  {1, 2.89431e00},
555  {0L, 0}
556  };
557  for(_i=_r=0L; _i < 28; _i++)
558  zlog2[_i] = RC_INI(_rs1); }
559  { static struct{ long rc; double ini; } _rs2[] = {
560  {1, 0.},
561  {1, 0.09691},
562  {1, 0.17609},
563  {1, 0.30103},
564  {1, 0.39794},
565  {1, 0.47712},
566  {1, 0.60206},
567  {1, 0.69897},
568  {1, 0.77815},
569  {1, 0.90309},
570  {1, 1.00000},
571  {1, 1.07918},
572  {1, 1.20412},
573  {1, 1.30103},
574  {1, 1.39794},
575  {1, 1.47712},
576  {1, 1.60206},
577  {1, 1.69897},
578  {1, 1.77815},
579  {1, 1.90309},
580  {1, 2.00000},
581  {1, 2.06070},
582  {1, 2.09691},
583  {1, 2.17609},
584  {1, 2.20412},
585  {1, 2.24304},
586  {1, 2.30103},
587  {1, 2.35218},
588  {1, 2.39794},
589  {1, 2.47712},
590  {1, 2.51188},
591  {1, 2.54407},
592  {1, 2.60206},
593  {1, 2.65321},
594  {1, 2.69897},
595  {1, 2.75967},
596  {1, 2.81291},
597  {1, 2.86034},
598  {1, 2.91645},
599  {1, 2.95424},
600  {1, 3.00000},
601  {1, 3.07918},
602  {1, 3.11394},
603  {1, 3.17609},
604  {1, 3.20412},
605  {1, 3.25527},
606  {1, 3.30103},
607  {1, 3.36173},
608  {1, 3.39794},
609  {1, 3.46240},
610  {1, 3.51188},
611  {1, 3.56820},
612  {1, 3.60206},
613  {1, 3.66276},
614  {1, 3.72016},
615  {1, 3.76343},
616  {1, 3.81291},
617  {1, 3.86034},
618  {1, 3.90309},
619  {1, 3.95424},
620  {1, 4.02119},
621  {1, 4.06070},
622  {1, 4.11394},
623  {1, 4.16137},
624  {1, 4.20412},
625  {1, 4.25527},
626  {1, 4.31175},
627  {1, 4.36173},
628  {1, 4.41497},
629  {1, 4.46240},
630  {1, 4.51521},
631  {1, 4.56526},
632  {1, 4.61542},
633  {1, 4.66605},
634  {1, 4.71600},
635  {1, 4.76343},
636  {1, 4.81624},
637  {1, 4.86629},
638  {1, 4.91645},
639  {1, 4.96614},
640  {1, 5.02119},
641  {1, 5.06726},
642  {1, 5.11394},
643  {0L, 0 }
644  };
645  for(_i=_r=0L; _i < 83; _i++)
646  tz[_i] = RC_INI(_rs2); }
647  { static struct{ long rc; double ini; } _rs3[] = {
648  {1, -4.31396484},
649  {1, -4.56640625},
650  {1, -4.74560547},
651  {1, -4.98535156},
652  {1, -5.15373850},
653  {1, -5.28123093},
654  {1, -5.48215008},
655  {1, -5.63811255},
656  {1, -5.76573515},
657  {1, -5.96755028},
658  {1, -6.12449837},
659  {1, -6.25304174},
660  {1, -6.45615673},
661  {1, -6.61384058},
662  {1, -6.77161551},
663  {1, -6.90069818},
664  {1, -7.10470295},
665  {1, -7.26322412},
666  {1, -7.39289951},
667  {1, -7.59792519},
668  {1, -7.75725508},
669  {1, -7.85722494},
670  {1, -7.91697407},
671  {1, -8.04758644},
672  {1, -8.09447479},
673  {1, -8.15859795},
674  {1, -8.25424385},
675  {1, -8.33880615},
676  {1, -8.41452408},
677  {1, -8.54581165},
678  {1, -8.60400581},
679  {1, -8.65751839},
680  {1, -8.75414848},
681  {1, -8.83946800},
682  {1, -8.91589737},
683  {1, -9.01741695},
684  {1, -9.10663033},
685  {1, -9.18621922},
686  {1, -9.28059292},
687  {1, -9.34430218},
688  {1, -9.42154408},
689  {1, -9.55562973},
690  {1, -9.61459446},
691  {1, -9.72023010},
692  {1, -9.76802444},
693  {1, -9.85540199},
694  {1, -9.93374062},
695  {1, -10.03800774},
696  {1, -10.10044670},
697  {1, -10.21178055},
698  {1, -10.29757786},
699  {1, -10.39561272},
700  {1, -10.45469666},
701  {1, -10.56102180},
702  {1, -10.66205502},
703  {1, -10.73780537},
704  {1, -10.82557774},
705  {1, -10.91007328},
706  {1, -10.98659325},
707  {1, -11.07857418},
708  {1, -11.19975281},
709  {1, -11.27170753},
710  {1, -11.36930943},
711  {1, -11.45675945},
712  {1, -11.53620148},
713  {1, -11.63198853},
714  {1, -11.73875237},
715  {1, -11.83400822},
716  {1, -11.93677044},
717  {1, -12.02933311},
718  {1, -12.13374519},
719  {1, -12.23410702},
720  {1, -12.33664989},
721  {1, -12.44163322},
722  {1, -12.54730415},
723  {1, -12.64975739},
724  {1, -12.76682186},
725  {1, -12.88185978},
726  {1, -13.00052643},
727  {1, -13.12289810},
728  {1, -13.26689529},
729  {1, -13.39390945},
730  {1, -30.00000000},
731  {0L, 0 }
732  };
733  for(_i=_r=0L; _i < 83; _i++)
734  a0[_i] = RC_INI(_rs3); }
735  { static struct{ long rc; double ini; } _rs4[] = {
736  {1, 4.53776000e05},
737  {1, 3.48304000e05},
738  {1, 2.80224000e05},
739  {1, 1.98128000e05},
740  {1, 1.51219797e05},
741  {1, 1.21113266e05},
742  {1, 8.52812109e04},
743  {1, 6.49598125e04},
744  {1, 5.20075781e04},
745  {1, 3.66190977e04},
746  {1, 2.79060723e04},
747  {1, 2.23634102e04},
748  {1, 1.57683135e04},
749  {1, 1.20284307e04},
750  {1, 9.17755273e03},
751  {1, 7.36044873e03},
752  {1, 5.19871680e03},
753  {1, 3.97240796e03},
754  {1, 3.18934326e03},
755  {1, 2.25737622e03},
756  {1, 1.72767114e03},
757  {1, 1.46202722e03},
758  {1, 1.32456628e03},
759  {1, 1.06499792e03},
760  {1, 9.92735291e02},
761  {1, 8.91604858e02},
762  {1, 7.59411560e02},
763  {1, 6.59120056e02},
764  {1, 5.80688965e02},
765  {1, 4.66602264e02},
766  {1, 4.27612854e02},
767  {1, 3.91531494e02},
768  {1, 3.34516968e02},
769  {1, 2.91021820e02},
770  {1, 2.56853912e02},
771  {1, 2.17598007e02},
772  {1, 1.88145462e02},
773  {1, 1.65329865e02},
774  {1, 1.41960342e02},
775  {1, 1.28181686e02},
776  {1, 1.13336761e02},
777  {1, 9.17785034e01},
778  {1, 8.36242981e01},
779  {1, 7.08843536e01},
780  {1, 6.58346100e01},
781  {1, 5.75790634e01},
782  {1, 5.11293755e01},
783  {1, 4.37563019e01},
784  {1, 3.99226875e01},
785  {1, 3.39562836e01},
786  {1, 3.00413170e01},
787  {1, 2.61871891e01},
788  {1, 2.41310368e01},
789  {1, 2.08853607e01},
790  {1, 1.82632275e01},
791  {1, 1.60007000e01},
792  {1, 1.42617064e01},
793  {1, 1.27951088e01},
794  {1, 1.16221066e01},
795  {1, 1.03779335e01},
796  {1, 8.97864914e00},
797  {1, 8.25593281e00},
798  {1, 7.39339924e00},
799  {1, 6.70784378e00},
800  {1, 6.16084862e00},
801  {1, 5.57818031e00},
802  {1, 5.01341105e00},
803  {1, 4.55679178e00},
804  {1, 4.13692093e00},
805  {1, 3.80004382e00},
806  {1, 3.46328306e00},
807  {1, 3.17340493e00},
808  {1, 2.93525696e00},
809  {1, 2.69083858e00},
810  {1, 2.46588683e00},
811  {1, 2.26083040e00},
812  {1, 2.04337358e00},
813  {1, 1.89027369e00},
814  {1, 1.69208312e00},
815  {0L, 0 }
816  };
817  for(_i=_r=0L; _i < 79; _i++)
818  ba0[_i] = (realnum)RC_INI(_rs4); }
819  { static struct{ long rc; double ini; } _rs5[] = {
820  {1, 1.48992336e00},
821  {1, 1.32466662e00},
822  {1, 1.10697949e00},
823  {1, 9.29813862e-01},
824  {0L, 0 }
825  };
826  for(_i=_r=0L; _i < 4; _i++)
827  bb0[_i] = (realnum)RC_INI(_rs5); }
828  { static struct{ long rc; double ini; } _rs6[] = {
829  {1, 2.12597656},
830  {1, 2.08984375},
831  {1, 2.06958008},
832  {1, 2.05444336},
833  {1, 2.05},
834  {1, 2.05},
835  {1, 2.05},
836  {1, 2.05},
837  {1, 2.05},
838  {1, 2.05},
839  {1, 2.05},
840  {1, 2.05},
841  {1, 2.05},
842  {1, 2.05},
843  {1, 2.05},
844  {1, 2.05},
845  {1, 2.05},
846  {1, 2.05},
847  {1, 2.05},
848  {1, 2.05},
849  {1, 2.05},
850  {1, 2.05},
851  {1, 2.05},
852  {1, 2.05},
853  {1, 2.05},
854  {1, 2.05},
855  {1, 2.05},
856  {1, 2.05},
857  {1, 2.05},
858  {1, 2.05},
859  {1, 2.05},
860  {1, 2.05},
861  {1, 2.05},
862  {1, 2.05},
863  {1, 2.05},
864  {1, 2.05},
865  {1, 2.05},
866  {1, 2.05},
867  {1, 2.05},
868  {1, 2.05},
869  {1, 2.05},
870  {1, 2.05},
871  {1, 2.05},
872  {1, 2.05},
873  {1, 2.05},
874  {1, 2.05},
875  {1, 2.05},
876  {1, 2.05},
877  {1, 2.05},
878  {1, 2.05},
879  {1, 2.05},
880  {1, 2.05},
881  {1, 2.05},
882  {1, 2.05},
883  {1, 2.05},
884  {1, 2.05},
885  {1, 2.05},
886  {1, 2.05},
887  {1, 2.05},
888  {1, 2.05},
889  {1, 2.05},
890  {1, 2.05},
891  {1, 2.05},
892  {1, 2.05},
893  {1, 2.05},
894  {1, 2.05},
895  {1, 2.05},
896  {1, 2.05},
897  {1, 2.05},
898  {1, 2.05},
899  {1, 2.05},
900  {1, 2.05},
901  {1, 2.05},
902  {1, 2.05},
903  {1, 2.05},
904  {1, 2.05},
905  {1, 2.05},
906  {1, 2.05},
907  {1, 2.05},
908  {1, 2.05},
909  {1, 2.05},
910  {1, 2.05},
911  {1, 2.05},
912  {0L, 0 }
913  };
914  for(_i=_r=0L; _i < 83; _i++)
915  x0[_i] = RC_INI(_rs6); }
916 
917  { static struct{ long rc; double ini; } _rs7[] = {
918  {1, 16.23337936},
919  {1, 16.27946854},
920  {1, 16.31696320},
921  {1, 16.37597656},
922  {1, 16.42210960},
923  {1, 16.45996284},
924  {1, 16.51994896},
925  {1, 16.56644440},
926  {1, 16.60460854},
927  {1, 16.66510773},
928  {1, 16.71198654},
929  {1, 16.75038719},
930  {1, 16.81106949},
931  {1, 16.85778809},
932  {1, 16.90416527},
933  {1, 16.94209099},
934  {1, 17.00195694},
935  {1, 17.04838943},
936  {1, 17.08633804},
937  {1, 17.14627838},
938  {1, 17.19270515},
939  {1, 17.22186279},
940  {1, 17.23933601},
941  {1, 17.27728271},
942  {1, 17.30161858},
943  {1, 17.32085800},
944  {1, 17.34928894},
945  {1, 17.37349129},
946  {1, 17.39528084},
947  {1, 17.43282318},
948  {1, 17.44827652},
949  {1, 17.46357536},
950  {1, 17.49082375},
951  {1, 17.51517677},
952  {1, 17.53697205},
953  {1, 17.56587219},
954  {1, 17.59125519},
955  {1, 17.61410332},
956  {1, 17.64081383},
957  {1, 17.65900803},
958  {1, 17.68086433},
959  {1, 17.71843529},
960  {1, 17.73512840},
961  {1, 17.76512146},
962  {1, 17.77873421},
963  {1, 17.80340767},
964  {1, 17.82530022},
965  {1, 17.85470963},
966  {1, 17.87210464},
967  {1, 17.90334511},
968  {1, 17.92751503},
969  {1, 17.95458603},
970  {1, 17.97117233},
971  {1, 18.00062943},
972  {1, 18.02842712},
973  {1, 18.04934502},
974  {1, 18.07340050},
975  {1, 18.09639168},
976  {1, 18.11732864},
977  {1, 18.14218903},
978  {1, 18.17465591},
979  {1, 18.19370079},
980  {1, 18.21962166},
981  {1, 18.24237251},
982  {1, 18.26305962},
983  {1, 18.28767967},
984  {1, 18.31531525},
985  {1, 18.33900452},
986  {1, 18.36478043},
987  {1, 18.38741112},
988  {1, 18.41271973},
989  {1, 18.43644333},
990  {1, 18.46075630},
991  {1, 18.48509216},
992  {1, 18.50897980},
993  {1, 18.53143501},
994  {1, 18.55570030},
995  {1, 18.58008003},
996  {1, 18.60348320},
997  {1, 18.62536430},
998  {1, 18.65199852},
999  {1, 18.67623520},
1000  {1, 18.70072174},
1001  {0L, 0 }
1002  };
1003  for(_i=_r=0L; _i < 83; _i++)
1004  a1[_i] = RC_INI(_rs7); }
1005  { static struct{ long rc; double ini; } _rs8[] = {
1006  {1, 1.09462866e10},
1007  {1, 9.32986675e09},
1008  {1, 6.15947008e09},
1009  {1, 1.54486170e09},
1010  {1, 1.00812454e09},
1011  {1, 7.00559552e08},
1012  {1, 6.25999232e08},
1013  {1, 3.50779968e08},
1014  {1, 3.11956288e08},
1015  {1, 3.74866016e08},
1016  {1, 2.47019424e08},
1017  {1, 1.73169776e08},
1018  {1, 1.01753168e08},
1019  {1, 6.81861920e07},
1020  {1, 4.61764000e07},
1021  {1, 3.31671360e07},
1022  {1, 2.03160540e07},
1023  {1, 1.40249480e07},
1024  {1, 1.02577860e07},
1025  {1, 3.53822650e06},
1026  {1, 1.32563388e06},
1027  {1, 9.14284688e05},
1028  {1, 1.25230388e06},
1029  {1, 3.17865156e05},
1030  {1, 4.76750244e03},
1031  {1, 4.81107031e03},
1032  {1, 4.88406152e03},
1033  {1, 4.80611279e03},
1034  {1, 4.78843652e03},
1035  {1, 4.65988477e03},
1036  {1, 1.26723059e03},
1037  {1, 1.20825342e03},
1038  {1, 8.66052612e02},
1039  {1, 7.76661316e02},
1040  {1, 7.05279358e02},
1041  {1, 6.21722656e02},
1042  {1, 5.46207581e02},
1043  {1, 4.96247742e02},
1044  {1, 4.26340118e02},
1045  {1, 3.96090424e02},
1046  {1, 3.48429657e02},
1047  {1, 2.37949142e02},
1048  {1, 2.14678406e02},
1049  {1, 1.81019180e02},
1050  {1, 1.68923676e02},
1051  {1, 1.45979385e02},
1052  {1, 1.25311127e02},
1053  {1, 1.05205528e02},
1054  {1, 9.39378357e01},
1055  {1, 7.75339966e01},
1056  {1, 6.68987427e01},
1057  {1, 5.53580055e01},
1058  {1, 5.00100212e01},
1059  {1, 4.14198608e01},
1060  {1, 3.46289063e01},
1061  {1, 3.00775223e01},
1062  {1, 2.60294399e01},
1063  {1, 2.26602840e01},
1064  {1, 2.02123032e01},
1065  {1, 1.76353855e01},
1066  {1, 1.47198439e01},
1067  {1, 1.33078461e01},
1068  {1, 1.17181997e01},
1069  {1, 1.04125805e01},
1070  {1, 9.45785904e00},
1071  {1, 8.42799950e00},
1072  {1, 7.62769842e00},
1073  {1, 6.85484743e00},
1074  {1, 6.25903368e00},
1075  {1, 5.75135279e00},
1076  {1, 5.28468180e00},
1077  {1, 4.87669659e00},
1078  {1, 4.57353973e00},
1079  {1, 4.30108690e00},
1080  {1, 4.05412245e00},
1081  {1, 3.83283114e00},
1082  {1, 3.57902861e00},
1083  {1, 3.43705726e00},
1084  {1, 3.26563096e00},
1085  {0L, 0 }
1086  };
1087  for(_i=_r=0L; _i < 79; _i++)
1088  ba1[_i] = (realnum)RC_INI(_rs8); }
1089  { static struct{ long rc; double ini; } _rs9[] = {
1090  {1, 3.07498097e00},
1091  {1, 2.96334076e00},
1092  {1, 2.92890000e00},
1093  {1, 2.89550042e00},
1094  {0L, 0 }
1095  };
1096  for(_i=_r=0L; _i < 4; _i++)
1097  bb1[_i] = (realnum)RC_INI(_rs9); }
1098  { static struct{ long rc; double ini; } _rs10[] = {
1099  {1, -5.46},
1100  {1, -5.51},
1101  {1, -5.49},
1102  {1, -5.30},
1103  {1, -5.29},
1104  {1, -5.28},
1105  {1, -5.37},
1106  {1, -5.33},
1107  {1, -5.38},
1108  {1, -5.55},
1109  {1, -5.55},
1110  {1, -5.55},
1111  {1, -5.55},
1112  {1, -5.55},
1113  {1, -5.55},
1114  {1, -5.55},
1115  {1, -5.55},
1116  {1, -5.55},
1117  {1, -5.55},
1118  {1, -5.38},
1119  {1, -5.19},
1120  {1, -5.14},
1121  {1, -5.27},
1122  {1, -4.93},
1123  {1, -3.64},
1124  {1, -3.68},
1125  {1, -3.74},
1126  {1, -3.78},
1127  {1, -3.82},
1128  {1, -3.88},
1129  {1, -3.40},
1130  {1, -3.41},
1131  {1, -3.32},
1132  {1, -3.32},
1133  {1, -3.32},
1134  {1, -3.32},
1135  {1, -3.31},
1136  {1, -3.31},
1137  {1, -3.29},
1138  {1, -3.29},
1139  {1, -3.27},
1140  {1, -3.16},
1141  {1, -3.14},
1142  {1, -3.11},
1143  {1, -3.10},
1144  {1, -3.07},
1145  {1, -3.03},
1146  {1, -2.99},
1147  {1, -2.96},
1148  {1, -2.91},
1149  {1, -2.87},
1150  {1, -2.81},
1151  {1, -2.78},
1152  {1, -2.72},
1153  {1, -2.66},
1154  {1, -2.61},
1155  {1, -2.56},
1156  {1, -2.51},
1157  {1, -2.47},
1158  {1, -2.42},
1159  {1, -2.35},
1160  {1, -2.31},
1161  {1, -2.26},
1162  {1, -2.21},
1163  {1, -2.17},
1164  {1, -2.12},
1165  {1, -2.08},
1166  {1, -2.03},
1167  {1, -1.99},
1168  {1, -1.95},
1169  {1, -1.91},
1170  {1, -1.87},
1171  {1, -1.84},
1172  {1, -1.81},
1173  {1, -1.78},
1174  {1, -1.75},
1175  {1, -1.71},
1176  {1, -1.69},
1177  {1, -1.66},
1178  {1, -1.62},
1179  {1, -1.60},
1180  {1, -1.60},
1181  {1, -1.60},
1182  {0L, 0 }
1183  };
1184  for(_i=_r=0L; _i < 83; _i++)
1185  x1[_i] = RC_INI(_rs10); }
1186  { static struct{ long rc; double ini; } _rs11[] = {
1187  {1, 20.30049515},
1188  {1, 20.28500366},
1189  {1, 20.25300407},
1190  {1, 20.16626740},
1191  {1, 20.15743256},
1192  {1, 20.11256981},
1193  {1, 20.04818344},
1194  {1, 19.99261856},
1195  {1, 19.94472885},
1196  {1, 19.86478043},
1197  {1, 19.83321571},
1198  {1, 19.80185127},
1199  {1, 19.74884224},
1200  {1, 19.70136070},
1201  {1, 19.65981102},
1202  {1, 19.60598755},
1203  {1, 19.56017494},
1204  {1, 19.52042389},
1205  {1, 19.47429657},
1206  {1, 19.44413757},
1207  {1, 19.40796280},
1208  {1, 19.34819984},
1209  {1, 19.32203293},
1210  {1, 19.27634430},
1211  {1, 19.25627136},
1212  {1, 19.22009087},
1213  {1, 19.18853378},
1214  {1, 19.14809799},
1215  {1, 19.12456703},
1216  {1, 19.08409119},
1217  {1, 19.05431557},
1218  {1, 19.02083015},
1219  {1, 19.00176430},
1220  {1, 18.96817970},
1221  {1, 18.93762589},
1222  {1, 18.91706085},
1223  {1, 18.89299583},
1224  {1, 18.87085915},
1225  {1, 18.85210609},
1226  {1, 18.83035851},
1227  {1, 18.80403900},
1228  {1, 18.78901100},
1229  {1, 18.77099228},
1230  {1, 18.75540161},
1231  {1, 18.74287033},
1232  {1, 18.72928810},
1233  {1, 18.71601868},
1234  {1, 18.70474434},
1235  {1, 18.69515800},
1236  {1, 18.68782425},
1237  {1, 18.68120766},
1238  {1, 18.67630005},
1239  {1, 18.67357445},
1240  {1, 18.67129898},
1241  {1, 18.67042351},
1242  {1, 18.67090988},
1243  {1, 18.67313004},
1244  {1, 18.67636490},
1245  {1, 18.68120003},
1246  {1, 18.68803024},
1247  {1, 18.69487381},
1248  {1, 18.70458412},
1249  {1, 18.71205139},
1250  {0L, 0 }
1251  };
1252  for(_i=_r=0L; _i < 63; _i++)
1253  a2[_i] = RC_INI(_rs11); }
1254  { static struct{ long rc; double ini; } _rs12[] = {
1255  {1, 1.01078403e00},
1256  {1, 1.97956896e00},
1257  {1, 3.14605665e00},
1258  {1, 6.46874905e00},
1259  {1, 3.16406364e01},
1260  {1, 3.74927673e01},
1261  {1, 4.75353088e01},
1262  {1, 5.27809143e01},
1263  {1, 5.86515846e01},
1264  {1, 6.70408707e01},
1265  {1, 1.14904137e02},
1266  {1, 1.03133133e02},
1267  {1, 1.26508728e02},
1268  {1, 1.03827606e02},
1269  {1, 8.79508896e01},
1270  {1, 7.18328934e01},
1271  {1, 6.19807892e01},
1272  {1, 5.51255455e01},
1273  {1, 4.87156143e01},
1274  {1, 4.58579826e01},
1275  {1, 4.19952011e01},
1276  {1, 4.08252220e01},
1277  {1, 3.78243637e01},
1278  {1, 3.34573860e01},
1279  {1, 3.19036102e01},
1280  {1, 2.92026005e01},
1281  {1, 2.74482193e01},
1282  {1, 2.54643936e01},
1283  {1, 2.46636391e01},
1284  {1, 2.33054180e01},
1285  {1, 2.23069897e01},
1286  {1, 2.12891216e01},
1287  {1, 2.06667900e01},
1288  {1, 1.96430798e01},
1289  {1, 1.87381802e01},
1290  {1, 1.76523514e01},
1291  {1, 1.69235287e01},
1292  {1, 1.62647285e01},
1293  {1, 1.56806908e01},
1294  {1, 1.50346069e01},
1295  {1, 1.42240467e01},
1296  {1, 1.37954988e01},
1297  {1, 1.31949224e01},
1298  {1, 1.27211905e01},
1299  {1, 1.22885675e01},
1300  {1, 1.17868662e01},
1301  {1, 1.12577572e01},
1302  {1, 1.08565578e01},
1303  {1, 1.04121590e01},
1304  {1, 1.00410652e01},
1305  {1, 9.64534473e00},
1306  {1, 9.29232121e00},
1307  {1, 8.92519569e00},
1308  {1, 8.60898972e00},
1309  {1, 8.31234550e00},
1310  {1, 8.04089737e00},
1311  {1, 7.74343491e00},
1312  {1, 7.48133039e00},
1313  {1, 7.21957016e00},
1314  {1, 6.94726801e00},
1315  {1, 6.71931219e00},
1316  {1, 6.45107985e00},
1317  {1, 6.28593779e00},
1318  {0L, 0 }
1319  };
1320  for(_i=_r=0L; _i < 63; _i++)
1321  b2[_i] = RC_INI(_rs12); }
1322  { static struct{ long rc; double ini; } _rs13[] = {
1323  {1, -0.43},
1324  {1, -0.75},
1325  {1, -0.93},
1326  {1, -1.20},
1327  {1, -1.78},
1328  {1, -1.85},
1329  {1, -1.95},
1330  {1, -2.00},
1331  {1, -2.05},
1332  {1, -2.12},
1333  {1, -2.34},
1334  {1, -2.31},
1335  {1, -2.42},
1336  {1, -2.36},
1337  {1, -2.31},
1338  {1, -2.25},
1339  {1, -2.21},
1340  {1, -2.18},
1341  {1, -2.15},
1342  {1, -2.14},
1343  {1, -2.12},
1344  {1, -2.14},
1345  {1, -2.12},
1346  {1, -2.09},
1347  {1, -2.08},
1348  {1, -2.06},
1349  {1, -2.05},
1350  {1, -2.04},
1351  {1, -2.04},
1352  {1, -2.04},
1353  {1, -2.04},
1354  {1, -2.04},
1355  {1, -2.04},
1356  {1, -2.04},
1357  {1, -2.04},
1358  {1, -2.04},
1359  {1, -2.04},
1360  {1, -2.04},
1361  {1, -2.04},
1362  {1, -2.04},
1363  {1, -2.04},
1364  {1, -2.04},
1365  {1, -2.04},
1366  {1, -2.04},
1367  {1, -2.04},
1368  {1, -2.04},
1369  {1, -2.04},
1370  {1, -2.04},
1371  {1, -2.04},
1372  {1, -2.04},
1373  {1, -2.04},
1374  {1, -2.04},
1375  {1, -2.04},
1376  {1, -2.04},
1377  {1, -2.04},
1378  {1, -2.04},
1379  {1, -2.04},
1380  {1, -2.04},
1381  {1, -2.04},
1382  {1, -2.04},
1383  {1, -2.04},
1384  {1, -2.04},
1385  {1, -2.04},
1386  {0L, 0 }
1387  };
1388  for(_i=_r=0L; _i < 63; _i++)
1389  x2[_i] = RC_INI(_rs13); }
1390  /*lint +e736 loss of precision in assignment in translated data */
1391 
1392  DEBUG_ENTRY( "blkdata0()" );
1393 }
1394 
1395 /* =================================================================== */
1396 /*xmap mapping function for Cota's 3-body recombination */
1397 STATIC double xmap(double x[],
1398  double y[],
1399  double xmapx0)
1400 {
1401  double a,
1402  b,
1403  c,
1404  xmapx1,
1405  x12m,
1406  x13m,
1407  xmapx2,
1408  x3,
1409  xmap_v,
1410  yinit,
1411  y13m;
1412 
1413  DEBUG_ENTRY( "xmap()" );
1414 
1415  /* PARABOLIC INTERPOLATION.
1416  * */
1417 
1418  yinit = y[0];
1419  xmapx1 = x[0];
1420  xmapx2 = x[1];
1421  x3 = x[2];
1422  x13m = xmapx1 - x3;
1423  x12m = xmapx1 - xmapx2;
1424  y13m = yinit - y[2];
1425  x3 = (xmapx1 + x3)*x13m;
1426  xmapx2 = (xmapx1 + xmapx2)*x12m;
1427  b = ((yinit - y[1])*x3 - y13m*xmapx2)/(x12m*x3 - x13m*xmapx2);
1428  a = (y13m - x13m*b)/x3;
1429  c = yinit - a*xmapx1*xmapx1 - b*xmapx1;
1430 
1431  xmap_v = a*xmapx0*xmapx0 + b*xmapx0 + c;
1432 
1433  return( xmap_v );
1434 }
1435 
1436 /* =================================================================== */
1437 /*xinvrs do inverse function for Cota's three-body recombination */
1438 STATIC double xinvrs(double y,
1439  double a,
1440  double b,
1441  double u,
1442  double v,
1443  long int *ifail)
1444 {
1445  long int i;
1446  double bxu,
1447  dfx,
1448  fx,
1449  fxdfx,
1450  x,
1451  xinvrs_v,
1452  xlog,
1453  xx;
1454  static long itmax = 10;
1455 
1456  DEBUG_ENTRY( "xinvrs()" );
1457 
1458  /* inverts equation of the form :
1459  *
1460  * Y = A + B * X ** U - V * LOG ( X )
1461  * */
1462  *ifail = 0;
1463  xlog = (a - y)/v;
1464  x = exp10(xlog);
1465  xx = 0.;
1466 
1467  for( i=0; i < itmax; i++ )
1468  {
1469  bxu = b*pow(x,u);
1470  fx = y - a - bxu + v*xlog;
1471  dfx = v*.4342945 - bxu*u;
1472 
1473  if( dfx != 0. )
1474  {
1475  fxdfx = fabs(fx/dfx);
1476  fxdfx = MIN2(0.2,fxdfx);
1477  xx = x*(1. - sign(fxdfx,fx/dfx));
1478  }
1479  else
1480  {
1481  /* >>chng 96 feb 02 this added in case dfx ever 0
1482  * suggested by Peter van Hoof */
1483  xx = x*(1. - sign(0.2,fx));
1484  }
1485 
1486  if( (fabs(xx-x)/x) < 1.e-4 )
1487  {
1488  xinvrs_v = xx;
1489  return( xinvrs_v );
1490  }
1491  else
1492  {
1493  x = xx;
1494  if( x < 1e-30 )
1495  {
1496  xinvrs_v = 100.;
1497  *ifail = 1;
1498  return( xinvrs_v );
1499  }
1500  xlog = log10(x);
1501  }
1502  }
1503  xinvrs_v = xx;
1504  *ifail = 1;
1505  return( xinvrs_v );
1506 }
static bool lgCalled
Definition: cddrive.cpp:429
t_atmdat atmdat
Definition: atmdat.cpp:6
static double x2[63]
STATIC double xmap(double x[], double y[], double x0)
double exp10(double x)
Definition: cddefines.h:1383
static double x1[83]
long int ilthn
Definition: ionbal.h:239
T sign(T x, T y)
Definition: cddefines.h:846
t_phycon phycon
Definition: phycon.cpp:6
static double tz[83]
FILE * ioRecom
Definition: save.h:457
FILE * ioQQQ
Definition: cddefines.cpp:7
static double zlog2[28]
long int nsbig
Definition: atmdat.h:345
#define MIN2(a, b)
Definition: cddefines.h:807
t_dense dense
Definition: global.cpp:15
#define RC_INI(rs)
long int ifail
Definition: ionbal.h:239
static double zlog7[28]
t_trace trace
Definition: trace.cpp:5
STATIC void blkdata1(void)
t_ionbal ionbal
Definition: ionbal.cpp:8
static realnum b0[83]
static double b2[63]
#define STATIC
Definition: cddefines.h:118
bool lgTrace
Definition: trace.h:12
static double x0[83]
float realnum
Definition: cddefines.h:124
STATIC double da(double z, double temp, double eden)
static double a1[83]
static realnum b1[83]
#define ASSERT(exp)
Definition: cddefines.h:617
const int LIMELM
Definition: cddefines.h:307
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:729
double powpq(double x, int p, int q)
Definition: service.cpp:726
#define MIN3(a, b, c)
Definition: cddefines.h:812
static const int MAXZ
double eden
Definition: dense.h:201
#define MAX2(a, b)
Definition: cddefines.h:828
int fprintf(const Output &stream, const char *format,...)
Definition: service.cpp:1217
bool lgioRecom
Definition: save.h:458
double pow(double x, int i)
Definition: cddefines.h:782
STATIC double xinvrs(double y, double a, double b, double u, double v, long int *ifail)
bool lgNoCota
Definition: ionbal.h:233
bool lgTrace3Bod
Definition: trace.h:52
t_save save
Definition: save.cpp:5
double te
Definition: phycon.h:21
long int ilt
Definition: ionbal.h:239
void atmdat_3body(void)
static double a0[83]
static double a2[63]
long int ihthn
Definition: ionbal.h:239
realnum CotaRate[LIMELM]
Definition: ionbal.h:236
long int iltln
Definition: ionbal.h:239