RBE3 implementation

Good afternoon All,

I’m trying to implement the RBE3 link in one simple model that I found on line.

It’s a simple rectangular plate, fixed on one side and with a force of compression applied on the otherside.

I’ve create two separate studies, one with RBE2 (using the standard Rigid Link feature of PrePoMax) and one with RBE3 (editing the code with Keyworks - as I found as reference in one of the topic of this forum).

The result is the same for RBE2 and RBE3 (so rigid movement on both the studies) instead of what I was expecting:

Is there someone that can tell me where am I wrong?

I put both studies below:

Studio_RBE2.pmx (225.9 KB)

Studio_RBE3.pmx (397.0 KB)

Thank you in advance.

WBR

Marco F.

PrePoMax v.2.6.0 was just released and includes support for kinematic (RBE2) and distributing (RBE3) couplings.

But if you want to do a comparison like in the screenshot with code_aster results, shouldn’t you leave the outer nodes unconstrained ?

Then you should get:

RBE2:

RBE3:

Studio_RBE2_mod.pmx (77.2 KB)
Studio_RBE3_mod.pmx (79.2 KB)

2 Likes

Thank you very much for your help, now it’s all clear.

I just downloaded the new version, big big improvement for this new release :heart_eyes: super effort :flexed_biceps:

1 Like

This is my example with the expected response for kinematic. There should be no need to exclude corners. (You can also try just 1 and 3 for comparision)

*SURFACE,NAME=NSet_KINEMATIC,TYPE=NODE
NSet_KINEMATIC
*COUPLING,REF NODE=122,SURFACE=NSet_KINEMATIC,CONSTRAINT NAME=RootCouple
*KINEMATIC
1
3

Note Kinematic has Surface type=NODE for shell.

