Click or drag to resize

StructuralCurveActionTCurveStructuralReference Class

[This is preliminary documentation and is subject to change.]

Inheritance Hierarchy
SystemObject
  ModelExchanger.AnalysisDataModel.BaseStructuralAnalysisObjectBase
    ModelExchanger.AnalysisDataModel.LoadsStructuralCurveActionAbstractActionDirection, ForcePerLength
      ModelExchanger.AnalysisDataModel.LoadsStructuralCurveActionTCurveStructuralReference

Namespace:  ModelExchanger.AnalysisDataModel.Loads
Assembly:  ModelExchanger.AnalysisDataModel (in ModelExchanger.AnalysisDataModel.dll) Version: 1.13.0+Branch.master.Sha.d583fc64569355d188a9c0818d257b6d0d3e1339
Syntax
C#
public sealed class StructuralCurveAction<TCurveStructuralReference> : StructuralCurveActionAbstract<ActionDirection, ForcePerLength>, 
	IEquatable<StructuralCurveAction<TCurveStructuralReference>>, IHasTwoLoadDirectionVectors<ForcePerLength>, 
	IHasLoadDirectionVector<ForcePerLength>, IHasSingleEccentricities
where TCurveStructuralReference : class, ICurveStructuralReference

Type Parameters

TCurveStructuralReference
Type containing reference information

The StructuralCurveActionTCurveStructuralReference type exposes the following members.

Constructors
Properties
  NameDescription
Public propertyCoordinateDefinition
Specifies the coordinate system that is used to define the length.
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyCoordinateSystem
Defines the co-ordinate system of the member in which the load is applied
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyDirection
Defines the base direction of the load
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyDirectionVectorX
When Direction is set to Vector, then this property defines the X portion of that vector.
Public propertyDirectionVectorX2
When [!:Direction] is set to Vector, then this property defines the X portion of that vector when Distribution is not uniform.
Public propertyDirectionVectorY
When Direction is set to Vector, then this property defines the Y portion of that vector.
Public propertyDirectionVectorY2
When [!:Direction] is set to Vector, then this property defines the Y portion of that vector when Distribution is not uniform.
Public propertyDirectionVectorZ
When Direction is set to Vector, then this property defines the Z portion of that vector.
Public propertyDirectionVectorZ2
When [!:Direction] is set to Vector, then this property defines the Z portion of that vector when Distribution is not uniform.
Public propertyDistribution
Defines how the load is distributed along the structural element
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyEccentricityEy
Eccentricity Y of the system line (in the context of structural elements) or force system line in Z direction of the local coordinate system (in the context of loads)
Public propertyEccentricityEz
Eccentricity Y of the system line (in the context of structural elements) or force system line in Z direction of the local coordinate system (in the context of loads)
Public propertyEndPointAbsolute
Defines the position of the end point in absolute coordinates
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyEndPointRelative
Defines the position of the end point in relative coordinates
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyExtent
Defines how the load extends over the structural element
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyForceAction
Defines on which type of structural element the force acts
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyId
The ID of the Analysis object. Needs to be unique within the entire model
(Inherited from StructuralAnalysisObjectBase.)
Public propertyLoadCase
Defines the StructuralLoadCase to which the load belongs
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyLocation
Defines whether the load is "put directly on an inclined 1D member" or whether the "projection on plan" is defined.
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyName
The name of the Analysis object. Needs to be unique within it's type
(Inherited from StructuralAnalysisObjectBase.)
Public propertyOrigin
Specifies the origin of the coordinate system used for the definition of the length
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyParentId
The ID of the parent object of the same type
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyStartPointAbsolute
Defines the position of the start point in absolute coordinates
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyStartPointRelative
Defines the position of the start point in relative coordinates
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyStructuralReference
Object containing information about the structural element on which the line force acts.
Public propertyType
Defines what the load is caused by. Supports dynamic values
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyValue1
Defines the first (or only when Distribution is Uniform) size of the load
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public propertyValue2
Defines the second size of the load, only applicable when Distribution is not Uniform
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Top
Methods
  NameDescription
