double landuse_getBuildup(Project* project, int i, int p, double area, double curb, double buildup, double tStep) // // Input: i = land use index // p = pollutant index // area = land use area (ac or ha) // curb = land use curb length (users units) // buildup = current pollutant buildup (lbs or kg) // tStep = time increment for buildup (sec) // Output: returns new buildup mass (lbs or kg) // Purpose: computes new pollutant buildup on a landuse after a time increment. // { int n; // normalizer code double days; // accumulated days of buildup double perUnit; // normalizer value (area or curb length) // --- return current buildup if no buildup function or time increment if ( project->Landuse[i].buildupFunc[p].funcType == NO_BUILDUP || tStep == 0.0 ) { return buildup; } // --- see what buildup is normalized to n = project->Landuse[i].buildupFunc[p].normalizer; perUnit = 1.0; if ( n == PER_AREA ) perUnit = area; if ( n == PER_CURB ) perUnit = curb; if ( perUnit == 0.0 ) return 0.0; // --- buildup determined by loading time series if ( project->Landuse[i].buildupFunc[p].funcType == EXTERNAL_BUILDUP ) { return landuse_getExternalBuildup(project, i, p, buildup/perUnit, tStep) * perUnit; } // --- determine equivalent days of current buildup days = landuse_getBuildupDays(project, i, p, buildup / perUnit); // --- compute buildup after adding on time increment days += tStep / SECperDAY; return landuse_getBuildupMass(project, i, p, days) * perUnit; }
float landuse_getBuildup(int i, int p, float area, float curb, float buildup, float tStep) // // Input: i = land use index // p = pollutant index // area = land use area (ac or ha) // curb = land use curb length (users units) // buildup = current pollutant buildup (lbs or kg) // tStep = time increment for buildup (sec) // Output: returns new buildup mass (lbs or kg) // Purpose: computes new pollutant buildup on a landuse after a time increment. // { int n; // normalizer code float days; // accumulated days of buildup float perUnit; // normalizer value (area or curb length) float buildupmass = 0.0; // --- return 0 if no buildup function or time increment if ( Landuse[i].buildupFunc[p].funcType == NO_BUILDUP || tStep == 0.0 ) { return 0.0; } // --- see what buildup is normalized to n = Landuse[i].buildupFunc[p].normalizer; perUnit = 1.0; if ( n == PER_AREA ) perUnit = area; if ( n == PER_CURB ) perUnit = curb; if ( perUnit == 0.0 ) return 0.0; // --- determine equivalent days of current buildup days = landuse_getBuildupDays(i, p, buildup/perUnit); // --- compute buildup after adding on time increment days += tStep / SECperDAY; buildupmass = landuse_getBuildupMass(i, p, days) * perUnit; return buildupmass; }