*NODE
1,0,-0.0005,0
2,0.001,-0.0005,0
3,0.001,0.0005,0
4,0,0.0005,0
5,0,-0.0004,0
6,0,-0.0003,0
7,0,-0.0002,0
8,0,-0.0001,0
9,0,0,0
10,0,0.0001,0
11,0,0.0002,0
12,0,0.0003,0
13,0,0.0004,0
14,0.0001,-0.0005,0
15,0.0001,-0.0004,0
16,0.0001,-0.0003,0
17,0.0001,-0.0002,0
18,0.0001,-0.0001,0
19,0.0001,0,0
20,0.0001,0.0001,0
21,0.0001,0.0002,0
22,0.0001,0.0003,0
23,0.0001,0.0004,0
24,0.0001,0.0005,0
25,0.0002,-0.0005,0
26,0.0002,-0.0004,0
27,0.0002,-0.0003,0
28,0.0002,-0.0002,0
29,0.0002,-0.0001,0
30,0.0002,0,0
31,0.0002,0.0001,0
32,0.0002,0.0002,0
33,0.0002,0.0003,0
34,0.0002,0.0004,0
35,0.0002,0.0005,0
36,0.0003,-0.0005,0
37,0.0003,-0.0004,0
38,0.0003,-0.0003,0
39,0.0003,-0.0002,0
40,0.0003,-0.0001,0
41,0.0003,0,0
42,0.0003,0.0001,0
43,0.0003,0.0002,0
44,0.0003,0.0003,0
45,0.0003,0.0004,0
46,0.0003,0.0005,0
47,0.0004,-0.0005,0
48,0.0004,-0.0004,0
49,0.0004,-0.0003,0
50,0.0004,-0.0002,0
51,0.0004,-0.0001,0
52,0.0004,0,0
53,0.0004,0.0001,0
54,0.0004,0.0002,0
55,0.0004,0.0003,0
56,0.0004,0.0004,0
57,0.0004,0.0005,0
58,0.0005,-0.0005,0
59,0.0005,-0.0004,0
60,0.0005,-0.0003,0
61,0.0005,-0.0002,0
62,0.0005,-0.0001,0
63,0.0005,0,0
64,0.0005,0.0001,0
65,0.0005,0.0002,0
66,0.0005,0.0003,0
67,0.0005,0.0004,0
68,0.0005,0.0005,0
69,0.0006,-0.0005,0
70,0.0006,-0.0004,0
71,0.0006,-0.0003,0
72,0.0006,-0.0002,0
73,0.0006,-0.0001,0
74,0.0006,0,0
75,0.0006,0.0001,0
76,0.0006,0.0002,0
77,0.0006,0.0003,0
78,0.0006,0.0004,0
79,0.0006,0.0005,0
80,0.0007,-0.0005,0
81,0.0007,-0.0004,0
82,0.0007,-0.0003,0
83,0.0007,-0.0002,0
84,0.0007,-0.0001,0
85,0.0007,0,0
86,0.0007,0.0001,0
87,0.0007,0.0002,0
88,0.0007,0.0003,0
89,0.0007,0.0004,0
90,0.0007,0.0005,0
91,0.0008,-0.0005,0
92,0.0008,-0.0004,0
93,0.0008,-0.0003,0
94,0.0008,-0.0002,0
95,0.0008,-0.0001,0
96,0.0008,0,0
97,0.0008,0.0001,0
98,0.0008,0.0002,0
99,0.0008,0.0003,0
100,0.0008,0.0004,0
101,0.0008,0.0005,0
102,0.0009,-0.0005,0
103,0.0009,-0.0004,0
104,0.0009,-0.0003,0
105,0.0009,-0.0002,0
106,0.0009,-0.0001,0
107,0.0009,0,0
108,0.0009,0.0001,0
109,0.0009,0.0002,0
110,0.0009,0.0003,0
111,0.0009,0.0004,0
112,0.0009,0.0005,0
113,0.001,-0.0004,0
114,0.001,-0.0003,0
115,0.001,-0.0002,0
116,0.001,-0.0001,0
117,0.001,0,0
118,0.001,0.0001,0
119,0.001,0.0002,0
120,0.001,0.0003,0
121,0.001,0.0004,0
122,0.002,0,0
*ELEMENT,TYPE=S4
1,111,121,3,112
2,1,14,15,5
3,5,15,16,6
4,6,16,17,7
5,7,17,18,8
6,8,18,19,9
7,9,19,20,10
8,10,20,21,11
9,11,21,22,12
10,12,22,23,13
11,13,23,24,4
12,14,25,26,15
13,15,26,27,16
14,16,27,28,17
15,17,28,29,18
16,18,29,30,19
17,19,30,31,20
18,20,31,32,21
19,21,32,33,22
20,22,33,34,23
21,23,34,35,24
22,25,36,37,26
23,26,37,38,27
24,27,38,39,28
25,28,39,40,29
26,29,40,41,30
27,30,41,42,31
28,31,42,43,32
29,32,43,44,33
30,33,44,45,34
31,34,45,46,35
32,36,47,48,37
33,37,48,49,38
34,38,49,50,39
35,39,50,51,40
36,40,51,52,41
37,41,52,53,42
38,42,53,54,43
39,43,54,55,44
40,44,55,56,45
41,45,56,57,46
42,47,58,59,48
43,48,59,60,49
44,49,60,61,50
45,50,61,62,51
46,51,62,63,52
47,52,63,64,53
48,53,64,65,54
49,54,65,66,55
50,55,66,67,56
51,56,67,68,57
52,58,69,70,59
53,59,70,71,60
54,60,71,72,61
55,61,72,73,62
56,62,73,74,63
57,63,74,75,64
58,64,75,76,65
59,65,76,77,66
60,66,77,78,67
61,67,78,79,68
62,69,80,81,70
63,70,81,82,71
64,71,82,83,72
65,72,83,84,73
66,73,84,85,74
67,74,85,86,75
68,75,86,87,76
69,76,87,88,77
70,77,88,89,78
71,78,89,90,79
72,80,91,92,81
73,81,92,93,82
74,82,93,94,83
75,83,94,95,84
76,84,95,96,85
77,85,96,97,86
78,86,97,98,87
79,87,98,99,88
80,88,99,100,89
81,89,100,101,90
82,91,102,103,92
83,92,103,104,93
84,93,104,105,94
85,94,105,106,95
86,95,106,107,96
87,96,107,108,97
88,97,108,109,98
89,98,109,110,99
90,99,110,111,100
91,100,111,112,101
92,102,2,113,103
93,103,113,114,104
94,104,114,115,105
95,105,115,116,106
96,106,116,117,107
97,107,117,118,108
98,108,118,119,109
99,109,119,120,110
100,110,120,121,111
*NSET,NSET=NSET_KINEMATIC
2
3
113
114
115
116
117
118
119
120
121
*ELSET,ELSET=DEFAULT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
*MATERIAL,NAME=MATERIAL
*ELASTIC,TYPE=ISOTROPIC
210000000000,0.3
*DENSITY
7850
*SHELL SECTION,ELSET=DEFAULT,MATERIAL=MATERIAL
0.0001
*BOUNDARY
1,2,,0
1,1,,0
1,3,,0
1,5,,0
4,2,,0
4,1,,0
4,3,,0
4,5,,0
5,1,,0
5,2,,0
5,5,,0
6,1,,0
6,2,,0
6,5,,0
7,1,,0
7,2,,0
7,5,,0
8,1,,0
8,2,,0
8,5,,0
9,1,,0
9,2,,0
9,5,,0
10,1,,0
10,2,,0
10,5,,0
11,1,,0
11,2,,0
11,5,,0
12,1,,0
12,2,,0
12,5,,0
13,1,,0
13,2,,0
13,5,,0
122,3,,0
*AMPLITUDE,NAME=Ax_122_1
0,0
1,1000

