(*
Copyright by:
buildingSMART International Limited, 1996-2019

Any technical documentation made available by buildingSMART International Limited
is the copyrighted work of buildingSMART International Limited and is owned by the 
buildingSMART International Limited. It may be photocopied, used in software development, 
or translated into another computer language without prior written consent from 
buildingSMART International Limited provided that full attribution is given. 
Prior written consent is required if changes are made to the technical specification.

This material is delivered to you as is and buildingSMART International Limited makes 
no warranty of any kind with regard to it, including, but not limited to, the implied 
warranties as to its accuracy or fitness for a particular purpose. Any use of the 
technical documentation or the information contained therein is at the risk of the user. 
Documentation may include technical or other inaccuracies or typographical errors. 
buildingSMART International Limited shall not be liable for errors contained therein or 
for incidental consequential damages in connection with the furnishing, performance or use 
of the material. The information contained in this document is subject to change without notice.

Issue date:
Friday, July 26, 2019

*)

SCHEMA IFCSTRUCTURALLOADRESOURCE;

REFERENCE FROM IFCMEASURERESOURCE
(
  IfcLabel,
  IfcLinearStiffnessMeasure,
  IfcRotationalStiffnessMeasure,
  IfcForceMeasure,
  IfcTorqueMeasure,
  IfcLinearForceMeasure,
  IfcLinearMomentMeasure,
  IfcPlanarForceMeasure,
  IfcLengthMeasure,
  IfcPlaneAngleMeasure,
  IfcThermodynamicTemperatureMeasure,
  IfcModulusOfSubgradeReactionMeasure,
  IfcWarpingMomentMeasure,
  IfcModulusOfLinearSubgradeReactionMeasure,
  IfcModulusOfRotationalSubgradeReactionMeasure,
  IfcCurvatureMeasure,
  IfcBoolean,
  IfcRatioMeasure
);

TYPE IfcModulusOfRotationalSubgradeReactionSelect = SELECT
	(IfcBoolean
	,IfcModulusOfRotationalSubgradeReactionMeasure);
END_TYPE;

TYPE IfcModulusOfSubgradeReactionSelect = SELECT
	(IfcBoolean
	,IfcModulusOfSubgradeReactionMeasure);
END_TYPE;

TYPE IfcModulusOfTranslationalSubgradeReactionSelect = SELECT
	(IfcBoolean
	,IfcModulusOfLinearSubgradeReactionMeasure);
END_TYPE;

TYPE IfcRotationalStiffnessSelect = SELECT
	(IfcBoolean
	,IfcRotationalStiffnessMeasure);
END_TYPE;

TYPE IfcTranslationalStiffnessSelect = SELECT
	(IfcBoolean
	,IfcLinearStiffnessMeasure);
END_TYPE;

TYPE IfcWarpingStiffnessSelect = SELECT
	(IfcBoolean
	,IfcWarpingMomentMeasure);
END_TYPE;

ENTITY IfcBoundaryCondition
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcBoundaryEdgeCondition
    ,IfcBoundaryFaceCondition
    ,IfcBoundaryNodeCondition));
	Name : OPTIONAL IfcLabel;
END_ENTITY;

ENTITY IfcBoundaryEdgeCondition
 SUBTYPE OF (IfcBoundaryCondition);
	TranslationalStiffnessByLengthX : OPTIONAL IfcModulusOfTranslationalSubgradeReactionSelect;
	TranslationalStiffnessByLengthY : OPTIONAL IfcModulusOfTranslationalSubgradeReactionSelect;
	TranslationalStiffnessByLengthZ : OPTIONAL IfcModulusOfTranslationalSubgradeReactionSelect;
	RotationalStiffnessByLengthX : OPTIONAL IfcModulusOfRotationalSubgradeReactionSelect;
	RotationalStiffnessByLengthY : OPTIONAL IfcModulusOfRotationalSubgradeReactionSelect;
	RotationalStiffnessByLengthZ : OPTIONAL IfcModulusOfRotationalSubgradeReactionSelect;
END_ENTITY;

