# Basic Boundary Condition question

Hello all,
I am working on setting up Calculix Inertial Relief model on a free body model using the 3,2,1 method and comparing the results to a NXNastran equivalent model using Automatic Inertial relief.

When I specify:

*BOUNDARY
node1, 1,3
node2, 2,3
node3, 3

where Node1 is the reference node of a RIGID element attached to the free body CG, Node2 is attached to the reference node of a RIGID element attached to the maximum X part of the structure, and Node3 is node displaced in Y from the CG.

This set of constraints results in a stress distribution that is with about 2% of the NXNastran model, which is great.

HOWEVER

If I change the input model to use:

node1, 1
node1, 2
node1, 3
node2, 2
node2, 3
node3, 3

The 3,2,1 methodology breaks, and it looks like Calculix is not treating each constraint specification as additive when it is on the same node. If that is by design, that is OK, but this leads to a more basic hypothetical question:

How would I specify a constraint on a node of 1,2,3 and 6?

Thanks for any insights
Chris

Iâm not sure what is going on with your model, but the boundary condition card works as intended in my experience. I would generally indicate the nset and the dofs with values on the line explicitly:

``````*BOUNDARY, OP=MOD
nset_1, 1, 1, 0.0
nset_1, 2, 2, 0.0
...
nset_1, 6, 6, 0.0
``````

That would be the same as if:

``````*BOUNDARY, OP=MOD
nset_1, 1, 6, 0.0
``````

Since ccx does not have rotational degrees of freedom, I tend to work on dofs 1,2,3 on the specified nodes.
So, if you have a rigid body and need to constraint dofs 1,2,3,6 , I would do the following:

2. Then do
``````*BOUNDARY, OP=MOD
nset_ref_node, 1, 1, 0.0
nset_ref_node, 2, 2, 0.0
nset_ref_node, 2, 2, 0.0
nset_rot_node, 3, 3, 0.0
``````

Check page 576 of the ccx manual.

2 Likes

Thankyou!

I modified the *BOUNDARY section to use your suggested syntax for each nodal constraint.

The results are now equivalent . I was using the Homogeneous syntax for *BOUNDARY as described on pg 404 of the manual which doesnât used the prescribed nodal displacement.

I appreciate the feedback.

Chris

1 Like

Inertia relief is not really the same as the 3-2-1 method. The latter should be used only for balanced loads while the former is meant for unbalanced models. Inertia relief is more common in CAD-embedded FEA modules and less often used e.g. in Abaqus. We prefer the soft spring approach in such cases (some CAD-embedded FEA modules also have it automated).

Btw. it would be really interesting to see your model.

Hi ,
Yes I was discovering that as I tried a few asymmetric loading cases. I am still in the learning phase of trying to apply Constraints that make sense without turning the model into garbage.

I tried pinging Dr Dhondt to see if real Inertial Relief was on a future upgrade in CalculixâŚ it isâŚbut way down in the priority list.

Hereâs a few screenshots looking into the spar with pressure loads in a straight and level flight conditionâŚ
With Automatic Inertial Relief

and with 3-2-1 Constraints where the RIGID is attached to the mid web nodes of the front and rear spar.

I can see the nonsensical (but expected) stress errors in the web where is it being constrained, but the vertical bending loads are not too badâŚ

I would like to see an example of the soft-spring to ground method you are referring to.

My end goal is to OpenSource my project which can automatically generate CFD and FEA models from parametric aircraft descriptions in XML. (Thus my interest in adopting Calculix for the FEA component) As of now, the application autogenerates the required panel meshes and has an embedded 3D CFD panel method with a IBL boundary correction on all lifting bodies. I have been adding the export of a structural model that conforms to the aerodynamic model using different structure approaches that can be selected such as ârag and tubeâ, classical metal monocoque, and composite shellsâŚ or a mixture as the user sees fit.
I am trying to make it easy for the user to try different approaches to an aerodynamic model and structure model without getting bogged down in the details of creating the FEM and staying at a higher level macro description.

This is by no means a final form for analysis, but a âwhat-ifâ analysis for preliminary designâŚwhere a promising design would be detailed using a stricter approach.

For instance the aerodynamic model of the Port wing is described in this XML fragment:

``````		<AircraftSurface>
<Area>10.68</Area>
<AspectRatio>4.6</AspectRatio>
<Dihedral>3.0</Dihedral>
<MirrorSurface>StarboardWing</MirrorSurface>
<Planform>Straight</Planform>
<RefMAC>0.25</RefMAC>
<RootChord>1.576</RootChord>
<RootIncidence>0</RootIncidence>
<RootProfile>
<ProfileName>N23013.5</ProfileName>
</RootProfile>
<SemiSpan>3.54</SemiSpan>
<SurfaceName>PortWing</SurfaceName>
<Sweep>0</Sweep>
<TipChord>1.576</TipChord>
<TipIncidence>-1</TipIncidence>
<TipProfile>
<ProfileName>N23013.5</ProfileName>
</TipProfile>
<xOrigin>1.7702</xOrigin>
<yOrigin>0.00</yOrigin>
<zOrigin>0.09</zOrigin>
<ChordwisePanels>40</ChordwisePanels>
<IgnoreExport>false</IgnoreExport>
<SpanwisePanels>15</SpanwisePanels>
<Controls>
<ControlDefinition>
<Name>Flap</Name>
<Control>LowerHinge</Control>
<SpanStartPercent>0.00</SpanStartPercent>
<SpanEndPercent>0.60</SpanEndPercent>
<ChordPercent>0.20</ChordPercent>
<DeflectionAngle>0.0</DeflectionAngle>
</ControlDefinition>
<ControlDefinition>
<Name>Aileron</Name>
<Control>LowerHinge</Control>
<SpanStartPercent>0.60</SpanStartPercent>
<SpanEndPercent>1.0</SpanEndPercent>
<ChordPercent>0.20</ChordPercent>
<DeflectionAngle>0.0</DeflectionAngle>
</ControlDefinition>
</Controls>
<AttachToComponent>RV8Body</AttachToComponent>
<SpanDistribution>EqualSpacing</SpanDistribution>
<ChordDistribution>FullCosine</ChordDistribution>
<Reflect>true</Reflect>
<Group>LiftSurfaces</Group>
<Part>Wing</Part>
</AircraftSurface>
``````

