public static void CreateDestinationCargo(Airport airport, Airport dAirport) { //origin airport out double originMassPerDay = GetAirportCargoMass(airport)/2; double originDemand = (originMassPerDay*CargoFactors[dAirport.Profile.Cargo]) /Airports.CargoAirportsSizes[dAirport.Profile.Cargo]; //destination airport in double destinationMassPerDay = GetAirportCargoMass(dAirport)/2; double destinationDemand = (destinationMassPerDay*CargoFactors[airport.Profile.Cargo]) /Airports.CargoAirportsSizes[airport.Profile.Cargo]; double distance = MathHelpers.GetDistance(airport, dAirport); double distanceFactor = distance > 5000 ? 1 : 0.5; double sameCountryFactor = airport.Profile.Country == dAirport.Profile.Country ? 0.75 : 1; double sameRegionFactor = sameCountryFactor.Equals(1) && airport.Profile.Country.Region == dAirport.Profile.Country.Region ? 0.5 : 1; double minMass = Math.Min(originMassPerDay, destinationMassPerDay); double volume = minMass/distanceFactor; volume = volume/sameCountryFactor; volume = volume/sameRegionFactor; //converts to pounds of cargo volume *= 35.1; if (volume >= 1) { airport.AddDestinationCargoRate(new DestinationDemand(dAirport.Profile.IATACode, (ushort) volume)); } }