# ABAQUS - multiple user defined MPCs within the same analysis

I have written a few user-defined MPC types that I am using in my ABAQUS model.

Two of these operate in the nodal mode, one operates in the degree-of-freedom mode.

It is quite easy to combine the two nodal type MPCs into a single subroutine, as follows:

[CODE] SUBROUTINE MPC(UE,A,JDOF,MDOF,N,JTYPE,X,U,UINIT,MAXDOF,LMPC,

* KSTEP,KINC,TIME,NT,NF,TEMP,FIELD,LTRAN,TRAN)

C

C CUSTOM NODAL MODE MULTI POINT CONSTRAINT

C

INCLUDE ABA_PARAM.INC

C

DIMENSION UE(MDOF),A(MDOF,MDOF,N),JDOF(MDOF,N),X(6,N),

* U(MAXDOF,N),UINIT(MAXDOF,N),TIME(2),TEMP(NT,N),

* FIELD(NF,NT,N),LTRAN(N),TRAN(3,3,N)

C

IF (JTYPE .EQ. 1) THEN

C

DATA H /2.000000e-03/

A(1,1,1) = 1.

A(2,2,1) = 1.

A(3,3,1) = 1.

A(1,1,2) = -1.

A(1,5,2) = H

A(2,2,2) = -1.

A(2,4,2) = H

A(3,3,2) = -1.

C

JDOF(1,1) = 1

JDOF(2,1) = 2

JDOF(3,1) = 3

JDOF(1,2) = 1

JDOF(2,2) = 2

JDOF(3,2) = 3

JDOF(4,2) = 4

JDOF(5,2) = 5

END IF

C

IF (JTYPE .EQ. 2) THEN

C

DATA H /2.000000e-03/

A(1,1,1) = 1.

A(2,2,1) = 1.

A(3,3,1) = 1.

A(1,1,2) = -1.

A(1,5,2) = -H

A(2,2,2) = -1.

A(2,4,2) = -H

A(3,3,2) = -1.

C

JDOF(1,1) = 1

JDOF(2,1) = 2

JDOF(3,1) = 3

JDOF(1,2) = 1

JDOF(2,2) = 2

JDOF(3,2) = 3

JDOF(4,2) = 4

JDOF(5,2) = 5

END IF

C

IF (JTYPE .EQ. 3) THEN

C

A(3,3,1) = 1.

A(3,3,2) = -1.

C

JDOF(3,1) = 3

JDOF(3,2) = 3

END IF

C

RETURN

END

[/CODE]

However, for the MPC that operates in the degree-of-freedom mode, the initial A and JDOF array declarations are different, as required by the manual. This will look as follows:

[CODE] SUBROUTINE MPC(UE,A,JDOF,MDOF,N,JTYPE,X,U,UINIT,MAXDOF,

* LMPC,KSTEP,KINC,TIME,NT,NF,TEMP,FIELD,LTRAN,TRAN)

C

C CUSTOM MULTI POINT CONSTRAINT

C

INCLUDE ABA_PARAM.INC

C

DIMENSION A(N),JDOF(N),X(6,N),U(MAXDOF,N),UINIT(MAXDOF,N),

* TIME(2),TEMP(NT,N),FIELD(NF,NT,N),LTRAN(N),TRAN(3,3,N),

* A_2(MDOF,MDOF,N),JDOF_2(MDOF,N),UE(MDOF)

C

IF (JTYPE .EQ. 3) THEN

A(1) = 1.

A(2) = -1.

JDOF(1) = 3

JDOF(2) = 3

END IF

C

RETURN

END[/CODE]

Note that these two subroutines compile and work, separately. However, I would like to somehow combine them, as I need them both within the same analysis and I can only input a single MPC subroutine.

The challenge is that the in first MPC the A, JDOF arrays are of size A(N), JDOF(N), whereas in the second MPC they are A(MDOF,MDOF,N), JDOF(MFOD,N).

I havent found this issue anywhere else on the forum. The closest similarity is where someone would like to use two different user subroutines, e.g. UMAT and UEL, but clearly this is quite a distinct problem.

Your thoughts are much appreciated!

- How to model viscous fluid in ABAQUS5 months ago
- UANISOHYPER_INV and SIGINI working together6 months ago
- Wave properties in dynamic structural analysis10 months ago
- Non homogenous strain in uniaxial Testcase in ABAQUS10 months ago
- Abaqus error running VUMAT - ...package.exe aborted with system error code 107374151112 months ago

- 21 Forums
- 3,863 Topics
- 13.2 K Posts
- 13 Online
- 29.3 K Members