void MmaSink::put(const Field & x) { #ifdef DEBUG_MMASINK GBStream << "sink:number " << this << '\n'; #endif /* New version by MAURICIO that uses strings */ MLPutFunction(d_mlink, "ToExpression", 1); MLPutString(d_mlink, x.str().c_str()); /* COMMENTED BY MAURICIO, NOV 09 const long long & num = x.numerator().internal(); const long long & den = x.denominator().internal(); if(den==1L) { MLPutInteger(d_mlink,num); } else { MLPutFunction(d_mlink,"Rational",2L); MLPutInteger(d_mlink,num); MLPutInteger(d_mlink,den); }; */ #ifdef DEBUG_MMASINK checkforerror(); #endif ++d_count; };
void MmaSink::put(const symbolGB & x) { #ifdef DEBUG_MMASINK GBStream << "sink:symbol " << this << ' ' << x.value().chars() << '\n'; #endif MLPutSymbol(d_mlink,(const char *) x.value().chars()); #ifdef DEBUG_MMASINK checkforerror(); #endif ++d_count; };
void MmaSink::put(const char * x) { #ifdef DEBUG_MMASINK GBStream << "sink::symbol " << this << ' ' << x << '\n'; #endif MLPutSymbol(d_mlink,x); #ifdef DEBUG_MMASINK checkforerror(); #endif ++d_count; };
void MmaSink::put(long long x) { #ifdef DEBUG_MMASINK GBStream << "sink:long " << this << ' ' << x << '\n'; #endif MLPutInteger(d_mlink,x); #ifdef DEBUG_MMASINK checkforerror(); #endif ++d_count; };
void MmaSink::noOutput() { #ifdef DEBUG_MMASINK GBStream << "sink:null" << this << '\n'; #endif if(!MLPutSymbol(d_mlink,"Null")) errorc(__LINE__); #ifdef DEBUG_MMASINK checkforerror(); #endif ++d_count; };
Alias<ISink> MmaSink::outputFunction(const char* x,long L) { if(!MLPutFunction(d_mlink,x,L)) errorc(__LINE__); ++d_count; // DO NOT INCLUDE d_count -= L; since this will be done by the new MmaSink Alias<ISink> al(new MmaSink(*this),Adopt::s_dummy); #ifdef DEBUG_MMASINK checkforerror(); #endif return al; };
Alias<ISink> MmaSink::outputFunction(const symbolGB & x,long L) { #ifdef DEBUG_MMASINK GBStream << "sink:function " << x.value().chars() << ' ' << L << ' ' << this << '\n'; #endif Alias<ISink> result(outputFunction((const char *)x.value().chars(),L)); #ifdef DEBUG_MMASINK checkforerror(); #endif return result; };
void MmaSink::put(const GroebnerRule& x) { #ifdef DEBUG_MMASINK GBStream << "sink:rule " << this << ' ' << x << '\n'; #endif MLPutFunction(d_mlink,"Rule",2L); put(x.LHS()); put(x.RHS()); #ifdef DEBUG_MMASINK checkforerror(); #endif };
void MmaSink::put(const Variable& x) { #ifdef DEBUG_MMASINK GBStream << "sink:variable " << this << x.cstring() << '\n'; #endif MLPutFunction(d_mlink,"ToExpression",1L); MLPutString(d_mlink,x.cstring()); #ifdef DEBUG_MMASINK checkforerror(); #endif ++d_count; };
void MmaSink::put(const Term& x) { #ifdef DEBUG_MMASINK GBStream << "sink:term " << this << ' ' << x << '\n'; #endif MLPutFunction(d_mlink,"Times",2L); ++d_count; d_count -= 2; put(x.CoefficientPart()); put(x.MonomialPart()); #ifdef DEBUG_MMASINK checkforerror(); #endif };
void MmaSink::put(bool b) { #ifdef DEBUG_MMASINK GBStream << "sink:bool " << this << ' ' << b << '\n'; #endif if(b) { MLPutSymbol(d_mlink,"True"); } else { MLPutSymbol(d_mlink,"False"); }; #ifdef DEBUG_MMASINK checkforerror(); #endif ++d_count; };
void MmaSink::put(const Polynomial& x) { #ifdef DEBUG_MMASINK GBStream << "sink:polynomial " << this << ' ' << x << '\n'; #endif int len = x.numberOfTerms(); if(len==0) { MLPutInteger(d_mlink,0); ++d_count; } else if(len==1) { put(*x.begin()); } else { MLPutFunction(d_mlink,"Plus",len); ++d_count; d_count -= len; PolynomialIterator w = x.begin(); while(len) { put(*w); --len;++w; }; }; #ifdef DEBUG_MMASINK checkforerror(); #endif };
void MmaSink::put(const Monomial& x) { #ifdef DEBUG_MMASINK GBStream << "sink:monomial " << this << ' ' << x << '\n'; #endif int len = x.numberOfFactors(); if(len==0) { MLPutInteger(d_mlink,1); ++d_count; } else if(len==1) { put(*x.begin()); } else { MLPutFunction(d_mlink,"NonCommutativeMultiply",len); ++d_count; d_count -= len; MonomialIterator w = x.begin(); while(len) { put(*w); --len;++w; }; }; #ifdef DEBUG_MMASINK checkforerror(); #endif };
/*=======================================================================*/ void readparameterfile(char *filename) /*======================================================================= This routine reads the parameterfile that is valid for ALL postprocessing programs. The parameters are declared in readparameterfile.h The codes (especially 'galaxies') work only for the Choice of standard units. Seed Seed for the random number generator. Use any POSITIVE integer between 1 and 100. Path Path of the directory containing a Snapshot subdirectory with the snapshot files of one simulation. FileBasename Snapshotnames without the 3-digit number. MaxSnapshot Snapshot number for z=0. Omega Omega Matter OmegaLambda Omega Lambda Hubble_h Hubble constant in units of 100 km/s/Mpc H0 Hubble constant in code units of Gadget, as written out during the simulation. 0.1 for standard choice of units. G Gravitational constant in Gadget code units. As above. GroupMinLen Minimum particle number for the FOF identification. BaryonFrac Original baryon fraction. EnergySN Energy released by one supernova explosion. (In erg) EtaSN Relative number of SN per amount of stars. Yield Mass fraction of metals produced during star formation. VcFactor Assumption: Vmax = Vcircular * VcFactor Alpha Star formation efficiency. Epsilon Feedback efficiency. ThreshMerger Threshold for the mass ratio when a merging event will be treated as "major merger". ThreshGasBurst Threshold for the Cold gas-disc ratio which will defined if would be star burst in a minor merger LowerMerger Limit of mass ratio used to determined if would be a star burst in a minor merger Identifier Text string written into the final galaxy output filename. TimeBetSnapshot As entered in Gadget. TimeOfFirstSnapshot As entered in Gadget. UnitLength_in_cm As entered in Gadget. (3.085678e21 for 1.0 kpc) UnitMass_in_g As entered in Gadget. (1.989e43 for 1.0e10 solar masses) UnitVelocity_in_cm_per_s As entered in Gadget. (1e5 for 1 km/sec) =======================================================================*/ { FILE *fp; int elements, check; char *error; char buffer[256], buffer2[256]; #ifndef HDF5OUTPUT FILE *fw; char saveparam_fname[FILENAME_MAX]; #endif void checkforerror(char *error, int elements, char *buf); fp = fopen(filename, "r"); if (fp==NULL) { fprintf(stdout, "Error (readparameterfile): file '%s' not found - Stop.\n", filename); fflush(stdout); exit(EXIT_FAILURE); } fprintf(stdout,"Reading from parameters file %s...\n", filename); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Seed%s",buffer2); checkforerror(error,elements,&buffer[0]); Seed = atoi(buffer2); printf(" Seed %d\n", Seed); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Path1%s",path1); checkforerror(error,elements,&buffer[0]); printf(" Path1 %s\n", path1); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Path%s",path); checkforerror(error,elements,&buffer[0]); printf(" Path %s\n", path); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Path2%s",path2); checkforerror(error,elements,&buffer[0]); printf(" Path2 %s\n", path2); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Path3%s",path3); checkforerror(error,elements,&buffer[0]); printf(" Path3 %s\n", path3); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"FileBasename%s",filebasename); checkforerror(error,elements,&buffer[0]); printf(" FileBasename %s\n", filebasename); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Files%s",buffer2); checkforerror(error,elements,&buffer[0]); Files = atoi(buffer2); printf(" Files %d\n", Files); printf("\n"); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"MaxSnapshot%s",buffer2); checkforerror(error,elements,&buffer[0]); MaxSnapshot = atoi(buffer2); printf(" MaxSnapshot %d\n", MaxSnapshot); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Omega%s",buffer2); checkforerror(error,elements,&buffer[0]); Omega = atof(buffer2); printf(" Omega %g\n", Omega); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"OmegaLambda%s",buffer2); checkforerror(error,elements,&buffer[0]); OmegaLambda = atof(buffer2); printf(" OmegaLambda %g\n", OmegaLambda); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Hubble_h%s",buffer2); checkforerror(error,elements,&buffer[0]); Hubble_h = atof(buffer2); printf(" Hubble_h %g\n", Hubble_h); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"H0%s",buffer2); checkforerror(error,elements,&buffer[0]); H0 = atof(buffer2); printf(" H0 %g\n", H0); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"G%s",buffer2); checkforerror(error,elements,&buffer[0]); G = atof(buffer2); printf(" G %g\n", G); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"GroupMinLen%s",buffer2); checkforerror(error,elements,&buffer[0]); GroupMinLen = atoi(buffer2); printf(" GroupMinLen %d\n", GroupMinLen); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"BaryonFrac%s",buffer2); checkforerror(error,elements,&buffer[0]); BaryonFrac = atof(buffer2); printf(" BaryonFrac %g\n", BaryonFrac); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"EnergySN%s",buffer2); checkforerror(error,elements,&buffer[0]); EnergySN = atof(buffer2); printf(" EnergySN %g\n", EnergySN); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"EtaSN%s",buffer2); checkforerror(error,elements,&buffer[0]); EtaSN = atof(buffer2); printf(" EtaSN %g\n", EtaSN); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"EnergySNgamma%s",buffer2); checkforerror(error,elements,&buffer[0]); EnergySNgamma = atof(buffer2); printf(" EnergySNgamma %g\n", EnergySNgamma); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"BinFrac%s",buffer2); checkforerror(error,elements,&buffer[0]); BinFrac = atof(buffer2); printf(" BinFrac %g\n", BinFrac); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"VcFactor%s",buffer2); checkforerror(error,elements,&buffer[0]); VcFactor = atof(buffer2); printf(" VcFactor %g\n", VcFactor); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Alpha%s",buffer2); checkforerror(error,elements,&buffer[0]); Alpha = atof(buffer2); printf(" Alpha %g\n", Alpha); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Epsilon%s",buffer2); checkforerror(error,elements,&buffer[0]); Epsilon = atof(buffer2); printf(" Epsilon %g\n", Epsilon); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"ThreshMerger%s",buffer2); checkforerror(error,elements,&buffer[0]); ThreshMerger = atof(buffer2); printf(" ThreshMerger %g\n", ThreshMerger); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"ThreshGasBurst%s",buffer2); checkforerror(error,elements,&buffer[0]); ThreshGasBurst = atof(buffer2); printf(" ThreshGasBurst %g\n", ThreshGasBurst); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"LowerMerger%s",buffer2); checkforerror(error,elements,&buffer[0]); LowerMerger = atof(buffer2); printf(" LowerMerger %g\n", LowerMerger); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"ThreshDisk%s",buffer2); checkforerror(error,elements,&buffer[0]); ThreshDisk = atof(buffer2); printf(" ThreshDisk %g\n", ThreshDisk); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"PertDist%s",buffer2); checkforerror(error,elements,&buffer[0]); PertDist = atof(buffer2); printf(" PertDist %g\n", PertDist); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"FracEj%s",buffer2); checkforerror(error,elements,&buffer[0]); FracEj = atof(buffer2); printf(" FracEj %g\n", FracEj); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"FracH%s",buffer2); checkforerror(error,elements,&buffer[0]); FracH = atof(buffer2); printf(" FracH %g\n", FracH); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"FracHe%s",buffer2); checkforerror(error,elements,&buffer[0]); FracHe = atof(buffer2); printf(" FracHe %g\n", FracHe); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"FracBH%s",buffer2); checkforerror(error,elements,&buffer[0]); FracBH = atof(buffer2); printf(" FracBH %g\n", FracBH); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"EtaBH%s",buffer2); checkforerror(error,elements,&buffer[0]); EtaBH = atof(buffer2); printf(" EtaBH %g\n", EtaBH); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"K_AGN%s",buffer2); checkforerror(error,elements,&buffer[0]); K_AGN = atof(buffer2); printf(" K_AGN %g\n", K_AGN); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"SNIa_TimeToExplode%s",buffer2); checkforerror(error,elements,&buffer[0]); SNIa_TimeToExplode = atof(buffer2); printf(" SNIa_TimeToExplode %g\n", SNIa_TimeToExplode); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"SNIa_RateCte%s",buffer2); checkforerror(error,elements,&buffer[0]); SNIa_RateCte = atof(buffer2); printf(" SNIa_RateCte %g\n", SNIa_RateCte); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"SpinMeanLambda%s",buffer2); checkforerror(error,elements,&buffer[0]); SpinMeanLambda = atof(buffer2); printf(" SpinMeanLambda %g\n", SpinMeanLambda); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"SpinSigmaLambda%s",buffer2); checkforerror(error,elements,&buffer[0]); SpinSigmaLambda = fabsf(log(atof(buffer2))); printf(" SpinSigmaLambda %g\n", atof(buffer2)); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"GasRscale%s",buffer2); checkforerror(error,elements,&buffer[0]); GasRscale = atof(buffer2); printf(" GasRscale %g\n", GasRscale); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"AlphaRP%s",buffer2); checkforerror(error,elements,&buffer[0]); AlphaRP = atof(buffer2); printf(" AlphaRP %g\n", AlphaRP); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"MaxCvirRedshift%s",buffer2); checkforerror(error,elements,&buffer[0]); MaxCvirRedshift = atof(buffer2); printf(" MaxCvirRedshift %g\n", MaxCvirRedshift); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"MajorWetParameter%s",buffer2); checkforerror(error,elements,&buffer[0]); MajorWetParameter = atof(buffer2); printf(" MajorWetParameter %g\n", MajorWetParameter); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"EpsGrav%s",buffer2); checkforerror(error,elements,&buffer[0]); EpsGrav = atof(buffer2); printf(" EpsGrav %g\n", EpsGrav); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"IMFModel%s",IMFModel); checkforerror(error,elements,&buffer[0]); printf(" IMFModel %s\n", IMFModel); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"RtidalModel%s",RtidalModel); checkforerror(error,elements,&buffer[0]); printf(" RtidalModel %s\n", RtidalModel); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"TSTimescaleModel%s",TSTimescaleModel); checkforerror(error,elements,&buffer[0]); printf(" TSTimescaleModel %s\n", TSTimescaleModel); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"Identifier%s",identifier); checkforerror(error,elements,&buffer[0]); printf(" Identifier %s\n", identifier); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"TimeBetSnapshot%s",buffer2); checkforerror(error,elements,&buffer[0]); TimeBetSnapshot = atof(buffer2); printf(" TimeBetSnapshot %g\n", TimeBetSnapshot); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"TimeOfFirstSnapshot%s",buffer2); checkforerror(error,elements,&buffer[0]); TimeOfFirstSnapshot = atof(buffer2); printf(" TimeOfFirstSnapshot %g\n", TimeOfFirstSnapshot); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"UnitLength_in_cm%s",buffer2); checkforerror(error,elements,&buffer[0]); UnitLength_in_cm = atof(buffer2); printf(" UnitLength_in_cm %g\n", UnitLength_in_cm); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"UnitMass_in_g%s",buffer2); checkforerror(error,elements,&buffer[0]); UnitMass_in_g = atof(buffer2); printf(" UnitMass_in_g %g\n", UnitMass_in_g); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"UnitVelocity_in_cm_per_s%s",buffer2); checkforerror(error,elements,&buffer[0]); UnitVelocity_in_cm_per_s = atof(buffer2); printf(" UnitVelocity_in_cm_per_s %g\n", UnitVelocity_in_cm_per_s); printf("\n"); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameOutputsSelection%s",NameOutputsSelection); checkforerror(error,elements,&buffer[0]); printf(" NameOutputsSelection %s\n", NameOutputsSelection); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameCatalogue%s",NameCatalogue); checkforerror(error,elements,&buffer[0]); printf(" NameCatalogue %s\n", NameCatalogue); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameContamination%s",NameContamination); checkforerror(error,elements,&buffer[0]); printf(" NameContamination %s\n", NameContamination); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameHistory%s",NameHistory); checkforerror(error,elements,&buffer[0]); printf(" NameHistory %s\n", NameHistory); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameProperties%s",NameProperties); checkforerror(error,elements,&buffer[0]); printf(" NameProperties %s\n", NameProperties); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameSnapshot%s",NameSnapshot); checkforerror(error,elements,&buffer[0]); printf(" NameSnapshot %s\n", NameSnapshot); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameSubgalaxies%s",NameSubgalaxies); checkforerror(error,elements,&buffer[0]); printf(" NameSubgalaxies %s\n", NameSubgalaxies); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameSubgalfuture%s",NameSubgalfuture); checkforerror(error,elements,&buffer[0]); printf(" NameSubgalfuture %s\n", NameSubgalfuture); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameSubgalhistory%s",NameSubgalhistory); checkforerror(error,elements,&buffer[0]); printf(" NameSubgalhistory %s\n", NameSubgalhistory); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameSubhistory%s",NameSubhistory); checkforerror(error,elements,&buffer[0]); printf(" NameSubhistory %s\n", NameSubhistory); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameSubids%s",NameSubids); checkforerror(error,elements,&buffer[0]); printf(" NameSubids %s\n", NameSubids); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameSublist%s",NameSublist); checkforerror(error,elements,&buffer[0]); printf(" NameSublist %s\n", NameSublist); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameSuborbits%s",NameSuborbits); checkforerror(error,elements,&buffer[0]); printf(" NameSuborbits %s\n", NameSuborbits); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameSubproperties%s",NameSubproperties); checkforerror(error,elements,&buffer[0]); printf(" NameSubproperties %s\n", NameSubproperties); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameSubstructures%s",NameSubstructures); checkforerror(error,elements,&buffer[0]); printf(" NameSubstructures %s\n", NameSubstructures); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameVolatile%s",NameVolatile); checkforerror(error,elements,&buffer[0]); printf(" NameVolatile %s\n", NameVolatile); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameDMordered%s",NameDMordered); checkforerror(error,elements,&buffer[0]); printf(" NameDMordered %s\n", NameDMordered); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameConcentration%s",NameConcentration); checkforerror(error,elements,&buffer[0]); printf(" NameConcentration %s\n", NameConcentration); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameRscaleTables%s",NameRscaleTables); checkforerror(error,elements,&buffer[0]); printf(" NameRscaleTables %s\n", NameRscaleTables); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameVcTables%s",NameVcTables); checkforerror(error,elements,&buffer[0]); printf(" NameVcTables %s\n", NameVcTables); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"NameICMProperties%s",NameICMProperties); checkforerror(error,elements,&buffer[0]); printf(" NameICMProperties %s\n", NameICMProperties); /* * Code options */ printf("\n"); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"EjectionOn%s",buffer2); checkforerror(error,elements,&buffer[0]); EjectionOn = atoi(buffer2); printf(" EjectionOn %d\n", EjectionOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"ReIncorporateOn%s",buffer2); checkforerror(error,elements,&buffer[0]); ReIncorporateOn = atoi(buffer2); printf(" ReIncorporateOn %d\n", ReIncorporateOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"SubGalaxyTreeOn%s",buffer2); checkforerror(error,elements,&buffer[0]); SubGalaxyTreeOn = atoi(buffer2); printf(" SubGalaxyTreeOn %d\n", SubGalaxyTreeOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"DustOn%s",buffer2); checkforerror(error,elements,&buffer[0]); DustOn = atoi(buffer2); printf(" DustOn %d\n", DustOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"IRAOn%s",buffer2); checkforerror(error,elements,&buffer[0]); IRAOn = atoi(buffer2); printf(" IRAOn %d\n", IRAOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"AlphaConstantOn%s",buffer2); checkforerror(error,elements,&buffer[0]); AlphaConstantOn = atoi(buffer2); printf(" AlphaConstantOn %d\n", AlphaConstantOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"FormatGadgetHDM5On%s",buffer2); checkforerror(error,elements,&buffer[0]); FormatGadgetHDM5On = atoi(buffer2); printf(" FormatGadgetHDM5On %d\n", FormatGadgetHDM5On); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"DMPartOn%s",buffer2); checkforerror(error,elements,&buffer[0]); DMPartOn = atoi(buffer2); printf(" DMPartOn %d\n", DMPartOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"AGNOn%s",buffer2); checkforerror(error,elements,&buffer[0]); AGNOn = atoi(buffer2); printf(" AGNOn %d\n", AGNOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"AGNFeedbackInQSOModeOn%s",buffer2); checkforerror(error,elements,&buffer[0]); AGNFeedbackInQSOModeOn = atoi(buffer2); printf(" AGNFeedbackInQSOModeOn %d\n", AGNFeedbackInQSOModeOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"DiskInstabilitiesOn%s",buffer2); checkforerror(error,elements,&buffer[0]); DiskInstabilitiesOn = atoi(buffer2); printf(" DiskInstabilitiesOn %d\n", DiskInstabilitiesOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"GradualInstabilitiesOn%s",buffer2); checkforerror(error,elements,&buffer[0]); GradualInstabilitiesOn = atoi(buffer2); printf(" GradualInstabilitiesOn %d\n", GradualInstabilitiesOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"EddingtonOn%s",buffer2); checkforerror(error,elements,&buffer[0]); EddingtonOn = atoi(buffer2); printf(" EddingtonOn %d\n", EddingtonOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"GrasilOn%s",buffer2); checkforerror(error,elements,&buffer[0]); GrasilOn = atoi(buffer2); printf(" GrasilOn %d\n", GrasilOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"DumpNoPositions%s",buffer2); checkforerror(error,elements,&buffer[0]); DumpNoPositions = atoi(buffer2); printf(" DumpNoPositions %d\n", DumpNoPositions); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"DumpNoVelocities%s",buffer2); checkforerror(error,elements,&buffer[0]); DumpNoVelocities = atoi(buffer2); printf(" DumpNoVelocities %d\n", DumpNoVelocities); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"OutputListOn%s",buffer2); checkforerror(error,elements,&buffer[0]); OutputListOn = atoi(buffer2); printf(" OutputListOn %d\n", OutputListOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"RamPressureOn%s",buffer2); checkforerror(error,elements,&buffer[0]); RamPressureOn = atoi(buffer2); printf(" RamPressureOn %d\n", RamPressureOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"RamPressureHaloOn%s",buffer2); checkforerror(error,elements,&buffer[0]); RamPressureHaloOn = atoi(buffer2); printf(" RamPressureHaloOn %d\n", RamPressureHaloOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"IncreaseYieldsOn%s",buffer2); checkforerror(error,elements,&buffer[0]); IncreaseYieldsOn = atoi(buffer2); printf(" IncreaseYieldsOn %d\n", IncreaseYieldsOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"JiangTimeFrictionOn%s",buffer2); checkforerror(error,elements,&buffer[0]); JiangTimeFrictionOn = atoi(buffer2); printf(" JiangTimeFrictionOn %d\n", JiangTimeFrictionOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"BoylanTimeFrictionOn%s",buffer2); checkforerror(error,elements,&buffer[0]); BoylanTimeFrictionOn = atoi(buffer2); printf(" BoylanTimeFrictionOn %d\n", BoylanTimeFrictionOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"ComputeBHSpinOn%s",buffer2); checkforerror(error,elements,&buffer[0]); ComputeBHSpinOn = atoi(buffer2); printf(" ComputeBHSpinOn %d\n", ComputeBHSpinOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"RandomBHSpinOn%s",buffer2); checkforerror(error,elements,&buffer[0]); RandomBHSpinOn = atof(buffer2); printf(" RandomBHSpinOn %d\n", RandomBHSpinOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"FollowingJGal%s",buffer2); checkforerror(error,elements,&buffer[0]); FollowingJGal = atof(buffer2); printf(" FollowingJGal %d\n", FollowingJGal); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"SpecialDumpOn%s",buffer2); checkforerror(error,elements,&buffer[0]); SpecialDumpOn = atoi(buffer2); printf(" SpecialDumpOn %d\n", SpecialDumpOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"UseInclinationRPOn%s",buffer2); checkforerror(error,elements,&buffer[0]); UseInclinationRPOn = atoi(buffer2); printf(" UseInclinationRPOn %d\n", UseInclinationRPOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"EllipticalViaMinorMergerOn%s",buffer2); checkforerror(error,elements,&buffer[0]); EllipticalViaMinorMergerOn = atoi(buffer2); printf(" EllipticalViaMinorMergerOn %d\n", EllipticalViaMinorMergerOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"RPFitOn%s",buffer2); checkforerror(error,elements,&buffer[0]); RPFitOn = atoi(buffer2); printf(" RPFitOn %d\n", RPFitOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"CrotonSFOn%s",buffer2); checkforerror(error,elements,&buffer[0]); CrotonSFOn = atoi(buffer2); printf(" CrotonSFOn %d\n", CrotonSFOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"CoolingFeHOn%s",buffer2); checkforerror(error,elements,&buffer[0]); CoolingFeHOn = atoi(buffer2); printf(" CoolingFeHOn %d\n", CoolingFeHOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"DMPosAvailableOn%s",buffer2); checkforerror(error,elements,&buffer[0]); DMPosAvailableOn = atof(buffer2); printf(" DMPosAvailableOn %d\n", DMPosAvailableOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"StripColdGasToStarsOn%s",buffer2); checkforerror(error,elements,&buffer[0]); StripColdGasToStarsOn = atoi(buffer2); printf(" StripColdGasToStarsOn %d\n", StripColdGasToStarsOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"BC2003OldTablesOn%s",buffer2); checkforerror(error,elements,&buffer[0]); BC2003OldTablesOn = atoi(buffer2); printf(" BC2003OldTablesOn %d\n", BC2003OldTablesOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"QeffectiveOn%s",buffer2); checkforerror(error,elements,&buffer[0]); QeffectiveOn = atoi(buffer2); printf(" QeffectiveOn %d\n", QeffectiveOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"UseRscaleTablesOn%s",buffer2); checkforerror(error,elements,&buffer[0]); UseRscaleTablesOn = atoi(buffer2); printf(" UseRscaleTablesOn %d\n", UseRscaleTablesOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"DynamicalFrictionOn%s",buffer2); checkforerror(error,elements,&buffer[0]); DynamicalFrictionOn = atoi(buffer2); printf(" DynamicalFrictionOn %d\n", DynamicalFrictionOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"TidalStrippingOn%s",buffer2); checkforerror(error,elements,&buffer[0]); TidalStrippingOn = atoi(buffer2); printf(" TidalStrippingOn %d\n", TidalStrippingOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"ProximityMergerOn%s",buffer2); checkforerror(error,elements,&buffer[0]); ProximityMergerOn = atoi(buffer2); printf(" ProximityMergerOn %d\n", ProximityMergerOn); error = fgets(buffer,sizeof(buffer),fp); elements = sscanf(buffer,"SatelliteRelocationDisabledOn%s",buffer2); checkforerror(error,elements,&buffer[0]); SatelliteRelocationDisabledOn = atoi(buffer2); printf(" SatelliteRelocationDisabledOn %d\n", SatelliteRelocationDisabledOn); printf("\n"); fclose(fp); /* * Safety checks */ if (SpecialDumpOn == 1 && RamPressureOn == 1) { printf("WARNING: RamPressureOn = 1 but special dump " "has been selected\n"); printf("Check values in parameters file and try again - Exit\n"); fflush(stderr); exit(EXIT_FAILURE); } IMFSelect = 10; if (strcmp(IMFModel, "Salpeter") == 0) IMFSelect = IMFSALPETER; if (strcmp(IMFModel, "Kroupa") == 0) IMFSelect = IMFKROUPA; if (strcmp(IMFModel, "Chabrier") == 0) IMFSelect = IMFCHABRIER; if (strcmp(IMFModel, "WKTopheavy") == 0) IMFSelect = IMFTOPHEAVY; if (IMFSelect >= 10) { fprintf(stderr, "Error (readparameterfile): invalid IMF model '%s' selected\n", IMFModel); fprintf(stderr, "Check parameters file and try again - Exit\n"); fflush(stderr); exit(EXIT_FAILURE); } RtidalSelect = 10; if (strcmp(RtidalModel, "TDS98") == 0) RtidalSelect = RTIDAL_TDS98; if (strcmp(RtidalModel, "ZB03") == 0) RtidalSelect = RTIDAL_ZB03; if (RtidalSelect >= 10) { fprintf(stderr, "Error (readparameterfile): invalid tidal radius approximation" " '%s' selected\n", RtidalModel); fprintf(stderr, "Check parameters file and try again - Exit\n"); fflush(stderr); exit(EXIT_FAILURE); } TSTimescaleSelect = 10; if (strcmp(TSTimescaleModel, "subhalo") == 0) TSTimescaleSelect = TSTIME_SUBHALO; if (strcmp(TSTimescaleModel, "subinfall") == 0) TSTimescaleSelect = TSTIME_SUBINFALL; if (TSTimescaleSelect >= 10) { fprintf(stderr, "Error (readparameterfile): invalid TS timescale option " "'%s' selected\n", TSTimescaleModel); fprintf(stderr, "Check parameters file and try again - Exit\n"); fflush(stderr); exit(EXIT_FAILURE); } /* * TOMAS 2013-05-17: * Satellite relocation, with the current subhalo scheme, does not work. * Some type 1 galaxies are later ejected from their host halo, so if any * of its satellites are relocated they will no longer see the correct * FOF central. In other cases, the subhalo goes from type 1 to 0 because * the original main subhalo disappears in the current snapshot. There * are also cases where the type 0 and the type 1 trade places. The * simple scheme cannot handle these cases, especially in the case where * the original main subhalo disappears. Therefore we suspend the * relocation of galaxies until we can find a better treatment for the * stripping of satellites. */ if (SatelliteRelocationDisabledOn != 1) { fprintf(stderr, "Error (readparameterfile): in this version of the " "code, satellite relocation must be disabled.\n" "If you are sure you need to use that, edit file " "readparameterfile.c to remove this control.\n"); fflush(stderr); exit(EXIT_FAILURE); } return; }