/*ParseGlobule parse parameters off the globule command */ #include #include "cddefines.h" #include "globul.h" #include "phycon.h" #include "sdrmin.h" #include "drmnon.h" #include "pressure.h" #include "varypar.h" #include "input.h" #include "ffmtread.h" #include "parse.h" void ParseGlobule(char *chCard) { int lgEOL; long int i; # ifdef DEBUG_FUN fputs( "<+>ParseGlobule()\n", debug_fp ); # endif /* globule with density increasing inward * parameters are outer density, radius of globule, and density power */ i = 5; globul.glbden = (float)FFmtRead(chCard,&i,76,&lgEOL); if( lgEOL ) { globul.glbden = 1.; phycon.hden = 0.; } else { phycon.hden = globul.glbden; globul.glbden = (float)pow(10.,globul.glbden); } globul.glbrad = (float)FFmtRead(chCard,&i,76,&lgEOL); if( lgEOL ) { globul.glbrad = 3.086e18f; } else { globul.glbrad = (float)pow(10.,globul.glbrad); } /* this is largest zone thickness, used to set first zone thickness */ sdrminCom.sdrmax = (float)(globul.glbrad/25.); /* turn off min dr checking in NEXTDR */ drmnon.lgDrMnOn = FALSE; globul.glbpow = (float)FFmtRead(chCard,&i,76,&lgEOL); if( lgEOL ) globul.glbpow = 1.; strcpy( pressure.chCPres, "GLOB" ); /* this is distance to globule */ globul.glbdst = globul.glbrad; /* vary option */ if( VaryPar.lgVarOn ) { /* pointer to where to write */ VaryPar.nvfpnt[VaryPar.nparm] = input.nRead; /* this is the number of parameters to feed onto the input line */ VaryPar.nvarxt[VaryPar.nparm] = 3; strcpy( chVaryPar.chVarFmt[VaryPar.nparm], "GLOBULE %f %f %f" ); /* param is log of abundance by number relative to hydrogen */ VaryPar.vparm[0][VaryPar.nparm] = (float)log10(globul.glbden); VaryPar.vparm[1][VaryPar.nparm] = (float)log10(globul.glbrad); VaryPar.vparm[2][VaryPar.nparm] = globul.glbpow; VaryPar.vincr[VaryPar.nparm] = 0.2f; ++VaryPar.nparm; } # ifdef DEBUG_FUN fputs( " <->ParseGlobule()\n", debug_fp ); # endif return; }