Log In   View a printable version of the current page.
Model Cost Schedule (FP)
Added by Janice Wix, last edited by Janice Wix on Jan 31, 2007  (view change)
Labels: 
(None)


Model Cost Schedule

Overview

A cost model is considered to be a collection of costs grouped together to provide a particular indication of a total cost (particular in the sense that the cost model fulfils an indicated purpose). The advantage of a cost model is that it can react to changes in cost assigned to particular elements of the model and provide alternative and/or comparative total costs.
Within IFC, a cost model is delivered as a cost schedule. It brings together a set of cost items in a particular way and is conceptually equivalent to a cost sheet within an estimate.
A cost schedule is defined as a type of control in IFC. It can be assigned to any object through the use of an assignment relationship. Practically, a cost schedule will be assigned to high level objects such as buildings, building parts, systems, the project etc.
Information that can be captured by a cost schedule includes:

  • A unique identifier for the schedule (this is an identification reference for the schedule itself and not the globally unique identifier)
  • The type of schedule
  • The actor responsible for preparing the schedule
  • The actor responsible for submitting the schedule
  • The intended (target) users of the schedule
  • The date/time on which the schedule was submitted
  • The date/time on which the schedule was updated
  • The current status of the schedule
  • The cost items to be incorporated into the cost schedule
  • Relationship to other cost schedules
  • The object to which the schedule is assigned

Results

Cost schedule is defined as an appropriate type and is assigned to appropriate object.

Description Entity/Pset/Functional Part MAN REC OPT
Establish the cost schedule        

Set the global unique identifier

IfcCostSchedule.GlobalId::IfcGloballyUniqueId    

Apply the owner history

IfcCostSchedule.OwnerHistory::fp_apply_owner_history    

Specify the name for the cost schedule


_This is the name that would be used for human identification of the cost schedule

IfcCostSchedule.Name::IfcLabel    

Specify the description for the cost schedule


This is additional qualifying information used in the human identification of the cost schedule

IfcCostSchedule.Description::IfcText    

Specify a local identifier for the cost schedule


This is a unique local identifier for the cost schedule. Typically, this is used to identify the cost schedule according to an identification or filing strategy determined by the organization responsible for its development.

IfcCostSchedule.Id::IfcIdentifier    

Specify the type of cost schedule


The type of cost schedule should be selected from the predefined range of types provided (budget, costplan, estimate, tender, pricedbillofquantities, unpricedbillofquantities, scheduleofrates). The type may also be specified as user defined if the appropriate choice is not available in the predefined selections. It may also be set as not defined as a valid predefined selection.


If the selection is 'not defined' then the actual type should be specified later when known.


Note that IFC 2x2 does not include an attribute that enables the further specification of a user defined cost schedule type

IfcCostSchedule.PredefinedType::IfcCostScheduleTypeEnum    

Specify the identity of the actor who prepared the cost schedule


IFC only enables the identification of one actor preparing the cost schedule. Typically, this is expected to be the person responsible for the overall preparation of the schedule.

IfcCostSchedule.PreparedBy::fp_select_actor    

Specify the identity of the actor who submitted the cost schedule


Typically, this is expected to be the organization responsible for the cost schedule submission.

IfcCostSchedule.SubmittedBy::fp_select_actor    

Specify the actors who are the target users of the cost schedule


Several target users can be identified for the cost schedule. These may be individual persons or organizations.

IfcCostSchedule.TargetUsers::fp_select_actor    

Specify the date on which the cost schedule was submitted


This should be the date of the original submission of the cost schedule.

IfcCostSchedule.SubmittedOn::fp_select_date_time    

Specify the date on which the cost schedule was updated


Note that only one update date can be asserted and therefore this should be the date of the most recent update submission of the cost schedule.


On original submission, this date should be given the same value as for the 'SubmittedOn' attribute.

IfcCostSchedule.UpdateDate::fp_select_date_time    

Specify the current status of the cost schedule.


The value of 'status' is left to the discretion of the user and should be applied according to a local convention for status values. Examples of status values that might be used for a cost schedule status include 'planned, approved, agreed, issued, started'