*SURFACE,NAME=NSet_KINEMATIC,TYPE=NODE
NSet_KINEMATIC
*COUPLING,REF NODE=122,SURFACE=NSet_KINEMATIC,CONSTRAINT NAME=RootCouple
*KINEMATIC
1,3
*STEP,NLGEOM=YES,INC=100,AMPLITUDE=STEP
*STATIC
0.1,1,0,0.1
*CLOAD,AMPLITUDE=Ax_122_1
122,1,1
*NODE FILE,GLOBAL=YES
U,RF
*EL FILE
S,NOE,E,ENER
*CONTACT FILE
CDIS,CSTR
*END STEP

Using different weights in *DISTRIBUTING COUPLING may also be a good idea.

1 Like

Inp acording to your NAstran Work example:

Distributing doesn’t work for me with shells. Only Kinematic (perfect agreement).

*NODE
1,0,-0.127,0
2,0.254,-0.127,0
3,0.254,0.127,0
4,0,0.127,0
5,0.508,-0.127,0
6,0.762,0.127,0
7,0.762,-0.127,0
8,0.381,0,0
9,0.508,0.127,0
10,0.0635,-0.127,0
11,0.127,-0.127,0
12,0.1905,-0.127,0
13,0,-0.0635,0
14,0.0635,-0.0635,0
15,0.127,-0.0635,0
16,0.1905,-0.0635,0
17,0.254,-0.0635,0
18,0,0,0
19,0.0635,0,0
20,0.127,0,0
21,0.1905,0,0
22,0.254,0,0
23,0,0.0635,0
24,0.0635,0.0635,0
25,0.127,0.0635,0
26,0.1905,0.0635,0
27,0.254,0.0635,0
28,0.0635,0.127,0
29,0.127,0.127,0
30,0.1905,0.127,0
31,0.5715,-0.127,0
32,0.635,-0.127,0
33,0.6985,-0.127,0
34,0.508,-0.0635,0
35,0.5715,-0.0635,0
36,0.635,-0.0635,0
37,0.6985,-0.0635,0
38,0.762,-0.0635,0
39,0.508,0,0
40,0.5715,0,0
41,0.635,0,0
42,0.6985,0,0
43,0.762,0,0
44,0.508,0.0635,0
45,0.5715,0.0635,0
46,0.635,0.0635,0
47,0.6985,0.0635,0
48,0.762,0.0635,0
49,0.5715,0.127,0
50,0.635,0.127,0
51,0.6985,0.127,0
*ELEMENT,TYPE=S4
1,26,30,3,27
2,47,51,6,48
3,1,13,14,10
4,10,14,15,11
5,11,15,16,12
6,12,16,17,2
7,13,18,19,14
8,14,19,20,15
9,15,20,21,16
10,16,21,22,17
11,18,23,24,19
12,19,24,25,20
13,20,25,26,21
14,21,26,27,22
15,23,4,28,24
16,24,28,29,25
17,25,29,30,26
18,5,34,35,31
19,31,35,36,32
20,32,36,37,33
21,33,37,38,7
22,34,39,40,35
23,35,40,41,36
24,36,41,42,37
25,37,42,43,38
26,39,44,45,40
27,40,45,46,41
28,41,46,47,42
29,42,47,48,43
30,44,9,49,45
31,45,49,50,46
32,46,50,51,47
*NSET,NSET=NSET_KINEMATIC
2
3
5
9
17
22
27
34
39
44
*ELSET,ELSET=DEFAULT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
*SURFACE,NAME=LEFT
3,S3
7,S3
11,S3
15,S3
*SURFACE,NAME=RIGHT
2,S5
21,S5
25,S5
29,S5
*SURFACE,NAME=INNER_LEFT
1,S5
6,S5
14,S5
10,S5
*SURFACE,NAME=INNER_RIGHT
18,S3
22,S3
30,S3
26,S3
*MATERIAL,NAME=MATERIAL
*ELASTIC,TYPE=ISOTROPIC
68947572931.68,0.3
*DENSITY
7850
*SHELL SECTION,ELSET=DEFAULT,MATERIAL=MATERIAL
0.00508
*BOUNDARY
1,2,,0
1,1,,0
1,3,,0
1,5,,0
4,2,,0
4,1,,0
4,3,,0
4,5,,0
6,2,,0
6,1,,0
6,3,,0
6,5,,0
7,2,,0
7,1,,0
7,3,,0
7,5,,0
8,3,,0
13,1,,0
13,2,,0
13,5,,0
18,1,,0
18,2,,0
18,5,,0
23,1,,0
23,2,,0
23,5,,0
38,1,,0
38,2,,0
38,5,,0
43,1,,0
43,2,,0
43,5,,0
48,1,,0
48,2,,0
48,5,,0
*AMPLITUDE,NAME=Ax_8_1
0,0
1,444.8221615261

