Associate Cost (FP)
Overview
Provides for the association of a cost value with one or more object types or product (object) occurrences.
All product types and object occurrences may have a cost value association.
Where a cost value is associated with a product type, it is implied that all occurrences conforming to that type also have the cost value association. That is, where a cost value is associated with a product type, occurrences participating in the IfcRelDefinesByType relationship should not have own cost value associations.
Cost value is defined as a type of applied value; the form of the model also dealing with environmental impact values (see functional part fp_associate_environmental_impact_value)
Results
Cost value associated with the product type or object occurrence
| Description | Entity/Pset/Functional Part | MAN | REC | OPT |
|---|---|---|---|---|
| Define the cost value that is to be applied to objects. | ||||
| Set a name for the cost value | IfcCostValue.Name -> IfcLabel | |
||
| Set a description for the cost value | IfcCostValue.Description -> IfcText | |
||
| Set the extent or quantity or amount of an applied value Whilst this attribute is indicated as optional within the IFC model, this functional part makes the assertion of the applied value a mandatory requirement. This gives the actual value of the cost that is to be associated either in terms of an amount of money (monetary measure or measure with unit) or in relative terms (as a ratio measure) for such things as % discount etc. The setting of the value will, to a large extent, be dependent on the setting of the cost type. Using IfcMonetaryMeasure allows the specification only of the value, the currency being as set by the global context Using IfcRatioMeasure assumes that the amount is a percentage or other REAL number. Note that if the amount is normally specified as -20%, then this figure will need to be converted to a multiplier of 0.8 Using IfcMeasureWithUnit allows the specification of both the actual figure for the value together with the currency (for a cost value) or an environmental measurement unit (in the case of an environmental impact value) in which the value is represented. |
IfcCostValue.AppliedValue -> IfcMonetaryMeasure OR IfcCostValue.AppliedValue -> IfcRatioMeasure OR IfcCostValue.AppliedValue -> IfcMeasureWithUnit |
|
||
| Set the number and unit of measure on which the unit cost is based. Note: As well as the normally expected units of measure such as length, area, volume etc., costs may be based on units of measure which need to be defined e.g. sack, drum, pallet, item etc. Unit costs may be based on quantities greater (or lesser) than a unitary value of the basis measure. For instance, timber may have a unit cost rate per X meters where X > 1; similarly for cable, piping and many other items. The basis number may be either an integer or a real value. Note: This attribute should be asserted for all circumstances where the cost to be applied is per unit quantity. It may be asserted even for circumstances where an item price is used, in which case the unit cost basis should be by item (or equivalent definition). |
IfcCostValue.UnitBasis -> IfcMeasureWithUnit | |
||
| The value used for unit cost should be established | IfcMeasureWithUnit.ValueComponent -> fp_select_value | |
||
| The unit used for unit cost should be established | IfcMeasureWithUnit.UnitComponent -> fp_select_unit | |
||
| Set the date on or from which a cost value is applicable Applicable date should be set specifically as a calendar date in the functional part fp_select_date_time (IfcCalendarDate) |
IfcCostValue.ApplicableDate -> fp_select_date_time | |
||
| Set the date until which a cost value is fixed This is a calendar date on which the cost value identified ceases to be valid |
IfcCostValue.FixedUntilDate -> fp_select_date_time | |
||
| Set the type of the cost value to be associated There are many possible types of cost value that may be identified. Whilst there is a broad understanding of the meaning of names that may be assigned to different types of costs, there is no general standard for naming cost types nor are there any broadly defined classifications. To allow for any type of cost value, the IfcLabel datatype is assigned. The following defines some cost types that might be applied: Annual rate of return, Bonus, Bulk purchase rebate, Contract, Consultancy, Delivery, Estimated cost, Hire, Installation, Interest rate, Labor, Lease, List price, Maintenance, Material, Overhead, Postage and packing, Profit, Purchase, Rental, Repair, Replacement, Sale, Small quantity surcharge, Spares, Storage, Sub-Contract, Trade discount, Transportation, Waste allowance, Whole life In the absence of any well-defined standard, it is recommended that local agreements should be made to define allowable and understandable cost value types within a project or region. |
IfcCostValue.CostType -> IfcLabel | |
||
| Define the condition under which a cost value applies This is a simple text description that describes any conditions that may be applied to the cost. |
IfcCostValue.Condition -> IfcText | |
||
| Establish the relationship between different occurrences of IfcCostValue if such a relationship should exist. A tree structure of cost value relationships can be established that could be used to elaborate a complete cost build up if required. |
|
|||
| Set the parent cost value in the relationship | IfcAppliedValueRelationship.ComponentOfTotal -> IfcCostValue | |
||
| Set the child cost value(s) in the relationship. An cost value relationship may specify multiple children of one parent cost value |
IfcAppliedValueRelationship.Components -> IfcCostValue | |
||
| Set a name to identify or qualify the cost value relationship | IfcAppliedValueRelationship.Name -> IfcLabel | |
||
| Provide a description that may apply additional information about a cost value relationship | IfcAppliedValueRelationship.Description -> IfcText | |
||
| Specify the arithmetic operator to be applied in the cost value relationship The value is set from the predefined list available which allows ADD, SUBTRACT, MULTIPLY and DIVIDE operators to be applied. |
IfcAppliedValueRelationship.ArithmeticOperator -> IfcArithmeticOperatorEnum | |
||
| Specify the object(s) to which the cost value is to be associated. | ||||
| Specify the object(s) Cost values may be associated with any occurrence object (subtype of IfcObject) and any type object (subtype of IfcTypeObject). The entities IfcProduct to which a given cost value is associated do not all have to be of the same subtype; the same cost value may be specified for different subtypes. |
IfcRoot (subtypes) | |
||
| Associate the objects as the related objects within the association relationship. Note that the graphical form of the IFC model shows the RelatedObjects attribute having IfcRoot as the datatype. The actual subtype that can be related is however constrained to being IfcObject or IfcPropertyDefinition (but not IfcRelationship) through the use of the WHERE rule 1 in the EXPRESS language specification. |
IfcRelAssociatesAppliedValue.RelatedObjects -> IfcRoot |
|
||
| Associate the cost value as the relating applied value within the association relationship | IfcRelAssociatesAppliedValue.RelatingAppliedValue -> IfcCostValue | |
||
| Apply the owner history information to the association relationship | IfcRelAssociatesAppliedValue.OwnerHistory -> fp_apply_owner_history | |
- IFC Entities Required
- IfcAppliedValue
- IfcAppliedValueRelationship
- IfcCostValue
- IfcMeasureWithUnit
- IfcObject
- IfcRelationship
- IfcRelAssociates
- IfcRelAssociatesAppliedValue
- IfcRoot
- IFC Datatypes Required
- IfcArithmeticOperatorEnum
- IfcGloballyUniqueId
- IfcLabel
- IfcMonetaryMeasure
- IfcRatioMeasure
- IfcText
- IFC Functions Required
- -
- IDM Functional Parts Required
- fp_apply_owner_history
- fp_select_date_time
- fp_select_unit
- fp_select_value
EXPRESS-G

