Skip to content

Commit

Permalink
7.3 Deployment (#387)
Browse files Browse the repository at this point in the history
  • Loading branch information
IsakNaslundBh authored Sep 19, 2024
2 parents 082c36b + 9ada7b7 commit c082458
Show file tree
Hide file tree
Showing 12 changed files with 167 additions and 160 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

using BH.oM.Adapters.MidasCivil;
using BH.Engine.Adapter;
using BH.Engine.Base;
using BH.oM.Structure.Loads;
using BH.oM.Structure.Elements;
using BH.oM.Geometry;
Expand All @@ -38,11 +39,12 @@ public bool CreateCollection(IEnumerable<AreaUniformlyDistributedLoad> areaUnifo

foreach (AreaUniformlyDistributedLoad areaUniformlyDistributedLoad in areaUniformlyDistributedLoads)
{
AreaUniformlyDistributedLoad load = areaUniformlyDistributedLoad.ShallowClone();
List<string> midasPressureLoads = new List<string>();
string FEMeshLoadPath = CreateSectionFile(areaUniformlyDistributedLoad.Loadcase.Name + "\\PRESSURE");
string FEMeshLoadPath = CreateSectionFile(load.Loadcase.Name + "\\PRESSURE");
string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(areaUniformlyDistributedLoad);

List<IAreaElement> assignedElements = areaUniformlyDistributedLoad.Objects.Elements;
List<IAreaElement> assignedElements = load.Objects.Elements;

List<string> assignedFEMeshes = new List<string>();

Expand All @@ -55,23 +57,23 @@ public bool CreateCollection(IEnumerable<AreaUniformlyDistributedLoad> areaUnifo
}
}

List<double> loadVectors = new List<double> { areaUniformlyDistributedLoad.Pressure.X,
areaUniformlyDistributedLoad.Pressure.Y,
areaUniformlyDistributedLoad.Pressure.Z};
List<double> loadVectors = new List<double> { load.Pressure.X,
load.Pressure.Y,
load.Pressure.Z};

Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 };

for (int i = 0; i < 3; i++)
{
areaUniformlyDistributedLoad.Pressure = zeroVector;
load.Pressure = zeroVector;

if (loadVectors[i] != 0)
{
areaUniformlyDistributedLoad.Pressure = CreateSingleComponentVector(i, loadVectors[i]);
load.Pressure = CreateSingleComponentVector(i, loadVectors[i]);

foreach (string assignedFEMesh in assignedFEMeshes)
{
midasPressureLoads.Add(Adapters.MidasCivil.Convert.FromAreaUniformlyDistributedLoad(areaUniformlyDistributedLoad, assignedFEMesh, m_midasCivilVersion, m_forceUnit, m_lengthUnit));
midasPressureLoads.Add(Adapters.MidasCivil.Convert.FromAreaUniformlyDistributedLoad(load, assignedFEMesh, m_midasCivilVersion, m_forceUnit, m_lengthUnit));
}
}
}
Expand Down
26 changes: 14 additions & 12 deletions MidasCivil_Adapter/CRUD/Create/Loads/BarPointLoads.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
using BH.oM.Structure.Loads;
using BH.oM.Geometry;
using BH.Engine.Adapter;
using BH.Engine.Base;
using System.IO;
using System.Collections.Generic;
using System.Linq;
Expand All @@ -42,35 +43,36 @@ private bool CreateCollection(IEnumerable<BarPointLoad> barPointLoads)

foreach (BarPointLoad barPointLoad in barPointLoads)
{
BarPointLoad load = barPointLoad.ShallowClone();
List<string> midasBarLoads = new List<string>();
string barLoadPath = CreateSectionFile(barPointLoad.Loadcase.Name + "\\BEAMLOAD");
string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD");
string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(barPointLoad);

List<string> assignedBars = barPointLoad.Objects.Elements.Select(x => x.AdapterId<string>(typeof(MidasCivilId))).ToList();

List<double> loadVectors = new List<double> { barPointLoad.Force.X,
barPointLoad.Force.Y,
barPointLoad.Force.Z,
barPointLoad.Moment.X,
barPointLoad.Moment.Y,
barPointLoad.Moment.Z};
List<double> loadVectors = new List<double> { load.Force.X,
load.Force.Y,
load.Force.Z,
load.Moment.X,
load.Moment.Y,
load.Moment.Z};

Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 };

for (int i = 0; i < 6; i++)
{
barPointLoad.Force = zeroVector;
barPointLoad.Moment = zeroVector;
load.Force = zeroVector;
load.Moment = zeroVector;

if (loadVectors[i] != 0)
{
if (i < 3)
{
barPointLoad.Force = CreateSingleComponentVector(i, loadVectors[i]);
load.Force = CreateSingleComponentVector(i, loadVectors[i]);

foreach (string assignedBar in assignedBars)
{
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(barPointLoad, assignedBar, "Force", m_forceUnit, m_lengthUnit));
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(load, assignedBar, "Force", m_forceUnit, m_lengthUnit));
}
}
else
Expand All @@ -79,7 +81,7 @@ private bool CreateCollection(IEnumerable<BarPointLoad> barPointLoads)

foreach (string assignedBar in assignedBars)
{
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(barPointLoad, assignedBar, "Moment", m_forceUnit, m_lengthUnit));
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(load, assignedBar, "Moment", m_forceUnit, m_lengthUnit));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
using System.IO;
using System.Collections.Generic;
using System.Linq;
using BH.Engine.Base;

