private void getCurvedAxis(LineElement l, AbstractCase ac, DeformationAxis component, float[,] controlPoints)
{
Vector3 vI, vJ, mI, mJ, dI, dJ;
vI = new Vector3(model.Results.ElementJointForces[l.Id, 0, 0],
model.Results.ElementJointForces[l.Id, 0, 1],
model.Results.ElementJointForces[l.Id, 0, 2]);
vJ = new Vector3(model.Results.ElementJointForces[l.Id, 1, 0],
model.Results.ElementJointForces[l.Id, 1, 1],
model.Results.ElementJointForces[l.Id, 1, 2]);
mI = new Vector3(model.Results.ElementJointForces[l.Id, 0, 3],
model.Results.ElementJointForces[l.Id, 0, 4],
model.Results.ElementJointForces[l.Id, 0, 5]);
mJ = new Vector3(model.Results.ElementJointForces[l.Id, 1, 3],
model.Results.ElementJointForces[l.Id, 1, 4],
model.Results.ElementJointForces[l.Id, 1, 5]);
dI = l.I.Position + new Vector3(model.Results.JointDisplacements[l.I.Id, 0],
model.Results.JointDisplacements[l.I.Id, 1],
model.Results.JointDisplacements[l.I.Id, 2]);
dJ = l.J.Position + new Vector3(model.Results.JointDisplacements[l.J.Id, 0],
model.Results.JointDisplacements[l.J.Id, 1],
model.Results.JointDisplacements[l.J.Id, 2]);
// Transform to the line's local coordinate system
// From the global system
// (WARNING: This is supposed to come in the joint's local coordinate system)
vI = toLocal(l, vI);
vJ = toLocal(l, vJ);
mI = toLocal(l, mI);
mJ = toLocal(l, mJ);
dI = toLocal(l, dI);
dJ = toLocal(l, dJ);
float fI = 0f, fJ = 0f, fmI = 0f, fmJ = 0f, fdI = 0f, fdJ = 0f;
float EI = ((StraightFrameProps)l.Properties).Section.Material.TypeProperties.E;
float lineLength = l.Length;
switch (component)
{
case DeformationAxis.Local2:
fI = vI.Y; fmI = -mI.Z; fdI = dI.Y;
fJ = vJ.Y; fmJ = -mJ.Z; fdJ = dJ.Y;
EI *= ((StraightFrameProps)l.Properties).Section.I33;
break;
case DeformationAxis.Local3:
fI = vI.Z; fmI = mI.Y; fdI = dI.Z;
fJ = vJ.Z; fmJ = mJ.Y; fdJ = dJ.Z;
EI *= ((StraightFrameProps)l.Properties).Section.I22;
break;
}
addLoadDeflection(ac, l, lineLength, controlPoints, component, 1.0f, EI);
addMomentDeflection(fmI, lineLength, controlPoints, EI, -1);
addMomentDeflection(fmJ, lineLength, controlPoints, EI, 1);
}