cloudy  trunk
plot.cpp
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2013 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 /*plot master routine to generate some sort of plot */
4 #include "cddefines.h"
5 #include "iterations.h"
6 #include "called.h"
7 #define IHI 59
8 #define IWID 121
9 #include "input.h"
10 #include "rfield.h"
11 #include "trace.h"
12 #include "radius.h"
13 #include "geometry.h"
14 #include "opacity.h"
15 #include "dense.h"
16 #include "hcmap.h"
17 #include "plot.h"
18 
20 
21 /*pltcon generate plot of continuum array */
22 STATIC void pltcon(long int np,
23  const char *chCall);
24 
25 /*pltmap generate plot of heating and cooling map */
26 STATIC void pltmap(long int np,
27  const char *chCall);
28 
29 /*pltopc generate plot of local gas opacity */
30 STATIC void pltopc(long int np,
31  const char *chCall);
32 
33 /* this is the base routine that actually makes the plots, called by above */
34 STATIC void pltr(realnum[],realnum[],long,double,double,double,double,
35  char,char*,long,bool);
36 
37 
38 void plot(const char *chCall)
39 {
40  long int np;
41 
42  DEBUG_ENTRY( "plot()" );
43 
44  /* return if this is not the last iteration, or a plot not required,
45  * or we are not speaking */
46  if( !plotCom.lgPlotON || !called.lgTalk )
47  {
48  return;
49  }
50 
51  if( !iterations.lgLastIt && (strcmp(chCall,"FIRST") != 0) )
52  {
53  return;
54  }
55 
56  /* loop over all the requested plots */
57  for( np=0; np < plotCom.nplot; np++ )
58  {
59  /* series of tests to determine which type of plot we will do */
60  if( strcmp(plotCom.chPType[np]," MAP") == 0 )
61  {
62  /* thermal map */
63  pltmap(np,chCall);
64  }
65  else if( strcmp(plotCom.chPType[np] ,"CONT") == 0 ||
66  strcmp(plotCom.chPType[np] ,"CRAW") == 0 ||
67  strcmp(plotCom.chPType[np] ,"DIFF") == 0 ||
68  strcmp(plotCom.chPType[np] ,"REFL") == 0 ||
69  strcmp(plotCom.chPType[np] ,"EMIT") == 0 ||
70  strcmp(plotCom.chPType[np] ,"CPHT") == 0 ||
71  strcmp(plotCom.chPType[np] ,"OUTW") == 0 )
72  {
73  /* this is a contiuum plot of some kind */
74  pltcon(np,chCall);
75  }
76 
77  else if(
78  strcmp(plotCom.chPType[np] ,"OPAA") == 0 ||
79  strcmp(plotCom.chPType[np] ,"OPAS") == 0 ||
80  strcmp(plotCom.chPType[np] ,"OPAT") == 0 )
81  {
82  /* absorption, scattering, or total opacity */
83  pltopc(np,chCall);
84  }
85  else
86  {
87  fprintf( ioQQQ, " PLOT type=%4.4s not known. STOP\n",
88  plotCom.chPType[np] );
90  }
91  }
92 
93  return;
94 }
95 
96 /*pltcon generate plot of continuum array */
97 
99  long int np,
100  const char *chCall)
101 {
102  char chSymPlt2[3],
103  chXtitle[23];
104  char chSym,
105  chSymPlt1;
106  long int i;
107  double contin,
108  ymin2;
109  static double xmax,
110  xmin,
111  ymax,
112  ymin;
113  static realnum *y/*[rfield.nupper]*/,
114  *y2/*[rfield.nupper]*/;
115 
116  DEBUG_ENTRY( "pltcon()" );
117 
118  if( strcmp(chCall,"FIRST") == 0 )
119  {
120  return;
121  }
122 
123  xmin = rfield.anulog[0];
124  xmin = MAX2((double)plotCom.pltxmn[np],xmin);
125  xmax = rfield.anulog[rfield.nflux-1];
126  xmax = MIN2(xmax,(double)plotCom.pltxmx[np]);
127 
128  if( plotCom.lgPltTrace[np] )
129  {
130  fprintf( ioQQQ, " XMIN, XMAX=%12.4e%12.4e NFLUX=%4ld\n",
131  xmin, xmax, rfield.nflux );
132  }
133 
134  if( strcmp(plotCom.chPType[np],"REFL") == 0 && geometry.lgSphere )
135  {
136  fprintf( ioQQQ, " Reflected continuum not computed when SPHERE set.\n" );
137  return;
138  }
139 
140  y = (realnum*)MALLOC((size_t)rfield.nupper*sizeof(realnum) );
141  y2 = (realnum*)MALLOC((size_t)rfield.nupper*sizeof(realnum) );
142 
143  /* these will be the default symbols for first and second plot */
144  chSymPlt1 = '.';
145  strcpy( chSymPlt2, "o " );
146  ymin = FLT_MAX;
147  ymin2 = FLT_MAX;
148  ymax = -FLT_MAX;
149  for( i=0; i < rfield.nflux; i++ )
150  {
151  if( (double)rfield.anulog[i] > xmin && (double)rfield.anulog[i] < xmax )
152  {
153  if( strcmp(plotCom.chPType[np],"CONT") == 0 )
154  {
155  y[i] = (realnum)log10(MAX2(rfield.flux_total_incident[0][i]/rfield.widflx[i]*
156  rfield.anu2[i],1e-37));
157  /* >>chng 01 jul 13, add rfield.ConEmitReflec[0][i] */
158  contin = rfield.flux[0][i] + rfield.ConEmitOut[0][i]*geometry.covgeo + rfield.ConEmitReflec[0][i];
159  y2[i] = (realnum)MAX2((contin/rfield.widflx[i]+(rfield.outlin[0][i]+rfield.outlin_noplot[i])/
161  rfield.anu2[i]*radius.r1r0sq,1e-37);
162  y2[i] = (realnum)log10(y2[i]);
163  }
164  else if( strcmp(plotCom.chPType[np],"CPHT") == 0 )
165  {
166  /* plot continuum as photons */
167  y[i] = (realnum)log10(MAX2(rfield.flux_total_incident[0][i]/rfield.widflx[i],
168  1e-37));
169  contin = rfield.flux[0][i] + rfield.ConEmitOut[0][i]*geometry.covgeo/rfield.widflx[i];
170  y2[i] = (realnum)MAX2((contin+(rfield.outlin[0][i]+rfield.outlin[0][i])/rfield.anu[i]*
171  geometry.covgeo)* radius.r1r0sq,1e-37);
172  y2[i] = (realnum)log10(y2[i]);
173  }
174  else if( strcmp(plotCom.chPType[np],"REFL") == 0 )
175  {
176  /* plot "reflected" continuum from last zone only */
177  y[i] = (realnum)log10(MAX2((rfield.ConEmitReflec[0][i]/rfield.widflx[i]+
178  rfield.reflin[0][i])*rfield.anu2[i],1e-37));
179  y2[i] = y[i];
180  }
181  else if( strcmp(plotCom.chPType[np],"EMIT") == 0 )
182  {
183  /* plot "emitted" continuum from both sides of cloud */
184  y[i] = (realnum)log10(MAX2(
185  ((rfield.ConEmitReflec[0][i]+rfield.ConEmitOut[0][i])/
186  rfield.widflx[i]+
187  (rfield.outlin[0][i]+rfield.outlin_noplot[i]+rfield.reflin[0][i])/rfield.anu[i] )*
188  rfield.anu2[i],1e-37));
189  y2[i] = y[i];
190  }
191  else if( strcmp(plotCom.chPType[np],"OUTW") == 0 )
192  {
193  /* plot outward and attenuated incident continuum */
194  chSymPlt1 = 'i';
195  y[i] = (realnum)log10(MAX2(rfield.flux[0][i]*opac.opacity_abs[i],
196  1e-37));
197  strcpy( chSymPlt2, "o " );
198  y2[i] = (realnum)log10(MAX2((rfield.outlin[0][i]+rfield.outlin_noplot[i]+rfield.ConEmitOut[0][i])*
199  opac.opacity_abs[i],1e-37));
200  }
201  else if( strcmp(plotCom.chPType[np],"DIFF") == 0 )
202  {
203  /* plot "diffuse" continuum from last zone only */
204  y[i] = (realnum)log10(MAX2(rfield.ConEmitLocal[nzone][i]*rfield.anu2[i]/
205  rfield.widflx[i],1e-37));
206  y2[i] = y[i];
207  }
208  else if( strcmp(plotCom.chPType[np],"CRAW") == 0 )
209  {
210  y[i] = (realnum)log10(MAX2(rfield.flux_total_incident[0][i],1e-37));
211  y2[i] = (realnum)MAX2((rfield.flux[0][i]+
213  rfield.ConEmitOut[0][i])*radius.r1r0sq,1e-37);
214  y2[i] = (realnum)log10(y2[i]);
215  }
216 
217  if( y[i] > -36.9 )
218  {
219  ymin = MIN2(ymin,(double)y[i]);
220  }
221 
222  if( y2[i] > -36.9 )
223  {
224  ymin2 = MIN2(ymin2,(double)y2[i]);
225  }
226 
227  ymax = MAX2(ymax,(double)y[i]);
228  ymax = MAX2(ymax,(double)y2[i]);
229  }
230  }
231 
232  if( trace.lgTrace )
233  {
234  fprintf( ioQQQ, " PLOT called for the first time, YMAX, MIN=%10.2e%10.2e\n",
235  ymax, ymin );
236  }
237 
238  /* lower min by at most 5 dex below peak */
239  ymin2 = MAX3(ymax-5.,-35.,ymin2);
240 
241  /* make sure there is room at the bottom */
242  ymin = MIN3(ymin2,ymin,ymax-1.);
243 
244  /* emitted continuum is thermal, so goes to zero */
245  if( strcmp(plotCom.chPType[np],"EMIT") == 0 )
246  {
247  ymin = MAX2(ymin,ymax-4.);
248  }
249 
250  if( plotCom.lgPltTrace[np] )
251  {
252  fprintf( ioQQQ, " YMAX, MIN=%14.4e%14.4e Npnts=%4ld\n",
253  ymax
254  , ymin, rfield.nflux );
255  }
256  strcpy( chXtitle, "Log(nu fnu) vs LOG(nu)" );
257 
258  chSym = chSymPlt1;
259 
260  pltr(rfield.anulog,y,rfield.nflux,xmin,xmax,ymin,ymax,chSym,chXtitle
261  ,1,plotCom.lgPltTrace[np]);
262 
263  chSym = chSymPlt2[0];
264 
265  pltr(rfield.anulog,y2,rfield.nflux,xmin,xmax,ymin,ymax,chSym,chXtitle
266  ,3,plotCom.lgPltTrace[np]);
267 
268  free( y );
269  free( y2 );
270  return;
271 }
272 
273 /*pltmap generate plot of heating and cooling map */
274 
276  long int np,
277  const char *chCall)
278 {
279  char chXtitle[23];
280  static bool lgTlkSav;
281  char chSym;
282 
283  long int i;
284 
285  static double xmax,
286  xmin,
287  ymax,
288  ymin;
289 
290  DEBUG_ENTRY( "pltmap()" );
291 
292  if( strcmp(chCall,"FIRST") == 0 )
293  {
294  return;
295  }
296 
297  lgTlkSav = called.lgTalk;
298  called.lgTalk = false;
299  hcmap.lgMapBeingDone = true;
300  hcmap.RangeMap[0] = (realnum)pow((realnum)10.f,plotCom.pltxmn[np]);
301  hcmap.RangeMap[1] = (realnum)pow((realnum)10.f,plotCom.pltxmx[np]);
302  map_do(ioQQQ, " map");
303  called.lgTalk = lgTlkSav;
304 
305  for( i=0; i < hcmap.nmap; i++ )
306  {
307  hcmap.temap[i] = (realnum)log10(hcmap.temap[i]);
308  }
309 
310  xmin = MIN2(hcmap.temap[0],hcmap.temap[hcmap.nmap-1]);
311  xmin = MAX2((double)plotCom.pltxmn[np],xmin);
312  xmax = MAX2(hcmap.temap[0],hcmap.temap[hcmap.nmap-1]);
313  xmax = MIN2(xmax,(double)plotCom.pltxmx[np]);
314 
315  if( plotCom.lgPltTrace[np] )
316  {
317  fprintf( ioQQQ, " xmin, xmax=%12.4e%12.4e nmap=%4ld\n",
318  xmin, xmax, hcmap.nmap );
319  }
320 
321  ymin = FLT_MAX;
322  ymax = -FLT_MAX;
323 
324  for( i=0; i < hcmap.nmap; i++ )
325  {
326  if( (double)hcmap.temap[i] > xmin && (double)hcmap.temap[i] < xmax )
327  {
328  hcmap.hmap[i] = (realnum)log10(MAX2(hcmap.hmap[i],1e-35));
329  hcmap.cmap[i] = (realnum)log10(MAX2(hcmap.cmap[i],1e-35));
330  if( hcmap.cmap[i] > -34. )
331  {
332  ymin = MIN3(ymin,hcmap.hmap[i],hcmap.cmap[i]);
333  }
334  else
335  {
336  ymin = MIN2(ymin,(double)hcmap.hmap[i]);
337  }
338  ymax = MAX3(ymax,hcmap.hmap[i],hcmap.cmap[i]);
339  }
340  }
341 
342  if( trace.lgTrace )
343  {
344  fprintf( ioQQQ, " PLOT called for the first time, YMAX, MIN=%10.2e%10.2e\n",
345  ymax, ymin );
346  }
347 
348  if( plotCom.lgPltTrace[np] )
349  {
350  fprintf( ioQQQ, " YMAX, MIN=%14.4e%14.4e Npnts=%4ld\n",
351  ymax, ymin, hcmap.nmap );
352  }
353 
354  chSym = 'H';
355  strcpy( chXtitle, "heating - cooling v te" );
356 
357  pltr(hcmap.temap,hcmap.hmap,hcmap.nmap,xmin,xmax,ymin,ymax,chSym,
358  chXtitle,1,plotCom.lgPltTrace[np]);
359 
360  chSym = 'C';
361 
362  pltr(hcmap.temap,hcmap.cmap,hcmap.nmap,xmin,xmax,ymin,ymax,chSym,
363  chXtitle,3,plotCom.lgPltTrace[np]);
364 
365  return;
366 }
367 
368 /*pltopc generate plot of local gas opacity */
370  long int np,
371  const char *chCall)
372 {
373  char chXtitle[23];
374  char chSym;
375  long int i;
376  double arg1,
377  arg2;
378  static double xmax,
379  xmin,
380  ymax,
381  ymin;
382  static realnum *y/*[rfield.nupper]*/,
383  *y2/*[rfield.nupper]*/;
384 
385  DEBUG_ENTRY( "pltopc()" );
386 
387  if( strcmp(chCall,"FIRST") == 0 )
388  {
389  return;
390  }
391 
392  y = (realnum*)MALLOC((size_t)rfield.nupper*sizeof(realnum) );
393  y2 = (realnum*)MALLOC((size_t)rfield.nupper*sizeof(realnum) );
394 
395  xmin = rfield.anulog[0];
396  xmin = MAX2((double)plotCom.pltxmn[np],xmin);
397  xmax = rfield.anulog[rfield.nflux-1];
398  xmax = MIN2(xmax,(double)plotCom.pltxmx[np]);
399 
400  if( plotCom.lgPltTrace[np] )
401  {
402  fprintf( ioQQQ, " XMIN, XMAX=%12.4e%12.4e NFLUX=%4ld\n",
403  xmin, xmax, rfield.nflux );
404  }
405 
406  ymin = FLT_MAX;
407  ymax = -FLT_MAX;
408 
409  for( i=0; i < rfield.nflux; i++ )
410  {
411  if( strcmp(plotCom.chPType[np],"OPAA") == 0 )
412  {
413  /* absorption opacity */
414  arg1 = opac.opacity_abs_savzon1[i];
415  arg2 = opac.opacity_abs[i];
416  }
417 
418  else if( strcmp(plotCom.chPType[np],"OPAS") == 0 )
419  {
420  /* scattering opacity */
421  arg1 = opac.opacity_sct_savzon1[i];
422  arg2 = opac.opacity_sct[i];
423  }
424 
425  else if( strcmp(plotCom.chPType[np],"OPAT") == 0 )
426  {
427  /* total opacity */
429  arg2 = opac.opacity_abs[i] + opac.opacity_sct[i];
430  }
431 
432  else
433  {
434  /* this cannot happen since type was set to one of above */
435  fprintf( ioQQQ, " pltopc type=%4.4s not known. STOP\n",
436  plotCom.chPType[np] );
438  }
439 
440  y[i] = (realnum)log10(MAX2(arg1/dense.gas_phase[ipHYDROGEN],1e-35));
441  y2[i] = (realnum)log10(MAX2(arg2/dense.gas_phase[ipHYDROGEN],1e-35));
442 
443  if( (double)rfield.anulog[i] > xmin && (double)rfield.anulog[i] < xmax )
444  {
445  ymin = MIN3(ymin,y[i],y2[i]);
446  ymax = MAX3(ymax,y[i],y2[i]);
447  }
448  }
449 
450  if( trace.lgTrace )
451  {
452  fprintf( ioQQQ, " PLOT called for the first time, YMAX, MIN=%10.2e%10.2e\n",
453  ymax, ymin );
454  }
455 
456  /* lower min by factor of 10 to show absorption in next plot */
457  ymin = MAX2(ymin-1.,-35.);
458  ymax += 1.;
459  if( plotCom.lgPltTrace[np] )
460  {
461  fprintf( ioQQQ, " YMAX, MIN=%14.4e%14.4e Npnts=%4ld\n",
462  ymax, ymin, rfield.nflux );
463  }
464 
465  strcpy( chXtitle, "Log(opacity) vs log(n)" );
466 
467  chSym = '.';
468  pltr(rfield.anulog,y,rfield.nflux,xmin,xmax,ymin,ymax,chSym,chXtitle
469  ,1,plotCom.lgPltTrace[np]);
470 
471  chSym = 'o';
472  pltr(rfield.anulog,y2,rfield.nflux,xmin,xmax,ymin,ymax,chSym,chXtitle
473  ,3,plotCom.lgPltTrace[np]);
474 
475  free(y);
476  free(y2);
477  return;
478 }
479 
480 /*pltr core plotting routine for generating line printer plots */
481 
483  /* the x-axis */
484  realnum x[],
485  /* the y-axi */
486  realnum y[],
487  /* number of points */
488  long int npnts,
489  /* mins and maxs, log of min and max of x-axis */
490  double xmin,
491  double xmax,
492  double ymin,
493  double ymax,
494  /* plot symbol */
495  char chSym,
496  char *chXtitle,
497  long int itim,
498  bool lgTrace)
499 {
500  static char chPage[59][122];
501 
502  long int i,
503  ix,
504  iy,
505  j,
506  nc;
507 
508  /* the max number of decades we can plot */
509 # define NDECAD 18
510 
511  static long int jpnt[NDECAD],
512  lowx,
513  lx;
514 
515  static double xdec,
516  xinc,
517  ydown,
518  yinc;
519 
520  /* this is log of smallestnumer in following set */
521  const realnum xAxisMin = -8.f;
522 
523  static char chLab[NDECAD][5]={"1E-8","1E-7","1E-6","1E-5",
524  "1E-4",".001","0.01"," 0.1"," 1 ",
525  " 10 "," 100","1000","1E4 ","1E5 ","1E6 ","1E7 ","1E8 ","1E9 "};
526 
527  DEBUG_ENTRY( "pltr()" );
528 
529  /* ITIM=1, first call, =2 intermediate calls, =3 for last call*/
530  if( itim == 1 )
531  {
532  /* first call, set left border of plot and clear out array */
533  for( i=1; i < IHI; i++ )
534  {
535  chPage[i][0] = 'l';
536  for( j=1; j < IWID; j++ )
537  {
538  chPage[i][j] = ' ';
539  }
540  }
541 
542  /* centered label for plot */
543  strcpy( chPage[1], " " );
544  strcat( chPage[1], chXtitle );
545  strcat( chPage[1], input.chTitle );
546 
547  /* one dex increments in x and y marked special */
548  i = 1;
549  ydown = 0.;
550  yinc = (realnum)(IHI-2)/(ymax - ymin);
551  nc = 0;
552 
553  while( i <= IHI && nc < 200 )
554  {
555  chPage[i-1][1] = '-';
556  ydown += yinc;
557  i = (long)(ydown + 1);
558  nc += 1;
559  }
560 
561  /* bottom increments of plot */
562  for( i=0; i < IWID; i++ )
563  {
564  chPage[IHI-1][i] = '-';
565  }
566 
567  if( xmin < xAxisMin )
568  {
569  fprintf(ioQQQ," plts: xmin is less than min value in array\n");
571  }
572  /* LX is pointer to label for number in x-axis in chLab */
573  if( xmin < 0. )
574  {
575  lx = (long)(4.999-fabs(xmin));
576  /* lx is the offset within the array of x-axis values */
577  /* >>chng 99 jun 11 change to allow any min value of x-axis */
578  lx = (long)(fabs(xAxisMin)-0.001-fabs(xmin));
579  lx = MAX2(0,lx);
580  /* this is lowest decade on plot */
581  xdec = -floor(fabs(xmin)+1e-5);
582  }
583  else
584  {
585  double aa;
586  lx = (long)MAX2(0.,4.+xmin);
587  /* lx is the offset within the array of x-axis values */
588  lx = (long)MAX2(0.,4.+xmin);
589  /* >>chng 99 jun 11 change to allow any min value of x-axis */
590  aa = fabs(xAxisMin);
591  lx = (long)MAX2(0., aa-1. + xmin );
592  xdec = floor(xmin+1e-5);
593  }
594 
595  lowx = lx + 1;
596  xinc = (realnum)(IWID-1)/(xmax - xmin);
597  i = (long)MAX2(1.,(xdec-xmin)*xinc+1.);
598  nc = 0;
599 
600  while( i < IWID && nc < 100 )
601  {
602  chPage[IHI-2][i - 1] = 'l';
603 
604  /* fix position of x labels */
605  lx = MIN2(lx+1,NDECAD);
606 
607  /* slight offset to center label */
608  jpnt[lx-1] = MAX2(0,i-3);
609  jpnt[lx-1] = MIN2((long)IWID-4,jpnt[lx-1]);
610  xdec += 1.;
611  i = (long)MAX2(1.,(xdec-xmin)*xinc+1.);
612  nc += 1;
613  }
614  }
615 
616  /* everything falls down through here */
617  /* now fill in data, symbol is chSym */
618  for( i=0; i < npnts; i++ )
619  {
620  if( (double)x[i] > xmin && (double)x[i] < xmax )
621  {
622  iy = (long)(IHI - MAX2(y[i]-ymin,0.)*yinc);
623  iy = MAX2(1,iy);
624  ix = (long)((x[i] - xmin)*xinc + 1);
625 
626  if( lgTrace )
627  {
628  fprintf( ioQQQ, " x, y, ix, iy=%7.3f%7.3f%4ld%4ld\n",
629  x[i], y[i], ix, iy );
630  }
631  chPage[iy-1][ix - 1] = chSym;
632  }
633  }
634 
635  if( itim == 3 )
636  {
637  /* make the plot */
638  fprintf( ioQQQ, "1\n" );
639  for( i=1; i < IHI; i++ )
640  {
641  fprintf( ioQQQ, " %121.121s\n", chPage[i] );
642  }
643 
644  /* now put on label for X-axis */
645  for( i=0; i < IWID; i++ )
646  {
647  chPage[0][i] = ' ';
648  }
649 
650  for( i=lowx-1; i < lx; i++ )
651  {
652  /* copy the four char of the numeric string */
653  strncpy(chPage[0]+jpnt[i] , chLab[i+1] , 4);
654  }
655  fprintf( ioQQQ, " %121.121s\n", chPage[0] );
656  }
657  return;
658 }
pltopc
STATIC void pltopc(long int np, const char *chCall)
Definition: plot.cpp:369
t_geometry::covgeo
realnum covgeo
Definition: geometry.h:35
dense
t_dense dense
Definition: dense.cpp:24
IWID
#define IWID
Definition: plot.cpp:8
pltr
STATIC void pltr(realnum[], realnum[], long, double, double, double, double, char, char *, long, bool)
rfield
t_rfield rfield
Definition: rfield.cpp:8
t_rfield::flux
realnum ** flux
Definition: rfield.h:86
ioQQQ
FILE * ioQQQ
Definition: cddefines.cpp:7
t_hcmap::temap
realnum * temap
Definition: hcmap.h:42
geometry.h
realnum
float realnum
Definition: cddefines.h:103
iterations
t_iterations iterations
Definition: iterations.cpp:5
rfield.h
STATIC
#define STATIC
Definition: cddefines.h:97
t_input::chTitle
char chTitle[INPUT_LINE_LENGTH]
Definition: input.h:37
MIN3
#define MIN3(a, b, c)
Definition: cddefines.h:766
t_hcmap::lgMapBeingDone
bool lgMapBeingDone
Definition: hcmap.h:33
IHI
#define IHI
Definition: plot.cpp:7
t_rfield::otscon
realnum * otscon
Definition: rfield.h:195
t_rfield::anulog
realnum * anulog
Definition: rfield.h:77
trace.h
t_rfield::outlin
realnum ** outlin
Definition: rfield.h:199
t_dense::gas_phase
realnum gas_phase[LIMELM]
Definition: dense.h:71
input
t_input input
Definition: input.cpp:12
ipHYDROGEN
const int ipHYDROGEN
Definition: cddefines.h:305
opac
t_opac opac
Definition: opacity.cpp:5
t_hcmap::cmap
realnum * cmap
Definition: hcmap.h:48
MIN2
#define MIN2
Definition: cddefines.h:761
t_hcmap::hmap
realnum * hmap
Definition: hcmap.h:45
nzone
long int nzone
Definition: cddefines.cpp:14
radius
t_radius radius
Definition: radius.cpp:5
t_rfield::ConEmitLocal
realnum ** ConEmitLocal
Definition: rfield.h:149
t_plotCom::chPType
char chPType[NDPLOT][5]
Definition: plot.h:18
EXIT_FAILURE
#define EXIT_FAILURE
Definition: cddefines.h:140
dense.h
trace
t_trace trace
Definition: trace.cpp:5
MAX3
#define MAX3(a, b, c)
Definition: cddefines.h:787
cddefines.h
t_opac::opacity_sct
double * opacity_sct
Definition: opacity.h:98
t_hcmap::nmap
long int nmap
Definition: hcmap.h:39
t_called::lgTalk
bool lgTalk
Definition: called.h:12
NDECAD
#define NDECAD
t_hcmap::RangeMap
realnum RangeMap[2]
Definition: hcmap.h:23
radius.h
MALLOC
#define MALLOC(exp)
Definition: cddefines.h:501
t_geometry::lgSphere
bool lgSphere
Definition: geometry.h:24
t_rfield::nflux
long int nflux
Definition: rfield.h:43
t_opac::opacity_abs
double * opacity_abs
Definition: opacity.h:95
MAX2
#define MAX2
Definition: cddefines.h:782
t_plotCom::pltxmn
realnum pltxmn[NDPLOT]
Definition: plot.h:23
cdEXIT
#define cdEXIT(FAIL)
Definition: cddefines.h:434
t_rfield::nupper
long int nupper
Definition: rfield.h:46
t_rfield::anu2
realnum * anu2
Definition: rfield.h:79
map_do
void map_do(FILE *io, const char *chType)
Definition: hcmap.cpp:23
t_rfield::otslin
realnum * otslin
Definition: rfield.h:193
t_radius::r1r0sq
double r1r0sq
Definition: radius.h:49
plotCom
t_plotCom plotCom
Definition: plot.cpp:19
t_rfield::reflin
realnum ** reflin
Definition: rfield.h:206
t_opac::opacity_sct_savzon1
double * opacity_sct_savzon1
Definition: opacity.h:110
t_iterations::lgLastIt
bool lgLastIt
Definition: iterations.h:36
t_rfield::anu
double * anu
Definition: rfield.h:58
t_opac::opacity_abs_savzon1
double * opacity_abs_savzon1
Definition: opacity.h:108
called
t_called called
Definition: called.cpp:5
t_plotCom::nplot
long int nplot
Definition: plot.h:27
t_plotCom::pltxmx
realnum pltxmx[NDPLOT]
Definition: plot.h:24
t_rfield::ConEmitOut
realnum ** ConEmitOut
Definition: rfield.h:161
t_rfield::widflx
realnum * widflx
Definition: rfield.h:65
t_rfield::outlin_noplot
realnum * outlin_noplot
Definition: rfield.h:200
t_plotCom
Definition: plot.h:15
t_rfield::flux_total_incident
realnum ** flux_total_incident
Definition: rfield.h:209
hcmap.h
pltmap
STATIC void pltmap(long int np, const char *chCall)
Definition: plot.cpp:275
geometry
t_geometry geometry
Definition: geometry.cpp:5
t_rfield::ConEmitReflec
realnum ** ConEmitReflec
Definition: rfield.h:155
iterations.h
opacity.h
called.h
hcmap
t_hcmap hcmap
Definition: hcmap.cpp:21
t_plotCom::lgPltTrace
bool lgPltTrace[NDPLOT]
Definition: plot.h:30
t_plotCom::lgPlotON
bool lgPlotON
Definition: plot.h:21
plot.h
input.h
plot
void plot(const char *chCall)
Definition: plot.cpp:38
DEBUG_ENTRY
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684
t_trace::lgTrace
bool lgTrace
Definition: trace.h:12
pltcon
STATIC void pltcon(long int np, const char *chCall)
Definition: plot.cpp:98