+ +
+

CEP 29 - Packaging of Materials

+
+
CEP:
+

29

+
+
Title:
+

Packaging of Materials

+
+
Last-Modified:
+

2024-03-14

+
+
Author:
+

Katie Mummah <mummah@wisc.edu>

+
+
Status:
+

Draft

+
+
Type:
+

Standards Track

+
+
Created:
+

Paul Wilson

+
+
+
+

Abstract

+

For a number of real world applications (e.g. shipping), materials need to be +packaged in specific ways. This CEP introduces the concept of a Package that +can be applied to a material object to support such use cases.

+
+
+

Characteristics of a Package

+

Each package will have the following characteristics defined by the user in the input file:

+
    +
  • name : a human-readable name for the package type

  • +
  • fill_min : the minimum quantity of material allowed in that package (default: eps())

  • +
  • fill_max : the maximum quantity of material allowed in the package (default: 1e299)

  • +
  • +
    strategythe strategy for filling multiple packages, e.g.
      +
    • “first” : fill each package to the maximum before adding another package

    • +
    • “equal” : fill all packages with an equal quantity

    • +
    +
    +
    +
  • +
+

Each package will also be assigned a unique integer id when it is first +created. The default package has id = 1 and represents an unpackaged material. Generally, +the user will not need to be aware of the id.

+
+
+

User-Definition of Packages

+

The input file grammar is extended to support the definition of a list of +packages at the top level of the input file, similar to recipes.

+

Packages are loaded into a map of package names to Package pointers in the +Context. The Context has methods to get a particular package based on its +name or its id.

+
+
+

Applying Packages

+

All Resource`s are extended to have an additional integer `package_id_ that +refers to the unique integer identifier of the package that currently contains +that Resource object. By default, all `Resource`s are unpackaged (id = 1).

+

When an unpackaged Resource is placed in a package, the packaging strategy is +consulted to determine how many packages are required. In some cases of an +equal filling strategy, it may be impossible to load a given quantity of +material into packages. Otherwise, the original Resource object is divided +into multiple objects with the package appropriately defined.

+
+
+

Resource Buffer Behaviors

+

A new behavior is defined for `ResBuf`s to optionally impose unpackaging of +`Resource`s as they are pushed into a resource buffer. Similarly, a new behavior +is defined to optionally package materials as they are popped out of a resource +buffer.

+
+
+ + +
+