Log In   View a printable version of the current page.
Associate Cost (FP)
Added by Brendan McFarlane, last edited by Brendan McFarlane on Oct 05, 2006  (view change)
Labels: 
(None)


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);

Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.1.3 Build:#408 Jan 23, 2006) - Bug/feature request - Contact Administrators