*SURFACE,NAME=NSet_KINEMATIC,TYPE=NODE
NSet_KINEMATIC
*COUPLING,REF NODE=8,SURFACE=NSet_KINEMATIC,CONSTRAINT NAME=RootCouple
*KINEMATIC
1,3
*STEP,NLGEOM=YES,INC=100,AMPLITUDE=STEP
*STATIC
0.1,1,0,0.1
*CLOAD,AMPLITUDE=Ax_8_1
8,1,1
*NODE FILE,GLOBAL=YES,OUTPUT=2D
U,RF
*EL FILE
S,NOE,E,ENER
*CONTACT FILE
CDIS,CSTR
*END STEP

Element-based distributing coupling (*DISTRIBUTING COUPLING) may work better with shells than the surface-based one. At least in terms of avoiding too many nonlinearities, but maybe it has other undocumented limitations. But it worked here: Rigid-body constraint convergance problems - #7 by xyont - CalculiX (official versions are on www.calculix.de, the official GitHub repository is at https://github.com/Dhondtguido/CalculiX).

In your link all the nodes have the same weight which is not correct. Assign the weights by hand can be difficult. Not sure how matej has implement distributing in the new version. ?¿

imagen

Distributing coupling is implemented as *COUPLING followed by *DISTRIBUTING in PrePoMax. I don’t think I’ve tried the element-based versions with shells yet, but at least there’s evidence of it working (even though weights are not assigned properly).

*COUPLING followed by *DISTRIBUTING in PrePoMax is working with shells?