Public methodEquals(Object)
Check if this object is the same as the provided object.
(Overrides StructuralCurveActionAbstractTDirection, TValueEquals(Object).)
Public methodEquals(StructuralAnalysisObjectBase)
Check if this object is the same as the provided object.
(Inherited from StructuralAnalysisObjectBase.)
Public methodEquals(StructuralCurveActionTCurveStructuralReference)
Indicates whether the current object is equal to another object of the same type.
Public methodEquals(StructuralCurveActionAbstractTDirection, TValue)
Indicates whether the current object is equal to another object of the same type.
(Inherited from StructuralCurveActionAbstractTDirection, TValue.)
Public methodGetHashCode
Retrieves the hashcode of the object
(Overrides StructuralCurveActionAbstractTDirection, TValueGetHashCode.)
Top
Events
  NameDescription
Public eventPropertyChanged (Inherited from StructuralAnalysisObjectBase.)
Top
Examples
Creating an instance acting on a beam
using System;
using System.Collections.Generic;
using System.Linq;
using ModelExchanger.AnalysisDataModel.Enums;
using ModelExchanger.AnalysisDataModel.Loads;
using ModelExchanger.AnalysisDataModel.Models;
using ModelExchanger.AnalysisDataModel.StructuralElements;
using ModelExchanger.AnalysisDataModel.StructuralReferences.Curves;
using UnitsNet;