namespace BH.Adapter.MidasCivil
{
Expand All @@ -42,44 +43,45 @@ private bool CreateCollection(IEnumerable<BarUniformlyDistributedLoad> barUnifor

foreach (BarUniformlyDistributedLoad barUniformlyDistributedLoad in barUniformlyDistributedLoads)
{
BarUniformlyDistributedLoad load = barUniformlyDistributedLoad.ShallowClone();
List<string> midasBarLoads = new List<string>();
string barLoadPath = CreateSectionFile(barUniformlyDistributedLoad.Loadcase.Name + "\\BEAMLOAD");
string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD");
string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(barUniformlyDistributedLoad);

List<string> assignedBars = barUniformlyDistributedLoad.Objects.Elements.Select(x => x.AdapterId<string>(typeof(MidasCivilId))).ToList();
List<string> assignedBars = load.Objects.Elements.Select(x => x.AdapterId<string>(typeof(MidasCivilId))).ToList();

List<double> loadVectors = new List<double> { barUniformlyDistributedLoad.Force.X,
barUniformlyDistributedLoad.Force.Y,
barUniformlyDistributedLoad.Force.Z,
barUniformlyDistributedLoad.Moment.X,
barUniformlyDistributedLoad.Moment.Y,
barUniformlyDistributedLoad.Moment.Z};
List<double> loadVectors = new List<double> { load.Force.X,
load.Force.Y,
load.Force.Z,
load.Moment.X,
load.Moment.Y,
load.Moment.Z};

Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 };

for (int i = 0; i < 6; i++)
{
barUniformlyDistributedLoad.Force = zeroVector;
barUniformlyDistributedLoad.Moment = zeroVector;
load.Force = zeroVector;
load.Moment = zeroVector;

if (loadVectors[i] != 0)
{
if (i < 3)
{
barUniformlyDistributedLoad.Force = CreateSingleComponentVector(i, loadVectors[i]);
load.Force = CreateSingleComponentVector(i, loadVectors[i]);

foreach (string assignedBar in assignedBars)
{
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(barUniformlyDistributedLoad, assignedBar, "Force", m_forceUnit, m_lengthUnit));
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(load, assignedBar, "Force", m_forceUnit, m_lengthUnit));
}
}
else
{
barUniformlyDistributedLoad.Moment = CreateSingleComponentVector(i - 3, loadVectors[i]);
load.Moment = CreateSingleComponentVector(i - 3, loadVectors[i]);

foreach (string assignedBar in assignedBars)
{
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(barUniformlyDistributedLoad, assignedBar, "Moment", m_forceUnit, m_lengthUnit));
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(load, assignedBar, "Moment", m_forceUnit, m_lengthUnit));
}
}

Expand Down
93 changes: 61 additions & 32 deletions MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,17 @@

using BH.oM.Adapters.MidasCivil;
using BH.Engine.Adapter;
using BH.oM.Structure.Elements;
using BH.oM.Structure.Loads;
using BH.oM.Geometry;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using BH.Engine.Base;
using BH.Engine.Spatial;
using BH.Engine.Geometry;
using BH.Adapter.Adapters.MidasCivil;
using System.Data;

