129 double HCaseBRecCoeff,
148 double frac_beam_time , frac_beam_time1;
150 double frac_beam_const , frac_beam_const1;
152 double frac_isotropic , frac_isotropic1;
154 long int nelem , ion;
161 fprintf(
ioQQQ,
" ContSetIntensity called.\n" );
175 for( i=0; i <
rfield.nupper; i++ )
185 frac_beam_const = 0.;
188 for( j=0; j < 4; j++ )
199 if( i > 0 && i <
rfield.nupper-1 )
213 amean += wanu[j]*wfun[j];
214 amean2 += wanu[j]*wanu[j]*wfun[j];
215 amean3 += wanu[j]*wanu[j]*wanu[j]*wfun[j];
216 frac_beam_time +=
fweigh[j]*frac_beam_time1;
217 frac_beam_const +=
fweigh[j]*frac_beam_const1;
218 frac_isotropic +=
fweigh[j]*frac_isotropic1;
221 ASSERT( fabs( 1.-frac_beam_time-frac_beam_const-frac_isotropic)<
226 fprintf(
ioQQQ,
"\n Cannot continue. The continuum is far too intense.\n" );
227 for( j=0; j <
rfield.nShape; j++ )
231 fprintf(
ioQQQ,
" Problem is with source number %li\n", j );
246 if(
rfield.flux[0][i] > 0. )
268 else if(
rfield.flux[0][i] == 0. )
277 fprintf(
ioQQQ,
" negative continuum returned at%6ld%10.2e%10.2e\n",
283 rfield.ConEmitReflec[0][i] = 0.;
284 rfield.ConEmitOut[0][i] = 0.;
288 alf = 1./(1. +
rfield.anu[i]*(1.1792e-4 + 7.084e-10*
rfield.anu[i]));
289 bet = 1. - alf*
rfield.anu[i]*(1.1792e-4 + 2.*7.084e-10*
rfield.anu[i])/
293 rfield.lgMeshSetUp =
true;
305 for( i=1; i<
rfield.nupper-1; ++i )
320 fprintf(
ioQQQ,
"\n\n Compton heating, cooling coefficients \n" );
321 for( i=0; i <
rfield.nupper; i += 2 )
323 fprintf(
ioQQQ,
"%6ld%10.2e%10.2e%10.2e", i,
rfield.anu[i],
326 fprintf(
ioQQQ,
"\n" );
362 fprintf(
ioQQQ,
" ContSetIntensity: The peak of the H-ion continuum is at %.3e Ryd - its value is %.2e\n",
368 fprintf(
ioQQQ,
" PROBLEM DISASTER The continuum is too intense to compute. Use a fainter continuum. (This is the nu*f_nu test)\n" );
369 fprintf(
ioQQQ,
" Sorry.\n" );
377 fntest = peak*
rfield.FluxFaint;
379 enum {DEBUG_LOC=
false};
383 for( i=0; i<
rfield.nupper; ++i )
385 fprintf(
ioQQQ,
" consetintensityBUGGG\t%.2e\t%.2e\n" ,
399 while( i >
prt.ipeak+3 &&
434 fprintf(
ioQQQ,
" PROBLEM DISASTER This incident continuum appears to have no radiation.\n" );
435 fprintf(
ioQQQ,
" Sorry.\n" );
454 for( i=0; i <
rfield.nflux; i++ )
456 if(
rfield.flux[0][i] == 0. )
460 fprintf(
ioQQQ,
" NOTE Setcon: continuum has zero intensity starting at %11.4e Ryd.\n",
471 "%6ld cells in the incident continuum have zero intensity. Problems???\n\n",
477 for( i=1; i <
rfield.nflux; i++ )
479 if(
rfield.flux[0][i] < 0. )
482 " PROBLEM DISASTER Continuum has negative intensity at %.4e Ryd=%.2e %4.4s %4.4s\n",
489 " PROBLEM DISASTER cont_setintensity - internal error - continuum energies not in increasing order: energies follow\n" );
491 "%ld %e %ld %e %ld %e\n",
507 ionbal.lgCompRecoil =
false;
542 tcompr = (p1 + p2 + p3 + p4 + p5 + p6 + p7)/(
prt.pradio +
prt.pbal +
543 p + phe + pheii +
prt.xpow +
prt.GammaLumin);
545 tcomp = tcompr/(4.*6.272e-6);
550 " mean photon energy=%10.3eR =%10.3eK low, high nu=%12.4e%12.4e\n",
556 prt.powion = p + phe + pheii +
prt.xpow +
prt.GammaLumin;
575 fprintf(
ioQQQ,
" NOTE There is no hydrogen-ionizing radiation.\n" );
576 fprintf(
ioQQQ,
" Was this intended?\n\n" );
581 fprintf(
ioQQQ,
" NOTE There is no Balmer continuum radiation.<<<<\n" );
582 fprintf(
ioQQQ,
" Was this intended?\n\n" );
593 if(
hextra.lgNeutrnHeatOn )
611 strcmp(
rfield.chSpType[
rfield.nShape-1],
"BLACK" )==0 )
621 "\n WARNING: The energy density temperature (%g) is greater than the"
622 " black body temperature (%g). This is unphysical.\n\n",
641 ASSERT( plsFrqConstant > 2.7e-12 && plsFrqConstant < 2.8e-12 );
665 for( i=0; i <
rfield.ipPlasma-1; i++ )
670 rfield.flux_beam_const[i] = 0.;
671 rfield.flux_beam_time[i] = 0.;
672 rfield.flux_isotropic[i] = 0.;
690 " !The plasma frequency is %.2e Ryd. The incident continuum is set to 0 below this.\n",
696 for( i=0; i <
rfield.nupper; i++ )
713 rfield.flux_beam_const_save[i] =
rfield.flux_beam_const[i];
714 rfield.flux_time_beam_save[i] =
rfield.flux_beam_time[i];
715 rfield.flux_isotropic_save[i] =
rfield.flux_isotropic[i];
744 while( i <
rfield.nupper && (
rfield.OccNumbIncidCont[i] > 1.) )
761 if( (
prt.powion +
prt.pbal) < 1.8e-2 )
766 if( ((
prt.powion +
prt.pbal) < 1.8e-12) &&
768 (!
thermal.lgTemperatureConstant) )
770 fprintf(
ioQQQ,
"\n >>>\n"
771 " >>> NOTE The incident continuum is surprisingly faint.\n" );
773 " >>> The total energy in the Balmer and Lyman continua is %.2e erg cm-2 s-1.\n"
774 ,(
prt.powion +
prt.pbal));
775 fprintf(
ioQQQ,
" >>> This is many orders of magnitude fainter than the ISM galactic background.\n" );
776 fprintf(
ioQQQ,
" >>> This seems unphysical - please check that the continuum intensity has been properly set.\n" );
777 fprintf(
ioQQQ,
" >>> YOU MAY BE MAKING A BIG MISTAKE!!\n >>>\n\n\n\n" );
788 fprintf(
ioQQQ,
"\n\n"
789 " CAUTION The incident radiation field is surprisingly intense.\n" );
791 " The dimensionless hydrogen ionization parameter is %.2e.\n"
793 fprintf(
ioQQQ,
" This is many orders of magnitude brighter than commonly seen.\n" );
794 fprintf(
ioQQQ,
" This seems unphysical - please check that the radiation field intensity has been properly set.\n" );
795 fprintf(
ioQQQ,
" YOU MAY BE MAKING A BIG MISTAKE!!\n\n\n\n\n" );
808 TeNew = (20000.+log10(
rfield.uh)*5000.);
809 TeNew =
MAX2(8000. , TeNew );
830 for( ion=0; ion<nelem+1; ++ion )
850 double EdenExtraLocal =
dense.EdenExtra +
857 HCaseBRecCoeff = (-9.9765209 + 0.158607055*
phycon.telogn[0] + 0.30112749*
858 phycon.telogn[1] - 0.063969007*
phycon.telogn[2] + 0.0012691546*
860 0.037621619*
phycon.telogn[1] + 0.0076175048*
phycon.telogn[2] -
861 0.00023432613*
phycon.telogn[3]);
862 HCaseBRecCoeff = pow(10.,HCaseBRecCoeff)/
phycon.te;
867 double PhotonEnergy = 1.;
871 double OtherIonization =
rfield.qhtot*6.3e-18/
POW3(PhotonEnergy) +
874 double newEden =
dense.eden;
882 (CollIoniz*
dense.eden+OtherIonization)/(HCaseBRecCoeff*
dense.eden);
883 if( RatioIoniz<1e-3 )
895 else if( RatioIoniz>1e3 )
911 double alpha = HCaseBRecCoeff + CollIoniz ;
912 double beta = HCaseBRecCoeff*EdenExtraLocal + OtherIonization +
914 double gamma = -
dense.gas_phase[
ipHYDROGEN]*(OtherIonization+EdenExtraLocal*CollIoniz);
916 double discriminant =
POW2(beta) - 4.*alpha*gamma;
917 if( discriminant <0 )
920 fprintf(
ioQQQ,
" DISASTER PROBLEM cont_initensity found negative discriminant.\n");
928 fprintf(
ioQQQ,
" DISASTER PROBLEM cont_initensity found n(H+)>n(H).\n");
936 fprintf(
ioQQQ,
" DISASTER PROBLEM cont_initensity found n(H0)<0.\n");
955 hydro.lgHInducImp =
false;
959 hydro.lgHInducImp =
true;
975 double RecTot = HCaseBRecCoeff*
dense.eden;
976 RatioIonizToRecomb = xIoniz/RecTot;
985 r3ov2 = xIoniz/RecTot;
988 if( RatioIonizToRecomb > 0. )
990 double r1 =
dense.gas_phase[
ipHELIUM]/(1./RatioIonizToRecomb + 1. + r3ov2);
1026 while( loopCount < 10 && fabs(newEden/
dense.eden - 1.) > 0.001 );
1032 fprintf(
ioQQQ,
"PROBLEM the derived atomic hydrogen density is zero.\n");
1035 fprintf(
ioQQQ,
"This is almost certainly due to floating point "
1036 "limits on this computer.\nThe ionization parameter is very large,"
1037 " the density is very small,\nand the H^0 density cannot be"
1038 " stored in a double.\n");
1050 fprintf(
ioQQQ,
"\n PROBLEM DISASTER - this simulation has no source"
1051 " of ionization. The electron density is zero. Consider "
1052 "adding a source of ionization such as cosmic rays.\n\n");
1059 if(
dense.lgElmtOn[nelem] )
1065 dense.IonHigh[nelem] = nelem + 1;
1067 dense.IonLow[nelem] = 0;
1076 --
dense.IonHigh[nelem];
1084 if(
dense.lgSetIoniz[nelem] )
1086 while(
dense.SetIoniz[nelem][
dense.IonLow[nelem]] <
dense.density_low_limit )
1087 ++
dense.IonLow[nelem];
1088 while(
dense.SetIoniz[nelem][
dense.IonHigh[nelem]] <
dense.density_low_limit )
1089 --
dense.IonHigh[nelem];
1093 for( ion=0; ion<
dense.IonLow[nelem]; ++ion )
1095 dense.xIonDense[nelem][
dense.IonLow[nelem]] +=
dense.xIonDense[nelem][ion];
1096 dense.xIonDense[nelem][ion] = 0.;
1098 for( ion=nelem+1; ion>
dense.IonHigh[nelem]; --ion )
1100 dense.xIonDense[nelem][
dense.IonHigh[nelem]] +=
dense.xIonDense[nelem][ion];
1101 dense.xIonDense[nelem][ion] = 0.;
1107 dense.IonLow[nelem] = -1;
1108 dense.IonHigh[nelem] = -1;
1115 for(
long nelem=ipISO; nelem<
LIMELM; ++nelem)
1117 if( nelem < 2 ||
dense.lgElmtOn[nelem] )
1119 if(
iso_ctrl.lgContinuumLoweringEnabled[ipISO] )
1132 if(
dense.lgElmtOn[nelem] )
1134 if(
dense.IonLow[nelem] == 0 &&
dense.IonHigh[nelem] >=1)
1137 dense.xIonDense[nelem][0] = low2dens * atomFrac;
1138 dense.xIonDense[nelem][1] = low2dens * firstIonFrac;
1140 for (
long ion=1;ion<
dense.IonHigh[nelem];++ion)
1142 EdenHeav += ion*
dense.xIonDense[nelem][ion];
1148 dense.eden += EdenHeav;
1153 if(
dense.EdenSet > 0. )
1161 if(
dense.eden < 0. )
1163 fprintf(
ioQQQ,
" PROBLEM DISASTER Negative electron density results in ContSetIntensity.\n" );
1164 fprintf(
ioQQQ,
"%10.2e%10.2e%10.2e%10.2e%10.2e%10.2e\n",
1170 if(
dense.EdenSet > 0. )
1180 " ContSetIntensity sets initial EDEN to %.4e, contributors H+=%.2e He+, ++= %.2e %.2e Heav %.2e extra %.2e\n",
1198 fprintf(
ioQQQ,
"\ntrace continuum print of %li incident spectral "
1199 "components\n",
rfield.nShape);
1200 fprintf(
ioQQQ,
" # type Illum Beam? 1/cos TimeVary?\n");
1203 fprintf(
ioQQQ,
"%3li %6s %5i %c %.3f %c\n",
1211 fprintf(
ioQQQ,
"\n");
1214 fprintf(
ioQQQ,
" H2,1=%5ld%5ld NX=%5ld IRC=%5ld\n",
1219 fprintf(
ioQQQ,
" CARBON" );
1220 for( i=0; i < 6; i++ )
1222 fprintf(
ioQQQ,
"\n" );
1224 fprintf(
ioQQQ,
" OXY" );
1225 for( i=0; i < 8; i++ )
1227 fprintf(
ioQQQ,
"%5ld%5ld%5ld\n",
opac.ipo3exc[0],
1232 for( i=
rfield.ipG0_DB96_lo; i <
rfield.ipG0_DB96_hi; i++ )
1233 sum +=
rfield.flux[0][i];
1234 fprintf(
ioQQQ,
"\n Sum DB96 photons %.2e", sum);
1237 sum +=
rfield.flux[0][i];
1238 fprintf(
ioQQQ,
", sum H-ioniz photons %.2e\n", sum);
1241 fprintf(
ioQQQ,
"\n\n PHOTONS PER CELL (NOT RYD)\n" );
1242 fprintf(
ioQQQ,
" nu, flux, wid, occ \n" );
1243 for( i=0; i <
rfield.nflux; i++ )
1245 fprintf(
ioQQQ,
"%4ld%10.2e%10.2e%10.2e%10.2e\n", i,
1247 rfield.OccNumbIncidCont[i] );
1249 fprintf(
ioQQQ,
" \n" );
1259 fprintf(
ioQQQ,
" ContSetIntensity returns, nflux=%5ld anu(nflux)=%11.4e eden=%10.2e\n",
1456 if(
rfield.ExtinguishColumnDensity == 0. )
1460 for(
long i=0; i<
rfield.nupper; ++i )
1461 rfield.ExtinguishFactor[i] = 1.;
1465 double absorb = 1. -
rfield.ExtinguishLeakage;
1466 double factor =
rfield.ExtinguishColumnDensity*
1467 rfield.ExtinguishConvertColDen2OptDepth;
1474 for(
long i=0; i<low-1; ++i )
1475 rfield.ExtinguishFactor[i] = 1.;
1477 for(
long i=low-1; i <
rfield.nupper; i++ )
1480 sexp(factor*(pow(
rfield.anu[i],(
double)
rfield.ExtinguishEnergyPowerLow))));
1482 rfield.ExtinguishFactor[i] = extfactor;
1483 rfield.flux_beam_const[i] *= extfactor;
1484 rfield.flux_beam_time[i] *= extfactor;
1485 rfield.flux_isotropic[i] *= extfactor;
1488 rfield.flux_isotropic[i];
1498 double xLog_radius_inner,
1508 xLog_radius_inner = log10(
radius.rinner);
1511 for( i=0; i <
rfield.nShape; i++ )
1513 if( strcmp(
rfield.chRSpec[i],
"UNKN") == 0 )
1515 fprintf(
ioQQQ,
" UNKN spectral normalization cannot happen.\n" );
1516 fprintf(
ioQQQ,
" conorm punts.\n" );
1520 else if( strcmp(
rfield.chRSpec[i],
"SQCM") != 0 &&
1521 strcmp(
rfield.chRSpec[i],
"4 PI") != 0 )
1523 fprintf(
ioQQQ,
" chRSpec must be SQCM or 4 PI, and it was %4.4s. This cannot happen.\n",
1525 fprintf(
ioQQQ,
" conorm punts.\n" );
1532 if( strcmp(
rfield.chSpType[i],
"VOLK ") == 0 )
1536 fprintf(
ioQQQ,
"\n\n PROBLEM DISASTER At least one of the compiled stellar atmosphere"
1537 " grids has been compiled with a different energy grid resolution factor.\n" );
1538 fprintf(
ioQQQ,
" Please recompile this file using the COMPILE STARS command "
1539 "and make sure that you use the correct SET CONTINUUM RESOLUTION factor.\n" );
1543 else if( strcmp(
rfield.chSpType[i],
"READ ") == 0 )
1547 fprintf(
ioQQQ,
"\n\n PROBLEM DISASTER The file read by the TABLE READ command "
1548 "has been compiled with a different energy grid resolution factor.\n" );
1549 fprintf(
ioQQQ,
" Please recompile this file using the SAVE TRANSMITTED CONTINUUM "
1550 "command and use the correct SET CONTINUUM RESOLUTION factor.\n" );
1558 for(
size_t nd=0; nd <
gv.bin.size(); nd++ )
1562 fprintf(
ioQQQ,
"\n\n PROBLEM DISASTER At least one of the grain opacity files "
1563 "has been compiled with a different energy grid resolution factor.\n" );
1564 fprintf(
ioQQQ,
" Please recompile this file using the COMPILE GRAINS command "
1565 "and make sure that you use the correct SET CONTINUUM RESOLUTION factor.\n" );
1574 radius.lgPredLumin =
false;
1577 for( i=0; i <
rfield.nShape; i++ )
1579 if( strcmp(
rfield.chRSpec[i],
"4 PI") == 0 )
1582 radius.lgPredLumin =
true;
1589 " conorm converts continuum %ld from luminosity to intensity.\n",
1598 fprintf(
ioQQQ,
"PROBLEM DISASTER conorm: - A continuum source was specified as a luminosity, but the inner radius of the cloud was not set.\n");
1599 fprintf(
ioQQQ,
"Please set an inner radius.\nSorry.\n");
1605 for( i=0; i <
rfield.nShape; i++ )
1607 if( strcmp(
rfield.chSpNorm[i],
"IONI") == 0 )
1612 strcpy(
rfield.chSpNorm[i],
"Q(H)" );
1616 " conorm converts continuum %ld from ionizat par to q(h).\n",
1623 for( i=0; i <
rfield.nShape; i++ )
1625 if( strcmp(
rfield.chSpNorm[i],
"IONX") == 0 )
1629 strcpy(
rfield.chSpNorm[i],
"LUMI" );
1632 fprintf(
ioQQQ,
" conorm converts continuum%3ld from x-ray ionizat par to I.\n",
1643 fprintf(
ioQQQ,
" Cloudy will predict lumin into 4pi\n" );
1647 fprintf(
ioQQQ,
" Cloudy will do surface flux for lumin\n" );
1654 if( !
radius.lgPredLumin )
1661 for( i=0; i <
rfield.nShape; i++ )
1666 if( strcmp(
rfield.chSpType[
rfield.ipSpec],
"LASER") == 0 )
1671 fprintf(
ioQQQ,
"PROBLEM DISASTER, a continuum source is a laser at %f Ryd, but the intensity was specified over a range from %f to %f Ryd.\n",
1675 fprintf(
ioQQQ,
"Please specify the continuum flux where the laser is active.\n");
1683 fprintf(
ioQQQ,
" conorm continuum number %ld is shape %s range is %.2e %.2e\n",
1688 fprintf(
ioQQQ,
"the continuum points follow\n");
1692 while(
rfield.tNu[
rfield.ipSpec][jj].Ryd() != 0. && jj < 100 )
1694 fprintf(
ioQQQ,
"%li %e %e\n",
1703 if( strcmp(
rfield.chSpNorm[i],
"RATI") == 0 )
1710 fprintf(
ioQQQ,
" conorm this is ratio to 1st con\n" );
1716 fprintf(
ioQQQ,
" I cant form a ratio if continuum is first source.\n" );
1728 fprintf(
ioQQQ,
" Previous continua were zero where ratio is desired.\n" );
1736 flx1 *=
rfield.totpow[i];
1742 rfield.spfac[i] = flx1/flx2;
1745 fprintf(
ioQQQ,
" conorm ratio will set scale fac to%10.3e at%10.2e Ryd.\n",
1750 else if( strcmp(
rfield.chSpNorm[i],
"FLUX") == 0 )
1760 fprintf(
ioQQQ,
"\n\n PROBLEM DISASTER\n The intensity of continuum source %ld is non-positive at the energy used to normalize it (%.3e Ryd). Something is seriously wrong.\n",
1763 if( strcmp(
rfield.chSpType[i],
"INTER") == 0 )
1764 fprintf(
ioQQQ,
" This continuum shape given by a table of points - check that the intensity is specified at an energy within the range of that table.\n");
1765 fprintf(
ioQQQ,
" Also check that the numbers used to specify the shape and intensity do not under or overflow on this cpu.\n\n");
1772 f =
rfield.totpow[i] - f;
1773 rfield.spfac[i] = pow(10.,f);
1777 fprintf(
ioQQQ,
" conorm will set log fnu to%10.3e at%10.2e Ryd. Factor=%11.4e\n",
1782 else if( strcmp(
rfield.chSpNorm[i],
"Q(H)") == 0 ||
1783 strcmp(
rfield.chSpNorm[i],
"PHI ") == 0 )
1788 fprintf(
ioQQQ,
" conorm calling qintr range=%11.3e %11.3e desired val is %11.3e\n",
1800 diff =
rfield.totpow[i] - qentrd;
1805 if( diff < -35. || diff > 35. )
1807 fprintf(
ioQQQ,
" PROBLEM DISASTER Continuum source specified is too extreme.\n" );
1809 " The integral over the continuum shape gave (log) %.3e photons, and the command requested (log) %.3e.\n" ,
1810 qentrd ,
rfield.totpow[i]);
1812 " The difference in the log is %.3e.\n" ,
1816 fprintf(
ioQQQ,
" The continuum source is too bright.\n" );
1820 fprintf(
ioQQQ,
" The continuum source is too faint.\n" );
1823 fprintf(
ioQQQ,
" The usual cause for this problem is an incorrect continuum intensity/luminosity or radius command.\n" );
1824 fprintf(
ioQQQ,
" There were a total of %li continuum shape commands entered - the problem is with number %li.\n",
1831 rfield.spfac[i] = pow(10.,diff);
1836 fprintf(
ioQQQ,
" conorm finds Q over range from%11.4e-%11.4e Ryd, integral= %10.4e Factor=%11.4e\n",
1844 else if( strcmp(
rfield.chSpNorm[i],
"LUMI") == 0 )
1850 f =
rfield.totpow[i] - pentrd;
1851 rfield.spfac[i] = pow(10.,f);
1855 fprintf(
ioQQQ,
" conorm finds luminosity range is %10.3e to %9.3e Ryd, factor is %11.4e\n",
1863 fprintf(
ioQQQ,
"PROBLEM DISASTER What chSpNorm label is this? =%s=\n",
rfield.chSpNorm[i]);
1870 fprintf(
ioQQQ,
"PROBLEM DISASTER conorm finds infinite continuum scale factor.\n" );
1871 fprintf(
ioQQQ,
"The continuum is too intense to compute with this cpu.\n" );
1872 fprintf(
ioQQQ,
"Were the intensity and luminosity commands switched?\n" );
1873 fprintf(
ioQQQ,
"Sorry, but I cannot go on.\n" );
1889 radius.Conv2PrtInten -= (log10(2.) + xLog_radius_inner);
1891 else if( !
radius.lgPredLumin )
1894 fprintf(
ioQQQ,
"PROBLEM DISASTER conorm: Aperture slit specified, but not predicting luminosity.\n" );
1895 fprintf(
ioQQQ,
"conorm: Please specify an inner radius to determine L.\nSorry\n" );
1902 radius.Conv2PrtInten = log10(2.);
1906 if(
radius.distance > 0. &&
radius.lgRadiusKnown &&
prt.lgPrintFluxEarth )
1912 else if(
geometry.iEmissPower == 1 )
1914 else if(
geometry.iEmissPower == 2 )
1921 if(
prt.lgSurfaceBrightness )
1926 fprintf(
ioQQQ,
" PROBLEM DISASTER Sorry, but both luminosity and surface brightness have been requested for lines.\n" );
1927 fprintf(
ioQQQ,
" the PRINT LINE SURFACE BRIGHTNESS command can only be used when lines are predicted per unit cloud area.\n" );
1930 if(
prt.lgSurfaceBrightness_SR )