Oh. !!! That’s a real progress. ¿Is there any inp to see how Matej managed to do it.?

For me, distributing coupling doesn’t seem to work with shells in PrePoMax. Maybe because it’s *COUPLING followed by *DISTRIBUTING instead of *DISTRIBUTING COUPLING.

it’s an old discussion but as i remember a case of prescribed displacement in some areas group of nodes. How can it be distributed unevenly to be correct?

It’s scaled with radial distance from the reference node. Abaqus uses the following techniques for automatic weighting in *DISTRIBUTING:

  • linearly decreasing: w_i = 1 - (r_i/r_0)
  • quadratic polynomial: w_i = 1 - (r_i/r_0)^2
  • monotonically decreasing: w_i = 1 - 3*((r_i/r_0)^2) + 2*(r_i/r_0)^3

where: w_i - weight factor at node i, r_i - radial distance of node i from the reference node, r_0 - distance to the furthest coupling node.

1 Like

right, it’s mathematically possible similar to load transfer mechanism can it will over-stiffening or not. However, its case dependent on how actually works in real approach not to say one is right another is wrong. Just option for a specific case no more, i think.

Abaqus uses uniform weighting of 1 by default for *DISTRIBUTING. But indeed, it depends on the case.

For example, a uniform axial load distribution to a structure would require specification of load distribution weight factors in proportion to the radius of the coupling nodes. Since the radius of these nodes will change with deformation, this use of DCOUP2D would only approximate the correct load distribution behavior in a large-displacement analysis.

1 Like

This is the only supported distributed coupling for now. Probably I can add a switch to exchange them.

What I would like to see is that this issue is solved by CalculiX. Does anyone know if the new version is in development now that Guido is no longer developing it?

Yeah, but weights could be tricky to define with a GUI. Abaqus/CAE only supports the surface-based couplings too.

1 Like

I think that Guido is still involved, he’s just preparing his team to take over when he retires next year.

New stable releases of ccx are usually published around August, but I don’t know if that’s the case now. The 2.23 release has that big limitation with nonlinear constraints and 1D/2D elements even in linear analyses, but it was removed and shouldn’t be the case with newly compiled builds.

Anyway, I will post on the ccx forum to clarify the issues with couplings and shells and maybe follow with a GitHub ticket.

2 Likes

Using Distributing Coupling with all the nodes having the same weighting corresponds to NAstrand Study case 2. The 100 lb force is evenly distributed to all the averaging
nodes independently of their distance or contributing surface of the node.

Case 2:

