/*DielSupres derive scale factors for suppression of Burgess dielectronic recombination */ #include "cddefines.h" #include "supdie.h" #include "phycon.h" #include "supprs.h" #include "ioreco.h" #include "powi.h" #include "tepowers.h" #include "dielsupres.h" void DielSupres(void) { long int i; double effden; # ifdef DEBUG_FUN fputs( "<+>DielSupres()\n", debug_fp ); # endif /* dielectronic burgess recombination suppresion * default is this to be true */ if( supdie.lgSupDie[0] ) { for( i=0; i < LIMELM; i++ ) { /* following is effective density for scaling from Davidson's plot * first do temperature scaling, term in () is SQRT(te/15,000) */ effden = phycon.eden/(TePowers.sqrte/122.47); /* this is rough charge dependence, z^7 from Davidson */ effden /= powi((float)(i+1)/3.,7); supprs.DielSupprs[0][i] = (float)(1.-0.092*log10(effden)); supprs.DielSupprs[0][i] = (float)MIN2(1.,supprs.DielSupprs[0][i]); supprs.DielSupprs[0][i] = (float)MAX2(0.08,supprs.DielSupprs[0][i]); } } else { for( i=0; i < LIMELM; i++ ) { supprs.DielSupprs[0][i] = 1.; } } /* nussbaumer and storey recombination * default is this to be false */ if( supdie.lgSupDie[1] ) { for( i=0; i < LIMELM; i++ ) { /* assume same factors as above */ supprs.DielSupprs[1][i] = supprs.DielSupprs[0][i]; } } else { for( i=0; i < LIMELM; i++ ) { supprs.DielSupprs[1][i] = 1.; } } /* option to punch recombination coefficents, set with punch recomb coef command*/ if( lgioRecom > 0 ) { fprintf( ioRecom, " DielSupres finds following dielectronic recom suppression factors.\n" ); fprintf( ioRecom, " Z fac \n" ); for( i=0; i < LIMELM; i++ ) { fprintf( ioRecom, "%3ld %10.3e %10.3e\n", i+1, supprs.DielSupprs[0][i], supprs.DielSupprs[1][i] ); } fprintf( ioRecom, "\n"); } # ifdef DEBUG_FUN fputs( " <->DielSupres()\n", debug_fp ); # endif return; }