namespace BH.Adapter.MidasCivil
{
Expand All @@ -42,67 +48,90 @@ private bool CreateCollection(IEnumerable<BarVaryingDistributedLoad> barVaryingD

foreach (BarVaryingDistributedLoad barVaryingDistributedLoad in barVaryingDistributedLoads)
{
if (!barVaryingDistributedLoad.RelativePositions)
BarVaryingDistributedLoad load = barVaryingDistributedLoad.ShallowClone();

if (load.StartPosition >= load.EndPosition)
{
Engine.Base.Compute.RecordError("The midas adapter can only handle BarVaryingDistributedLoads with relative positions. Please update the loads to be set with this format.");
Engine.Base.Compute.RecordError("MidasCivil only supports start positions less than end positions for BarVaryingDistributedLoads.");
continue;
}

if (barVaryingDistributedLoad.StartPosition >= barVaryingDistributedLoad.EndPosition)
List<double> startPosition = new List<double>();
List<double> endPosition = new List<double>();


foreach (Bar bar in load.Objects.Elements)
{
Engine.Base.Compute.RecordError("Midas civil only supports start positions less than end positions for BarVaryingDistributedLoads.");
continue;
if (load.RelativePositions == false)
{
double length = bar.Length();

startPosition.Add(barVaryingDistributedLoad.StartPosition / length);
endPosition.Add(barVaryingDistributedLoad.EndPosition / length);

if (load.StartPosition / length > 1 || load.EndPosition / length > 1)
Engine.Base.Compute.RecordError("The load start or end position is outside one or more bars");
}
else
{
startPosition.Add(barVaryingDistributedLoad.StartPosition);
endPosition.Add(barVaryingDistributedLoad.EndPosition);
}
}


List<string> midasBarLoads = new List<string>();
string barLoadPath = CreateSectionFile(barVaryingDistributedLoad.Loadcase.Name + "\\BEAMLOAD");
string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(barVaryingDistributedLoad);
string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD");
string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(load);

List<string> assignedBars = load.Objects.Elements.Select(x => x.AdapterId<string>(typeof(MidasCivilId))).ToList();

List<string> assignedBars = barVaryingDistributedLoad.Objects.Elements.Select(x => x.AdapterId<string>(typeof(MidasCivilId))).ToList();

List<double> startLoadVectors = new List<double> { barVaryingDistributedLoad.ForceAtStart.X,
barVaryingDistributedLoad.ForceAtStart.Y,
barVaryingDistributedLoad.ForceAtStart.Z,
barVaryingDistributedLoad.MomentAtStart.X,
barVaryingDistributedLoad.MomentAtStart.Y,
barVaryingDistributedLoad.MomentAtStart.Z};
List<double> startLoadVectors = new List<double> { load.ForceAtStart.X,
load.ForceAtStart.Y,
load.ForceAtStart.Z,
load.MomentAtStart.X,
load.MomentAtStart.Y,
load.MomentAtStart.Z};

List<double> endLoadVectors = new List<double> { barVaryingDistributedLoad.ForceAtEnd.X,
barVaryingDistributedLoad.ForceAtEnd.Y,
barVaryingDistributedLoad.ForceAtEnd.Z,
barVaryingDistributedLoad.MomentAtEnd.X,
barVaryingDistributedLoad.MomentAtEnd.Y,
barVaryingDistributedLoad.MomentAtEnd.Z};
List<double> endLoadVectors = new List<double> { load.ForceAtEnd.X,
load.ForceAtEnd.Y,
load.ForceAtEnd.Z,
load.MomentAtEnd.X,
load.MomentAtEnd.Y,
load.MomentAtEnd.Z};

Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 };

for (int i = 0; i < 6; i++)
{
barVaryingDistributedLoad.ForceAtStart = zeroVector;
barVaryingDistributedLoad.MomentAtStart = zeroVector;
barVaryingDistributedLoad.ForceAtEnd = zeroVector;
barVaryingDistributedLoad.MomentAtEnd = zeroVector;
load.ForceAtStart = zeroVector;
load.MomentAtStart = zeroVector;
load.ForceAtEnd = zeroVector;
load.MomentAtEnd = zeroVector;

if (!(startLoadVectors[i] == 0 && endLoadVectors[i] == 0))
{
if (i < 3)
{
barVaryingDistributedLoad.ForceAtStart = CreateSingleComponentVector(i, startLoadVectors[i]);
barVaryingDistributedLoad.ForceAtEnd = CreateSingleComponentVector(i, endLoadVectors[i]);
load.ForceAtStart = CreateSingleComponentVector(i, startLoadVectors[i]);
load.ForceAtEnd = CreateSingleComponentVector(i, endLoadVectors[i]);

foreach (string assignedBar in assignedBars)
for (int j = 0; j < assignedBars.Count; j++)
{
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(barVaryingDistributedLoad, assignedBar, "Force", m_forceUnit, m_lengthUnit));
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load,
assignedBars[j], "Force", m_forceUnit, m_lengthUnit, startPosition[j], endPosition[j]));
}
}
else
{
barVaryingDistributedLoad.MomentAtStart = CreateSingleComponentVector(i - 3, startLoadVectors[i]);
barVaryingDistributedLoad.MomentAtEnd = CreateSingleComponentVector(i - 3, endLoadVectors[i]);
load.MomentAtStart = CreateSingleComponentVector(i - 3, startLoadVectors[i]);
load.MomentAtEnd = CreateSingleComponentVector(i - 3, endLoadVectors[i]);

foreach (string assignedBar in assignedBars)
for (int j = 0; j < assignedBars.Count; j++)
{
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(barVaryingDistributedLoad, assignedBar, "Moment", m_forceUnit, m_lengthUnit));
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load,
assignedBars[j], "Moment", m_forceUnit, m_lengthUnit, startPosition[j], endPosition[j]));
}
}

Expand Down
Loading

0 comments on commit c082458

Please sign in to comment.