/*extin do extinction of incident continuum as set by extinguish command */ #include "cddefines.h" #include "rfield.h" #include "extinc.h" #include "sexp.h" #include "ipoint.h" #include "extin.h" void extin(float *ex1ryd) { long int i, low; double absorb, factor; # ifdef DEBUG_FUN fputs( "<+>extin()\n", debug_fp ); # endif /* modify input continuum by leaky absorber * power law fit to Cruddace et al. 1974 ApJ 187, 497. * */ if( extinc.excolm == 0. ) { *ex1ryd = 1.; } else { absorb = 1. - extinc.exleak; factor = extinc.excolm*6.22e-18; /* extinction at 1 and 4 Ryd */ *ex1ryd = (float)(extinc.exleak + absorb*sexp(factor)); low = ipoint(extinc.exlow); for( i=low-1; i < rfield.nflux; i++ ) { rfield.flux[i] *= (float)(extinc.exleak + absorb*sexp(factor* (pow(rfield.anu[i],-2.43)))); } } # ifdef DEBUG_FUN fputs( " <->extin()\n", debug_fp ); # endif return; }