ENTITY IfcBoundaryFaceCondition
 SUBTYPE OF (IfcBoundaryCondition);
	TranslationalStiffnessByAreaX : OPTIONAL IfcModulusOfSubgradeReactionSelect;
	TranslationalStiffnessByAreaY : OPTIONAL IfcModulusOfSubgradeReactionSelect;
	TranslationalStiffnessByAreaZ : OPTIONAL IfcModulusOfSubgradeReactionSelect;
END_ENTITY;

ENTITY IfcBoundaryNodeCondition
 SUPERTYPE OF (ONEOF
    (IfcBoundaryNodeConditionWarping))
 SUBTYPE OF (IfcBoundaryCondition);
	TranslationalStiffnessX : OPTIONAL IfcTranslationalStiffnessSelect;
	TranslationalStiffnessY : OPTIONAL IfcTranslationalStiffnessSelect;
	TranslationalStiffnessZ : OPTIONAL IfcTranslationalStiffnessSelect;
	RotationalStiffnessX : OPTIONAL IfcRotationalStiffnessSelect;
	RotationalStiffnessY : OPTIONAL IfcRotationalStiffnessSelect;
	RotationalStiffnessZ : OPTIONAL IfcRotationalStiffnessSelect;
END_ENTITY;

ENTITY IfcBoundaryNodeConditionWarping
 SUBTYPE OF (IfcBoundaryNodeCondition);
	WarpingStiffness : OPTIONAL IfcWarpingStiffnessSelect;
END_ENTITY;

ENTITY IfcFailureConnectionCondition
 SUBTYPE OF (IfcStructuralConnectionCondition);
	TensionFailureX : OPTIONAL IfcForceMeasure;
	TensionFailureY : OPTIONAL IfcForceMeasure;
	TensionFailureZ : OPTIONAL IfcForceMeasure;
	CompressionFailureX : OPTIONAL IfcForceMeasure;
	CompressionFailureY : OPTIONAL IfcForceMeasure;
	CompressionFailureZ : OPTIONAL IfcForceMeasure;
END_ENTITY;

ENTITY IfcSlippageConnectionCondition
 SUBTYPE OF (IfcStructuralConnectionCondition);
	SlippageX : OPTIONAL IfcLengthMeasure;
	SlippageY : OPTIONAL IfcLengthMeasure;
	SlippageZ : OPTIONAL IfcLengthMeasure;
END_ENTITY;

ENTITY IfcStructuralConnectionCondition
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcFailureConnectionCondition
    ,IfcSlippageConnectionCondition));
	Name : OPTIONAL IfcLabel;
END_ENTITY;

ENTITY IfcStructuralLoad
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcStructuralLoadConfiguration
    ,IfcStructuralLoadOrResult));
	Name : OPTIONAL IfcLabel;
END_ENTITY;

ENTITY IfcStructuralLoadConfiguration
 SUBTYPE OF (IfcStructuralLoad);
	Values : LIST [1:?] OF IfcStructuralLoadOrResult;
	Locations : OPTIONAL LIST [1:?] OF LIST [1:2] OF IfcLengthMeasure;
 WHERE
	ValidListSize : NOT EXISTS(Locations) OR (SIZEOF(Locations) = SIZEOF(Values));
END_ENTITY;

ENTITY IfcStructuralLoadLinearForce
 SUBTYPE OF (IfcStructuralLoadStatic);
	LinearForceX : OPTIONAL IfcLinearForceMeasure;
	LinearForceY : OPTIONAL IfcLinearForceMeasure;
	LinearForceZ : OPTIONAL IfcLinearForceMeasure;
	LinearMomentX : OPTIONAL IfcLinearMomentMeasure;
	LinearMomentY : OPTIONAL IfcLinearMomentMeasure;
	LinearMomentZ : OPTIONAL IfcLinearMomentMeasure;
END_ENTITY;

ENTITY IfcStructuralLoadOrResult
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcStructuralLoadStatic
    ,IfcSurfaceReinforcementArea))
 SUBTYPE OF (IfcStructuralLoad);
END_ENTITY;

ENTITY IfcStructuralLoadPlanarForce
 SUBTYPE OF (IfcStructuralLoadStatic);
	PlanarForceX : OPTIONAL IfcPlanarForceMeasure;
	PlanarForceY : OPTIONAL IfcPlanarForceMeasure;
	PlanarForceZ : OPTIONAL IfcPlanarForceMeasure;