EXPRESS Schema
SCHEMA FP_ASSOCIATE_COST;
TYPE IfcGloballyUniqueId = STRING (22) FIXED;
END_TYPE;
TYPE IfcLabel = STRING;
END_TYPE;
TYPE IfcMonetaryMeasure = REAL;
END_TYPE;
TYPE IfcRatioMeasure = REAL;
END_TYPE;
TYPE IfcText = STRING;
END_TYPE;
TYPE IfcArithmeticOperatorEnum = ENUMERATION OF
(ADD,
DIVIDE,
MULTIPLY,
SUBTRACT);
END_TYPE;
TYPE IfcAppliedValueSelect = SELECT
(IfcRatioMeasure,
IfcMeasureWithUnit,
IfcMonetaryMeasure);
END_TYPE;
ENTITY IfcMeasureWithUnit;
ValueComponent : fp_select_value;
UnitComponent : fp_select_unit;
END_ENTITY;
ENTITY IfcCostValue
SUBTYPE OF(IfcAppliedValue);
CostType : IfcLabel;
Condition : OPTIONAL IfcText;
END_ENTITY;
ENTITY IfcAppliedValue
ABSTRACT SUPERTYPE;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
AppliedValue : OPTIONAL IfcAppliedValueSelect;
UnitBasis : OPTIONAL IfcMeasureWithUnit;
ApplicableDate : OPTIONAL fp_select_date_time;
FixedUntilDate : OPTIONAL fp_select_date_time;
INVERSE
ValueOfComponents : SET OF IfcAppliedValueRelationship FOR ComponentOfTotal;
IsComponentIn : SET OF IfcAppliedValueRelationship FOR Components;
WHERE
WR1 : EXISTS (AppliedValue) OR
EXISTS (ValueOfComponents);
END_ENTITY;
ENTITY IfcAppliedValueRelationship;
ComponentOfTotal : IfcAppliedValue;
Components : SET [1:?] OF IfcAppliedValue;
ArithmeticOperator : IfcArithmeticOperatorEnum;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
END_ENTITY;
ENTITY IfcRoot
ABSTRACT SUPERTYPE;
GlobalId : IfcGloballyUniqueId;
OwnerHistory : fp_apply_owner_history;
Name : OPTIONAL IfcLabel;
Description : OPTIONAL IfcText;
UNIQUE
UR1 : GlobalId;
END_ENTITY;
ENTITY IfcRelationship
ABSTRACT SUPERTYPE
SUBTYPE OF(IfcRoot);
END_ENTITY;
ENTITY IfcRelAssociates
SUBTYPE OF(IfcRelationship);
RelatedObjects : SET [1:?] OF IfcRoot;
WHERE
WR1 : SIZEOF(QUERY(temp <* RelatedObjects |
NOT(('IFC2X2_FINAL.IFCOBJECT' IN TYPEOF(temp))
OR ('IFC2X2_FINAL.IFCPROPERTYDEFINITION' IN TYPEOF(temp)))
)) = 0;
END_ENTITY;
ENTITY IfcRelAssociatesAppliedValue
SUBTYPE OF(IfcRelAssociates);
RelatingAppliedValue : IfcAppliedValue;
END_ENTITY;
ENTITY fp_apply_owner_history;
END_ENTITY;
ENTITY fp_select_date_time;
END_ENTITY;
ENTITY fp_select_value;
END_ENTITY;
ENTITY fp_select_unit;
END_ENTITY;
END_SCHEMA;
Examples of Cost
Example 1: Setting the Unit Cost Basis
An instance of IfcCostValue may have a unit cost basis asserted. This is defined as an IfcMeasureWithUnit that determines the extent of the unit value for costing purposes. It is assumed that when this attribute is asserted, then the value given to IfcCostValue is that for unit quantity. This is not enforced within the IFC schema and thus needs to be controlled within an application.
The following example defines a cost value of GBP14.26 (£14.26) which became applicable on 30th June 2005 and was fixed until 30th September 2005. The unit cost basis is 'item' meaning that the object to which this cost value is associated is costed as a unit (rather than, for example, per metre length or per square metre area). The cost value is defined as being of type 'List Price'. Note that the name, description and condition of the cost value are not asserted in this example.
The IFC schema does not contain a unit specification for 'item'. It is therefore defined as a context dependent unit whose unit type is set to user defined and whose name is set to 'item'. Since an item is dimensionless, the dimensional exponents are all set to zero (0).