IfcCostSchedule.Status::IfcLabel    
Select the cost items that are to be incorporated in the cost schedule.
Note that where cost items nest other cost items, only the top level parent cost item need be selected for inclusion in the cost schedule. Child cost items are then automatically assigned by virtue of their nesting relationship with the parent.
Cost items that define composite rates may be included in a cost schedule for completion. However, it should be remembered that these are in fact stored definitions of unit costs used elsewhere in a cost schedule.
fp_model_cost_item    
Establish the schedule/item relationship        

Set the global unique identifier

IfcRelSchedulesCostItems.GlobalId::IfcGloballyUniqueId    

Apply the owner history

IfcRelSchedulesCostItems.OwnerHistory::fp_apply_owner_history    

Specify the name for the relationship

IfcRelSchedulesCostItems.Name::IfcLabel    

Specify a description for the relationship

IfcRelSchedulesCostItems.Description::IfcText    

Set the occurrence of the cost schedule

IfcCostSchedule    

Set the occurrences of the child entities in the relationship

IfcObject <child subtypes>    

Assert the parent relationship to the cost schedule

IfcRelSchedulesCostItems.RelatingControl::IfcCostSchedule    

Assert the child relationship to the selected cost items


Note that in the IFC schema, this relationship points to IfcObject as the target datatype. However, a WHERE rule at IfcRelSchedulesCostItems enforces the subtype of IfcObject to be used as IfcCostItem.

IfcRelSchedulesCostItems.RelatedObjects::IfcCostItem    
For cost schedules that are to nest other cost schedules
Determine the cost schedule to be used as the parent entity and the cost schedules to be used as child entities and assert these entities in the relationship.
Nesting of cost schedules is used to build up an overall (parent) cost schedule from subsidiary (child) schedules
fp_nests [IfcCostSchedule]    
Additional properties
Additional properties may be defined for a cost schedule using property sets. These should be subject to local extension to exchange requirements and functional parts.
fp_define_by_properties    

IFC Entities Required

  • IfcControl
  • IfcCostSchedule
  • IfcObject
  • IfcRelAssigns
  • IfcRelAssignsToControl
  • IfcRelationship
  • IfcRelSchedulesCostItems
  • IfcRoot
  • IFC Datatypes Required
  • IfcCostScheduleTypeEnum
  • IfcGloballyUniqueId
  • IfcIdentifier
  • IfcLabel
  • IfcObjectTypeEnum
  • IfcText

IFC Functions Required

  • None

IDM Functional Parts Required

  • fp_apply_owner_history
  • fp_define_by_properties
  • fp_model_cost_item
  • fp_select_actor
  • fp_select_date_time

EXPRESS-G

EXPRESS

