# 1D Beam elements (B32) with orthotropic material

**URL:** <https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055>\
**Category:** Uncategorized\
**Created:** [February 2, 2024, 9:21am UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055 "2024-02-02T09:21:30Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![tsvilans](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/tsvilans/32/761_2.png) [@tsvilans](https://calculix.discourse.group/u/tsvilans)\
**Post date:** [February 2, 2024, 9:21am UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055/1 "2024-02-02T09:21:30Z")

</div>

Hi,

I’ve run into a problem with a model that uses 1D elements (B32) with an orthotropic material.

It seems that the orientation of the material is always locked to global space and doesn’t align with the beam coordinate system… Is there a simple trick that I am missing?

I tried adding an `*ORIENTATION` and `*DISTRIBUTION` card to set the orientation for each element, but it seems that it only respects the default orientations specified under one of those cards, which it then takes for _all_ elements…

As an example, here is a cantilevered beam (2 B32 elements), supported in DOFs 1 through 6 at the origin.

Here it is aligned with the X-axis:

 ![image](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/3/334a842fb70a83d567402703a24d4eeeccba46d4.png)

Here it is rotated so it is aligned with the Y-axis:

 ![image](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/8/83bc46fa10c2cda9709f7f44d806d01e06a4f14b.png)

Material and section definitions are:

```auto
*Material, Name=Wood
*Elastic, Type=Engineering Constants
9.7E+09, 4.0E+08, 2.2E+08, 0.35, 0.6, 0.55, 4.0E+08, 2.5E+08,
2.5E+07
*Density
480

*Beam Section, Elset=beamElements, Material=Wood, Section=RECT
0.2, 0.1
0, 0, 1

```

BC and load settings:

```auto
*Boundary
supports, 1, 6
*Dload
all, GRAV, 200, 0, 0, -1

```

where `supports` is a node set with the first node (1) located at the origin, and `all` is an element set for all 2 elements 😛

I expected that the material axes would be aligned with the beam element axes, but this is clearly not the case, and I can’t seem to control this with the `*DISTRIBUTION` card for beam elements according to the docs, so I’m wondering if it is possible to do that for each element?

Much thanks!

Tom

---

<div class="post-metadata">

**Author:** ![tsvilans](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/tsvilans/32/761_2.png) [@tsvilans](https://calculix.discourse.group/u/tsvilans)\
**Post date:** [February 2, 2024, 9:26am UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055/2 "2024-02-02T09:26:47Z")

</div>

As a side note, I’ve been also trying to adjust this by writing an external material and loading a rotation matrix for each element/integration point and doing the transformation there, but haven’t had any luck so far either. It seems that would be the place where it _must_ work because everything should be controllable at that point…

---

<div class="post-metadata">

**Author:** ![Disla](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/disla/32/3548_2.png) [@Disla](https://calculix.discourse.group/u/Disla)\
**Post date:** [February 2, 2024, 10:56am UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055/3 "2024-02-02T10:56:07Z")

</div>

I guess you need to add the orientation card to the each beam section definition.

```auto
*ORIENTATION,NAME=ORTHO_X
1,0,0,0,1,0

*ORIENTATION,NAME=ORTHO_Y
0,1,0,-1,0,0

*Material, Name=Wood
*Elastic, Type=Engineering Constants
9.7E+09, 4.0E+08, 2.2E+08, 0.35, 0.6, 0.55, 4.0E+08, 2.5E+08,
2.5E+07
*Density
480

*Beam Section, Elset=Beam_X, Material=Wood, Section=RECT,ORIENTATION=ORTHO_X
0.2, 0.1
*Beam Section, Elset=Beam_Y, Material=Wood, Section=RECT,ORIENTATION=ORTHO_Y
0.2, 0.1

```

![imagen](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/5/5bfb6b2e6d66f7c09a0312b0be35b02a8102d5e8.png)

---

<div class="post-metadata">

**Author:** ![tsvilans](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/tsvilans/32/761_2.png) [@tsvilans](https://calculix.discourse.group/u/tsvilans)\
**Post date:** [February 2, 2024, 11:32am UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055/4 "2024-02-02T11:32:07Z")

</div>

Thanks, Disla!

Does that mean that for each element that is pointing in a different direction, I will need a separate beam section card? What about for curved beams (a series of linear elements) where the orientation changes gradually? I can just see the `.inp` size exploding with all these beam sections…

---

<div class="post-metadata">

**Author:** ![Disla](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/disla/32/3548_2.png) [@Disla](https://calculix.discourse.group/u/Disla)\
**Post date:** [February 2, 2024, 1:28pm UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055/5 "2024-02-02T13:28:39Z")

</div>

I don’t other way sorry. 😥

---

<div class="post-metadata">

**Author:** ![NorbertH](https://avatars.discourse-cdn.com/v4/letter/n/74df32/32.png) [@NorbertH](https://calculix.discourse.group/u/NorbertH)\
**Post date:** [February 2, 2024, 3:07pm UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055/6 "2024-02-02T15:07:50Z")

</div>

@tsvilans writing an orientation and section card for each element shouldn’t be too troublesome. Could you upload your .inp so that i can take a look?

---

<div class="post-metadata">

**Author:** ![tsvilans](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/tsvilans/32/761_2.png) [@tsvilans](https://calculix.discourse.group/u/tsvilans)\
**Post date:** [February 2, 2024, 3:36pm UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055/7 "2024-02-02T15:36:27Z")

</div>

Thanks, NorbertH! I know how to do this, it’s OK, I was just hoping for a simpler and more compact way of doing it with a `*DISTRIBUTION` card as for normal 3D elements.

In any case, I found a workaround using an external material that reads the orientation data from somewhere else 🙂

---

<div class="post-metadata">

**Author:** ![lucas\_bueno](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/lucas_bueno/32/1595_2.png) [@lucas\_bueno](https://calculix.discourse.group/u/lucas_bueno)\
**Post date:** [February 2, 2024, 11:28pm UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055/8 "2024-02-02T23:28:16Z")

</div>

> [@tsvilans](#):
>
> I found a workaround

Feel free to post it so others in the future can use this method when facing similar problems 😅

---

<div class="post-metadata">

**Author:** ![tsvilans](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/tsvilans/32/761_2.png) [@tsvilans](https://calculix.discourse.group/u/tsvilans)\
**Post date:** [February 3, 2024, 2:10pm UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055/9 "2024-02-03T14:10:18Z")

</div>

Sure thing, I’ll try to put together something more comprehensive when I can, but essentially I implemented an orthotropic elastic material using `linel.f` and `umat_lin_iso_el.f` as guides and compiled it as a shared library written in C. This is then called as an external material (with a material name something like `@LIB_MATERIAL`)

Instead of looking at the usual orientation pointer (`orab`) it looks into a bit of shared memory, if it exists, for the axis values for each element and constructs the rotation matrix from those. This way I can specify the orientations in a script or other program before launching CalculiX, and the idea is to expand it to also include other per-element variables (such as varying the stiffness at each integration point) that would be relevant to heterogeneous materials - though this part would be more aimed towards 3D elements and volumes.

I realized that the normal binaries for CalculiX don’t have external materials enabled, so CalculiX needs to be compiled with the `CALCULIX_EXTERNAL_BEHAVIOURS_SUPPORT` flag.

---

<div class="post-metadata">

**Author:** ![rsmith](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/rsmith/32/1684_2.png) [@rsmith](https://calculix.discourse.group/u/rsmith)\
**Post date:** [February 3, 2024, 9:23pm UTC](https://calculix.discourse.group/t/1d-beam-elements-b32-with-orthotropic-material/2055/10 "2024-02-03T21:23:13Z")

</div>

> [@tsvilans](#):
>
> What about for curved beams (a series of linear elements) where the orientation changes gradually? I can just see the `.inp` size exploding with all these beam sections…

In situations like these, I tend to write a Python script to generate (part of) the `inp` file.
