Skip to content

Commit a680c5b

Browse files
author
Fraser Greenroyd
authored
Update Lusas gravity load conversion to push and pull. (#381)
2 parents b9a7f9e + fbecebc commit a680c5b

File tree

7 files changed

+29
-10
lines changed

7 files changed

+29
-10
lines changed

Lusas_Adapter/CRUD/Create/Loads/GravityLoad.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
using BH.oM.Structure.Loads;
2525
using BH.Engine.Adapter;
2626
using Lusas.LPI;
27+
using BH.oM.Geometry;
2728

2829
namespace BH.Adapter.Lusas
2930
{
@@ -47,15 +48,15 @@ private IFLoadingBody CreateGravityLoad(GravityLoad gravityLoad, IFGeometry[] lu
4748
{
4849
IFLoadingBody lusasGravityLoad;
4950
IFLoadcase assignedLoadcase = (IFLoadcase)d_LusasData.getLoadset(gravityLoad.Loadcase.AdapterId<int>(typeof(LusasId)));
50-
51+
5152
if (d_LusasData.existsAttribute("Loading", gravityLoad.Name))
5253
{
5354
lusasGravityLoad = (IFLoadingBody)d_LusasData.getAttributes("Loading", gravityLoad.Name);
5455
}
5556
else
5657
{
5758
lusasGravityLoad = d_LusasData.createLoadingBody(gravityLoad.Name);
58-
lusasGravityLoad.setBody(gravityLoad.GravityDirection.X, gravityLoad.GravityDirection.Y, gravityLoad.GravityDirection.Z);
59+
lusasGravityLoad.setBody(gravityLoad.GravityDirection.X * m_g, gravityLoad.GravityDirection.Y * m_g, gravityLoad.GravityDirection.Z * m_g);
5960
}
6061

6162
IFAssignment lusasAssignment = m_LusasApplication.assignment();

Lusas_Adapter/CRUD/Read/Loads/GravityLoads.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ private List<ILoad> ReadGravityLoads(List<string> ids = null)
7272
foreach (IEnumerable<IFAssignment> groupedAssignment in groupedByLoadcases)
7373
{
7474
List<string> analysisName = new List<string> { lusasBodyForce.getAttributeType() };
75-
75+
7676
GravityLoad gravityLoad = Adapters.Lusas.Convert.ToGravityLoad(
77-
lusasBodyForce, groupedAssignment, nodes, bars, panels);
77+
lusasBodyForce, groupedAssignment, nodes, bars, panels, m_g);
7878
gravityLoad.Tags = new HashSet<string>(analysisName);
7979
gravityLoads.Add(gravityLoad);
8080
}

Lusas_Adapter/Convert/ToBHoM/Loads/ToGravityLoad.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,17 @@ public static GravityLoad ToGravityLoad(IFLoading lusasGravityLoad,
4242
IEnumerable<IFAssignment> lusasAssignments,
4343
Dictionary<string, Node> nodes,
4444
Dictionary<string, Bar> bars,
45-
Dictionary<string, Panel> panels)
45+
Dictionary<string, Panel> panels,
46+
double g)
47+
4648
{
4749
IFLoadcase assignedLoadcase = (IFLoadcase)lusasAssignments.First().getAssignmentLoadset();
4850
Loadcase loadcase = ToLoadcase(assignedLoadcase);
4951
Vector gravityVector = new Vector
5052
{
51-
X = lusasGravityLoad.getValue("accX"),
52-
Y = lusasGravityLoad.getValue("accY"),
53-
Z = lusasGravityLoad.getValue("accZ")
53+
X = lusasGravityLoad.getValue("accX") / g,
54+
Y = lusasGravityLoad.getValue("accY") / g,
55+
Z = lusasGravityLoad.getValue("accZ") / g
5456
};
5557

5658
IEnumerable<BHoMObject> assignedObjects = GetGeometryAssignments(

Lusas_Adapter/LusasAdapter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ public LusasV17Adapter(string filePath, LusasSettings lusasSettings = null, bool
169169
m_mergeTolerance = lusasSettings.MergeTolerance;
170170
d_LusasData.getOptions().setDouble("TOLMRG", m_mergeTolerance);
171171
}
172+
173+
if (lusasSettings != null) { m_g = lusasSettings.StandardGravity; }
172174
}
173175
}
174176
}
@@ -190,6 +192,7 @@ public static bool IsApplicationRunning()
190192

191193
private string m_directory;
192194
public double m_mergeTolerance = double.NaN;
195+
public double m_g = 9.80665;
193196
public LusasWinApp m_LusasApplication;
194197
public IFDatabase d_LusasData;
195198
private Dictionary<Type, Dictionary<int, HashSet<string>>> m_tags = new Dictionary<Type, Dictionary<int, HashSet<string>>>();

Lusas_Engine/Create/LusasSettings.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ public static partial class Create
3636
[Description("Lusas adapter settings.")]
3737
[Input("mergeTolerance", "Sets the merging tolerance used in Lusas.")]
3838
[Input("librarySettings", "Sets the library settings.")]
39+
[Input("g", "Sets the standard gravity i.e. the acceleration due to gravity. This is used when GravityLoads are pushed/pulled from Lusas as the BHoM uses a factor of g, whereas Lusas uses a specific acceleration.")]
3940
[Output("Lusas specific adapter settings to be used by the adapter.")]
40-
public static LusasSettings LusasSettings(double mergeTolerance, LibrarySettings librarySettings = null)
41+
public static LusasSettings LusasSettings(double mergeTolerance, LibrarySettings librarySettings = null, double g = 9.80665)
4142
{
4243
LusasSettings lusasSettings = new LusasSettings();
4344

@@ -46,6 +47,8 @@ public static LusasSettings LusasSettings(double mergeTolerance, LibrarySettings
4647
if (librarySettings != null)
4748
lusasSettings.LibrarySettings = librarySettings;
4849

50+
lusasSettings.StandardGravity = g;
51+
4952
return lusasSettings;
5053
}
5154
/***************************************************/

Lusas_oM/Lusas_oM.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,11 @@
143143
<HintPath>$(ProgramData)\BHoM\Assemblies\Geometry_oM.dll</HintPath>
144144
<Private>False</Private>
145145
<SpecificVersion>False</SpecificVersion>
146+
</Reference>
147+
<Reference Include="Quantities_oM">
148+
<HintPath>$(ProgramData)\BHoM\Assemblies\Quantities_oM.dll</HintPath>
149+
<Private>False</Private>
150+
<SpecificVersion>False</SpecificVersion>
146151
</Reference>
147152
<Reference Include="System" />
148153
<Reference Include="System.Core" />

Lusas_oM/Settings/LusasSettings.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
using BH.oM.Base;
2424
using System.ComponentModel;
2525
using BH.oM.Adapter;
26+
using BH.oM.Quantities.Attributes;
2627

2728
namespace BH.oM.Adapters.Lusas
2829
{
@@ -31,13 +32,17 @@ public class LusasSettings : AdapterSettings
3132
/***************************************************/
3233
/**** Public Properties ****/
3334
/***************************************************/
34-
35+
3536
[Description("Sets the merging tolerance used in Lusas.")]
3637
public virtual double MergeTolerance { get; set; } = double.NaN;
3738

3839
[Description("Sets the library settings.")]
3940
public virtual LibrarySettings LibrarySettings { get; set; } = new LibrarySettings();
4041

42+
[Acceleration]
43+
[Description("Sets the standard gravity i.e. the acceleration due to gravity. This is used when GravityLoads are pushed/pulled from Lusas as the BHoM uses a factor of g, whereas Lusas uses a specific acceleration.")]
44+
public virtual double StandardGravity { get; set; } = 9.80665;
45+
4146
/***************************************************/
4247
}
4348
}

0 commit comments

Comments
 (0)