{"id":34007207,"url":"https://github.com/griffithben/unitz","last_synced_at":"2026-04-22T06:06:54.061Z","repository":{"id":182464155,"uuid":"668530337","full_name":"griffithben/unitz","owner":"griffithben","description":"Unitz is a way to address easy conversions among various measurable units. A utility that helps convert a unit to all types and agnostic to what type of unit it was originally set as.","archived":false,"fork":false,"pushed_at":"2025-04-08T15:38:30.000Z","size":117,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-14T22:52:52.815Z","etag":null,"topics":["beer","brewing","hacktoberfest","units-of-measure"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/griffithben.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-20T03:11:41.000Z","updated_at":"2025-07-06T17:22:06.000Z","dependencies_parsed_at":"2025-04-08T16:47:17.593Z","dependency_job_id":null,"html_url":"https://github.com/griffithben/unitz","commit_stats":null,"previous_names":["brewerwall/unitz","griffithben/unitz"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/griffithben/unitz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/griffithben%2Funitz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/griffithben%2Funitz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/griffithben%2Funitz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/griffithben%2Funitz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/griffithben","download_url":"https://codeload.github.com/griffithben/unitz/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/griffithben%2Funitz/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31466228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T08:36:52.050Z","status":"ssl_error","status_checked_at":"2026-04-06T08:36:51.267Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beer","brewing","hacktoberfest","units-of-measure"],"created_at":"2025-12-13T11:02:07.375Z","updated_at":"2026-04-22T06:06:53.975Z","avatar_url":"https://github.com/griffithben.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unitz\n\n![example workflow](https://github.com/griffithben/unitz/actions/workflows/main.yml/badge.svg)\n\n## Introduction\n\nUnitz is a way to address easy conversions among various measurable units. A utility\nthat helps convert a unit to all types and agnostic to what type of unit it was originally set as.\n\n### Installation\n\n```bash\ncomposer require griffithben/unitz\n```\n\n### Single Type Use\n\n```php\n// Create a new Gravity Object\n$gravity = new Gravity(plato: 12);\n\n// Gets the Plato of our Gravity\n$plato = $gravity-\u003egetPlato();\n\n// Gets the Specific Gravity of our Gravity\n$specificGravity = $gravity-\u003egetSpecificGravity();\n\n// Gets the Brix of our Gravity\n$brix = $gravity-\u003egetBrix();\n\n// Gets our Preferred Unit of measure based on our preferences\n$plato = $gravity-\u003egetValue();\n```\n\n### Service Provider Use\n\nYou can inject the UnitzService class into your application. Setting the user's preferences as an argument in the\nconstructor\nwill allow you to use the `getValue()` method to get the user's preferred unit of measure.\n\n```php\n// Instantiate a new UnitzService in a Service Provider Pattern\n$unitService = new UnitzService(preferences: ['Temperature' =\u003e 'Celsius']);\n\n// Dependency injection of UnitzService within the application\n$temperature = $unitService-\u003emakeTemperature(fahrenheit: 72);\n\n// Output of getValue() based on the user's preferences\n$temperature-\u003egetValue(); // 22.222222222222\n\n// Output of getValue() based on the user's preferences with rounding\n$temperature-\u003egetValue(1); // 22.2\n````\n\n### User Centric Unit Creation\n\nWhen setting a user's preference in the UnitService, you no longer need to specify what type of unit the user is\ninputting by using the `userValue` argument in the constructor of the Unit. If the user's value needs to change,\nthe `setValue()` method will also accomplish the same idea.\n\n```php\n// Create a new Gravity Object\n$gravity = new Gravity(userValue: 12, preferences: ['Gravity' =\u003e 'Brix']);\n\n// Gets the Brix of our Gravity\n$brix = $gravity-\u003egetBrix();  // 12\n\n// Gets our Preferred Unit of measure based on our preferences\n$plato = $gravity-\u003egetValue(); // 12\n```\n\n### User Centric With Service Provider\n\n```php\n// Instantiate a new UnitzService in a Service Provider Pattern\n$unitService = new UnitzService(preferences: ['Temperature' =\u003e 'Fahrenheit']);\n\n// Dependency injection of UnitzService within the application and a user submitted form value\n$temperature = $unitService-\u003emakeTemperature(userValue: 72);\n\n// Output of getValue() based on the user's preferences\n$temperature-\u003egetValue(); // 72\n\n// Output of getFahrenheit() will return the same as getValue() since it's the user's preference\n$temperature-\u003egetFahrenheit(); // 72\n\n// Updating the user's temperature value will have the same effect.\n$temperature-\u003esetValue(76);\n\n// Values update as needed\n$temperature-\u003egetValue(); // 76\n$temperature-\u003egetFahrenheit(); // 76\n````\n\n### Available Units\n\n| Unit           | Types                                                                |\n|----------------|----------------------------------------------------------------------|\n| Gravity        | Plato, SpecificGravity, Brix                                         |\n| Pressure       | Psi, Bar                                                             |\n| Temperature    | Celsius, Fahrenheit                                                  |\n| Volume         | Ounce, Gallon, Barrel, Milliliter, Liter, Hectoliter                 |\n| Weight         | Ounce, Pound, Gram, Kilogram                                         |\n| Color          | Srm, Ebc, Lovibond                                                   |\n| Time           | Millisecond, Second, Minute, Hour, Day, Week, Month, Year            |\n| Distillate     | Proof, Alcohol Percent                                               |\n| Length         | Inch, Foot, Yard, Mile, Millimeter, Centimeter, Meter, Kilometer     |\n| Energy         | Joule, Kilojoule, Calorie, Kilocalorie, Btu, WattHour, KilowattHour |\n| Angle          | Degree, Radian, Gradian, ArcMinute, ArcSecond                        |\n| DigitalStorage | Bit, Byte, Kilobyte, Megabyte, Gigabyte, Terabyte                    |\n| Frequency      | Hertz, Kilohertz, Megahertz, Gigahertz                               |\n\n### Preferences\n\nBy default, all units have a `getValue()` method that returns the users preference of unit type. There is a default\npreference set, but can be overridden when instantiating a new unit.\n\n##### Default\n\n```php\n[\n    'Gravity' =\u003e 'Plato',\n    'Temperature' =\u003e 'Fahrenheit',\n    'Volume' =\u003e 'Gallon',\n    'Pressure' =\u003e 'Psi',\n    'Weight' =\u003e 'Pound',\n    'Color' =\u003e 'Srm',\n    'Time' =\u003e 'Minute',\n    'Distillate' =\u003e 'Proof',\n    'Length' =\u003e 'Foot',\n];\n```\n\n##### Example\n\n```php\n// Create a new Weight Object\n$weight = new Weight(kilogram: 7.5, preferences: ['Weight' =\u003e 'Kilogram']);\n\n// Returns Kilogram since that is the overridden preference\n$kilogram = $weight-\u003egetValue();\n```\n\n### Rounding\n\nIn each type's get method, there is the option to pass in a precision of rounding. This also includes the `getValue()`\nmethod that all units share.\n\n```php\n$weight = new Weight(kilogram: 7.5629145);\n\n$kilogram = $weight-\u003egetKilogram(3);  // $kilogram = 7.563\n```\n\n## Rate\n\nA way of representing a rate of change between two units. When accessing values of rates, all will follow the naming\npattern of `$rate-\u003eget{Unit}Per{Unit}` for the respective units. Example using Flow: `$flow-\u003egetGallonPerHour()`\n\n### Flow\n\nThis class represent the amount of Volume flowed over a period of Time.\n\n```php\n$flow = new Flow(new Volume(gallon: 5), new Time(hour: 1));\n\n$flow-\u003egetGallonPerHour(); // 5\n\n$flow-\u003egetGallonPerMinute(); // 0.083333333333333\n```\n\n___\n\n### Boil\n\nThis class represent the amount of Volume boiled over a period of Time.\n\n```php\n$boil = new Boil(new Volume(gallon: 5), new Time(hour: 1));\n\n$boil-\u003egetGallonPerHour(); // 5\n\n$boil-\u003egetGallonPerMinute(); // 0.083333333333333\n```\n\n___\n\n### Speed\n\nThis class represent the amount of Length traveled over a period of Time.\n\n```php\n$speed = new Speed(new Length(foot: 5), new Time(minute: 1));\n\n$speed-\u003egetFeetPerMinute(); // 5\n\n$boil-\u003egetFeetPerHour(); // 300\n```\n\n___\n\n## Calculate\n\nA library of calculations that can be used with various Unitz classes.\n\n### Area\n\nThis class will calculate Area related calculations.\n___\n\n#### Rectangle\n\nThis method will calculate the area of a rectangle based on the length and width.\n\n```php  \nArea::rectangle(Length $length, Length $width): Length\n```\n\n##### Arguments\n\n- `Length $length` - Length of the rectangle\n- `Length $width` - Width of the rectangle\n\n##### Returns\n\n- `Length` - Area of the rectangle\n\n---\n\n#### Square\n\nThis method will calculate the area of a square based on the length of one side.\n\n```php\nArea::square(Length $side): Length\n```\n\n##### Arguments\n\n- `Length $side` - Length of one side of the square\n\n##### Returns\n\n- `Length` - Area of the square\n\n---\n\n#### Circle\n\nThis method will calculate the area of a circle based on the radius.\n\n```php\nArea::circle(Length $radius): Length\n```\n\n##### Arguments\n\n- `Length $radius` - Radius of the circle\n\n##### Returns\n\n- `Length` - Area of the circle\n\n---\n\n#### Ellipse\n\nThis method will calculate the area of an ellipse based on the major and minor axis.\n\n```php\nArea::ellipse(Length $majorAxisRadius, Length $minorAxisRadius): Length\n```\n\n##### Arguments\n\n- `Length $majorAxisRadius` - Major axis radius of the ellipse\n- `Length $minorAxisRadius` - Minor axis radius of the ellipse\n\n##### Returns\n\n- `Length` - Area of the ellipse\n\n---\n\n#### Triangle\n\nThis method will calculate the area of a triangle based on the base and height.\n\n```php\nArea::triangle(Length $base, Length $height): Length\n```\n\n##### Arguments\n\n- `Length $base` - Base of the triangle\n- `Length $height` - Height of the triangle\n\n##### Returns\n\n- `Length` - Area of the triangle\n\n---\n\n#### Equilateral Triangle\n\nThis method will calculate the area of an equilateral triangle based on the length of one side.\n\n```php\nArea::equilateralTriangle(Length $side): Length\n```\n\n##### Arguments\n\n- `Length $side` - Length of one side of the equilateral triangle\n\n##### Returns\n\n- `Length` - Area of the equilateral triangle\n\n---\n\n#### Trapezoid\n\nThis method will calculate the area of a trapezoid based on the length of the two bases and the height.\n\n```php\nArea::trapezoid(Length $base1, Length $base2, Length $height): Length\n```\n\n##### Arguments\n\n- `Length $base1` - Length of the first base of the trapezoid\n- `Length $base2` - Length of the second base of the trapezoid\n- `Length $height` - Height of the trapezoid\n\n##### Returns\n\n- `Length` - Area of the trapezoid\n\n---\n\n#### Regular Pentagon\n\nThis method will calculate the area of a regular pentagon based on the length of one side.\n\n```php\nArea::regularPentagon(Length $side): Length\n```\n\n##### Arguments\n\n- `Length $side` - Length of one side of the regular pentagon\n\n##### Returns\n\n- `Length` - Area of the regular pentagon\n\n--- \n\n#### Regular Hexagon\n\nThis method will calculate the area of a regular hexagon based on the length of one side.\n\n```php\nArea::regularHexagon(Length $side): Length\n```\n\n##### Arguments\n\n- `Length $side` - Length of one side of the regular hexagon\n\n##### Returns\n\n- `Length` - Area of the regular hexagon\n\n---\n\n#### Regular Heptagon\n\nThis method will calculate the area of a regular heptagon based on the length of one side.\n\n```php\nArea::regularHeptagon(Length $side): Length\n```\n\n##### Arguments\n\n- `Length $side` - Length of one side of the regular heptagon\n\n##### Returns\n\n- `Length` - Area of the regular heptagon\n\n---\n\n#### Regular Octagon\n\nThis method will calculate the area of a regular octagon based on the length of one side.\n\n```php\nArea::regularOctagon(Length $side): Length\n```\n\n##### Arguments\n\n- `Length $side` - Length of one side of the regular octagon\n\n##### Returns\n\n- `Length` - Area of the regular octagon\n\n---\n\n#### Regular Nonagon\n\nThis method will calculate the area of a regular nonagon based on the length of one side.\n\n```php\nArea::regularNonagon(Length $side): Length\n```\n\n##### Arguments\n\n- `Length $side` - Length of one side of the regular nonagon\n\n##### Returns\n\n- `Length` - Area of the regular nonagon\n\n---\n\n#### Regular Decagon\n\nThis method will calculate the area of a regular decagon based on the length of one side.\n\n```php\nArea::regularDecagon(Length $side): Length\n```\n\n##### Arguments\n\n- `Length $side` - Length of one side of the regular decagon\n\n##### Returns\n\n- `Length` - Area of the regular decagon\n\n---\n\n### Beer\n\nThis class will calculate Beer related calculations.\n___\n\n#### Alcohol By Volume (ABV)\n\nAlcohol By Volume (ABV) is the percent of alcohol content in the beer based on the original gravity, final gravity and\nformula version. Source of equation is\nat [Brewer's Friend](https://www.brewersfriend.com/2011/06/16/alcohol-by-volume-calculator-updated/).\n\n```php\nBeer::alcoholByVolume(Gravity $originalGravity, Gravity $finalGravity, string $formulaVersion = Beer::ABV_ALTERNATE_FORMULA): float\n```\n\n##### Arguments\n\n- `Gravity $originalGravity` - Original Gravity of the beer\n- `Gravity $finalGravity` - Final Gravity of the beer\n- `string $formulaVersion` - Formula ABV calculation: `Beer::ABV_STANDARD_FORMULA`\n  or `Beer::ABV_ALTERNATE_FORMULA`\n\n##### Returns\n\n- `float` - Alcohol By Volume (ABV) Value\n\n---\n\n#### Alcohol By Weight (ABW)\n\nAlcohol By Weight (ABW) is weighing the amount of alcohol in a fixed volume of liquid and comparing it to the weight of\npure water based on the original gravity and final gravity.\n\n```php\nBeer::alcoholByWeight(Gravity $originalGravity, Gravity $finalGravity): float\n```\n\n##### Arguments\n\n- `Gravity $originalGravity` - Original Gravity of the beer\n- `Gravity $finalGravity` - Final Gravity of the beer\n\n##### Returns\n\n- `float` - Alcohol By Weight (ABW) Value\n\n---\n\n#### Standard Reference Method (SRM)\n\nStandard Reference Method (Srm) is the method for color assessment of wort or beer as published in the recommended\nmethods of the American Society of Brewing Chemists\n\n```php\nBeer::standardReferenceMethod(Weight $weight, Color $color, Volume $volume): Color\n```\n\n##### Arguments\n\n- `Weight $weight` - Weight of the grain\n- `Color $color` - Color of the grain\n- `Volume $volume` - Volume of the water\n\n##### Returns\n\n- `Unitz/Color` - Color (Color) Value\n\n---\n\n#### Malt Color Unit (MCU)\n\nMalt Color Unit (MCU) is an equation that helps determine what color a beer would be.\n\n```php\nBeer::maltColorUnit(Weight $weight, Color $color, Volume $volume): float\n```\n\n##### Arguments\n\n- `Weight $weight` - Weight of the grain\n- `Color $color` - Color of the grain\n- `Volume $volume` - Volume of the water\n\n##### Returns\n\n- `float` - Malt Color Unit (MCU) Value\n\n---\n\n#### International Bitterness Units (IBU)\n\nInternational Bitterness Units (IBU) is the bitterness of the beer based on the alpha acid of the\nhops, weight of the hops, time in the boil, gravity of the wort, and volume of the wort.\n\nBased off Palmer's Calculation\n\n```php\nBeer::internationalBitternessUnits(float $alphaAcid, Weight $weight, Time $time, Gravity $gravity, Volume $volume)\n```\n\n##### Arguments\n\n- `float $alphaAcid` - Alpha Acid of the hops\n- `Weight $weight` - Weight of the hops\n- `Time $time` - Time in the boil\n- `Gravity $gravity` - Gravity of the wort\n- `Volume $volume` - Volume of the wort\n\n##### Returns\n\n- `float` - International Bitterness Units (IBU) Value\n\n---\n\n#### Alpha Acid Units (AAU)\n\nAlpha Acid Units (AAU) is the potential bitterness of the hops based on the alpha acid and weight.\n\n```php\nBeer::alphaAcidUnit(float $alphaAcid, Weight $weight): float\n```\n\n##### Arguments\n\n- `float $alphaAcid` - Alpha Acid of the hops\n- `Weight $weight` - Weight of the hops\n\n##### Returns\n\n- `float` - Alpha Acid Units (AAU) Value\n\n---\n\n#### Hop Utilization\n\nThis is a hop utilization factor based on the Tinseth formula derived\nby [Glenn Tinseth](https://beersmith.com/blog/2011/02/10/beer-bitterness-and-ibus-with-glenn-tinseth-bshb-podcast-9/]).\n\n```php\nBeer::hopUtilization(Time $time, Gravity $gravity)\n```\n\n##### Arguments\n\n- `Time $time` - Time in the boil\n- `Gravity $gravity` - Gravity of the wort\n\n##### Returns\n\n- `float` - Hop Utilization Value\n\n---\n\n#### Calories\n\nDetermines the number of calories in a finished beer based on the original gravity, final gravity and the volume of the\nbeer consumed.\n\n```php\nBeer::calories(Gravity $originalGravity, Gravity $finalGravity, Volume $volume)\n```\n\n##### Arguments\n\n- `Gravity $originalGravity` - Original Gravity of the beer\n- `Gravity $finalGravity` - Final Gravity of the beer\n- `Volume $volume` - Volume of the beer consumed\n\n##### Returns\n\n- `float` - Calories\n\n---\n\n#### Real Extract\n\nReal Extract (RE) is a precise calculation concerning the gravity of beer.\nSource of equation is [Craft Beer \u0026 Brewing](https://beerandbrewing.com/dictionary/ewOeMFnY4x/)\n\n```php\nBeer::realExtract(Gravity $originalGravity, Gravity $finalGravity)\n```\n\n##### Arguments\n\n- `Gravity $originalGravity` - Original Gravity of the beer\n- `Gravity $finalGravity` - Final Gravity of the beer\n\n##### Returns\n\n- `float` - Real Extract\n\n---\n\n#### Apparent Degree of Fermentation\n\nApparent Degree of Fermentation (ADF) is a measure of the amount of sugar that has been converted to alcohol and carbon\ndioxide by yeast during fermentation\n\n```php\nBeer::apparentDegreeOfFermentation(Gravity $originalGravity, Gravity $finalGravity)\n```\n\n##### Arguments\n\n- `Gravity $originalGravity` - Original Gravity of the beer\n- `Gravity $finalGravity` - Final Gravity of the beer\n\n##### Returns\n\n- `float` - Apparent Degree of Fermentation\n\n---\n\n#### Gravity Correction\n\nGravity Correction based on Temperature of Sample and Hydrometer Calibration.\nSource [Brewers Friend](https://www.brewersfriend.com/hydrometer-temp/)\n\n```php\nBeer::gravityCorrection(Gravity $gravity, Temperature $temperature, Temperature $calibrationTemperature)\n```\n\n##### Arguments\n\n- `Gravity $gravity` - Gravity of the Sample\n- `Temperature $temperature` - Temperature of the sample\n- `Temperature $calibrationTemperature` - Temperature hydrometer is calibrated to\n\n##### Returns\n\n- `Gravity` - Corrected Gravity of Sample\n\n### Spirit\n\nThis class will calculate Spirit related calculations.\n___\n\n#### Dilute Down To Desired Proof\n\nDilute Down To Desired Proof is a calculation to determine how much water to add to a spirit to get to a desired proof.\n\n```php\nSpirit::diluteDownToDesiredProof(Proof $currentProof, Proof $desiredProof, Volume $currentVolume): Volume\n```\n\n##### Arguments\n\n- `Proof $currentProof` - Current Proof of the spirit\n- `Proof $desiredProof` - Desired Proof of the spirit\n- `Volume $currentVolume` - Current Volume of the spirit\n\n##### Returns\n\n- `Volume` - Volume of water to add to the spirit\n\n---\n\n#### Distilled Alcohol Volume\n\nDistilled Alcohol Volume is a calculation to determine the volume of alcohol distilled depending on the wash abv and\nstill efficiency.\n\n```php\nSpirit::distilledAlcoholVolume(Volume $volume, Distillate $wash, float $stillEfficiencyPercent): Volume\n```\n\n##### Arguments\n\n- `Volume $volume` - Volume of the wash\n- `Distillate $wash` - Distillate of the wash\n- `float $stillEfficiencyPercent` - Still efficiency percentage\n\n##### Returns\n\n- `Volume` - Volume of the distilled alcohol\n\n---\n\n#### Distilled Remaining Water Volume\n\nDistilled Remaining Water Volume is a calculation to determine the volume of water remaining after distilling a spirit.\n\n```php\nSpirit::distilledRemainingWaterVolume(Volume $volume, Distillate $wash, float $stillEfficiencyPercent): Volume\n```\n\n##### Arguments\n\n- `Volume $volume` - Volume of the wash\n- `Distillate $wash` - Distillate of the wash\n- `float $stillEfficiencyPercent` - Still efficiency percentage\n\n##### Returns\n\n- `Volume` - Volume of the remaining water\n\n### Water\n\nThis class will calculate Water related calculations.\n___\n\n#### Parts Per Million (PPM)\n\nParts Per Million (PPM) is a calculation to determine the amount of a substance in a solution.\n\n```php\nWater::partsPerMillion(Weight $substance, Volume $volume): float\n```\n\n##### Arguments\n\n- `Weight $substance` - Weight of the substance\n- `Volume $volume` - Volume of the water\n\n##### Returns\n\n- `float` - Parts Per Million (PPM) Value\n\n---\n\n#### Boil Off Volume\n\nBoil Off Volume determines the Volume boiled off based on Boil Rate and Time.\n\n```php\nWater::boilOffVolume(Boil $boilRate, Time $time): Volume\n```\n\n##### Arguments\n\n- `Boil $boilRate` - Boil Rate of your system\n- `Time $time` - Time of the boil\n\n##### Returns\n\n- `Volume` - Volume that has been boiled off\n\n---\n\n#### Post Boil Volume\n\nPost Boil Volume determines the Volume solution remaining after a Pre Boil Volume, Boil Rate and Time are given.\n\n```php\nWater::boilOffVolume(Volume postBoilVolume, Boil $boilRate, Time $time): Volume\n```\n\n##### Arguments\n\n- `Volume $preBoilVolume` - Volume of solution before it's boiled\n- `Boil $boilRate` - Boil Rate of your system\n- `Time $time` - Time of the boil\n\n##### Returns\n\n- `Volume` - Volume that remains from the boil","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgriffithben%2Funitz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgriffithben%2Funitz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgriffithben%2Funitz/lists"}