And the corresponding structure description is:

``````    <LiftStructure>
<ParentSurface>PortWing</ParentSurface>
<Controls>
<ControlSurface>
<PropertyName>ThickSkin</PropertyName>
<Station>0.60</Station>
<EndOffsets>0.0025</EndOffsets>
<EndStation>1.0</EndStation>
<HingeCount>2</HingeCount>
<HingePropertyName>Hinge</HingePropertyName>
<HingeType>Bearing</HingeType>
<HornLeverArm>1.5</HornLeverArm>
<HornStation>1</HornStation>
<HornType>Top</HornType>
<PushRodPropertyName>PushRod</PushRodPropertyName>
<RibCount>10</RibCount>
</ControlSurface>
<ControlSurface>
<PropertyName>ThickSkin</PropertyName>
<Station>0.10</Station>
<EndOffsets>0.0025</EndOffsets>
<EndStation>0.60</EndStation>
<HingeCount>2</HingeCount>
<HingePropertyName>Hinge</HingePropertyName>
<HingeType>Bearing</HingeType>
<HornLeverArm>1.5</HornLeverArm>
<HornStation>1</HornStation>
<HornType>Top</HornType>
<PushRodPropertyName>PushRod</PushRodPropertyName>
<RibCount>6</RibCount>
</ControlSurface>
</Controls>
<ElementAxialCount>25</ElementAxialCount>
<JointList>
</JointList>
<RibList>
<Rib>
<PropertyName>Rib</PropertyName>
<Station>0.10</Station>
<EndStation>0.2</EndStation>
<RibCount>4</RibCount>
</Rib>
<Rib>
<PropertyName>Rib</PropertyName>
<Station>0.25</Station>
<EndStation>0.5</EndStation>
<RibCount>4</RibCount>
</Rib>
<Rib>
<PropertyName>Rib</PropertyName>
<Station>0.6</Station>
<EndStation>1.0</EndStation>
<RibCount>5</RibCount>
</Rib>

</RibList>
<SkinList>
<Skin>
<PropertyName>Skin</PropertyName>
<Station>0</Station>
</Skin>
<Skin>
<PropertyName>LowerSkin</PropertyName>
<Station>0</Station>
</Skin>
</SkinList>
<SparList>
<Spar>
<Name>Frontspar</Name>
<PropertyName>Spar</PropertyName>
<Station>0.25</Station>
<Attachment i:nil="true" />
<LowerCapDepth>0.025</LowerCapDepth>
<LowerCapWidth>0.03</LowerCapWidth>
<SparType>IBeam</SparType>
<UpperCapDepth>0.05</UpperCapDepth>
<UpperCapWidth>0.03</UpperCapWidth>
<WebPropertyName>SparWeb</WebPropertyName>
</Spar>
<Spar>
<Name>Rearspar</Name>
<PropertyName>RearSpar</PropertyName>
<Station>0.8</Station>
<LowerCapDepth>0.025</LowerCapDepth>
<LowerCapWidth>0.02</LowerCapWidth>
<SparType>Bar</SparType>
<UpperCapDepth>0.05</UpperCapDepth>
<UpperCapWidth>0.02</UpperCapWidth>
<WebPropertyName>RearSpar</WebPropertyName>
</Spar>
</SparList>
</LiftStructure>

``````

I still have a lot of work to complete before I release the project to the wildâŚ

Regards,

Chris

1 Like

but you should not introduce a rigid body while using the 3-2-1 method but selecting â3 appropriate nodesâ. If the applied loads are well balanced the reaction loads at the â3 appropriate nodesâ will be negligible (only valid for linear analysis).

Hi,
I was hoping that by using a RIGID connecting the 1,2,3 constrained node at the CG would give me better results than constraining nodes on the structure. I had tried selecting different nodes to constrain in the model and the resulting stresses did not compare favorably with a true Inertial relief analysis.
The selection of âappropriateâ is still a black art to me that I am trying to figure out.

Thanks
Chris

theoretically should work with any nodes except a singular combination or so,however is always preferable to select a combination that takes in to account symmetries and the size of the model from a numerical point of view.
Loads have to be balanced! otherwise wont work. Try first the same with NX/Femap and if works there, will work in CCX

a good thing to remember is that inertia relief is not so used for aircraft structures - a combination of load factor (applied as acceleration/gravity) + aerodynamic loads (usually discrete as running loads) is more common. If you want to check your wing, fix your fwd and aft fuselage. If you want to check the fuselage, constrain the wing.

it would save you from the headache of inertia relief and similar approaches while giving reasonable results.

1 Like