/* instance of the IfcCostValue */ #10000=IFCCOSTVALUE($,$,#11001,#11002,#12001,#12002,'List Price',$); /* instance of IfcMeasureWithUnit that defines the actual value and currency*/ #11001=IFCMEASUREWITHUNIT(14.26,#11501); #11002= IFCMEASUREWITHUNIT(1,#11601); /* unit specifications for applied value and unit basis */ #11501=IFCMONETARYUNIT(.GBP.); #11601=IFCCONTEXTDEPENDENTUNIT(#11701,.USERDEFINED.,'item'); #11701=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); /* instances of IfcCalendarDate for applicable and fixed until date */ #12001=IFCCALENDARDATE(30,6,2005); #12002=IFCCALENDARDATE(30,9,2005);
Example 2: Composite Cost Value
A cost value can be defined from other cost values. This can be useful for obtaining a specific cost value to be applied to a cost item rather than having to build up a composite rate using cost item nesting (see fp_model_cost_item). For instance, in many situations, the cost value required needs to be built up from a list price within a published list, discounts applicable to trade purchases and for organization volume purchasing, price increases since publication of the price list, delivery costs etc.
In this example, the cost value that represents the purchase (buy) price of an item is obtained by adding the list price and the delivery cost. The list price is £14.26 as in example 1 whilst the delivery cost for the item is £3.00. Dates and the unit cost basis for both the list price and delivery cost are also as in example 1.
The diagram below uses figures in { } to show that the values are obtained using other entities. These are shown in the full instantiation.

/* instance of the IfcCostValue */ #10000=IFCCOSTVALUE($,$,#11001,#11002,#12001,#12002,'List Price',$); #10010=IFCCOSTVALUE($,$,#11011,#11002,#12001,#12002,'Delivery Cost',$); #10020=IFCCOSTVALUE($,$,#11021,#11002,#12001,#12002,'Buy Price',$); /* relationship between cost values */ #10501=IFCAPPLIEDVALUERELATIONSHIP=(#10020,(#10000,#10010),.ADD.,$,$); /* instance of IfcMeasureWithUnit that defines the actual value and currency*/ #11001=IFCMEASUREWITHUNIT(14.26,#11501); #11002= IFCMEASUREWITHUNIT(1,#11601); #11011=IFCMEASUREWITHUNIT(3.00,#11501); #11021=IFCMEASUREWITHUNIT(17.26,#11501); /* unit specifications for applied value and unit basis */ #11501=IFCMONETARYUNIT(.GBP.); #11601=IFCCONTEXTDEPENDENTUNIT(#11701,.USERDEFINED.,'item'); #11701=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); /* instances of IfcCalendarDate for applicable and fixed until date */ #12001=IFCCALENDARDATE(30,6,2005); #12002=IFCCALENDARDATE(30,9,2005);