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