END_ENTITY;

ENTITY IfcStructuralLoadSingleDisplacement
 SUPERTYPE OF (ONEOF
    (IfcStructuralLoadSingleDisplacementDistortion))
 SUBTYPE OF (IfcStructuralLoadStatic);
	DisplacementX : OPTIONAL IfcLengthMeasure;
	DisplacementY : OPTIONAL IfcLengthMeasure;
	DisplacementZ : OPTIONAL IfcLengthMeasure;
	RotationalDisplacementRX : OPTIONAL IfcPlaneAngleMeasure;
	RotationalDisplacementRY : OPTIONAL IfcPlaneAngleMeasure;
	RotationalDisplacementRZ : OPTIONAL IfcPlaneAngleMeasure;
END_ENTITY;

ENTITY IfcStructuralLoadSingleDisplacementDistortion
 SUBTYPE OF (IfcStructuralLoadSingleDisplacement);
	Distortion : OPTIONAL IfcCurvatureMeasure;
END_ENTITY;

ENTITY IfcStructuralLoadSingleForce
 SUPERTYPE OF (ONEOF
    (IfcStructuralLoadSingleForceWarping))
 SUBTYPE OF (IfcStructuralLoadStatic);
	ForceX : OPTIONAL IfcForceMeasure;
	ForceY : OPTIONAL IfcForceMeasure;
	ForceZ : OPTIONAL IfcForceMeasure;
	MomentX : OPTIONAL IfcTorqueMeasure;
	MomentY : OPTIONAL IfcTorqueMeasure;
	MomentZ : OPTIONAL IfcTorqueMeasure;
END_ENTITY;

ENTITY IfcStructuralLoadSingleForceWarping
 SUBTYPE OF (IfcStructuralLoadSingleForce);
	WarpingMoment : OPTIONAL IfcWarpingMomentMeasure;
END_ENTITY;

ENTITY IfcStructuralLoadStatic
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcStructuralLoadLinearForce
    ,IfcStructuralLoadPlanarForce
    ,IfcStructuralLoadSingleDisplacement
    ,IfcStructuralLoadSingleForce
    ,IfcStructuralLoadTemperature))
 SUBTYPE OF (IfcStructuralLoadOrResult);
END_ENTITY;

ENTITY IfcStructuralLoadTemperature
 SUBTYPE OF (IfcStructuralLoadStatic);
	DeltaTConstant : OPTIONAL IfcThermodynamicTemperatureMeasure;
	DeltaTY : OPTIONAL IfcThermodynamicTemperatureMeasure;
	DeltaTZ : OPTIONAL IfcThermodynamicTemperatureMeasure;
END_ENTITY;

ENTITY IfcSurfaceReinforcementArea
 SUBTYPE OF (IfcStructuralLoadOrResult);
	SurfaceReinforcement1 : OPTIONAL LIST [2:3] OF IfcLengthMeasure;
	SurfaceReinforcement2 : OPTIONAL LIST [2:3] OF IfcLengthMeasure;
	ShearReinforcement : OPTIONAL IfcRatioMeasure;
 WHERE
	SurfaceAndOrShearAreaSpecified : EXISTS(SurfaceReinforcement1) OR EXISTS(SurfaceReinforcement2) OR EXISTS(ShearReinforcement);
	NonnegativeArea1 : (NOT EXISTS(SurfaceReinforcement1)) OR (
    (SurfaceReinforcement1[1] >= 0.) AND
    (SurfaceReinforcement1[2] >= 0.) AND
    ((SIZEOF(SurfaceReinforcement1) = 1) OR (SurfaceReinforcement1[1] >= 0.))
);
	NonnegativeArea2 : (NOT EXISTS(SurfaceReinforcement2)) OR (
    (SurfaceReinforcement2[1] >= 0.) AND
    (SurfaceReinforcement2[2] >= 0.) AND
    ((SIZEOF(SurfaceReinforcement2) = 1) OR (SurfaceReinforcement2[1] >= 0.))
);
	NonnegativeArea3 : (NOT EXISTS(ShearReinforcement)) OR (ShearReinforcement >= 0.);
END_ENTITY;

END_SCHEMA;