namespace ModelExchanger.AnalysisDataModel.Example.Loads
{
    public sealed class StructuralCurveActionOnBeamExample : BaseExample<StructuralCurveAction<CurveStructuralReferenceOnBeam>>
    {
        protected override IReadOnlyCollection<StructuralCurveAction<CurveStructuralReferenceOnBeam>> CreateAnalysisObjects(AnalysisModel model)
        {
            IReadOnlyDictionary<string, StructuralCurveMember> beams = model.OfType<StructuralCurveMember>().ToDictionary(x => x.Name, x => x);
            StructuralLoadCase loadCase = model.OfType<StructuralLoadCase>().Single(x => x.Name == "LC2");

            return new[]
            {
                CreateStructuralCurveActionOnBeam("LF1", loadCase, beams["B5"], ActionDirection.Z, CoordinateSystem.Local),
                CreateStructuralCurveActionOnBeam("LF2", loadCase, beams["B6"], ActionDirection.Z, CoordinateSystem.Local),
                CreateStructuralCurveActionOnBeam("LF3", loadCase, beams["B7"], ActionDirection.Z, CoordinateSystem.Local),
                CreateStructuralCurveActionOnBeam("LF4", loadCase, beams["B10"], ActionDirection.Z, CoordinateSystem.Local),
                CreateStructuralCurveActionOnBeam("LF26", loadCase, beams["B36"], ActionDirection.Z, CoordinateSystem.Local),

                CreateStructuralCurveActionOnBeam("LF10", loadCase, beams["B16"], ActionDirection.Y, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF11", loadCase, beams["B17"], ActionDirection.Y, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF12", loadCase, beams["B18"], ActionDirection.Y, CoordinateSystem.Global),

                CreateStructuralCurveActionOnBeam("LF13", loadCase, beams["B19"], ActionDirection.X, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF14", loadCase, beams["B20"], ActionDirection.X, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF15", loadCase, beams["B21"], ActionDirection.X, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF16", loadCase, beams["B22"], ActionDirection.X, CoordinateSystem.Global),

                CreateStructuralCurveActionOnBeam("LF17", loadCase, beams["B23"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF18", loadCase, beams["B24"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF19", loadCase, beams["B25"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF20", loadCase, beams["B26"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF21", loadCase, beams["B27"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF22", loadCase, beams["B28"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF23", loadCase, beams["B29"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF24", loadCase, beams["B30"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF25", loadCase, beams["B31"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF5", loadCase, beams["B11"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF6", loadCase, beams["B12"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF7", loadCase, beams["B13"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF8", loadCase, beams["B14"], ActionDirection.Z, CoordinateSystem.Global),
                CreateStructuralCurveActionOnBeam("LF9", loadCase, beams["B15"], ActionDirection.Z, CoordinateSystem.Global),
            };
        }

        private StructuralCurveAction<CurveStructuralReferenceOnBeam> CreateStructuralCurveActionOnBeam(
            string name, StructuralLoadCase loadCase, StructuralCurveMember beam, ActionDirection direction, CoordinateSystem coordinateSystem)
        {
            return new StructuralCurveAction<CurveStructuralReferenceOnBeam>(Guid.NewGuid(), name, CurveForceAction.OnBeam, ForcePerLength.FromKilonewtonsPerMeter(-1), loadCase, new CurveStructuralReferenceOnBeam(beam)){
                Direction = direction,
                CoordinateSystem = coordinateSystem
            };
        }
    }
}
Creating an instance acting on a surface's edge
using System;
using System.Collections.Generic;
using System.Linq;
using ModelExchanger.AnalysisDataModel.Enums;
using ModelExchanger.AnalysisDataModel.Loads;
using ModelExchanger.AnalysisDataModel.Models;
using ModelExchanger.AnalysisDataModel.StructuralElements;
using ModelExchanger.AnalysisDataModel.StructuralReferences.Curves;
using UnitsNet;

namespace ModelExchanger.AnalysisDataModel.Example.Loads
{
    public sealed class StructuralCurveActionOnEdgeExample : BaseExample<StructuralCurveAction<CurveStructuralReferenceOnEdge>>
    {
        protected override IReadOnlyCollection<StructuralCurveAction<CurveStructuralReferenceOnEdge>> CreateAnalysisObjects(AnalysisModel model)
        {
            StructuralLoadCase loadCase = model.OfType<StructuralLoadCase>().Single(x => x.Name == "LC2");
            StructuralSurfaceMember surface = model.OfType<StructuralSurfaceMember>().Single(x => x.Name == "S8");
            StructuralCurveEdge internalEdge1 = model.OfType<StructuralCurveEdge>().Single(x => x.Name == "ES1");
            StructuralCurveEdge internalEdge2 = model.OfType<StructuralCurveEdge>().Single(x => x.Name == "ES2");

            return new[]
            {
                CreateStructuralCurveActionOnEdge("LFS1", loadCase, surface, 3, CoordinateDefinition.Relative, 0, 1),
                CreateStructuralCurveActionOnEdge("LFS2", loadCase, surface, 1, CoordinateDefinition.Relative, 0, 1),
                CreateStructuralCurveActionOnEdge("LFS3", loadCase, surface, 2, CoordinateDefinition.Absolute, 0, 2.5D),

                new StructuralCurveAction<CurveStructuralReferenceOnEdge>(Guid.NewGuid(), "LFS4", CurveForceAction.OnEdge, ForcePerLength.FromKilonewtonsPerMeter(-3), loadCase, new CurveStructuralReferenceOnEdge(surface, internalEdge1))
                {
                    Direction = ActionDirection.Z,
                    CoordinateSystem = CoordinateSystem.Local,
                    CoordinateDefinition = CoordinateDefinition.Absolute,
                    StartPointRelative = null,
                    EndPointRelative = null,
                    StartPointAbsolute = Length.Zero,
                    EndPointAbsolute = Length.FromMeters(2.5D),
                    Value2 = ForcePerLength.Zero,
                    Distribution = CurveDistribution.Trapezoidal
                },
                new StructuralCurveAction<CurveStructuralReferenceOnEdge>(Guid.NewGuid(), "LFS5", CurveForceAction.OnEdge, ForcePerLength.FromKilonewtonsPerMeter(-3), loadCase, new CurveStructuralReferenceOnEdge(surface, internalEdge2))
                {
                    Direction = ActionDirection.Z,
                    CoordinateSystem = CoordinateSystem.Local,
                    CoordinateDefinition = CoordinateDefinition.Absolute,
                    StartPointRelative = null,
                    EndPointRelative = null,
                    StartPointAbsolute = Length.Zero,
                    EndPointAbsolute = Length.FromMeters(2.5D),
                    Value2 = ForcePerLength.Zero,
                    Distribution = CurveDistribution.Trapezoidal
                }
            };
        }

        private StructuralCurveAction<CurveStructuralReferenceOnEdge> CreateStructuralCurveActionOnEdge(string name, StructuralLoadCase loadCase, StructuralSurfaceMember surface, int edgeIndex, CoordinateDefinition coordinateDefinition, double from, double to)
        =>
            new StructuralCurveAction<CurveStructuralReferenceOnEdge>(Guid.NewGuid(), name, CurveForceAction.OnEdge, ForcePerLength.FromKilonewtonsPerMeter(-3), loadCase, new CurveStructuralReferenceOnEdge(surface, edgeIndex))
            {
                Direction = ActionDirection.Z,
                CoordinateDefinition = coordinateDefinition,
                CoordinateSystem = CoordinateSystem.Local,
                StartPointRelative = coordinateDefinition == CoordinateDefinition.Relative ? from : (double?)null,
                StartPointAbsolute = coordinateDefinition == CoordinateDefinition.Absolute ? Length.FromMeters(from) : (Length?)null,
                EndPointRelative = coordinateDefinition == CoordinateDefinition.Relative ? to : (double?)null,
                EndPointAbsolute = coordinateDefinition == CoordinateDefinition.Absolute ? Length.FromMeters(to) : (Length?)null
            };
    }
}
Creating an instance acting on a rib
using System;
using System.Collections.Generic;
using System.Linq;
using ModelExchanger.AnalysisDataModel.Enums;
using ModelExchanger.AnalysisDataModel.Loads;
using ModelExchanger.AnalysisDataModel.Models;
using ModelExchanger.AnalysisDataModel.StructuralElements;
using ModelExchanger.AnalysisDataModel.StructuralReferences.Curves;
using UnitsNet;

namespace ModelExchanger.AnalysisDataModel.Example.Loads
{
    public sealed class StructuralCurveActionOnRibExample : BaseExample<StructuralCurveAction<CurveStructuralReferenceOnRib>>
    {
        protected override IReadOnlyCollection<StructuralCurveAction<CurveStructuralReferenceOnRib>> CreateAnalysisObjects(AnalysisModel model)
        {
            StructuralCurveMemberRib rib = model.OfType<StructuralCurveMemberRib>().Single(x => x.Name == "B37");
            StructuralLoadCase loadCase = model.OfType<StructuralLoadCase>().Single(x => x.Name == "LC2");

            return new[]
            {
                new StructuralCurveAction<CurveStructuralReferenceOnRib>(Guid.NewGuid(), "LFS6", CurveForceAction.OnRib,
                    ForcePerLength.FromKilonewtonsPerMeter(-3), loadCase, new CurveStructuralReferenceOnRib(rib))
                {
                    Direction = ActionDirection.Z,
                    CoordinateSystem = CoordinateSystem.Global,
                    CoordinateDefinition = CoordinateDefinition.Relative,
                    StartPointRelative = 0.2D,
                    EndPointRelative = 0.8D
                },
            };
        }
    }
}
Creating an instance acting on a subregion
using System;
using System.Collections.Generic;
using System.Linq;
using ModelExchanger.AnalysisDataModel.Enums;
using ModelExchanger.AnalysisDataModel.Loads;
using ModelExchanger.AnalysisDataModel.Models;
using ModelExchanger.AnalysisDataModel.StructuralElements;
using ModelExchanger.AnalysisDataModel.StructuralReferences.Curves;
using UnitsNet;

namespace ModelExchanger.AnalysisDataModel.Example.Loads
{
    public sealed class StructuralCurveActionOnSubregionEdgeExample : BaseExample<StructuralCurveAction<CurveStructuralReferenceOnSubregionEdge>>
    {
        protected override IReadOnlyCollection<StructuralCurveAction<CurveStructuralReferenceOnSubregionEdge>> CreateAnalysisObjects(AnalysisModel model)
        {
            StructuralLoadCase loadCase = model
                .OfType<StructuralLoadCase>()
                .Single(analysisObject => analysisObject.Name == "LC2");

            StructuralSurfaceMemberRegion subRegion = model
                .OfType<StructuralSurfaceMemberRegion>()
                .Single(analysisObject => analysisObject.Name == "R2");
            var curveActionOne =
                new StructuralCurveAction<CurveStructuralReferenceOnSubregionEdge>(
                    Guid.NewGuid(),
                    "LFS7",
                    CurveForceAction.OnSubregionEdge,
                    ForcePerLength.FromKilonewtonsPerMeter(-3),
                    loadCase,
                    new CurveStructuralReferenceOnSubregionEdge(subRegion, 1))
                {
                    Type = ActionLoadType.Standard,
                    Distribution = CurveDistribution.Uniform,
                    Direction = ActionDirection.Z,
                    CoordinateSystem = CoordinateSystem.Local,
                    Location = Location.Length,
                    CoordinateDefinition = CoordinateDefinition.Relative,
                    Origin = Origin.FromStart,
                    Extent = ExtentOfForceOnBeam.Full,
                    StartPointRelative = 0,
                    EndPointRelative = 0.75,
                    StartPointAbsolute = null,
                    EndPointAbsolute = null,
                    EccentricityEy = Length.FromMeters(0),
                    EccentricityEz = Length.FromMeters(0)
                };

            var curveActionTwo =
                new StructuralCurveAction<CurveStructuralReferenceOnSubregionEdge>(
                    Guid.NewGuid(),
                    "LFS8",
                    CurveForceAction.OnSubregionEdge,
                    ForcePerLength.FromKilogramsForcePerMeter(-3),
                    loadCase,
                    new CurveStructuralReferenceOnSubregionEdge(subRegion, 2))
                {
                    Type = ActionLoadType.Standard,
                    Distribution = CurveDistribution.Trapezoidal,
                    Direction = ActionDirection.Z,
                    CoordinateSystem = CoordinateSystem.Global,
                    Location = Location.Length,
                    CoordinateDefinition = CoordinateDefinition.Absolute,
                    Origin = Origin.FromStart,
                    Extent = ExtentOfForceOnBeam.Full,
                    StartPointRelative = null,
                    EndPointRelative = null,
                    StartPointAbsolute = Length.Zero,
                    EndPointAbsolute = Length.FromMeters(2),
                    EccentricityEy = Length.FromMeters(0),
                    EccentricityEz = Length.FromMeters(0),
                    Value2 = ForcePerLength.FromKilogramsForcePerMeter(1)
                };

            return new[] { curveActionOne, curveActionTwo };
        }
    }
}
Creating an instance acting on an opening edge
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ModelExchanger.AnalysisDataModel.Enums;
using ModelExchanger.AnalysisDataModel.Loads;
using ModelExchanger.AnalysisDataModel.Models;
using ModelExchanger.AnalysisDataModel.StructuralElements;
using ModelExchanger.AnalysisDataModel.StructuralReferences.Curves;
using UnitsNet;

namespace ModelExchanger.AnalysisDataModel.Example.Loads
{
    public sealed class StructuralCurveActionOnOpeningEdgeExample : BaseExample<StructuralCurveAction<CurveStructuralReferenceOnOpeningEdge>>
    {
        protected override IReadOnlyCollection<StructuralCurveAction<CurveStructuralReferenceOnOpeningEdge>> CreateAnalysisObjects(AnalysisModel model)
        {
            var loadCase = model.OfType<StructuralLoadCase>().Single(analysisObject => analysisObject.Name == "LC2");

            var opening = model.OfType<StructuralSurfaceMemberOpening>().Single(analysisObject => analysisObject.Name == "O7");
            var curveActionOne =
                new StructuralCurveAction<CurveStructuralReferenceOnOpeningEdge>(
                    Guid.NewGuid(),
                    "LFS9",
                    CurveForceAction.OnOpeningEdge,
                    ForcePerLength.FromKilonewtonsPerMeter(2), loadCase,
                    new CurveStructuralReferenceOnOpeningEdge(opening, 3))
                {
                    Type = ActionLoadType.Standard,
                    Distribution = CurveDistribution.Uniform,
                    Direction = ActionDirection.Z,
                    CoordinateSystem = CoordinateSystem.Global,
                    Location = Location.Length,
                    CoordinateDefinition = CoordinateDefinition.Relative,
                    Origin = Origin.FromStart,
                    Extent = ExtentOfForceOnBeam.Full,
                    StartPointRelative = 0.5,
                    EndPointRelative = 1,
                    StartPointAbsolute = null,
                    EndPointAbsolute = null,
                    EccentricityEy = Length.FromMeters(0),
                    EccentricityEz = Length.FromMeters(0)
                };

            var curveActionTwo =
                new StructuralCurveAction<CurveStructuralReferenceOnOpeningEdge>(
                    Guid.NewGuid(),
                    "LFS10",
                    CurveForceAction.OnOpeningEdge,
                    ForcePerLength.FromKilogramsForcePerMeter(-4),
                    loadCase,
                    new CurveStructuralReferenceOnOpeningEdge(opening, 3))
                {
                    Type = ActionLoadType.Standard,
                    Distribution = CurveDistribution.Trapezoidal,
                    Direction = ActionDirection.Z,
                    CoordinateSystem = CoordinateSystem.Local,
                    Location = Location.Length,
                    CoordinateDefinition = CoordinateDefinition.Relative,
                    Origin = Origin.FromStart,
                    Extent = ExtentOfForceOnBeam.Full,
                    StartPointRelative = 0,
                    EndPointRelative = 1,
                    StartPointAbsolute = null,
                    EndPointAbsolute = null,
                    EccentricityEy = Length.FromMeters(0),
                    EccentricityEz = Length.FromMeters(0),
                    Value2 = ForcePerLength.FromKilogramsForcePerMeter(2)
                };

            return new[] { curveActionOne , curveActionTwo };
        }
    }
}
See Also