# Axisymmetric analysis - Toroidal shell under internal pressure

**URL:** https://calculix.discourse.group/t/axisymmetric-analysis-toroidal-shell-under-internal-pressure/769
**Category:** Uncategorized
**Created:** [November 4, 2021, 1:01pm UTC](https://calculix.discourse.group/t/axisymmetric-analysis-toroidal-shell-under-internal-pressure/769 "2021-11-04T13:01:05Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![luca.a](https://avatars.discourse-cdn.com/v4/letter/l/91b2a8/32.png) [@luca.a](https://calculix.discourse.group/u/luca.a)
#### Post date: [November 4, 2021, 1:01pm UTC](https://calculix.discourse.group/t/axisymmetric-analysis-toroidal-shell-under-internal-pressure/769/1 "2021-11-04T13:01:05Z")

</div>

Hello everyone,

I’m Luca and I’m very new to CalculiX. I have to create a FE model to simulate a spiral case (hydraulic turbine component) using the latter solver. As a first step, I would like to solve a torus under internal pressure via a 2D axisymmetric analysis and then compare the results with analytical ones. The toroidal shell made of steel is subjected to an internal pressure of 10 MPa and it has the following dimensions:

 ![torus](https://global.discourse-cdn.com/free1/uploads/calculix/original/1X/aa8fe91affac16bedbcfdfa9fd31c965e5dd8fb8.png)

I have created the following .fbd file that generates the geometry and the mesh. The type of elements is CAX8. The displacements along y axis are blocked for the nodes a,b,c and d (cf figure above).

```auto
! Geometric tolerance for CGX
GTOL 0.2 

! Center of the torus section
PNT PC 500.0 0.0 0.0

! Points of the torus section aligned with X axis
PNT P01 400.0 0.0 0.0
PNT P02 500.0 100.0 0.0
PNT P03 600.0 0.0 0.0
PNT P04 500.0 -100.0 0.0

PNT P05 405.0 0.0 0.0
PNT P06 500.0 95.0 0.0
PNT P07 595.0 0.0 0.0
PNT P08 500.0 -95.0 0.0

! Lines of the torus section
LINE L01 P01 P02 PC 40.0
LINE L02 P02 P06 2.0
LINE L03 P06 P05 PC 40.0
LINE L04 P05 P01 2.0

LINE L05 P02 P03 PC 40.0
LINE L06 P03 P07 2.0
LINE L07 P07 P06 PC 40.0
LINE L08 P06 P02 2.0

LINE L09 P03 P04 PC 40.0
LINE L10 P04 P08 2.0
LINE L11 P08 P07 PC 40.0
LINE L12 P07 P03 2.0

LINE L13 P04 P01 PC 40.0
LINE L14 P01 P05 2.0
LINE L15 P05 P08 PC 40.0
LINE L16 P08 P04 2.0

! Surfaces of the torus section
GSUR A01 + BLEND + L01 + L02 + L03 + L04
GSUR A02 + BLEND + L05 + L06 + L07 + L08
GSUR A03 + BLEND + L09 + L10 + L11 + L12
GSUR A04 + BLEND + L13 + L14 + L15 + L16

SETA SECTION_SURF s A01 A02 A03 A04
COMP SECTION_SURF up

! Merg points
MERG p SECTION_SURF
MERG l SECTION_SURF
MERG s SECTION_SURF
REP SECTION_SURF

! Points for boundary conditions
SETA PTS_BC p P01 P03 P05 P07

! Line for pressure
SETA L_PRESSURE l L03 L07 L11 L15
COMP L_PRESSURE do

! Element definition
SETA TORUS_SECTION all
ELTY TORUS_SECTION qu8c

! Mesh the model
mesh TORUS_SECTION

MERG n SECTION_SURF

send TORUS_SECTION abq

! Apply boundary conditions
send PTS_BC abq spc 2
send PTS_BC abq nam

! Apply pressure
send L_PRESSURE abq pres 10

```

Everything seems OK to me when I run the command _cgx -b … .fbd_.

I have also created the following input file for ccx (.inp) where I define the material properties, BCs and load.

```auto
** Nodes and elements
*INCLUDE,INPUT=TORUS_SECTION.msh

** Material parameters
*MATERIAL,NAME=EL 
*ELASTIC 
 200000.0, 0.3
*DENSITY 
 0.000000007850
 
*SOLID SECTION,ELSET=ETORUS_SECTION,MATERIAL=EL
 
** Boundary conditions
*INCLUDE,INPUT=PTS_BC_2.bou

** Analysis
*STEP
*STATIC 
*DLOAD
** Apply pressure
*INCLUDE,INPUT=L_PRESSURE.dlo 

** Results
*NODE FILE,OUTPUT=2D
U
*EL FILE 
S 
*END STEP

```

when I run the command _ccx … .inp_ , it fails giving me the following error message (for all elements):

\*ERROR in e\_c3d: nonpositive jacobian determinant in element 1

Could anyone tell me why I’m getting this error and how to solve it to get a solution please? As a beginner I’d appreciate any comments/suggestions/advices regarding my model.

Thank you,

Luca

---

<div class="post-metadata">

### Author: ![Calc\_em](https://avatars.discourse-cdn.com/v4/letter/c/43a26b/32.png) [@Calc\_em](https://calculix.discourse.group/u/Calc_em)
#### Post date: [November 4, 2021, 2:21pm UTC](https://calculix.discourse.group/t/axisymmetric-analysis-toroidal-shell-under-internal-pressure/769/2 "2021-11-04T14:21:23Z")

</div>

The modeling approach itself is correct (I recreated this model in Abaqus and it works fine). The problem lies in the definition of elements. They might be somehow inverted - Abaqus gives “zero, small or negative volume” error for this mesh.

---

<div class="post-metadata">

### Author: ![dichtstoff](https://avatars.discourse-cdn.com/v4/letter/d/dec6dc/32.png) [@dichtstoff](https://calculix.discourse.group/u/dichtstoff)
#### Post date: [November 4, 2021, 4:58pm UTC](https://calculix.discourse.group/t/axisymmetric-analysis-toroidal-shell-under-internal-pressure/769/3 "2021-11-04T16:58:41Z")

</div>

you have to switch your surface

add these line before meshing:

flip all

and your script runs like pincese charming

! Element definition  
SETA TORUS\_SECTION all  
ELTY TORUS\_SECTION qu8c

flip all

! Mesh the model  
mesh TORUS\_SECTION

---

<div class="post-metadata">

### Author: ![dichtstoff](https://avatars.discourse-cdn.com/v4/letter/d/dec6dc/32.png) [@dichtstoff](https://calculix.discourse.group/u/dichtstoff)
#### Post date: [November 4, 2021, 5:04pm UTC](https://calculix.discourse.group/t/axisymmetric-analysis-toroidal-shell-under-internal-pressure/769/4 "2021-11-04T17:04:25Z")

</div>

sometimes it is helpful to use symmetric boundaries,  
like to calc. only a part or a quarter:

> **[CalculiX-Examples/Contact/Hertz\_2D at master · mkraska/CalculiX-Examples](https://github.com/mkraska/CalculiX-Examples/tree/master/Contact/Hertz_2D)**
>
> master/Contact/Hertz\_2D

---

<div class="post-metadata">

### Author: ![dichtstoff](https://avatars.discourse-cdn.com/v4/letter/d/dec6dc/32.png) [@dichtstoff](https://calculix.discourse.group/u/dichtstoff)
#### Post date: [November 4, 2021, 10:09pm UTC](https://calculix.discourse.group/t/axisymmetric-analysis-toroidal-shell-under-internal-pressure/769/5 "2021-11-04T22:09:28Z")

</div>

if you work with surfaces,  
you have to take care how you create a surface.  
a surface has two sides.  
you will see these after meshing,  
change one surface with - BLEND  
see also gsur and of course flip command

positive orientation indicated by the ”+” sign after the surface name

maybe you work with a part of your subject?  
maybe you can change to cylindrical system with the use of boundary and results  
interesting could also be send:

Another useful method are so called ”cyclic symmetry” equations.

if you like i can share one example about a rotation disk and work with cyl system

wbr

---

<div class="post-metadata">

### Author: ![luca.a](https://avatars.discourse-cdn.com/v4/letter/l/91b2a8/32.png) [@luca.a](https://calculix.discourse.group/u/luca.a)
#### Post date: [November 5, 2021, 10:04am UTC](https://calculix.discourse.group/t/axisymmetric-analysis-toroidal-shell-under-internal-pressure/769/6 "2021-11-05T10:04:16Z")

</div>

Hello,

Thanks a lot for your help and all the information! With your help, I got results matching with analytical solution.

 ![image](https://global.discourse-cdn.com/free1/uploads/calculix/original/1X/2ac15d54b2b339864a9b2fa8e33e1537820e369a.jpeg)

I will keep in mind to be careful with the surfaces creation and take a closer look to the documentation, but it is already clearer with your explanation.

Indeed I could have used symmetry BC with respect to x axis to model only half of the geometry. I’m not so sure about modeling only a quarter as it is a torus.

Regarding the cyclic symmetry BC, how does it apply to a 2D axisymmetric analysis? I would apply them if I model a sector of the torus in 3D, but I don’t see how in 2D and with CAX elements.

Best regards,

Luca

---

<div class="post-metadata">

### Author: ![Calc\_em](https://avatars.discourse-cdn.com/v4/letter/c/43a26b/32.png) [@Calc\_em](https://calculix.discourse.group/u/Calc_em)
#### Post date: [November 5, 2021, 11:47am UTC](https://calculix.discourse.group/t/axisymmetric-analysis-toroidal-shell-under-internal-pressure/769/7 "2021-11-05T11:47:49Z")

</div>

That’s right, to use cyclic symmetry you would need a 3D model of a sector of a structure. That’s just another way to model such symmetric objects.

Did you change something else in your script apart from adding the _flip all_ line suggested by dichtstoff ? Your stress results are smooth while I obtained some spurious concentrations.

---

<div class="post-metadata">

### Author: ![luca.a](https://avatars.discourse-cdn.com/v4/letter/l/91b2a8/32.png) [@luca.a](https://calculix.discourse.group/u/luca.a)
#### Post date: [November 8, 2021, 9:11am UTC](https://calculix.discourse.group/t/axisymmetric-analysis-toroidal-shell-under-internal-pressure/769/8 "2021-11-08T09:11:06Z")

</div>

Hi,

Yes indeed, I forgot to mention it but I corrected line 69 of the .fbd file which was:

MERG n SECTION\_SURF

Now it is:

MERG n TORUS\_SECTION

Before this change, nodes were duplicated at the junctions between the surfaces I defined to create the geometry, which was leading to some stress concentrations at these locations.

Here is the full code for the final .fbd:

```auto
! Geometric tolerance for CGX
GTOL 0.2 

! Center of the torus section
PNT PC 500.0 0.0 0.0

! Points of the torus section aligned with X axis
PNT P01 400.0 0.0 0.0
PNT P02 500.0 100.0 0.0
PNT P03 600.0 0.0 0.0
PNT P04 500.0 -100.0 0.0

PNT P05 405.0 0.0 0.0
PNT P06 500.0 95.0 0.0
PNT P07 595.0 0.0 0.0
PNT P08 500.0 -95.0 0.0

! Lines of the torus section
LINE L01 P01 P02 PC 40.0
LINE L02 P02 P06 2.0
LINE L03 P06 P05 PC 40.0
LINE L04 P05 P01 2.0

LINE L05 P02 P03 PC 40.0
LINE L06 P03 P07 2.0
LINE L07 P07 P06 PC 40.0
LINE L08 P06 P02 2.0

LINE L09 P03 P04 PC 40.0
LINE L10 P04 P08 2.0
LINE L11 P08 P07 PC 40.0
LINE L12 P07 P03 2.0

LINE L13 P04 P01 PC 40.0
LINE L14 P01 P05 2.0
LINE L15 P05 P08 PC 40.0
LINE L16 P08 P04 2.0

! Surfaces of the torus section
GSUR A01 + BLEND + L01 + L02 + L03 + L04
GSUR A02 + BLEND + L05 + L06 + L07 + L08
GSUR A03 + BLEND + L09 + L10 + L11 + L12
GSUR A04 + BLEND + L13 + L14 + L15 + L16

SETA SECTION_SURF s A01 A02 A03 A04
COMP SECTION_SURF up

! Merg points
MERG p SECTION_SURF
MERG l SECTION_SURF
MERG s SECTION_SURF
REP SECTION_SURF

! Points for boundary conditions
SETA PTS_BC p P01 P03 P05 P07

! Line for pressure
SETA L_PRESSURE l L03 L07 L11 L15
COMP L_PRESSURE do

flip all

! Element definition
SETA TORUS_SECTION all
ELTY TORUS_SECTION qu8c

! Mesh the model
mesh TORUS_SECTION

MERG n TORUS_SECTION

send TORUS_SECTION abq

! Apply boundary conditions
send PTS_BC abq spc 2
send PTS_BC abq nam

! Apply pressure
send L_PRESSURE abq pres 10

```

Regards,

Luca