*NODE
1,0,-0.127,0
2,0.254,-0.127,0
3,0.254,0.127,0
4,0,0.127,0
5,0.508,-0.127,0
6,0.762,0.127,0
7,0.762,-0.127,0
8,0.381,0,0
9,0.508,0.127,0
10,0.0635,-0.127,0
11,0.127,-0.127,0
12,0.1905,-0.127,0
13,0,-0.0635,0
14,0.0635,-0.0635,0
15,0.127,-0.0635,0
16,0.1905,-0.0635,0
17,0.254,-0.0635,0
18,0,0,0
19,0.0635,0,0
20,0.127,0,0
21,0.1905,0,0
22,0.254,0,0
23,0,0.0635,0
24,0.0635,0.0635,0
25,0.127,0.0635,0
26,0.1905,0.0635,0
27,0.254,0.0635,0
28,0.0635,0.127,0
29,0.127,0.127,0
30,0.1905,0.127,0
31,0.5715,-0.127,0
32,0.635,-0.127,0
33,0.6985,-0.127,0
34,0.508,-0.0635,0
35,0.5715,-0.0635,0
36,0.635,-0.0635,0
37,0.6985,-0.0635,0
38,0.762,-0.0635,0
39,0.508,0,0
40,0.5715,0,0
41,0.635,0,0
42,0.6985,0,0
43,0.762,0,0
44,0.508,0.0635,0
45,0.5715,0.0635,0
46,0.635,0.0635,0
47,0.6985,0.0635,0
48,0.762,0.0635,0
49,0.5715,0.127,0
50,0.635,0.127,0
51,0.6985,0.127,0
*ELEMENT,TYPE=S4
1,26,30,3,27
2,47,51,6,48
3,1,13,14,10
4,10,14,15,11
5,11,15,16,12
6,12,16,17,2
7,13,18,19,14
8,14,19,20,15
9,15,20,21,16
10,16,21,22,17
11,18,23,24,19
12,19,24,25,20
13,20,25,26,21
14,21,26,27,22
15,23,4,28,24
16,24,28,29,25
17,25,29,30,26
18,5,34,35,31
19,31,35,36,32
20,32,36,37,33
21,33,37,38,7
22,34,39,40,35
23,35,40,41,36
24,36,41,42,37
25,37,42,43,38
26,39,44,45,40
27,40,45,46,41
28,41,46,47,42
29,42,47,48,43
30,44,9,49,45
31,45,49,50,46
32,46,50,51,47
*NSET,NSET=NSET_DCOUP
2
3
5
8
9
17
22
27
34
39
44
*NSET,NSET=NODE_SELECTION
2
3
5
9
17
22
27
34
39
44
*ELSET,ELSET=DEFAULT
2
3
4
5
7
8
9
11
12
13
15
16
17
19
20
21
23
24
25
27
28
29
31
32
*ELSET,ELSET=COMPONENT
1
6
10
14
18
22
26
30
*SURFACE,NAME=LEFT
3,S3
7,S3
11,S3
15,S3
*SURFACE,NAME=RIGHT
2,S5
21,S5
25,S5
29,S5
*SURFACE,NAME=INNER_LEFT
1,S5
6,S5
14,S5
10,S5
*SURFACE,NAME=INNER_RIGHT
18,S3
22,S3
30,S3
26,S3
*SURFACE,NAME=SSET_DCOUP
1,S5
6,S5
10,S5
14,S5
18,S3
22,S3
26,S3
30,S3
*MATERIAL,NAME=MATERIAL
*ELASTIC,TYPE=ISOTROPIC
68947572931.68,0.3
*DENSITY
7850
*MATERIAL,NAME=MATERIAL(2)
*ELASTIC,TYPE=ISOTROPIC
68947572931.68,0.28
*DENSITY
7850
*SHELL SECTION,ELSET=DEFAULT,MATERIAL=MATERIAL
0.00508
*SHELL SECTION,ELSET=COMPONENT,MATERIAL=MATERIAL(2)
0.00508
*BOUNDARY
1,2,,0
1,1,,0
1,3,,0
1,5,,0
4,2,,0
4,1,,0
4,3,,0
4,5,,0
6,2,,0
6,1,,0
6,3,,0
6,5,,0
7,2,,0
7,1,,0
7,3,,0
7,5,,0
8,3,,0
13,1,,0
13,2,,0
13,5,,0
18,1,,0
18,2,,0
18,5,,0
23,1,,0
23,2,,0
23,5,,0
38,1,,0
38,2,,0
38,5,,0
43,1,,0
43,2,,0
43,5,,0
48,1,,0
48,2,,0
48,5,,0
*AMPLITUDE,NAME=Ax_8_1
0,0
1,444.8221615261
*ELEMENT,TYPE=DCOUP3D
40,8
*ELSET,ELSET=E1
40
*DISTRIBUTING COUPLING,ELSET=E1
3,-1
27,-1
22,-1
17,-1
2,-1
9,-1
44,-1
39,-1
34,-1
5,-1
8,10
*STEP,NLGEOM=YES,INC=100,AMPLITUDE=STEP
*STATIC
0.1,1,0,0.1
*CLOAD,AMPLITUDE=Ax_8_1
8,1,1
*NODE FILE,GLOBAL=YES,OUTPUT=2D
U,RF
*EL FILE
S,NOE,E,ENER
*CONTACT FILE
CDIS,CSTR
*END STEP

I do not understand the notes below the tiitle (“Set to 151..”. and “set to 1…”) and there is a mistake in the pdf report for displacement y on node 10. Appart from that there is good agreement.