SCHEMA FP_MODEL_COST_SCHEDULE;

  TYPE IfcGloballyUniqueId = STRING (22) FIXED;
  END_TYPE;

  TYPE IfcIdentifier = STRING;
  END_TYPE;

  TYPE IfcLabel = STRING;
  END_TYPE;

  TYPE IfcText = STRING;
  END_TYPE;

  TYPE IfcCostScheduleTypeEnum = ENUMERATION OF
    (BUDGET,
     COSTPLAN,
     ESTIMATE,
     TENDER,
     PRICEDBILLOFQUANTITIES,
     UNPRICEDBILLOFQUANTITIES,
     SCHEDULEOFRATES,
     USERDEFINED,
     NOTDEFINED);
  END_TYPE;

  TYPE IfcObjectTypeEnum = ENUMERATION OF
    (PRODUCT,
     PROCESS,
     CONTROL,
     RESOURCE,
     ACTOR,
     GROUP,
     PROJECT,
     NOTDEFINED);
  END_TYPE;

  ENTITY IfcObject
    ABSTRACT SUPERTYPE
    SUBTYPE OF(IfcRoot);
      ObjectType     : OPTIONAL IfcLabel;
    INVERSE
      HasAssignments : SET OF IfcRelAssigns FOR RelatedObjects;
    WHERE
      WR1 : SIZEOF(QUERY(temp <* IsDefinedBy | 'IFC2X2_FINAL.IFCRELDEFINESBYTYPE' IN TYPEOF(temp))) <= 1;
  END_ENTITY;

  ENTITY IfcRoot
    ABSTRACT SUPERTYPE OF (ONEOF(IfcObject, IfcRelationship));
      GlobalId     : IfcGloballyUniqueId;
      OwnerHistory : fp_apply_owner_history;
      Name         : OPTIONAL IfcLabel;
      Description  : OPTIONAL IfcText;
    UNIQUE
      UR1 : GlobalId;
  END_ENTITY;

  ENTITY IfcRelationship
    SUBTYPE OF(IfcRoot);
  END_ENTITY;

  ENTITY IfcRelAssigns
    ABSTRACT SUPERTYPE
    SUBTYPE OF(IfcRelationship);
      RelatedObjects     : SET [1:?] OF IfcObject;
      RelatedObjectsType : OPTIONAL IfcObjectTypeEnum;
    WHERE
      WR1 : IfcCorrectObjectAssignment(RelatedObjectsType, RelatedObjects);
  END_ENTITY;

  ENTITY IfcRelassignsToControl
    SUBTYPE OF(IfcRelAssigns);
      RelatingControl : IfcControl;
    WHERE
      WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingControl :=: Temp)) = 0;
  END_ENTITY;

  ENTITY IfcRelSchedulesCostItems
    SUBTYPE OF(IfcRelassignsToControl);
    WHERE
      WR11 : SIZEOF(QUERY(temp <* SELF\IfcRelAssigns.RelatedObjects |
             NOT('IFC2X2_FINAL.IFCCOSTITEM' IN TYPEOF(temp))
             )) = 0;
      WR12 : 'IFC2X2_FINAL.IFCCOSTSCHEDULE' IN TYPEOF (SELF\IfcRelAssignsToControl.RelatingControl);
  END_ENTITY;

  ENTITY IfcControl
    ABSTRACT SUPERTYPE
    SUBTYPE OF(IfcObject);
    INVERSE
      Controls : SET OF IfcRelassignsToControl FOR RelatingControl;
  END_ENTITY;

  ENTITY IfcCostSchedule
    SUBTYPE OF(IfcControl);
      SubmittedBy    : OPTIONAL fp_select_actor;
      PreparedBy     : OPTIONAL fp_select_actor;
      SubmittedOn    : OPTIONAL fp_select_date_time;
      Status         : OPTIONAL IfcLabel;
      TargetUsers    : OPTIONAL SET [1:?] OF fp_select_actor;
      UpdateDate     : OPTIONAL fp_select_date_time;
      Id             : IfcIdentifier;
      PredefinedType : IfcCostScheduleTypeEnum;
    UNIQUE
      UR2 : Id;
  END_ENTITY;

  ENTITY fp_select_actor;
  END_ENTITY;

  ENTITY fp_select_date_time;
  END_ENTITY;

  ENTITY fp_apply_owner_history;
  END_ENTITY;

  ENTITY fp_define_by_properties;
  END_ENTITY;

  ENTITY fp_model_cost_item;
  END_ENTITY;

  ENTITY fp_nests;
  END_ENTITY;

END_SCHEMA;

Examples of Cost Schedule

Example 1: Cost Schedule with Cost Items

In this example, the submission of an estimate for domestic hot water services (pipework items only only) on 30th June 2005 is defined. Since this is the first time of submission, the update date is set to the same date. The status of the submission is set to 'issued'. The person preparing the estimate and the organization from which the estimate is submitted are asserted (although these items are not completely shown in the example). The organization submitting is considered to have a convention for identifying cost schedules which uses the date and an index for submissions on that date (in this case 20050630-1).

/* ownership information*/
#2=IFCOWNERHISTORY(...);

/* define the cost schedule */
#2001=IFCCOSTSCHEDULE('abcdefghijklmnopqrst2001',#2,'Domestic Hot Water','Pipework only',$,#3001,#3002,#4001,'ISSUED',$,#4001,'S20050630-1',.ESTIMATE.);

/* define the actors */
#3001=IFCORGANIZATION($,'Selvaag', ... );
#3002=IFCPERSON($,'Christensen','Lars', ... );

