/*grngam compute grains photoionization rates */ #include "cddefines.h" #include "rfield.h" #include "grainvar.h" #include "grngam.h" double grngam( /* pointer to grain type */ long int nd) { long int i; float grngam_v, partin, partot, suminc, sumots; # ifdef DEBUG_FUN fputs( "<+>grngam()\n", debug_fp ); # endif sumots = 0.; suminc = 0.; grngam_v = 0.; for( i=GrainVar.ipDustPot[nd]-1; i < rfield.nflux; i++ ) { partot = MAX2(0.f,1.f-GrainVar.dstpot[nd]/GrainVar.DustPhotoE[nd][i]); GrainVar.yhat[nd][i] = GrainVar.yn[nd][i]*MIN2(1.f,partot); partot = rfield.SummedDif[i]*GrainVar.yhat[nd][i]*GrainVar.dqabs[nd][i]; sumots += partot; partin = rfield.flux[i]*GrainVar.yhat[nd][i]*GrainVar.dqabs[nd][i]; suminc += partin; } grngam_v = sumots + suminc; # ifdef DEBUG_FUN fputs( " <->grngam()\n", debug_fp ); # endif return( grngam_v ); }