I am trying to create a uniformly distributed block load for a beam element in c# with the KarambaCommon API
so far I could not find the documentation on how to construct this
I was able to make point loads and mesh loads but I couldn’t find any class to construct a ULD for a beam.
I found the “DistributedForceLoads” but not sure if this is the right constructor for what I want to do.
the test file below was helpful but I don’t understand the arguments are or what this constructor does as the docs are not available.
Hello Moo,
I think that the easiest way to create a uniformly distributed block load for a beam element is with Karamba.Factories.Toolkit.
Down here an example of a simple beam model set up:
namespace Example
{
using System.Collections.Generic;
using System.Linq;
using Karamba.Elements;
using Karamba.Geometry;
using Karamba.Loads;
using Karamba.Utilities;
using KarambaCommon;
using NSubstitute.Exceptions;
using NUnit.Framework;
public class UldSetup
{
[Test]
public void UldBaseSetup()
{
// Setup the model entities.
var builder = new Toolkit();
var defaultCrossSection = builder.CroSec.CircularHollow();
var loads = new List<Load>
{
builder.Load.ConstantForceLoad(Vector3.UnitZ, 10),
};
var beamBuilder = builder.Part.LineToBeam(
new Line3(new[] { Point3.Zero, new Point3(1, 0, 0) }),
"simpleBeam",
defaultCrossSection,
info: new MessageLogger(),
out _);
var supports = new[]
{
builder.Support.Support(0, new[] { true, true, true, false, false, false }),
builder.Support.Support(1, new[] { true, true, true, true, false, false }),
};
// Assemble the model.
var model = builder.Model.AssembleModel(
beamBuilder,
supports,
loads,
info: out _,
mass: out _,
cog: out _,
msg: out _,
runtimeWarning: out _);
// Run the analysis.
model = builder.Algorithms.AnalyzeThI(model, out _, out _, out _, out _);
// Retrieve results for the beam at the mid point.
var beam = (ModelElementStraightLine)model.elems.First();
var position = 0.5;
var state = beam.GetElementState(model, model.lc_super_model_results, position);
var nx = state.GetForce(BeamDofs.t_x);
var vy = state.GetForce(BeamDofs.t_y);
var vz = state.GetForce(BeamDofs.t_z);
var mx = state.GetForce(BeamDofs.r_x);
var my = state.GetForce(BeamDofs.r_y);
var mz = state.GetForce(BeamDofs.r_z);
var tx = state.GetGlobalDisplacement(BeamDofs.t_x);
var ty = state.GetGlobalDisplacement(BeamDofs.t_y);
var tz = state.GetGlobalDisplacement(BeamDofs.t_z);
var rx = state.GetGlobalDisplacement(BeamDofs.r_x);
var ry = state.GetGlobalDisplacement(BeamDofs.r_y);
var rz = state.GetGlobalDisplacement(BeamDofs.r_z);
}
}
}