/* specify the submission and update date */
#4001=IFCCALENDARDATE(31,6,2005);

/* relate the cost items to the cost schedule */
#5001=IFCRELSCHEDULESCOSTITEMS('abcdefghijklmnopqrst5001',#2,$,$,(#15001,#15002,#15003,#15004),$,#2001);

/* instances of the IfcCostValue */
#10000=IFCCOSTVALUE($,$,#11000,#11802,$,$,'Total Cost',$);
#10001=IFCCOSTVALUE($,$,#11001,#11802,$,$,'Total Cost',$);
#10002=IFCCOSTVALUE($,$,#11002,#11802,$,$,'Total Cost',$);
#10003=IFCCOSTVALUE($,$,#11003,#11802,$,$,'Total Cost',$);

/* instance of IfcMeasureWithUnit that defines the actual value and currency*/
#11000=IFCMEASUREWITHUNIT(2350.45,#12000);
#11001=IFCMEASUREWITHUNIT(1986.23,#12000);
#11002=IFCMEASUREWITHUNIT(654.32,#12000);
#11003=IFCMEASUREWITHUNIT(210.11.60,#12000);

#11802=IFCCONTEXTDEPENDENTUNIT(#11701,.USERDEFINED.,'item');
#11902=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
#12000=IFCMONETARYUNIT(.GBP.);

/* instances of IfcCostItem using name and description attributes*/
#15001=IFCCOSTITEM('abcdefghijklmnopqrst15001',#2,'Cu Pipe','Collection',$);
#15002=IFCCOSTITEM('abcdefghijklmnopqrst15002',#2,'Cu Fittings','Collection',$);
#15003=IFCCOSTITEM('abcdefghijklmnopqrst15003',#2,'Stopcocks','Collection',$);
#15004=IFCCOSTITEM('abcdefghijklmnopqrst15004',#2,'Fixtures','Collection',$);

/* association of instances IfcCostValue and IfcCostItem */
#15020=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15020',#2,$,$,(#15001),#10000);
#15021=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15021',#2,$,$,(#15002),#10001);
#15022=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15022',#2,$,$,(#15003),#10002);
#15023=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15023',#2,$,$,(#15004),#10003);

Example 2: Nested Cost Schedules

In this example, the estimate for hot water services (described above) is one cost schedule in a set that is combined to produce a total estimate for all services on a proposal that is name 'New Munkerud'. To obtain the complete estimate, the domestic cold water services and the waste water estimates are also included.
Instances of organization, person and date are as in the previous example. Cost values are not elaborated in the example (but would need to be present in a real world situation).

 /* ownership information*/
#2=IFCOWNERHISTORY(...);

/* define the cost schedule */
#2000=IFCCOSTSCHEDULE('abcdefghijklmnopqrst2000',#2,'New Mumkerud','All Services',$,#3001,#3002,#4001,'ISSUED',$,#4001,'S20050630-0',.ESTIMATE.);
#2001=IFCCOSTSCHEDULE('abcdefghijklmnopqrst2001',#2,'Domestic Hot Water','Pipework only',$,#3001,#3002,#4001,'ISSUED',$,#4001,'S20050630-1',.ESTIMATE.);
#2002=IFCCOSTSCHEDULE('abcdefghijklmnopqrst2002',#2,'Domestic Cold Water','Pipework only',$,#3001,#3002,#4001,'ISSUED',$,#4001,'S20050630-2',.ESTIMATE.);
#2003=IFCCOSTSCHEDULE('abcdefghijklmnopqrst2003',#2,'Waste Water','Pipework only',$,#3001,#3002,#4001,'ISSUED',$,#4001,'S20050630-3',.ESTIMATE.);

/* define the actors */
#3001=IFCORGANIZATION($,'Selvaag', ... );
#3002=IFCPERSON($,'Christensen','Lars', ... );

/* specify the submission and update date */
#4001=IFCCALENDARDATE(31,6,2005);

/* nesting the cost schedules */
#19002=IFCRELNESTS('abcdefghijklmnopqrst19002',#2,$,$,#2000,(#2001,#2002,#2003));

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